Side 1 av 13 NORGES TEKNISK- NATURVITENSKAPELIGE UNIVERSITET INSTITUTT FOR DATATEKNIKK OG INFORMASJONSVITENSKAP Faglig kontakt under eksamen: Institutt for datateknikk og informasjonsvitenskap, Gløshaugen Steinar Line 735 93680 / 90864408 EKSAMEN I EMNE TDT4160 DATAMASKINER GRUNNKURS MED LØSNINGSFORSLAG TIRSDAG 2. DESEMBER 2003 KL. 09.00 13.00 Hjelpemidler: D Ingen trykte eller håndskrevne hjelpemidler tillatt. Bestemt, enkel kalkulator tillatt. Sensuren faller 23. desember 2003. Resultater gjøres kjent på http://studweb.ntnu.no/ og sensurtelefon 810 48 014. Antall sider: 13 + 2 vedlegg Vedlegg: Manual DARK load/store-arkitektur Prosentsatser viser hvor mye hver oppgave teller innen settet. Lykke til!
Side 2 av 13 Oppgave 1 Flervalgsoppgaver (36%) Bruk svararket bakerst i oppgaveteksten for å svare på denne oppgaven. Du kan få nytt ark av eksamensvaktene dersom du trenger dette. Gal avkrysning eller blankt svar på et spørsmål gir 0 poeng. NB! Det er ikke mulig å gardere ved å krysse av flere alternativer. Dette gir i så fall 0 poeng. Kun ett svar er helt rett på hvert spørsmål. 1) 1% Hva er forholdet mellom en mikrooperasjon og en instruksjon? a) De er en og samme ting b) En mikrooperasjon er en elementær operasjon prosessoren kan utføre mens en instruksjon kan bestå av flere mikrooperasjoner c) En instruksjon er en elementær operasjon prosessoren kan utføre mens en mikrooperasjon kan bestå av flere instruksjoner d) Mikrooperasjoner benyttes til programmer som skal være ram-effektive 2) 2% Hvilken hovedfunksjon har statusregisteret (SR)? a) Statusregisteret inneholder hurtigbufferstatus, det vil si antall treff (hit) og bom (miss) i hurtigbufferet b) Statusregisteret brukes til å lagre midlertidige data i c) Statusregisteret inneholder informasjon om resultatet fra forrige instruksjon. Dette kan brukes til betingede hopp. Svar: C 3) 1% Hva er en ALU? a) En enhet som sørger for å hente neste instruksjon fra instruksjonslageret b) En enhet som kun har til oppgave å regne ut aritmetiske og logiske operasjoner c) En sentral del av styreenheten som inneholder mikroinstruksjoner og logikk for sekvensiell uthenting av disse 4) 2% Hva er IKKE riktig om samlebånd? a) Samlebånd utnytter at man kan benytte flere sentrale enheter i prosessoren i parallell og dermed kunne ha flere instruksjoner under utførelse samtidig. b) Parallelliteten som er tilstede i alle samlebånd medfører at vi får en CPI (cycles per instruction) mindre enn 1; vi får altså ferdigstilt mer enn en instruksjon for hver sykel. c) Maksimal hastighetsøkning for et samlebånd sammenlignet med den tilsvarende flersykelmaskinen vil være avhengig av antall samlebåndssteg. d) Prosessorer med samlebånd benyttes i så godt som alle PC-er.. Et typisk samlebånd av typen forklart i AoC ferdigstiller maksimalt én instruksjon pr. sykel, i gjennomsnitt litt færre.
Side 3 av 13 5) 2% Et samlebånd har 5 steg. Disse har forsinkelse på hhv. 12ns, 15ns, 13ns, 8ns, 22ns. Hva blir maksimal klokkefrekvens? a) 1 / (12 * 10^-9) Hz b) 1 / (14 * 10^-9) Hz c) 1 / (22 * 10^-9) Hz d) 1 / (70 * 10^-9) Hz Svar: C. Klokkesykelen må være lang nok til det tregeste steget: 22ns. Klokkefrekvensen er inversen av dette. 6) 2% Dersom du har et vanlig (in-order execution) samlebånd, hvilke dataavhengigheter vil skape problemer i følgende program (Dark-syntaks se vedlegg)? ADD $3, $1, $8 SUB $8, $3, $1 a) Avhengigheten på grunn av register 1 b) Avhengigheten på grunn av register 3 c) Avhengigheten på grunn av register 8. Vi får bare et problem dersom instruksjon 2 benytter seg av resultatet fra instruksjon 1. 7) 1% Hva er en adresseringsmodus? a) En regel som forteller prosessoren hvordan den skal finne frem til operanden ut fra informasjonen i instruksjonsordet. b) En operands adresse c) Dersom operanden benyttes som en adresse sies den å være i adresseringsmodus Svar: A 8) 1% Hvilket felt er IKKE vanlig å ha i instruksjonsordet? a) Opkode b) Destinasjonsoperand c) Kildeoperander d) Akkumulator e) Funksjonskode Svar: D. En akkumulator er et spesielt register benyttet i akkumulatormaskiner, det finnes ikke noe felt i instruksjonsordet med dette navnet. 9) 1% Hvilken prosessortype har som oftest kortest instruksjonsord? a) Akkumulatormaskin b) Load/store-maskin c) Stakkmaskin Svar: C. Stakkmaskinen har stort sett bare null-operandinstruksjoner og vil derfor ikke trenge like stort instruksjonsord som f.eks en load/store-maskin med tre-operandinstruksjoner.
Side 4 av 13 10) 2% Hvilket utsagn om EEPROM (Electronically Erasable Read Only Memory) er FEIL? a) Innholdet kan slettes ved hjelp av spesielle elektriske pulser. b) EEPROM-brikken kan skrives om mange ganger. c) Innholdet slettes blokk for blokk. d) Det er dyrt og går tregt å skrive/slette. Svar: C. EEPROM kan slette enkeltbytes 11) 2% Anta en harddisk med følgende egenskaper: 7200 omdreininger per minutt, 120 sektorer per spor (track) dvs. CAV (Constant Angular Velocity), sektorstørrelse 512 bytes og gjennomsnittlig søketid 7,5 ms. Hva er nedre grense for å lese en 200 MB fil fra disk (der 200 MB regnes som 200*1024*1024 Bytes)? a) 27,1s b) 28,4s c) 34,6s d) 35,9s. ((200 * 1024 * 1024) / 512) / 120 * (1 / (7200 / 60)) 12) 2% Hvilket av alternativene er IKKE en egenskap ved SDRAM? a) Innholdet kan bare slettes blokk for blokk (blokk > byte) b) SDRAM støtter "burst mode" som gjør at sekvensielle data kan overføres uten separate adressefaser for hver datafase. c) Når prosessoren sender en forespørsel til en SDRAM-modul, blir prosessoren frigjort mens forespørselen behandles. d) SDRAM er synkronisert mot ekstern klokke (typisk klokke på systembuss). Bruker flere minnebanker slik at muligheten for parallellitet øker. Svar: A SDRAM kan slette enkeltbytes 13) 1% Hva er fordelen ved å bruke Hamming-kode fremfor bruk av paritetsbit? a) Den er enklere å beregne. b) Den kan brukes til å detektere enkeltbit-feil. c) Bedre sikkerhet mot uautorisert aksess. d) Den kan brukes til å korrigere enkeltbit-feil. Svar: D. Paritetsbit kan benyttes til å detektere enkeltbitfeil. Hammingkode kan i tillegg til å detektere enkeltbitfeil også korrigere enkeltbitfeil 14) 1% Du skal konvertere tallet 120.1(4) (altså i firetallsystemet) til et desimaltall med to siffer etter desimalpunktum. Hvilket av alternativene er korrekt svar? a) 3.40 b) 24.25 c) 48.40 d) 96.25
Side 5 av 13 15) 1% I dagens systemer kan aksess til hovedlager være en flaskehals. Dette problemet kan løses på forskjellige måter. Hvilken av metodene nedenfor er ikke egnet til å redusere dette problemet? a) Øke antallet bit som hentes på en gang. b) Inkludere hurtigbuffer på hver minnebrikke. c) Øke hastigheten på eksisterende hurtigbuffer. d) Mer komplekse og større hurtigbuffer mellom prosessor og hovedlager. Svar: C. Flaskehalsen blir bare enda trangere dersom hastigheten på eksisterende hurtigbuffer økes 16) 1% Hva er arbitrering? (Velg det mest dekkende alternativet) a) Generering av tilfeldige tall. b) Det samme som tidsstyring av prosesser. c) Tildeling av blokk i hurtigbuffer. d) Tildeling av aksess til bussen. Svar: D 17) 1% Hvilket nivå av RAID baserer seg på speiling av disken? a) RAID 0 b) RAID 1 c) RAID 2 d) RAID 3 18) 2% Hvilket av alternativene er IKKE en grunn til å ha hierarkiske busser i en datamaskin? a) Det er ønskelig å skille trege enheter fra raske enheter b) En lang buss får gjerne høy transmisjonsforsinkelse c) Med flere busser kan flere enheter overføre data samtidig d) Lokalitetsprinsippet gjør det mindre sannsynlig at fjerne enheter blir brukt Svar: D. Lokalitetsprinsippet har å gjøre med lagerhierarkiet 19) 1% Hva er en multiplekser (MUX)? a) En MUX er en kombinatorisk krets som velger en av inngangene og sender den ut på utgangen. b) En MUX er en kombinatorisk krets som tar inngangen og splitter den opp til flere utganger. c) En MUX er en sekvensiell krets som alltid tar inn to verdier og gir ut en kombinasjon av disse på utgangen. d) En MUX brukes til å dekode inngangen og gi riktig verdi til de ulike registrene. Svar: A 20) 1% Hvorfor er det gjerne ønskelig med flere nivå med hurtigbuffer? a) Det forenkler tilbakeskriving fra hurtigbuffer til hovedlager. b) Hvis man ønsker en rask hurtigbuffer, er det begrenset hvor stor denne kan være. c) Det gjør det mulig å kjøre større programmer uten bruk av virtuelt minne. d) Det forenkler design av prosessorbrikker.
Side 6 av 13 21) 2% Hva er ulempen med skrivestrategien "utsatt tilbakeskriving" for hurtigbuffer? a) Den gir lavere ytelse enn gjennomskriving b) Den er dyrere (krever mer maskinvare) enn gjennomskriving c) Den medfører inkonsistens i lagerhierarkiet og kan skape problemer i multiprosessorsystemer og systemer med DMA-enheter Svar: C. Forskjellen i arealforbruk (maskinvarestørrelse) er ubetydelig (i hverfall når man ser på hele hurtigbufferet under ett). Inkonsistens i lagerhierarkiet er derimot en viktig faktor 22) 2% Hvorfor fungerer lagerhierarkiet så godt? a) Lagerhierarkiet er en akademisk konstruksjon laget av pedagogiske hensyn og fungerer ikke godt i praksis. b) Lokalitet i referanser gjør at prosessoren bare jobber på et lite subsett av data av gangen. Vi vil få en stor hastighetsøkning ved å bufre dette subsettet med en raskere lagertype. c) Hierarkiske datastrukturer (f.eks binærtrær for søking) vil kunne lagres effektivt i et hierarkisk lager fordi vi har maskinvarestøtte for traversering av slike strukturer. 23) 2% Gitt et tomt, direkteavbildet hurtigbuffer med 1024 linjer som hver inneholder én byte med data. Prosessoren gjør en lageraksess til adresse 1026 og deretter en lageraksess til adresse 2050. Hva vil skje? a) Adresse 1026 vil bufres i linje 0 og adresse 2050 vil bufres i linje 1. b) Adresse 1026 vil bufres i linje 2 og adresse 2050 vil ikke hurtigbufres fordi linje 2 er opptatt c) Adresse 1026 vil bufres i linje 2 og adresse 2050 vil overskrive linje 2 med nye data d) Adresse 1026 vil bufres i linje 2 og adresse 2050 vil bufres i linje 2 + (1024 / 2) = 514 Svar: C 24) 1% Hva er et innvevd system? a) Norsk ord for "plug-in" (brukes f.eks i en nettleser) b) Datamaskin som gjør en spesifikk oppgave og er del i et større system c) En PC i nettverk med andre datamaskiner 25) 1% Mange innvevde systemer benytter seg av en mikrokontroller. Hva er en mikrokontroller? a) En enkelt brikke som inneholder en fullstendig datamaskin (CPU, RAM, ROM, I/O-kontrollere) b) En I/O-kontroller som tilfredsstiller visse krav til fysisk størrelse og strømforbruk c) En I/O-kontroller med bare ett enkelt bruksområde d) En svak prosessor Svar: A
Side 7 av 13 Oppgave 2 Kortsvarsoppgaver (46%) Noen av oppgavene krever et eksakt tallsvar eller uttrykk. Andre krever en tekstlig forklaring. Svar kort, oversiktlig og strukturert på oppgavene. Strek gjerne under sentrale begreper som omtales.
Side 8 av 13 Bruk tabellene gitt ovenfor, som beskriver styreordet til en prosessor, og figuren på forrige side, som skisserer en utførende enhet i denne prosessoren, til å besvare oppgavene under. 1) 1% Hva blir styreordet for operasjonen R5 <- sr R3 der x skal beskrive ubrukte bits? 101 011 xxx x 10000 0 1 2) 1% Hva blir styreordet for operasjonen R4 <- R5 + ~R3 + 1 der x skal beskrive ubrukte bits? 100 101 011 0 00101 0 1 3) 2% Hvilken mikrooperasjon tilsvarer styreordet 111010xxxx0000101 der x beskriver ubrukte bits? R7 <- R2 + 1 4) 2% Hvilken mikrooperasjon tilsvarer styreordet 11100101100010101 der x beskriver ubrukte bits? R7 <- R1 + ~R3 + 1 (eller R7 <- R1 R3) For en gitt CISC-prosessor kan MOV-instruksjonen i assembler være definert med flere adresseringsmodi slik: MOV Rn, #Imm ; Immediate MOV Rn, Addr ; Direkte MOV Rn, [Addr] ; Indirekte MOV Rn, Rm ; Register MOV Rn, [Rm] ; Register indirekte MOV Rn, Addr(Rm) ; Displacement PUSH Rn ; Stakk push POP Rn ; Stakk pop Rn/Rm indikerer register nummer n/m. Addr og Imm kan være tallverdier eller variabler. MOV fungerer slik: MOV til-operand, fra-operand
Side 9 av 13 Gitt et lite utdrag av en datamaskins minne på et gitt stadium som skal benyttes for å besvare spørsmålene under: Hovedlager Registre Definerte variabler Adresse Verdi Registernr Verdi Navn Verdi 0 71 R0 5 teller 64 1 54 R1 15 i 3 2 12 R2 8 antall 4 3 86 R3 7 tab 3 4 28 R4 8 x 7 5 56 R5 55 retur 11 6 3 R6 9 7 8 R7 35 8 13 9 7 10 45 11 82 5) 1% Hva vil verdien til R0 være etter følgende instruksjon: MOV R0, [7]? 13 6) 1% Hva vil verdien til R1 være etter følgende instruksjon: MOV R1, [R3]? 8 7) 1% Hva vil verdien til R2 være etter følgende instruksjon: MOV R2, tab(r2)? 82 8) 3% Hva vil verdiene til R4,R5,R6 og R7 være etter følgende instruksjoner: PUSH R4 MOV R5, #antall MOV R6, [R5] POP R5 MOV R7, 1(R5) MOV R6, 10 R4 = 8, R5 = 8, R6 = 45, R7 = 7 9) 4% Hvilke hovedmåter kan en kontrollenhet implementeres på? Beskriv kort de enkelte. Fastprogrammert (hardwired): kombinatorikk og vipper (dersom FSM) med fast oppkoblet oppførsel Mikroprogrammert: oppførsel er implementert vha sekvenser av uinstruksjoner lagret i et styrelager 10) 3% Hva bygges et instruksjonsord opp av? Nødvendig: Opkode Andre felter: destinasjonsoperand, kildeoperander, funksjonskode, neste adresse, shamt 11) 3% Hvor mange operander har normalt en instruksjon for en load/store-maskin? 3 12) 3% Nevn tre av kontroll- og status-registrene for en typisk prosessor som benyttes ifm. utføring av instruksjoner. PC, IR, SR, MAR, MBR
Side 10 av 13 13) 3% Hvor mange bits opkode (operasjonskode) vil Dark sin load/store-maskin behøve? Maskinen har 30 ulike mnemonics (assemblerord), men 13 av disse har to ulike adressemodi, eks: add register, register, {register nummer variabel} (der nummer og variabel vil bety det samme for prosessoren da kompilatoren oversetter variabelverdien til nummer ved kompilering). 6 (fordi (2 ^ 6 = 64) > (30 + 13)) 14) 4% En gitt datamaskin benytter et femstegs samlebånd: - Fetch instruction, - Decode instruction, - Calculate and fetch operands, - Execute instruction og - Write operand Maskinen forutser forgreininger i programmene avhengig av opkode. Den gjetter riktig forgreining i 80% av tilfellene. I gjennomsnitt er 10% av instruksjonene som blir utført på denne datamaskinen forgreininger. Hvor mange sykler vil gjennomsnittlig bli brukt på å utføre 100 instruksjoner? 100 + 4 + 100 * 0,10 * 0,20 * 3 = 110 15) 3% Hva skjer i avbruddsfasen av en prosessors instruksjonssyklus dersom et avbrudd blir oppdaget? Lagre tilstand på stakk (PC og muligens også SR og andre registre). Hoppe til interruptrutine og kjøre denne. Deretter laste tilbake tilstand fra stakk og fortsette der den slapp. (Kan også ta med noe om interruptkjeder med INT_ACK-signaler og interruptvektor, ikke krav) 16) 4% Hvilke alternative strategier finnes for å forsøke å forhindre forsinkelser ved forgreiningsinstruksjoner allerede ved innhenting av en ny instruksjon? Forklar kort de enkelte. Forutsi: alltid tatt, aldri tatt, basert på opkode, hopptabell, (multiple strømmer, ikke krav) 17) 4% Hva kan du si om egenskapene til RISC når det gjelder ting som: - antall og typer instruksjoner relativt lite antall (dvs mindre enn typisk CISC), enkle instruksjoner - antall og typer adressemodi få og enkle - instruksjonsformat få og enkle - antall og typer registre mange generelle registre 18) 3% Hva betyr begrepet dataavhengigheter i forbindelse med et samlebånd i en prosessor? Hvis man stokker om på instruksjoner og oppførselen endrer seg har man dataavhengigheter En instruksjon er avhengig av resultatet av en annen Oppgave 3 Assemblerprogrammering (18%) Introduksjon: Toerskomplement er en vanlig måte å representere binære tall på som gjør aritmetikk som addisjon og subtraksjon av binære tall forholdsvis enkelt. Toerskomplement til et positivt binærtall finnes ved å invertere alle bitene og addere med 1. Slik får man dette tallets negative utgave. Følgende eksempel beskriver dette for et 4 bits tall der bitet lengst til venstre (mest signifikante) fungerer som fortegnsbit: +4 10 = 0100-4 10 = 1011+1 = 1100 (på toerskomplement form)
Side 11 av 13 Oppgaven: Skriv et assemblerprogram for load/store-arkitekturen til Dark som gjennomfører toerskomplement på et binært tall. Instruksjonssettet for arkitekturen er beskrevet i vedlegg 1. Du skal anta at binærtallet som skal omformes ligger lagret i et område av minnet med et bit per minneadresse. Minst signifikante bit ligger i første minneadresse. Før ditt program kjøres: - Register 4 inneholder adressen til begynnelsen av minneområdet som leses fra - Register 5 inneholder adressen til første minneadresse utenfor området (dvs. slutten av minneområdet). - Register 6 inneholder starten på minneområdet som lagres til (se under) Figuren nedenfor illustrerer dette: Etter programmet er kjørt: - Tallet som er omformet til toerskomplement form skal skrives til et minneområde med et bit per minneadresse (som Register 6 peker på starten til). - Register 7 skal inneholde første adresse utenfor området. Tallet skal lagres med minst signifikante bit på første adresse i minneområdet. Eksempel: Vi skal ta toerskomplement på tallet 100100 2 (36 10 ). Tabell 1 og Tabell 2 viser tilstanden til maskinen før programmet har utført sine beregninger (X betyr udefinert). Adresse 100 101 102 103 104 105 106 Verdi 0 0 1 0 0 1 X Tabell 1 : Tilstanden til minnet før programmet starter. Register R4 R5 R6 R7 Verdi 100 106 100 X Tabell 2 : Tilstanden til noen av registrene før programmet starter. Tabell 3 og Tabell 4 viser tilstanden til maskinen etter at beregningen er utført. Adresse 100 101 102 103 104 105 106 Verdi 0 0 1 1 1 0 X Tabell 3 : Tilstanden til minnet etter at programmet har utført sine beregninger. Register R4 R5 R6 R7 Verdi 100 106 100 106 Analyse av tabell 3 viser at toerskomplement av 100100 er 011011+1 = 011100. Tips: det kan lønne seg å løse oppgaven i to operasjoner: 1. invertere alle bitene 2. addere 1 i minst signifikante bit
Side 12 av 13 Forslag til løsning der man benytter en løkke (både invertering og +1 utføres i samme løkken). Alternativt kan dette utføres i hver sin separate løkke. start ; $4 - fra-adresse ; $5 - fra-adresse slutt ; $6 - til-adresse ; $7 - til-adresse slutt ; $8 - bit som behandles ; $9 - mente ; $10 - temp ; $11 - peker som telles opp load $9, 1 add $7, $6, 0 add $11, $4, 0 ; mente = 1 fordi vi ønsker å legge til 1 etter negasjon ; Løkke med invertering og addisjon i ett loop: jge $11, $5, loopend load $8, $11, 0 not $8, $8 ; invertering av bitene add $10, $8, $9 ; summen av mente og minneadr på et gitt pkt. and $9, $8, $9 ; beregning av mente mod $8, $10, 2 ; store $8, $7, 0 ; lagrer tilbake verdien til minnet inc $7 inc $11 jmp loop loopend: end start.
Powered by TCPDF (www.tcpdf.org) Svarark for oppgave 1 Studentnr: Side 13 av 13 Fagnummer: Eksamensdato: 2. desember 2003 Side av a b c d e 1 1 2 2 3 1 4 2 5 2 6 2 7 1 8 1 9 1 10 2 11 2 12 2 13 1 14 1 15 1 16 1 17 1 18 2 19 1 20 1 21 2 22 2 23 2 24 1 25 1 NB! Ikke glem å levere dette arket! Bla igjennom den papirbunken du gir fra deg til slutt, for å sjekke at svar på avkrysningsoppgaven er med.