Prozessoren Definition Die CPU ist das Gehirn des Computers. Sie holt Befehle aus dem Speicher und führt sie aus. Register Alle Prozessoren besitzen interne Register, um den Zugriff auf Daten zu beschleunigen. Befehlszähler (Program counter) Enthält die Speicheradresse des nächsten Befehls Kellerzeiger (Stack pointer) Zeigt auf das Ende des aktuellen Stacks PSW (Program Status Word) Enthält mehrere Bits für die Statusbestimmung der CPU Speicher Speicherhierarchie Die oberste Schicht beinhaltet die internen Register der CPU. Danach folgt der schnelle Cache. Darauf folgt der Hauptspeicher oder auch RAM (Random Access Memory). Als nächstes folgen Festplatten und die letzte Schicht bilden Magnetbänder, CDs, etc. MMU Die MMU (Memory Management Unit) übernimmt die Umwandlung virtuellen Speichers in physische Speicheradressen. zfbsys2.doc / eba Seite 1 von 8 17.05.2003
Multiprozessoren Von Neumann-Rechner Der von Neumann-Rechner arbeitet sequentiell, Befehl für Befehl wird abgeholt, interpretiert ausgeführt und das Resultat abgespeichert. Harvard-Architektur Bei der Harvard-Architektur sind Instruktionen und Daten in getrennten Speichern untergebracht. Der Prozessor besitzt getrennte Busse für Instruktions- und Datenzugriffe, dadurch kann ein überlappender Betrieb durchgeführt werden. Flynn sches Klassifikationsschema Wie viele Befehle / Datenwerte können gleichzeitig abgearbeitet werden? SISD Singe Instruction Single Data (1 Befehl / 1 Datenwert) SIMD Single Instruction Multiple Data (1 Befehl / mehrere Datenwerte) MISD Multiple Instruction Single Data (Mehrere Befehle / 1 Datenwert) MIMD Multiple Instruction Multiple Data (Mehrere Bef. / mehrere Daten) Ausprägungsformen Für ein SIMD-System sind mehrere PUs (Processing Units) nötig. Für ein MIMD-System braucht man mehrere PUs und CUs (Controll Units) Amdahl s Law Mittlere Leistung eines MIMD-Systems bei einem seriellen Anteil s und n CPU: L MIMD = LSISD 1 s s + n Steigerungsfaktor (speed-up) im Vergleich zu einem SISD-System: L L MIMD SISD = 1 1 s s + n Zu beachten: 1-s = p, wenn also s = 0 dann lautet die Formel: n / p = n/1 = n Wenn p = 0 dann lautet die Formel 1 / 1 = 1 MIPS / FLOPS MIPS = Mega Instructions per Second FLOPS = Floting Point Operation per Second zfbsys2.doc / eba Seite 2 von 8 17.05.2003
Shared-Memory-Multiprozessoren Dies sind Systeme, in denen zwischen zwei und 1000 CPUs über einen gemeinsamen Speicher kommunizieren. Vorteil: Extrem schneller Speicherzugriff Nachteil: Benötigt intensiven Nachrichtenaustausch zwischen CPUs UMA (Uniform Memory Access) Zugriff auf gesamten Speicher einheitlich schnell NUMA (Non Uniform Memory Access) Zugriff abhängig von Adressbereich unterschiedlich schnell Betriebssystemtypen Jede CPU hat eigenes Betriebsystem. Speicher wird in Partitionen für jede CPU aufgeteilt. Wird heute nicht mehr verwendet. Master-Slave-Multiprozessoren. Betriebssystem läuft nur auf einer CPU. Ist aufgrund des hohen Overheads nur mit wenigen CPUs brauchbar. Symmetrische Multiprozessor-Systeme (SMP) Kopie von Betriebssystem im Speicher. Synchronisationsproblem Sperren auf Tabellen birgt Deadlockgefahr Message-Passing-Multicomputer Jede CPU besitzt einen eigenen Speicher. Vorteil: Leichter zu realisieren Nachteil: Schwerer zu programmieren, 1000x langsamer als Shared-Memory Verteilte Systeme Verbundene Computeranlagen. Vorteil: Keine feste Bindung der Computer Nachteil: Zugriff 1000x langsamer als Message-Passing Middleware-Technologien stellen gemeinsame Basis für Applikationen dar. zfbsys2.doc / eba Seite 3 von 8 17.05.2003
Prozessor-Pipeline Pipeline Besitzt eine CPU getrennte Hol-, Dekodier- und Ausführungseinheiten spricht man von einer Pipeline. Durch Pipelines nimmt die Gesamtdauer der Befehlsausführungen ab. Die Dauer eines Befehls bleibt gleichlang. Superskalare CPU Eine Superskalare CPU besitzt mehrere Hol-, Dekodier- und / oder Ausführungseinheiten. Dadurch können z.b. zwei Instruktionen gleichzeitig geholt werden. Pipeline-Verzögerung Diese Verzögerung entsteht aufgrund dessen, dass nicht mit 100 prozentiger Wahrscheinlichkeit vorausgesagt werden kann, ob ein Sprung ausgeführt wird oder nicht. Dafür gibt es drei Lösungsansätze: Branch Prediction Sprungvorhersage Branch History Table CPU merkt sich Bedingungsauswertungen Delayed Branch Anweisung vor dem Sprung wird nach den Sprung verlegt CISC / RISC RISC Weniger als 50 Instruktionen mit vielen Registern. Die Maschinenbefehle haben eine feste Grösse, deshalb ist RISC das optimale Instruktionsformat für die Pipeline-Verarbeitung. CISC Mehr als 50 Instruktionen mit wenigen Registern. Variable Maschinenbefehlsgrösse. Semantische Lücke Ist das Verhältnis der Anzahl Hochsprachenanweisungen zu Anzahl Maschinenbefehlen. zfbsys2.doc / eba Seite 4 von 8 17.05.2003
Speichersystem Primärspeicher Direkt adressierbar. CPU kann Instruktionen und Operanden nur aus Primärspeicher holen. Flüchtiger Speicher. Sekundärspeicher Nur indirekt adressierbar. Persistente Programm- und Datenspeicherung CAM (Content Addressable Memory) Für den Zugriff auf CAM ist keine Adresse nötig. Es reicht ein Teil des Eintrags. Ausgegeben werden diejenigen Einträge, die übereinstimmen. Wird für die Adresstransformation verwendet. Lokalitätseffekt Dies ist der Effekt, dass ein Adressbereich während grösseren Zeiträumen unverändert bleibt. Dieser Adressbereich muss in der schnellsten Stufe des Speichersystems platz finden. Von Namen zu Speicheradressen Namensauflösung Namen von Variablen, Konstanten, etc. werden in Adressen umgewandelt. Adresstransformation Programmadressen werden auf unterschiedliche Speicheradressen abgebildet Namensraum Menge der Namen, die ein Programm zur Identifizierung der Elemente enthält Adressraum Menge aller Programmadresse,die ein Programm bei seiner Ausführung referenziert. Bei 32 Adressbits z.b. 2^32 Speicherraum Menge aller Speicheradressen, auf die bei der Programmausführung zugegriffen wird. Bei Computern ist dies die Menge der Speicheradressen, die mit Speicherbausteinen hinterlegt sind. Grundlagen Speicherverwaltung Relocation Problem Programmspeicheradressen müssen auf die physikalischen Adressen abgebildet werden. Problem des Speicherschutzes Ohne Zusatzmassnahmen kann jedes Programm jede Speicherstelle verändern! zfbsys2.doc / eba Seite 5 von 8 17.05.2003
Speicherverwaltung (statisch) Monoprogrammierung Nur ein Progr. läuft gleichzeitig. Speicher zwischen OS und Progr. aufgeteilt. Multiprogrammierung Mehrere Programme werden echt oder quasiparallel ausgeführt. Erhöht die CPU-Nutzung. Für A = Auslastung der CPU, p = Zeitanteil für E/A- Warten und n = Anzahl Prozesse im Speicher gibt es die Formel: A = 1 n p Swapping Auslagern von ganzen Prozessen bei knappem Speicher auf die Platte. Wird verwendet falls keine MMU vorhanden oder bei Multi-User OS. Bitmaps Speicher wird in Allokationseinheiten unterteilt. Jeder Einheit wird ein Bit in einer Bitmap zugewiesen, wobei eine 0 bedeutet dass die Einheit frei ist und eine 1 dass sie belegt ist. Größe der Einheit ist eine wichtige Entwurfsfrage. Schwierige Suche nach zusammenhängender 0-Folge. Verkettete Listen Jeder Prozess hat normalerweise zwei Nachbarn in einer verketten Liste. Dies sind entweder Prozesse oder Löcher. Wird ein Prozess vor einem Loch gelöscht so vergrössert sich einfach das Loch. Jedes Speichersegment enthält folgende Infos: Prozess / Loch, Startadresse, Länge und ein Zeiger auf das nächste Element. First Fit Prozess wird in das erste ausreichend grosse Loch eingefügt. NextFit Wie FirstFit, beginn jedoch beim zuletzt passenden Loch BestFit Das kleinste passende Loch wird gewählt Worst Fit Das grösste verfügbare Loch wird gewählt QuickFit Standorte von geläufigen Lochgrößen in einer separaten Liste. Speicherverdichtung Alle Löcher die bei Swapping entstehen werden durch Zusammenschieben der Prozesse zu einem grossen Loch. Wird nicht mehr verwendet, da damit eine Menge Rechenzeit verschwendet wird. zfbsys2.doc / eba Seite 6 von 8 17.05.2003
Speicherverwaltung (dynamisch) Virtueller Speicher / Paging Programmcode und Daten sind auf der Festplatte und werden erst bei Bedarf in Hauptspeicher geholt. Nebeneffekt: Adressraum und Speicherraum können unterschiedlich gross sein. Hardware für virtuellen Speicher: MMU (Memory Management Unit). Der virtuelle Adressraum ist in Einheiten unterteilt, die Pages genannt werden. Die entsprechenden Einheiten im physischen Speicher werden Page Frames genannt. Pages und Page Frames sind immer gleich gross. Page fault Tritt auf wenn eine Page nicht im physischen Speicher liegt. Das OS wählt einen wenig benutztes Page Frame aus und schreibt diesen auf die HD. Dann lädt es die Page die einen Seitenfehler ausgelöst hat von der HD und führt den Befehlt erneut aus. Ob eine Page im Speicher liegt oder nicht wird durch ein present/absent-bit in der Page Table benutzt. 0 bedeutet dass die Page nicht vorhanden ist, bei 1 ist sie vorhanden. Page Tables Page Tables liegen innerhalb der MMU und sorgen dafür, dass einer virtuellen Adresse eine physische zugeordnet wird. Mathematisch betrachtet, ist die Tabelle eine Funktion, mit der virtuellen Page- Nummer als Argument und der Page Frame-Nummer als Ergebnis. Das present/absent-bit befindet sich ebenfalls in dieser Tabelle. Probleme: Seitentabelle kann extrem gross werden. Umrechnung muss schnell sein. Offset Durch die Grösse des Offsets kann die Grösse einer Page berechnet werden. Ist der Offset z.b. 12 bit, so ist die Page bzw. der Page Frame 2^12 d.h. 4kB gross. Invertierte Seitentabellen Es wird in der Seitentabelle ein Eintrag für jeden physischen Seitenrahmen gespeichert. Hintergrundspeicher Wird benötigt um Daten in den Speicher zu laden, oder aus dem Speicher zu speichern. Dabei gibt es zwei Verfahren. Beim ersten Verfahren wird der ganze Speicher ausgelagert und ist somit schnell mit hohem Platzbedarf. Das zweite Verfahren lagert nur die benötigten Teile aus, ist aber auch langsam. Copy-on-write Wird verwendet, wenn mehrere Prozesse dieselben Daten verwenden. Dabei werden die Daten nur einmal in Speicher angelegt und erst dann vervielfältigt, wenn darauf geschrieben wird. zfbsys2.doc / eba Seite 7 von 8 17.05.2003
Adresstransformationsverfahren Seitentransformation Es werden Bereiche mit einer fixen Grösse transformiert. Der Hardware- Aufwand ist gering, da einfachere Adressumsetzung. Benötigt für die Umsetzung eine Page Table. Dort wird die virtuelle Adresse über einen Pagedeskriptor in eine physische Adresse umgewandelt. Mehrstufige Seitentransformation Bei den mehrstufigen Adresstransformation werden mehrere Tabellen verwendet, um eine virtuelle Adresse in eine physische umzuwandeln. Bei einer zweistufigen wird die virtuelle Adresse wird in drei Teile aufgeteilt: PT1 wird als Index für die erste Tabelle verwendet, daraus folgt der Index der zweiten Tabelle. PT2 definiert dann den Index der ausgewählten Tabelle der zweiten Stufe. Von dort wird dann die tatsächliche Rahmennummer gefunden. Und dann noch wiederum der Offset dazugerechnet. Page Table-Eintrag (Page Deskriptoren) Ein Eintrag in einer Page Table sieht mehr oder minder immer gleich aus. Die Seitenrahmennummer ist natürlich das zentrale Element. Weiter folgt ein Protection-Bit für die Zugriffsregelung, ein Modified-Bit um festzustellen, ob ein Eintrag verändert wurde oder nicht. Wenn der Eintrag nämlich unverändert ist, so muss die Page beim Auslagern nicht auf die HD geschrieben werden, weil dort schon die aktuellste Version der Seite liegt. Das Referenced-Bit wird bei jedem Lese- und Schreibzugriff gesetzt. Es hilft dem OS bei der Entscheidung, welche Seite bei einem Seitenfehler ausgelagert werden soll. Das letzte Bit wird verwendet um Caching an oder auszuschalten. TLB (Translation Lookaside Buffer) Dies ist ein kleines HW-Gerät, welches virtuelle Adresse direkt in physische Umwandelt, ohne dabei Page Tables zu verwenden. Der TLB wird jeweils mit den aktuell verwendeten Adressen gefüllt und nützt danach den Umstand dass in der Praxis viele Speicherzugriffe auf dieselben Adressen stattfinden. Ein TLB hält kaum mehr als 64 Adressen. Durch einen TLB wird die Zugriffsgeschwindigkeit markant verbessert. Segmenttransformation Es werden Bereiche mit einer variablen Grösse transformiert. Sehr grosser Hardware-Aufwand und Speicher wird fragmentiert. Es zwei Typen. Bei Typ A wird die virtuelle Adresse jeweils um die Segmentnummer eines Segmentregisters erweitert. Bei Typ B ist die Segmentnummer in der virtuellen Adresse enthalten. Die physische Adresse wird bei beiden Verfahren auf dieselbe Weise gebildet. Mit Hilfe einer Segmentnummer wird aus der Segment-Tabelle der Segmentbeginn gewonnen, welcher dann mit dem Offset addiert wird. Beides zusammen bildet die physische Adresse. zfbsys2.doc / eba Seite 8 von 8 17.05.2003