Lunds Universitet LTH Tentamen den 9 januari 2018 Datorarkitekturer med operativsystem (EITF60) Skrivtid: 08.00-13.00 Tillåtna hjälpmedel: Inga. Maximalt antal poäng: 50 poäng För betyg 3 krävs 20 poäng För betyg 4 krävs 30 poäng För betyg 5 krävs 40 poäng Alla lösa blad skall vara samlade i omslagsarket. Inlämnade uppgifter skall vara försedda med uppgiftens nummer. Lösningarna skrivs in i nummerordning. Kryssa för lösta uppgifter och ange antalet inlämnade blad. 1
Uppgift 1. Totalt 5 poäng. Antag att dator A har en klockcykeltid (clock cycle time) på 250 ps och en CPI på 2.0 för något program, och att dator B har en klockcykeltid på 500 ps and CPI of 1.2 för samma program. Vilken dator är snabbast? Hur mycket snabbare är den? Svar: se sida 36 i kursboken. 2
Uppgift 2. Totalt 2 poäng. Följande är givet: Processorn använder direktmappat cache Dataord är på 8 bitar Minnet är byte adresserat En fysisk adress är 20 bitar En tag i cacheminnet är 11 bitar Varje block/cacherad består av 16 bytes Hur många block finns i cacheminnet? Svar: Det är givet att 20 bitar används för adress och av dessa är 11 bitar TAG. Alltså är det 9 bitar som är kvar för index och offset. Vi kan också bestämma antal bitar i offset eftersom det är givet att dataord är på 8 bitar, minnet är byteadresserbart och varje block/cacherad är på 16 bytes. Eftersom varje block/cacherad är på 16 bytes och det är byteadresserat behövs 4 bitar för offset. Det gör att det är (20-11-4=)5 bitar kvar till index. Vi vet att 5 bitar kan adressera: 2^5=32 så är det 32 block/cacherader i cacheminnet. 3
Uppgift 3. Totalt 4 poäng. Följande är givet: Antag ett 16-way set-associative cache Cacheminnet består av 2Mbytes (2^21 bytes) Dataord (word) är 8 bitar Systemet är byteadresserat Block/cacherad storlek är 32 dataord (words) Den fysiska adressen är på 64 bitar. Hur är de 64 bitarna fördelade på tag, index och offset? Svar: Vi börjar med att räkna ut bitar för offset. Det är 32 dataord per block/cacherad, vilket gör att 5 bitar behövs (2^5=32). Alltså är offset=5. För att beräkna index så vet vi att cacheminnet är på 2Mbytes (2^21 bytes) och vi vet att varje block/cacherad består av 32 (2^5) dataord som vardera är 8 (1 byte) bitar. Varje block/cacherad består alltså av 32 bytes, så antal block blir: 2^21/2^5=2^16. Eftersom minnet är 16-way set-associative grupperas blocken i set om 16. Antal set blir: 2^16/16=2^16/2^4=2^12. Det behövs alltså 12 bitar för index. För att räkna ut antal bitar för tag så vet vi att fysiska adressen är 64 bitar. Alltså blir tag=bitar för fysisk adress offset index=64-5-12=47 bitar. För att summera: Tag: 47 bitar, index: 12 bitar, offset: 5 bitar. 4
Uppgift 4. Totalt 3 poäng. Följande är givet: Dataord är på 64 bitar Minnet är byte adresserat En fysisk adress är 32 bitar En tag i cacheminnet är 11 bitar Varje block/cacherad består av 16 bytes Hur många block finns i cacheminnet? Svar: se sida 388 i kursboken 5
Uppgift 5. Totalt 5 poäng. Medeltid (average) för läsning/skrivning (access) i ett datorsystem med ett L1 cache är 2.4 klockcykler. Om data är tillgängligt (hit), kostar det 1 klockcykel. Om data inte är tillgängligt (miss) kostar det 80 klockcykler, eftersom data måste hämtas från primärminnet. För att förbättra medeltid för minnesaccesser (average memory access time) med 65% genom att använda ett L2 cache. Detta L2 cacheminne har accesstid på 6 klockcykler. Ett L2 cacheminne påverkar inte access eller hit tider för L1 och access till primärminnet kostar fortfarande 80 klockcykler. För att uppnå 65% förbättring av medeltid för minnesaccesser, vilken hit rate krävs i L2 (visa uttryck och förenkla så långt det går)? Svar: Medeltid för minnesaccesser består av två fall: hit tid och miss tid som vi tecknar: hit tid + miss rate * miss penalty Om medeltid för accesser är 2.4, hit tid=1 och misstid är 80 får vi uttrycket: 2.4 = 1 + miss rate * 80. Vi räknar ut miss rate till: (2.4-1)/80=1.4/80 (1.75%) Vi vill ha en speedup på 65% så vi tecknar ett uttryck: Speedup = Tid (gammal lösning)/tid (ny lösning) Vi fyller i siffror: 1.65 = 2.4/Tid (ny lösning) och räknar ut: Tid (ny lösning) = 2.4/1.65 Vi tecknar nu uttryck för medeltid med L2: Tid(ny lösning) = Hit tid+miss rate*(l2_tid + Miss Rate (L2))*80) Med siffror: 2.4/1.65=1+1.4/80*(6+Miss rate(l2)*80) Som är: 2.4/1.65=1+1.4/80*6+1.4*Miss rate (L2) Miss rate (L2)=(2.4/1.65-1-1.4/80*6)/1.4 Hit rate (L2)=1-Miss rate(l2). Alltså måste hit rate (L2) minst vara: 1 (2.4/1.65-1-1.4/80*6)/1.4 6
Uppgift 6. Totalt 5 poäng. Anta en processor med 6 cores och ett program. Programmet består av: 450000 iterationer. Bortse för tid för uppstart och avslut (fokusera enbart på iterationerna) Varje iteration tar 100 klockcykler Om mer än 1 core används tillkommer overhead för kommunikation mellan cores. Om 2 cores används tillkommer 10 klockcykler per iteration, om 3 cores används tillkommer 20 klockcykler per iteration, o s v. Teckna ett uttryck som kan bestämma hur många cores som ska användas för att snabbast exekvera programmet. Svar: Ett uttryck för exekveringstiden består av tid för loopar och tid för kommunikation mellan cores, d v s T= Tkom + Tloop där Tkom beror på hur många cores X som används och hur många iterationer N som görs. För X>1 kostar varje loop 10 klockcykler. Detta gör: Tkom= N*(X-1)*10. När det gäller Tloop så beror det på N och X och tid per loop. Uttryck för Tloop blir=100*n/x. Det totala uttrycket blir: T=Tkom+Tloop=N*(X-1)*10+100*N/X 7
Uppgift 7. Totalt 5 poäng. Enligt Amdahls lag, vilken speed-up fås om ett program kan köras parallellt till 80% och antalet beräkningsenheter är 4? Svar: Låt Ts vara tiden som krävs för att exekvera programmet på en beräkningsenhet och Tp vara tiden som krävs för att exekvera programmet på 4 beräkningsenheter. Speed-up ges av: Ts/Tp. Amdahls lag är: Tp=f*Ts+(1-f)*Ts/p där f är del av program som måste exekveras sekventiellt och p är antal beräkningsenheter. I uppgiften ges att 1-f=80%, vilket för att f=20%=0.2 och att antal beräkningsenheter p är 4. Vi räknar ut Tp= f*ts+(1- f)*ts/p=0.2*ts+0.8*ts/4. Vi är intresserade av Ts/Tp, vilket blir: Ts/(f*Ts+(1-f)*Ts/p)=1/(f+(1- f)/p)=1/(0.2+0.8/4)=1/(0.2+0.2)=1/0.4=2.5 Enligt Amdahls lag, hur parallellt måste ett program minst göras för att få en speed-up (Ts/Tp) på 2 när antalet beräkningsenheter är 4? Svar: Givet är att Amdahls lag är: Tp=f*Ts+(1-f)*Ts/p och vi vet att p=4 och Ts/Tp=2. Vi ska nu räkna ut f. Eftersom Ts/Tp=2, så är Tp/Ts=1/2. Eftersom Tp=f*Ts+(1-f)*Ts/p så är Tp/Ts=f+(1- f)/p. Vi känner Tp/Ts och p och får: 1/2=f+(1-f)/4 vilket gör att f=1/3. Enligt Amdahls lag, hur mycket speed-up är teoretiskt möjlig att få om ett program kan köras parallellt till 80%? Svar: Givet är att Amdahls lag är: Tp=f*Ts+(1-f)*Ts/p och att 1- f=80%, f=0.2. Detta ger: Tp=0.2*Ts+0.8*Ts/p. Eftersom speedup är: Ts/Tp, får vi att Ts/Tp=1/(0.2+0.8/p). Vi ökar nu på (vi låter p gå mot oändligheten) och får då att termen 0.8/p går mot 0. Uttrycket för Ts/Tp blir 1/0.2, vilket är 5. 8
Uppgift 8. Totalt 2 poäng. Tid för de olika stegen i en processor visas nedan: IF DI EX MEM WB 250ps 350ps 150ps 300ps 200ps Om processorn är icke-pipelinad (non-pipelined), vad är klockcykeltiden? Om processorn är pipelinad (pipelined), vad är klockcykeltiden? Svar: Se sidan 275 i kursboken 9
Uppgift 9. Totalt 10 poäng. Antag ett datorsystem som använder virtuelltminne och cacheminne. Det virtuellaminnet använder sig av en TLB och sidtabeller. Ett antal alternativ kan uppkomma, markerade som a-f i tabellen nedan. Tabellen läses enligt följande. I uppgift a gäller att det vid en minnesaccess blir det en hit i TLB, en hit i sidtabell och en miss i cache. För varje alternativ nedan (a-f) diskutera vilka som är möjliga och förklara varför/varför inte. Uppgift TLB Sidtabell Cache a hit hit miss b miss hit hit c miss hit miss d miss miss miss e hit miss miss f hit miss hit g miss miss hit Svar: se sida 443 i kursboken. 10
Uppgift 10 Totalt 10 poäng. Följande är givet för ett datorsystem: en miss rate på 2% i instruktions cache en miss rate på 4 % i data cache processor har CPI=2 när det inte inträffar några missar, dvs bara cache hits av alla instruktioner som exekveras så är 36% instruktioner med läsning/skrivning. en cache miss har en miss penalty på 100 cykler. Om 100 instruktioner exekveras, vad är den förväntade tiden för att: hantera missar i instruktionscachen? hantera missar i datacachen? hantera missar i både instruktionscachen och datacachen? exekvera instruktionerna och hantera missar i både instruktionscachen och datacachen? Svar: se sida 410 i kursboken. 11