M03 Darstellung von Zahlen, Rechnen, CPU, Busse

Teil Rechnerarchitekturen – M03
Darstellung von Zahlen, Rechnen, CPU, Busse
Corinna Schmitt
[email protected]
Darstellung von Zahlen
Rechnen
© 2015 – Corinna Schmitt
Teil Rechnerarchitekturen - 2
Zwei Darstellung von Ganzzahlen mit
Vorzeichen
! 
Vorzeichen + Magnitude
–  Zusatzbit, um Vorzeichen zu kodieren
(0)101 = 5
! 
1101 = - 5
1-er Komplement
–  Vorzeichenwechsel durch Invertierung aller Bits
(0)101 = 5
! 
1010 = - 5
Nachteile:
–  Zwei unterschiedliche Darstellungen der Null
–  Benötigt zusätzliche Gatter
© 2015 – Corinna Schmitt
Teil Rechnerarchitekturen - 3
Negativzahlen: 2er-Komplement
! 
Subtrahiere die entsprechende positive Zahl N von 2n
(0)101 = 5
1011 (16dec – 5dec) = - 5
Sieht kompliziert und unnatürlich aus, ist aber effizient!
!  Eigenschaft: höchstwertiges Bit ist 1 falls Zahl negativ
! 
! 
Andere Art der Berechnung
–  Invertiere jedes Bit
–  Addiere 1
© 2015 – Corinna Schmitt
Teil Rechnerarchitekturen - 4
Addition mit dem 2er-Komplement
! 
Direkte Addition ohne Spezialbehandlung des
Vorzeichens
© 2015 – Corinna Schmitt
Teil Rechnerarchitekturen - 5
Subtraktion mit dem 2er-Komplement
! 
Subtraktionsregel
–  Um eine Zahl (Subtrahend) von einer anderen (Minuend)
abzuziehen, addiere man das 2er-Komplement des
Subtrahenden zum Minuend.
© 2015 – Corinna Schmitt
Teil Rechnerarchitekturen - 6
32-bit ALU für Subtraktion mit dem 2erKomplement
! 
Einsatz von bininvert and carry input
© 2015 – Corinna Schmitt
Teil Rechnerarchitekturen - 7
2er-Komplement und Überlauf (Overflow) (I)
! 
Ein Problem der Addition und Subtraktion mit 2erKomplement:
! 
Grund:
–  Die Resultate (+9 und -13) passen nicht mehr in die Maske
von 3 Bits (1 Bit für das Vorzeichen)
–  Überlauf-Bedingung gegeben
© 2015 – Corinna Schmitt
Teil Rechnerarchitekturen - 8
2er-Komplement und Überlauf (Overflow) (II)
! 
Die ALU kann bei Überlauf nicht viel machen
–  „Flag“ (Bit im „Zustandsvektor“ der CPU) setzen.
–  Den Programmierer diesen Wert prüfen lassen.
! 
D.h., der Programmiere muß
–  Das „overflow“-Bit nach jeder Addition und Subtraktion
abfragen und
–  Entsprechende Maßnahmen ergreifen.
! 
Einige Programmiersprachen ignorieren Überlauf
–  Bspw. C
© 2015 – Corinna Schmitt
Teil Rechnerarchitekturen - 9
Multiplikation
! 
Mehrere Problembereiche
–  Das Produkt von zwei 32-Bit-Worten ist 64 Bits lang!
–  Spezialbehandlung bei Produkt zweier Zahlen im 2erKomplement
! 
Beispiel: Multiplikation ohne 2er-Komplement
© 2015 – Corinna Schmitt
Teil Rechnerarchitekturen - 10
Multiplikations-Hardware
! 
Bemerkung zur Implementierung
–  Multiplikation erfolgt außerhalb der ALU
–  „Hardware-Schleife“
© 2015 – Corinna Schmitt
Teil Rechnerarchitekturen - 11
Multiplikation und Division
Multiplikation und Division sind zeitraubend.
!  Es existieren schnellere Verfahren als Bit-für-Bit
Operationen
! 
–  Können mit 2er-Komplement arbeiten
–  Bsp. Booth‘s Algorithmus
! 
Konsultiere das jeweilige Datenblatt des Prozessors.
! 
Laufzeit hängt vom Wert der Operanden ab
–  Bsp. Multiplikation mit Null
© 2015 – Corinna Schmitt
Teil Rechnerarchitekturen - 12
Floating Point
! 
Gleiche Diskussion wie bei Integer-Werten
! 
Darstellung
–  Vorzeichen, Mantisse, Exponent
–  Z.B. IEEE 754-Norm (1985)
–  In 32 oder 64 bits (float, double)
–  NaN (not-a-number)
! 
Implementierungsfrage
–  Als Programm (mit Integer)
–  In Hardware (Co-Prozessor)
© 2015 – Corinna Schmitt
Teil Rechnerarchitekturen - 13
Central Processing Unit (CPU)
© 2015 – Corinna Schmitt
Teil Rechnerarchitekturen - 14
Zentraleinheit eines Rechners
! 
Die Zentraleinheit besteht im wesentlichen aus den
Komponenten der Hauptplatine (Mainboard oder Motherboard).
–  Der Mikroprozessor (CPU = Central Processing Unit): Ausführung der
Programme, Steuerung und Verwaltung der Hardware verantwortlich.
–  Der RAM-Arbeitsspeicher (RAM = Random Access Memory): enthält
Programme, die gerade ausgeführt werden, und verwendete Daten.
–  Der ROM-Speicher (ROM = Read-only-Memory): enthält meist ein
Programm (BIOS bei IBM-PCs), das beim Einschalten die wichtigsten
Hardwarekomponenten überprüft und dann das Booten des
Betriebssystems von einem Speichermedium (Festplatte, CD) veranlaßt.
–  Die Busse und Schnittstellen: Kommunikation zwischen einzelnen
Bestandteilen des Mainboards, zum Anschluss von Peripheriegeräten
(z.B. Grafikkarten, Netzwerkkarten, Festplatten, Druckern).
–  Der Chipsatz: fest auf dem Mainboard untergebrachte Schaltkreise, z.B.
Für die Steuerung sämtlicher Anschlüsse des Mainboards.
© 2015 – Corinna Schmitt
Teil Rechnerarchitekturen - 15
Mikroprozessor (1)
! 
Mikroprozessoren sind integrierte elektronische Schaltkreise
–  Während sie ursprünglich nur aus wenigen Transistoren bestanden,
enthalten sie heute mehrere Millionen Transistoren, wobei die
Integrationsdichte auf Grund des technologischen Fortschritts ständig
zunimmt.
© 2015 – Corinna Schmitt
Teil Rechnerarchitekturen - 16
Mikroprozessor (2)
! 
Ein Mikroprozessor setzt sich aus folgenden Komponenten zusammen:
–  ALU (Arithmetic Logical Unit=Arithmetisch-logische Einheit): Rechenwerk, das
mathematische Operationen und logische Verknüpfungen durchführt.
–  Register: spezielle Speicherplätze innerhalb des Prozessorkerns. Die ALU
rechnet mit den Werten, die sich in den Arbeitsregistern befinden. Typische
Prozessoren verfügen nur über relativ wenige Register, wie z. B. 2, 4, 6, 8 usw.
–  Steuerwerk: übernimmt mittels zweier spezieller Register (Befehlszählerregister
und Befehlsregister) die Kontrolle über die Ausführung des Programmcodes und
initiiert andere Steuerungsfunktionen, verwaltet auch den Stack-Zeiger.
•  Befehlstabelle (Instruction Table) erlaubt Maschinenbefehle eines Programms zu
dekodieren.
–  Über Busse (Datenleitungen) ist der Prozessor mit den Komponenten verbunden:
•  Datenbus: Austausch von Daten mit dem Arbeitsspeicher
•  Adressbus: Übertragen der zugehörigen Speicheradressen
•  Steuerbus: Ansteuerung der Peripherie-Anschlüsse
© 2015 – Corinna Schmitt
Teil Rechnerarchitekturen - 17
Register
! 
Register
–  sind prozessorinterne Speicherplätze, die jeweils ein (binäres) Datum bestimmter
Länge (z. B. 32-Bit) aufnehmen können.
–  besitzen zu anderen Prozessorkomponenten, wie Ablaufsteuerung und
Verknüpfungslogik, sehr enge Verbindungen. Nur mit den Daten in den
Arbeitsregistern können direkte logische Operationen durchgeführt werden.
! 
Registertypen
–  Arbeitsregister werden in Befehlen durch Namen wie z.B. D1…D7 oder EAX…
EDX angesprochen. Sie können Daten (Datenregister) und je nach Prozessortyp
auch Adressen (Adressregister) aufnehmen.
–  Das Befehlszählerregister beinhaltet immer die Adresse des nächsten
auszuführenden Befehls (häufiger Name ist Instruction Pointer = IP).
–  Das Befehlsregister kann einen (binären) Maschinenbefehl aufnehmen.
–  Das Stackregister speichert den Prozessorstatus und den Programmzähler ab.
© 2015 – Corinna Schmitt
Teil Rechnerarchitekturen - 18
Central Processing Unit (CPU)
hier nur 1 Bus
© 2015 – Corinna Schmitt
Teil Rechnerarchitekturen - 19
CPU-interne Register (statischer Speicher)
Abkürzung
Registerart
IR
Instruction Register
Y, Z, TEMP
Temporary operand/result register
MAR
Memory Address Aegister
MDR
Memory Data Register
PC
Program Counter
R0 – Rn-1
User programmable registers
F (nicht dargestellt)
Flags register inside control unit
© 2015 – Corinna Schmitt
Teil Rechnerarchitekturen - 20
Funktionsweise eines Prozessors
1.  Das Befehlszählerregister des Steuerwerks enthält die Adresse des nächsten
Maschinenbefehls. Die Adresse des Befehls wird über den Adressbus an den
Arbeitsspeicher übermittelt.
2.  Der Befehl wird aus dem Arbeitsspeicher über den Datenbus in das Befehlsregister
übertragen. Mittels Dekodierlogik wird der Befehl analysiert und die Ausführung
angestoßen.
3.  Der Befehl wird ausgeführt; abhängig vom jeweiligen Befehl wird dabei zusätzlich das
Lesen von Daten aus dem Arbeitsspeicher, die Ansteuerung von
Peripherieschnittstellen, das Rechnen in der ALU oder die Durchführung eines Sprungs
im Programm erforderlich. Der Status der jeweiligen Operation wird im Statusregister
(Flagregister) angezeigt
4.  Falls ein Sprung stattfand, wird das Befehlszählerregister auf die entsprechende neue
Adresse gesetzt, ansonsten wird das Befehlszählerregister um 1 erhöht.
5.  Der Prozessor fährt wieder mit dem 1. Schritt fort.
© 2015 – Corinna Schmitt
Teil Rechnerarchitekturen - 21
Arbeitsschritte einer CPU
Speicherzugriff
!  Arithmetische Operationen
!  Logische Operationen
!  Ganzer Instruktionszyklus
! 
© 2015 – Corinna Schmitt
Teil Rechnerarchitekturen - 22
Speicherzugriff
! 
Mehrere „Microschritte“ sind nötig, um einen CPU-Befehl
ab zu arbeiten.
Bsp.: Holen eines Datenwortes aus dem Speicher
!  Annahmen:
! 
–  Speicheradresse in R1 abgelegt
–  Zieladresse sei R2
! 
Schritte:
1. Lege Adresse ins MAR-Register: MAR " [R1]
2. Setze MAR-Inhalt auf externe Signalleitung: Starte LeseProzess
3. Signal vom externen Speicher: Warte, bis Leseoperation fertig
4. Transferiere Inhalt von MDR nach R2: R2 " [MDR]
© 2015 – Corinna Schmitt
Teil Rechnerarchitekturen - 23
Arithmetische und logische Operation
! 
Bsp.: Zwei Register addieren
! 
Annahmen:
–  Operanden seien in R1 und R2
–  Ergebnis soll nach R3
! 
Schritte
1. Wert im Register R1 zur ALU kopieren: Y " [R1]
2. Lege [R2] auf den CPU-Bus
3. Wähle add-Operation aus und warte
4. Transfer des Ergebnisses nach R3: R3 " [Z]
© 2015 – Corinna Schmitt
Teil Rechnerarchitekturen - 24
Ganzer Instruktionszyklus
! 
Die CPU arbeitet folgende Schritte ab:
1. 
2. 
3. 
4. 
5. 
! 
Hole nächste Instruktion (mittels PC)
Hole die Operanden (in Abhängigkeit der Instruktion)
Führe die Operation durch
Speichere das Resultat
Berichtige PC (falls nicht schon Teil der Operation)
Die Kontrolleinheit dirigiert diesen Ablauf.
© 2015 – Corinna Schmitt
Teil Rechnerarchitekturen - 25
Festverdrahtete „Control Unit“ (CU)
© 2015 – Corinna Schmitt
Teil Rechnerarchitekturen - 26
Festverdrahtete CU vs. MicroProgrammierung
Vorher: Status der Kontrollleitungen wird „ausgelesen“.
!  Neu: Programmierbare Kontrolleinheit, Mini-Programm!
! 
–  Jede CPU-Instruktion wird durch eine Mikro-Routine
abgearbeitet.
! 
Bemerkungen:
–  Benutzer können normalerweise die Kontrolleinheit nicht
programmieren
•  Wird in der Fabrik festgelegt
–  Intel erlaubt micro-programming # „Intel Updater“ in Linux
© 2015 – Corinna Schmitt
Teil Rechnerarchitekturen - 27
Arbeitsweise einer
mikroprogrammierbaren Kontrolleinheit
© 2015 – Corinna Schmitt
Teil Rechnerarchitekturen - 28
Microprocessor vs. Microcontroller
(Definition)
! 
Vor 1971 waren ALU, Kontrolleinheit und Register
durch mehrere (diskrete) elektronische Komponenten
realisiert.
–  Mainframes, Minicomputers, Spezialarchitekturen (VektorProzessoren) haben zum Teil die ALU immer noch separat.
–  Microprocessor
•  ALU, Kontrolleinheit, Register und interner Bus aus 1 Chip
–  Microcontroller (µC)
•  Ein Microprocessor, der auch Hauptspeicher und die Ein-/AusgabeLogic auf einem Chip hat (kompletter Computer)
© 2015 – Corinna Schmitt
Teil Rechnerarchitekturen - 29
Relevanz von µKontrollern (µC)
µC sind billig: 50 Rappen bis 5 Franken pro Chip
!  µC Markvolumen über 10 Milliarden USD pro Jahr
! 
! 
Vergleich
  µProzessoren (PC etc.): 25-30 Milliarden USD/anno
–  Digital Signal Processors (DSP): 4 Milliarden USD/anno
! 
Populäre Geräte/Anwendungen:
–  Auto: Heute 60 µC und mehr pro Highend-Auto
–  NASA Mars Sojourner Rover (8-bit Intel 80C85)
–  Sonicare Plus Zahnbürste (8-bit Zilog Z8)
© 2015 – Corinna Schmitt
Teil Rechnerarchitekturen - 30
Busse
© 2015 – Corinna Schmitt
Teil Rechnerarchitekturen - 31
Die Großfamilie der Busse
Cache bus
Level 2
cache
Local bus
Memory bus
PCI
bridge
CPU
Main
memory
PCI bus
SCSI
USB
Mouse
Modem
© 2015 – Corinna Schmitt
ISA
bridge
IDE
disk
Graphics
adaptor
Available
PCI slot
Monitor
Keyboard
ISA bus
Sound
card
Teil Rechnerarchitekturen - 32
Printer
Available
ISA slot
Busse und Schnittstellen
! 
Busse und Schnittstellen werden sowohl zur Kommunikation zwischen
den Bestandteilen des Mainboards als auch zum Anschluß aller Arten
von Peripheriegeräten benötigt, wie z.B. für Grafikkarten, Festplatten,
Drucker.
! 
Dem Transport von Daten zwischen den Einheiten auf dem
Mainboard, dem Prozessor, dem Arbeitsspeicher und der Ein-/
Ausgabeeinheit dient ein so genanntes internes Bussystem.
! 
Aus Geschwindigkeitsgründen werden auf dem internen Bussystem
mehrere Bits parallel übertragen. Die Anzahl der parallel zu
übertragenden Bits hängt von der an den HW-Chips verfügbaren
Busleitungen ab und korreliert sinnvollerweise mit der Bitlänge der
Prozessorregister und der darin zu verarbeitenden maximalen
Datengrößen.
© 2015 – Corinna Schmitt
Teil Rechnerarchitekturen - 33
Bustypen
! 
! 
! 
! 
Schnittstelle zwischen CPU (Chip) und Außenwelt
Datenbus: Er dient der bidirektionalen Übertragung von Daten
zwischen den Einheiten. # „was“ [MDR]
Adreßbus: Er dient der unidirektionalen Übermittlung von Adressen
zum Speicher (oder zu den Ein-/Ausgabeeinheiten).
# „wo“ [MAR]
Steuerbus: Er dient zur
Koordination exklusiver
Zugriffe auf den Datenund Adressbus
(Bus reservieren, freigeben, …).
© 2015 – Corinna Schmitt
Teil Rechnerarchitekturen - 34
Cache — Prinzipieller Aufbau
! 
Pufferspeicher hält Kopien derjenigen Teile des
Arbeitsspeichers bereit, auf die aller Wahrscheinlichkeit nach
von der CPU als nächstes zugegriffen wird
Adreßbus
µP
Steuerung
Steuerbus
Cache
verarbeiten
Speicher
ein-/auslagern
Datenbus
–  Der Cache ist entweder direkt auf dem Prozessorchip integriert (on-chipCache) oder
–  in der schnellsten und teuersten SRAM-Technologie realisiert (Off-ChipCache).
© 2015 – Corinna Schmitt
Teil Rechnerarchitekturen - 35
Bus = Satz von Signal- und
Kontrollleitungen
! 
Verschiedene Busse in und außerhalb des Computers
und der CPU
–  In der CPU: Bus für Integer-Werte (Register-ALU-Register)
© 2015 – Corinna Schmitt
Teil Rechnerarchitekturen - 36
Externe Busse
ISA = Industrial Standard
Architecture (alter IBM/PC)
!  PCI = Peripheral Connect
Interface
!  AGP = Accelerated Graphics
Port
! 
! 
„North“ / „South“ Bridge
–  Bus-Verbindungen
© 2015 – Corinna Schmitt
Teil Rechnerarchitekturen - 37
Bus Interfaces, Bridges
! 
Gründe für die Vielzahl von Bussen
–  Unterschiedliche Geschwindigkeiten
•  Speicherzugriff ist schneller als Input/Output (I/O)
–  Unterschiede in Zugriffs-Verfahren
•  Synchron (fester Zeitpunkt, wann Daten gelesen werden können)
•  Asynchron (beliebige Verzögerungen, spezielle Signalleitungen)
–  Unterschiede in den elektrischen Eigenschaften
•  Bus auf einer PC-Platine (10-30 cm)
•  SCSI-Bus für externe Geräte (10-100 cm)
! 
„Backplane“: externer System-Bus
© 2015 – Corinna Schmitt
Teil Rechnerarchitekturen - 38
Signalleitungen für Hauptspeicher im
Mikrocomputer
! 
ATmega128
–  4Kx8 EEPROM, 4Kx8 SRAM, 128Kx8 Flash
© 2015 – Corinna Schmitt
Teil Rechnerarchitekturen - 39