Tentamen den 12 januari 2017 Datorarkitektur med operativsystem, EDT621

Relevanta dokument
Tentamen i Digitala system - EDI610 15hp varav denna tentamen 4,5hp

Tentamen den 9 januari 2018 Datorarkitekturer med operativsystem (EITF60)

Tentamen den 17 mars 2016 Datorteknik, EIT070

Tentamen den 18 mars svar Datorteknik, EIT070

Tentamen den 14 januari 2015 Datorarkitekturer med operativsystem, EDT621, 7,5 poäng

Uppgift 1: a) u= a c + a bc+ ab d +b cd

Exempeltentamen Datorteknik, EIT070,

Svar till tentamen den 16 december 2013 Datorarkitekturer med operativsystem, EDT621, 7,5 poäng

Digitala System: Datorteknik ERIK LARSSON

Tentamen den 14 januari 2016 Datorarkitektur med operativsystem, EDT621

Tentamen i Digitala system - EITA15 15hp varav denna tentamen 4,5hp

Digitala System: Datorteknik ERIK LARSSON

Datorarkitekturer med operativsystem ERIK LARSSON

Närliggande allokering Datorteknik

En processor kan ha en klockfrekvens på flera GHz. Det går alltså a9 exekvera en instruk=on väldigt for, givet a9 instruk=onen finns i processorn.

Tentamen i Digitala system - EITA15 15hp varav denna tentamen 4,5hp

Datorsystemteknik DVGA03 Föreläsning 8

Datorarkitekturer med operativsystem ERIK LARSSON

Minnet från processorns sida Datorteknik

Datorarkitekturer med Operativsystem

En Von Neumann-arkitektur ( Von Neumann-principen i föreläsning 1) innebär:

En något mer detaljerad bild av en processor. De tre delarna i processorn är: Nere 3ll vänster finns e' antal register som används för a' lagra data.

En något mer detaljerad bild av en processor. De tre delarna i processorn är: Nere 3ll vänster finns e' antal register som används för a' lagra data.

Datorteknik ERIK LARSSON

Datorteknik ERIK LARSSON

Föreläsningsanteckningar 5. Cacheminnen

Datorteknik ERIK LARSSON

Datorarkitekturer med operativsystem ERIK LARSSON

Grundläggande datavetenskap, 4p

Datorteknik ERIK LARSSON

Hantering av hazards i multi-pipelines

SVAR TILL TENTAMEN I DATORSYSTEM, VT2013

Datorsystem. Tentamen

Digitala System: Datorteknik ERIK LARSSON

Pipelining i Intel 80486

TSEA28 Datorteknik Y (och U)

Datorteknik. Föreläsning 6. Processorns uppbyggnad, pipelining. Institutionen för elektro- och informationsteknologi, LTH. Mål

General Purpose registers ALU I T H S V N Z C SREG. Antag att vi behöver skriva in talet 25 till register R18

Datorarkitekturer med operativsystem ERIK LARSSON

Program Datorteknik. Kontrollenhet. Exekvering av en instruktion. Abstraktionsnivå: Högnivåspråk. Assemblyspråk. Maskinspråk.

Datorteknik ERIK LARSSON

Hantering av hazards i pipelines

Datorteknik. Tomas Nordström. Föreläsning 2. För utveckling av verksamhet, produkter och livskvalitet.

SVAR TILL TENTAMEN I DATORSYSTEM, HT2013

TSEA28 Datorteknik Y (och U)

Datormodell. Datorns uppgifter -Utföra program (instruktioner) Göra beräkningar på data Flytta data Interagera med omvärlden

Filsystem - Inode. Datorteknik. Minnets komponenter. Programexekvering. Enhet för indata. Enhet för utdata CPU. Primärminne.

Processor pipelining genom historien (Intel i9-intel i7)

Datorarkitekturer med operativsystem ERIK LARSSON

F2: Motorola Arkitektur. Assembler vs. Maskinkod Exekvering av instruktioner i Instruktionsformat MOVE instruktionen

Datorsystem. Tentamen

System S. Datorarkitektur - en inledning. Organisation av datorsystem: olika abstraktionsnivåer. den mest abstrakta synen på systemet

Minnets komponenter. Digitala System: Datorteknik. Programexekvering. Programexekvering. Enhet för utdata. Enhet för indata CPU.

Fetch-Execute. Datorteknik. Pipelining. Pipeline diagram (vid en viss tidpunkt)

Datorteknik ERIK LARSSON

Datorteknik ERIK LARSSON

Program kan beskrivas på olika abstrak3onsnivåer. Högnivåprogram: läsbart (för människor), hög abstrak3onsnivå, enkelt a> porta (fly>a 3ll en annan ar

Pipelining i Intel Pentium II

Datorarkitekturer med operativsystem ERIK LARSSON

Datorarkitektur I. Tentamen Lördag 10 April Ekonomikum, B:154, klockan 09:00 14:00. Följande gäller: Skrivningstid: Fråga

Lösningar till tentamen i EIT070 Datorteknik

CE_O5. Cacheminne. Hemlaboration 2.

Övning1 Datorteknik, HH vt12 - Talsystem, logik, minne, instruktioner, assembler

0.1. INTRODUKTION Instruktionens opcode decodas till en språknivå som är förstålig för ALUn.

IT för personligt arbete F5

Lågnivåprogrammering. Föreläsning 2 Lågnivåprogrammering. Binära tal. En enkel modell av datorns inre

Övning1 Datorteknik, HH vt12 - Talsystem, logik, minne, instruktioner, assembler

Datorsystemteknik för E/D

Program som ska exekveras ligger i primärminnet. Processorn hämtar instruk7on för instruk7on. Varje instruk7on, som är e= antal 1:or och 0:or, tolkas

Multi-ported cache En rapport om några lösningar till att få flera minnesaccesser simultant.

DatorsystemteknikDAVA14 Föreläsning 9

Tentamen. Datorteknik Y, TSEA28

Jämförelse av skrivtekniker till cacheminne

Per Holm Lågnivåprogrammering 2014/15 24 / 177. int och double = = 2, 147, 483, 647

c a OP b Digitalteknik och Datorarkitektur 5hp ALU Design Principle 1 - Simplicity favors regularity add $15, $8, $11

Omtentamen i CDT204 - Datorarkitektur

Datorsystem. Tentamen

Tentamen. Datorteknik Y, TSEA28

LV6 LV7. Aktivera Kursens mål:

Ext-13 (Ver ) Exempel på RTN-beskrivning av FLEX-instruktioner

Tentamen. Datorteknik Y, TSEA28

Digital- och datorteknik

MESI i Intel Core 2 Duo

4. Pipelining. 4. Pipelining

Tentamen. Datorteknik Y, TSEA28

LABORATION DATORTEKNIK D. Pipelining. Namn och personnummer. Version: (OS,OVA,AN)

Ext-13 (Ver ) Exempel på RTN-beskrivning av FLEX-instruktioner

CE_O8. Cacheminne. Hemlaboration 2.

Datorsystem. Exempeltentamen

Datorsystem 2 CPU. Förra gången: Datorns historia Denna gång: Byggstenar i en dators arkitektur. Visning av Akka (för de som är intresserade)

Pipelining i RISC-processorn. Joakim Lindström Institutionen för informationsbehandling Åbo Akademi E-post: jolindst@abo.fi

Hannes Larsson - IDA 2, LTH Campus Helsingborg. NEC V R 4300i. Interlock-handling EDT621

Digitalteknik EIT020. Lecture 15: Design av digitala kretsar

Minnet. Minne. Minns Man Minnet? Aktivera Kursens mål: LV3 Fo7. RAM-minnen: ROM PROM FLASH RWM. Primärminnen Sekundärminne Blockminne. Ext 15.

Föreläsningsanteckningar 4. Pipelining

Dugga 1 status 41 godkända 39 ej godkända ERIK LARSSON

IBM POWER4, den första flerkärniga processorn och dess pipelines.

Tentamen Datorteknik D del 2, TSEA49

Parallellism i CDC 7600, pipelinens ursprung

Lunds Tekniska Högskola Datorarkitektur med operativsystem EITF60. Superscalar vs VLIW. Cornelia Kloth IDA2. Inlämningsdatum:

Transkript:

Lunds Universitet LTH Tentamen den 12 januari 2017 Datorarkitektur med operativsystem, EDT621 Skrivtid: 8.00-13.00 Inga tillåtna hjälpmedel Uppgifterna i tentamen ger maximalt 60 poäng. Uppgifterna är inte ordnade på något speciellt sätt. Betygsskalan ser ut så här: För betyg 3 krävs 30 poäng För betyg 4 krävs 40 poäng För betyg 5 krävs 50 poäng För att rättning av lösning ska komma i fråga fordras att lösningen är läslig samt klart och tydligt uppställd. Alla blad som lämnas in skall vara försedda med uppgiftens nummer, sorterade i nummerordning, och samlade i omslagsarket. Alla inlämnade blad ska vara märkta med logo och kod. 1

Uppgift 1. Totalt 15 poäng Antag ett datorsystem med ett cacheminne som består av 16 bytes och ett primärminne som består av 64 bytes. Cacheminnet använder direktmappning och har cacherader om 4 bytes. a) Hur många bitar behövs för att specificera datorsystemets adressrymd? Svar: Om primärminnet är på 64 bytes, behövs det 6 bitar eftersom 2 6 är 64. b) Hur många cacherader har cacheminnet? Svar: Eftersom cacheminnet är på 16 bytes och varje cacherad består av 4 bytes så kommer det finnas 16/4 = 4 cacherader. c) Vid exekvering av ett program har processorn läst adress 1 och vill läsa på adress 5, är det möjligt att avgöra om den läsningen kommer ge en hit eller en miss? Svar: Vi antar att minnet är byte-adresserat och om vi gjort en läsning på adress 1 så kommer det som finns på adress 0, 1, 2, och 3 läsas in till en cacherad. Om vi därefter skulle ha läst på någon av adresserna 0, 1, 2, eller 3, så skulle vi få en hit. Men, nu ska vi läsa på adress 5, och en tidigare läsning av adress 1 påverkar inte, så vi kan inte avgöra om det blir en hit eller en miss. d) I cacheminnet, när processorn läser i minnet, vilka adresser kan hamna i den första cacheraden? Svar: Eftersom primärminnet är på 64 bytes och en cacherad är på 4 bytes så är primärminnet bestående av 64/4=16 blocks. Dessa block ska hamna på cacherader. Data som finns i primärminnet på adress 0, 1, 2, och 3 kommer hamna i första cacheraden. Data som finns i primärminnet på adress 4, 5, 6, och 7 kommer hamna i andra cacheraden, medan data som finns i primärminnet på adress 8, 9, 10, och 11 kommer hamna i tredje cacheraden, och data som finns i primärminnet på adress 12, 13, 14, och 15 kommer hamna i tredje cacheraden. Data som finns på adress 16, 17, 18, och 19 kan inte hamna på fjärde cacheraden utan kommer hamna på första cacheraden. Det som hamnar på första cacheraden är data från adress: 0, 1, 2 och 3, 16, 17, 18, och 19, 32, 33, 34 och 35, 48, 49, 50, 51 e) Lokalitet av referenser är en viktig princip för cacheminnen, vad säger principen? Svar: När man studerar program som exekveras noterar man att minnesreferenser tenderar att gruppera sig under exekvering. Det gäller både instruktioner (t ex loopar) och data (datastrukturer). Det finns Lokalitet av referenser (locality of references): Temporal lokalitet lokalitet i tid som säger att om en instruktion/data blivit refererat nu, så är sannolikheten stor att samma referens görs inom kort och Rumslokalitet som säger att om instruktion/data blivit refererat nu, så är sannolikheten stor att instruktioner/data vid adresser i närheten kommer användas inom kort. Om Lokalitet av referenser inte fanns skulle det inte finnas någon vits att ha cacheminnen. 2

f) Om programmet nedan exekveras i datorsystemet, vilken är hitraten? ADRESS INSTRUKTION FÖRKLARING 00000 XOR R1, R1, R1 R1<-R1 XOR R1 01100 ADD R1, R1, 1 R1 <- R1 + 1 01110 MUL R1, 5, 2 R1 <- 5 MUL 2 10000 0b00001111 Binärt 10001 0x10 Hexadecimalt 10010 0b0 Binärt 10011 5 Decimalt Svar: När programmet exekverar som kommer dessa instruktioner exekvera: 00000 XOR R1, R1, R1 R1<-R1 XOR R1 och speciellt kommer det bli så här: 00000 XOR R1, R1, R1 R1<-R1 XOR R1. och så vidare när exekveringen börjar (0000) kommer vi få en miss och vi läser in ett block till cacherad 0. Detta block innehåller 4 bytes och det är instruktionerna då varje instruktion tar 2 bytes: 00000 XOR R1, R1, R1 R1<-R1 XOR R1 när vi kommer till instruktion 00010 så blir det en hit. När vi exekverar instruktionen 0100 får vi en ny miss och läser in instruktionerna:. Nu noterar vi att alla instruktioner som används finns i cacheminnet så i fortsättningen kommer vi bara få hit. Så, första gången instruktioner exekveras får vi 2 missar och 2 träffar. Därefter får vi träffar hela tiden, oavsett hur många iterationer vi genomför. 3

Uppgift 2. Totalt 10 poäng. I en processor som har en pipeline med följande steg: Fetch instruction (FI), Decode instruction (DI), Calculate operand address (CO), Fetch operand (FO), Execute instruction (EI) och Write operand (WO) ska följande program exekvera: ADD R2, R4 ADD R4, R3 SUB R2, R4 ADD R2, R1 MUL R3, R4 SUB #1, R2 ADD R1, R2 BEZ TAR MOVE #10, R1 Uppgifter: R2<-R2+R4 R4<-R4+R3 R2<-R2-R4 R2<-R2+R1 R3<-R3*R4 R2<-R2-1 R1<-R1+R2 Branch om zero R1<-10 a) Återge och förklara den första strukturella hazarden som uppkommer Svar: Den första strukturella hazarden uppkommer vid instruktionen: för här blir det en konflikt om att få läsa data i primärminnet (LOAD) och läsa in en ny efterföljande instruktion. b) Återge och förklara den första data hazarden som uppkommer Svar: Den första data hazarden uppkommer vid: ADD R4, R3 R4<-R4+R3 SUB R2, R4 R2<-R2-R4 för här blir det en konflikt i och med att ADD inte hinner färdigt med beräkningen av R4 innan R4 ska användas i nästa instruktion. c) Återge och förklara den första kontroll hazarden som uppkommer Svar: Den första kontroll hazarden uppkommer vid: BEZ TAR Branch om zero och problemet är att innan det är avgjort att det rör sig om en hoppinstruktion så har nästa instruktion redan börjat exekvera i pipelinen. 4

d) Återge och ändra den första uppkomsten där delay load kan användas (visa hur assemblykoden kan ändras) Svar: Delayed load uppkommer när det som läses in via en Load ska användas direkt efter, t ex: ADD R2, R1 R2<-R2+R1 i exemplet ändras koden från: ADD R2, R1 R2<-R2+R1 MUL R3, R4 R3<-R3*R4 till: MUL R3, R4 R3<-R3*R4 ADD R2, R1 R2<-R2+R1 e) Återge och ändra den första uppkomsten där delayed branching (visa hur assemblykoden ändras) Svar: Med delayed branching exekveras alltid ett givet antal instruktioner efter pipelinen. Om processorn använder delayed branching kan koden ändras till: ADD R1, R2 R1<-R1+R2 BEZ TAR Branch om zero NOP No operation MOVE #10, R1 R1<-10 5

Uppgift 3. Totalt 20 poäng. Antag en processor som har en klockfrekvens på 1kHz och där instruktioner anges i ett 3-adress format. För, t ex ALU operationer anges instruktioner enligt: Operation (OP) Destination (DES), Operand1 (OP1), Operand2 (OP2) och utförs enligt följande: DES = OP1 OP OP2. Om assemblerinstruktionen är ADD R1, R2, R3 kommer detta att utföras: R1=R2 ADD R3, d v s innehållet i register 2 (R2) kommer adderas till innehållet i register 3 (R3) och resultatet lagras i register 1 (R1). För programmet som är givet nedan, besvara: a) Hur många instruktioner hinner processorn exekvera på 1 sekund om varje instruktion tar 10 klockcykler (bortse från minnesaccesser)? Svar: Om processorn exekverar med en klockfrekvens på 1kHz, dvs 1000 Hz, så är en klockperiod 1/1000. Om varje instruktion tar 10 klockcykler så blir uttrycket: 1 sekund = 10 klockcykler per instruktion*x*1/1000 och löser man ut x får man att x=1000/10=100, dvs processorn hinner exekvera 100 instruktioner på 1 sekund. b) Hur många bitar behövs för att lagra en heltalsvariabel med värden mellan 0 och 65535? Svar: Om man har 1 bit kan man lagra talen 0 och 1, har man 2 bitar kan man lagra talen 0, 1, 2, och 3, har man 3 bitar kan man lagra talen 0, 1, 2, 7, har man 4 bitar kan man lagra talen 0, 1,.. 15, osv. Man kan också sätta upp ekvationen: 2 x =65534, vilket löses som: x=log 65534/log2 och avrunda detta uppåt. Det viktiga är att få fram uttrycket. c) Vilka av instruktioner påverkar status-flaggor, t ex Z-flaggan? Svar: Instruktioner som påverkar status-flaggor, t ex Z-flaggan är instruktioner som använder ALU:n. I exemplet nedan använder sig t ex XOR, ADD, och MUL av ALU:n. Dessa instruktioner kommer alltså påverka statusflaggor. d) Vilka instruktioner påverkas av status-flaggor, t ex Z-flaggan? Svar: Instruktioner som påverkas av statusflaggor är vanligen hopp-instruktioner där statusflaggan används för att bestämma ett villkor. I exemplet nedan är BEZ - IF ZERO BRANCH TO 10000 ett exempel där ett hopp kommer ske om ZERO flaggan är satt. e) Vilket är det binära värdet av det som finns lagrat på adress 10000-10011 om lagringen är enligt Big.endian? Svar: Om man antar att minnet är byte-adresserat, vilket är vanligast, är det ett värde som ligger lagrat på adresserna: 10010, 10011, 10100 och 10101. Om ett tal lagras enligt Big.endian är det som är lagrat på lägst adress det som svarar mot de mest signifikanta bitarna. Vi räknar ut vad som finns på varje adress. På adress: 10010 finns bitarna: 00001111, på adress 10011 finns det hexadecimalatalet 10, vilket motsvaras av 00010000, på adress 10100 ligger talet 0, dvs 00000000, och på adress 10101 ligger talet 5, vilket är 00000101. Vi sätter samman dessa tal, och får: 00001111000100000000000000000101 6

f) Hur många bitar behövs för att lagra en instruktion? Svar: Instruktioner ligger i minnet på adress 00000, 00010, 00100, d v s på avstånd om 2 byte, vilket gör att varje instruktion har längden 2 byte. g) Hur många bitar innehåller instruktionsregistret? Svar: I och med att varje instruktion är på 2 bytes, måste instruktionsregistret bestå av 16 bitar h) Om programmet startar och fem instruktioner exekveras, vilka instruktioner kommer exekvera? Svar: Dessa instruktioner kommer exekvera: 00000 XOR R1, R1, R1 R1<-R1 XOR R1 00110 BEZ 01010 IF ZERO BRANCH TO 01010 01010 BR 01010 BRANCH TO 01010 i) Om programmet startar och fem instruktioner exekveras, vad händer vid varje instruktion? Svar: För instruktionen: XOR R1, R1, R1 så blir R1 0. Oavsett vad som finns i R1 i början så kommer R1 XOR R1 resultera i att R1=0 För instruktionen: ADD R2, R1, 17 så får R2 värdet av R1 + 17, vilket är 0+17=17. För instruktionen: MUL R2, R1, R2 så får R2 värdet av R1 multiplicerat med R2, vilket är 0*17=0. Resultatet är 0, alltså sätts ZERO flaggan. För instruktionen: BEZ 01010 så kontrolleras ZERO flaggan och eftersom den är satt så kommer ett hopp att ske till adress: 01010 För instruktionen: BR 01010 sker ett hopp till adress 01010 j) Om programmet startar och fem instruktioner exekveras, vad är innehåll i programräknare och instruktionsregister vid varje instruktion som exekverats? Svar: Instruktionsregistret innehåller den instruktion som exekveras och programräknaren innehåller värdet av den adress där instruktionen ligger. Så, innehåll i programräknaren (PC) och instruktionsregister (IR) blir: PC IR 00000 XOR R1, R1, R1 00010 ADD R2, R1, 17 00100 MUL R2, R1, R2 00110 BEZ 01010 01010 BR 01010 7

8

Uppgift 4. Totalt 10 poäng. a) 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 f)*ts/p=0.2*ts+0.8*ts/4. Vi är intresserade av Ts/Tp, vilket blir: beräkningsenheter p är 4. Vi räknar ut Tp= f*ts+(1- 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 b) 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. c) 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 speed-up ä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. 9

Uppgift 5. Totalt 5 poäng. I ett system med pageing, förklara fragmentering. Svar: Fragmentering betyder att något delas upp i fragment. När det gäller datorsystem så handlar fragmentering om primärminnet och sekundärminnet. Om man inte använder pageing och man i ett datorsystem som har ett minne med plats för 4 enheter startar program A, som behöver 1 minnesenhet (plats 0), sedan program B (plats 1), och därefter program C (plats 2), vilka båda behöver en minnesenhet. Då återstår 1 minnesenhet i minnet (plats 3). Om man avslutar exekveringen av program B så lösgör man 1 minnesenhet (plats 1) och det finns 2 lediga minnesenheter, men dessa ligger inte tillsammans, eftersom program A har minnesplats 0 och program C har minnesplats 2. Om man vill exekvera ett program, D, som kräver 2 minnesenheter, så går inte det, trots att det finns ledigt utrymme i minnet. Man säger att minnet har blivit fragmenterat. För att ta bort denna fragmentering, så kan man använda paging. Minnet delas upp i ramar och varje program i sidor som har samma storlek som ramar. Med hjälp av en sidtabell är det möjligt att hålla ordning på var sidorna till ett program ligger. Fördelen är att ett program kan använda precis vilka ramar som helst. Men, det uppkommer fragmentering även när det gäller paging. Varje program ska placeras i sidor, och det är inte alltid så att ett program passar exakt i en sida. Om en sida kan bestå av 4 bytes, och programmet är 2 bytes, så används en sida, dvs 2 bytes går förlorade, och kallas för intern fragmentering. 10