\underline{Oppgave 1:}

a) Snittkostnad:

C = \frac{∑_{i=1}^{2} C_{i}S_{i}}{∑_{i=1}^{2} S_{i}} = \frac{C_{1}S_{1} + C_{2}S_{2}}{S_{1} + S_{2}} = \frac{C_{1} \frac{S_{1}}{S_{2}} + C_{2}}{\frac{S_{1}}{S_{2}} + 1} ⟶^{S_{1}/S_{2}→0} C_{2}

b) Snittkosten går mot C_{2} når S_{1} ≪ S_{2}.

c) Forventet tilgangstid for systemet = t_{a} = P(Data finnes i M_{1}) ∗ Tilgangstid for M_{1} + P(Data finnes ikke i M_{1}) ∗ Tilgangstid for M_{2} = Ht_{1} + (1 − H)t_{2} .

d) Setter inn for t_{a} fra c) i uttrykket for E:

E = \frac{t_{1}}{t_{a}} = \frac{1}{r + (1 − r)H}

e)

E = \frac{1}{r + (1 − r)H} = \frac{1}{100 − 99H} > 0.9 ⇒ H > 0.998

\underline{Oppgave 2:}

a) Instruksjonshenting: Skalar RISC henter en instruksjon pr. sykel, mens superskalar RISC kan vanligvis hente mer enn en instruksjon pr. sykel.

Samlebåndsarkitektur: I en superskalar RISC med m enheter, kan opp til m samlebånd være aktive i en base-sykel. En skalar prosessor tilsvarer en superskalar prosessor med m = 1.

Prosessor-ytelse: En superskalar RISC med m enheter kan ha en ytelse som tilsvarer m ganger en skalar RISC, når vi antar at de har samme klokke-rate og at det ikke er noen data-avhengigheter, kontroll-avhengigheter eller andre ressurs-konflikter mellom instruksjonene.

b) Både superskalar arkitektur og VLIW-arkitektur har flere funksjonelle enheter. Superskalar arkitektur trenger imidlertid mer avansert maskinvare som f.eks. store “reorder” registre og reservasjons-tabeller. Dette er nødvendig for å utnytte ressursene fullt ut. I tillegg trengs programvare løsninger for å håndtere data- og kontroll-avhengigheter og for å øke effektiviteten.

For VLIW-arkitekturer blir instruksjonene “pakket” sammen av kompilatoren, slik at flest mulig instruksjoner kan utføres samtidig uten at program-rekkefølge eller algoritme endres. På grunn av denne eksplisitte formen for parallellitet, trengs bare enkel maskinvare- og programvare-støtte under kjøring av programmer. Dekodings-logikk kan f.eks. være enkel.

c) For skalar CISC eller RISC er bare ett samlebånd aktivt samtidig. I en superskalar RISC kan flere samlebånd være aktive samtidig. For å utnytte alle samlebåndene i en superskalar RISC trengs det derfor avansert maskinvare og programvare. I en VLIW-arkitektur kan flere samlebånd være aktive samtidig. Avanserte kompilatorer samler instruksjoner til lange instruksjons-ord (very long instruction word) slik at flest mulig av de funksjonelle enhetene brukes samtidig.

\underline{Oppgave 3:}

a) Temporal lokalitet: Data og kode som har nettopp blitt aksessert, vil med stor sannsynlighet aksesseres om igjen, i nær framtid.

Romlig lokalitet: Data og kode som har blitt aksessert, vil med stor sannsynlighet ligge i “nærheten” av tidligere aksesser.

Sekvensiell lokalitet: Utførelses-rekkefølgen av instruksjoner vil følge den sekvensielle programrekkefølgen.

b) Arbeids-settet (Eng: the working set) er de adresser eller sider som blir referert i et tidsrom. Sider i arbeids-settet brukes ofte og bør ligge i hoved-lageret.

Hvis vindus-størrelsen er stor, vil de residente sidene omslutte flere lokalitets-regioner og størrelsen på arbeids-settet vil sannsynligvis vokse. En stor vindus-størrelse vil øke treffraten. Men i et multiprogrammert miljø med mange sider som holdes i hoved-lageret for hver prosess, kan “trashing” oppstå. På den andre siden vil en liten vindus-størrelse medføre et mindre arbeids-sett og kan dermed gi en lavere treff-rate siden de aktive brukte sidene endres raskt med tiden.

c) 90-10 regelen: Det har blitt observert at 90% av utførelses tiden blir brukt på ca. 10% av koden. Denne regelen viser at små segmenter av kode utføres flere ganger (løkker) og at data som aksesseres er kontinuerlige elementer i en stor tabell-struktur.