Foto: Rona Proudfoot (some rights reserved) Datorarkitektur 1. Datapath & Control. December

Relevanta dokument
Digitalteknik och Datorarkitektur 5hp

c a OP b Digitalteknik och Datorarkitektur 5hp ALU Design Principle 1 - Simplicity favors regularity add $15, $8, $11

Datorarkitektur I. Tentamen Lördag 10 April Ekonomikum, B:154, klockan 09:00 14:00. Följande gäller: Skrivningstid: Fråga

Digitala System: Datorteknik ERIK LARSSON

Grundläggande datavetenskap, 4p

Digitalteknik och Datorarkitektur

Datorsystemteknik DVGA03 Föreläsning 8

Datorteknik. Föreläsning 6. Processorns uppbyggnad, pipelining. Institutionen för elektro- och informationsteknologi, LTH. Mål

Datorarkitekturer med operativsystem ERIK LARSSON

Sekventiella krestar (minne)

rd, rs, rt Digitalteknik och Datorarkitektur 5hp ALU register) 32 bit register b 5 bit 32 Registers 32 bit MIPS is a Register-toregister

NUV 647E. Digitalteknik och Datorarkitektur 5hp. 3x12 = 36 2x12 = 24 1x12 = 12 0x12 = 18

Lösningar till valda övningsuppgifter i. Computer Organization & Design The Hardware / Software Interface (2nd ed.)

Datorarkitektur 1. Sekventiella kretsar (minne) December 2008

DatorsystemteknikDAVA14 Föreläsning 9

Styrteknik: Binära tal, talsystem och koder D3:1

Tentamen. Datorteknik Y, TSEA28

Digitalteknik och Datorarkitektur 5hp

En något mer detaljerad bild av en processor. De tre delarna i processorn är: Nere 3ll vänster finns e' antal register som används för a' lagra data.

En något mer detaljerad bild av en processor. De tre delarna i processorn är: Nere 3ll vänster finns e' antal register som används för a' lagra data.

Tentamen i kursen EDA330. Datorsystemteknik D 1/ Lösningar: Anslås tisdag 1/6 på institutionens anslagstavla utanför laboratoriet

Tentamen. Datorteknik Y, TSEA28

Närliggande allokering Datorteknik

System S. Datorarkitektur - en inledning. Organisation av datorsystem: olika abstraktionsnivåer. den mest abstrakta synen på systemet

Tentamen. Datorteknik Y, TSEA28

Datormodell. Datorns uppgifter -Utföra program (instruktioner) Göra beräkningar på data Flytta data Interagera med omvärlden

Lösningar till tentamen i EIT070 Datorteknik

F2: Motorola Arkitektur. Assembler vs. Maskinkod Exekvering av instruktioner i Instruktionsformat MOVE instruktionen

Tentamen. Datorteknik Y, TSEA28

Program kan beskrivas på olika abstrak3onsnivåer. Högnivåprogram: läsbart (för människor), hög abstrak3onsnivå, enkelt a> porta (fly>a 3ll en annan ar

Det finns en handledning till kortet på hemsidan. AVR STK500.

Digitala System: Datorteknik ERIK LARSSON

Datorteknik. Tomas Nordström. Föreläsning 2. För utveckling av verksamhet, produkter och livskvalitet.

Tenta i Digitalteknik

TSEA28 Datorteknik Y (och U)

Övning1 Datorteknik, HH vt12 - Talsystem, logik, minne, instruktioner, assembler

Läsminne Read Only Memory ROM

Digital Aritmetik Unsigned Integers Signed Integers"

Tentamen. Datorteknik Y, TSEA28

Minnet. Minne. Minns Man Minnet? Aktivera Kursens mål: LV3 Fo7. RAM-minnen: ROM PROM FLASH RWM. Primärminnen Sekundärminne Blockminne. Ext 15.

TSEA28 Datorteknik Y (och U)

Vad bör göras? Steg 1. RISC => pipelining. Parallellism. Pipelining. Nya LDA 13. RISC(reduced instruction set computer) Öka klockfrekvensen

Tentamen i Digitala system - EDI610 15hp varav denna tentamen 4,5hp

Tentamen. Datorteknik Y, TSEA28

Datorarkitekturer med operativsystem ERIK LARSSON

IBM POWER4, den första flerkärniga processorn och dess pipelines.

Ext-13 (Ver ) Exempel på RTN-beskrivning av FLEX-instruktioner

Tentamen i kursen EDA330. Datorsystemteknik D 14/ Lösningar: Anslås måndag 17/1 på institutionens anslagstavla utanför laboratoriet

Digitalteknik och Datorarkitektur 5hp

GRUNDER I VHDL. Innehåll. Komponentmodell Kodmodell Entity Architecture Identifierare och objekt Operationer för jämförelse

0.1. INTRODUKTION Instruktionens opcode decodas till en språknivå som är förstålig för ALUn.

Läs igenom hela laboration 5 innan du börjar beskriva instruktionsavkodaren i VHDL!

Ett minneselements egenskaper. F10: Minneselement. Latch. SR-latch. Innehåll:

Tenta i Digitalteknik

Ext-13 (Ver ) Exempel på RTN-beskrivning av FLEX-instruktioner

Tentamen den 12 januari 2017 Datorarkitektur med operativsystem, EDT621

Pipelining i Intel Pentium II

Tentamen. Datorteknik Y, TSEA28

Tentamen. Datorteknik Y, TSEA28

Institutionen för elektro- och informationsteknologi, LTH

Datorteknik. Föreläsning 2. Programmering i C och assembler MIPS instruktionsarkitektur. Institutionen för elektro- och informationsteknologi, LTH

Digital elektronik CL0090

Stack och subrutiner Programmeringskonventionen

Datorsystem 2 CPU. Förra gången: Datorns historia Denna gång: Byggstenar i en dators arkitektur. Visning av Akka (för de som är intresserade)

SVAR TILL TENTAMEN I DATORSYSTEM, VT2013

Mål. Datorteknik. Innehåll. Vad händer med en add-instruktion? Vad händer med en add-instruktion. Instruktioner som bitmönster i minnet

Datorarkitekturer med operativsystem ERIK LARSSON

Omtentamen i CDT204 - Datorarkitektur

General Purpose registers ALU I T H S V N Z C SREG. Antag att vi behöver skriva in talet 25 till register R18

Tentamen. Datorteknik Y, TSEA28

Tentamen (Exempel) Datorteknik Y, TSEA28

Pipelining i Intel 80486

Pipelining. March 17, Howard Huang 1

VHDL Basics. Component model Code model Entity Architecture Identifiers and objects Operations for relations. Bengt Oelmann -- copyright

Datorsystemteknik D. Lösningar till tentamen i kursen EDA330 14/1 2000

Module 1: Functions, Limits, Continuity

Program som ska exekveras ligger i primärminnet. Processorn hämtar instruk7on för instruk7on. Varje instruk7on, som är e= antal 1:or och 0:or, tolkas

IE1204 Digital Design

Dataminne I/O Stack 0x005D 0x3D SP low byte 0x005E 0x3E SP high byte

ÖH kod. ( en variant av koden används i dag till butikernas streck-kod ) William Sandqvist

Tenta i Digitalteknik

4. Pipelining. 4. Pipelining

IE1205 Digital Design: F6 : Digital aritmetik 2

Elektroteknik MF1016 föreläsning 9 MF1017 föreläsning 7 Mikrodatorteknik

Minnet från processorns sida Datorteknik

Tentamen PC-teknik 5 p

Digitalteknik EIT020. Lecture 15: Design av digitala kretsar

Tentamen (Exempel) Datorteknik Y, TSEA28

Tentamen den 18 mars svar Datorteknik, EIT070

Övning1 Datorteknik, HH vt12 - Talsystem, logik, minne, instruktioner, assembler

LABORATION DATORTEKNIK D. Pipelining. Namn och personnummer. Version: (OS,OVA,AN)

Extra lab. Nu på fredag kl 8-12 Frivillig Enbart hjälp med projektuppgiften Ingen examination

Processor pipelining genom historien (Intel i9-intel i7)

4 grundregler. Minneshantering. Problemet. Windows minkrav

Datorsystemteknik för D/E

Datorteknik och datornät

DESIGN AV SEKVENTIELL LOGIK

Datorsystemteknik för D/E

Struktur: Elektroteknik A. Digitalteknik 3p, vt 01. F1: Introduktion. Motivation och målsättning för kurserna i digital elektronik

TSEA28 Datorteknik Y (och U)

Transkript:

Datorarkitektur Datapath & Control December 28 karl.marklund@it.uu.se Foto: Rona Proudfoot (some rights reserved)

Vi skall nu kolla närmare på hur det går till när en instruktion utförs. Fetch PC = PC+4 Execute Decode

Vi börjar med Fetch. MEMORY Address Content xffffffff xfffffffe xfffffffd xfffffffc... Kan inneålla både data och instruktioner (stored program concept). Execute Fetch PC = PC+4 Decode x3 x2 x x

I detta fall har jag valt 3 bitars adress 8 adresserbara minnes-celler...... som innehåller 8 bitar vardera. Vi har tidigare sett hur vi kan konstruera minnes-celler och större minnen med hjälp av grundläggande grindar. Det finns färdiga RAM-moduler i Logisim

Anger adress 2 Raising Edge Triggad...... Dvs för att skriva data måste klockan gå från låg till hög. Klockan == Låg () x97 För att skriva data måste out sättas till.

... och nu skrivs data till minnet. x97 Ändrar Klockan till hög ()...

Läser data från adress och får output x9 Värdet på klockan spelar ingen roll vid läsning. För att läsa data måste out sättas till.

Prövar med både output (read) och input (write) data.

Ändrar till adress

... och nu blir går det galet! Försöker läsa från minnet och write data input samtidigt!!! Dvs, Read Data blir en blandning av Ändrar till (read)... 2 (x7) och 2 (x9)

Three State Buffer A B E A (low ) E (low) B High Z When not Enabled (E = ) the three state buffer acts lika a huge resistance, kind of cutting of the wire. (high) (low) High Z (low) (high) (high) (high) (low) (high) When Enabled (E = ) the three state buffer lets the input signal A through. Output B can be in three states, (low), (high) and high resistance (Z).

... Nu går det bra. Three State Buffer Öppnas endast vid skrivning (out == )

Om vi vill skriva till address Inversen av out three state buffer Öppnas Nu skrivs data till minnet. Raising edge

A RAM with 8 bit address and 32 bit data cells.

Kan beskriva inehållet i minnet i en vanlig textfil. Anger innehållet på varje adress som ett hexadecimalt tal. En rad för varje adress. v2. raw 28 8482

En adress Ett ord Men i MIPS är varje adress på 32 bitar......och varje address anger en byte. Ett ord börjar alltid på en adress som är jämnt delbar med fyra.

Kan enkelt kolla om en address inte anger ett alignat ord. 2 minst signifikanta bitarna Nästföljande 6 bitar 32 bitars byte-adress. Konverterar 32 bitars byte adress till 8 bitars ord-adress.

Nästa instruktion ligger 4 byte l ngre fram. Byte adress 4 konverterat till ord-adress. Maskininstruktion: x8482 32 bitars byte-adress.

PC 4 Add Instruction Memory Read Instruction Address Vi börjar bygga en datapath. 32 bit instruction A datapath is a collection of functional units, such as ALUs or multipliers, that perform data processing operations. Most processors consist of a datapath and a control unit, with a large part of the control unit dedicated to regulating the interaction between the datapath and memory. Fetch PC = PC+4 För att hämta en instruktion från minnet läser vi helt enkelt på den plats som PC anger. Execute Decode För att hämta nästa instruktion flyttar vi fram PC 32 bitar, dvs fyra bytes.

Fetch PC = PC+4 Vi har kollat på Fetch och det är nu dags att studera avkodningsfasen (decode) Execute Decode

Nästa instruktion ligger 4 byte l ngre fram. Byte adress 4 konverterat till ordadress. Maskininstruktion: x8482 32 bitars byte-adress. Op Code == R-Format op rs rt rd shamt funct 8 8 9 32

Maskininstruktion: x8482 Op Code == R-Format Func == 32 add op rs rt rd shamt funct 8 8 9 32

Maskininstruktion: x8482 add $t, $t, $t Op Code == R-format Func == 32 add op rs rt rd shamt funct 8 8 9 32

6 bits Write result 5 bits to this register 5 bits for 5 add, bitssub, and, 5 bitsslt, etc 6 bits op rs rt rd shamt funct R-type Operand-2 register allways here for add, sub, and slt, etc but also for sw (value to store) 6 bits 5 bits 5 bits 6 bits op rs rt address/constant I-type Operand- register always here even for lw/sw (base register) 6 bits 26 bits Write result to this register for lw and addi op Target address J-type 32 bits OP always here

Op Code = I-format Avkodning av instruktion $zero $to 7 addi $t, $zero, 7

Slutligen skall vi i detalj se hur det går till när en instruktion utörs (execute). Fetch PC = PC+4 Execute Decode

We have already seen how we can build a complete register file. register a 3 bit 8 bit register b 3 bit Registers 8 bit ALU OP Kant-triggad D-Latch. register c 3 bit 8 bit

Sätter ihop fetch... Med R-type (add, sub, and, or, slt...) och med I-type lw/sw PC 4 Add Instruction Memory Read Instruction Address RegWrite Read Addr Register Read Read Addr 2 Data File Write Addr Read Data 2 Write Data ALU control ovf zero ALU MemWrite Address Data Memory Write Data Read Data MemRead Skall resultatet tolkas som en address (lw/sw) eller som ett resultatet av till exempel en addition?

Sätter ihop fetch... Med R-type (add, sub, and, or, slt...) och med I-type lw/sw PC 4 Add Instruction Memory Read Instruction Address RegWrite Read Addr Register Read Read Addr 2 Data File Write Addr Read Data 2 Write Data ALU control ovf zero ALU MemWrite Address Data Memory Write Data Read Data MemtoReg Sign 6 Extend 32 MemRead Vid lw och sw har vi 6 bitars konstant (offset) som måste bli til 32 bitar.

Sätter ihop fetch... Med R-type (add, sub, and, or, slt...) och med I-type lw/sw PC 4 Add Instruction Memory Read Instruction Address RegWrite Read Addr Register Read Read Addr 2 Data File Write Addr Read Data 2 Write Data ALUSrc ALU control ovf zero ALU MemWrite Address Data Memory Write Data Read Data MemtoReg Sign 6 Extend 32 MemRead A simple datapath

ovf ALU Control lines Function zero ALU 32 bit AND OR add 4 bit sub slt NOR ALU control This is a sub set of all the possible four bit bit patterns

5 ovf zero ALU 3 ALU control

5 3 5+3 = 8 Op Code ADD

NOT B = -4 (two s complement) ( (NOT B) + ) + A = A - B 5 3 5-3 = 2 Get sign negative The third bit from the left in the OP code selects B inverse and also function as carry in.

5 3 5 AND 3 = Op Code of all zeroes

A B A OR B A AND B!A!B NOT (A OR B)!A AND!B

A B A OR B A AND B!A!B NOT (A OR B)!A AND!B NOT (A AND B)!A OR!B De Morgan's laws not (A and B) = (not A) or (not B) not (A or B) = (not A) and (not B) Augustus De Morgan (86-87)

5 A NOR B 3 (NOT 5) AND (NOT 3) = NOT (A OR B) Two most significant bits select!a and!b Two least significant bits selects the the upper most input to the result MUX.

ovf ALU Control lines Function zero ALU 32 bit AND OR add 4 bit Vilken input påverkar kontrollenheten? sub slt NOR ALU control? This is a sub set of all the possible four bit bit patterns

Op code Alu Op Instruction op Funct field ALU action ALU control input LW Load Word xxxxxx Add SW Store Word xxxxxx Add Branch equal Branch equal xxxxxx Subtract R-type Add Add R-type Subtract Subtract R-type AND And R-type OR Or R-type Set less than Set on less than ALU Op: 2 bit output from the control unit Sannings-tabell Karnough-diagram Funct: 6 bits from the instruction Hårdvara

Single Cycle Datapath with Control Unit 4 Add ALUOp Instr[3-26] Control Unit Branch ALUSrc Shift left 2 Add PCSrc MemRead MemtoReg MemWrite PC Read Address Instruction Memory Instr[3-] RegDst Instr[25-2] Instr[2-6] Instr[5 -] RegWrite Read Addr Register Read Read Addr 2 Data File Write Addr Read Data 2 Write Data ovf zero ALU Address Data Memory Write Data Read Data Multiplexer Instr[5-] Sign 6 Extend 32 Instr[5-] ALU control

Hur ser det ut för en instruktion av R-typ? 4 Add ALUOp Instr[3-26] Control Unit Branch ALUSrc Shift left 2 Add PCSrc MemRead MemtoReg MemWrite PC Read Address Instruction Memory Instr[3-] RegDst Instr[25-2] Instr[2-6] Instr[5 -] RegWrite Read Addr Register Read Read Addr 2 Data File Write Addr Read Data 2 Write Data ovf zero ALU Address Data Memory Write Data Read Data Instr[5-] Sign 6 Extend 32 ALU control Instr[5-]

R type 4 Add ALUOp Instr[3-26] Control Unit Branch ALUSrc Shift left 2 Add PCSrc MemRead MemtoReg MemWrite PC Read Address Instruction Memory Instr[3-] RegDst RegWrite Instr[25-2]` Read Addr Register Read Instr[2-6] Read Addr 2 Data File Write Addr Read Instr[5 Data 2 Write Data -] ovf zero ALU Address Data Memory Write Data Read Data Instr[5-] Sign 6 Extend 32 Instr[5-] ALU control

Hur ser det ut för Load Word (I-typ)? 4 Add ALUOp Instr[3-26] Control Unit Branch ALUSrc Shift left 2 Add PCSrc MemRead MemtoReg MemWrite PC Read Address Instruction Memory Instr[3-] RegDst Instr[25-2] Instr[2-6] Instr[5 -] RegWrite Read Addr Register Read Read Addr 2 Data File Write Addr Read Data 2 Write Data ovf zero ALU Address Data Memory Write Data Read Data Instr[5-] Sign 6 Extend 32 ALU control Instr[5-]

Load Word 4 Add ALUOp Instr[3-26] Control Unit Branch ALUSrc Shift left 2 Add PCSrc MemRead MemtoReg MemWrite PC Read Address Instruction Memory Instr[3-] RegDst RegWrite Instr[25-2]` Read Addr Register Read Instr[2-6] Read Addr 2 Data File Write Addr Read Instr[5 Data 2 Write Data -] ovf zero ALU Address Data Memory Write Data Read Data Instr[5-] 6 Sign Extend 32 Instr[5-] ALU control

Kodas som 6 bitars jump offset för att ange hur många instruktioner vi skall hoppa (framåt eller bakåt) beq $t, $t2 my_label Hur funkar branchinstruktioner...

Branch on Equal (beq) 4 Add ALUOp Instr[3-26] Control Unit Branch ALUSrc Shift left 2 Add PCSrc MemRead MemtoReg MemWrite PC Read Address Instruction Memory Instr[3-] RegDst RegWrite Instr[25-2]` Read Addr Register Read Instr[2-6] Read Addr 2 Data File Write Addr Read Data 2 Instr[5 Write Data -] ovf zero ALU Address Data Memory Write Data Read Data Instr[5-] Sign 6 Extend 32 Instr[5-] ALU control

Nu tar vi och bygger en datapath som endast klarar av add instruktionen, ett första försök med en instruktion av R-typ.

För add behöver vi kunna läsa operander från register och skriva resultatet tillbaka till något register. Vi vill kunna skriva program som detta. add $t2, $t, $t add $t3, $t2, $t2

Och registren

Härhittarvi register 8, dvs $t - $t3. Men hur för vi in data I registren om vi inte har addi?

För att vi skall kunna testa vår datapath fuskar vi lite Sätter $t konstant till 5 Sätter $t konstant till 3

add $t2, $t, $t add $t3, $t2, $t2 You can use SPIM to translate the assembly code to MIPS machine instructions. v2. raw 952 8482 The hexadecimal machine instructions can be saved to a file and loaded into the RAM component in Logisim.

Innehållet I $t Här avkodas instruktionen. rs = 8 ($t) Innehållet I $t rt = 9 ($t) rd = ($t2) OP Code för add add $t2, $t, $t add $t3, $t2, $t2 Resultatet skrivs tillbaka till $t2

Lägger till fler prober så att det blir lättare att följa vad som händer. rs Varför är klocksignalen till registerfilen inverterad?

add $t2, $t, $t add $t3, $t2, $t2 rs

Nu lägger vi till stöd för addi addi $t, $zero, 27 add $t2, $t, $t add $t3, $t2, $t2 6 bits 5 bits 5 bits 6 bits op rs rt address/constant Resultat till detta register Op Code 2 = 8

ALUs andra input kan nu komma från ett register eller från immediate-fältet. Men vi kan inte addera ett 32 bitars tal med ett 6 bitars tal (two s complement). I detta fall skall resultatet skrivas till rt och inte som tidigare till rd. 6 bit Immediate

Sign Extension

Resultatet skrivs till rt ($t) ALU controll samma som för add addi $t, $zero, 27 add $t2, $t, $t add $t3, $t2, $t2

Vi kan automatisera styrsignalerna till MUXarna genom att titta på bit tre från vänster I OP-koden. addi $t, $zero, 27 addi $t, $zero, 3 add $t2, $t, $t add $t3, $t2, $t2

addi $t, $zero, 27 addi $t, $zero, 3 add $t2, $t, $t add $t3, $t2, $t2

addi $t, $zero, 27 addi $t, $zero, 3 add $t2, $t, $t add $t3, $t2, $t2

Nu lägger vi till stöd för sub addi $t, $zero, 27 addi $t, $zero, 3 add $t2, $t, $t add $t3, $t2, $t2 sub $t4, $t3, $t OP Code Funct ALU Control addi xxx xxx add sub Hur kan vi beräkna den näst mest signifikanta biten i ALU Control? I vår förenklade variant av MIPS är alla bitar utom en konstant.

addi $t, $zero, 27 addi $t, $zero, 3 add $t2, $t, $t add $t3, $t2, $t2 sub $t4, $t3, $t För vår enkla MIPS med endast add, addi och sub kan vi enkelt härleda ALU Control från en bit ur OP-koden och en bit ur funct-fältet..

addi $t, $zero, 27 addi $t, $zero, 3 add $t2, $t, $t add $t3, $t2, $t2 sub $t4, $t3, $t Samma som för addi

addi $t, $zero, 27 addi $t, $zero, 3 add $t2, $t, $t add $t3, $t2, $t2 sub $t4, $t3, $t Nu ändras ALU Control från till.

Det var allt för idag.