Processoren: Enkelt-cyklus implementation



Relaterede dokumenter
Processoren: Fler-cyklus implementation

DATALOGI MASKINARKITEKTUR

Maskinsprog. Martin Zachariasen, DIKU. Programmer og ordrer. Ordretyper. Operander og deres placering. Ordreformat. Procedurekald. Andre arkitekturer

Dat1E G2 - En enkelt/dobbelt-cyklus mikroarkitektur. Espen Højsgaard Rune Højsgaard Christian Iversen

DATALOGI MASKINARKITEKTUR Blok 2 samt Reeksamination i DATALOGI MASKINARKITEKTUR Blok 1 og arkitekturdelen af DATALOGI 1E

To mikroarkitekturer til MIPS Karakteropgave på Maskinarkitektur 1B

DATALOGI 1E. Skriftlig eksamen torsdag den 3. juni 2004

DATALOGI 1E. Skriftlig eksamen mandag den 23. juni 2003

Niveauer af abstrakte maskiner

Niveauer af abstrakte maskiner

DATALOGI 1E. Skriftlig eksamen fredag den 7. juni 2002

Indhold. Maskinstruktur Kapitel 1. Assemblersprog Indledning Hop-instruktioner Input og output...

Niveauer af abstrakte maskiner

DATALOGI 1E. Vejledende løsninger til Skriftlig eksamen fredag den 7. juni 2002

DATALOGI 1E. Vejledende løsninger til Skriftlig eksamen mandag den 28. maj min min min min.

DATALOGI 1E. Vejledende løsninger til Skriftlig eksamen mandag den 23. juni 2003

dcomnet-nr. 8 Simpel aritmetik på maskinniveau Computere og Netværk (dcomnet)

ECE 551: Digital System * Design & Synthesis Lecture Set 5

CPUer og maskinkode DM534. Rolf Fagerberg

LX5280. High-Performance RISC-DSP for IP Licensing

uprocessorens hardware

Grundlæggende køretidsanalyse af algoritmer

DATALOGI 1E. Skriftlig eksamen fredag d. 16. januar 2004

University of Southern Denmark Syddansk Universitet. DM502 Forelæsning 2

KNX løsninger til. Erhvervsbygninger. KNX Automatisk dagslysregulering med foldedørsstyring og manuel dæmp

Lyskryds. Thomas Olsson Søren Guldbrand Pedersen. Og der blev lys!

Scope start stop Space bar kan også bruges. Start/Stop

Dat1E K1-1 - En pipelinet mikroarkitektur. Espen Højsgaard Rune Højsgaard Christian Iversen

Oversigt. Indhold mm.5: Latch es og flip-flops Analyse af synkrone sekventielle kredsløb Syntese. Boolsk algebra, byggeblokke,

MIPS, registerallokering og MARS

Computerarkitektur. - en introduktion til computerarkitektur med LINDA

K1 - En pipelinet mikroarkitektur

Egenskaber for ROM/RAM

DATALOGI 1E. Vejledende løsninger til Skriftlig eksamen torsdag den 16. januar 2003

dcomnet-nr. 6 Talrepræsentation Computere og Netværk (dcomnet)

Microcontroller, Arduino

Det Digitale Niveau. Niels Olof Bouvin Institut for Datalogi Aarhus Universitet

Mikroprogrammering. Niels Olof Bouvin Institut for Datalogi Aarhus Universitet

Eksamen dcomnet Q2/2010. Navn

Repræsentation af tal

Datamaskiners ydeevne

Arduino Programmering

Algorithms & Architectures II

Microcontroller, Arduino

Repræsentation af tal

User Guide AK-SM 720 Boolean logic

Boolesk Algebra og det binære talsystem - temahæfte informatik. Oprindelse.

Interrupt - Arduino. Programmering for begyndere Brug af Arduino. Kursusaften 6 EDR Hillerød Knud Krogsgaard Jensen / OZ1QK

NETLON. KV2_2b beskrivelse. Dette dokument indeholder en beskrivelse af en KV2 klasseværelsesstyring fra Netlon.

Repræsentation af tal

Algoritmer og Datastrukturer 1

Repræsentation af tal

Oversættere Skriftlig eksamen onsdag d. 25. januar 2006

Bits, bit operationer, integers og floating point

Forslag til løsning af Opgaver til afsnittet om de naturlige tal (side 80)

Basic Design Flow. Logic Design Logic synthesis Logic optimization Technology mapping Physical design. Floorplanning Placement Fabrication

Grundlæggende Algoritmer og Datastrukturer. Analyseværktøjer [CLRS, 1-3.1]

Engineering of Chemical Register Machines

Journal JTAG: Udarbejde af: Benjamin Grydehøj I samarbejde med PDA Projektgruppen. Elektronikteknologafdelingen på Erhvervsakademi Fyn.

Typisk modul-opbygget PLC system (Allan Bradley)

Video Projector Controller. Brugermanual

16. marts P NP. Essentielle spørgsmål: NP P? Et problem Q kaldes NP -fuldstændigt 1 Q NP 2 R NP : R pol Q. Resume sidste gang

Internt interrupt - Arduino

AVR MP Ingeniørhøjskolen i Århus Michael Kaalund

Boolsk algebra For IT studerende

TG 8. Indhold: TG8 - Kredsløbsbeskrivelse Gruppemedlemmer: Kim Andersen, Kasper Jensen & Thyge Mikkelsen Dato: Modtaget af: Søren Knudsen

Typisk PC arkitektur. Synkronisering ved aktiv venten

Algoritmer og Datastrukturer 1. Gerth Stølting Brodal

Programmering. Det rent og skært nødvendige, det elementært nødvendige! Morten Dam Jørgensen

Planen for idag. Kontrol af ydre enheder. Systemarkitektur. Synkronisering ved aktiv venten. Multiprogrammering[1]: Ydre enheder og multiprogrammer

CANSAT & ARDUINO step by step

Algoritmedesign med internetanvendelser ved Keld Helsgaun

DM13-1. Obligatorisk opgave E.05. Jacob Aae Mikkelsen

Interconnect. Front end interface

2x50 ETHERNET MODUL. RS485 slave med Ethernet-IP. Gælder for: Program nr.: AUXSLAVE v1 Dokument nr.: 0422md2x50-2v1 Dato:

16. december. Resume sidste gang

3. Computerens opbygning.

SSI GSM PORT kontrol brugervejledning. SSI GSM PORT brugervejledning V1.2

TS1000 Special områder

Om at udregne enkeltstående hexadecimaler i tallet pi

KNX løsninger til. Erhvervsbygninger. KNX Automatisk dagslysregulering med foldedørsstyring og manuel dæmp

Opgave: BOW Bowling. Rules of Bowling. danish. BOI 2015, dag 1. Tilgængelig hukommelse: 256 MB

Verilog HDL. Presented by: Amir Masoud Gharehbaghi

Et udtryk på formena n kaldes en potens med grundtal a og eksponent n. Vi vil kun betragte potenser hvor grundtallet er positivt, altså a>0.

Quick Setup Guide SB168-ES og M7CL Dansk version

Indholdsfortegnelse :

Dynamisk programmering

WT-1011RC Programmer User Guide

Computeren inderst inde

Speciale. Evaluering af Java til udvikling af indlejrede realtidssystemer ved brug af en eksisterende Java Optimized Processor (JOP)

\ \ Computerens Anatomi / /

MIPS modulet og registerallokatoren

GSM REMOTE CONTROL AND MONITORING SYSTEM Model: GSM-220

DM507 Algoritmer og datastrukturer

Noter til C# Programmering Selektion

Sproget Rascal (v. 2)

Programmering i maskinkode på AMIGA

INSTRUKTION. OJ-DV Hterm. OJ Drives A DRIVES PROGRAMME DEDICATED TO VENTILATION SOLUTIONS /15 (OSH) 2015 OJ Electronics A/S

Skriftlig Eksamen Algoritmer og Datastrukturer (dads)

Alle dip 1 7 sættes til On for at opnå stand-alone operation fra PC.

Transkript:

Processoren: Enkelt-cyklus implementation Martin Zachariasen, DIKU Litteratur: Patterson & Hennessy, afsnit 5.1 5.3 Historisk tilbageblik MIPS-arkitekturen/delmængde Klokning og byggeklodser Opbygning af datavej Fastlæggelse af kontrol 1

Historisk tilbageblik Den første stored-program maskine udførte sit første program 21. juni 1948 ( Small Scale Experimental Machine bygget i Manchester). Specifikation: 32-bit ordlængde Seriel aritmetik med 2-komplement heltal Alle ordrer indkodet i et ord RAM på 32 ord Klokcyklustid på 1.2 millisekunder (arbejdsfrekvens 800 Hz) 2

Det første program... Find den højeste faktor af et tal: Givet et tal prøv at dividere med alle tal fra ned til indtil går op i. Division udført ved gentagen subtraktion af. Programmet blev indkodet v.hj.a. 19 maskinordrer. Det lykkedes f.eks. at finde den højeste faktor af, som er ; omkring 2.1 millioner ordrer blev udført og det tog ialt 52 minutter at finde denne faktor. 3

Delmængde af MIPS-arkitekturen R-type add, sub, and, or, slt Eksempel: sub $s0,$t0,$t1 Opererer på tre registre. Data læses fra to registre (kilder), resultatet udregnes og placeres i et tredie register (destination). Dataoverførsel lw, sw Eksempel: sw $t0,48($s3) Opererer på to registre og en konstant. Adressen udregnes som værdien af det ene register med den angivne konstant som offset. Data der overføres hentes fra/skrives til det andet register. Betinget hop beq Eksempel: beq $s3,$s4,l1 Sammenligner to registres værdier. Hvis de er ens hoppes til addressen givet ved en konstant; denne adresse er et offset, dvs. relativ til adressen af den aktuelle ordre. 4

MIPS-arkitekturen (på højt niveau) Funktionelle enheder: Tilstandselementer: husker tilstand programtælleren (PC), registerbank, ordre- og datalager Kombinatoriske enheder: ingen hukommelse aritmetisk-logisk enhed (ALU), kontrol, etc. Data Register # PC Address Instruction Registers ALU Instruction memory Register # Register # Address Data memory Data (fig. 5.1) 5

Klokningsmetoder Kombinatorisk logik, tilstandselementer og klokning hænger sammen. State element 1 Combinational logic State element 2 Clock cycle (fig. 5.2) Der skrives i tilstandselementer på nedadgående flanke af klokpulsen, når skrivesignalet er sat (asserted). 6

Det basale tilstandselement: Flip-flop En flip-flop trigget på nedadgående kant (flanke) To inputs: dataværdi (D) og kloksignalet (C) To outputs: værdien (Q) og dens komplement D s værdi skal være stabil når kloksignalet skifter fra sand til falsk. D D D latch C Q D D latch C Q _ Q Q _ Q C (fig. B.15) D C Q (fig. B.16) 7

Kritisk vej og cyklustid Kritisk vej: den langsomste ( længste ) vej mellem to tilstandselementer Cyklustiden afhænger af den kritiske vejs længde, som er summen af: 1. Propageringstid i første tilstandselement 2. Propageringstid igennem kombinatoriske elementer 3. Setup-tid i andet tilstandselement D Q Flip-flop C Combinational logic block D Q Flip-flop C t prop t combinational t setup (fig. B.30) 8

Ordrelæsning Programtæller (PC), ordrelager og en adder. Add 4 PC address Instruction Instruction memory (fig. 5.5) Ordrerne læses sekventielt fra ordrelageret (hop endnu ikke tilføjet). 9

R-type ordrer Eksempel: sub $s0,$t0,$t1 op 31-26 rs 25-21 rt 20-16 rd 15-11 shamt 10-6 funct 5-0 Benytter kun registerbanken og en ALU. Instruction register 1 register 2 Registers register data data 1 data 2 Reg 3 ALU operation Zero ALU ALU result (fig. 5.7) Data læses fra to registre (kilder) og resultatet skrives til et tredie register (destination). 10

Læsning fra registerbank Opbygges af flip-flops; har to læseporte: register number 1 register number 2 Register 0 Register 1 Register n 2 Register n - 1 M u x data 1 M u x data 2 (fig. B.19) 11

Skrivning til registerbank Klokpulsens flanke og signal styrer skrivning til registre: 0 1 C D Register 0 Register number Decoder n 2 n - 1 C D Register 1 Register data C Register n 2 D C Register n - 1 D (fig. B.20) 12

Dataoverførsel Eksempel: sw $t0,48($s3) op 31-26 rs 25-21 rt 20-16 address 15-0 Benytter ALU en (dens adder-funktion) til at beregne adressen hvorfra data skal hentes/gemmes. Adresseforskydningen (offset) fortegnsforlænges fra 16 til 32 bit. Instruction register 1 register 2 Registers register data Reg data 1 data 2 3 ALU operation Zero ALU ALU result Address data Mem Data memory data 16 Sign 32 extend Mem (fig. 5.9) 13

Eksempel: beq $s3,$s4,l1 op 31-26 rs 25-21 Betinget hop rt 20-16 address 15-0 Hopadressen findes som sum af forskydning og PC+4. Forskydningen fortegnsforlænges og rykkes to bit til venstre (f.eks. ); vi udnytter at den altid er en ord-adresse. PC + 4 from instruction datapath Add Sum Branch target Shift left 2 Instruction register 1 register 2 Registers register data Reg data 1 data 2 16 Sign 32 extend 3 ALU ALU operation Zero To branch control logic (fig. 5.10) 14

Opbygning af datavejen Multiplexere benyttes til at sammensætte de funktionelle enheder. PCSrc 4 Add Shift left 2 Add ALU result M u x PC address Instruction Instruction memory register 1 register 2 register data Registers data 1 data 2 Reg 16 Sign 32 extend ALUSrc M u x 3 ALU operation Zero ALU ALU result Address data Mem Mem data Data memory MemtoReg M u x (fig. 5.13) 15

Kontrolenheder Kontrolenhederne fastlægger datavejen for de forskellige ordretyper. ALU kontrolenhed Styring af ALU baseret på ALUOp og ordrens funct felt. Hoved-kontrolenhed Styring af alle andre enheder og ALU kontrolenheden baseret på ordrens opkode. Man kunne godt lave én kontrolenhed, men den ville have været unødvendig stor og (måske) langsommere. 16

ALU kontrolenhed ALU operationer og styrekoder 000 and 001 or 010 add 110 subtract 111 set on less than ALU kontrolenheden benytter ALUOp som input: Ordre ALUOp Funktionskode ALU operation A F Op 10 543210 210 lw/sw 00 xxxxxx 010 beq 01 xxxxxx 110 add 10 100000 010 sub 10 100010 110 and 10 100100 000 or 10 100101 001 slt 10 101010 111 17

Implementation af ALU kontrolenhed Forkortet logisk udtryk: Konvertering til gates: ALUOp ALUOp0 ALUOp1 ALU control block F3 Operation2 F (5 0) F2 F1 F0 Operation1 Operation0 Operation (fig. C.3) Bemærk at nogle af styreledningerne slet ikke benyttes (er don t cares). 18

Hoved-kontrolenhed Skal fastlægge værdien af alle styrelinier ud fra ordrens opkode. Der er ialt 9 styrelinier: RegDst: Skriv register svarende til bit 20-16 (0) eller bit 15-11 (1) ALUSrc: Den anden ALU operand er det andet register (0) eller den fortegnsforlængede konstant (1) MemtoReg: Skriv register med data fra ALU (0) eller fra datalageret (1) Reg: Skriv register Mem: Læs fra datalageret Mem: Skriv til datalageret Branch: Sekventiel læsning af ordrer (0) eller betinget hop (1) ALUOp1/ALUOp2: Styring af ALU kontrolenhed 19

0 4 Add Instruction [31 26] Control RegDst Branch Mem MemtoReg ALUOp Mem ALUSrc Reg Shift left 2 Add ALU result M u x 1 PCSrc PC address Instruction memory Instruction [31 0] Instruction [25 21] Instruction [20 16] Instruction [15 11] 0 M u x 1 register 1 data 1 register 2 Registers data 2 register data 0 M u x 1 Zero ALU ALU result Address data Data memory data 1 M u x 0 Instruction [15 0] 16 Sign 32 extend ALU control Instruction [5 0] (fig. 5.19)

Hoved-kontrolenhed Forenklet afkodning Ordre Opkode o Styrelinier c 543 210 123 456 789 R 000 000 100 100 010 lw 100 011 011 110 000 sw 101 011 x1x 001 000 beq 000 100 x0x 000 101 RegDst: ALUSrc: MemtoReg: Reg: Mem: Mem: Branch: ALUOp1: ALUOp2: 21

PLA implementation PLA-implementation Ordre Opkode o Mintermer 543 210 (produktled) R 000 000 lw 100 011 sw 101 011 beq 000 100 RegDst: ALUSrc: MemtoReg: Reg: Mem: Mem: Branch: ALUOp1: ALUOp2: 22

PLA implementation (forts.) Inputs Op5 Op4 Op3 Op2 Op1 Op0 R-format Iw sw beq Outputs RegDst ALUSrc MemtoReg Reg Mem Mem Branch ALUOp1 ALUOpO (fig. C.5) 23

Implementation af ubetingede hop Eksempel: j Loop op 31-26 address 25-0 Ny adresse sammensat af: bit 31-28 af bit 25-0 af ordre bits 00 24

Instruction [25 0] Shift Jump address [31 0] left 2 26 28 0 1 4 Add PC+4 [31 28] Instruction [31 26] RegDst Jump Branch Mem Control MemtoReg ALUOp Mem ALUSrc Reg Shift left 2 Add result ALU M u x 1 0 M u x PC address Instruction memory Instruction [31 0] Instruction [25 21] Instruction [20 16] Instruction [15 11] 0 M u x 1 register 1 data 1 register 2 Registers data 2 register data 0 M u x 1 Zero ALU ALU result Address data Data memory data 1 M u x 0 Instruction [15 0] 16 Sign 32 extend ALU control Instruction [5 0] (fig. 5.29)

Hvorfor er enkelt-cyklus processoren ikke effektiv? Hver ordre kræver én klokcyklus, der har samme længde for alle ordrer. Eksempel: Antag følgende operationstider for funktionelle enheder Lagerenheder: 2 ns (meget optimistisk) ALU og addere: 2 ns Registerbank (læsning og skrivning): 1 ns Antag ingen forsinkelse i multiplexere, styreenhed, PC tilgang, fortegnsudvidelsesenhed og i ledninger. 26

Enkelt-cyklus processorens effektivitet Ordretype R lw sw beq j Ordrelager 2 2 2 2 2 Reg.læs 1 1 1 1 ALU-op. 2 2 2 2 Datalager 2 2 Reg.skriv 1 1 Total 6 8 7 5 2 % af mix 44 24 12 18 2 CPU klokcyklus (fast) max: 8 ns CPU klokcyklus (variabel) 6,3 ns Forhold: 8/6,3=1,27 27

Enkelt-cyklus processor med fp-enhed Instr.klasse R lw sw beq j add.d mul.d Instr.lager 2 2 2 2 2 2 2 Reg.læs 1 1 1 1 1 1 ALU-op. 2 2 2 2 8 16 Datalager 2 2 Reg.skriv 1 1 1 1 Total 6 8 7 5 2 12 20 % af mix 27 31 21 5 2 7 7 CPU klokcyklus (fast) max: 20 ns CPU klokcyklus (variabel) 8,1 ns Ydelsesforbedring: 20/8,1 = 2,5 Konklusion: En enkelt-cyklus implementation med fast klokcyklustid er ikke effektiv. Løsning: Bryd udførelsen af en ordre op i mindre dele ved at anvende en fler-cyklus implementation eller pipelining. 28

OPGAVE Der er givet følgende maskinordre: 000000 00001 00011 00010 00000 100100 31-26 25-21 20-16 15-11 10-6 5-0 Før udførelsen af denne ordre har registrene følgende (decimal)værdier: $1 = 4 $2 = 3 $3 = 1 Alle andre registre har værdien 0. Hvad er (decimal)værdien af ALU-resultatet i forbindelse med udførelse af maskinordren? a. 0 b. 2 c. 3 d. 5 29