Technische Informatik 1



Ähnliche Dokumente
Technische Informatik 1

Datenpfad einer einfachen MIPS CPU

Grundlagen der Rechnerarchitektur

Datenpfad einer einfachen MIPS CPU

Datenpfad einer einfachen MIPS CPU

Technische Informatik I - HS 18

Datenpfad einer einfachen MIPS CPU

Technische Informatik 1

Grundlagen der Technischen Informatik. Sequenzielle Netzwerke. Institut für Kommunikationsnetze und Rechnersysteme. Paul J. Kühn, Matthias Meyer

Digitaltechnik und Rechnerstrukturen. 2. Entwurf eines einfachen Prozessors

Aufgabe 1) Die folgenden Umwandlungen/Berechnungen beziehen sich auf das 32-Bit Single-Precision Format nach IEEE-754.

6.2 Petri-Netze. kommunizierenden Prozessen in der Realität oder in Rechnern Verhalten von Hardware-Komponenten Geschäftsabläufe Spielpläne

Kap.3 Mikroarchitektur. Prozessoren, interne Sicht

Übungen zu Grundlagen der Rechnerarchitektur und -organisation: Bonusaufgaben Übung 8 und Präsenzaufgaben Übung 9

FH Jena Prüfungsaufgaben Prof. Giesecke FB ET/IT Binäre Rechenoperationen WS 11/12

Die Mikroprogrammebene eines Rechners

Elektrische Logigsystem mit Rückführung

Datenpfaderweiterung Der Single Cycle Datenpfad des MIPS Prozessors soll um die Instruktion min $t0, $t1, $t2 erweitert werden, welche den kleineren

Auch hier wieder. Control. RegDst Branch MemRead MemtoReg ALUOp MemWrite ALUSrc RegWrite. Instruction[31 26] (also: das Opcode Field der Instruktion)

Grundlagen der Informatik 2. Grundlagen der Digitaltechnik. 5. Digitale Speicherbausteine

Was ist die Performance Ratio?

Computer-Architektur Ein Überblick

Pipelining. Die Pipelining Idee. Grundlagen der Rechnerarchitektur Prozessor 45

Einteilung der Kippschaltungen (Schaltwerke) (=Flipflops)

Johann Wolfgang Goethe-Universität

N Bit binäre Zahlen (signed)

FH Jena Prüfungsaufgaben Prof. Giesecke FB ET/IT Binäre Rechenoperationen WS 09/10

Dialognetze. Ziel : Beschreibung von Methoden und Beschreibungstechniken für den Entwurf und die Dokumentation von Dialogabläufen

Kommunikations-Management

Software-Engineering SS03. Zustandsautomat

ASP Dokumentation Dorfstrasse 143 CH Kilchberg Telefon 01 / Telefax 01 / info@hp-engineering.com

Praktikum Digitaltechnik

Modellierung von Geschäftsprozessen Teil 6 - Petri-Netze

Professionelle Seminare im Bereich MS-Office

Struktur der CPU (1) Die Adress- und Datenpfad der CPU: Befehl holen. Vorlesung Rechnerarchitektur und Rechnertechnik SS Memory Adress Register

Lösungsvorschlag zur 4. Übung

Das Prinzip an einem alltäglichen Beispiel

Daten verarbeiten. Binärzahlen

Algorithmen zur Integer-Multiplikation

Prinzipieller Aufbau und Funktionsweise eines Prozessors

in vielen technischen und wissenschaftlichen Anwendungen erforderlich: hohe Präzision große Dynamik möglich durch Verwendung von Gleitkommazahlen

Einführung in Petri-Netze. Modellierung von Abläufen und Prozessen (1) Abhängigkeitsgraphen: Motivation. Petri-Netze

AGROPLUS Buchhaltung. Daten-Server und Sicherheitskopie. Version vom b

Kapitalerhöhung - Verbuchung

Eine Logikschaltung zur Addition zweier Zahlen

DIE ZUKUNFT BEGINNT JETZT: ELEKTRONISCHE UNTERSCHRIFT

1. Speicherbausteine JK-RS-Master-Slave-Flip-Flop

- Strukturentwurf elementarer Rechenwerke - Grund-Flipflop (RS-Flipflop) - Register, Schieberegister, Zähler

Primzahlen und RSA-Verschlüsselung

Persönliches Adressbuch

Grundbegriffe der Informatik

A.3. A.3 Spezielle Schaltnetze Prof. Dr. Rainer Manthey Informatik II 1

Dynamisches SQL. Folien zum Datenbankpraktikum Wintersemester 2009/10 LMU München

Verkehrsteilnehmer. Beispiel: Wir betrachten die Modellierung von Handlungskomponenten wie Verkehrsteilnehmern und Straßen.

Lehrer: Einschreibemethoden

How-to: Webserver NAT. Securepoint Security System Version 2007nx

Petri-Netze / Eine Einführung (Teil 2)

Einführung in. Logische Schaltungen

Informatik 12 Datenbanken SQL-Einführung

Folgende Einstellungen sind notwendig, damit die Kommunikation zwischen Server und Client funktioniert:

Konzepte der Informatik

9 Multiplexer und Code-Umsetzer

Hinweis, sofern Sie Probleme beim Download der Excel-Dateien für das LIOS-Makro haben:

Lizenzen auschecken. Was ist zu tun?

.procmailrc HOWTO. zur Mailfilterung und Verteilung. Stand:

Programmiersprachen und Übersetzer

Mikroprozessortechnik. 03. April 2012

Aktivieren des Anti-SPAM Filters

Flipflops. asynchron: Q t Q t+t

Kurzanleitung: Abonnenten-Import

Win 7 optimieren. Unser Thema heute: Meine erstellten Daten in eine andere Partition verschieben.

TeamSpeak3 Einrichten

Versuch 3: Sequenzielle Logik

Abamsoft Finos im Zusammenspiel mit shop to date von DATA BECKER

Schnellinbetriebnahme MPA-S mit Profibus an Siemens S7

Benutzerkonto unter Windows 2000

Technisches Datenblatt

Theoretische Informatik SS 04 Übung 1

Mikrocontroller Grundlagen. Markus Koch April 2011

Guide DynDNS und Portforwarding

INTEGRA Finanzbuchhaltung Jahresabschluss Jahresabschluss 2014

HorstBox (DVA-G3342SD) Anleitung zur Einrichtung der Telefonie

RS-Flip Flop, D-Flip Flop, J-K-Flip Flop, Zählschaltungen

Kapitel I: Registrierung im Portal

Individuelle Formulare

Anlegen eines DLRG Accounts

Gesicherte Prozeduren

SEP 114. Design by Contract

Local Control Network Technische Dokumentation

Finanzwirtschaft Teil III: Budgetierung des Kapitals

28. März Name:. Vorname. Matr.-Nr:. Studiengang

Übungen zu Architektur Eingebetteter Systeme. Teil 1: Grundlagen. Blatt 5 1.1: VHDL 28./

Kapitel 4 Schaltungen mit Delays (Schaltwerke) Literatur: Oberschelp/Vossen, Kapitel 4. Kapitel 4: Schaltungen mit Delays Seite 1

malistor Phone ist für Kunden mit gültigem Servicevertrag kostenlos.

Prozeß P1 Prozeß P2. Zur Synchronisation stehen den beiden Prozessen binäre Semaphore und die beiden Funktionen

Unterrichtsmaterialien in digitaler und in gedruckter Form. Auszug aus: Übungsbuch für den Grundkurs mit Tipps und Lösungen: Analysis

Technische Informatik I - HS 18

Transkript:

Technische Informatik 1 4 Prozessor Einzeltaktimplementierung Lothar Thiele Computer Engineering and Networks Laboratory

Vorgehensweise 4 2

Prinzipieller Aufbau Datenpfad: Verarbeitung und Transport von Instruktionen und Daten. Datenpfad muss alle Operationen und Datentransporte unterstützten. Viele Optionen sind möglich, z.b. Trennung von Instruktions und Datenverarbeitung, Fliessbandverarbeitung (Pipelining), parallele arithmetische Einheiten,.... Kontrollpfad: Verarbeitung und Transport von Steuerungsdaten. Viele Optionen möglich, z.b. rein kombinatorische Steuerung, zustandsbasierte Steuerung, Mikroprogrammsteuerung,.... 4 3

Verfeinerung des Instruktionssatzes Instruktionen werden i.a. auf der Hardware interpretiert. Hier wird beispielhaft die Implementierung einiger MIPS Instruktionen dargestellt, mit unterschiedlichen Implementierungsvarianten: ein Takt pro Instruktion single cycle, Fliessbandverarbeitung pipelining, instruktionsparallele Ausführung. Die Verfeinerung der Instruktionen zu Operationen, die direkt in der Hardware ausgeführt werden können, basiert auf einer abstrakten Darstellung der jeweils notwendigen Teiloperationen (Daten/Kontrollflussgraph). 4 4

Instruktionskodierung (Wiederholung) Unter Instruktionskodierung versteht man die Umsetzung einer Instruktion in ein Maschinenwort. Der MIPS Prozessor benutzt ausschliesslich 32 Bit Kodierungen (alle Instruktionen besitzen eine feste Länge). Man unterscheidet die 3 Typen I, J und R: Typ I 31 26 25 21 20 16 15 op rs rt immediate 0 Typ J 31 26 op 25 target 0 Typ R 31 26 25 21 20 16 15 11 10 6 5 0 op rs rt rd shamt funct 4 5

Instruktionskodierung (Wiederholung) Abkürzung I J R op rs rt immediate target rd shamt funct Bedeutung immediate (direkt) jump (Sprung) register (Register) 6 Bit Kodierung der Operation 5 Bit Kodierung eines Quellenregister 5 Bit Kodierung eines Quellenregisters oder Zielregisters 16 Bit direkter Wert oder Adressverschiebung 26 Bit Sprungadresse 5 Bit Kodierung des Zielregisters 5 Bit Grösse einer Verschiebung 6 Bit Kodierung der Funktion (Ergänzung des Feldes op) 4 6

Die MIPS Teilmenge R Typ Instruktionen: add subtract AND OR set less than add rd, rs, rt sub rd, rs, rt and rd, rs, rt or rd, rs, rt slt rd, rs, rt 000000 rs rt rd 00000 100000 000000 rs rt rd 00000 100010 000000 rs rt rd 00000 100100 000000 rs rt rd 00000 100101 000000 rs rt rd 00000 101010 Speicherinstruktionen load word lw rt, imm(rs) store word sw rt, imm(rs) Verzweigungsinstruktionen branch on equal jump beq rs, rt, imm j target 100011 rs rt imm 101011 rs rt imm 000100 rs rt imm 000010 target 4 7

Petri Netze 4 8

Petri Netz Wir werden die Verfeinerung der Instruktionen mit Petri Netzen darstellen. Petri Netze sind eine Standard Notation zur Darstellung von parallelen und verteilten Operationen. Statische Repräsentation: Petri Netze bestehen aus Stellen und Transitionen, die durch Kanten miteinander verbunden sind. Ein Petri Netz Graph muss bipartit sein, d.h. keine Stellen dürfen direkt miteinander verbunden sein, das gleiche gilt auch für Transitionen. Stelle Transition 4 9

Petri Netz Dynamische Repräsentation Den Stellen sind Marken (Token) zugeordnet. Sie beschreiben den derzeitigen Zustand in der Abfolge der Operationen. Marken werden über Transitionen nach bestimmten Regeln transportiert : Eine Transition ist aktiviert, falls (a) die der Transition zugeordnete Bedingung erfüllt ist und (b) in jeder Eingangsstelle mindestens eine Marke liegt. Eine aktivierte Transition kann feuern. Dabei wird aus jeder Eingangsstelle eine Marke entfernt und jeder Ausgangsstelle eine Marke zugefügt. Die der Transition zugeordnete Operation wird ausgeführt. 4 10

Petri Netz (a>0) Marke aktiviert (a>0) hat gefeuert a = 1 a = 1 (a 0) Operation aktiviert (a 0) (a>0) a = 1 hat gefeuert (a 0) 4 11

Modellierung der Instruktionen 4 12

Elementaroperationen Der Prozessor stellt die folgenden Elementaroperationen und Variablen zur Verfügung: Zwischenvariablen zum Speichern von 32 Bit Daten und Instruktionen: A, B, ALUOut, Target, PC (program counter), NPC (next program counter), IR (instruction) Interne Register des Prozessors: Reg[i], 0 i 31 Hauptspeicher an der Adresse i: Mem[i] Verschiebung eines Wortes um 2 Bit nach links und auffüllen mit 00 : 01110 << 2 = 0111000 Aneinanderhängen von Bits: 001 <> 110 = 001110 Erweiterung eines Halbwortes auf ein Wort mit/ohne Vorzeichenerweiterung: SignExt(), ZeroExt() Arithmetische Operation wobei op { add, subtract, AND, OR, setonlessthan }: ALU(a, b, op) (a < b)? 1 : 0 4 13

Beispiel: R Instruktion start NPC = PC + 4 IR = Mem[PC] Lediglich Bits 16 20 der IR Variablen werden verwendet (dekodiert) A = Reg[IR[25 21]] PC = NPC B = Reg[IR[20 16]] Reg[IR[15 11]] = ALUOut ende ALUOut = ALU(A, B, ALUMap(IR)) ALU Funktion ALUMap (IR) bestimmt ALU Operation aus einer R Instruktion: add add sub subtract and AND or OR slt setonlessthan 4 14

Beispiel: beq Instruktion start NPC = PC + 4 A = Reg[IR[25 21]] IR = Mem[PC] B = Reg[IR[20 16]] Zero = (A==B) (Zero == false) PC = NPC (Zero == true) PC = NPC + (SignExt(IR[15 0]) << 2) ende 4 15

Beispiel: j Instruktion start IR = Mem[PC] NPC = PC + 4 PC=NPC[31 28]<>IR[25...0]<> 00 ende bitweise zusammenfügen 4 16

Beispiel: lw Instruktion start NPC = PC + 4 IR = Mem[PC] A = Reg[IR[25 21]] PC = NPC ALUOut = A + SignExt(IR[15 0]) MemOut=Mem[ALUOut] ende Reg[IR[20...16]]=MemOut 4 17

Beispiel: sw Instruktion start NPC = PC + 4 IR = Mem[PC] B = Reg[IR[20 16]] A = Reg[IR[25 21]] PC = NPC ALUOut = A + SignExt(IR[15 0]) Mem[ALUOut]=B ende 4 18

Modellierung der MIPS Teilmenge Vereinigter Kontrollflussgraph: Zusammenfügen aller Instruktionen der MIPS Teilmenge. Verschiebung von Operationen zur Vereinfachung der Steuerung. Definition einer weiteren Zwischenvariablen Target. Verbindung von start und ende zur zyklischen Abarbeitung. Op[IR] { R, lw, sw, beq, j } gibt den Typ der Instruktion an und wird aus IR[31..26] bestimmt. 4 19

MIPS Verfeinerung (ohne j Instruktion) start NPC = PC + 4 (Op(IR) == beq ) Zero = (A==B) Target = NPC + (SignExt(IR[15 0]) << 2) IR = Mem[PC] A = Reg[IR[25 21]] B = Reg[IR[20 16]] (Op(IR) == R ) ALUOut = ALU(A,B,ALUMap(IR)) (Op(IR) == lw ) ALUOut = A + SignExt(IR[15 0]) (Zero == false Op(IR)!= beq ) PC = NPC (Zero == true && Op(IR) == beq ) PC = Target Reg[IR[15 11]] = ALUOut end (Op(IR) == sw ) ALUOut = A + SignExt(IR[15 0]) MemOut=Mem[ALUOut] Mem[ALUOut]=B Reg[IR[20...16]]=MemOut 4 20

Prinzpieller Ablauf Änderung des Programmzählers IF: Instruction Fetch RF: Register Fetch EX: Execute MEM: Memory Access WB: Write Back Register 4 21

Digitale Implementierung 4 22

Einzeltakt Implementierung Alle Teiloperationen werden in einem Takt ausgeführt. Kombinatorische Schaltung (keine Register); implementiert die Struktur des Petri Netzes. Implementiert alle Operationen, die den Transitionen im Petri Netz zugeordnet sind. 4 23

Synchroner Schaltungsentwurf Register Zur steigenden Taktflanke wird der Wert an D auf den Ausgang Q übertragen. Clk D Q Taktsignal wird in den folgenden Darstellungen oft weggelassen. Clk D Q Clk Übertragung, falls Write == 1 Write Clk D C Q Write D Q 4 24

Synchroner Schaltungsentwurf Einzeltaktsystem Kombinatorische Logik verarbeitet Daten zwischen den aktiven Taktflanken. Die längste Verzögerungszeit zwischen Registerausgängen und Registereingängen bestimmt die minimale Taktperiode. Register 4 25

Synchroner Schaltungsentwurf Bestimmung der minimalen Taktperiode: 4 26

Synchroner Schaltungsentwurf Bestimmung der minimalen Taktperiode: 4 27

Synchroner Schaltungsentwurf Bestimmung der minimalen Taktperiode: 4 28

Synchroner Schaltungsentwurf Bestimmung der minimalen Taktperiode: 4 29

Synchroner Schaltungsentwurf Bezeichnungen im Zeitablauf: ClktoQ: Verzögerung zwischen aktiver Taktflanke und gültigem Registerausgangssignal ClkSkew: Betrag der zeitlichen Verschiebung des Taktsignals zwischen Registern ClkPeriod: Periode des Taktsignals SetupTime, HoldTime: Zeitintervalle vor bzw. nach der aktiven Taktflanke, in denen das Eingangssignal eines Registers gültig sein muss SPD, LPD: Kürzeste bzw. längste Verzögerungszeit zwischen Ausgang und Eingang von Registern über kombinatorische Komponenten 4 30

Anwendung auf Bus Ein Bus ist eine gemeinsam genutzte Kommunikationsverbindung, z.b. zur Verbindung von Prozessor, Speicher und Ein und Ausgabeeinheiten. Beispiel eines synchronen Busses: eine oder mehrere Leitungen; Datentransfer von rechts nach links Taktversorgung der Komponenten ClkToQ + BusDelay - HoldTime ClkDelay ClkToQ + BusDelay + SetupTime - ClkPeriod ClkDelay HoldTime - ClkToQ - BusDelay ClkDelay ClkPeriod - ClkToQ - BusDelay - SetupTime ClkDelay eine oder mehrere Leitungen; Datentransfer von links nach rechts 4 31

Komponenten im Datenpfad Lesezugriff zum Hauptspeicher für Instruktionen Register Adr A Mem[Adr] B A+B Alle Verbindungen haben eine Breite von 32 Bit (Wortbreite) wenn nicht anders angegeben. Instruktionsspeicher und Addierer sind kombinatorische Schaltungen. 4 32

Komponenten im Datenpfad R1 R2 Reg[R1] Reg[R2] ALU control 1 1 0 C = Select? A : B b. Multiplexer Registerfeld: kombinatorisches Lesen, getaktetes Schreiben Multiplexer: Auch mehr als 2 Eingänge möglich; dann erfolgt eine Binärkodierung des ausgewählten Eingangs. 4 33

Komponenten im Datenpfad Detaillierte Schaltung des Registerfeldes: 4 34

Komponenten im Datenpfad Adr Mem[Adr] A SignExt(A) A A << 2 c. Shift Hauptspeicher: kombinatorisches Lesen falls MemRead==1, getaktetes Schreiben falls MemWrite==1 4 35

Komponenten im Datenpfad A B ALUControl ALUresult == 0? 1 : 0 ALU(A, B, ALUFct(ALUControl)) Falls die gewählte ALU Funktion sub ist, gilt Zero == 1 falls A==B und Zero == 0 sonst. ALU: Arithmetisch Logische Einheit ALUControl Eingang ALU Funktion 0010 add A+B 0110 sub A B Ausgang 0000 AND A & B (bitweise) 0001 OR A B (bitweise) 0111 setonlessthan A<B? 1 : 0 4 36

Konstruktion des Datenpfades Schrittweise Erweiterung der Schaltung für jede Operation im Petri Netz. Signale entsprechen den Variablen. Einfügen von Multiplexern beim Zusammenlegen von Signalen. Beispiel: Instruktion Fetch (IF) IR = Mem[PC] NPC = PC + 4 NPC PC = NPC IR 4 37

Einzeltakt Datenpfad ALUControl 4 38

Kontrollpfad Der Kontrollpfad bildet die Struktur des Petri Netzes ab. Er ist dafür verantwortlich, dass der Datenpfad die korrekten Operationen ausführt. Bei der Einzeltakt Implementierung ist der Kontrollpfad zustandslos. Blockdiagramm: IR[31 26] Zero 6 Control + Branch RegDst PCSrc MemRead MemtoReg MemWrite ALUSrc RegWrite ALUOp IR[5 0] 2 6 ALU control 4 ALUControl 4 39

Kontrollpfad Der Baustein ALU Control bestimmt die Steuersignale ALUControl für die ALU. Dazu kodiert der Baustein Control den Operationscode der Instruktion (IR[31 26]) in das Signal ALUOp. Mit Hilfe des Funktionscodes der Instruktion (IR[5 0]) werden daraus die Steuersignale ALUControl generiert: Control ALU Control Operation opcode IR[31 26] ALUOp functcode IR[5 0] ALU Funktion ALUControl load word (lw) 100011 00 XXXXXX add 0010 store word (sw) 101011 00 XXXXXX add 0010 branch equal (beq) 000100 01 XXXXXX subtract 0110 add (add) 000000 10 100000 add 0010 subtract (sub) 100010 subtract 0110 and (and) 100100 AND 0000 or (or) 100101 OR 0001 set on less than (slt) 101010 setonlessthan 0111 4 40

Kontrollpfad Der Baustein Control bestimmt die Steuerungssignale für den Datenpfad, die Zwischensignale für den Baustein ALU Control sowie das Signal Branch. Das Steuerungssignal PCSrc ergibt sich aus PCSrc = Branch && Zero. Instruktion IR[31 26] RegDst ALUSrc Memto Reg Reg Write Mem Read Mem Write Branch R Typ 000000 1 0 0 1 0 0 0 10 lw 100011 0 1 1 1 1 0 0 00 sw 101011 X 1 X 0 0 1 0 00 beq 000100 X 0 X 0 0 0 1 01 ALUOp Eingangssignale Ausgangssignale 4 41

Datenpfad und Kontrollpfad PCSrc ALUControl 4 42

Datenpfad und Kontrollpfad Erweiterung mit der Instruktion jump (j): 4 43

Rechenleistung Der längste Pfad bestimmt die minimale Taktperiode. Die lw Instruktion dauert länger als alle anderen: Instruction Fetch Register Fetch Execute on ALU Memory Access Register Write Aus technischen Gründen kann man die Taktperiode nicht dynamisch anpassen. Effizienzsteigerung durch Pipelining. 4 44