Oppgave 1 JK-flip-flop (Total vekt 20%)

Like dokumenter
Løsningsforslag til eksamen i IN147(A)

Oppgave 1 Oversettelse (vekt 16%)

UNIVERSITETET I OSLO

Innhold. Oppgave 1 Oversettelse (vekt 15%)

Oppgave 2 Maskinkode (vekt 12%)

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

Innhold. Introduksjon til parallelle datamaskiner. Ulike typer parallelle arkitekturer. Prinsipper for synkronisering av felles hukommelse

EKSAMENSOPPGAVE. INF-1100 Innføring i programmering og datamaskiners virkemåte. Ingen. Elektronisk (WiseFlow) Robert Pettersen

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

Steg 1: Rest etter divisjon

Seksjon 1. INF2270-V16 Forside. Eksamen INF2270. Dato 1. juni 2016 Tid Alle trykte og skrevne hjelpemidler, og en kalkulator, er tillatt.

UNIVERSITETET I OSLO

MAX MIN RESET. 7 Data Inn Data Ut. Load

Dagens tema. Mer om C Enkle datatyper Sammensatte datatyper: Vektorer og matriser Tekster Mengder Strukturer Unioner Ringbuffere

public static <returtype> navn_til_prosedyre(<parameter liste>) { // implementasjon av prosedyren

public static <returtype> navn_til_prosedyre(<parameter liste>) { // implementasjon av prosedyren

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

Oppgavene 1, 2, 4, 5, 6, 9, 12 og 13 passer best til å løses ved en datamaskin.

Løsningsforslag til eksamen i INF2270

Pensum Hovedtanker Selvmodifiserende Overflyt Veien videre Eksamen. Oppsummering

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

Den siste dagen. Pensumoversikt Hovedtanker i kurset Selvmodifiserende kode Overflyt Veien videre... Eksamen

Hukommelseshierarki. 16/3 cache /3 virtuell hukommelse in 147, våren 1999 hukommelseshierarki 1

UNIVERSITETET I OSLO

Eksamen i emnet INF100 Grunnkurs i programmering (Programmering I) og i emnet INF100-F Objektorientert programmering i Java I

IN 147 Program og maskinvare

OPPGAVE 1 OBLIGATORISKE OPPGAVER (OBLIG 1) (1) Uten å selv implementere og kjøre koden under, hva skriver koden ut til konsollen?

EKSAMENSOPPGAVE. INF-1100 Innføring i programmering og datamaskiners virkemåte. Teorifagb, hus 3, og og Adm.bygget, Aud.max og B.

Ny/utsatt EKSAMEN. Dato: 6. januar 2017 Eksamenstid: 09:00 13:00

UNIVERSITETET I OSLO

Dagens temaer. temaer hentes fra kapittel 3 i Computer Organisation. av sekvensielle kretser. and Architecture. Tilstandsdiagram.

Programmeringsspråket C

INF1000 (Uke 15) Eksamen V 04

INF1000 (Uke 15) Eksamen V 04

En oppsummering (og litt som står igjen)

BOKMÅL Side 1 av 5. KONTERINGSEKSAMEN I FAG TDT4102 Prosedyre og objektorientert programmering. Onsdag 6. august 2008 Kl

UNIVERSITETET I OSLO

Programmeringsspråket C Del 3

UNIVERSITETET I OSLO

Oppsummering digital-teknikk, teknikk, INF2270

Dagens temaer. Dagens temaer hentes fra kapittel 3 i Computer Organisation and Architecture. Sekvensiell logikk. Flip-flop er

UNIVERSITETET I OSLO

Oversikt. Introduksjon Kildekode Kompilering Hello world Hello world med argumenter. 1 C programmering. 2 Funksjoner. 3 Datatyper. 4 Pekere og arrays

Programmeringsspråket C

Intel Core i7. Omid Mirmotahari 4

Oversikt. INF1000 Uke 1 time 2. Repetisjon - Introduksjon. Repetisjon - Program

Obligatorisk oppgave 1 INF1020 h2005

Algoritmer og Datastrukturer

Pensumoversikt - kodegenerering. Kap. 8 del 1 kodegenerering INF5110 v2006. Hvordan er instruksjonene i en virkelig CPU? Arne Maus, Ifi UiO

EKSAMEN. Dato: 9. mai 2016 Eksamenstid: 09:00 13:00

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

Programmeringsspråket C

EKSAMENSOPPGAVE I INF-1100

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

Hjemmeeksamen 2 i INF3110/4110

Repetisjon digital-teknikk. teknikk,, INF2270

IN1020. Datamaskinarkitektur

Informasjon Eksamen i IN1000 høsten 2017

INF1000 undervisningen INF 1000 høsten 2011 Uke september

Dagens temaer. Kort repetisjon. Mer om cache (1) Mer om cache (2) Read hit. Read miss. Write hit. Hurtig minne. Cache

Oppgave 1. Sekvenser (20%)

UNIVERSITETET I OSLO

EKSAMEN I TDT4160 DATAMASKINER GRUNNKURS

Transkript:

UNIVERSITETET I OSLO Det matematisk-naturvitenskapelige fakultet Eksamen i IN 147 Program- og maskinvare Eksamensdag: 12. mai 1997 Tid for eksamen: 9.00 15.00 Oppgavesettet er på 6 sider. Vedlegg: Tillatte hjelpemidler: Ingen Alle Kontroller at oppgavesettet er komplett før du begynner å besvare spørsmålene. Dette oppgavesettet består av 5 oppgaver som kan løses uavhengig av hverandre. Der det er snakk om programmering, skal programmene lages slik at de kan kompileres eller assembleres med gcc -ansi på SGI-maskinene her ved Ifi. Oppgave 1 JK-flip-flop (Total vekt 20%) Lykke til! Figur 1 viser en såkalt JK-flip-flop, der J, K og Clk er innganger, mens Q og Q er utganger. Forandringer på utgangene er knyttet til den fallende flanken på klokken (Clk), altså når klokken går fra høy til lav. J Q Clk K Q Figur 1: En JK-flip-flop Sammenhengen mellom inngangene J og K og utgangen Q er vist i sannhetsverditabellen i tabell 1 på neste side. Q(t) refererer til gjeldende verdi på utgangen, mens Q(t+1) sier hva utgangen blir etter første fallende flanke på Clk. (Fortsettes på side 2.)

Eksamen i IN 147, 12. mai 1997 Side 2 J K Q(t) Q(t+1) 0 0 0 0 0 0 1 1 0 1 0 0 0 1 1 0 1 0 0 1 1 0 1 1 1 1 0 1 1 1 1 0 Tabell 1: Sannhetsverditabellen for en JK flip-flop 1-a Boolsk ligning (Vekt 10%) Anta at du skal implementere en JK-flip-flop ved hjelp av en D-flip-flop. Skriv ned den enklest mulige ligningen for inngangssignalet D til D-flip-flop-en. 1-b Implementasjon med D-flip-flop (Vekt 10%) Tegn skjema for en JK-flip-flop basert på en D-flip-flop og et nettverk av AND-, OR- og NOT-porter. Oppgave 2 Primtall (Total vekt 25%) I figur 2 på siden etter er vist en C-funksjon som finner alle primtall mindre eller lik max og returnerer disse i en vektor prim. 2-a Oversettelse (Vekt 18%) Oversett denne funksjonen til MIPS assemblerspråk. Det er ikke nødvendig å ta hensyn til prosessorens pipeline. Hint Det er ikke nødvendig å forstå hvorledes denne funksjonen virker for å kunne oversette den. 2-b Pipeline (Vekt 7%) Vis (ved å referere til linjenummer) hvilke endringer som må gjøres i din løsning av forrige spørsmål for å ta hensyn til en pipeline med følgende egenskaper: Prosessoren steiler («stall-er») når instruksjonen etter en load avhenger av load-instruksjonen. Instruksjonen etter et hopp utføres alltid. Velg de endringer som reduserer eksekveringstiden. (Fortsettes på side 3.)

Eksamen i IN 147, 12. mai 1997 Side 3 #define FALSE 0 #define TRUE 1 #define MAX_PRIME 1000 Figur 2: En C-funksjon for å finne primtall unsigned char is_prime[max_prime+1]; void primes(int max, short prim[]) int i, j, n_prim = 0; if (max > MAX_PRIME) max = MAX_PRIME; for (i = 0; i <= max; i++) is_prime[i] = TRUE; for (i = 2; i <= max; i++) if (is_prime[i]) prim[n_prim++] = i; for (j = 2*i; j <= max; j += i) is_prime[j] = FALSE; prim[n_prim] = 0; Oppgave 3 Lagring av tekst (Total vekt 15%) Én ulempe ved Cs representasjon av tekst er at den ikke kan inneholde tegnet '\0'; et annet problem er muligheten for feil hvis man refererer utenfor tekstobjektet. Vi ønsker derfor å introdusere en ny representasjon av tekster basert på følgende deklarasjoner: typedef unsigned char uc; typedef struct uc *buf; int length; text; Her er buf en peker til en uc-vektor som inneholder teksten, mens length angir hvor mange tegn det er i den. text-variabelen t1 som inneholder "abcd" skal for eksempel representeres slik: t1 4 r - a b c d 3-a Henting av tegn fra tekst (Vekt 5%) Skriv funksjonen uc textfetch(text *t, int pos) som henter tegnet i posisjon pos (regnet fra 0) i t. Eksempelvis skal kallet (Fortsettes på side 4.)

Eksamen i IN 147, 12. mai 1997 Side 4 struct set int lower; int upper; double mean; vector[256]; Figur 3: Vektor med strukturer void adjust(int index, int lower_val, int upper_val, double mean_val) if (lower_val<vector[index].lower vector[index].upper<upper_val) vector[index].mean = mean_val; vector[index].lower = lower_val; vector[index].upper = upper_val; cx = textfetch(&t1,1) gi tegnet 'b' i cx. Hvis pos angir en posisjon utenfor teksten, skal det returneres en blank. 3-b Innsetting av tegn i tekst (Vekt 10%) Skriv funksjonen void textstore(text *t, uc c, int pos) som setter tegnet c inn i posisjon pos i t. Hvis pos<0, skal funksjonen ikke gjøre noe. Hvis pos 0 og angir en posisjon utenfor teksten, skal teksten utvides med blanke til den blir lang nok. (Dette innebærer at det må allokeres en ny vektor som buf kan peke på.) For eksempel skal kallet textstore(&t1, 'x', 7) resultere i at t1 nå ser slik ut: t1 8 r - a b c d x Oppgave 4 Hukommelseshierarki i en bussbasert multiprosessor (Total vekt 20%) Figurene 3 og 4 viser to varianter av en prosedyren adjust() og datastrukturen den opererer på. I figur 3 er dataene organisert som én vektor med struct-er, mens i figur 4 er datastrukturen organisert som 3 vektorer som ligger etter hverandre i hukommelsen. En int er et 32-bits heltall og en double er et 64-bits flyttall. Anta en maskin med felles hukommelse og to prosessorer. Prosessorer og hukommelse er knyttet sammen med en buss. Bussen kan bare brukes av en prosessor av gangen, og arbitrering blir brukt for å bestemme hvilken prosessor som slipper til først når begge prosessorene ønsker å bruke bussen (Fortsettes på side 5.)

Eksamen i IN 147, 12. mai 1997 Side 5 int lower[256]; int upper[256]; double mean[256]; Figur 4: Separate vektorer void adjust(int index, int lower_val, int upper_val, double mean_val) if (lower_val<lower[index] upper[index]<upper_val) mean[index] = mean_val; lower[index] = lower_val; upper[index] = upper_val; samtidig. Anta for enkelthets skyld at de to prosessorene veksler på å få bruke bussen. Hver prosessor har en «write back direct mapped» data-cache på 2 Kbyte, der det blir satt av plass ved miss i cache-en ved skriveoperasjoner. Cache-linjene er på 16 byte. For at prosessorene skal aksessere korrekte data implementerer maskinen cache-koherens ved hjelp av en «write invalidate»- protokoll. 4-a Simulering med koden i figur 3 (Vekt 7%) Utifra koden i figur 3, anta at prosessor 1 utfører prosedyrekallet adjust( 0, 16, 53, 78.16 ) samtidig med at prosessor 2 utfører prosedyrekallet adjust( 2, -6, 57, 11.37 ) og at testen i prosedyren adjust() slår til for begge prosessorene. Vis hvordan de to prosessorene aksesserer dataene og hvordan cache-ene betjener disse aksessene (inkludert tilstandsendingene), og hvilken trafikk som opererer på bussen. 4-b Simulering med koden i figur 4 (Vekt 7%) Løs forrige oppgave utifra koden i figur 4. 4-c Vurdering (Vekt 6%) Beskriv hvordan de to variantene fra figur 3 og figur 4 passer med maskinen, for eksempel med hensyn på cache-hit/miss-rater og antall bussaksesser. Oppgave 5 Trikk på enkeltspor (Total vekt 20%) Anta at vi har en trikkelinje som normalt går på dobbeltspor men som ett sted går på enkeltspor: Vest Øst (Fortsettes på side 6.)

Eksamen i IN 147, 12. mai 1997 Side 6 Vi skal lage et kontrollsystem som skal hindre kollisjoner på denne enkeltsporstrekningen. I dette systemet skal hver trikk være en egen prosess. 5-a Semaforer (Vekt 4%) Vis hvordan man kan bruke semaforer til å sikre at kun én trikk av gangen kjører på enkeltsporstrekningen. 5-b Forbedret løsning (Vekt 10%) Å kun kjøre én trikk av gangen gir dårlig utnyttelse av linjen. Utvid løsning fra forrige spørsmål slik at trikker som går østover får lov å kjøre inn på enkeltsporet hvis det er andre trikker der som også kjører østover; det tilsvarende skal gjelde for trikker som går vestover. Hint Dette problemet er en variant av leser/skriver-problemet. 5-c Monitorer (Vekt 6%) Implementér løsningen fra forrige spørsmål med monitorer.