Digitalteknik och Datorarkitektur 5hp

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

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

Grundläggande datavetenskap, 4p

Datorsystemteknik DVGA03 Föreläsning 8

Digitala System: Datorteknik ERIK LARSSON

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

Digitalteknik och Datorarkitektur

Datorarkitekturer med operativsystem ERIK LARSSON

DatorsystemteknikDAVA14 Föreläsning 9

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

Sekventiella krestar (minne)

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.

Datorarkitektur 1. Sekventiella kretsar (minne) December 2008

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

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

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

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

Digital Aritmetik Unsigned Integers Signed Integers"

Digitalteknik och Datorarkitektur 5hp

Närliggande allokering Datorteknik

Tentamen. Datorteknik Y, TSEA28

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

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

Digitalteknik och Datorarkitektur 5hp

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

Lösningar till tentamen i EIT070 Datorteknik

Digitala System: Datorteknik ERIK LARSSON

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)

Läsminne Read Only Memory ROM

Tentamen. Datorteknik Y, TSEA28

Stack och subrutiner Programmeringskonventionen

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

TSEA28 Datorteknik Y (och U)

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

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

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

TSEA28 Datorteknik Y (och U)

Tentamen. Datorteknik Y, TSEA28

Datorarkitekturer med operativsystem ERIK LARSSON

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

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

Digitalteknik EIT020. Lecture 15: Design av digitala kretsar

Pipelining i Intel Pentium II

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

Pipelining i Intel 80486

Tentamen. Datorteknik Y, TSEA28

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

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

Tenta i Digitalteknik

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

Tentamen. Datorteknik Y, TSEA28

IE1204 Digital Design

Datorarkitekturer med operativsystem ERIK LARSSON

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

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

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

Tenta i Digitalteknik

Digital elektronik CL0090

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

Tentamen. Datorteknik Y, TSEA28

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

TSEA28 Datorteknik Y (och U)

4. Pipelining. 4. Pipelining

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

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

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

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

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

Module 1: Functions, Limits, Continuity

Tenta i Digitalteknik

Tentamen den 12 januari 2017 Datorarkitektur med operativsystem, EDT621

Calculate check digits according to the modulus-11 method

Tenta i Digitalteknik

Tentamen PC-teknik 5 p

SVAR TILL TENTAMEN I DATORSYSTEM, VT2013

Minnet från processorns sida Datorteknik

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

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

Styrteknik 4.5/7.5 hp distans: Tidskretsar, räknare

Digital- och datorteknik

Talrepresentation. Heltal, positiva heltal (eng. integers)

Tentamen. Datorteknik Y, TSEA28

Tenta i Digitalteknik

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

IE1205 Digital Design: F6 : Digital aritmetik 2

Tentamen i EIT070 Datorteknik

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

Besvara de elektroniska frågorna (se kurshemsidan). Läs kapitel i kursbok.

CE_O1. Nios II. Enkla assembler-instruktioner.

Tentamen (Exempel) Datorteknik Y, TSEA28

Hantering av hazards i pipelines

TSEA28 Datorteknik Y (och U)

4 grundregler. Minneshantering. Problemet. Windows minkrav

Tenta i Digitalteknik

Tentamen. Datorteknik Y, TSEA28

Laboration nr 3 behandlar

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

Transkript:

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 = + Digitalteknik och Datorarkitektur hp path & Control maj 2 karl.marklund@it.uu.se Execute Decode Vi börjar med Fetch. Fetch = + Execute Decode MEMORY ress Content xffffffff xfffffffe xfffffffd xfffffffc... x x2 x x Kan inneålla både data och instruktioner (stored program concept). I detta fall har jag valt bitars adress adresserbara minnes-celler...... som innehåller 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...... och nu skrivs data till minnet.... Dvs för att skriva data måste klockan gå från låg till hög. x97 x97 Klockan == Låg () För att skriva data måste out sättas till. Ändrar Klockan till hög ()...

Prövar med både output (read) och input (write) data. 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. Ändrar till adress... och nu blir går det galet! Försöker läsa från minnet och write data input samtidigt!!! Dvs, blir en blandning av Ändrar till (read)... 2 (x7) och 2 (x9) Three State Buffer Three State Buffer: släpper bara igenom D vid out = (read) 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). Three State Buffer: släpper bara igenom vid out = (write) 2

A RAM with bit address and 2 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 2 2 En adress Ett ord Kan enkelt kolla om en address inte anger ett alignat ord. 2 bitars byte-adress. Men i MIPS är varje adress på 2 bitar......och varje address anger en byte. Konverterar till bitars ord-adress. Ett ord börjar alltid på en adress som är jämnt delbar med fyra. Nästa instruktion ligger byte l ngre fram. Byte adress konverterat till ord-adress. Maskininstruktion: x2 Vi börjar bygga en datapath. A datapath is a collection of functional units, such as s or multipliers, that perform data processing operations. 2 bitars byte-adress. ress 2 bit instruction Most processors consist of a datapath and a unit, with a large part of the unit dedicated to regulating the interaction between the datapath and memory. Fetch = + För att hämta en instruktion från minnet läser vi helt enkelt på den plats som anger. Execute Decode För att hämta nästa instruktion flyttar vi fram 2 bitar, dvs fyra bytes.

Nästa instruktion ligger byte l ngre fram. Byte adress konverterat till ordadress. Maskininstruktion: x2 Fetch = + Vi har kollat på Fetch och det är nu dags att studera avkodningsfasen (decode) 2 bitars byte-adress. Execute Decode Op Code == R-Format op rs rt rd 9 shamt funct 2 Maskininstruktion: x2 Maskininstruktion: x2 add $t, $t, $t Op Code == R-Format Func == 2 add Op Code == R-format Func == 2 add op rs rt rd 9 shamt funct 2 op rs rt rd 9 shamt funct 2 6 bits Write result bits to this register bits for add, bitssub, and, bitslt, etc 6 bits op rs rt rd shamt funct Operand-2 register allways here for add, sub, and slt, etc but also for sw (value to store) 6 bits bits bits 6 bits op rs rt address/constant Operand- register always here even for lw/sw (base register) 6 bits op 26 bits Target address Write result to this register for lw and addi I-type J-type Avkodning av instruktion Op Code = I-format $ $to 7 2 bits addi $t, $, 7 OP always here

Slutligen skall vi i detalj se hur det går till när en instruktion utörs (execute). Fetch = + We have already seen how we can build a complete register file. Execute Decode register a bit bit register b bit s bit OP Kant-triggad D-Latch. register c bit bit Sätter ihop fetch... Med (add, sub, and, or, slt...) och med I-type lw/sw Sätter ihop fetch... Med (add, sub, and, or, slt...) och med I-type lw/sw ress r r 2 Write r ress ress r r 2 Write r ress Mem 6 2 Mem Skall resultatet tolkas som en address (lw/sw) eller som ett resultatet av till exempel en addition? Vid lw och sw har vi 6 bitars konstant (offset) som måste bli til 2 bitar. Sätter ihop fetch... Med (add, sub, and, or, slt...) A simple datapath och med I-type lw/sw ress r r 2 Write r 6 2 Src ress Mem Control lines Function AND OR add sub slt NOR bit 2 bit Vilken input påverkar kontrollenheten?? This is a sub set of all the possible four bit bit patterns

Op code LW SW equal Alu Op op Load Word Store Word equal Subtract AND OR Set less than Sannings-tabell Funct field xxxxxx xxxxxx xxxxxx Karnough-diagram action Subtract Subtract And Or Set on less than input ress Single Cycle path with Control Multiplexer Instr[-] Op Instr[-26] Instr[2-2] Instr[2-6] Instr[ -] Instr[-] Control Src r r 2 Write r 6 2 Instr[-] Src Mem ress Hårdvara Hur ser det ut för en instruktion av R-typ? R type Op Instr[-26] Control Src Src Mem Op Instr[-26] Control Src Src Mem Instr[2-2] r Instr[2-6] r 2 Instr[-] ress Write r Instr[ -] ress Instr[2-2]` r Instr[2-6] r 2 Instr[-] ress Write r Instr[ -] ress Instr[-] 6 2 Instr[-] 6 2 Instr[-] Instr[-] Hur ser det ut för Load Word (I-typ)? Load Word Op Instr[-26] Control Src Src Mem Op Instr[-26] Control Src Src Mem Instr[2-2] r Instr[2-6] r 2 Instr[-] ress Write r Instr[ -] ress Instr[2-2]` r Instr[2-6] r 2 Instr[-] ress Write r Instr[ -] ress Instr[-] 6 2 Instr[-] Instr[-] 6 2 Instr[-] 6

beq Kodas som 6 bitars jump offset för att ange hur många instruktioner vi skall hoppa (framåt eller bakåt) $t, $t2 my_label on Equal (beq) Op Instr[-26] Control Src Src Mem Hur funkar branchinstruktioner... Instr[-] ress Instr[2-2]` Instr[2-6] Instr[ -] Instr[-] r r 2 Write r 6 2 ress Instr[-] Vi tar en närmare titt på hur n skulle kunna se ut. 2 bit Control lines Function AND OR add sub slt NOR bit Vi nöjer oss med en som klarar dessa 6 operationer. NOT B = - (two s complement) ( (NOT B) + ) + A = A - B - = 2 + = Get sign negative Op Code ADD The third bit from the left in the OP code selects B inverse and also function as carry in. 7

A B A OR B A AND B!A!B NOT (A OR B)!A AND!B AND = Op Code of all es A B A OR B A AND B!A!B NOT (A OR B)!A AND!B NOT (A AND B)!A OR!B A NOR B De Morgan's laws not (A and B) = (not A) or (not B) (NOT ) AND (NOT ) = NOT (A OR B) not (A or B) = (not A) and (not B) Augustus De Morgan (6-7) Two most significant bits select!a and!b Two least significant bits selects the the upper most input to the result MUX. 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 $t, $t2, $t2

Och registren Här hittar vi register, dvs $t - $t. 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 add $t2, $t, $t add $t, $t2, $t2 Vi kan använda spim för att få fram maskinkoden för vårt program. Sätter $t konstant till v2. raw 92 2 Sätter $t konstant till Nu kan vi spara maskinkoden i en vanlig textfil i det format som RAM-modulen kan använda. Innehållet I $t Lägger till fler prober så att det blir lättare att följa vad som händer. Här avkodas instruktionen. rs = ($t) Innehållet I $t rt = 9 ($t) rd = ($t2) rs OP Code för add add $t2, $t, $t add $t, $t2, $t2 Resultatet skrivs tillbaka till $t2 Varför är klocksignalen till registerfilen inverterad? 9

rs Nu lägger vi till stöd för addi addi $t, $, 27 add $t2, $t, $t add $t, $t2, $t2 6 bits bits bits 6 bits op rs rt address/constant Resultat till detta register add $t2, $t, $t add $t, $t2, $t2 Op Code 2 = s andra input kan nu komma från ett register eller från immediate-fältet. Men vi kan inte addera ett 2 bitars tal med ett 6 bitars tal (two s complement). Extension I detta fall skall resultatet skrivas till rt och inte som tidigare till rd. 6 bit Immediate Vi kan automatiser styrsignalerna till MUXarna genom att titta på bit tre från vänster I OP-koden. Resultatet skrivs till rt ($t) l samma som för add addi $t, $, 27 add $t2, $t, $t add $t, $t2, $t2 addi $t, $, 27 addi $t, $, add $t2, $t, $t add $t, $t2, $t2

addi $t, $, 27 addi $t, $, add $t2, $t, $t add $t, $t2, $t2 addi $t, $, 27 addi $t, $, add $t2, $t, $t add $t, $t2, $t2 Nu lägger vi till stöd för sub addi $t, $, 27 addi $t, $, add $t2, $t, $t add $t, $t2, $t2 sub $t, $t, $t addi $t, $, 27 addi $t, $, add $t2, $t, $t add $t, $t2, $t2 sub $t, $t, $t addi add sub OP Code Funct xxx xxx Control För vår enkla MIPS med endast add, addi och sub kan vi enkelt härleda Control från en bit ur OP-koden och en bit ur funct-fältet.. Hur kan vi beräkna den näst mest signifikanta biten i Control? I vår förenklade variant av MIPS är alla bitar utom en konstant. addi $t, $, 27 addi $t, $, add $t2, $t, $t add $t, $t2, $t2 sub $t, $t, $t addi $t, $, 27 addi $t, $, add $t2, $t, $t add $t, $t2, $t2 sub $t, $t, $t Samma som för addi Nu ändras Control från till.