UNIVERSITETET I OSLO Det matematisk-naturvitenskapelige fakultet Eksamen i IN 47 Program- og maskinvare Eksamensdag: 29. mai 2 Tid for eksamen: 9. 5. Oppgavesettet er på 8 sider. Vedlegg: Ingen Tillatte hjelpemidler: Alle Kontroller at oppgavesettet er komplett før du begynner å besvare spørsmålene. Dette oppgavesettet består av 6 oppgaver som kan løses uavhengig av hverandre. Dersom du synes noe i oppgaveteksten er uklart, må du gjøre dine egne forutsetninger; sørg bare for at disse er tydelig angitt. Når det er snakk om programmering, skal koden skrives slik at den fungerer med kommandoen cc på Ifis SGI-maskiner. Lykke til! Innhold Oversettelse (vekt 8%) side 2 Maskinkode (vekt 2%) side 3 Digitalteknikk (vekt 5%) side 2 4 Instruksjonssett (vekt 2%) side 3 5 Flervalgsoppgave (vekt 5%) side 4 6 Parallellstyring (vekt 2%) side 7 Oppgave Oversettelse (vekt 8%) I figur på neste side er vist C-funksjonen split som splitter en vektor i én del med «små» elementer og én del med «store». Oversett denne funksjonen til MIPS assemblerspråk. Oppgave 2 Maskinkode (vekt 2%) I figur 2 på neste side er vist MIPS-maskinkoden for en liten funksjon. Oversett maskinkoden til assemblerkode. Hva gjør denne funksjonen? Dette er en del av Quicksort-sorteringen, men det trenger du ikke bry deg om. Du kan oversette funksjonen uten å forstå hvorledes den fungerer. (Fortsettes på side 2.)
Eksamen i IN 47, 29. mai 2 Side 2 int split(int a[], int n) { int i, t, big = ; i = (n-)/2; t = a[]; a[] = a[i]; a[i] = t; for (i = ; i < n; ++i) { if (a[i] < a[]) { ++big; t = a[i]; a[i] = a[big]; a[big] = t; } } } t = a[big]; a[big] = a[]; a[] = t; return big; Figur : Funksjonen split 42 hex 8542a hex 52 hex hex 52 hex 3e8 hex hex Figur 2: En liten funksjon i MIPS-maskinkode Oppgave 3 Digitalteknikk (vekt 5%) 3a Flipflop (vekt 7½%) En T-flipflop har følgende karakteristiske likning: Q(t) T Q(t+) Vis hvordan man kan lage en T-flipflop ved hjelp av en D-flipflop og logiske porter. Bruk så få porter som mulig. Hint Se på hvilke input-kombinasjoner som gir Q(t + ) = for T- flipflop-en. (Fortsettes på side 3.)
Eksamen i IN 47, 29. mai 2 Side 3 Figur 3: En datapath shift left 2 M ux M ux 4 add instruction [3 26] InvZero control RegDst Jump Branch MemRead MemtoReg ALUOp MemWrite ALUSrc RegWrite shift left 2 add PC Read address instruction memory instruction [3 ] instruction [25 2] instruction [2 6] instruction [5 ] read read register data read register 2 registers M write read ux register M data 2 u x write data A ALU zero ALU result B address write data read data data memory M ux instruction [5 ] sign extend ALU control Ainvert Binvert CarryIn instruction [5 ] Operation 3b Forenkling av funksjoner (vekt 7½%) Sjekk om de foreslåtte forenklingene gitt nedenfor er korrekte, dvs om F = F 2 og om G = G 2. F = abc + a b c + ab c + a bc kan forenkles til F 2 = ab + ac. G = ac + bc + ab c kan forenkles til G 2 = a + bc. Oppgave 4 Instruksjonssett (vekt 2%) 4a Hvilken funksjon? (vekt 4%) Hvilken funksjon utfører ALU-en i figur 4 på neste side hvis Ainvert=, Binvert=, CarryIn= og Operation=? Hva er CarryOut hvis a= og b=? 4b Hvilken funksjon 2? (vekt 6%) Hvilken funksjon utfører ALU-en gitt kontrollordet i figur 5 på neste side? 4c Forståelse (vekt 4%) Forklar hva instruksjonen gjør, og hva den kan brukes til. Er den ideell til dette formålet? (Fortsettes på side 4.)
Eksamen i IN 47, 29. mai 2 Side 4 Figur 4: En ALU Ainvert Binvert Operation CarryIn a Result b + 2 Less 3 CarryOut Figur 5: Kontrollord for en ukjent instruksjon RegDst ALUSrc MemtoReg RegWrite MemRead MemWrite Branch Operation Ainvert Binvert CarryIn Jump InvZero 2 OP Figur 6: Formatet på instruksjonen RS RT address/immediate 4d Utvidelse av fortegns-bit (vekt 6%) «Sign extend»-blokken i figur 3 på forrige side bevarer fortegnet ved ekspansjon fra 6-bits til 32-bits representasjon. Skriv en funksjon i C som utfører sign-extension. Du kan anta at input-parameteren er på 32-bit, men at kun de 6 nederste bitene benyttes. Funksjonen skal bruke tilgjengelige bit-operatorer i C. Oppgave 5 Flervalgsoppgave (vekt 5%) Denne oppgaven er en såkalt flervalgsoppgave («multiple choice» på engelsk). I hver deloppgave er det gitt fire utsagn, og du skal finne ut hvilket utsagn som er korrekt. Svaret skal kun inneholde nummeret på det riktige utsagnet, ingen forklaringer eller utdypninger på hvorfor etc. For at man ikke skal belønne ren gjetting vil det bli trekk for feil svar, men ikke alle de gale alternativene gir like stort trekk. (Fortsettes på side 5.)
Eksamen i IN 47, 29. mai 2 Side 5 Hint Les alle alternativene for hver deloppgave nøye før du svarer på hver oppgave! 5a Boolsk algebra. Enhver kombinatorisk boolsk funksjon kan implementeres med bare AND- og NOT-porter. 2. For å implementere enhver kombinatorisk boolsk funksjon trenger man både AND-, OR- og NOT-porter og D-flipfloper. 3. For å implementere enhver kombinatorisk boolsk funksjon trenger man både AND-, NOR- og NOT-porter. 4. For å implementere enhver kombinatorisk boolsk funksjon trenger man både NAND-, OR- og NOT-porter. 5b Pipelining. Antall trinn i en pipeline må økes hvis man reduserer klokkehastigheten. 2. Ved å øke antall trinn i en pipeline er det mulig å øke klokkehastigheten. 3. Ved å øke klokkehastigheten kan man redusere antall trinn i en pipeline. 4. Antall ulike maskinspråk-instruksjoner i instruksjonssettet for en pipelinet arkitektur er proporsjonal med antall trinn i pipelinen. 5c Pipelining 2. Ved å bruke pipelining vil man redusere tiden det tar å utføre hver enkelt instruksjon. 2. Det vil alltid startes en ny instruksjon for hver klokkesykel i en pipelinet prosessor. 3. Ved «stalling» vil det bli en opphoping av instruksjoner i pipelinen fordi den ikke er rask nok. 4. Med pipelining vil ikke hver enkelt instruksjon bli raskere, men antall ferdig-eksekverte instruksjoner per tidsenhet økes. (Fortsettes på side 6.)
Eksamen i IN 47, 29. mai 2 Side 6 5d Datapath og ALU 5e. Subtraksjon av tall på 2-komplements form utføres på samme måte som addisjon. 2. Ved addisjon av tall på 2-komplements form tar generering av mente lenger tid enn ved addisjon av kun positive tall. 3. Ved addisjon av tall på 2-komplements form må mente-bit-et inn til det mest signifikante bit-et settes til for å unngå overflyt («overflow»). 4. Ved subtraksjon av tall på 2-komplements form må mente-bit-et inn til det mest signifikante bit-et settes til for å unngå overflyt («overflow»). Cache 5f. Ved å bruke assosiativitet økes lagringskapasiteten til cache. 2. Ved å bruke assosiativ cache reduserer man antall cache-miss sammenlignet med ikke-assosiativ cache. 3. I en ikke-assosiativ cache øker aksesstiden ved read-miss sammenlignet med en assosiativ cache. 4. Antall write-miss blir større i en assosiativ cache enn i en ikkeassosiativ. Input/Output. På grunn av korte avstander må alltid internbussen i en prosessor være synkron. 2. Asynkrone busser brukes til å øke hastigheten på bussen mellom synkrone prosessorer med ulik klokkehastighet. 3. Synkrone busser er generelt langsommere enn asynkrone fordi man må bruke et felles klokkesignal. 4. Asynkrone busser kan brukes til å koble sammen synkrone prosessorer. (Fortsettes på side 7.)
Eksamen i IN 47, 29. mai 2 Side 7 5g Cache-koherens ved MISD-arkitektur (En MISD-maskin har flere prosessorer med lokal cache og én felles RAM.) 5h. Ved read-miss må cache-koherens protokollen oppdatere alle lokale kopier. 2. Ved read-miss kastes alle lokale kopier ved å merke dem ugyldige. 3. Ved write-miss trenger man ikke oppdatere RAM hvis man oppdaterer alle lokale kopier. 4. Ved read-miss vil man søke i andre lokale cacher før man leter i RAM. Virtuelt minne. Virtuelt minne benyttes for å redusere tiden det tar å aksessere RAM. 2. Virtuelt minne brukes for å redusere tiden det tar å aksessere harddisken. 3. Virtuelt minne gjør det enklere å implementere separate minneområder for ulike prosesser. 4. Uten TLB ved adresseoversettelse i virtuelt minne vil hver minneaksess mot RAM gi oppslag både i RAM og på harddisken. Oppgave 6 Parallellstyring (vekt 2%) I et forsøk på å få vårt fraktalprogram enda raskere, vil vi la produsentprosessene P i hente «oppdrag» (dvs opplysning om hvilken kolonne de skal lage fargedata for) fra en global teller, slik det er vist i figur 7 på neste side. Dessuten brukes en buffer med plass til elementer til å mellomlagre data (dvs kolonner med fargeangivelse) på vei til konsumenten K som tegner på skjermen. Hint I denne oppgaven er det parallellstyringen som er viktig. Det er derfor greit å bruke «kvasikode» med notasjon som generér fargene i kolonne x eller hent neste ledige filosof fra køen eller down(&s). 6a Styring med semaforer (vekt 2%) Skriv «kvasikode» for produsent- og konsumentprosessene når det skal brukes semaforer til å kontrollere parallellstyringen. (Fortsettes på side 8.)
Eksamen i IN 47, 29. mai 2 Side 8 Figur 7: Parallellisering av fraktalberegning P n P 2. P n K 6b Filosofer som sender meldinger (vekt 8%) Vi skal løse en variant av problemet med de n spisende filosofer. Her ligger ikke gaflene på bordet men g gafler administreres av en kelner. Når en filosof blir sulten, sender han eller hun en melding til kelneren og får svarmelding når gaflene er ledige; om gaflene er opptatt, kan det ta tid før svarmeldingen kommer. Når filosofen har spist seg mett, sender han eller hun en ny melding til kelneren. Skriv «kvasikode» for kelnerprosessen K og filosofprosessene F i. Hint gafler. Kelneren bør ha en kø over sultne filosofer som venter på ledige