Computersysteme 1
CS HTW
CS HTW
-
- 1 / 40
-
Flashcards
Einerkomplement
Alle Bits Kippen
+1 = 0001
-1 = 1000
Zweierkomplement
Alle Bits kippen und 1 Bit addieren.
0001 + 1111 = 10000
ALU - Arithmetische-logsiche Einheit
- konkrete Hardware
- in heutige CPUs
- Funktion
- binär addieren
- logisches nicht
- logisches und/oder
- Wir betrachten 1 Bit Operatoren
Unterschiede zwischen Analog und Digital
Analog
- unbegrenzt genau
- ungenauigkeiten schlecht zu entdecken
Digital
- endliche möglichkeiten
- einfacher zu erfassen
- vollständige erfassung möglich
- fehler bei kodierung erkenn und behebbar
Logik vs Schaltungen
- für jede unserer aussagenlogischen Formeln existiert eine schaltung oder umgekehrt
- schaltung hat ein layout
- qualität der aussage nicht klar messbar
- schaltungsqualität hat praktische kriterien
Signallaufzeit
- Wieviel Zeit vergeht bis Ergebnis vorliegt
- mehr Gatter nacheinader = langsamer
- mehr gatter insgesamt = teurer
Additionsbefehl
Wie löst man eune Addition aus?
- theoretisches Beispiel
- 0111 00010111 00110001
- Steuerung signalisieren "addiere" : 01101
- Zwei Zahlen 00010111 + 00110001
Zahlen speichern
- Flipflop speichert 1 Bit
- Computer speichert Milliarden von Zahlen
- Addierter muss auf die Zahl zugreifen
- Alle Flipflops mit Addierer verkabeln?
- Wennige Zahlen direkt verkabeln: Register
- Hauptspeicher langsamer + billiger anbinden
Register
- feste Bitlänger zb 32 Bit oder 64 Bit
- Direkt mit den Recheneinheiten verbunden
- Maximale Geschwindigkeit biem Lesen und Schreiben < 1 Nanosekunde
- Spezielle Register
- program counter, stack pinter, status
Program Counter
- Spezielles Register - kein direktes Schreiben
- enthält Position der als nächstes auszuführende Befehls
- Wird nach Befehlsabarbeitung automatisch auf darauffolgenden Befehl gesetzt
- Heißt je nach System auch Instruction Pointer
Statusregister
- Jeder Bit hat eine eigene Bedeutung
- Nach Befehlsausführung ablesbar
- Typische Informationen
- Zero - Ergebnis war 0
- Sign - Vorzeichenbit (höchstes) gesetzt
- Carry - ÜBerlauf aufgetreten (vorzeichenlos)
- carry oit des höchsten Bits
- Overflow - Überlauf (Vorzeichen)
- Höchstes Bit: carry in xor carry out
Arbeitsspeicher RAM
- Random Access Memory
- Flüchtig - inhalt verschwindet ohen Strom
- Zugriffzeiten:
- 50 - 100 Nanosekunden
- Register < 1 Nanosekunde
Speicherarten
- SRAM (static)
- Flip-Flops
- schnell, teuer
- DRAM (dynamic)
- Kondensator + ständiges Auffrischen
- weniger Bautele pro Bit = billiger
- SDRAM (synchronous dynamic)
- DDR-SDRAM (double data rate synchronous dynamic random access memory)
Speicherzugriff
- idealisiert: linear mit adressen 0,1,2 ... n
- konret: caches, paging, virtueler speicher
Direkte Adressierung
- Pseudo-Code: ADD [7], 5
- addiert 5 zu der Zahl an Adresse 7
- An Adresse 7 steht -3
- - 5 +5 = 2
- Ergebnis 2 an Adresse 7 schreiben
Indirekte Adressierung
- Pseudo-Code: Add [REgister 1], 5
- addiere 5 zu der Zahl an der Adresse die in REgister 1 steht
- Hat Register 1 den Wert 7, dann wie eben
- Je nach Architektur dürfen nur spezielle Adressregister verwendet werden
Zwischenspeicher Cache
- Sehr weiter Begriff
- Ziel: Zugriff auf langsame Medien beschleunigen
- Idee: Daten im Voraus lesen oder gelesene bereithalten für weitere Nutzung
- Beim Zugriff auf ADresse erst im Cahce nachsehen ggf. Daten dort ablegen
Cache - Aufbau
- Cache logischerweise kleiner als Hauptspeicher
- Cachezeile besteht aus Daten (mehrere Bysten), Orginaladresse und Flags
- Zuordung Addresse > Zeile
Cache füllen
- Lesen von ADresse X
- Adresse x im Cache eingetragen?
- Ja / Nein
- Schreiben an Adresse X
- Zu Adresse x passende Zeile im Cache suchen
- Daten dort eitragen
Cache Direkt abgebildet
- Zuordnung ADresse > Zeile eindeutig
- Hash-Funktion wandelt ADressen in Cachen Zeilen Nummer um
- gültige Zeile
- mathematisch und technis am einfachsten Adresse modulo Anzahl Zeilen
- Direkt abgebildet (direct mapped), da jede Adresse auf genau eine Zeile abgebildet wird
- ABER: nicht jede Zeile hat genau eine Adresse
Cache - Assoziativität
- Vollassoziativ
- jede Adresse kan in jeder Cache Zeile stehen
- Satzassoziativ
- zu jeder Adresse passt eine feste Anzahl von Zeilen
- ist eine dieser Zeilen frei, so wird sie verwendet
- Assoziativität = Anzahl Zeilen pro Satz
Cache: Zeilen und Daten finden
- z Zeilen mit je b Bytes
- Adresse > Zeile [Adresse / b] modulo z
- In der Zeile
- Adresse eingetragen als b [Adresse / b]
- kleine durch b teilbare Adresse > Basisadresse der Zeile
- Daten an Position: Adresse - b * [Adresse / b]
- Differenz aus echter Adresse und Basisadresse
- Adresse eingetragen als b [Adresse / b]
Schreiben aus dem Cache
- Write Through
- Daten sofort durchschreiben
- warten bis langsames schreiben fertig ist
- Write Back
- daten später zurückschreiben
Assembler
- Befehle für CPU sind 0/1 Folgen
- Nicht einfach lesbar für Menschen
- Prozessorabhängig
CISC und RISC
- CISC
- Complex Instruction Set Computer
- Alle Adressierungsarten für Befehle
- wenig komplexe Befehle
- abarbeitung aufwendig, langsam, teuer
- RISC
- Reduced Instruction Set Computer
- wenig Adressierungsarten pro Befehl
- Programm hat viele einfache Befehle
- Abarbeitung einfach/schnell/billig
Leistungsfähigkeit CPU
- hängt in einem komplexen System von sehr vielen Faktoren ab
- Taktfrequenz des Prozessors = Maximale Anzahl Befehl pro Sekunde
- Komplexe Befehle nicht vollständig zu schaffen in einem Takt
Pipelinestufen
- fetch
- decode
- execute
- memory access
- write back
MIPS- Pipline Daten-Hazard
- Read after Write
- Register lesen
- Wer noch nicht da
Out of Order execution
- kann Programmierer und Prozessor
- Befehle früh in code reordering buffer
- befehle auf datenabhängikeit untersuchen
- zwischen 2 abhänogen befehlen mehrere unabhänig ausführen
Superskalare Pipeline
- Beobachtung: Befehle benötigen nicht alle Teile der Pipeline
- Zwei Befehle holen statt einen
- Wenn Rechnen ADD und Speicher LW
- Fetch, decode parallel
- eine ALU addiert, zweite bestimmt Adresse
- Speicherzugriff nur für LW
- zurückschreiben parallel
Mehrkernprozessoren
- Echte parallilität sämlicher Pipelinestufen
- Buszugriff geteilt
- Alle gleichberechtigt (symmetrisch)
- Billiger als mehere einzelne Prozessoren