IV.2 Rechnerstrukturen
IV.2 Rechnerstrukturen
IV.2 Rechnerstrukturen
Was ist ein Rechner ?
Processor
Cache
Memory - I/O Bus
Main Memory
I/O Controller
Disk Disk
I/O Controller
I/O Controller Graphics Network
interrupts
Register-Transfer-Ebene Layout Ebene
Anwendungsebene Transistor-Ebene
Rechner = Hierarchie von virtuellen Maschinen
High Level Language Program
Assembly Language Program
Machine Language Program
Control Signal Spec Compiler
Assembler
Machine Interpretation
Logische Sicht Logische Sicht I/O system
Instr. Set Proc.
Compiler
Operating System Application
Digital Design Circuit Design
Instruction Set Architecture
Realit Realitäätt
Hierarchie virtueller Rechner: Illustration
High Level Language Program
Assembly Language Program
Machine Language Program
Control Signal Spec Compiler
Assembler
Machine Interpretation
temp = v[k];
v[k] = v[k+1];
v[k+1] = temp;
lw $15, 0($2) lw $16, 4($2) sw $16, 0($2) sw $15, 4($2)
1001 0000 0000 0000 0010 0000 1111 1001 0000 0100 0000 0010 0001 0000 0001 0000 0000 0000 0010 0001 0000 0001 0000 0100 0000 0010 0000 1111
... Interpretation auf der Hardware
Im Mittelpunkt steht die Maschinensprache
..., die unterste Ebene, auf der der Benutzer mit dem Rechner reden kann !
instruction set software
hardware
Virtueller Rechner
z Jede Ebene (mit Ausnahme der untersten) ist ein "virtueller Rechner" Mi, der durch eine Sprache Li definiert ist.
z Programme der Sprache Li+1werden
~ in Programme der Sprache Lj (j≤i) übersetztübersetzt oder
~ durch ein Programm der Sprache Lj (j≤i) interpretiert.interpretiert
z Die virtuelle Maschine Mi gaukelt dem Benutzer vor, seine in Li
geschriebenen Programme würden direkt auf Hardware ausgeführt.
IV.2.1 Prinzipieller Aufbau eines Rechners
Bestandteile:
z Prozessor (CPU) z Hauptspeicher z Externe Speicher
z Eingabegeräte (Tastatur, Maus) z Ausgabegeräte (Bildschirm,
Drucker, Plotter) z Busse
Processor
Cache
Memory - I/O Bus
Main Memory
I/O Controller
Disk Disk
I/O Controller
I/O Controller Graphics Network
interrupts
John von Neumann (1903 - 1957)
Der Aufbau der modernen Rechner geht auf den Mathematiker John von Neumann zurück.
Das von Neumann Prinzip beruht auf folgenden 5 Punkten
• voll-elektronischer Rechner
• binäre Darstellung der Daten
• Benutzung einer arithmetischen Einheit
• Benutzung eines Steuerwerkes
• Interner Daten- und Programmspeicher
1903 geboren in Budapest Studium in Budapest und Zürich
1933-1957 am Institute for Advanced Studies, Princeton 1945 mitverantwortlich für den Bau der ENIAC
Der Arbeitsspeicher
z ... erlaubt Daten (Programme +
"übliche" Daten) abzuspeichern z ... besteht aus n Speicherzellen
(n ≤ 2Adressbusbreite) z Eine SpeicherzelleSpeicherzelle
~ speichert eine Information
bestehend aus k Bit. Der Wert k wird Wortbreite
Wortbreite des Speichersdes Speichers genannt (k=8,16,32,64)
~ wird über eine Adresse (≈
Hausnummer) aus dem Bereich [0..n-1] angesprochen
~ ist kleinste adressierbare Einheit des Speichers
Processor
Cache
Memory - I/O Bus
Main Memory
I/O Controller
Disk Disk
I/O Controller
I/O Controller Graphics Network
interrupts
Kerngr
Kerngröössenssen
• Anzahl der Speicherzellen
• Wortbreite des Speichers
• Zugriffszeit
Der Prozessor
besteht in der einfachsten Form aus zz SteuerwerkSteuerwerk (Control Unit)
~ holt durch Setzen geeigneter Signale den nächsten
Maschinenbefehl aus dem Hauptspeicher in ein Register
~ analysiert durch Setzen geeigneter Signale (Statusleitungen) das gelesene Wort und
~ führt durch Setzen geeigneter Signale (Steuerleitungen) den gelesenen Maschinenbefehl aus
zz RecheneinheitRecheneinheit (Arithmetic Logic Unit - ALU, Datenpfad)
~ führt die Teilschritte (Vergleiche, Addition, ...) gemäß der gesetzten Signale aus
zz RegisterbankRegisterbank (Registerfile)
~ Speicherelemente, sogenannte RegisterRegister, auf die das Rechenwerk und das Steuerwerk parallel sehr schnell zugreifen kann.
Processor
Cache
Memory - I/O Bus
Main Memory
I/O Controller
Disk Disk
I/O Controller
I/O Controller Graphics Network
interrupts
Prinzipielle Arbeitsweise eines Prozessors
Fetch
Fetch--DecodeDecode--ExcecuteExcecute--ZyklusZyklus Fetch
Fetch
hole den nächsten Maschinensprachebefehl aus dem Arbeitsspeicher und speichere ihn im
Befehlsregister IR ab. Die benötigte Adresse steht im Befehlszähler PC.
Decode Decode
analysiere den Befehl und lade die benötigten Daten.
Execute Execute
Führe den Befehl aus und speichere das Ergebnis ab.
IV.2.2 Charakteristika von Prozessoren
zz Interne DatendarstellungInterne Datendarstellung Dazu gehören
~Zahl der Bits, die zur Darstellung von Zahlen benutzt werden
~implementierte Zahlendarstellung
~Breite der Register (heute 32 oder 64 bit)
~Adressierung von Bytes innerhalb der Register (Endian Typ) zz BefehlssatzarchitekturBefehlssatzarchitektur
~Zahl und Art der Befehle
~Adressierungsarten (s. IV.2.3)
~Betriebsmodi
zz FunktionseinheitenFunktionseinheiten
~Zahl und Art von Funktionseinheiten zur Ausführung von Befehlen z Parallelitätsgrad
~Maximale Zahl gleichzeitig ausführbarer Befehle.
z Taktrate
~Zahl der Zustandsübergänge pro Sekunde (i.a. ≠ Zahl der bearbeiteten Befehle pro Sekunde!) heute > 3 GHz
CISC oder RISC?
Man unterscheidet heute zwischen sogenannten
C C omplete I I nstruction S S et C C omputer (CISC)
R R educed I I nstruction S S et C C omputer (RISC)
Sehr großer Befehlssatz, viele Befehle und Adressierungsarten (s.
IV.2.3). Dadurch recht kurze Programme aber sehr unterschiedliche Bearbeitungszeit pro Befehl und niedriger Durchsatz von Befehlen.
Magerer Befehlssatz, nur das Notwendigste. Sehr geringe
Bearbeitungszeit pro Befehl und hoher Durchsatz von Befehlen, aber längere Programme.
Beispiele: 80x86, VAX, IBM370, 68xxx,...
Beispiele: SPARC, HPPA, Alpha, PowerPC,...
IV.2.3 Maschinenbefehle und Maschinensprache
Wir wollen nun versuchen, nach und nach den Befehlssatz IS einer einfachen Maschine, und damit deren Sprache aus Notwendigkeiten heraus zu entwickeln.
Beobachtung 1: Arithmetik wird stets über 2 Operanden ausgeführt und liefert ein Resultat. Es scheint natürlich, den Befehlen gleichwertig 3 Operanden zu geben, einen für das Resultat und 2 für die
Operanden. Für ganze Zahlen wäre dies
ADD $d,$s,$t MUL $d,$s,$t SUB $d,$s,$t DIV $d,$s,$t
Wenn man unterschiedliche Zahlen und Zahlenformate hat, braucht man diese Befehle auch für jedes Zahlenformat, etwa
ADDU $d,$s,$t ... für unsigned Numbers oder
ADDD $d,$s,$t ... für doppelt genaue Gleitkommazahlen
Wirkung der Befehle
Wir definieren die Wirkung der Befehle, indem wir uns die Register als ein Array
REG[] mit dem Bereich 0, #Register-1, den Speicher als ein Array
MEM[] mit dem Bereich 0, #Speicherzellen -1
und einen Programmzähler als Variable pc vorstellen.
Ein Programm ist stets eine Folge Prog[] von 0 bis Programmlänge -1
Prog[pc] Wirkung
ADD $d,$s,$t REG[d]=REG[s]+REG[t], pc=pc+1 MUL $d,$s,St REG[d]=REG[s]+REG[t], pc=pc+1 SUB $d,$s,$t REG[d]=REG[s]-REG[t], pc=pc+1 DIV $d,$s,$t REG[d]=REG[s]/REG[t], pc=pc+1
0 1
2
2 x a x a
a + +
Beispiel:
Programm
a
0x
a
1a
2. . .
Registerfile
REG[0]
REG[1]
REG[2]
REG[3]
REG[4]
MUL $4,$0,$3;
ADD $4,$4,$2;
MUL $4,$4,$0;
ADD $4,$4,$1;
*
a2*x
0 1
2
2 x a x a
a + +
Ablauf für
Programm
a
0x
a
1a
2a2*x
+
a2*x + a1
. . .
Registerfile
REG[0]
REG[1]
REG[2]
REG[3]
REG[4]
MUL $4,$0,$3;
ADD $4,$4,$2;
MUL $4,$4,$0;
ADD $4,$4,$1;
0 1
2
2 x a x a
a + +
Ablauf für
Programm
a
0x
a
1a
2a2*x + a1
*
(a2*x + a1)*x
. . .
Registerfile
REG[0]
REG[1]
REG[2]
REG[3]
REG[4]
MUL $4,$0,$3;
ADD $4,$4,$2;
MUL $4,$4,$0;
ADD $4,$4,$1;
0 1
2
2 x a x a
a + +
Ablauf für
Programm
a
0x
a
1a
2a2*x2+ a1x
+
a2*x2 + a1x + a0
. . .
Registerfile
REG[0]
REG[1]
REG[2]
REG[3]
REG[4]
MUL $4,$0,$3;
ADD $4,$4,$2;
MUL $4,$4,$0;
ADD $4,$4,$1;
Verzweigungen und Sprünge
Wir können nun zwar rechnen, das war‘s aber auch!:
Aufgabe:
Aufgabe: Schreibe ein Programm, das in einem beliebigen
Zustand der Register REG[0] = 5 setzt, wenn REG[1] kleiner ist als REG[2], sonst REG[0] = -5.
Dieses Programm existiert nicht, weil wir keine Fallunterscheidung machen können. Befehle werden stets nacheinander abgearbeitet.
Auf Benutzung eines Programmzählers hätte man bisher auch verzichten können und Programme von
Prog[0] bis Prog[Programmlänge -1]
einfach der Reihe nach abarbeiten können.
Wie kann man die Reihenfolge der Abarbeitung von Befehlen beeinflussen?
Verzweigungen und Sprünge ff
Wir führen Befehle zur eigentlichen Kontrolle des Programmablaufs ein:
Verzweigungen (Branches) und Sprünge (Jumps).
Prog[pc] Wirkung
JMP t pc=pc+t+1
BEQZ $s,t pc=pc+1, falls REG[s] != 0 pc=pc+t+1, falls REG[s] == 0 BNEQZ $s,t pc=pc+1, falls REG[s] == 0 pc=pc+t+1, falls REG[s] != 0
Set Condition Befehle
Man erkennt, dass diese Verzweigungsbefehle nur ausreichen, um = oder ≠ zu entscheiden, und danach zu verzweigen. Um auch andere Bedingungen prüfen zu können, erweitern wir die WüRC0 noch um Vergleichsbefehle SXX $i,$j,$k (Set Condition XX):
Prog[pc] Wirkung
SLT $d,$s,$t REG[d]=(REG[s]<REG[t]), pc=pc+1 SLE $d,$s,St REG[d]=(REG[s]<=REG[t]), pc=pc+1 SEQ $d,$s,$t REG[d]=(REG[s]==REG[t]), pc=pc+1 SGE $d,$s,$t REG[d]=(REG[s]>=REG[t]), pc=pc+1 SGT $d,$s,$t REG[d]=(REG[s]>REG[t]), pc=pc+1
Load/Store Befehle
Bisher können wir mit den Befehlen nur Register ansprechen, aber keine Plätze im Hauptspeicher. Dies ist bei RISC Prozessoren in der Tat auch so. Sie sehen für die Kommunikation mit dem Speicher
Transportbefehle (LOAD,STORE) vor:
Prog[pc] Wirkung
LD $d,l($s) REG[d]=MEM[l+REG[s]], pc=pc+1 ST $s,l($d) MEM[l+REG[d]]= REG[s], pc=pc+1
Man erkennt bei diesen Befehlen noch eine weitere Besonderheit:
die Adresse des Quell (Load) bzw. Ziel (Store) Operanden wird indirekt, durch den Inhalt eines Registers plus ein Displacement.
Man spricht hier auch von indirekter Adressierung im Gegensatz zur bisher benutzten direkten Adressierung.
CISC Maschinen sehen indirekte Adressierung bei jedem Operanden vor, bei dem es Sinn macht (auch bei Arithmetik…)
Adressierungsarten
Neben der indirekten Adressierung kann es auch Sinn machen,
unmittelbar im Befehl den Wert des Operanden anzugeben. Dies findet man bei RISC Maschinen meist für den zweiten Quelloperanden. Bei CISC Maschinen für jeden Operanden bei dem es Sinn macht:
Prog[pc] Wirkung
ADDI $d,$s,k REG[d]=REG[s]+k, pc=pc+1 SUBI $d,$s,k REG[d]=REG[s]-k, pc=pc+1
Man spricht hier auch von unmittelbarer Adressierung oder immediate Adressierung.
Indirekte Adressierung braucht man unbedingt, wenn die Adressen der anzusprechenden Speicherzellen nicht zum Zeitpunkt der Übersetzung bekannt sind oder sogar von der Eingabe abhängen.
Beispiel:
Wir illustrieren, wie man ein schon bekanntes Programmstück in Maschinensprache umsetzen könnte:
while (a>0) { int t = a;
a = b - a;
b = t;
}
….
Bindungen Bindungen::
a an MEM[REG[2]+4]
b an MEM[REG[2]+8]
t an REG[3]
LD $4,4($2) -- Lade a
SGTI $5,$4,0 -- REG[5] = (a>0)?
BEQZ $5,
ADDI $3,$4,0 -- initialisiere t LD $5,8($2) -- Lade b
SUB $5,$5,$4
ST $5,4($2) -- Sichere a ST $3,8($2) -- Sichere b
6
JMP -9 -- Rücksprung
Weitere Befehle
Wir haben noch nicht alle Befehlsarten behandelt, und wollen es dazu auch hier bei einer kurzen Erwähnung belassen. Man findet meist noch Befehle zu folgenden Zwecken:
¾ Unterstützung von Unterprogrammen (Funktionen)
~ Aufruf mit retten der Rückkehradresse (JAL $d,j)
~ Rücksprung an die aufrufende Stelle (RET $s)
¾ Behandlung von Unterbrechungen (ENI, DEI)
¾ Ändern des Betriebsmodus
¾ Aufruf von Systemroutinen (TRAP j)
IV.2.4 Befehlsverarbeitung
Reale Prozessoren sind sehr komplexe Schaltwerke (s. IV.2.5) mit mehr als 107 Komponenten, die die Befehle mit hohem Durchsatz gemäß dem Ablauf des Programmes verarbeiten. Um hohen
Durchsatz zu erhalten, werden mehrere Befehle parallel verarbeitet:
• mehrere Befehle in jeder Bearbeitungsphase (fetch, decode execute), Superscalare Prozessoren
• in jeder Bearbeitungsphase ein anderer Befehl, Pipelining, Fließbandverarbeitung
Diese Strukturen sind zu komplex, um in dieser Vorlesung deren Arbeitsweise und die Probleme, die dabei entstehen erklären zu können. Um aber eine Vorstellung davon zu gewinnen, wie man Befehle durch Schaltwerke bearbeiten kann, wollen wir ein sehr einfaches Beispiel einer Befehlsverarbeitung anschauen:
Beispiel: Eine 1- Zyklus Maschine
P C
IMEM 1
+
A L U
!=0
REG ra1 ra2 wa
wp
rp1
rp2
Sign
ext. DMEM
Kontrolle Addierer
Multiplexer Steuerleitungen der Übersicht
wegen nicht eingezeichnet
Erläuterungen
Wir haben hier nur die wichtigsten Komponenten und Leitungen eingezeichnet. Steuerleitungen haben wir der Übersicht wegen
weggelassen. Sie steuern im wesentlichen Multiplexerbausteine, die als „Signalweichen“ dienen (s. IV.2.5):
0 1
a b
s
y
In Java: y = (s)? b: a;
:= a, wenn s = 0 b, wenn s = 1 Datenleitungen
Steuerleitung
Bearbeitung eines Arithmetikbefehls
P C
IMEM 1
+
A L U
!=0
REG ra1 ra2 wa
wp
rp1
rp2
Sign
ext. DMEM
Kontrolle
Bearbeitung eines Verzweigungsbefehls
P C
IMEM 1
+
A L U
!=0
REG ra1 ra2 wa
wp
rp1
rp2
Sign
ext. DMEM
Kontrolle
Bearbeitung eines STORE-Befehls
P C
IMEM 1
+
A L U
!=0
REG ra1 ra2 wa
wp
rp1
rp2
Sign
ext. DMEM
Kontrolle
Bearbeitung eines LOAD-Befehls
P C
IMEM 1
+
A L U
!=0
REG ra1 ra2 wa
wp
rp1
rp2
Sign
ext. DMEM
Kontrolle
Bearbeitung eines Sprunges
P C
IMEM 1
+
A L U
!=0
REG ra1 ra2 wa
wp
rp1
rp2
Sign
ext. DMEM
Kontrolle
IV.2.5 Schaltwerke
Bei modernen MOS MOS (Metal Oxide Semiconductor) Technologien spielen Transistoren als spannungs- gesteuerte Schalter eine herausragende Rolle bei der Entwicklung von Elementarbausteinen.
Das Spiel ist, naiv gesehen, recht einfach:
Interpretiere Spannungen U(x) zwischen x und dem Bezugspol V
SSals Werte aus B
• U(x) ~ V
SS(=0V) interpretiere als 0
• U(x) ~ V
DDinterpretiere als 1
Dabei liegt an V
SSdie Spannung von 0V zu sich selbst,
am Versorgungspol V
DDje nach Technologie 1..5V.
MOS FETs als Schalter
Feldeffekttransistoren
Feldeffekttransistoren (FETs) werden nun so
hergestellt, daß sie als spannungsgesteuerte Schalter gegen V
SSbzw. V
DDarbeiten:
Wir unterscheiden zwei Typen, deren Schalterverhalten wir betrachten wollen:
n- n -Kanal Transistor: Kanal Transistor: Verhalten Verhalten
U(g)~0
Schaltbild
U(g)~1d drain gate g
s source
V
SSp- p -Kanal Transistor Kanal Transistor
Verhalten
U(g)~0 U(g)~1
Schaltbild
s source gate g
d drain V
DDn-Kanal und p-Kanal Transistor verhalten sich als Schalter
komplementär zueinander.
Der CMOS Inverter
Wir können nun auf Basis solcher Schalter leicht
Funktionen auf {0,1} implementieren. Die wohl einfachste nichttriviale Funktion ist die Negation. Sie wird durch
folgende Schaltung, den CMOS Inverter (complementary) realisiert:
x y
Verhalten
U(x)~1 U(x)~0
Gatespannungen sind 0
n-Kanal sperrt, p-Kanal leitet -> y verbunden mit VDD also 1
Gatespannungen sind 1
p-Kanal sperrt, n-Kanal leitet -> y verbunden mit VSS also 0
CMOS Inverter ff
Diese einfache Schaltung berechnet also die Funktion:
0 i(1)
1 i(0)
} 1 , 0 { }
1 , 0 { : i
=
= und
mit
a
D.h. die Negation Negation, faßt man 0,1 als falsch, wahr auf.
Wir benutzen fortan als Symbol für diese Schaltung, das
Schaltzeichen:
Einfache Verknüpfungen
Beim Inverter berechneten wir die Inversion durch Schalten einer leitenden Verbindung zwischen Ausgang und V
DDbzw. V
SS.Dies muß stets komplementär, d.h. unter gegenseitigem Ausschluß geschehen! (Kurzschluß) Betrachte nun folgende Schaltung:
(n-Kanal Serienschaltung)
Offensichtlich entsteht eine Verbindung mit V
SSdann und nur dann, wenn beide Schalter leitend sind, d.h. wenn
a=1 und und b=1
y b
a
≈
Einfache Verknüpfungen -- ff
Betrachten wir nun eine Parallelschaltung zweier n-Kanal Transistoren gegen V
SS:≈
y a b
Offensichtlich entsteht eine Verbindung mit V
SSdann und nur dann, wenn mindestens einer der beiden Schalter
leitend ist, d.h. wenn a=1 oder oder b=1
Interpretieren wir nun x=1 einfach als x bzw. „x ist wahr“
und x=0 einfach als nicht x bzw. „x ist falsch“, dann gilt:
NAND und NOR Verknüpfung ff
Parallelschaltung gegen V
SS: nicht y a oder b nicht y a oder b ⇔ Serienschaltung gegen V
SS: nicht y a und b nicht y a und b ⇔
Analog erhalten wir für p-Kanal Transistor Schaltungen gegen V
DD:y b
a
y b
a
y=1 a=0 ⇔ und und b=0
y=1 a=0 oder ⇔ oder b=0
Parallelschaltung: y nicht(a und b) y nicht(a und b) ⇔
Serienschaltung: y nicht (a oder b) y nicht (a oder b) ⇔
EInfache Verknüpfungen ff
y b a
Demnach liefert folgende Schaltung:
y nicht(a und b) y nicht(a und b) ⇔
nicht y a und b nicht y a und b ⇔
(p-Kanal Parallelschaltung)
(n-Kanal Serienschaltung) b
a 0 0
1 1 0
1 1 1
0 y b a
Die leitenden Verbindungen bestehen unter gegenseitigem Ausschluss.
Die Verschaltungen im n-Kanal, p-
Kanal Teil sind dual zueinander
(Serien <-> Parallel)
NAND und NOR Verknüpfung
Die Schaltung berechnet also die Funktion nand nand
Analog überlegt man sich, daß die Schaltung
nand b a
0 1 0 1 1 1 1 0
} 1 , 0 { }
1 , 0 { } 1 , 0 { :
nand × a
Mit nand(a,b) = nicht (a und b) Schaltsymbol
y b a
die Funktion nor nor berechnet mit nor(a,b) = nicht (a oder b)
nor b a
0 1 0 1 0 1 0 0
Schaltsymbol
&
(DIN)
(DIN)
≥1
Realisierung eines Multiplexers
Auf der Basis dieser Bausteine, auch Gatter (gates) genannt, kann man alle Funktionen von {0,1}n → {0,1}m realisieren.
Wir demonstrieren dies hier nur an einem Beispiel, das wir schon kennen:
0 1
a b
s
y
y = 1, wenn (s = 0 und a = 1) oder (s = 1 und b = 1)
in Formeln
y = (!s)&a | s&b
Mit den deMorgan Regeln gilt Regeln von deMorgan
!(a & b) = !a | !b;
!(a | b) = !a & !b
y = !!( (!s)&a | s&b)
= !( !((!s)&a) & !(s&b) )
Realisierung eines Multiplexers
0 1
a b
s
y
y = !( !((!s)&a) & !(s&b) )
NAND NAND
NAND
s !s
b !(s&b)
a
!((!s)&a)
!( !((!s)&a) & !(s&b) )
Bistabile Schaltungen
Wenn man über einfache Logikgatter verfügt, kann man auch Speicherglieder bauen, und darauf aufbauend
schliesslich ganze Schaltwerke Idee:
Idee: konstruiere bistabile Schaltungen aus Gattern Beispiel:
Beispiel: Analysiere folgende Schaltung Es ist:
x = nicht (b und y) y = nicht (a und x) a
b
x
y
Also y = nicht (a und nicht(b und y))
Bistabile Schaltungen
Falldiskussion:
Falldiskussion:
a b
x
y
y = nicht (a und nicht(b und y))
h h ä ä lt y lt y a=b=1: y = nicht (1 und nicht(1 und y)) y = nicht (1 und nicht(y)) y = nicht (nicht(y)) = y
y = nicht (0 und nicht(0 und y)) y = nicht (0)
a=0, b=1: y = nicht (0 und nicht(1 und y)) y = nicht (0) = 1 setzen setzen r r ü ü cksetzen cksetzen a=1, b=0: y = nicht (1 und nicht(0)) y = nicht (1 und 1) y = nicht (1) y = nicht (1 und nicht(0 und y)) = 0
a=b=0: = 1 unbenutzt unbenutzt
Basis R/S FlipFlop
Wir nennen diese Schaltung auch Basis R/S Basis R/S FlipFlop, weil FlipFlop sie einen Haltezustand (a=b=1) hat, in dem sie jeden Wert y über die Rückkopplung halten kann, sowie eine Rücksetz ((a,b)=(1,0)) und eine Setzkombination ((a,b)=(0,1))
allerdings noch keine Taktkontrolle hat.
Die Zustandsänderung wird durch Legen eines der Eingänge auf den Wert 0 erreicht. Da der Wert 0 die Änderung bewirkt, nennt man solche Eingänge auch low active und überstreicht ihren Namen bzw. hängt ein Z an: RZ oder R
Das Überstreichen ist als Kurzschreibweise für die Negation zu sehen. Die Aktivität die mit dem Eingangsnamen
verbunden wird, findet statt, wenn der Ausdruck wahr ist, d.h.
Rücksetzen findet statt wenn RZ=Nicht(R) wahr, also R=0
ist.
Basis R/S FlipFlop ff
Damit ergibt sich folgende Benennung der Anschlüsse:
SZ oder RZ oder
QZ oder Q
R S
Q
Folgende Tabelle gibt das Verhalten wieder: Sie gibt für die benutzten Eingangskombinationen (RZ,SZ)<>(0,0) den
Folgezustand Q‘ von Q an:
RZ SZ Q QZ Q’ QZ’
1 1 Q QZ Q QZ
0 1 Q QZ 0 1
1 0 Q QZ 1 0
R/S FlipFlop ff
Aufgabe:
Aufgabe: Steuere das Basis RS FlipFlop durch einen Taktzustand
L L ö ö sung: sung: Wir verknüpfen einfach den Takt mit den Kontrolleitungen RZ und SZ:
S clk
R
R Q
Q S
Analyse:
Analyse: Für clk=0 werden SZ, RZ auf nicht(0)=1
gezwungen
R/S FlipFlop ff
S
R Q
Q
S clk
R
1 1 0
1
Schaltsymbol:
S
Q clk
R
Analyse:
Analyse: Für clk=0 werden SZ, RZ auf nicht(0)=1 gezwungen. ⇒ Haltezustand
Für clk= 1 werden SZ(RZ) auf nicht(1 und S)=nicht(S)
(nicht(1 und R)=nicht(R)) abgebildet.
Man kann also nur in der 1 Phase setzen oder r
Man kann also nur in der 1 Phase setzen oder r ü ü cksetzen. cksetzen.
Master/Slave Latch
Häufig macht die Gefahr, daß sich R,S in der 1 Phase des Taktes clk ändern könnte, (dann ist ja R,S
transparent mit Q,QZ verbunden) den Entwurf
schwierig. Man möchte daher die Zeit, in der sich R,S nicht ändern darf, so kurz wie möglich halten. Dies
erreicht man, indem man den Übernahmezeitpunkt eng um die 1/0 Flanke des Taktes clk, wie in folgender
Schaltung, legt:
1 0
S
Q clk
R
S
Q clk
R
Master/Slave Latch: Timing
Verdeutlichung des Übernahmeverhaltens am Zeitdiagramm:
clk S,R Q(Master)
Q(Slave)
t
st
ht
dAusblick
Mit diesen Bausteinen kann man nun komplexe Schaltwerke aufbauen, die aus in der Grössenordnung 107 (!) Gattern und Latches bestehen.
Solch hochkomplexe Systeme kann man natürlich nicht manuell und unsystematisch aufbauen. Generell gilt
¾ Realisiere Funktionen durch Gatterschaltungen
¾ Realisiere Register und kritische Speicherplätze durch Master Slave Latches
¾ Benutze zur Konstruktion Hardwarebeschreibungssprachen (Hardware Description Languages, HDL) und übersetze sie in Schaltungen, so wie man Programme in Maschinenprogramme transformiert.
IV.2.6 Speicherorganisation
Die Speicherhierarchie
Betriebs- system
Hardware
Registers
Memory
Instr./Operands 1-8 bytesprogram
Blocks cache cntl8-128 bytes
Upper Level
Lower Level faster
Larger Cache
Disk
Pages OS512-4K bytes
Tape
Files user/operator
Mbytes
Festplatte (engl. Harddisc)
z Eine FestplatteFestplattebesteht aus
~ mehreren Platten (4-8)
~ mehreren Lese / Schreibköpfen (6-16) z Eine PlattePlattebesteht aus
konzentrischen Spuren z Eine SpurSpur besteht aus
Sektoren
z Ein SektorSektorist die kleinste beschreibbare Einheit z Ein ZylinderZylinder besteht aus
übereinanderliegenden Spuren
Platters
Track
Sector
Sector Track
Cylinder Head Platter
Rotationsgeschwindigkeit
Rotationsgeschwindigkeit: 3.600 rpm bis 10.800 rpm (rrounds pperminute)m Sektorgr
Sektorgrößößee: 512 byte bis 2 kbyte Schreibdichte
Schreibdichte: 50.000 bis 100.000 bits/cm Spurendichte
Spurendichte:800 bis 2.000 Spuren/cm
Festplatte ff
Ausführung eines Festplattenzugriffs
z Bewege die Köpfe zu dem richtigen Zylinder (∅ Dauer: 6-10 msec) z Warte bis der gesuchte Sektor zum Kopf rotiert (∅ Dauer: 0.5⋅rpm-1) z Übertrage den Inhalt des Sektors (Transferrate: 5-20 Mbyte/sec)
Beispielrechnungen bei
Beispielrechnungen bei SektorgrSektorgröössesse 512 Byte512 Byte
11 msec 25 µsec
5 msec 6 msec
10800 rpm, 20 Mb/sec
6 msec 6 msec 6 msec 10 msec 10 msec 10 msec 10 msec
∅Positionierungzeit
14 msec 25 µsec
8 msec 7200 rpm, 20 Mb/sec
17 msec 25 µsec
11 msec 5400 rpm, 20 Mb/sec
22 msec 25 µsec
16 msec 3600 rpm, 20 Mb/sec
15 msec 102 µsec
5 msec 10800 rpm, 5 Mb/sec
18 msec 102 µsec
8 msec 7200 rpm, 5 Mb/sec
21 msec 102 µsec
11 msec 5400 rpm, 5 Mb/sec
26 msec 102 µsec
16 msec 3600 rpm, 5 Mb/sec
∅ Gesamtzugriffszeit Transferzeit
∅Latenzzeit
vernachlässigbar
CD-ROM / DVD
1,4 Mbyte/sec
4,7 GByte 0,65 microns 0,74 microns 0,40 microns
120 mm
DVD
650 MByte Kapazität
einfache Übertragungs- geschwindigkeit
Wellenlänge des Lasers Spur-Abstand
Grösse der Gruben Scheiben-Durchmesser
10 Mbyte/sec 150
KByte/sec 0,78 microns 1,60 microns 0,80 microns
120 mm
Festplatte CD-ROM
Ausblick
Die Einbindung von Caches erledigt die Hardware, ein
Cachecontroller. Wir können in dieser Vorlesung nicht näher darauf eingehen.
Ein/Ausgabegeräte werden seitens des Prozessors über
Controllerbausteine angesprochen, die, wie der Cachecontroller am Speicherbus des Prozessores hängen.
Diese Bausteine lösen im Prozessor Unterbrechungen der
normalen Befehlsverarbeitung aus und führen zur Ausführung von Systemroutinen. Sie können sogar den Prozessor anhalten.
Sie kooperieren wie die Cache Controller mit dem Hauptspeicher, und können mit ihm Daten austauschen.
Die wesentlichen Funktionen werden von Programmen oder Unterprogrammen übernommen, die zu einem priviligierten Programmpaket gehören, das stets im Rechner läuft, das
Betriebssystem. Daher werden wir die weiteren Aspekte von Festplatten, Ein/Ausgabe und Netzwerk in diesem
Zusammenhang betrachten.