Prøve-eksamen vår 2014

Download Report

Transcript Prøve-eksamen vår 2014

Prøve-eksamen Datamaskinarkitektur
Oppgave 1
(a) Gitt tallet T = (143)5 i 5-tallsystemet. Finn den binære, oktale og heksadesimale representasjonen av dette tallet.
(b) Gitt en Boolesk funksjon f = f (w, x, y, z) på standard form som en sum av
min-termer (produktledd) ved
X
f (w, x, y, z) =
m(0, 1, 2, 5, 7, 8, 11, 14, 15)
Funksjonen skal forenkles ved ved hjelp av Karnaugh-diagram (K-map). Finn alle
primimplikanter og essensielle primimplikanter. Skriv opp det forenklede uttrykket for f . Hvis det fins flere ekvivalente uttrykk, skal disse også skrives opp.
(c) Konstruer en sekvensiell krets som gjenkjenner bitmønstet 11001111 ved å
bruke T-vipper. Kretsen har en input x, og en output y. Kretsen startes i resettilstand. Når mønsteret er gjenkjent skal output være 1, ellers 0. Når mønsteret
er gjenkjent skal kretsen settes tilbake i reset-tilstand. Tegn tilstandsdiagram, og
lag sannhetstabell, og finn likningene for vippeinngangene. Det skal ikke tegnes
logisk diagram som beskriver kretsen.
Oppgave 2
(a) I denne oppgaven er det gitt en enkel datapath som er koblet til et minne
(RAM) som vist på figur 1.
Det er tre 16-bits databusser, A, B og D, samt tre andre 16-bits busser, F , “konstant inn” og “data ut” fra minne. Flyten av data kontrolleres av to multipleksere,
MUX B og MUX D. Disse styres av hvert sitt bit, M B og M D. Databussene A
og B er koblet til en ALU, samt at A er koblet til adresseinngangen på et dataminne, mens bussen B er koblet til datainngangen på dette minnet. Skrivetilgang
til dataminnet kontrolleres av bit-et M W .
1
RW (1)
D
8 x 16 register fil
DA (3)
AA (3)
A
BA (3)
B
Konstant
inn
1
0
MUX B
1
0
0
1
MB (1)
1
0
0
1
A
B
Data inn
ALU
Data minne
Cnt (4)
Data ut
F
FS (4)
0
MD (1)
1
MUX D
Figur 1: Datapath med minne til oppgave 5a.
2
Adresse
MW (1)
Registerfilen består av åtte 16 bits registere R0 , R1 , R2 , . . . , R7 . Skrivetilgangen
til denne styres av bitet RW hvor RW = 1 gir skrivetilgang via databussen D.
Adressen til registeret det skrives til gis ved tre-bits adressen DA. Adressen til
registeret som settes på buss A gis ved AA, mens adressen til registeret som settes
på buss B gis ved BA. Begge disse adressene består naturligvis av tre bits.
Funksjonsenheten (ALUen) til datapathen har fire styringsbit F S = s3 s2 s1 s0 , har
to 16 bits innganger, A og B, en 16 bits utgang F , samt en fire bits status utgang
Cnt (overflow, mente, fortegn og null). Cnt brukes ikke i denne oppgaven.
Funksjonaliteten til denne ALU-en er gitt i tabell 1.
Funksjon
Binær kode (F S)
F =A
0000
F =A+B
0001
F =A+1
0010
F =A+B+1
0011
F =A+B
0100
F =A+B+1
0101
F =A−1
0110
F =A
0111
F = sr B
1000
F = sl B
1001
F =A∨B
1010
F =A∧B
1011
F =A⊕B
1100
F =A
1101
F =B
1110
Tabell 1: Tabell for funksjonsenheten i oppgave 5a.
Et kontrollord for datapathen kan organiseres som følger:
DA (3)
AA (3)
BA (3)
M B (1)
F S (4)
M D (1)
RW (1)
Her angir tallene i parentes antall bits i hvert felt, altså inneholder kontrollordet
16 bits tilsammen. Kontrollbit-et M W (memory write) er ikke inkludert i dette
kontrollordet, vi forutsetter at dette styres fra kontrollenheten som henter instruksjoner fra instruksjonsminnet og dekoder disse. De to enhetene er ikke tegnet inn
i figur 1.
Kontrollordet for databussen er et 16 bits ord som beskrevet i teksten over.
Dette kan kodes mer lesbart ved å bruke et firesiffret heksadesimalt tall. I kontrollord som innholder “don’t care” bits, så skal du sette disse bit-ene til 0.
3
I denne oppgaven skal det bestemmes den binære og deretter den heksadesimale kodingen av kontrollordene for følgende tre mikrooperasjoner:
1) M [R6 ] ← R2
2) R3 ← R5 − R6
3) R1 ← R3 ∨ R4
Skriv deretter et lite program av mikrooperasjoner som utfører beregningen
z = 5x − 3y
La A(x), A(y) og A(z) betegne adressene i minnet til størrelsene x, y og z
henholdvis. Før beregningen starter er alle registerne nullstilt, altså, Ri = 0,
i = 0, . . . , 7. Tallene x og y er lagret i minnet på adressene, gitt heksadesimalt ved
A(x) = 0004 og A(y) = 0005. Resultatet z skal lagres på adressen A(z) = 0006.
Skriv ned en sekvens av mikrooperasjoner som utfører denne beregningen med de
forutsetninger som er gitt i teksten over. Kommenter mikroprogrammet.
Skriv ned mikrooperasjonene, ikke kontrollord for disse.
(b) Lag et assemblerprogram i ARC som beregner
z = 3x − 2y
Tallene x og y er lagret i minnet, og programmet skal skrive resultatet tilbake til
variabelen z i minnet. Du kan anta i eksempelet her at x = 45 og y = 11.
4