CE_O5. Cacheminne. Hemlaboration 2.



Relevanta dokument
CE_O8. Cacheminne. Hemlaboration 2.

Tentamen den 17 mars 2016 Datorteknik, EIT070

Lösningsförslag till tentamen i IS1500 Datorteknik

Minnet från processorns sida Datorteknik

Hemlaboration Cache Cacheminnen

Datorarkitekturer med Operativsystem

Tentamen den 9 januari 2018 Datorarkitekturer med operativsystem (EITF60)

Tentamen i IS1500/IS1200/2G1518 Datorteknik fredagen den 19 augusti 2011 kl

Föreläsningsanteckningar 5. Cacheminnen

SVAR TILL TENTAMEN I DATORSYSTEM, VT2013

Cacheminne och adressöversättning

Datorsystemteknik för E/D

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.

Datorsystem. Tentamen

Digitalteknik och Datorarkitektur 5hp

SVAR TILL TENTAMEN I DATORSYSTEM, HT2013

Digitala System: Datorteknik ERIK LARSSON

Tentamen den 12 januari 2017 Datorarkitektur med operativsystem, EDT621

Hemlaboration Cache Cacheminnen

Datorsystem. Tentamen

TSEA28 Datorteknik Y (och U)

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

Datorteknik ERIK LARSSON

Snapdragon 810: Cacheminnet

Lösningsförslag till Tenta i Mikrodator

Exempeltentamen Datorteknik, EIT070,

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

CPU. Carry/Borrow IX. Programräknare

Digitala System: Datorteknik ERIK LARSSON

Datorsystem. Tentamen

Övning 6. Parallellport, timer

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

Fö 2: Minnen. Introduktion. Primärminnet. Interna och externa minnen. Introduktion, Klassificiering

Tentamen den 18 mars svar Datorteknik, EIT070

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

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

Lösningsförslag till Tenta i Mikrodator

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

Datorarkitekturer med operativsystem ERIK LARSSON

Några gamla tentamensuppgifter: Minneshantering

IS1200 Datorteknik. Övning CE_O4 Maskinnära programmering med C Förberedelser till hemlaboration 1

Lösningar till tentamen i EIT070 Datorteknik

TSEA28 Datorteknik Y (och U)

Datorsystem. Exempeltentamen

CE_O1. Nios II. Enkla assembler-instruktioner.

Föreläsning 5 1 CPI Sammanfattning pipelining Cacheminnen

4. Maskinnära programmering i C. Förberedelser till hemlaboration 1.

TDDC77 Objektorienterad Programmering

Datorsystem. Tentamen

HF0010. Introduktionskurs i datateknik 1,5 hp

CE_O2. Nios II. Subrutiner med mera.

Öka prestanda i Shared-Cache multi-core processorer

Dynamiskt minne. Vad är dynamiskt minne Motivering Hur gör man i C Övningar

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

TSEA28 Datorteknik Y (och U)

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

Programmera i C Varför programmera i C när det finns språk som Simula och Pascal??

Jämförelse av skrivtekniker till cacheminne

Dataminne I/O Stack 0x005D 0x3D SP low byte 0x005E 0x3E SP high byte

Digital- och datorteknik

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

Datorsystemteknik D. Lösningar till tentamen i kursen EDA330 14/1 2000

Cacheminne i en AMD Opteron Processor

Cacheminne i en Intel Core 2 Duo-processor

Tentamen. Datorteknik Y, TSEA28

4 grundregler. Minneshantering. Problemet. Windows minkrav

Föreläsning 5 1 CPI. Sammanfattning pipelining Cacheminnen

Cacheprobe: programbibliotek för extrahering av cacheminnesparametrar

LMSim, cacheminnessimulator för utbildningssyfte

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

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

Att använda pekare i. C-kod

Grundläggande datavetenskap, 4p

CE_O3. Nios II. Inför lab nios2time

Fö 8: Operativsystem II. Minneshantering. Minneshantering (1) Minneshantering (2) Minneshantering och Virtuelltminne.

F5: Högnivåprogrammering

F5: Högnivåprogrammering

Lösningar till tentamen i EIT070 Datorteknik

PC-teknik, 5 p LABORATION ASSEMBLERINTRODUKTION

Tentamen den 14 januari 2016 Datorarkitektur med operativsystem, EDT621

Besvara de elektroniska frågorna (se kurshemsidan). Läs kapitel i kursbok

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

Lösningsförslag till tentamen i Datorteknik

MESI i Intel Core 2 Duo

Digital- och datorteknik

Mer datorarkitektur. En titt I datorn Minnen

Kontrollskrivning Mikrodatorteknik CDT S2-704

Programräknaren visar alltid på nästa instruktion som skall utföras. Så fort en instruktion har hämtats så visar programräknaren på nästa instruktion.

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

Tentamen. Datorteknik Y, TSEA28

Datorarkitekturer med operativsystem ERIK LARSSON

Programmeringsteknik med C och Matlab

LEU240 Mikrodatorsystem

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

Klassdeklaration. Metoddeklaration. Parameteröverföring

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

32 Bitar Blir 64 Sammanfattning

CE_O6. Parallell in/utmatning (I/O). Förberedelser till laboration nios2io.

6. Minnen. Associativt minne

Cache coherence hos multicoreprocessorer

Transkript:

IS1500 Exempelsamling till övning CE_O5, 2014 CE_O5. Cacheminne. Hemlaboration 2. 5.1. Medeltidshistoria Diskutera förloppet då CPU:n gör en läsreferens i huvudminnet dvs information kopieras från huvudminne via bus till CPU. Förklara hur olika blockstorlek inverkar och varför det kan löna sig att hämta flera ord i följd jämfört med enstaka ord. 5.2. Referenslokalitet: tidslokalitet och rumslokalitet Vad menas med att ett program vid sin exekvering har lokalitetsegenskaper: tidslokalitet och rumslokalitet? Försök ge förslag på ett program som vid sin exekvering har dålig lokalitet (noll?) och diskutera vilken inverkan det har vid användning av cache. Lokalitetsegenskaper finns både i program och data. Diskutera hur man kan skriva sina program för att öka lokaliteten. 5.3. Adressering i Main Memory och Cache Memory Antag att Main Memory, MM, har en viss storlek, t.ex. 3x128 Mbyte (384 Mbyte) Hur många adressbitar krävs för adressera MM dvs att kunna peka ut varje enskild byte i MM. Visa hur adressen ovan delas upp i olika fält för att ange var i ett cacheminne man ska lagra den information som pekas ut i Main Memory. Antag att cacheminnet innehåller 16 Kbyte och man vid varje referens till Main Memory överför ett block om 4 Word om vardera 64 bitar (8 byte)). Visa för olika fall enligt nedan. Visa även hur antal bitar i de olika fälten i adressen ändras om man ändrar storlek respektive blockstorlek i cacheminnet. a) Direkt adressavbildning (1-vägs associativ adressavbildning) b) 2- och 4-vägs mängdassociativ adressavbildning c) Fullt associativ adressavbildning Exempelsamling Sida 1 av 5 2014-10-13

5.4. Analys av träff och miss i cache-minne Här nedanför finns en del av ett assemblerprogram. I varje deluppgift är datacacheminnet alltid tomt när rad 1 körs. Instruktionen ldw läser 4 bytes och instruktionen stw skriver 4 bytes. Vid miss hämtar cacheminnet alltid ett helt block. rad 1 movia r8, 0x80f000 # lägg adress i r8 (men läs inga data från minnet) rad 2 ldw r15, 48(r8) # läs från 0...0 1000 0000 1111 0000 0011 0000 rad 3 ldw r14, 0(r8) # läs från 0...0 1000 0000 1111 0000 0000 0000 rad 4 stw r13, 64(r8) # skriv till 0...0 1000 0000 1111 0000 0100 0000 rad 5 ldw r12, 4(r8) # läs från 0...0 1000 0000 1111 0000 0000 0100 rad 6 stw r11, 512(r8) # skriv till 0...0 1000 0000 1111 0010 0000 0000 rad 7 stw r10, 4(r8) # skriv till 0...0 1000 0000 1111 0000 0000 0100 rad 8 ldw r9, 1536(r8) # läs från 0...0 1000 0000 1111 0110 0000 0000 rad 9 ldw r12, 4(r8) # läs från 0...0 1000 0000 1111 0000 0000 0100 a) Förklara vad tidslokalitet innebär. Har datareferenserna mycket eller lite tidslokalitet när en dator kör assemblerkoden här ovanför? En datareferens är detsamma som en läsning eller skrivning av data. Har instruktionshämtningarna mycket eller lite tidslokalitet när en dator kör assemblerkoden här ovanför? adressetikett (tag) radnummer (index) byte offset i blocket mest signifikant adressbit 32 bitar totalt minst signifikant adressbit b) Figuren här ovanför visar hur en 32-bits adress delas upp av ett datacacheminne. För adressetiketten används 16 bit, för radnummer 10 bit, och för byte offset 6 bit. Cacheminnet är direktmappat, så associativitetstalet är 1. Ange cacheminnets storlek (i bytes) och blockstorlek (i bytes). Ange också det binära radnummer (index) i datacacheminnet som refereras, när datorn utför load-instruktionen på rad 2 i assemblerkoden här ovanför. I de följande deluppgifterna ska du ange följande för varje ldw och stw: det binära index som används i datacacheminnet, om det blir träff eller miss i datacacheminnet (med motivering), samt vid miss: minnesadresserna för alla bytes som hämtas till datacacheminnet. Exempel: "index 0101110001, miss, har aldrig hämtats, hämta 0x123450 0x12345f". c) Träff och miss. Storlek, blockstorlek och associativitet enligt föregående deluppgift. d) Nya parametervärden jämfört med deluppgift c. Storlek (cache size): 1024 byte (256 ord). Blockstorlek (line size): 16 byte (4 ord). e) Ny associativitet (blocks in set), jämfört med deluppgift d. Storlek (cache size): 1024 byte (256 ord). Blockstorlek (line size): 16 byte (4 ord). Associativitet (blocks in set): 2-vägs associativt. Utbytespolicy är Least Recently Used (LRU). Exempelsamling Sida 2 av 5 2014-10-13

5.5. Analys av träff och miss i cache-minne Här nedanför finns en del av ett assemblerprogram. Cacheminnet är tomt när rad 1 körs. rad 1 movia r8, 0x80a700 ; lägg adress i r8 rad 2 ldw r12,0(r8) ; läs 4 bytes från adress 0x80a700 rad 3 ldw r13,4(r8) ; läs 4 bytes från adress 0x80a704 rad 4 stw r14,20(r8) ; skriv 4 bytes till adress 0x80a714 rad 5 ldw r15,12(r8) ; läs 4 bytes från adress 0x80a70c rad 6 ldw r16,256(r8) ; läs 4 bytes från adress 0x80a800 rad 7 ldw r17,20(r8) ; läs 4 bytes från adress 0x80a714 a) Är tidslokaliteten stor eller liten för instruktionshämtningarna när en dator kör assemblerkoden ovan? Är rumslokaliteten stor eller liten för instruktionshämtningarna? b) Är tidslokaliteten (re-use) stor eller liten för läsning/skrivning av data när en dator kör assemblerkoden här ovanför? Är rumslokaliteten (locality) stor eller liten för läsning/skrivning av data? c) För varje ldw och stw i assemblerkoden här ovanför, ange om den ger träff eller miss i datacacheminnet (D-cache). Blockstorlek (line size): 8 byte (2 ord). d) Ändring av blockstorlek (block size), jämfört med deluppgift c. För varje ldw och stw i assemblerkoden här ovanför, ange om den ger träff eller miss i datacacheminnet (D-cache). Blockstorlek (line size): 64 byte (16 ord). e) Ändring av associativitet (blocks in set), jämfört med deluppgift c. För varje ldw och stw i assemblerkoden här ovanför, ange om den ger träff eller miss i datacacheminnet (D-cache). Blockstorlek (line size): 8 byte (2 ord). Associativitet (blocks in set): 4-vägs associativt. Utbytespolicy: LRU, Least Recently Used. Exempelsamling Sida 3 av 5 2014-10-13

5.6. Cache-minnes-prestanda för program med slingor (loopar) Nederst på sidan visas ett programexempel. I denna uppgift ska Du diskutera hur egenskaper hos instruktions-cachen påverkar hitrate i instruktionscachen och exekveringstid vid exekvering av detta program. Varje instruktion består av ett ord om 32 bitar ( =4 bytes). a) Utgå från en instruktionscache med direkt adressavbildning (direct mapped cache) som rymmer 16 ord och har blockstorleken 2 ord. Hur påverkas hitrate vid exekvering av nedanstående program om storleken av cachen ökas från 16 ord till 32 ord. Du ska svara i enlighet med: Då storleken dubbleras från 16 till 32 kommer hit rate att ökas/minskas/ändras avsevärt/märkbart/obetydligt på grund av att... Exempel: Då storleken dubbleras från 16 till 32 ord kommer hit rate att ändras obetydligt på grund av att... (detta är bara ett exempel på hur man kan skriva) b) Fortsättning på a): Hur påverkas hitrate vid exekvering av nedanstående program om storleken av cachen ökas från 32 ord till 64 ord. Svara på liknande sätt som i uppgift a). c) Utgå från en instruktionscache med direkt adressavbildning (direct mapped cache) som rymmer 32 ord och har blockstorleken 2 ord. Hur påverkas hitrate vid exekvering av nedanstående program om associativiteten av cachen ökas från 1 ord till 2 och med oförändrad storlek på cachen. Svara på liknande sätt som i uppgift a). d) Utgå från en instruktionscache med direkt adressavbildning (direct mapped cache) som rymmer 64 ord och har blockstorleken 2 ord. Hur påverkas hitrate vid exekvering av nedanstående program om blockstorleken av cachen ökas från 2 ord per block till 8 ord per block och med oförändrad storlek på cachen. Svara på liknande sätt som i uppgift a). e) Hur påverkas exekveringstiden för programmen för vart och ett av de fall som anges i uppgift a) till d) ovan? Loop1 cirka 30 instruktioner cirka 1000 varv Loop2 cirka 60 instruktioner cirka 2000 varv Exempelsamling Sida 4 av 5 2014-10-13

............... IS1500 Datorteknik Exempelsamling 5.7. Cache-minnes-prestanda för matrisberäkning Här finns delar av ett C-program som beräknar element i arrayer av flyttal. Figuren visar hur arrayerna lagras i minnet. Ett flyttal (float) lagras i 4 byte (1 ord). Anta att cacheminnet är tomt varje gång som saxpy anropas. Anta också att x[i] läses först i varje iteration, sedan y[i]. Sedan skrivs s[i]. Om det blir cache-miss då, så hämtas s[i] till cacheminnet innan skrivningen avslutas. adress 0 adress 4 1 ord (4 byte) x[0] x[1] x[2] Indexvariabeln i lagras i ett register, inte i minnet. Konstanterna a och mfactor lagras också i register, inte i minnet. a) Finns tidslokalitet och/eller rumslokalitet för instruktionsreferenserna i programmet? b) Finns tidslokalitet och/eller rumslokalitet för datareferenserna i programmet? c) Beräkna hit-rate för datacacheminnet (D-cache), när funktionen saxpy körs. Storlek (cache size): 512 byte (128 ord). Blockstorlek (line size): 32 byte (8 ord). Associativitet: direktmappat (direct-mapped). d) Ändring av storlek (cache size), jämfört med deluppgift c. Beräkna hit-rate om storleken halveras; beräkna också hit-rate om storleken fördubblas. Blockstorlek och associativitet ändras inte när storleken ändras. x[127] y[0] y[1] y[127] s[0] e) Ändring av associativitet (blocks in sets), jämfört med deluppgift c. Beräkna hit-rate om associativiteten ökas till 2; beräkna också hit-rate om associativiteten ökas till 4. Storlek och blockstorlek ändras inte då associativiteten ändras. LRU är den utbytesalgoritm som ska förutsättas. float x[128], y[128], s[128]; float mfactor; /* Här finns mera programkod... */ void saxpy( void ) { register int i; /* i kommer att lagras i register */ register float a = mfactor; /* a kommer att lagras i register */ for ( i = 0; i < 128; i = i + 1 ) s[i] = a*x[i] + y[i]; } Exempelsamling Sida 5 av 5 2014-10-13