Def.


M. S.
Diese Lernkarten behandeln fortgeschrittene Themen der Informatik auf Universitätsniveau. Sie konzentrieren sich auf Speicherverwaltung, Cache-Mechanismen wie Hit Rate, Miss Rate und verschiedene Cache-Miss-Typen, sowie auf Technologien wie RAID-Systeme und DMA. Die Karteikarten eignen sich für Studierende und Fachleute, die ihr Verständnis von Speichersystemen und Datenzugriff vertiefen möchten, um effizientere und leistungsfähigere Systeme zu entwickeln.
Karten
43
Lernende
1
Sprache
Deutsch
Kategorie
Informatik
Stufe
Universität
Erstellt / Aktualisiert
09.10.2017 / 09.10.2017

Lernkarten

Was ist ein Hypervisor ?

VMM .. Klasse von systemen der praktischen Informatik, die als abstrahierende Schicht zwischen tatsächlich vorhandener Hardware und weiteren zu instalierenden Betriebssystemen dient. Solche systeme erlauben es, eine virtuelle Umgebung zu definieren, die unabhängig von der tatsächlich vorhandenen Hardware als Basis für die Installation von  (Gast-) und Betriebssystemen dient.

 

Sie erlauben weitere Gastssysteme auf einem hostsystem und verwalten Ressource Verteilung für einzelne Gastsysteme.

Paravirtualisierung

Stellt eine Softwareschnittstelle bereit, die ähnlich aber nicht identisch mit der tatsächlichen Hardware ist. Betriebssystem muss portiert werden, um auf der VM ausgeführt werden zu können.

VLAN

Ist ein logisches Teilnetz innerhalb eines Switches bzw. Eines gesamten physischen Netzzwerks. Es kann sich über mehrere switsches ausdehnen.  Es trennt physische netze in Teilnetze auf, indem es dafür sorgt, dass VLAN fähige Switches Frames  (Datenpakete)) nicht in ein anderes VLAN weiterleiten. 

+Flexibilität 

+Performance Aspekte 

+ Sicherheits Aspekte 

Tagged VLANS 

Netzwerke, die Netzwerkpakete verwenden, welche eine zusätzliche VLAN-Markierung tragen

Was ist Virtualisierung ?

Nachbildung eines Hard- oder Software-Objektes durch ein ähnlcihes Objekt vom selben Typ mit Hilfe eines Abstraktionslayers.
--> Erzeugung virtueller Geräter oder Dienste
--> erlaubt Computer Resourcen transparent zusammenzufassen oder aufzuteilen, oder ein Betriebssystem innerhalb eines anderen auszuführen

[A software implementation of a machine that executes programs like a physical machine.

Vorteile der Virtualisierung

-Resource sharing saves resources

- More flexibility

-increased security

efficient use of physical resources

Nachteil der Virtualisierung

less efficient than a real machine when it accesses the hardware indirectly but feasible with modern computer

Virtualization Techniques

  • OS Level Virt.
  • hypervisor based virt.
    • software virt.
    • hardware supported virt.
    • paravirt.

software virt

  • does not require hardware support
  • slow-> usage decrease
  • useful for cross virt.
  • used for development of smartphone applications on desktops

hardware supported virt.

  • requires hardware support
  • hardly any performance loss compared to physical machine

RAID

„Redundante Anordnung unabhängiger Festplatten“ Ein RAID-System dient zur Organisation mehrerer physischer Massenspeicher zu einem logischen Laufwerk, das eine höhere Ausfallsicherheit oder einen größeren Datendurchsatz erlaubt als ein einzelnes physisches Speichermedium.

RAID 0:  Striping – Beschleunigung ohne Redundanz

Bei RAID 0 fehlt die Redundanz, daher gehört es streng genommen nicht zu den RAID-Systemen, es ist nur ein schnelles „Array of Independent Disks“.RAID 0 bietet gesteigerte Transferraten, indem die beteiligten Festplatten in zusammenhängende Blöcke gleicher Größe aufgeteilt werden, wobei diese Blöcke quasi im Reißverschlussverfahren zu einer großen Festplatte angeordnet werden. Somit können Zugriffe auf allen Platten parallel durchgeführt werden (engl. striping, was „in Streifen zerlegen“ bedeutet, abgeleitet von stripe, oder „Streifen“).

RAID 1: Mirroring – Spiegelung

RAID 1 ist der Verbund von mindestens zwei Festplatten. Ein RAID 1 speichert auf allen Festplatten die gleichen Daten (Spiegelung) und bietet somit volle Redundanz. Die Kapazität des Arrays ist hierbei höchstens so groß wie die kleinste beteiligte Festplatte.

Ein enormer Vorteil von RAID 1 gegenüber allen anderen RAID-Verfahren liegt in seiner Einfachheit. Beide Platten sind identisch beschrieben und enthalten alle Daten eines Systems, somit kann (die passende Hardware vorausgesetzt) normalerweise auch jede Platte einzeln in zwei unabhängigen Rechnern (intern oder im externen Laufwerk) unmittelbar betrieben und genutzt werden. Aufwändige Rebuilds sind nur dann notwendig, wenn die Platten wieder redundant betrieben werden sollen. Im Störfall wie auch bei Migrationen beziehungsweise Upgrades bedeutet das einen enormen Vorteil

RAID 5: Leistung + Parität, Block-Level Striping mit verteilter Paritätsinformation

RAID 5 implementiert Striping mit auf Block-Level-verteilten Paritäts-Informationen. Zur Berechnung der Parität wird durch die jeweils an gleicher Adresse anliegenden Datenblöcke der am RAID-Verbund beteiligten Festplatten eine logische Gruppe gebildet. Von allen Datenblöcken einer Gruppe enthält ein Datenblock die Paritätsdaten, während die anderen Datenblöcke Nutzdaten enthalten. Die Nutzdaten von RAID-5-Gruppen werden wie bei RAID 0 auf alle Festplatten verteilt. Die Paritätsinformationen werden jedoch nicht wie bei RAID 4 auf einer Platte konzentriert, sondern ebenfalls verteilt.

RAID 5 bietet sowohl gesteigerten Datendurchsatz beim Lesen von Daten als auch Redundanz bei relativ geringen Kosten und ist dadurch eine sehr beliebte RAID-Variante. In

RAID 2: Bit-Level Striping mit Hamming-Code-basierter Fehlerkorrektur

RAID 2 spielt in der Praxis keine Rolle mehr. Das Verfahren wurde nur bei Großrechnern verwendet. Die Daten werden hierbei in Bitfolgen fester Größe zerlegt und mittels eines Hamming-Codes auf größere Bitfolgen abgebildet (zum Beispiel: 8 Bit für Daten und noch 3 Bit für die ECC-Eigenschaft). Die einzelnen Bits des Hamming-Codeworts werden dann über einzelne Platten aufgeteilt, was prinzipiell einen hohen Durchsatz erlaubt. Ein Nachteil ist jedoch, dass die Anzahl der Platten ein ganzzahliges Vielfaches der Hamming-Codewortlänge sein muss, wenn sich die Eigenschaften des Hamming-Codes nach außen zeigen sollen (diese Forderung entsteht, wenn man einen Bit-Fehler im Hamming-Code analog zu einem Festplatten-Ausfall im RAID 2 sieht).

RAID 3: Byte-Level Striping mit Paritätsinformationen auf separater Festplatte

Der wesentliche Gedanke bei RAID 3 ist ein möglichst hoher Leistungsgewinn mit Redundanz im Verhältnis zum Anschaffungspreis. Im RAID 3 werden die eigentlichen Nutzdaten normal auf einer oder mehreren Datenplatten gespeichert. Außerdem wird eine Summeninformation auf einer zusätzlichen Paritätsplatte gespeichert. Für die Paritätsplatte werden die Bits der Datenplatten zusammengezählt und die errechnete Summe wird darauf untersucht, ob sie eine gerade oder eine ungerade Summe darstellt; eine gerade Summe wird auf der Paritätsplatte mit dem Bit-Wert 0 gekennzeichnet; eine ungerade Summe wird mit dem Bit-Wert 1 gekennzeichnet. Die Datenplatten enthalten also normale Nutzdaten, während die Paritätsplatte nur die Summeninformationen enthält.

RAID 4: Block-Level Striping mit Paritätsinformationen auf separater Festplatte

Es werden ebenfalls Paritätsinformationen berechnet, die auf eine dedizierte Festplatte geschrieben werden. Allerdings sind die Einheiten, die geschrieben werden, größere Datenblöcke (englisch stripes oder chunks) und nicht einzelne Bytes, was die Gemeinsamkeit zu RAID 5 ausmacht.

Ein Nachteil bei klassischem RAID 4 besteht darin, dass die Paritätsplatte bei allen Schreib- und Leseoperationen beteiligt ist. Dadurch ist die maximal mögliche Datenübertragungsgeschwindigkeit durch die Datenübertragungsgeschwindigkeit der Paritätsplatte begrenzt. Da bei jeder Operation immer eine der Datenplatten und die Paritätsplatte verwendet werden, muss die Paritätsplatte weit mehr Zugriffe durchführen als die Datenplatten. Sie verschleißt dadurch stärker und ist daher häufiger von Ausfällen betroffen.

Wegen der fest definierten Paritätsplatte bei RAID 4 wird stattdessen fast immer RAID 5 bevorzugt.

RAID 6: Block-Level Striping mit doppelter verteilter Paritätsinformation

RAID 6 (unter diversen Handelsnamen angeboten, zum Beispiel Advanced Data Guarding) funktioniert ähnlich wie RAID 5, verkraftet aber den gleichzeitigen Ausfall von bis zu zwei Festplatten. Insbesondere beim intensiven Einsatz hochkapazitiver SATA-/IDE-Festplatten kann die Wiederherstellung der Redundanz nach dem Ausfall einer Platte viele Stunden bis hin zu Tagen dauern; bei RAID 5 besteht währenddessen kein Schutz vor einem weiteren Ausfall.

RAID 6 implementiert Striping mit doppelten, auf Block-Level verteilten Paritätsinformationen. Im Gegensatz zu RAID 5 gibt es bei RAID 6 mehrere mögliche Implementierungsformen, die sich insbesondere in der Schreibleistung und dem Rechenaufwand unterscheiden. Im Allgemeinen gilt: Bessere Schreibleistung wird durch erhöhten Rechenaufwand erkauft. Im einfachsten Fall wird eine zusätzliche XOR-Operation über eine orthogonale Datenzeile berechnet, siehe Grafik. Auch die zweite Parität wird rotierend auf alle Platten verteilt. Eine andere RAID-6-Implementierung rechnet mit nur einer Datenzeile, produziert allerdings keine Paritätsbits, sondern einen Zusatzcode, der 2 Einzelbit-Fehler beheben kann. Das Verfahren ist rechnerisch aufwändiger. Zum Thema Mehrbit-Fehlerkorrektur siehe auch Reed-Solomon-Code.

Synchronous bus

A bus that includes a clock in the control lines and a fixed protocol for communicating that is relative to the clock.

+ involves very little logic and can run very fast

- every device communicating on the bus must use the same clock rate

- to avoid clock skew, they cannot be long if they are fast

asynchronous bus

Uses a handshaking protocol for coordinating usage rather than a clock; can accommodate a wide variety of devices of differing speeds. 

+ can accommodate a wide range of devices speeds

+ can be lengthend without worrying about clock skew or synchronization problems

- slow(er)

 

 

aynchronous handshaking protocol

a series of steps used to coordinate asynchronous bus transfers in which sender and receiver proceed to the next step only when both parties agree that the current step has been completed

bus

  • is a shared communication link - a single set of wires used to connect multiple subsystems
  • max. bus speed largely limited by - length of bus -number of devices on the bus
  • needs to support a range of devices with widely varying latenciesand data transfer rates

pipeline hazards

  1. Datenkonflikte ergeben sich aus Datenabhängigkeiten zwischen Befehlen im Programm.
    3 arten: 1. Read after Write (RAW) oder Echte Abhängigkeit
       2.Write after Read (WAR) oder Gegenabhängigkeit:
       3.Write after Write (WAW) oder Ausgabeabhängigkeit:
  2. Steuerkonflikte treten bei Instruktionen auf, die den Befehlszähler verändern, z. B. bei bedingten Sprungbefehlen.
    Vermeidung:Sprungvorhersage oder delayed branching

  3. Strukturkonflikte treten auf, wenn Ressourcenkonflikte innerhalb von Befehlen in der Pipeline vorhanden sind, z. B. ein synchroner Zugriff auf einen Registerspeicher mit nur einem Eingang.

was ist ein cache?

ist ein schneller Puffer-Speicher, der (wiederholte) Zugriffe auf ein langsames Hintergrundmedium oder aufwendige Neuberechnungen zu vermeiden hilft. Daten, die bereits einmal geladen oder generiert wurden, verbleiben im Cache, so dass sie bei späterem Bedarf schneller aus diesem abgerufen werden können. Auch können Daten, die vermutlich bald benötigt werden, vorab vom Hintergrundmedium abgerufen und vorerst im Cache bereitgestellt werden (read-ahead).

nutzen eines caches

Die Ziele beim Einsatz eines Caches sind eine Verringerung der Zugriffszeit und/oder eine Verringerung der Anzahl der Zugriffe auf ein langsames Hintergrundmedium.

inklusiver cache

 jeder Cache-Level ist für sich transparent, d. h. eine Cache-Line, die im L1-Cache ist, ist auch im L2- und L3-Cache vorhanden. Wird die Cache-Line aus dem L1-Cache „verdrängt“ (überschrieben mit Daten einer anderen Adresse), so muss sonst nichts unternommen werden – sie ist im L2-Cache ja immer noch vorhanden (sofern kein Write-Back o. ä. notwendig ist).

exclusiver cache

eine Cache-Line ist einer Adresse nur einmal in allen Cache-Leveln vorhanden. Eine Cache-Line zu Adresse A im L1-Cache ist nicht zusätzlich im L2- oder L3-Cache vorhanden. Wird sie aus dem L1-Cache verdrängt, so kann sie entweder gänzlich verworfen werden, oder muss explizit in den L2-Cache kopiert werden. Dort wird somit ebenfalls eine (andere) Cache-Line verdrängt, um Platz zu machen für die absinkende. Diese andere sinkt nun ihrerseits in den L3-Cache, wo somit eine dritte Cache-Line weichen muss.

Zeitliche (temporale) Lokalität

 

Da sich Zugriffe auf Daten wiederholen (z. B. beim Abarbeiten einer Programmschleife), ist es eher wahrscheinlich, dass auf Daten, auf die schon einmal zugegriffen wurde, auch noch ein weiteres Mal zugegriffen wird. Diese Daten sollten also bevorzugt im Cache gehalten werden. Dadurch ergibt sich auch die Notwendigkeit, alte Daten, die lange nicht benutzt wurden, aus dem Cache zu entfernen, um Platz für neuere zu machen. Diesen Vorgang nennt man „Verdrängung“.

Räumliche (spatiale) Lokalität

 

Da Programmcode und -daten nicht zufällig verstreut im Adressraum herumliegen, sondern „hintereinander“ und teilweise auch nur in bestimmten Adressbereichen angeordnet sind (Code-, Daten-, Stack-Segment, Heap usw.), ist es nach einem Zugriff auf eine bestimmte Adresse wahrscheinlich, dass auch auf eine „nahegelegene“ Adresse (sprich: Betrag der Differenz der beiden Adressen sehr klein) zugegriffen wird. Bei der Abarbeitung eines Programms wird z. B. ein Befehl nach dem anderen abgearbeitet, wobei diese „nacheinander“ im Speicher liegen (wenn kein Sprungbefehl dabei ist). Viele Datenstrukturen wie Arrays liegen ebenfalls „hintereinander“ im Speicher.

Hit Rate

 

Die Anzahl der Anfragen, bei denen ein Cache Hit auftrat, geteilt durch die Anzahl der insgesamt an diesen Cache gestellten Anfragen. Wie man aus der Definition leicht sehen kann, liegt diese Größe zwischen Null und Eins. Eine Hit Rate von z. B. 0,7 (=70 %) bedeutet, dass bei 70 % aller Anfragen an den Cache dieser die Daten sofort liefern konnte und bei 30 % aller Anfragen passen musste.

Miss Rate

 

Diese ist analog zur Hit Rate als die Anzahl der Anfragen definiert, bei denen die Daten nicht im Cache vorhanden waren geteilt durch die Anzahl der gesamten Anfragen. Es gilt: Miss Rate = 1 − Hit Rate.

 

 3 Arten von Cache Misses werden unterschieden

  • Capacity
  • Conflict
  • Compulsory

Capacity

 

Der Cache ist zu klein. Daten waren im Cache vorrätig, wurden aber wieder aus ihm entfernt. Erfolgt dann ein erneuter Zugriff auf diese Adresse, so wird dieser Miss als „Capacity Miss“ bezeichnet. Abhilfe schafft nur ein größerer Cache.

Conflict

 

Durch die satzassoziative Organisation (gilt somit auch für DM-Caches) ist es möglich, dass in einem Satz nicht mehr genug Platz ist, während in anderen Sätzen noch freie Cacheblöcke vorhanden sind. Dann muss in dem überfüllten Satz ein Block entfernt werden, obwohl der Cache eigentlich noch Platz hat. Wird auf diesen entfernten Block erneut zugegriffen, so bezeichnet man diesen Cache Miss als „Conflict Miss“. Abhilfe schafft eine Erhöhung der Cacheblocks pro Satz – also eine Erhöhung der Assoziativität. Bei vollassoziativen Caches (welche nur einen Satz haben) gibt es prinzipbedingt keine Conflict Misses.

Compulsory

 

Beim erstmaligen Zugriff auf eine Adresse befinden sich normalerweise die dazugehörigen Daten noch nicht im Cache. Diesen Miss bezeichnet man als „Compulsory Miss“. Er ist nicht oder nur schwer zu verhindern. Moderne Prozessoren besitzen „Prefetcher“-Einheiten, die selbstständig spekulativ Daten in die Caches laden, wenn dort noch Platz ist. Damit soll die Anzahl der Compulsory Misses verringert werden.

Zurückkopieren (write-back)

 

Beim Schreiben wird der zu schreibende Block nicht sofort in der nächsthöheren Speicherebene abgelegt, sondern zunächst im Cache. Dabei entsteht eine Inkonsistenz zwischen Cache und zu cachendem Speicher. Letzterer enthält somit veraltete Information. Erst wenn das Wort aus dem Cache verdrängt wird, wird es auch in die nächsthöhere Speicherebene geschrieben. Dazu bekommt jeder Cacheblock ein sogenanntes Dirty Bit, das anzeigt, ob der Block beim Ersetzen zurückkopiert werden muss. Das führt bei Speicherzugriff durch andere Prozessoren oder DMA-Geräte zu Problemen, weil diese veraltete Informationen lesen würden. Abhilfe schaffen hier Cache-Kohärenz-Protokolle wie z. B. MESI für UMA-Systeme.

Durchgängiges Schreiben (write-through)

 

 

Der zu schreibende Block wird sofort in der nächsthöheren Speicherebene abgelegt. Damit ist die Konsistenz gesichert. Damit der Prozessor nicht jedes Mal warten muss, bis der Block in der nächsthöheren Speicherebene (die ja langsamer als der Cache ist) abgelegt ist, benutzt man einen Pufferspeicher (write buffer). Wenn dieser voll läuft, muss der Prozessor jedoch anhalten und warten.

write-allocate

Wie bei einem normalen Cache Miss wird der Block aus der nächsthöheren Speicherebene geholt. Die entsprechenden Bytes, die durch den Schreibzugriff geändert wurden, werden danach im gerade frisch eingetroffenen Block überschrieben.

non-write-allocate

 

Es wird am Cache vorbei in die nächsthöhere Speicherebene geschrieben, ohne dass der dazugehörige Block in den Cache geladen wird. Das kann für manche Anwendungen Vorteile bringen, bei denen viele geschriebene Daten nie wieder gelesen werden. Durch die Verwendung von non-write-allocate verhindert man das Verdrängen von anderen, möglicherweise wichtigen Blöcken und reduziert somit die Miss Rate.

Memory Management Unit

 

Der Begriff Memory Management Unit (MMU; deutsch Speicherverwaltungseinheit) benennt eine Hardwarekomponente eines Computers, die den Zugriff auf den Arbeitsspeicher verwaltet.

Lernen