4 Speichern und Adressieren Schaltwerke, Register, Puffer, Paging Gedächtnis in Schaltungen Rückkopplung Schaltwerke I N P U T x 1 x 2 x n Schaltnetz y 1 y 2 y m O U T P U T Z K Speicher Z K Z! z 1 2
Flipflops Ein Flipflop ist ein Schaltwerk mit genau zwei Zuständen Reset-Set-Flipflop S R Taktgesteuertes RS-Flipflop S C R D-Latch D C 1 1 1 Q Q Q Q S Q R Q S Q S R Q Q 0 0 Q Q 0 1 0 1 1 0 1 0 0 0 # # 3 C1 R Q D Q C1 Q C S R Q 0?? Q 1 0 0 Q 1 0 1 0 1 1 0 1 1 0 0 # C 0? Q 1 0 1 1 1 0 verboten verboten Schalter (Toggle) Zähler T Q Q T Q C T Q 0? Q 1 0 Q 1 1 Q C synchroner Binärzähler y 1 y 2 y 3 y 4 T T Q T Q T Q T Q T Q C 4
Register Schieberegister mit paralleler und serieller Ausgabe y 1 y 2 y 3 y 4 y 5 IN C Speicherregister mit paralleler Ein/Ausgabe OUT y 1 y 2 y 3 y 4 y 5 C IN x 1 x 2 x 3 x 4 x 5 5 Der I 8008 kannte Buchstaben Datenbus 8 Bit 16 Kbyte Speicher ansprechbar 14-Bit Adressen 7 14-Bit Register 48 Befehle 100000 Befehle/s Rechnen mit Buchstaben 6
Kleinst adressierbare Einheit 1 Byte Bereichsadressen Um größere zusammenhängende Bereiche im Speicher anzusprechen, muß die entsprechende Adresse ohne Rest teilbar sein durch 2 beim Halbwort 4 beim Wort 8 beim Doppelwort 2048 bzw. 4096 bei einer Seite 65536 bzw. 1048576 bei einem Segment 7 Adressierung OP-Code Operand 1... Daten-unmittelbar (Direktoperand) Der Operand steht bereits im Operandenfeld Datum = [OP] direkt (absolute Adressierung) Die Adresse steht im Operandenfeld Datum = [OP] indirekt Die Adresse findet sich unter der Adresse im Operandenfeld Datum = [ [OP] ] Register-direkt Datum steht im Register Datum = [R] Register-indirekt Adresse steht im Register Datum = [ [R] ] Register-relativ offset, displacement D = Inhalt Operand Datum = [ D + [R] ] oder Datum = [ D + [R1] + [R2] ] Als Register kommen in Frage Basisregister BR (z.b. RECORD) Indexregister IR (z.b. ARRAY) Befehlszähler BZ (Verschiebliches Programm) 8
Keine Verschiebbarkeit z.b. bei absoluter Adressierung Verschiebbarkeit Die Speicherzellen werden im Programm unmittelbar angesprochen, also müssen die Daten unbedingt an diese Stellen geladen werden. Verschiebbar zur Ladezeit z.b. bei relativer Adressierung Alle Adressen sind relativ zum Programmanfang zu sehen, beim Laden braucht nur bei jeder Adresse die Anfangsadresse des Programms auf die Adressen addiert zu werden Verschiebbar zur Laufzeit z.b. bei Basis-relativer Adressierung der momentane Beginn des Datensegments wird in einem Basisregister gehalten und bei Umspeicherung wird das Basisregister geändert. 9 BALR Die Verschiebbarkeit von Programmen wird durch ein Register BALR (Branch And Link Register) erzeugt Befehl Bedeutung Anwendung BALR R1, R2 Lade die Folgeadresse (BZ) nach R1 und verzweige nach [R2] (keine Verz. Falls R2=0 ist. BALR R1,0 am Anfang des Programms (Programmteils) verwendet R1 als Basisregister, wenn alle Adressen relativ zum Anfang 0 eingerichtet sind. 10
Virtueller Speicher Physischer und logischer Adressraum Mehrprogrammbetrieb Jedem einzelnen Programm kann nur ein Teilbereich des physisch vorhandenen Speichers zugeteilt werden großer Hauptspeicherbedarf Ein einzelnens Programm kann einen höheren Speicherbedarf haben, als physisch zur Verfügung steht Physischer Adressraum Physischer Adressraum Logischer Adressraum Logischer Adressraum 11 Adressumsetzung Virtuelle Speicherverwaltung erfolgt über Adressumsetzung in einer Tabelle Physischer Adressraum wird in Kacheln (z.b. 256 Worte) aufgeteilt, in die entsprechende Seiten (gleicher Größe) der Programme abgelegt werden. Umsetzungstabelle zur Berechnung der physischen Speicheradresse aus der logischen Adresse im Programm Task 01 1 3 2 9 3 0 - Task 02 1 4 2 12 - - Task 03 1 2 2 1 3 8 4 7 Programm 1 2 3 4 5 2 6 7 8 7 9 0 15 16 4 12
Der I 8080 mit Zeigern Datenbus 8 Bit 64 Kbyte Speicher ansprechbar 16-Bit Adressen 6 8-Bit Register 2 16-Bit Register 78 Befehle 290000 Befehle/s 16-Bit Adressen 13 Zeigerkonzept Der Befehlszeiger (IP) verweist unmittelbar in den Speicher auf den nächsten zu verarbeitenden Befehl Der Stapelzeiger (SP) verweist unmittelbar in den Speicher auf den nächsten zu vergebenden Speicherplatz Dynamische Speicherverwaltung wird möglich, d.h. ein Programm sucht sich erst zur Bearbeitungszeit den aktuell notwendigen Speicherplatz Programmspeicher Aktueller Befehl Eintrag 05 Eintrag 04 Eintrag 03 Eintrag 02 Eintrag 01 Datenspeicher Befehlszeiger Stapelzeiger 14
Mit dem Stapelkonzept (Stack) läßt sich ein ganzer Speicherbereich dynamisch (d.h. zur Ausführungszeit) verwalten Der Stapelzeiger (SP) weist auf das nächste unbesetzte Speicherfeld Dies Feld kann beschrieben werden (PUSH) Das oberste Feld des Stapels kann gelesen werden (TOP) Das oberste Feld des Stapels kann entfernt werden (POP) Bei PUSH bzw. POP wird der SP ein Feld weiter bzw zurück gesetzt Der Stapel arbeitet nach dem LIFO-Prinzip (last-in, first-out) frei Der Stapel besetzt SP 15 Caches Schneller Pufferspeicher für aktuelle Programmteile und Daten (temporär!!) Register Cache Speicher 16
Read Ahead Vorausschauender Zugriff (read ahead) auf den Speicher über den Cache Speicherzugriff Steuerlogik prüft, ob der Speicherinhalt schon im Cache liegt Ja (hit) Prozessor greift unmittelbar auf den Cache zu Nein (miss) Aus dem Speicher wird zuerst der gesuchte Block in den Cache übertragen Effektivitätssteigerung durch vorausschauendes Laden Langes Halten (reuse) im Cache Daten im Cache sollten möglichst bis zum Abschluß ihres Gebrauchs im Cache verweilen um unnötige Swaps zu vermeiden. Problem der doppelten Buchführung (Inkonsistenz) 17 virtueller Cache Beim virtuellen Zugriff wird die Zuordnung von Speicher- Adresse und Cache-Zeilennummer über eine Hash- Funktion (abhängig vom Inhalt) gesteuert. Vorteil schnell durch nebenläufige Adressberechnung Nachteile Cache-Wechsel (flush) bei Prozess-Wechsel verschiedene Cache-Zeilen können dieselbe Speicheradresse realisieren (adress aliasing bei gemeinsamen Variablen) Veränderungen im Speicher (DMA) könnten die Cache-Inhalte veralten lassen (Inkonsistenz) Konsequenz Einsatz nur als Befehls-Cache 18
physischer Cache Die Adressumsetzung erfolgt vor dem Cache-Zugriff nach einer festen Zuordnungsfunktion (die auch in einer Tabelle abgelegt sein kann) Nachteil höhere Zugriffsdauer wegen der vorhergehenden Adressumsetzung Vorteile Konsistenzprüfungen sind jederzeit möglich, da jederzeit die aktuelle Adresszuordnung nachvollzogen werden kann Doppelzuweisungen sind ausgeschlossen mehrere Prozesse und mehrere Caches können gleichzeitig versorgt und konsistent gehalten werden 19 Cache-Organisation In welcher Zeile wird ein Speicherblock abgelegt ( Plazierungsproblem mapping) Wie wird ein Block im Cache wiedergefunden (Identifikationsproblem identification) direkt (Speicheradresse mod Cachelänge) voll assoziativ (Zuordnungstabelle) n-assoziativ (Tabelle + Speicheradresse mod n ) direkt n-assoziativ vollassoziativ 20
vereinfachtes Beispiel Speicher-Adresse 23 2 4 TLB Cache-Adresse 5 2 4 CACHE 7,20 5,21 Hugo Otto 5,30 Susi Emil Anna Translation Lookaside Buffer.... 18 9 23 5.... SPEICHER Seitentabelle 18 19 20 21 22 23.. 9.. 2.... 5.. 5,2,1 5,2,2 5,2,3 5,2,4 5,2,5... Hugo Otto Susi Emil Anna... 21 Aktualisierung Problem der Datenkonsistenz Cache - Speicher write through Bei jeder Veränderung des Cache Inhalts wird der neue Wert sofort in die korrespondierende Speicherzelle geschrieben Nachteil hohe Belastung des Prozessor-Speicher-Busses Puffer für Wert Adresse nötig copy back Veränderung des Speicherinhalts erst bei Verdrängung des Blocks aus dem Cache Neben V(= valid-bit) wird ein Bit D (= dirty-bit) in der Verwaltungsinfo geführt, das gesetzt wird, wenn in den Block geschrieben wird. Nur Blöcke mit gesetztem D müssen in den Speicher zurückgeschrieben werden. 22
FIFO (first-in, first-out, wer zuerst kommt, mahlt zuerst) einfache Implementierung aber ungünstig Zufällig nicht ideal aber gut zu implementieren LRU (least recently used, am längsten unbenutzt) optimal aber schwierige Implementation Ersetzung move to front setze das aktuelle Feld an den Anfang der Schlange transpose setze das aktuelle Feld in der Schlange ein Feld vor SCR (second chance replacement) Setze ein used-bit U wenn eine Seite verwendet wird. ersetze die erste Seite mit U=0, aber setze davor bei allen Seiten U=0. 23 Instruktions-Cache vorausschauendes Holen möglich (außer bei Sprüngen) unterstützt Pipelining Holen - Decodieren - Ausführen Trennung der Caches für Programm und Daten Probleme mit selbstmodifizierendem Code Direktoperanden (Datencache oder Instruktionscache?) Konsistenzprobleme bei starrer Trennung wegen ggf. notwendiger Dopplung von Zeilen (Daten im Programm) 24
Assoziativspeicher Ablage der Daten mit Kennung und Verwaltungsinformation Kennung (tag) V... Daten Blockadresse Kennung - Index - Offset Kennung (tag) Index Offset Zugriffsmechanismus Kennung (tag) Index Offset Satz 1 Kennung (tag) V... Daten Satz 2 Satz n Vergleich Vergleich 25 >=1 Treffer großer Speicher Speicherbedarf der Programme unabhängig von dem aktuell verfügbaren Speicher Programminterne Speicheradressen kleiner/größer als die Adressbusbreite Speicherung Programmunabhängig Lösung Segmenttechnik Jedes Programm kann für seinen Speichebedarf eigene Segmente (fester beschränkter Größe) anfordern, die vom Betriebssystem über Segmentregister verwaltet werden 26
Segment vs. Virtueller Speicher Segment - Organisiation wird durch den Benutzer (Programmierer) verwaltet zusammengehörige Daten stehen zusammen in demselben Segment Segmente können nur gering ausgenutzt sein Der Zugriff auf Segmente erfolgt unmittelbar über ein Segmentregister Virtueller Speicher wird durch den Rechner verwaltet zusammengehörige Daten können in verschiedene Seiten kommen Die Seiten sind bis auf wenige Ausnahmen vollständig mit Daten besetzt Der Zugriff auf eine Seite erfordert eine vorherige Adressberechnung über eine Seiten-Tabelle 27 16 Bit Datenbus 20 Bit Adressbus Speicher 1 Mbyte 14 Register 16 Bit 4 Segmentregister 800000 Befehle/s Segmentregister 28
Adressierungsmethode des I 8086 Segmentierung Segmentregister vorne auf den Datenbus geschoben und der Offset dazu addiert 0 0 0 0 + Adressierungsmethode im protected Mode (Ab I 80286) Segmentregister enthält einen Verweis auf die Segmentbeschreibung (40 Bit) Segment-Anfangsadresse (Höherwertige Bytes) Segmentlänge Status Gültigkeit, geladen,.. Zugriffsrechte etc. 29 16 Bit Datenbus 24 Bit Adressbus Speicher 16 Mbyte 15 Register 16 Bit 4 Segmentregister 1 600 000 Befehle/s 40-Bit Segmentbeschreibung Mehrprozess-Betrieb Hardware-Schutz Der I 80286 30
Mehrfach-Prozessor 32 Bit Datenbus 32 Bit Adressbus Speicher 4 Gbyte 46 Bit virtuelle Adresse vierteller Speicher 64 TByte 9 Register 16 Bit 8 Register 32 Bit 4 000 000 Befehle/s 64-Bit Segmentbeschreibung I 80386 Microcode Ausführungs- Warteschlange Befehlsdekoder Ausführungs einheit Segmentierungs-- Einheit Prefetch -Einheit Register ALU Schiebe- Einheit Segment- beschreibungs- Einheit Befehls- Warteschlange Bussteuerung Seiten- Verwaltung Seiten- Speicher 31 Speicherzugriff- Beschleunigung durch Direct Memory Access DMA Neben der CPU können auch weitere Prozessoren (DMA-Controller) unmittelbar auf den Speicher zugreifen, um Wartezeiten zu vermeiden. Peripherie- Gerät DMA- Controller Ende Start für DMA temporär reserviert Speicher CPU Die CPU weist einen Speicherbereich für DMA aus und gibt dem DMA- Controller das Startsignal. Nach Beendigung der Übertragung signalisiert der DMA-Controller der CPU den Vollzug. 32
Speicher-Verschränkung Zur Beschleunigung des Speicher-Zugriffs kann auch der Speicher auf mehrere Bänke verteilt werden (Interleaving) Speicherbank 0 Speicherbank 1 Speicherbank 2 Speicherbank 3 Zugriffslogik Adresse Low-Bytes = Bank-Nr. Der Zugriff kann im Fließbandverfahren auf die verschiedenen Bänke quasi-gleichzeitig erfolgen und damit den Zugriff beschleunigen. Die Codierung der niedrigen Bits als Banknummern sorgt dafür, daß benachbarte Daten in verschiedene Bänke abgelegt werden. 33