28.05.2013 Aufrufe

Grundlagen der Technischen Informatik

Grundlagen der Technischen Informatik

Grundlagen der Technischen Informatik

MEHR ANZEIGEN
WENIGER ANZEIGEN

Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.

YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.

<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

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!