SIE 4005, 2/10 (2. Forelesn.) Første forelesning: 7.1 Datapaths and operations 7.2 Register Transfer operations 7.3 Microoperations (atitm., logic, shift) 7.4 MUX-based transfer 7.5 Bus-based transfer 7.6 Datapaths Andre forelesning: litt repetisjon 7.7 Arithmetic / Logic unit 7.8 The Shifter 7.9 Datapath representation 7.10 The control word 7.11 Pipelined datapath (?) Forelesningsnotater i elektronisk form skal legges på www..
7.6 DATAPATHS, side 357 I stedet for at hvert enkelt register utfører mikrooperasjoner direkte er det ofte hensiktsmessig å ha et antall registre som interagerer med en felles aritmetisk / logisk enhet ( ALU ) Kombinasjonen av registre, delt ALU og logikk for sammenkopling danner da datapath en. (Datapath + kontroll = CPU) En enkel buss-basert datapath med 4 registre, ALU, og shifter shifter er vist i figur 7-9.
Komponenter i DATAPATH fra figur 7-9. Hvert register er koplet til to MUXer som gir ALU og shifter inngangene Buss A og Buss B. A select og B select på MUXene velger ett register for korresponderende buss. Buss B har ekstra MUX for evt konstanter fra utsiden. Buss B kopler også til Data out, for evt å sende data til andre komponenter i syst. (eks memory, I/O). Tilsvarende er buss A koplet til Address out. G select velger mikrooperasjon som skal utføres av ALU. Shift operasjoner utføres på operander på buss B, av shifter. MUX D velger mellom Data in eller utgang av MUX F. Destination select og Load enable benyttes for å plassere resultat i ønsket register. 4 status bit : C(arry), N(egative), Z(ero) og V for overflow.
Kontrollinnganger for R1 R2 + R3 utført av datapath i figur 7-9. A select slik at innhold i R2 plasseres på A data og dermed buss A B select slik at innhold i R3 havner på 0- inngangen på MUX B. MB select slik at R3 havner på buss B. G select slik at operasjon som utføres blir A + B. MF select slik at utgangen av ALU rutes gjennom MUX F. MD select slik at utgangssignaler fra MUX F havner på buss D. Destination select slik at resultatet havner på inngangen av R1. Load enable slik at R1 kan lastes med resultatet. Signalene må dessuten settes tidlig i klokkesyklen, slik at når neste positive klokkeflanke kommer så er resultatet klart til å lastes i destinasjonsregisteret.
7.7 ARITMETISK / LOGISK ENHET (side 360) ALU utfører et sett av basis aritmetiske og logiske mikrooperasjoner. I fig. 7-10 er en typisk n-bit ALU, med datainnganger A og B, hver på n bit, og en data utgang, G, på tilsvarende antall bit. Carry in og Carry out kommer i tillegg. S0 og S1 spesifiserer den aktuelle aritmetiske eller logiske operasjonen. S2 benyttes for å velge mellom enten aritmetiske eller logiske operasjoner.
Aritmetisk enhet (s. 361) Basiskomponent er en n-bit parallell adderer. Ved å kontrollere datainngangene til addereren kan kretsen utføre ulike aritmetiske funksjoner gitt i tabell 7-7. G=X+Y+C in (n-bit ordbredde) Innganger og utganger er inkluderte i figur 7-10 av ALU. Eks.: S 1 =S 0 =1 Y= bare 1ere. Dvs Y=2er komplement representasjon for 1. Hvis C in =0 girdetteg=a 1+0=A-1 (dekrement)
Implementasjon av logikk for B-inngang fra figur 7-11 Til venstre i figur 7-12 a) er alle mulige kombinasjoner av innganger til B input logic fra figur 7-11. Fra tabell 7-7 vet vi at Y i =0 når S 1 =S 0 =0, uavhengig av hva B inng. måtte være. Y i =B i når S 1 =0 og S 0 =1 (fra tab. 7-7). (Det gir rad 3 og 4 i sannhetstab.) Utgangen Y i kan dermed plasseres i Karnaughdiagrammet som vist i fig. 7-12 b). Etter forenkling: Y i =B i S 0 +B i S i
Mulig logisk diagram for aritmetisk enhet fra fig. 7-11 s. 361 i 4-bit versjon. Y i =B i S 0 +B i S 1
Logic unit for de 4 vanligst brukte logiske operasjonene AND, OR, XOR, NOT (De andre kan avledes av disse.) Logisk krets i figur 7-14 består av 4 gater og en 4-1 multiplexer (MUX). Utgangene fra de logiske portene påtrykkes hver sin inngang på MUX. S 0 S 1 velger en av de 4 funksjonene på MUX utgangen. For n bit repeteres kretsstrukturen n ganger.
ALU: Aritmetisk enhet + logisk enhet + MUX (s. 365) Dette er analogt med kretsen i figur 7-10, side 360.
Aritmetisk enhet og logisk enhet pluss MUX ALU S 1 og S 0 kan være felles seleksjonslinjer forutsatt at en tredje benyttes. C in har ingen effekt for logiske operasjoner og er derfor indikert med X. Logikk kunne ha vært forenklet. Færre logiske nivå reduksjon i forsinkelsestid. Carry lookahead adder er aktuelt for å oppnå raskere aritmetikk.
Kombinatorisk shifter, n=4 (7-8, side 366.) S=00: uforandret, S=01: right shift, S=10: left-shift Right shift fyller posisjon lengst til venstre med verdien I R. Left shift fyller posisjonen lengst til høyre med verdien I L. Serielle utganger er tilgjengelige fra Serial output L og Serial output R. Shifting m > 1 posisjoner tar m klokkesykler. Eksempel på left og right shift i tabell 7-5, s. 350.
Barrel Shifter, n= 4 bit (Kap. 7-8, figur 7-16 s. 366) 0101010101 En Barrel shifter er en kombinatorisk krets som roterer input data bit ene med det antall posisjoner som er spesifisert av binær verdi satt av seleksjonslinjene. Den i fig. 7-17 roterer til venstre. S 1 S 0 =00; ikke shift, dvs data rett til utgang. S 1 S 0 =01; rotering en posisjon, med D 0 til Y 1,D 1 til Y 2,D 2 til Y 3 og D 3 til Y 0.
Barrel shifter (Kap. 7-8, tabell 7-9, s. 368) S 1 S 0 =00; ikke shift, dvs data rett til utgang. S 1 S 0 =01; rotering en posisjon, med D 0 til Y 1,D 1 til Y 2,D 2 til Y 3 og D 3 til Y 0. Alle ønskede høyrerotasjoner kan genereres også, siden feks rotasjon 3 plasser til venstre gir samme resultat som rotasjon 1 plass til høyre. For store n blir fan-in for stor slik at store B. S. Består av lag av MUXer eller spesielle strukturer designet på transistornivå.
Datapath representation (kap. 7-9, fig. 7-18 s. 369) Ved å bevege oss oppover i den hierarkiske beskrivelsen av datapath en fra fig. 7-9, s. 359, kan den betraktes som i fig. 7-18 s. 369. Dette medfører reduksjon i den tilsynelatende kompleksiteten. Vanligvis 32 registre eller mer for computer. Et sett av registre som kan ha felles µop utført på seg organiseres gjerne ienregister file. Register file er typisk et raskt minne som tillater at flere ord kan leses ( read ) og skrives ( write ) samtidig. ALU, Shifter og MUX F fra fig. 7-9 er satt sammen i Function unit i fig. 7-18.
Litt mer om signaler og funksjonalitet knytte til datapath i figur 7-18. (7-18, s. 369) Pga registerfilens likhet med minne er A select, B select og Destination inputs (fra datapath i fig. 7-9 s. 359) blitt til tre addresser. A addressen aksesserer et ord som lastes på A data. B addressen aksesserer et ord som lastes på B data. D addressen aksesserer et ord som skrives til fra D data. Alle disse aksessene skjer i samme klokkesyklus. Write input korresponderer med Load Enable fra fig. 7-9. G select, H select MF select fra fig 7-9 er slått sammen til FS (5 linjer/bit).
FS koder og resulterende mikrooperasjoner (kap. 7-9, tab. 7-10 s. 370) MF select er kodet i bit lengst til venstre i FS. Bitkoder for G select finnes i bit 2 (fra venstre) til og med 5 i FS. Bitkoder for H select finnes i bit 2 og 3 i FS. Hvis MF select = 0 er det G select (4 bit) som avgjør funkjsonalitet på utgangen av funksjonsenheten, og i motsatt fall (MF select =1) avgjør H select.
Spesifikk variant av datapath fra fig 7-18 (kap. 7-10, fig. 7-19, s. 370) Seleksjonsvariabler kontrollerer mikrooperasjoner som utføres i løpet av en klokkesyklus. (lesing av data fra register file, funksjon utført av functional unit. 8 registre, R0 til R7. 17 binære kontrollinnganger som kombinert spesifiserer et kontrollord ( control word ), bestående av 7 felter ( fields ) (vist nederst i fig. 7-19). Når det påtrykkes inngangene spesifiserer kontrollordet en bestemt mikrooperasjon.
Funksjoner for kontrollkoder innbakt i kontrollordet (kap. 7-10, tabell 7-11, s. 373) Symbolsk notasjon og binærkode for hvert felt ( field ) i kontrollordet (for datapath i fig. 7-18 s. 369). For DA, AA, og BA korresponderer desimal ekvivalent og binær kode.
Eksempel: kontrollord for R1 R2 + R3 + 1 (vha tabell 7-11 s. 373) Rekkefølge for felter i kontrollord: DA, AA, BA, MB, FS, MD, RW FS: 00101 RW:1 Destinasjon R1:, dvs DA=001 Vi skal ikke ha eksterne data inn, så MD=0. R2 på A-buss krever AA=010 R3 på B-buss gir BA=011. Skal ikke ha konstant utenfra inn på B-buss, så MB=0. Det binære kontrollordet for (subtraksjons-) operasjonen blir: 00101001100010101
Eksempel: kontrollord for R4 sl R6 (vha tabell 7-11 s. 373) Rekkefølge for felter i kontrollord: DA, AA, BA, MB, FS, MD, RW FS: 11000 RW:1 Destinasjon R4:, dvs DA=100 Vi skal ikke ha eksterne data inn, så MD=0. R6 på B-buss gir BA=110 A-buss brukes ikke og derfor kan bare 0er benyttes; AA=000 (Se boka s. 373). Skal ha verdi fra B-data, så MB=0. Det binære kontrollordet for (subtraksjons-) operasjonen blir: 100 000 110 0 11000 0 1
Eksempler på mikrooperasjoner for datapath (kap. 7-10, tabell 7-12 og tab. 7-13 s. 374) For enkelhets skyld tilordner vi 0er til ethhvert ubenyttet felt når kontrollordet formuleres. (eks:aaforr4 sl R6 ) Når data skal gjøres tilgjengelige kun for ekstern destinasjon kan vi sette RW=0. (eks: Data out R3) For å ta inn en konstant, sett MB=1. (eks: R1 R0 + 2) Sette et register til 0: Kan gjøres ved å sette buss D til kun 0er ved å benytte samme register for både A data og B data med FS=01100 og MD=0. (eks: R5 0)
7.10 THE CONTROL WORD (side 375) Tilsvarer kjøring av programmet i tab. 7-13. Antall bit i hvert register er 8. Antatt at hvert register initielt er dets nummer hexadesimalt. Øverst klokkesignalet, deretter kommer innganger til datapathen etterfulgt av registerinnhold. Til slutt kommer status bit, Address oyt og Data out. Merk at disse skifter samtdig med registerverdiene, noe som indikerer lite kombinatorisk forsinkelse i forhold til klokkeperioden. Endringer i registre som resultat av en bestemt mikrooperasjon skjer i klokkeperioden etter den mikrooperasjonen er spesifisert i. Dette skjer pga at resultatet lastes inn i flip-floper på positiv flanke av klokken ved enden av første klokkesyklus. På den annen side endres Status bit, Address out og Data out i samme klokkeperiode siden de ikke er avhengige av å ventepåklokkepuls.
7.11 PIPELINED DATAPATH (side 376)
7.11 PIPELINED DATAPATH (KAP. 7-11, S. 377) Tidsforbruk datapath til venstre: 3ns+1ns+4ns+1ns+3ns =12ns, dvs maksimal frekvens 83.3 MHz. Introduserer registre ( pipelining / samlebåndsprinsippet ) som bryter opp utregningen i deloppgaver som tar mindre tid. Maksimalt flip-flop til flip-flop forsinkelse blir da 5 ns. Maksimal frekvens på 200 MHz tillates.
7.11 PIPELINED DATAPATH (side 380) Pipelining innført på datapath. OBS: Registerfilen splittet.
7.11 PIPELINED DATAPATH (side 381) Eksempel på utførelse av operasjoner. En operasjon ( i form av OF+EX+WB) trenger ikke være ferdig før den neste startes. Øket frekvens for et lite tillegg i HW.