Grundlagen der Technischen Informatik
Grundlagen der Technischen Informatik
Grundlagen der Technischen Informatik
Erfolgreiche ePaper selbst erstellen
Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.
<strong>Grundlagen</strong> <strong>der</strong><br />
<strong>Technischen</strong> <strong>Informatik</strong><br />
10. von Neumann Rechner
Torsten Braun, IAM, Universität Bern: GTI, WS 00/01 342<br />
Inhalt<br />
• Struktur und Komponenten eines<br />
von-Neumann-Rechners<br />
• Mikroprozessoren<br />
– Complex Instruction Set Computer (CISC)<br />
– Reduced Instruction Set Computer (RISC)<br />
• Busse<br />
• Speicher<br />
• Ein-/Ausgabe-Einheiten
Input<br />
Next-State-<br />
Logik<br />
Torsten Braun, IAM, Universität Bern: GTI, WS 00/01 343<br />
Sequenzieller Rechner<br />
Zustand<br />
Speicherelemente<br />
• Beschreibung durch endlichen Automaten<br />
Output-Logik<br />
• ungeeignet zur Beschreibung von realen Rechnern<br />
– Speicherung grosser Datenmengen und Transport dieser<br />
Datenmengen zwischen Rechnermodulen<br />
– Rechner kann sein Verhalten än<strong>der</strong>n,<br />
die Funktionsweise des Automaten ist aber vorgegeben.<br />
Output
Torsten Braun, IAM, Universität Bern: GTI, WS 00/01 344<br />
Modell eines Rechners<br />
• Grundbestandteile eines Rechners<br />
– Zentraleinheit (Central Processing Unit, CPU)<br />
– Speicher<br />
– Ein-/Ausgabeeinheiten<br />
• Problem-unabhängige Rechnerstruktur<br />
– Für jedes neue Problem wird ein eigenes<br />
Programm im Speicher abgelegt.<br />
⇒ Programm-gesteuerter Universalrechner<br />
• Speicher für Programme und Daten<br />
– besteht aus Plätzen fester Wortlänge<br />
– Ansprechen über Adressen
Komponenten eines Mikrorechnersystems<br />
CPU<br />
Torsten Braun, IAM, Universität Bern: GTI, WS 00/01 345<br />
Ein-/<br />
Ausgabeeinheiten<br />
Verbindungswege<br />
Peripheriegeräte<br />
Hauptspeicher
Torsten Braun, IAM, Universität Bern: GTI, WS 00/01 346<br />
Hardwarekomponenten<br />
• CPU (Mikroprozessor)<br />
– Verarbeiten von Daten<br />
durch ein Programm<br />
– Steuerwerk:<br />
• Lesen/Interpretieren <strong>der</strong><br />
Befehle und Operanden<br />
• Ablaufsteuerung<br />
• Ausführung von Befehlen<br />
• Ansteuerung <strong>der</strong><br />
E/A-Einheiten und des<br />
Hauptspeichers<br />
– Operationswerk<br />
• Zwischenspeicherung<br />
• logische u. arithmetische<br />
Operationen<br />
• (Haupt-/Arbeits-)Speicher<br />
– Speichern von Daten und<br />
Programmen<br />
• Ein-/Ausgabeeinheiten<br />
– Schnittstelle zwischen<br />
Mikroprozessor und<br />
Peripheriegeräten<br />
– Einlesen/Ausgabe von<br />
Daten von/an<br />
Peripheriegeräte<br />
– Anpassung <strong>der</strong> Formate und<br />
Geschwindigkeiten bei<br />
Datenübertragung<br />
– passiver Interface-Baustein/<br />
Prozessor, Register
Struktur eines von-Neumann-Rechners<br />
Mikroprozessor<br />
Steuerbus<br />
Adressbus<br />
Datenbus<br />
Speichereinheit<br />
(z.B.<br />
ROM)<br />
...<br />
Torsten Braun, IAM, Universität Bern: GTI, WS 00/01 347<br />
Speichereinheit<br />
(z.B.<br />
RAM)<br />
Peripheriegerät<br />
Ein-/<br />
Ausgabeeinheit<br />
...<br />
Peripheriegerät<br />
Ein-/<br />
Ausgabeeinheit
Klassifikation von von-Neumann-Rechnern<br />
• Personalcomputer (Mikrocomputer)<br />
– Einbenutzerbetrieb<br />
– netzwerkfähig<br />
• Arbeitsplatzrechner (Workstations)<br />
– höhere Leistungsfähigkeit<br />
– Mehrbenutzer-Betriebssysteme<br />
– vgl. Minicomputer<br />
• Grossrechner (Mainframes)<br />
– viele Anwen<strong>der</strong><br />
– Hochleistungsrechner<br />
– mehrere Prozessoren, Spezial-Hardware<br />
Torsten Braun, IAM, Universität Bern: GTI, WS 00/01 348
Kennzeichen eines von-Neumann-Rechners<br />
• Bearbeitung eines speziellen Problems erfolgt durch<br />
ein Programm ( = Folge von Befehlen)<br />
• Zu jedem Zeitpunkt führt die CPU genau einen Befehl<br />
aus, welcher höchstens einen Datenwert bearbeiten<br />
kann (Single Instruction Single Data, SISD).<br />
• Alle Speicherworte können als Daten, Befehle o<strong>der</strong><br />
Adressen verwendet werden.<br />
• Daten und Programme werden nicht in getrennten<br />
Speichern untergebracht, ohne weitere Massnahmen<br />
besteht kein Schutz vor inkorrektem Zugriff<br />
Torsten Braun, IAM, Universität Bern: GTI, WS 00/01 349
Mikroprozessorbefehlssatz<br />
• Programm (im Hauptspeicher) legt<br />
Funktionsweise eines Mikroprozessorsystems fest.<br />
– Folge von Binärzahlen nach festem Format<br />
(Maschinencode), schwer lesbar<br />
– benutzerfreundliche Darstellung: Assemblersprachen mit<br />
speziellem Mnemocode für jeden Befehl<br />
• Befehlssatz legt Art <strong>der</strong> möglichen Befehle fest.<br />
• Befehle für<br />
– Datentransport<br />
– arithmetische und logische Verknüpfungen<br />
– Än<strong>der</strong>ung <strong>der</strong> Abarbeitungsreihenfolge<br />
Torsten Braun, IAM, Universität Bern: GTI, WS 00/01 350
Torsten Braun, IAM, Universität Bern: GTI, WS 00/01 351<br />
Maschinenbefehlssätze<br />
• Complex Instruction Set Computer (CISC)<br />
– Beispiele:<br />
Intel i386, Motorola MC680x0, MIPS R3000<br />
• Reduced Instruction Set Computer (RISC)<br />
– Beispiele:<br />
Sun (Ultra)SPARC, DEC Alpha,<br />
Motorola PowerPC, MIPS R10000,<br />
auch: Intel Pentium II
μIR<br />
+1<br />
Registerspeicher<br />
μPC<br />
CISC-Prozessorstruktur<br />
Mikroprogrammspeicher<br />
μCS<br />
4 4<br />
DR1<br />
DR2<br />
SR<br />
DB1<br />
CC<br />
ALU<br />
6 4<br />
DB2 5<br />
Torsten Braun, IAM, Universität Bern: GTI, WS 00/01 352<br />
5<br />
5<br />
2<br />
PC<br />
Befehlsdekodierung:<br />
Verzweigung<br />
im Mikroprogramm<br />
1,3<br />
4<br />
IR AR<br />
1,3<br />
+1<br />
1 3<br />
1,3,4<br />
1,3,4<br />
Hauptspeicher<br />
C<br />
A<br />
D
Torsten Braun, IAM, Universität Bern: GTI, WS 00/01 353<br />
CISC-Mikroprozessor<br />
• Ausstattung <strong>der</strong> Prozessoren mit immer mächtigeren<br />
Befehlssätzen (70er Jahre) mit dem Ziel die semantische<br />
Lücke zwischen höheren Programmiersprachen und den<br />
einfachen Maschinenbefehlen zu verringern<br />
• typisch: > 200 Befehle<br />
• grosse Anzahl von Adressierungsarten<br />
• Kombinationen von Befehlen und Adressierungsarten<br />
• Mikrocode für jeden Befehl in Steuerwerk<br />
• Mikroprogrammierung des Steuerwerks ist langsamer als<br />
feste Verdrahtung.<br />
• Versuch, CPU durch komplexe Instruktionen stärker zu<br />
belasten (Speicherbus als Flaschenhals)<br />
• Viele Instruktionen und Adressierungsformen werden sehr<br />
selten verwendet.
Torsten Braun, IAM, Universität Bern: GTI, WS 00/01 354<br />
CISC-Mikroprozessor<br />
• Operationswerk<br />
– Rechenwerk<br />
• Aufgabe: Ausführen von<br />
Berechnungen<br />
• Arithmetic and Logical Unit (ALU)<br />
• Registerspeicher<br />
• Operandenregister DR1, DR2<br />
• interne Datenbusse DB1, DB2<br />
(mit D verbunden)<br />
• Prozessorstatusregister SR<br />
(Overflow, Carry)<br />
– Leitwerk<br />
• Befehlszähler<br />
(program counter, PC)<br />
• Instruktionsregister IR<br />
(1. Befehlswort)<br />
• Adressregister AR<br />
(2./3. Befehlswort)<br />
• Steuerwerk<br />
– Festwertspeicher für<br />
Befehlsdekodierung<br />
(Erzeugen von<br />
Mikroprogrammstartadressen)<br />
– Mikroprogrammspeicher<br />
(micro control store, μCS)<br />
– Mikrobefehlszähler<br />
(micro program counter, μPC)<br />
– Mikrobefehlsregister<br />
(micro instruction register, μIR)
Torsten Braun, IAM, Universität Bern: GTI, WS 00/01 355<br />
Rechenwerk<br />
• 2 unabhängige Datenbusse (DB1, DB2)<br />
• Arithmetisch Logische Einheit (ALU)<br />
verknüpft die zu Ausführungsbeginn<br />
in DR1 und DR2 geladenen Operanden<br />
• erzeugt Resultat und Statusinformation<br />
(Condition Code (CC) für<br />
Programmverzweigungen)<br />
• Quelle und Ziel von Datentransporten:<br />
Haupt- o<strong>der</strong> Registerspeicher<br />
(2-Port-Speicher, für Zwischenergebnisse)
Torsten Braun, IAM, Universität Bern: GTI, WS 00/01 356<br />
Mikrobefehle<br />
• Befehlszähler enthält aktuelle Befehlsadresse<br />
• Inkrementieren o<strong>der</strong> Laden mit Sprungadresse<br />
• Ablaufschritte (Mikrobefehlssequenzen) von Befehlszugriff<br />
und Befehlsausführung durch Mikroprogramm vorgegeben<br />
• Startadressen <strong>der</strong> Mikrobefehlssequenzen werden durch<br />
Festwertspeicher <strong>der</strong> Befehlsdekodierung erzeugt und in<br />
Mikrobefehlsregister zur Ausführung geladen<br />
• Adressierung <strong>der</strong> einzelnen Mikrobefehle durch<br />
Mikrobefehlsregister<br />
• Mikrobefehl wirkt auf<br />
– Operationswerk (Durchschalten d. Datenwege, ALU-Operationen)<br />
– prozessorexterne Komponenten über Steuerleitungen
(Maschinen-)Befehlszyklus<br />
• Ablauf für Befehlszugriff und -ausführung<br />
• Taktgenerator erzeugt Prozessor-(Maschinen-)takt<br />
(typische Taktfrequenz: mehrere 100 MHz)<br />
• Beispiel: zweistellige Operation<br />
1. Transport des Befehls vom Hauptspeicher in Befehlsregister,<br />
Erhöhen des PC<br />
2. Befehlsdekodierung<br />
3. Transport des 1. Operanden von Haupt- o<strong>der</strong> Registerspeicher<br />
in Operationswerk<br />
4. Transport des 2. Operanden in Operationswerk<br />
5. Operationsausführung (Verknüpfen <strong>der</strong> Operanden)<br />
6. Transport des Resultats vom Rechenwerk in Haupt- o<strong>der</strong><br />
Registerspeicher<br />
Torsten Braun, IAM, Universität Bern: GTI, WS 00/01 357
• ADD SPADR, R5<br />
Torsten Braun, IAM, Universität Bern: GTI, WS 00/01 358<br />
Beispiel Befehlszyklus<br />
– PC → Hauptspeicher → IR,<br />
PC+1 → PC<br />
– Befehlsdekodierung<br />
– PC → Hauptspeicher → AR,<br />
PC+1 → PC<br />
– AR → Hauptspeicher → DR2,<br />
Registerspeicher → DR1<br />
– DR2 + DR1<br />
→ Registerspeicher,<br />
Statusinformation → SR<br />
– Lesen des 1. Befehlsworts<br />
– Auswerten Op-Code und<br />
Adressierungsarten<br />
– Lesen Adresse 1. Operand<br />
– Lesen <strong>der</strong> Operanden<br />
– Addition,<br />
Schreiben des Resultats in<br />
Registerspeicher u. Statusinfo<br />
nach SR (CC-Bits)
Torsten Braun, IAM, Universität Bern: GTI, WS 00/01 359<br />
CISC-Registersatz<br />
• Vom Programm direkt ansprechbare Prozessorregister<br />
• Spezial- und Universalregister (Arbeitsregister)<br />
R0<br />
R1<br />
R2<br />
R3<br />
R4<br />
R5<br />
R6<br />
R7<br />
User-Stackpointer-Register USP<br />
Supervisor-Stackpointer-Register SSP<br />
Framepointer-Register FP<br />
Vectorbase-Register VB<br />
Befehlszähler PC<br />
Status-Register SR
Torsten Braun, IAM, Universität Bern: GTI, WS 00/01 360<br />
Registerspeicher<br />
• allgemeine Register (Beispiel: R0-7)<br />
• Operandenzugriffe im<br />
– Byteformat (Bits 7 - 0)<br />
– Halbwortformat (Bits 15 - 0)<br />
– Wortformat (gesamtes Register)<br />
– Doppelwortformat<br />
(zwei aufeinan<strong>der</strong>folgende Register)<br />
• MC680x0: 2 Registerspeicher<br />
– D0-7: Daten / Operanden<br />
– A0-7: Adressen und Indizes
Torsten Braun, IAM, Universität Bern: GTI, WS 00/01 361<br />
Stackpointerregister<br />
• Im Beispiel: User-/Supervisor-Stackpointer-Register<br />
• Adressierung eines Keller-(Stapel-)speichers<br />
• Stapelelemente können nur oben aufgelegt/ entnommen werden<br />
• Inkrementieren/Dekrementieren des Stackpointers<br />
• Benutzung auch bei Unterprogrammsprüngen<br />
PUSH.W<br />
POP.W<br />
N-8<br />
N-4<br />
N<br />
N+4<br />
Stackpointer
Framepointer- und Vectorbase-Register<br />
• Framepointer-Register<br />
– Rahmen (Frame):<br />
zu einem Unterprogramm<br />
gehören<strong>der</strong> Stackbereich<br />
– Zugriff in diesem<br />
Unterprogramm erfolgt<br />
relativ zur Basisadresse<br />
des Rahmens<br />
(Framepointer)<br />
– Verwaltung des aktuellen<br />
Framepointers in<br />
Framepointer-Register<br />
– verschiedene Rahmen<br />
für 1 Unterprogramm bei<br />
verschiedenen<br />
Unterprogrammaufrufen<br />
Torsten Braun, IAM, Universität Bern: GTI, WS 00/01 362<br />
• Vectorbase-Register<br />
– enthält Basisadresse <strong>der</strong><br />
Vektortabelle<br />
(Startadressen und weitere<br />
Statusinformation <strong>der</strong><br />
Unterbrechungsroutinen)<br />
– Än<strong>der</strong>n <strong>der</strong> Basisadresse<br />
erlaubt schnelles<br />
Umschalten zwischen<br />
Vektortabellen beim<br />
Prozesswechsel
• Program Counter, PC<br />
Torsten Braun, IAM, Universität Bern: GTI, WS 00/01 363<br />
Befehlszähler<br />
• enthält Adresse des nächsten Befehls<br />
• Vielfaches von Bytes o<strong>der</strong> Halbworten<br />
• Verän<strong>der</strong>n des PC<br />
– Inkrementieren<br />
– Überschreiben bei Sprungbefehl<br />
PC
Torsten Braun, IAM, Universität Bern: GTI, WS 00/01 364<br />
Statusregister<br />
Supervisorbyte Userbyte<br />
T1 T0 S IM2-IM0 N Z V C<br />
Interruptmaske<br />
CC<br />
• T0/1: Trace-Modus: Unterbrechung nach jedem Befehl o<strong>der</strong> nach<br />
je<strong>der</strong> Programmverzweigung<br />
• S = 1: Supervisor-Modus<br />
• IM0-2: Interruptmaske<br />
• Condition Code (CC):<br />
– Negative, N = 1: negatives Resultat einer Operation<br />
– Zero, Z = 1: Resultat einer Operation = 0<br />
– Overflow, V = 1: Überlauf bei Überschreiten des Zahlenbereichs von<br />
2-Komplement-Zahlen<br />
– Carry, C = 1: Übertrag bei arithmetischen Operationen
Torsten Braun, IAM, Universität Bern: GTI, WS 00/01 365<br />
RISC-Mikroprozessor<br />
• Entgegengesetzte Strategie zu CISC,<br />
wichtig ab Ende 70er Jahre<br />
• Idee: Reduktion <strong>der</strong> CISC-Befehlsliste auf<br />
elementare Befehle, die in Mikrobefehlen<br />
eines Mikroprogramms vorkommen.<br />
• Prozessorstruktur ohne Mikroprogrammierung<br />
• fest verdrahteter Befehlsdekodierer u. Steuerwerk<br />
• Beispiele:<br />
– Scalable Processor Architecture (SPARC)<br />
– Microprocessor without Interlocked Pipeline Stages<br />
(MIPS)
Torsten Braun, IAM, Universität Bern: GTI, WS 00/01 366<br />
RISC-Generationen<br />
• 1. Generation<br />
– Erste Entwicklungen<br />
– z.B. Berkeley: 138 Register, 39 Instruktionen<br />
– 20´000 - 100´000 Transistorfunktionen<br />
• 2. Generation<br />
– Umfangreichere Befehlssätze,<br />
z.B. für Gleitkommaoperationen<br />
– weitere Funktionen, z.B. zur Speicherverwaltung<br />
– 300´000-1´000´000 Transistorfunktionen<br />
• 3. Generation<br />
– Chip-interner Parallelismus
CWP<br />
-1<br />
+1<br />
3<br />
4<br />
1<br />
+1<br />
Datenregisterspeicher<br />
2<br />
3<br />
4<br />
RISC-Prozessorstruktur<br />
PC<br />
Maschinenprogramm-<br />
Cache<br />
Torsten Braun, IAM, Universität Bern: GTI, WS 00/01 367<br />
IR<br />
BA (Branch Address Register)<br />
3<br />
4<br />
ALU<br />
Steuerschaltnetz<br />
4<br />
3<br />
CC<br />
SR<br />
AR<br />
Hauptspeicher<br />
C<br />
A<br />
D
Unterschiede CISC-/RISC-Prozessor<br />
• Programm- und Datenspeicher mit Zugriff im<br />
Prozessortakt<br />
• Extra-Programmspeicher (Cache) für aktuellen<br />
Programmausschnitt<br />
• Extra-Datenspeicher für aktuellen Datenausschnitt<br />
• Blockweise Adressierung bei grossem Registerspeicher<br />
• Arithmetisch-logische Operationen im Prozessortakt<br />
• Gleichzeitig überlappende Ausführung von Teilen<br />
mehrerer Befehle (Fliessbandverarbeitung, Pipelining)<br />
Torsten Braun, IAM, Universität Bern: GTI, WS 00/01 368
Programm- und Datenspeicher<br />
mit Zugriff im Prozessortakt<br />
• Maschinenprogramm-Cache, PC, IR ersetzen<br />
Mikroprogrammspeicher, μPC, μIR<br />
• PC und IR entfallen gegenüber<br />
CISC-Prozessor<br />
• grösserer (Daten-)Registerspeicher<br />
übernimmt Aufgabe des Datenspeichers<br />
• zeitgleicher Zugriff auf<br />
Programm- und Datenspeicher<br />
Torsten Braun, IAM, Universität Bern: GTI, WS 00/01 369
Extra-Programmspeicher<br />
für aktuellen Programmausschnitt<br />
• Programmspeicher als RAM / Cache enthält<br />
wechselnde aktuelle Programmausschnitte<br />
• ersetzt Mikroprogrammspeicher<br />
• automatisches Füllen mit Befehlen<br />
aus dem Hauptspeicher<br />
Torsten Braun, IAM, Universität Bern: GTI, WS 00/01 370
Datenspeicher für aktuellen Datenausschnitt<br />
• Dreiport-Registerspeicher<br />
• deutlich grössere Anzahl von Registern<br />
(Register-Fenster) als bei CISC<br />
• Laden und Speichern<br />
als einzige Befehle zum Speicherzugriff<br />
– Füllen durch explizite Lade-Befehle<br />
– Resultate werden durch explizite Speichere-Befehle<br />
in den Hauptspeicher zurückgeschrieben<br />
• arithmetische und logische Registeroperationen<br />
• Programm- und Datenlokalität erfor<strong>der</strong>lich<br />
→ Transfer von grösseren Speicherbereichen in<br />
Registerspeicher vor Operationsausführung<br />
• aus Geschwindigkeitsgründen als Cache realisiert<br />
Torsten Braun, IAM, Universität Bern: GTI, WS 00/01 371
Blockweise Adressierung<br />
• Registeradresse ggf. zu lang,<br />
um sie im Befehlswort unterzubringen<br />
• bei RISC:<br />
keine Ausdehnung des Befehls über mehrere Worte<br />
• son<strong>der</strong>n:<br />
Aufteilen des Speichers in Blöcke (Fenster)<br />
– unterer Teil <strong>der</strong> Registeradresse im Befehl<br />
– oberer Teil wird in Spezialregister<br />
(current window pointer, CWP) vorgegeben<br />
– Zusammenfügen (Konkatenieren) <strong>der</strong> beiden Teile zur<br />
Adressierung des Registerspeichers<br />
Torsten Braun, IAM, Universität Bern: GTI, WS 00/01 372
Arithmetisch-logische Operationen<br />
im Prozessortakt<br />
• Einfache Befehle erlauben Ausführung in einem<br />
Taktschritt, z.B. Addition und Subtraktion.<br />
• Multiplikation muss (maschinen)programmiert<br />
werden.<br />
• Kombination mit CISC-ähnlichen<br />
Koprozessoren für<br />
– Multiplikation<br />
– Division<br />
– Gleitkommazahlenverarbeitung<br />
Torsten Braun, IAM, Universität Bern: GTI, WS 00/01 373
Befehlsphasen-Pipelining<br />
• paralleles Holen und Ausführen eines<br />
Maschinenbefehls in einem Taktschritt<br />
• Befehlsausführung besteht aus mehreren Teilen<br />
– Befehl holen (fetch, F)<br />
– Befehl dekodieren und Operanden holen (decode, D)<br />
– Operation ausführen (execute, E)<br />
– Resultat schreiben (write, W)<br />
• gleiche Zugriffszeiten auf die verschiedenen<br />
Speicher erfor<strong>der</strong>lich<br />
F<br />
D<br />
F<br />
E<br />
D<br />
F<br />
W<br />
E<br />
D<br />
F<br />
Torsten Braun, IAM, Universität Bern: GTI, WS 00/01 374<br />
clr r5<br />
W<br />
E<br />
D<br />
move r1,r6<br />
W add r1,r2,r7<br />
E W sub r3,r4,r8
instruction<br />
fetch<br />
instruction<br />
decode<br />
instruction<br />
fetch<br />
data<br />
fetch<br />
instruction<br />
decode<br />
instruction<br />
fetch<br />
Torsten Braun, IAM, Universität Bern: GTI, WS 00/01 375<br />
Superpipelining<br />
data<br />
fetch<br />
data<br />
fetch<br />
instruction<br />
decode<br />
execute<br />
data<br />
fetch<br />
data<br />
fetch<br />
result<br />
write<br />
execute<br />
data<br />
fetch<br />
result<br />
write<br />
execute<br />
result<br />
write
instruction<br />
fetch<br />
instruction<br />
fetch<br />
data<br />
fetch<br />
data<br />
fetch<br />
instruction<br />
fetch<br />
instruction<br />
fetch<br />
Pipeline kann mehr als<br />
eine Instruktion<br />
aufnehmen (CPI
Very Long Instruction Word (VLIW)<br />
• Verarbeitung mehrerer Befehlsströme<br />
• Anzahl <strong>der</strong> Befehlsströme =<br />
Anzahl <strong>der</strong> vorhandenen parallel<br />
arbeitenden Funktionseinheiten<br />
• Befehlswort für n Funktionseinheiten<br />
umfasst n Operationen<br />
• In einem Schritt kann an jede Funktionseinheit<br />
ein Befehl abgegeben werden.<br />
Torsten Braun, IAM, Universität Bern: GTI, WS 00/01 377
Maschinen-/Assemblerprogrammierung<br />
• weniger und einfachere Befehle<br />
• weniger Adressierungsarten<br />
• Detailliertheit des RISC-Maschinencodes<br />
entspricht <strong>der</strong> CISC-Mikroprogrammierung<br />
• daher: komplexere Maschinen-<br />
/Assemblerprogrammierung<br />
Torsten Braun, IAM, Universität Bern: GTI, WS 00/01 378
Torsten Braun, IAM, Universität Bern: GTI, WS 00/01 379<br />
RISC-Programmierung<br />
• in höherer Sprache o<strong>der</strong><br />
• in einer Pseudomaschinen-/Assemblersprache<br />
• höhere Anfor<strong>der</strong>ungen an den Assembler<br />
(Compilerfunktionen)<br />
• leistungsfähige Compiler erfor<strong>der</strong>lich<br />
– Compiler benutzen selten komplexe Befehle für<br />
automatisch generierten Maschinencode.<br />
– optimierende Compiler<br />
• Verlagerung vieler Aufgaben von<br />
Ausführungszeit in die Übersetzungszeit<br />
• effizienter Code<br />
• Umstellen <strong>der</strong> Befehle zur Optimierung
Torsten Braun, IAM, Universität Bern: GTI, WS 00/01 380<br />
RISC-Registersatz<br />
• allgemeiner Registerspeicher und<br />
spezielle Register (wie bei CISC),<br />
z.B. SR u. Arithmetikregister<br />
• zusätzlich:<br />
– ein o<strong>der</strong> (durch Fliessbandverarbeitung bedingte)<br />
mehrere Befehlszähler<br />
– Registerspeicher ist üblicherweise erheblich grösser<br />
• unstrukturierter Registerspeicher /<br />
Registerfenster mit fester o<strong>der</strong> variabler Grösse<br />
– Zuordnung von Bereichen des Registerspeichers<br />
(Fenster) zu Unterprogrammen<br />
• unüblich: Stackpointer-Register
Unstrukturierte Registerspeicher<br />
• z.B.: einfache<br />
Erweiterung: r0 - r31<br />
• Beispiele:<br />
– PowerPC mit speziellen<br />
Funktionen<br />
– MIPS<br />
• r0 liefert beim Lesen 0<br />
(für<br />
Vergleichsoperationen)<br />
• r31 zur Speicherung <strong>der</strong><br />
Rücksprungadresse<br />
(als Ersatz für Stack-<br />
Pointer)<br />
Torsten Braun, IAM, Universität Bern: GTI, WS 00/01 381<br />
• Nachteil<br />
– Auslagern und Laden <strong>der</strong><br />
Register zum/vom<br />
Hauptspeicher bei<br />
Unterprogrammen, um<br />
dem Unterprogramm<br />
Arbeitsregister zur<br />
Verfügung zu stellen<br />
• Vorteil<br />
– Parameterübergabe
Registerfenster fester Grösse<br />
• Vergrösserung des<br />
Registerspeichers<br />
• Strukturierung<br />
• Beispiel: SPARC<br />
– Jedem Unterprogramm ist<br />
ein Ausschnitt<br />
(Fenster, window) mit 24<br />
Registern zugänglich<br />
– insgesamt 136 Register:<br />
8 globale Register,<br />
8 Fenster à 16 Register<br />
– CWP:<br />
current window pointer<br />
• save dekrementiert CWP<br />
• restore inkrementiert CWP<br />
• Schreiben von PC und <strong>der</strong><br />
Eingangsparameter in Out<br />
• Window-Overflow-Trap:<br />
Auslagern <strong>der</strong> Fenster<br />
Torsten Braun, IAM, Universität Bern: GTI, WS 00/01 382<br />
vorangehendes<br />
Fenster<br />
In n+1<br />
globale<br />
Register<br />
Local n+1<br />
Out n+1 In n<br />
CWP<br />
restore<br />
aktuelles<br />
Fenster<br />
Local n<br />
save<br />
nachfolgendes<br />
Fenster<br />
Out n In n-1<br />
Local n-1<br />
Out n-1
Registerfenster variabler Grösse<br />
• basisrelative<br />
Adressierung<br />
• Fenster mit frei wählbaren<br />
Basisadressen im<br />
Registerspeicher<br />
• Beispiel: Am29000<br />
– 128 lokale Register<br />
– 64 globale Register<br />
• Überlappung <strong>der</strong> Fenster<br />
für Parameterübergabe<br />
• Local-Bereich für<br />
lokale Variable<br />
Torsten Braun, IAM, Universität Bern: GTI, WS 00/01 383<br />
Basis A<br />
Basis B<br />
(aktuell)<br />
Local<br />
Out In<br />
vorangegangenes<br />
Fenster<br />
r0<br />
r1<br />
r2<br />
...<br />
Local<br />
Out<br />
aktuelles<br />
Fenster<br />
r0<br />
r1<br />
r2<br />
...
Torsten Braun, IAM, Universität Bern: GTI, WS 00/01 384<br />
Statusregister<br />
• ähnliche Aufgaben wie bei CISC<br />
– Bedingungsbits N,Z,V,C<br />
– Modus (S)<br />
– Interruptmaske (Processor Interrupt Level, PIL)<br />
• geringe Unterschiede<br />
– previous S-Bit (PS): Sichern <strong>der</strong> aktuellen Betriebsebene<br />
– trap enable: globales Sperren von Interrupts,<br />
sonst Sperren durch Software<br />
Beispiel: SPARC<br />
N Z V C PIL S P S E T CWP
Torsten Braun, IAM, Universität Bern: GTI, WS 00/01 385<br />
Befehlszähler<br />
• Beispiel: SPARC<br />
– mehr als ein PC<br />
– erfor<strong>der</strong>lich bei Programmunterbrechung<br />
• nPC<br />
– übernimmt bisherige Funktion des PC,<br />
d.h. Befehlsadressierung beim Holen des Befehls<br />
• PC<br />
– speichert vorangegangenen Zustand des nPC<br />
– verweist auf Befehl, <strong>der</strong> sich im Zustand<br />
„Dekodieren und Operand holen“ befindet
Torsten Braun, IAM, Universität Bern: GTI, WS 00/01 386<br />
Busse<br />
• Bus = Verbindungsweg zwischen Systemkomponenten<br />
• Bündel von funktional zusammengehörenden<br />
Signalleitungen, auf denen fest formatierte Bitfolgen<br />
transportiert werden müssen<br />
– seriell (1-Bit-Leitung, billige Lösung)<br />
– parallel (parallele Übertragung mehrerer Bits)<br />
• Busse können mehrere Rechnerkomponenten verbinden<br />
→ Synchronisation erfor<strong>der</strong>lich<br />
• Mikroprozessor als aktive Komponente (Master) steuert<br />
Bussystem.<br />
• Speicher und E/A-Einheiten sind in <strong>der</strong> Regel passiv<br />
(Slaves).<br />
• Zwei Systemkomponenten werden gleichzeitig auf den<br />
Bus geschaltet (je ein Sen<strong>der</strong> und Empfänger).
Torsten Braun, IAM, Universität Bern: GTI, WS 00/01 387<br />
Busspezifikationen<br />
• Standardisierung von Bussen zur Kombination<br />
von Baugruppen verschiedener Hersteller<br />
• Spezifikationen<br />
– mechanische und elektrische Eigenschaften<br />
– Regeln für Funktionsabläufe zwischen<br />
Busteilnehmern (Busprotokolle)<br />
• Bussignale<br />
• Zeitverhalten<br />
• Zusammenwirken <strong>der</strong> Bussignale
Torsten Braun, IAM, Universität Bern: GTI, WS 00/01 388<br />
Bussignale<br />
• Signalfluss<br />
– unidirektional (z.B. zum Anlegen von Adressen)<br />
– bidirektional (z.B. für Datentransport)<br />
• Steuersignale:<br />
– meist 0-aktiv<br />
• Signalausgänge mit TriState-Logik<br />
– Zustände<br />
• 0<br />
• 1<br />
• hochohmig (zur Signalabkopplung)
Sammelleitungen<br />
Stichleitungen<br />
Daisy-Chain-Leitungen<br />
Torsten Braun, IAM, Universität Bern: GTI, WS 00/01 389<br />
Leitungsverbindungen<br />
in<br />
out
Torsten Braun, IAM, Universität Bern: GTI, WS 00/01 390<br />
Busankopplung<br />
• CE=1:<br />
hochohmiger Zustand <strong>der</strong><br />
Datenbusanschlüsse<br />
• Daten-, Adress- und<br />
Steuerleitungen werden<br />
über Treiber an Bus<br />
geschaltet<br />
• Treiberbausteine<br />
– Tri-State-Funktion<br />
– treiben grössere Buslast<br />
• (CE,R/W)<br />
– (0,0): A ← B<br />
– (0,1): A → B<br />
– (1,x): hochohmig<br />
A0<br />
A7<br />
B0<br />
... ...<br />
CE R/W<br />
B7
Torsten Braun, IAM, Universität Bern: GTI, WS 00/01 391<br />
Busarten<br />
• Unterscheiden von Leitungsbündeln<br />
(Systembus)<br />
– Datenbus<br />
– Adressbus<br />
– Steuerbus<br />
– Versorgungsbus<br />
• Varianten<br />
– 32-Bit-Prozessoren:<br />
32-Bit Adress- und Datenbus (Split-Bus)<br />
– 64-Bit-Prozessoren:<br />
64-Bit-Bus im Multiplexbetrieb für 64-Bit-Daten und<br />
32/64-Bit-Adressen (Multiplex-Bus)
Torsten Braun, IAM, Universität Bern: GTI, WS 00/01 392<br />
Split- und Multiplex-Bus<br />
• Split-Bus<br />
– getrennte Adress- und<br />
Datenleitungen<br />
– Motivation: Adresslänge<br />
unterscheidet sich von<br />
Speicherzellenlänge<br />
• 32 Bit-Adressbus:<br />
Adressierung von 2 32 =<br />
4 GB Daten<br />
• 64-Bit-Datenbus:<br />
Ansprechen von 64 Bit<br />
Daten in einem Zugriff<br />
– gleichzeitige Übertragung<br />
von Daten und Adressen<br />
– separate Arbitrierung<br />
möglich<br />
• Multiplex-Bus<br />
– Adressen und Daten<br />
werden nacheinan<strong>der</strong><br />
(Multiplexbertrieb)<br />
übertragen<br />
– bei gleicher Leitungszahl<br />
höhere<br />
Übertragungsbreite<br />
– Turnaround-Zyklus<br />
zwischen Adressausgabe<br />
und Dateneingabe zur<br />
Richtungsumschaltung
• Einzelbuszyklus<br />
Torsten Braun, IAM, Universität Bern: GTI, WS 00/01 393<br />
Buszyklenarten<br />
– eine einzige Datenübertragung<br />
• Blockbuszyklus<br />
– Annahme: Prozessoren mit On-Chip-<br />
Cache zur Zwischenspeicherung von<br />
Befehlen und Daten<br />
– Blockweises Laden (cache fill) und<br />
Schreiben (write back) <strong>der</strong> Cache-<br />
Inhalte, Blockgrösse: z.B. 4 Wörter<br />
– Erster Zugriff wie Einzelbuszyklus,<br />
weitere Zugriffe benötigen weniger Zeit<br />
– nur 1 initialer Adresstransfer;<br />
prozessorexterne Adressfortschaltung<br />
durch Speicheransteuerung o<strong>der</strong><br />
Speicherbausteine<br />
• DMA-Zyklus<br />
– Folge einzelner<br />
Übertragungen mit jeweils<br />
einzelner Adressierung<br />
(fortlaufend o<strong>der</strong> nicht<br />
verän<strong>der</strong>nd)<br />
• Langer Blockbuszyklus<br />
– erlaubt mehr als 4<br />
Datentransfers<br />
– für Speicher-Speicher-<br />
Transfers
Einzelbuszyklus<br />
Blockbuszyklus<br />
DMA-Zyklus<br />
DMA-Zyklus<br />
(beide Flanken)<br />
Torsten Braun, IAM, Universität Bern: GTI, WS 00/01 394<br />
Buszyklen bei Split-Bus<br />
A 32<br />
D 32<br />
A 32<br />
D 32<br />
A 32<br />
D 32<br />
A 32<br />
D 32<br />
A 1<br />
A 1<br />
D 1<br />
D 1<br />
D1 ‘ D1 ‘‘D1 ‘‘‘<br />
A1 A2 A3 A4 A 1 A 2 A 3 A 4<br />
D 1<br />
D 1<br />
D 3<br />
D 2<br />
A 5 A 6 A 7<br />
D 2 D 4 D 6<br />
D 5<br />
D 3<br />
(nicht)verän<strong>der</strong>liche<br />
Adressen
langer Blockbuszyklus<br />
langer Blockbuszyklus<br />
(beide Flanken)<br />
Buszyklen bei Multiplex-Bus<br />
Einzelbuszyklus AD64 AD64 D1 D1 Lesen Schreiben<br />
Blockbuszyklus<br />
AD 64<br />
AD 64<br />
AD 64<br />
Torsten Braun, IAM, Universität Bern: GTI, WS 00/01 395<br />
A 1<br />
A 1<br />
A 1<br />
A 1<br />
D<br />
Turnaround-<br />
Zyklus<br />
D 1<br />
A 1<br />
D 1 ‘ D 1 ‘‘D 1 ‘‘‘<br />
D D D D D<br />
D D D D D D D D D D D D<br />
Schreiben
Torsten Braun, IAM, Universität Bern: GTI, WS 00/01 396<br />
Speicher<br />
• Halbleiterspeicher<br />
– Schreib-/Lesespeicher (RAM)<br />
– Festwertspeicher<br />
(ROM, PROM, EPROM, EEPROM)<br />
– Assoziativspeicher (CAM)<br />
• Massenspeicher<br />
– Bän<strong>der</strong><br />
– Floppy Disks<br />
– Magnetplatten<br />
– optische Platten
Torsten Braun, IAM, Universität Bern: GTI, WS 00/01 397<br />
Speicherhierarchie<br />
Grösse,<br />
CPU-Entfernung,<br />
CPU<br />
Zugriffszeit Preis<br />
Register<br />
Cache<br />
Hauptspeicher<br />
Hintergrundspeicher
Torsten Braun, IAM, Universität Bern: GTI, WS 00/01 398<br />
Speichertypen<br />
• Register<br />
– AR, IR, PC, ...<br />
• Cache<br />
– Idee: 90:10-Regel<br />
(90% <strong>der</strong> Zugriffe auf 10% <strong>der</strong> Daten)<br />
• Arbeits-/Primärspeicher<br />
– Halbleiter-Bauelemente<br />
– Grösse bis zu 1 GB<br />
• Hintergrund-/Sekundärspeicher<br />
– magnetisierbare o<strong>der</strong> optische Medien
m<br />
D<br />
m<br />
m<br />
D: Datenleitungen<br />
m<br />
+1<br />
Torsten Braun, IAM, Universität Bern: GTI, WS 00/01 399<br />
Speichersymbolik I<br />
Register mit unidirektionalen<br />
Schreib-/Leseleitungen<br />
Register mit bidirektionalen<br />
Schreib-/Leseleitungen und Zählfunktion
RAM<br />
ROM<br />
A<br />
A<br />
n<br />
n<br />
D<br />
D<br />
Torsten Braun, IAM, Universität Bern: GTI, WS 00/01 400<br />
Speichersymbolik II<br />
m<br />
m<br />
Zweiport-<br />
RAM<br />
A 1<br />
n<br />
A: Adressleitungen<br />
Assoziativspeicher<br />
(content<br />
addressable<br />
memory, CAM)<br />
A 2<br />
n<br />
n<br />
D 2<br />
D 1<br />
D<br />
m<br />
m<br />
m
ROM und RAM-Speicher<br />
• Read Only Memory (ROM)<br />
– Festwertspeicher<br />
• Random Access Memory (RAM)<br />
– Speicherzellen können wahlweise angesprochen<br />
werden<br />
– Lese- o<strong>der</strong> Schreiboperationen<br />
• ROM und RAM können Daten und<br />
Programme enthalten<br />
Torsten Braun, IAM, Universität Bern: GTI, WS 00/01 401
Torsten Braun, IAM, Universität Bern: GTI, WS 00/01 402<br />
Festwertspeicher<br />
• enthält oft Befehle, die durch die CPU für<br />
verschiedenartige Aufgaben ausgeführt<br />
werden müssen<br />
• Speicherung von Systemfunktionen in Form<br />
von Mikroprogrammen<br />
• Typen<br />
– programmable ROM (PROM)<br />
– erasable PROM (EPROM)<br />
– electrically EPROM (EEPROM)
Steuerlogik<br />
Torsten Braun, IAM, Universität Bern: GTI, WS 00/01 403<br />
ROM<br />
Decodierer<br />
Codierer<br />
Bausteinanwahl Adresse Datum
Steuerlogik<br />
Torsten Braun, IAM, Universität Bern: GTI, WS 00/01 404<br />
RAM<br />
Decodierer<br />
Speicherzellen<br />
Bausteinanwahl Adresse Datum<br />
Lese-/Schreibanwahl<br />
Datenbustreiber
Content Addressable Memory (CAM)<br />
Alterungslogik<br />
Steuerlogik<br />
Adresszellen<br />
Torsten Braun, IAM, Universität Bern: GTI, WS 00/01 405<br />
Speicherzellen<br />
Laden Adresse Datum<br />
Anwahl Lesen/Schreiben<br />
• beschreibbare<br />
Adresszellen<br />
• Einsatz:<br />
Cache-Speicher<br />
hit/miss
μP<br />
Adressierung von Systemkomponenten<br />
isolierte Adressierung<br />
Speichereinheiten<br />
Interfaceeinheiten<br />
Torsten Braun, IAM, Universität Bern: GTI, WS 00/01 406<br />
Steuerleitung<br />
A31-0<br />
speicherbezogene Adressierung<br />
Speicheradressen<br />
E/A-Adressen
• Ebenen<br />
Adressierungshierarchie<br />
– Speicherplatz- /<br />
Registeradressen<br />
– Bausteinebene<br />
– Blockebene<br />
– Kartenebene<br />
• codierte Adressierung<br />
– jedes Codewort eines Felds<br />
zur Komponentenanwahl<br />
nutzbar<br />
– erfor<strong>der</strong>t Dekodierbausteine<br />
auf Karten<br />
Torsten Braun, IAM, Universität Bern: GTI, WS 00/01 407<br />
16MB-Speicherkarte:<br />
Adresse einer Speicherzelle<br />
31 0<br />
8 2 20 2<br />
Kartenanwahl<br />
Blockanwahl<br />
Wortadresse<br />
Byteadresse<br />
Interface-Karte:<br />
Adresse eines Interface-Registers<br />
31 0<br />
25 3 4<br />
Kartenanwahl<br />
Bausteinanwahl<br />
Registeradresse
Kartenadresse,<br />
z.B. 0x02<br />
=<br />
A31-A24<br />
SEL<br />
CE<br />
0<br />
1<br />
2<br />
3<br />
A23-A22<br />
Torsten Braun, IAM, Universität Bern: GTI, WS 00/01 408<br />
Adressdekodierung<br />
Block 0<br />
CS<br />
A21-A2<br />
Block 1<br />
CS<br />
Block 2<br />
CS<br />
Block 3<br />
CS<br />
CE: Chip Enable<br />
SEL: Select
Byte-, Halbwort-, Wortanwahl<br />
• Byte-Enable-Signale BE3-0 zur Adressierung einzelner Bytes<br />
• Auswertung <strong>der</strong> Adressbits A1-0<br />
• rechtsbündiges Speichern von Bytes o<strong>der</strong> Halbwörten in Registern erfor<strong>der</strong>t<br />
Verschiebelogik im Prozessor<br />
• im Beispiel: Big-Endian Byte-Or<strong>der</strong>ing<br />
Datenformat (SIZ1-0) Adresse A1-0<br />
Byte (01)<br />
Halbwort (10)<br />
Wort (00)<br />
00<br />
01<br />
10<br />
11<br />
00<br />
10<br />
00<br />
Torsten Braun, IAM, Universität Bern: GTI, WS 00/01 409<br />
Speicherwort/Datenbus
Torsten Braun, IAM, Universität Bern: GTI, WS 00/01 410<br />
Dynamische Busbreite<br />
• Am Datenbus angeschlossene Einheiten<br />
können Torbreite von 8, 16, 32 Bits haben<br />
• Adressierte Einheit teilt während Buszyklus<br />
Busbreite (bus width) mit<br />
– Steuersignale BW0, BW1<br />
• links- o<strong>der</strong> rechtsbündiger Anschluss <strong>der</strong><br />
8/16-Bit-Einheiten am Datenbus
Prozessorregister<br />
3 2 1 0<br />
Datenbus<br />
Verschiebelogik<br />
3<br />
2 1<br />
0<br />
Torsten Braun, IAM, Universität Bern: GTI, WS 00/01 411<br />
Dynamische Busbreite<br />
16-Bit-<br />
Speicher<br />
32-Bit-Transport zwischen<br />
Prozessorregister und linksbündig<br />
angeschlossenem 16-Bit-Speicher<br />
bei ungera<strong>der</strong> Speicheradresse<br />
3 B<br />
2<br />
0<br />
Datenbus<br />
3 HW<br />
1<br />
2 W<br />
1 W<br />
SIZ1 SIZ0 A2 A1 A0 BW1 BW0<br />
0 0 0 0 1 1 0<br />
1 1 0 1 0 1 0<br />
0 1 1 0 0 1 0<br />
2<br />
1
Datentransportsteuerung<br />
• Abläufe beim Durchführen des Datentransports<br />
(Buszyklus)<br />
– Adressieren <strong>der</strong> passiven Einheit (Slave)<br />
– Ankoppeln <strong>der</strong> adressierten Einheit an den Datenbus<br />
– Angabe <strong>der</strong> Transportrichtung<br />
– Bereitstellung <strong>der</strong> Adresse<br />
– Bereitstellung und Übernahme <strong>der</strong> Daten<br />
• Steuerung <strong>der</strong> Abläufe bei <strong>der</strong> aktiven Einheit (Master)<br />
• Slave mit Quittierungs- und Signalisierungsfunktionen<br />
• Synchronisation <strong>der</strong> Aktivitäten von Master und Slave<br />
– synchron (durch Bustakt)<br />
– asynchron (durch Steuersignale)<br />
Torsten Braun, IAM, Universität Bern: GTI, WS 00/01 412
BUSCLK<br />
CSTART<br />
(Master)<br />
READY<br />
(Slave)<br />
Torsten Braun, IAM, Universität Bern: GTI, WS 00/01 413<br />
Synchroner Bus<br />
Schreib-/Lesezyklus Schreib-/Lesezyklus<br />
ohne Wartezyklen mit 1 Wartezyklus<br />
Adresse<br />
gültig<br />
Datum<br />
gültig<br />
DatenAdres- Datum SlaveDatum<br />
Datenüberse<br />
gültig nicht gültig übernahmegültig<br />
(write) bereit(read)<br />
nahme
Signale beim asynchronen Bus<br />
• AS: Address Strobe<br />
– durch Master<br />
– zur Anzeige <strong>der</strong> Gültigkeit <strong>der</strong> Adresse<br />
• DS: Data Strobe<br />
– vom Master<br />
– zur Anzeige gültiger Daten beim Schreiben<br />
– zur Datenübernahme beim Lesen<br />
• DTACK: Data Transfer Acknowledge<br />
– vom Slave<br />
– zur Datenübernahme beim Schreiben<br />
– zur Anzeige gültiger Daten beim Lesen<br />
– Verzögern des Buszyklus<br />
Torsten Braun, IAM, Universität Bern: GTI, WS 00/01 414
CPUCLK<br />
AS<br />
DS<br />
DTACK<br />
Torsten Braun, IAM, Universität Bern: GTI, WS 00/01 415<br />
Asynchroner Bus<br />
Schreibzyklus Lesezyklus<br />
ohne Wartezyklenohne<br />
Wartezyklen<br />
Adresse<br />
gültig<br />
DatumDaten<br />
Adresse Datum<br />
gültig über gültig gültig<br />
nahme<br />
Lesezyklus<br />
mit 1 Wartezyklus<br />
Daten- AdresseSlave<br />
über gültig nicht<br />
nahme bereit<br />
Datum<br />
gültig<br />
Datenübernahme
Datentransport für 16MB-Speicherkarte<br />
Delay<br />
Kartenanwahllogik<br />
Torsten Braun, IAM, Universität Bern: GTI, WS 00/01 416<br />
SEL<br />
16 MB RAM<br />
Speicheransteuerlogik<br />
DTACK DS A31-24 AS A23-2 BE3-BE0 R/W D31-0
Master<br />
Slave<br />
Prozessortakt<br />
A31-2,BE3-0<br />
R/W<br />
AS<br />
DS<br />
DTACK<br />
D31-0<br />
Asynchroner Schreib- und Lesezyklus<br />
Torsten Braun, IAM, Universität Bern: GTI, WS 00/01 417<br />
Schreibzyklus Lesezyklus<br />
Datum bereit<br />
Datenübernahme<br />
Datenübernahme Datum bereit<br />
vom Master v. Slave
Synchroner Schreib- und Lesezyklus<br />
Bustakt<br />
A31-2,BE3-0<br />
R/W<br />
CSTART<br />
READY<br />
D31-0 v. Master<br />
Torsten Braun, IAM, Universität Bern: GTI, WS 00/01 418<br />
Schreibzyklus Lesezyklus<br />
v. Slave
Takt<br />
A31-4<br />
BE3-0<br />
A3-2<br />
R/W<br />
CSTART<br />
LAST<br />
READY<br />
BREADY<br />
D31-0<br />
Synchroner Blockbuszyklus<br />
Einzellesezyklus Blockbuszyklus als Lesezyklus<br />
Torsten Braun, IAM, Universität Bern: GTI, WS 00/01 419<br />
Datum Datum Datum Datum Datum
• statische RAMs<br />
– SRAMs<br />
– basieren auf Flipflops<br />
– teuer<br />
– schnell<br />
(geringere Zugriffszeit)<br />
– grösserer Platzbedarf<br />
– zum Aufbau von<br />
Cache-Speichern<br />
Torsten Braun, IAM, Universität Bern: GTI, WS 00/01 420<br />
RAMs<br />
• dynamische RAMs<br />
– DRAMs<br />
– basieren auf Kondensatoren<br />
– preiswert<br />
– langsamer<br />
(grössere Zugriffszeit wegen<br />
„Erholzeit“ (Auffrischen):<br />
2 Zugriffe / Zyklus)<br />
– kompakter<br />
– zum Aufbau von<br />
Hauptspeicher
CS<br />
WE<br />
A9-A0<br />
D in<br />
Schreibverstärker<br />
A19-A10<br />
Zeilenadresskodierer<br />
10<br />
00<br />
01<br />
Torsten Braun, IAM, Universität Bern: GTI, WS 00/01 421<br />
SRAM-Struktur<br />
1-Bit-<br />
Speicherzelle<br />
(Flipflop)<br />
Spaltenadressdekodierer<br />
Speichermatrix<br />
1024x1024 Bits<br />
Leseverstärker<br />
D out
Adresse<br />
CS<br />
WE<br />
D in<br />
D out<br />
Schreib- und Lesezyklus bei SRAMs<br />
Torsten Braun, IAM, Universität Bern: GTI, WS 00/01 422<br />
Schreibzyklus Lesezyklus<br />
gültige Daten<br />
Zugriffszeiten: 5-80 ns<br />
gültige Daten
WE<br />
CAS<br />
RAS<br />
A10-A0/<br />
A21-11<br />
Refresh-<br />
Steuerung<br />
Refreshzähler<br />
D in<br />
Torsten Braun, IAM, Universität Bern: GTI, WS 00/01 423<br />
DRAM-Struktur<br />
Z<br />
A<br />
R<br />
S<br />
A<br />
R<br />
WE-<br />
Steuerung<br />
Zeilenadresskodierer<br />
D in<br />
Puffer<br />
1-Bit-<br />
Speicherzelle<br />
(Kondensator)<br />
Schreib-/Lese-Verstärker<br />
Spaltenadressdekodierer<br />
Speichermatrix<br />
2048x2048 Bits<br />
D out<br />
Puffer<br />
D out
C Leitung<br />
D i<br />
1-Bit-DRAM-Speicherzelle<br />
T<br />
C sp<br />
Zeilenanwahlleitung<br />
Torsten Braun, IAM, Universität Bern: GTI, WS 00/01 424<br />
• Vorteil:<br />
– Platzbedarf (4:1)<br />
• Nachteil:<br />
– Entladen des Kondensators<br />
erfor<strong>der</strong>t Auffrischen<br />
• Auslesen <strong>der</strong> Bits einer Zeile<br />
in Flipflops <strong>der</strong> Lese-<br />
/Schreibverstärker mit anschliessendemZurückschreiben<br />
(doppelte Zykluszeit)<br />
• implizites Auffrischen beim<br />
Lesen und Schreiben<br />
• minimale Refresh-Abstände:<br />
2-128 ms<br />
• explizite Refresh-Zyklen
Adresse<br />
RAS<br />
CAS<br />
WE<br />
D in<br />
D out<br />
Schreib- und Lesezyklus bei DRAMs<br />
Torsten Braun, IAM, Universität Bern: GTI, WS 00/01 425<br />
Schreibzyklus Lesezyklus<br />
Reihe Spalte Reihe Spalte<br />
gültige Daten<br />
gültige Daten<br />
typische Zeiten: Zugriffszeiten: 60 ns, Zykluszeit: 110 ns
0<br />
1<br />
1M-1<br />
Aufbau von Speicherbänken<br />
0<br />
1<br />
1M-1<br />
Bitspeicher Bytespeicher<br />
Torsten Braun, IAM, Universität Bern: GTI, WS 00/01 426<br />
31 19 0<br />
12 20<br />
Adresse
0<br />
4<br />
4M-4<br />
4M<br />
8M-4<br />
Aufbau von Speicherbänken<br />
1<br />
5<br />
4M-3<br />
4M+1<br />
8M-3<br />
Torsten Braun, IAM, Universität Bern: GTI, WS 00/01 427<br />
Adresse<br />
2<br />
6<br />
4M-2<br />
4M+2<br />
8M-2<br />
3<br />
7<br />
4M-1<br />
4M+3<br />
8M-1<br />
31 21 0<br />
9 1 20<br />
2
Verschränken von Speicherbänken<br />
• Aufeinan<strong>der</strong>folgende Speicherzugriffe im Abstand <strong>der</strong><br />
Zykluszeit <strong>der</strong> Speicherbausteine<br />
• Abwarten <strong>der</strong> Erholzeit (Rückschreiben) bei DRAMs führt zu<br />
Wartezyklen<br />
• Vermeiden des Problems durch Unterteilen des Speichers in<br />
eigenständige Bänke<br />
• Aufeinan<strong>der</strong>folgende Zugriffe verursachen Bankwechsel.<br />
• Bank Interleaving<br />
A1 D1 A2 D2<br />
1 Speicherbank<br />
Torsten Braun, IAM, Universität Bern: GTI, WS 00/01 428<br />
A1 D1 A3 D3<br />
A3 A2 D2 A4 D4<br />
2 Speicherbänke
DRAM-Controller<br />
READY<br />
Steuerung<br />
Verschränken von Speicherbänken<br />
0<br />
1<br />
2<br />
3<br />
0<br />
16<br />
32<br />
SEL1<br />
A31-A24<br />
NARQ<br />
A3-A2<br />
Bank 0<br />
Ansteuerlogik<br />
Torsten Braun, IAM, Universität Bern: GTI, WS 00/01 429<br />
4<br />
20<br />
36<br />
SEL2<br />
A23-A4<br />
BE3-BE0<br />
Bank 1<br />
Ansteuerlogik<br />
8<br />
24<br />
40<br />
SEL3<br />
Bank 2<br />
Ansteuerlogik<br />
12<br />
28<br />
44<br />
SEL4<br />
Bank 3<br />
Ansteuerlogik
Überlappen von Buszyklen<br />
• Wartezeiten falls<br />
Zugriffszeit ><br />
Buszykluszeit<br />
→ Überlappen <strong>der</strong><br />
Buszyklen<br />
• Adresse des nächsten<br />
Buszyklus wird während<br />
des aktuellen Buszyklus<br />
erzeugt<br />
• Voraussetzung:<br />
Aufteilung des<br />
Speichers in Bänke<br />
Torsten Braun, IAM, Universität Bern: GTI, WS 00/01 430<br />
A1 D1 A2 D2<br />
A1 D1<br />
A2 D2<br />
A3 D3<br />
A4 D4<br />
A5 D5<br />
A1 A2 D1 A3 D2 A4 D3 A5 D4<br />
D5
Torsten Braun, IAM, Universität Bern: GTI, WS 00/01 431<br />
Speichermodule<br />
• SIMMs<br />
– single in-line memory modules<br />
– Datenanschlussbreite 8-32 Bits<br />
– einseitige Benutzung<br />
– Beispiel: 8-Bit-SIMM<br />
• Zugriffsorganisation: 4M . 1 Byte<br />
• 1 Modul mit 8 Datenbusanschlüssen (30 Kontakte):<br />
8 DRAM-Bausteine mit je 4M . 1 Bit<br />
• DIMMs<br />
– double in-line memory modules<br />
– Datenanschlussbreite 64 Bits, 168 Kontakte<br />
– zweiseitige Benutzung
Auswerfer<br />
Torsten Braun, IAM, Universität Bern: GTI, WS 00/01 432<br />
SIMMs und DIMMs<br />
Fixierungen
• I/O-Unit<br />
• Schnittstelle zwischen<br />
Mikroprozessorsystem<br />
(Systembus) und E/A-<br />
Geräten<br />
• parallele / serielle<br />
Datenübertragung<br />
• Ein-/Ausgabe von Daten und<br />
Programmen<br />
• ggf. mehrere parallele I/O-<br />
Ports<br />
Torsten Braun, IAM, Universität Bern: GTI, WS 00/01 433<br />
Ein-/Ausgabe-Einheit<br />
• elementarer Baustein:<br />
Interface-Baustein<br />
– mindestens: anwählbares<br />
Datenregister zur<br />
Zwischenspeicherung<br />
– Steuerfunktionen zur<br />
Synchronisation <strong>der</strong><br />
Datenübertragung<br />
– Daten-, Steuer-,<br />
Statusregister<br />
• Optionen: E/A-Prozessoren,<br />
DMA-Controller<br />
• Steuerung von Ein- und<br />
Ausgabe sowie des I/O-Bus<br />
erfolgt nicht notwendigerweise<br />
durch die CPU, son<strong>der</strong>n ist<br />
durch eigene Prozessoren <strong>der</strong><br />
I/O-Einheiten möglich
Torsten Braun, IAM, Universität Bern: GTI, WS 00/01 434<br />
Ein-/Ausgabe-Geräte<br />
• Bildschirme<br />
• Tastatur<br />
• Bildschirm + Tastatur = Terminal<br />
– alphanumerisch<br />
– grafisch<br />
• Maus<br />
• Grafik-Tablett<br />
• Lochkarten-Leser und -Stanzer<br />
• Drucker, Plotter
Steuerung <strong>der</strong> Ein-/Ausgabe<br />
• Anfor<strong>der</strong>ungen<br />
– CPU kann beschäftigt sein, wenn I/O-Gerät Daten übertragen will<br />
– I/O-Geräte können wesentlich langsamer als CPU sein<br />
→ keine Blockierung <strong>der</strong> CPU durch I/O !<br />
• E/A-Einheit (I/O-Controller)<br />
– Steuerung von mehreren Endgeräten gleichzeitig<br />
– Zwischenspeicherung von Daten in Puffer<br />
Endgerät Puffer<br />
Torsten Braun, IAM, Universität Bern: GTI, WS 00/01 435<br />
E/A-Einheit<br />
Statuswort<br />
Steuersignale<br />
Ein-/Ausgabe-<br />
Daten
Torsten Braun, IAM, Universität Bern: GTI, WS 00/01 436<br />
Ein-/Ausgabe-Formen<br />
• Programmierte Ein-/Ausgabe<br />
– CPU prüft periodisch Statuswort und führt<br />
entsprechende Aktionen (z.B. Lesen o<strong>der</strong><br />
Schreiben aus/in Puffer) durch.<br />
• Interrupts<br />
– E/A-Einheit erzeugt Interrupt-Signal beim<br />
Eintreten eines bestimmten Ereignis (z.B.<br />
Sendebereitschaft o<strong>der</strong> empfangene Daten)<br />
– Programmunterbrechung und Verarbeitung des<br />
Ereignis
Ausblick: Rechnerarchitektur<br />
• Vorlesung im Sommersemester<br />
• Inhalt:<br />
– Maschinenbefehle und Adressierungsarten<br />
– Maschinennahe Programmierung<br />
– Busse und Systemstrukturen<br />
– Interrupts und Direct Memory Access<br />
– Speicherorganisation<br />
– Ein-/Ausgabe<br />
– Betriebssysteme<br />
– Rechnerkommunikation<br />
Torsten Braun, IAM, Universität Bern: GTI, WS 00/01 437