Avdelingfr ingeniørtdanning
Denne eksamnen består av fire ppgaver. Det er sannsynlig at de tre første ppgavene tilsammen vil telle rundt 50 prsent g at den siste ppgaven (ppgave 4) vil telle rundt 50 prsent. Oppgave Oppgave a En funksjn F er gitt ved F(X,Y,Z) = ~m(o,,6,7). Tegn en kmbinatrisk krets sm implementerer F. Kretsen skal innehlde så få prter sm mulig, g den skal ikke innehlde ne annet enn AND-, OR- g NOT-prter. Oppgave b En funksjn F er gitt ved F(W,X,Y,Z) = ~m(5,6,7,3,4,5). Tegn en kmbinatrisk krets sm implementerer F. Kretsen skal innehlde så få prter sm mulig, g den skal ikke innehlde ne annet enn AND-, OR- g NOT-prter. Oppgave 2 Du skal skrive et assemblerprgram fr assembleren TASM. Prgrammet skal lese inne en rekke psitive heltall fra bruker. Du har gitt en macr les inn. Denne macren ber bruker m å gi et heltall, leser inn dette heltallet g legger det i registeret al. Macren sørger fr at heltallet bruker ppgir ligger i intervallet O... 255. Macren frandrer ikke innhldet av andre registere enn al. (Dette er alt du trenger å vite m macren lesinn. Du trenger ikke å vite hvrdan innmaten i macren ser ut.) Skrivet assemblerprgram sm leser inn tall fra bruker ved å kalle macren lesinn. Innlesningen av tall skal terminere når macren lesinn legger O i registeret al, eller når bruker frsøker å skrive inn mer enn 00 tall. Når prgrammet terminerer skal summen av alle partallene sm ble skrevet inn, ligge i registeret cx, mens summen av alle ddetallene skal ligge i registeret dx. (Husk at et partall er et tall sm er delelig på 2, g at et ddetall er et tall sm ikke er det.) Oppgave 3 Funksjnen F er gitt ved det blske uttrykket X (Y + Z) + X Y Z. Oppgave a Implementer F ved hjelp av AND-prter, OR-prter g NOT-prter. Du skal ikke bruke prter sm har mer en t innganger. Oppgave b Gi F sm en sum av mintermer. Oppgave c Gi F sm et prdukt av makstermer.
Oppgave d Implementer F utelukkende ved help av NOR-prter g NOT-prter. Du kan bruke NORprter med et vilkårlig antall innganger. Implementasjnen skal være så flat sm mulig, dvs. det skal være maksimalt t NOR-prter mellm utgangen g hver av inngangene. Oppgave e Implementer F utelukkende ved hjelp av NOT-prter g en 4-til-l multiplekser. Oppgave 4 Denne ppgaven dreier seg m en datamaskin med en meget enkel arkitektur. Figur l er et diagram ver maskinens datapath. La ss begynne med å se nærmere på maskinens aritmetisk-lgiske enhet. Den er merket AL U i figuren. Den tar imt et l6-bits tall på inngangen merket A g et l6-bits tall på inngangen merket B. Den gir ut ett l6-bits tall på utgangen merket C. Enheten har t styringsbit Sl g SO. Tabellen styringsbit 8 80.} l O input A B a b a b a b a b utput C b-a a 26 - (O hvis underflw) ("6 enere") beskriver funksjnaliteten til ALU. Vi ser at ALU "trekker fra" når Sl = O g SO = O. Merk at det er tallet på inngang A sm trekkes fra tallet på inngang B! Ikke mvendt. Dersm en subtraksjn ender med underftw, vil ALU gi O sm utput. Videre ser vi at når Sl = O g SO =, så vil input på inngangen A "gå rett gjennm ALU". Når Sl = g SO = O, vil utput fra AL U være 26 - uansett hva inputene A g B måtte være. (Merk at (26 - )0 = ()2.) Når Sl = g SO =, vil utput fra ALU være O uansett hva inputene A g B måtte være. Videre finner du i diagrammet ver datapathen en standard 5-til-32 dekder med "enable"- inngang E, en standard 32-til- multiplekser g en standard 2-til- multiplekser. Du ser gså at datapathen innehlder registere. Dette er 6 bits standard registere med en "lad"- inngang tegnet på venstre side. Hver utgang fra dekderen er kblet til "lad"-inngangen på ett register. Vi kaller registerne sm er kblet pp mt dekderen på denne måten fr R, RI, R2,..., R3. Utgang i fra dekderen er kblet til "lad"-inngangen på registeret Ri. I datapathen finner du gså et "perand"-register sm er merket Opr. (I teksten kalles dette registeret Opr.) Diagrammet viser at datapathen har seks input R (5 bit), M ( bit), L ( bit), Sl ( bit), SO ( bit) g E ( bit). Det betyr at den styres av kntrllrd på 0 bit. Vi sier at et slikt kntrllrd skal gis på frmen (R, M, L, Sl, SO, E). Merk at R går til tre frskjellige enheter (den.lille multiplekseren, den stre multiplekseren g dekderen). Registeret Opr har en spesiell g meget sentral rlle i datapathen. Utgangen fra dette registeret er kblet direkte til inngang A på den aritmetisk-lgiske enheten ALU. Dette medfører at perasjner sm R7 +- R7 - Rs, dvs. legge differansen av innhldet iregisterne R7 g Rs i registeret R7, må utføres ver t klkkesykler. Under den første klkkesyklusen 2
må innhldet av registeret Rs verføres til register t Opr. Under den andre klkkesyklusen, må innhldet av registeret R7 styres til inngang B på ALU, g utput fra ALU må styres til registeret R7. Bitene M g L i kntllrdet styrer hvilke data sm verføres til registeret Opr. Dersm L =, lastes det nye data inn i Opr. Dersm L = O, lastes det ikke nye data inn i Opr. Bitet M styrer hvr data eventuelt skal lastes fra. Dersm M =, vil data sm kmmer fra et eller annet register (via den stre multiplekseren) verføres til Opr. Dersm M = O, settes de mest signifikante bitene i Opr til O, g de 5 minst signifikante bitene i Opr settes til tallet sm gis av de fem bitene i input R. Oppgave a Gi et kntrllrd sm legger (000)2 i registeret Opr. ((000)2 er desimaltallet 7.) Kntrllrdet skal ikke frandre innhldet av andre registere enn Opr. Gi et kntrllrd sm legger O i registeret R3. Kntrllrdet skal ikke frandre innhldet av andre registere enn R3. (Slutt. Oppgave a.j I figur 2 ser vi hvrdan datapathen inngår sm en del aven primitiv ensykel datamaskin. Du finner den sm kmpnenten merket Datapath. Maskinen kan prgrammeres ved at man legger et assemblerprgram i maskinens ROM. Assemblerspråket har seks instruksjner: () cpr c (2) rpr Rk (3) put Rk (4).ub Rk (5) Bet Rk (6) reset Rk Vi nummerer g tilrdner intruksjnene til hver sin binærkde: 000 00 00 0 00 0 cpr rpr put sub Bet reset Hver instruksjn skal gis ved 8 bit i,il,i2,ij,i4,is,i6,i7. Vi bruker de tre første bitene i,il,i2 til å angi hvilken av de seks intruksjnen det dreier seg m. De fem siste bitene i3, i4, is, i6, i7 angir instruksjnens parameter.. Instruksjnen cpr c. (i = O, il = O, i2 = O.) Denne instruksjnen setter registeret Opr til knstanten c. Bitene i3, i., is, i6, i7 gir c. (Intet annet register enn Opr skal frandre innhld når denne instruksjnen eksekveres.). Instruksjnen rpr Rk. (i = O,il = O,i2 =.) Denne instruksjnen utfører prasjnen Opr +- RA:, dvs. den,?verfører innhldet av registeret RA: til registeret Opr. Bitene i3, i4, is, i6, i7 gir k. (Intet annet register enn Opr skal frandre innhld når denne instruksjnen eksekveres.). Instruksjnen put Rk. (i = O, il =, i2 = O.) Denne instruksjnen utfører prmjnen Rk t- Opr, dvs. den verfører innhldet av registeret OpT til registeret Rk. Bitene i3, i4, is, i6, i7 gir k. (Intet annet register enn Rk skal frandre innhld når denne instruksjnen eksekveres.) Instruksjnen sub Rk. (i = O, i l =, i2 =.) Denne instruksjnen utfører prasjnen Rk f- Rk - Opr, dvs. den legger differansen mellm innhldet iregisterne Rk ~
g Opr i registeret Rk' Bitene i3, i4, is, i6, i7 gir k. (Intet annet register enn Rk skal frandre innhld når denne instruksjnen eksekveres.). Instruksjnen set Rk. (i =, il = O, i2 = O.) Denne instruksjnen utfører prasjnen Rk ~ 26 -, dvs. registeret Rk settes til "bare enere". Bitene i3,i4,is,i6,i7 gir k. (Intet annet register enn RA; skal frandre innhld når denne instruksjnen eksekveres. ). Instruksjnen reset Rk. (i =, il = O, i2 =.) Denne instruksjnen utfører prasjnen Rk t-- O, dvs. registeret Rk settes til "bare nuller". Bitene i3,i4,is,i6,i7 gir k. (Intet annet register enn Rk skal frandre innhld når denne instruksjnen eksekveres.) Oppgave b Skrivet prgram i assemblerspråket sm utfører perasjnen R +- RI - R2' (Prgrammet skal altså trekke innhldet i registert R2 fra innhldet i registert RI, Differeansen skal legges i registeret R. Se brt fra prblemer sm måtte ppstå ved underflw.) Hvert av registerne RI, R2"'" R3I skal hlde den samme verdi når prgrammet terminerer sm det hldt da prgrammet staret. (Slutt. Oppgave b.) Oppgave c Under finner du et prgram skrevet i assemblerspråket. Prgrammet er gitt i binær frm, dvs. prgrammet er gitt slik det vil se ut i maskinens ROM. 00 0000000 0 Frklar hva dette prgrammet gjør. Svar krt! (Slutt. Oppgave c.) Kmpnetene i figur 3 sm er merket ROM g Cunter er standard hyllevare. ROM er et 32 x 8 bit "read nly memry", dvs. at det har en adresseinngang på 5 bit g gir 8 bit ut (i, il, i2, i3, i., is, i6, i7)' Cunter er en standard 5-bits teller med parallell innlasting (lad). Tabellen lad cunt )( perasjn øker med parallell innlasting frteller det du trenger å" vite m Cunter. Figuren viser at inngangen lad er kblet til lgisk O, g inngangen cunt er kblet til lgisk. (Vi antar at Cunter er nullstilt når eksekveringen av et prgram starter.) Ingen av figurene våre viser klkker g klkkeinnganger, men samtlige klkkeinnganger i arkitekturen er selvsagt kblet til den sammen klkken. Den eneste kmpntente i figur 3 vi ikke har frklart, er maskinens instruksjnsdekder, dvs. den kmbinatriske kretsen sm er merket Decder. Det er din ppgave å gi funksjnaliteten til denne kretsen slik at maskinen virker g blir i stand til å eksekvere assemblerkde sm ligger i ROM. 4
Oppgave d Gi funksjnaliteten til kretsen Decder ved å fylle ut tabellen Eventuelle "dn't care"-felter i tabellen skal markeres (ved hjelp av kryss). Du skal ikke gjøre ne annet enn å fylle ut tabellen, f.eks. tegne kretsen. (Slutt. Oppgave d.) Vi skal utvide assemblerspråket vårt med t hppinstruksjner:. Instruksjnen jz linjenr. (i =,il =,i2 = O.) Dette er en betinget hppinstruksjn. De fem siste bitene i3, i4, is, i6, i7 frteller hvilken linje i assemblerprgrammet det eventuelt skal hppes til. Det skal hppes dersm registeret Opr hlder O.. Instruksjnen jmp linjenr. (i =,i =,i2 =.) Dette er en ubetinget hppinstruksjn. (Det skal hppes hver gang instruksjnen utføres.) De fem siste bitene ij,i4,is,i6,i7 frteller hvilken linje i assemblerprgrammet det skal hpp es til. Oppgave e Skisser hvrdan arkitekturen i figur 2 g 3 kan utvides, slik at maskinen vår gså blir i stand til å eksekvere disse t hppintsruksjnene. Skissen skal være så detaljert sm mulig, men du skal ikke spesifisere innmaten i den utvidede maskinens instruksjnsdekder. Alle andre kretser g enheter den utvidede maskinen måtte innehlde, kan du spesifisere innhldet av dersm du har tid. (Slutt. Oppgave e.) Oppgave f Her er et lite prgram gitt i Java-aktig kde: it RO = O then Ri:= else Ri:= 2 Skriv det tilsvarende prgrammet i det utvidede assemblerspråket. (Språket med instruksjnene cpr, rpr, put, sub, set, reset, jmp g jz.) Prgrammet skal altså legge i registeret RI dersm det ligger O i R. Ligger det ligger ne annet i R, skal prgrammet legge 2 i registeret RI. (Ikke gi prgrammet på binær frm.) (Slutt. Oppgave J.) 5
Oppgave g (Vanskelig) Skrivet prgram i det utvidede assemblerspråket, dvs. språket med instruksjnene cpr, rpr, put, sub, Bet, reset, jmp g jz, sm øker verdien av registeret R med l. Dette er faktisk mulig, men prgrammet må ødelegge innhldet av nen hjelperegistere. Se brt fra prblemer sm ppstår ved eventuell verflw. (Slutt. Opggave g.) 6
E R /'5".~ 5-til-32 DECODER i 3. RO Rl R3 A "5 32-til-l i MUX 3. R '~S"". 6 Ilr-~~ M 2-til-l!lUX L Opr 5 s A ALU c B. Figure : Datapath
Figure 2: Hele arkitekturen 8