Logische Bausteine Sequentielle Schaltungen Shlt Grundlagen der Rechnerarchitektur Logik und Arithmetik 31
Sequentielle Schaltungen n Eingänge m Ausgänge n Eingänge m Ausgänge Zustand Ausgänge hängen nur von den Eingängen ab. Wieschon gezeigt, ist dies durch eine Wahrheits tabelle beschreibbar. Ausgänge hängen von den Eingängen ab und dem aktuellen Zustand des Bausteins ab. Wie kann man dieses Verhalten beschreiben? Kombinatorische Schaltungen Sequentielle Schaltungen Grundlagen der Rechnerarchitektur Logik und Arithmetik 32
Zustandsautomat Ein Beispiel: Bi il Eingabe 01 / Ausgabe 00 Eingabe 00 / Ausgabe 11 Eingabe 10 / Ausgabe 01 Eingabe 11 / Ausgabe 10 Zustand 00 Bit Eing gabe Eingabe 11 / Ausgabe 00 Zustand 01 2 Bit Ausga 2 be Zustand 10 Grundlagen der Rechnerarchitektur Logik und Arithmetik 33
Speichern von Zuständen Speichern eines Bits am Beispiel R S Latch (S=Set, R=Reset) Beobachtung: das Speichern von Zustand erfordert Rückkopplungen (d.h. Ausgang ist wieder Eingang) in der Schaltung. R S altes Q neues Q 0 0 0 0 0 1 0 1 0 0 1 1 1 0 0 1 0 1 Bildquelle: David A. Patterson und John L. Hennessy, Computer Organization and Design, Fourth Edition, 2012 Grundlagen der Rechnerarchitektur Logik und Arithmetik 34
Speichern von Zuständen Erweiterung eines R S Latch zu einem D Latch (D=Data, C=Clock) R S altes Q neues Q 0 0 0 0 0 0 1 1 0 1 0 1 0 1 1 1 1 0 0 0 1 0 1 0 R S C D altes Q neues Q 0 0 0 0 0 1 0 1 0 0 1 1 1 0 0 1 0 1 1 1 0 1 1 1 Weitere Details zu Latches und Flip Flops Flops in der Vorlesung Digitaltechnik. Grundlagen der Rechnerarchitektur Logik und Arithmetik 35
Beispiel Wirwollen das Ergebnis einer kombinatorischen Schaltung in einem D Latch speichern. Q soll wohldefiniert entweder den Inhalt vor oder nach der Berechnung speichern. Kombinatorische Schaltung Q n Bit Eingang Ergebnis istein Bit C (Clock) D (Daten) D Latch NOT(Q) Problem: Wann liegt das Ergebnis Bit stabil tbilan D an? Zeit Bildquelle: Symbole kopiert aus David A. Patterson und John L. Hennessy, Computer Organization and Design, Fourth Edition, 2012 Grundlagen der Rechnerarchitektur Logik und Arithmetik 36
Lösung: Taktung Wirwollen das Ergebnis einer kombinatorischen Schaltung in einem D Latch speichern. Q soll wohldefiniert entweder den Inhalt vor oder nach der Berechnung speichern. Kombinatorische Schaltung Q n Bit Eingang Ergebnis istein Bit C (Clock) D (Daten) D Latch NOT(Q) Letztes Clock Signal Nächstes Clock Signal Zeit Takt Zyklus Bildquelle: Symbole kopiert aus David A. Patterson und John L. Hennessy, Computer Organization and Design, Fourth Edition, 2012 Grundlagen der Rechnerarchitektur Logik und Arithmetik 37
Logische Bausteine Blockschaltdiagramme ltdi Grundlagen der Rechnerarchitektur Logik und Arithmetik 38
Bausteine als Black Box Wir haben jetzt einige Basisbausteine kennen gelernt. In dieser Vorlesung sind wir mit Blockschaltbildern in der Regel eine Abstaktionsebene höher. Die betrachteten Bausteine sind Kästen mit Eingangsleitungen und Ausgangsleitungen. Die Leitungen können entweder Daten transportieren (Datenleitungen) oder Steuersignale (Steuerleitungen). Wie die Bausteine der Blockschaltbilder intern mit Grundbausteinen aufgebaut sind und wie die Taktung der einzelnen Bausteine genau abläuft betrachten wir in dieser Vorlesung nicht ihtweiter. Mehr Mhdazu kann man in der Vorlesung Digitaltechnik it ik lernen. Eingansleitungen Bemerkung: In Blockschaltbildern ltbild wird das für sequentielle Bausteine erforderliche Clock Signal häufig der Übersicht halber weg gelassen. Baustein Ausgansleitungen Beispiel eines abstrakten Bausteins Grundlagen der Rechnerarchitektur Logik und Arithmetik 39
Verschaltung von Bausteinen Verbinden von Bauelementen Bus (lassen häufig die Markierung n Bits weg) n Bits Einzelne Leitung Datenflussrichtung Ausgabe eines logischen Bausteins Eingabe eines logischen Bausteins Kreuzungen und Verbindungen Bi Beispiel il Baustein A Leitungen kreuzen sich, sind aber nicht verbunden Verbindungen außerhalb der Leitungsendpunkte sind durch einen Punkt gekennzeichnet. Baustein B Baustein C Grundlagen der Rechnerarchitektur Logik und Arithmetik 40
Arithmetische, logische Einheit (ALU) ALU Operation (k) Angabe in Klammern istdie Anzahl Bits. A (n) OR Beispiel Funktionen AND B (n) ALU CarryOut (1) Zero (1) Result (n) Overflow (1) Ggf. ist die ALU auf eine Operation festgelegt. Dann Entfällt der Eingang und ALU wird mit dem Namen der Operation ersetzt. NOT Addition Subtraktion Vergleich Kombinatorisch? Sequentiell? Grundlagen der Rechnerarchitektur Logik und Arithmetik 41
Register und Shift Register Eingang (n) Speichert n Bits Reset (1) Load (1) Shift (1) Ausgang (n) Kombinatorisch? Sequentiell? Grundlagen der Rechnerarchitektur Logik und Arithmetik 42
Control Eingänge sind Datenleitungen aus anderen Bausteinen Control Ausgänge sind Steuerleitungen in andere Bausteine Ein Baustein der das Zusammenarbeiten von anderen Bauseinen koordiniert. In Abhängigkeit der Eingänge werden die passenden Steuerleitungen geschaltet. Kombinatorisch? Sequentiell? Grundlagen der Rechnerarchitektur Logik und Arithmetik 43
Control Beispiel Store R1 4 Bit Register R1 4 Bit Register R2 Store R2 R2 Bit 0 Control wird als kombinatorische Schaltung realisiert. Hierzu die Wahrheitstabelle: Eingabe R2 Bit 0 SUB 0 0 Zero Ausgabe Store R1 Store R2 Zero Control 0 1 1 0 1 1 Control soll folgenden Algorithmus implementieren: wenn R2 gerade und R1-R2=0, dann R1 = 0 wenn R2 ungerade und R1-R2!=0, dann R2 = R1-R2 sonst R1 = R1-R2 Anhand der Wahrheitstabelle wird dann die Schaltung gebaut. Rückgekoppelte Register haben immer einen wohldefinierten Zustand, da Register nur zum Clock Signal aktualisiert werden. Grundlagen der Rechnerarchitektur Logik und Arithmetik 44
Darstellung von Algorithmen Grundlagen der Rechnerarchitektur Einführung 45
Pseudo Code Darstellungen Elementaranweisungen Variablenzuweisungen, z.b.: x = 42 Arithmetik, z.b.: y = 10 x = (42 + y) * 20 Das Symbol = beinhaltet implizit eine zeitliche Abfolge, damit ist z.b. sinnvoll: x = x + 1 Abkürzende Schreibweise für voriges Konstrukt: x++ Allgemein: als Elementaranweisung betrachten wir jede Anweisung, die auf der betrachteten Abstraktionsebene nicht weiter sinnvoll in eine Folge von einfacheren Anweisungen unterteilbar ist. Grundlagen der Rechnerarchitektur Assembler 46
Felder Felder für den Zugriff auf den Speicher, z.b.: A[] Zugriff auf ite Speicherstelle: A[i] Bi Beispiel: il 0x0f00 : 14 A[0] 0x0f01 : 15 A[1] 0x0f02 : 42 A[2] 0x0f03 : 43 A[3]...... 0x0f0f : 255 A[15] Grundlagen der Rechnerarchitektur Assembler 47
Sequenz von Elementaranweisungen Jedes Programm beginnt an einer Stelle und terminiert (hoffentlich) irgendwann. Start Im Flussdiagramm ist Beginn und Ende des Programms mit denovalen Symbolen dargestellt. Im Beispiel also Start und Ende. Das einfachste Programm arbeitet einfach eine Sequenz von elementaren Anweisungen ab. Setze i auf i+1 Setze j auf 2*i usw. Im Flussdiagramm wird so eine Sequenz durch ein Rechteck dargestellt. Die Abarbeitungsrichtung des Programms wird durch die Pfeile gekennzeichnet. Ende Grundlagen der Rechnerarchitektur Assembler 48
If then else if then else am Beispiel: if(i<10) then <Code-Block 1> else <Code-Block 2> Ist i<10? ja nein Code Block 1 Code Block 2 Grundlagen der Rechnerarchitektur Einführung 49
Switch Statement Switch Statement am Beispiel: ja i=1? Code Block 1 switch(i) case 1: <Code-Block 1> case 2: <Code-Block 2>... defaut: <Code-Block n> nein i=2? nein... ja Code Block 2 Code Block n Grundlagen der Rechnerarchitektur Einführung 50
For Schleife For Schleife am Beispiel: for(i=0; i<10; i++) { <das innere der Schleife> } Bedeutet: Initialisiere i mit 0 Führe das innere der Schleife aus Erhöhe i um eins Wiederhole wenn immer noch i10 i<10 Start Setze i auf 0 Ist i<10? ja Innere der Schleife nein Erhöhe i um 1 Ende Grundlagen der Rechnerarchitektur Assembler 51
While Schleife While Schleife an Beispiel: Start i=0 while(i<10) { <das innere der Schleife> i++ } Bedeutet: Initialisiere i mit 0 Führe das innere der Schleife aus Erhöhe i um eins Wiederhole wenn immer noch i<10 Setze i auf 0 Ist i<10? ja Innere der Schleife Erhöhe i um 1 nein Ende Grundlagen der Rechnerarchitektur Assembler 52
Beispiel Gegeben seien die ganzzahligen Variablen n und m. Bestimme größtes k welches n k < m erfüllt: Grundlagen der Rechnerarchitektur Assembler 53
Multiplikation Grundlagen der Rechnerarchitektur Logik und Arithmetik 54
Multiplikation nach der Schulmethode Gegeben seien die Binärzahlen A und B. Was ist a * b? Beispiel: Multiplikand A: 1 1 0 1 0 Multiplikator B: * 1 1 0 1 ----------- Produkt: Grundlagen der Rechnerarchitektur Logik und Arithmetik 55
Maximale Länge des Ergebnisses Beobachtung: Multiplikand der Länge n Bits und Multiplikator der Länge m Bits ergibt Produkt einer Länge mit maximal n+m Bits. Grundlagen der Rechnerarchitektur Logik und Arithmetik 56
Das Verfahren als Algorithmus Start Beispiel 1001*0101: Addiere Multiplikand zum Produkt Beispiel für 4 Bit Zahlen Teste erstes 1 Multiplikator 0 1 0 0 1 Bit * 0 1 0 1 p ---------- 1 0 0 1 + 0 0 0 0 Shifte Multiplikand ein Bit nach Links ------------ 1 0 0 1 Shifte Multiplikator + 1 0 0 1 ein Bit nach Rechts -------------- 5ter 1 0 1 1 0 1 nein Durchlauf? + 0 0 0 0 ---------------- ja 0 1 0 1 1 0 1 Ende Grundlagen der Rechnerarchitektur Logik und Arithmetik 57
Das Verfahren in Hardware Links Shift Demonstration ti mit 1001 * 0110 = 110110 8 Bit Multiplikand 2.Links Shift 8 Bit ALU Rechts Shift 4 Bit Multiplikator 3.Rechts Shift 1. Produkt = Produkt + Multiplikand 8 Bit Produkt Control Test 4. Anzahl hldurch läufe = 5 Ende Beispiel für 4 Bit Zahlen Grundlagen der Rechnerarchitektur Logik und Arithmetik 58
Beschleunigung des Verfahrens Beobachtung: Jeder Teilschritt verbrauche einen Taktzyklus. Wie viele Taktzyklen c dauert die Multiplikation von zwei n Bit Zahlen? Verbesserung: Parallele Operationen. Initiales Produktregister: 000...000 Multiplikator 1 Addiere Start Teste 0 Shifte Links Shifte Rechts Multiplikation mit n Zyklen fertig. Fertig? ja Ende nein Bildquelle: David A. Patterson und John L. Hennessy, Computer Organization and Design, Fourth Edition, 2012 Grundlagen der Rechnerarchitektur Logik und Arithmetik 59
Vorzeichenbehaftete Multiplikation Möglichkeit 1: Betrachte Multiplikand x und Multiplikator y. Sei x = x wenn x nicht negativ bzw. x = x sonst. Sei y = y wenn y nicht negativ bzw. y = y sonst. Berechne z = x * y. Ergebnis z = z wenn x und y nicht negativ oder x und y negativ, ansonsten ist z = z. Möglichkeit 2: Tausche im Verfahren der vorigen Folie das Produktregister mit einem vorzeichenbehafteten Rechts Shift Register aus. Bildquelle: David A. Patterson und John L. Hennessy, Computer Organization and Design, Fourth Edition, 2012 Grundlagen der Rechnerarchitektur Logik und Arithmetik 60
Weitere Beschleunigungen Eine ALU für jede Summation x 3 y x 2 y 4 Bit ALU c s 3 s 2 s 1 s 0 x 1 y x 0 y 3 y 2 y 1 x 0 y 0 Beobachtung: 1 0 1 1 (Y) * 1 1 1 0 (X) 4 Bit ALU ---------------- c s 3 s 2 s 1 s 0 0 0 0 0 + 1 0 1 1 + 1 0 1 1 4 Bit ALU c s 3 s 2 s 1 s 0 + 1 0 1 1 ---------------- 1 0 0 1 1 0 1 0 (Z) z 7 z 6 z 5 z 4 z 3 z 2 z 1 z 0 Beispiel für 4 Bit Zahlen Grundlagen der Rechnerarchitektur Logik und Arithmetik 61
Weitere Beschleunigungen Parallele l Organisation i der ALUs in einen Binärbaum (keine weiteren Details hier) JedeALU Operationverbrauche einen Taktzyklus. Wieviele Taktzyklen dauert die Multiplikation von 32 Bit Zahlen? Bildquelle: David A. Patterson und John L. Hennessy, Computer Organization and Design, Fourth Edition, 2012 Grundlagen der Rechnerarchitektur Logik und Arithmetik 62
Division Grundlagen der Rechnerarchitektur Logik und Arithmetik 63
Division nach der Schulmethode Gegeben seien die Binärzahlen A und B. Was ist a : b? Beispiel: Dividend Divisor Quotient 1 0 0 1 0 1 0 : 1 0 0 0 = Rest: Grundlagen der Rechnerarchitektur Logik und Arithmetik 64
Das Verfahren als Algorithmus Start Beispiel 1001 : 10: Subtrahiere Dvdt :Dvsr= Qtnt Divisor vom Rest 001001 : 10 = 00100-000000 0 Teste <0 ------ Rest 01001 Restauriere den alten -00000 Shifte Quotient nach Rest. Shifte Quotient ----- Links und setze nach Links und setze dessen LSB=1. 1001 dessen LSB=0. -1000 ---- Shifte Divisor i ein Bit 001 nach Rechts -000 --- 6ter nein 01 Durchlauf? -00 Beispiel für -- ja 4 Bit Zahlen 1 Rest Ende Grundlagen der Rechnerarchitektur Logik und Arithmetik 65
Das Verfahren in Hardware Rechts Shift Demonstration ti mit 1001 : 0010 = 100 Rest 1 8 Bit Divisor 3. Rechts Shift Links Shift 4 Bit Quotient 8 Bit ALU 2. Links Shift; LSB=Rest wurde verändert 1. Rest=Rest Divisor, wenn Divisor < Rest 4. Anzahl Durchläufe = 6 Ende 8 Bit Rest Control Test Beispiel für 4 Bit Zahlen Grundlagen der Rechnerarchitektur Logik und Arithmetik 66
Beschleunigung des Verfahrens Analog zur Multiplikation Einsparung von Taktzyklen durch parallele Operationen Rd Reduziert wie bid bei der Multiplikation die ALU Größe und Anzahl hlregister Skizze (ohne Details) Kann man analog zur Multiplikation durch viele parallel arbeitende ALUs die Geschwindigkeit weiter steigern? Erinnerung: Multiplikation mit parallel arbeitenden ALUs Bildquelle: David A. Patterson und John L. Hennessy, Computer Organization and Design, Fourth Edition, 2012 Grundlagen der Rechnerarchitektur Logik und Arithmetik 67
Vorzeichenbehaftete Division Umgang mit dem Quotienten (analog wie für Multiplikation): Betrachte Divisor x und Dividend y (also: Quotient z von y:x). Si Sei x = x wenn x nicht negativ iht ti bzw. x = x sonst. Sei y = y wenn y nicht negativ bzw. y = y sonst. Berechne Quotient z von y : x. Ergebnis z = z wenn x und y nicht negativ oder x und y negativ, ansonsten ist z = z. Und was ist das Vorzeichen des Rests? Beispiel: Dividend : Divisor Quotient Rest Quotient * Divisor + Rest = Dividend 7 : 2 3 1 3 * 2 + 1 = 7-7 : 2-3 -1-3 * 2 1 = -7 7 : -2-3 1-3 * -2 + 1 = 7-7 : -2 3-1 3 * -2 1 = -7 Also: Vorzeichen des Rests ist Vorzeichen des Dividend. Grundlagen der Rechnerarchitektur Logik und Arithmetik 68
Gleitkommazahlen Grundlagen der Rechnerarchitektur Logik und Arithmetik 69
Reelle Gleitkommazahlen Beispiel Kleine Zahl Große Zahl Wissenschaftliche Darstellung (eine Ziffer rechts des Kommas) Normalisierte Darstellung (keine führende Null) Grundlagen der Rechnerarchitektur Logik und Arithmetik 70
Binäre Gleitkommazahlen Was ist der Dezimalwert der binären Gleitkommazahl 101,1001? Was bedeutet 11,011 2 2? Also: mit 2 i multiplizieren verschiebt das Komma um i Stellen nach rechts. Analog: mit 2 i multiplizieren verschiebt das Komma um i Stellen nach links. Grundlagen der Rechnerarchitektur Logik und Arithmetik 71