TSEA8 Datorteknik Y (och U) Föreläsning Kent Palmkvi, ISY TSEA8 Datorteknik Y (och U), föreläsning, Kent Palmkvi 7-4- Dagens föreläsning Latens/genomrömning Minneyper Läsminne (ROM) Läs och skriv minnen (RAM) Cache Princip Exempel
TSEA8 Datorteknik Y (och U), föreläsning, Kent Palmkvi 7-4- Praktiska kommentarer Laboration 5 kommer jueras (anvisningarna skrivs om) Laboration 4 tips Sorteringsalgoritm använder A > B i flödesschemat Exemplet på inruktion är BGE motsvarande A B Sorteringävlingen deadline: Tisdag /5 kl :59. Jag ska kunna ladda design, ändra värden i PM adress E-FF, trycka på regs=, nolläll klockcykler, och sedan Kont. Sia maskinkodsinruktionen ska vara HALT från :a delen av labben. TSEA8 Datorteknik Y (och U), föreläsning, Kent Palmkvi 7-4- 4 Praktiska kommentarer, forts. Vad säger flaggor vid subtraktion A-B? Subtraktion implementeras som A+(-B), dvs vänd tecken på B och lägg ihop. -B fås genom att vända alla bitar i B och lägga till i LSB (minnessiffra till höger) Z: om subtraktionen gav noll som svar, dvs A=B C: om subtraktionen gav carry ut, gäller positiva heltal N: differensen är negativ (om differensen kan representeras) O: spill (overflow) när svaret beräknades (för -komplemental) Exempel (an 4-bitars tal => talområde -8 till +7), A-B = A+(-B) 6-4= 4-6=- -4-6=- 4-(-6)= -8-7=-5 7-(-8)=5 OBS: 5-bitar = -= + + + + + + 4= -4= ----- ----- ----- ----- ----- ----- 6= -6= 7= -7= 8= -8= C= C= C= C= C= C= = -= N= N= N= N= N= N= 5= -5= O= O= O= O= O= O= Notera O=N respektive O<>N
TSEA8 Datorteknik Y (och U), föreläsning, Kent Palmkvi 7-4- 5 Enkel RISC-baserad ruktur Enkelt exempel från kursboken (avsnitt 7.) PC, regierfil och minne klockade Chapter 7 Handout från http://alanclements.org/supplements.html TSEA8 Datorteknik Y (och U), föreläsning, Kent Palmkvi 7-4- 6 Exekveringid i exemplet Klockfrekvens begränsas av länga väg från regier till näa regier Inruktion LDR D,(S,#L) ; Läs minnescell som (S) +L pekar på t cycle = t pc + t Imem + t RF + t ALU + t Dmem + t MPLX + t RF Chapter 7 Handout från http://alanclements.org/supplements.html
TSEA8 Datorteknik Y (och U), föreläsning, Kent Palmkvi 7-4- 7 Pipelining: olika delar av flera inruktionener körs samtidigt Flera inruktionen hanteras parallellt Hämta inruktion, Läs operand,beräkna (ALU-operation), Minnesaccess, Skriv till regierfil Implementeras med klockade regier mellan de olika enheterna Figuren lite missvisande: från väner tidigare inruktioner, från höger senare inruktioner Chapter 7 Handout från http://alanclements.org/supplements.html TSEA8 Datorteknik Y (och U), föreläsning, Kent Palmkvi 7-4- 8 Pipelining är en möjlig lösning Pipelining tillåter högre klockfrekvens Ökar maximalt antal operationer per sekund Minskar INTE tid för en enskild operation att slutföras Databeroende mellan operationer begränsar hur användbar ökning av klockfrekvens är Villkorliga hopp behöver flaggorna satta innan hopp kan göras Behöver NOP (No-operations) läggas till mellan compare och villkorligt hopp? Tillåter flaggorna att beräknas innan villkorliga hoppet avgör om hopp ska tas
TSEA8 Datorteknik Y (och U), föreläsning, Kent Palmkvi 7-4- 9 Begrepp: latens, genomrömning Latens: Hur lång tid det tar att få utföra en komplett inruktion Genomrömning: Hur många inruktioner per sekund som kan utföras /Genomrömning = hur ofta en ny inruktion artas För pipelining: Latens > /Genomrömning latens /genomrömning Chapter 7 Handout från http://alanclements.org/supplements.html TSEA8 Datorteknik Y (och U), föreläsning, Kent Palmkvi 7-4- Problem med högre klockfrekvenser Alla delar i datorn är inte lika snabba Regier skickar fort ut värden på bussen ALU går olika fort beroende på operation Shift, AND, OR etc. går fort Add/sub går långsammare Multiplikation ännu långsammare Minnen är långsamma Större minnen långsammare än mindre Fysisk gräns: ljusets haighet GHz motsvarar ps/klockcykel = cm (vakum!) Långsammare på chip pga material
TSEA8 Datorteknik Y (och U), föreläsning, Kent Palmkvi 7-4- Minnen (program och datamminne) Utvecklingen av läshaighet för minne går långsammare än för processorn Ca 5% bättre processorpreanda per år Ca % bättre minnespreanda per år Större och örre skillnad, processorn måe ofta vänta på minnet Olika haighet och pris för olika minnen Finns många typer TSEA8 Datorteknik Y (och U), föreläsning, Kent Palmkvi 7-4- Minnesegenskaper Många olika egenskaper intressanta Processorns användning av minnesceller Kan värde skrivas in i minnesceller (read-only) Latens för läsning och skrivning Genomrömningshaighet för läsning och skrivning Finns värdena kvar efter att römmen slagits av (flyktiga) Tekniska/ekonomiska begränsningar Pris per bit i minnet Storlek på minnet Speciell hantering för att behålla värdet (dynamiska)
TSEA8 Datorteknik Y (och U), föreläsning, Kent Palmkvi 7-4- Minnesegenskaper läs/skriv Enbart läsning (ROM, Read Only Memory) Processorn kan bara läsa, inte skriva till minnet Maskprogrammerade ROM Programmeras vid tillverkning, billigt i ora volymer PROM: Programmable Read Only Memory Skrivning kan göras gång, ofta i speciell programmeringsutruning EPROM: Eraseable Programmable Read Only Memory Minnet kan raderas i speciell utruning (T ex UV) och programmeras om EEPROM: Electrically Eraseable Programmable Read Only Memory Minnet kan raderas cell för cell eller block elektriskt, eventuellt utan speciell utruning FLASH: Speciell typ av EEPROM Kan inte radera enaka celler, utan ora block (kbyte eller Mbyte) raderas per gång. Långsamma att skriva. TSEA8 Datorteknik Y (och U), föreläsning, Kent Palmkvi 7-4- 4 Minnesegenskaper läs/skriv, forts. Läs och skriv (RAM, Random Access Memory) Processorn kan skriva och läsa till varje cell i minnet Beroende på teknik kan värdet i minnet försvinna om man inte läser värdet inom viss tid SRAM: Statiskt RAM, värdet ligger kvar så länge römmen är på DRAM: Dynamiskt RAM, värdet försvinner om inte det läses och skrivs tillbaks inom viss tid (- ms mellan varje läsning) Bygger på lagring av laddning i en kondensator som sakta laddas ur Jämför skriva i sanden på en rand med vågor. Texten blir til slut oläslig om den inte skrivs om med jämna mellanrum SRAM mycket dyrare per minnescell och snabbare än DRAM
TSEA8 Datorteknik Y (och U), föreläsning, Kent Palmkvi 7-4- 5 Minnesegenskaper flyktigt/icke flyktigt Flyktigt minne, förlorar informationen vid spänningsbortfall (engelsk term: volatile) Måe initieras/fyllas när römmen slås på (t ex SRAM, DRAM) Icke-flyktiga minnen, behåller värde även om römförsörjning tas bort T ex: ROM, EPROM, FLASH Måe finnas icke-flyktigt minne i en dator Annars vet maskinen inte vad som ska göras när römmen slås på BIOS, bootsekvens, etc. Brukar vara av ROM typ FLASH vanligt (tillåter uppdatering av bootsekvens etc.) TSEA8 Datorteknik Y (och U), föreläsning, Kent Palmkvi 7-4- 6 Andra typer av minne På gång? Intel D Xpoint Snabbt, icke-flyktigt, kompakt? Lagring av information som magnetisk egenskap Hårddisk, magnetiska media (dock inte som program och dataminne) Ferromagnetiska minnen (FE-RAM), icke-flyktigt utan behov att raderas Seriella minnen: lång väntan på :a värdet, sedan ganska snabbt näa värde i samma sekvens (gammal teknik) Bubbelminnen (magnetiska öar skiftas runt i en enhet) Kvicksilverminnen (ljudvågor skickas genom kvicksilverränna) Kassettband, tape
TSEA8 Datorteknik Y (och U), föreläsning, Kent Palmkvi 7-4- 7 Sammanfattande minneshierarki (data och programminne) RAM Läs och skrivbara, Flyktiga, snabba, ganska dyra SRAM snabba, dyra DRAM långsammare, mer komplicerad, billigare ROM Enda läsning, icke-flyktiga, snabba, varierande pris FLASH är snabba, ganska billiga, och omprogrammerbara Sekundärminnen Hårddiskar (mekaniska, SSD), flash-minnen Tape, molntjäner TSEA8 Datorteknik Y (och U), föreläsning, Kent Palmkvi 7-4- 8 Snabbare minnesaccess Använd ett litet snabbt minne (cacheminne) Ungefär lika snabbt som reen av processorn Slipper vänta på läsning/skrivning till lilla minnet När cacheminnet fullt/saknar data skickas data till/från långsammare billigare minne (primärminnet). Behöver inte spara mellanvärden Skriver enda slutresultatet till primärminnet Gör inte så mycket om primärminnets latens or Jfr program på en hårddisk Processor Cache- Minne Primär- Minne
TSEA8 Datorteknik Y (och U), föreläsning, Kent Palmkvi 7-4- 9 Uppdatering av cacheminnet Kan hanteras manuellt/programmeringsmässigt Görs mha operativsyem när det gäller hårddisk primärminne primärminnet fungerar som cacheminne för hårddisk Vill automatisera kopiering Processor anger adress att läsa eller skriva (liten snabbt minne) svarar med data om kopia från långsamma minnet finns i cacheminnet Långsamma minnet läses om data inte finns i cacheminnet, kopia sparas i cacheminnet t behöver komma ihåg vilken adress i primärminnet varje minnescell är en kopia av Processor Cache- Minne Primär- Minne TSEA8 Datorteknik Y (och U), föreläsning, Kent Palmkvi 7-4- ts funktion Vanliga program har lokalitet Programmet läser och skriver data i vissa delar av minnet De delar av minnet som inte används behöver inte kopieras till cacheminnet Samma adresser läses ofta flera gånger Dela upp primärminnet i små block (cachelines) Hantera blocket som en enhet Läs alla eller skriv alla värden i ett block Block överlappar aldrig varandra Block artar på adress i primärminnet med alla bytepositionsbitar i adressen = $5 $5 $5 $4 $5678 $abcd $beef $beef $beef $ $ $ Adress från processor 4.. t Byteposition i cacheline
TSEA8 Datorteknik Y (och U), föreläsning, Kent Palmkvi 7-4- ts ruktur Multipla cachelinjer (cachelines) Innehåller kopia av block från primärminnet Varje cachelinje i cacheminnet beår av (kopia av primärminnet) Vanlig orlek 6 eller bytes (8 eller 56 bit per cacheline) Märkarea () anger adressen till kopians orginal i primärminnet Statusbitar (). Giltigt innehåll i, ändrad data etc. $5 $5 $5 $4 $5678 $abcd $beef $beef $beef $ $ $ Adress från processor 4.. t Byteposition i cacheline TSEA8 Datorteknik Y (och U), föreläsning, Kent Palmkvi 7-4- Exempel på fördel med datacache Enkelt exempel med 68 Program: Summera tal #5,d $5,a d d (a)+,d d,d #,d An minnesaccess till primärminne tar 5 klockcykler An t läses på klockcykel Inruktionerna ligger redan i t $5 $5 $5 Hela programmet läses in till cacheminnet när :a inruktionen ska artas $4 $5678 $abcd $beef $beef $beef $ $ $
TSEA8 Datorteknik Y (och U), föreläsning, Kent Palmkvi 7-4- Exempel utan datacache Räkna samman antal klockcykler som krävs för alla inruktioner #5,d $5,a d d (a)+,d d,d #,d #5,d $5,a d d (a)+,d d,d #,d #5,d $5,a d d (a)+,d d,d #,d. Normal inruktion klockcykel Sammanlagt: klockcykel. Normal inruktion klockcykel Sammanlagt: klockcykler. Normal inruktion klockcykel Sammanlagt: klockcykler TSEA8 Datorteknik Y (och U), föreläsning, Kent Palmkvi 7-4- 4 Exempel utan datacache, forts. Räkna samman antal klockcykler som krävs för alla inruktioner (eg 4 till 6) #5,d $5,a d d (a)+,d d,d #,d #5,d $5,a d d (a)+,d d,d #,d #5,d $5,a d d (a)+,d d,d #,d 4. Normal inruktion klockcykel Sammanlagt: 4 klockcykler 5. Läsning i primärminnet Address $5 5 klockcykler Sammanlagt: 54 klockcykler 6. Normal inruktion klockcykel Sammanlagt: 55 klockcykler
TSEA8 Datorteknik Y (och U), föreläsning, Kent Palmkvi 7-4- 5 Exempel utan datacache, forts. Räkna samman antal klockcykler som krävs för alla inruktioner (eg 7 till 9) #5,d $5,a d d (a)+,d d,d #,d #5,d $5,a d d (a)+,d d,d #,d #5,d $5,a d d (a)+,d d,d #,d 7. Normal inruktion klockcykel Sammanlagt: 56 klockcykler 8. Normal inruktion klockcykel Sammanlagt: 57 klockcykler 9. Läsning i primärminnet Address $5 5 klockcykler Sammanlagt: 7 klockcykler TSEA8 Datorteknik Y (och U), föreläsning, Kent Palmkvi 7-4- 6 Exempel utan datacache, totalt Fortsätt med alla 5 additionerna Totalt 4+5*4 inruktioner utförs 4 inruktioner Varje inruktion tar klockcykel att hämta om ingen dataminnesaccess Totalt 5 dataminnesläsningar Dessa inruktioner tar 5 klockcykler var Totalt antal klockcykler (utan cache för data) #5,d $5,a d d (a)+,d d,d #,d 4*+5(*+*5) = 654 klockcykler
TSEA8 Datorteknik Y (och U), föreläsning, Kent Palmkvi 7-4- 7 Exempel med datacache Anande om cacheegenskaper Cacheline 6 bytes lång Cache är 496 bytes or 496/6 = 56 cachelines i cacheminnet Fullt associativt Vilken address som hel kan ligga i varje cacheline Address från processorn bitar lång Tag måe vara -4 = 8 bitar atus Adress från processor 4.. #5,d $5,a d d (a)+,d d,d #,d Byteposition i tom $ $ $ $ tom $ $ $ $ tom $ $ $ $ tom $ $ $ $ TSEA8 Datorteknik Y (och U), föreläsning, Kent Palmkvi 7-4- 8 Exempel med datacache, forts. Räkna samman antal klockcykler som krävs för alla inruktioner (eg - precis som förra gången) #5,d $5,a d d (a)+,d d,d #,d #5,d $5,a d d (a)+,d d,d #,d #5,d $5,a d d (a)+,d d,d #,d. Normal inruktion klockcykel Sammanlagt: klockcykel. Normal inruktion klockcykel Sammanlagt: klockcykler. Normal inruktion klockcykel Sammanlagt: klockcykler
TSEA8 Datorteknik Y (och U), föreläsning, Kent Palmkvi 7-4- 9 Exempel med datacache, forts. Räkna samman antal klockcykler som krävs för alla inruktioner (eg 4-5) #5,d $5,a d d (a)+,d d,d #,d #5,d $5,a d d (a)+,d d,d #,d 4. Normal inruktion klockcykel Sammanlagt: 4 klockcykler 5. Läsning i primärminnet Finns den i cacheminnet? TSEA8 Datorteknik Y (och U), föreläsning, Kent Palmkvi 7-4- Exempel med datacache, forts. Läsning address $5 Finns inte i cacheminnet Kräver läsning av primärminnet, 5 klockcykler Kopia läggs i cache (inklusive efterföljande 5 byte) Tag är address minus bitar som erar i n 4 sia bitarna väljer byte i atus valid $5 $4 $5678 $abcd tom $ $ $ $ tom $ $ $ $ tom $ $ $ $ $5 $5 $5 $4 $5678 $abcd $beef $beef $beef $ $ $ #5,d $5,a d d (a)+,d d,d #,d 5. Cachemiss, 5 klockcykler Sammanlagt: 54 klockcykler
TSEA8 Datorteknik Y (och U), föreläsning, Kent Palmkvi 7-4- Exempel med datacache, forts. #5,d $5,a d d (a)+,d d,d #,d #5,d $5,a d d (a)+,d d,d #,d #5,d $5,a d d (a)+,d d,d #,d 6. Normal inruktion klockcykel Sammanlagt: 55 klockcykler 7. Normal inruktion klockcykel Sammanlagt: 56 klockcykler atus 8. Normal inruktion klockcykel Sammanlagt: 57 klockcykler valid $5 $4 $5678 $abcd tom $ $ $ $ tom $ $ $ $ tom $ $ $ $ TSEA8 Datorteknik Y (och U), föreläsning, Kent Palmkvi 7-4- Exempel med datacache, forts. Läsning address $5 Finns i cacheminnet ( matchar adressens -del) Kräver ingen läsning av primärminnet Konad: klockcykel 4 läga bitarna i adressen väljer byte i cacheline () atus valid $5 $4 $5678 $abcd tom $ $ $ $ tom $ $ $ $ tom $ $ $ $ $5 $5 $5 $4 $5678 $abcd $beef $beef $beef $ $ $ #5,d $5,a d d (a)+,d d,d #,d 9. Cacheträff klockcykel Sammanlagt: 58 klockcykler
TSEA8 Datorteknik Y (och U), föreläsning, Kent Palmkvi 7-4- Exempel med datacache, forts. Cacheträffar fås för addresser $54 - $5E Kräver ingen läsning av primärminnet Sammanlagt 4*+*5+7*+8* = 85 klockcykler Ny cachemiss för läsning av adress $5 Läs 6 bytes med art från adress $5 till rad i cache Uppdatera till address (borträknat 4 LSB-bitar) Tar 5 klockcykler atus valid $5 $4 $5678 $abcd tom $ $ $ $ tom $ $ $ $ tom $ $ $ $ $5 $5 $5 $4 $5678 $abcd $beef $beef $beef $ $ $ #5,d $5,a d d (a)+,d d,d #,d 7. Cachemiss 5 klockcykler Sammanlagt: 5 klockcykler TSEA8 Datorteknik Y (och U), föreläsning, Kent Palmkvi 7-4- 4 Exempel med datacache, totalt Efter 4 inruktioner (samma som tidigare) 7 cachemissar (7*6 = byte = 56 ord) Sammanlagt 4*+5**+(5-7)*+7*5 = 547 klockcykler Jämför utan cache: 654 klockcykler Cache ger 5 gånger snabbare exekvering! #5,d $5,a d d (a)+,d d,d #,d
TSEA8 Datorteknik Y (och U), föreläsning, Kent Palmkvi 7-4- 5 Viktig kommentar ang. ordlängder I exemplet råkar bytepositionen i cacheline vara 4 bitar lång Stämmer bra med antal bitar i en hexadecimal siffra Valt för att lättare se hur och minnesadress hänger ihop Kan vara andra värden! Ex: 5 bitar byteposition ( byte/cacheline) Tänk binär representation! $54 = Adressen $54 delas då upp: Tag: = = $8 Byteposition: = $4 TSEA8 Datorteknik Y (och U), föreläsning, Kent Palmkvi 7-4- 6 Mer komplicerat exempel Summera värden två vektorer placerade på address $5 och $6, placera svar i vektor på address $6 Vektorlängd: 5, elementorlek ord ( byte) Ungefärligt program lea a,$5 lea a,$6 d (a,d.w),d ; erad addr a+d (a,d.w),d ; adress a+d add.w d,d d,(a,d.w) add #,d cmp #5,d atus $5 $5 $5 $6 $6 $6 $4 $5678 $abcd $beef $beef $beef $ $ $ $4 $ $ $ $ $5 $fff $ffff $ffff tom tom tom tom 4 tom
TSEA8 Datorteknik Y (och U), föreläsning, Kent Palmkvi 7-4- 7 Mer komplicerat exempel, forts. Föra minnesåtkom, cachemiss på adress $5 Ladda in adress $5 till föra lediga cacheline ( ) Läs 6 byte till Sätt till adress förutom de sia 4 bitarna (a,d.w),d ; erad address a+d (a,d.w),d ; adress a+d add.w d,d d,(a,d.w) add #,d cmp #5,d atus $5 $5 $5 $6 $6 $6 $4 $5678 $abcd $beef $beef $beef $ $ $ $4 $ $ $ $ $5 $fff $ffff $ffff valid $5 $4 $5678 $abcd tom tom tom 4 tom TSEA8 Datorteknik Y (och U), föreläsning, Kent Palmkvi 7-4- 8 Mer komplicerat exempel, forts. Andra minnesåtkom, cachemiss på adress $6 cachemissar totalt Ladda in adress $6 till föra lediga cacheline ( ) Läs 6 byte till Sätt till adress förutom de sia 4 bitarna (a,d.w),d ; erad address a+d (a,d.w),d ; adress a+d add.w d,d d,(a,d.w) add #,d cmp #5,d atus $5 $5 $5 $6 $6 $6 $4 $5678 $abcd $beef $beef $beef $ $ $ $4 $ $ $ $ $5 $fff $ffff $ffff valid $5 $4 $5678 $abcd valid $6 $4 $ $ tom tom 4 tom
TSEA8 Datorteknik Y (och U), föreläsning, Kent Palmkvi 7-4- 9 Mer komplicerat exempel, forts. Tredje minnesåtkom, skrivning på adress $6 Ingen cachemiss (uppdatera inte primärminnet) cachemissar totalt Spara nya datat till motsvarande plats i cacheminnet Värdet i d = 4+4=5555, indikera ändrat värde i cacheline (dirty) Index, :a ordet i n (byte och ) (a,d.w),d ; erad address a+d (a,d.w),d ; adress a+d add.w d,d d,(a,d.w) add #,d cmp #5,d atus $5 $5 $5 $6 $6 $6 $4 $5678 $abcd $beef $beef $beef $ $ $ $4 $ $ $ $ $5 $fff $ffff $ffff valid $5 $4 $5678 $abcd dirty $6 $5555 $ $ tom tom 4 tom TSEA8 Datorteknik Y (och U), föreläsning, Kent Palmkvi 7-4- 4 Mer komplicerat exempel, forts. Fjärde minnesåtkom, läsning på adress $5 Cacheträff, data finns i cache, :a ordet cachemissar totalt Femte minnesåtkom, läsning på adress $6 Cacheträff, data finns i cache, :a ordet cachemissar totalt (a,d.w),d ; erad address a+d (a,d.w),d ; adress a+d add.w d,d d,(a,d.w) add #,d cmp #5,d atus $5 $5 $5 $6 $6 $6 $4 $5678 $abcd $beef $beef $beef $ $ $ $4 $ $ $ $ $5 $fff $ffff $ffff valid $5 $4 $5678 $abcd dirty $6 $5555 $ $ tom tom 4 tom
TSEA8 Datorteknik Y (och U), föreläsning, Kent Palmkvi 7-4- 4 Mer komplicerat exempel, forts. Sjätte minnesåtkom, skrivning på adress $6 Cacheträff, data skrivs till, :e ordet cachemissar totalt Inga cachemissar för adresser till och med $5e respektive $6e cachemissar totalt (a,d.w),d ; erad address a+d (a,d.w),d ; adress a+d add.w d,d d,(a,d.w) add #,d cmp #5,d atus $5 $5 $5 $6 $6 $6 $4 $5678 $abcd $beef $beef $beef $ $ $ $4 $ $ $ $ $5 $fff $ffff $ffff valid $5 $4 $5678 $abcd dirty $6 $5555 $6789 $abce tom tom 4 tom TSEA8 Datorteknik Y (och U), föreläsning, Kent Palmkvi 7-4- 4 Mer komplicerat exempel, forts. 4:e minnesåtkomen, Cachemiss på adress $5 cachemissar totalt Ladda in adress $5 till föra lediga cacheline ( ) Läs 6 byte till Sätt till adress förutom de sia 4 bitarna (a,d.w),d ; erad address a+d (a,d.w),d ; adress a+d add.w d,d d,(a,d.w) add #,d cmp #5,d atus $5 $5 $5 $6 $6 $6 $4 $5678 $abcd $beef $beef $beef $ $ $ $4 $ $ $ $ $5 $fff $ffff $ffff valid $5 $4 $5678 $abcd dirty $6 $5555 $6789 $abce valid $5 $beef $beef $beef tom 4 tom
TSEA8 Datorteknik Y (och U), föreläsning, Kent Palmkvi 7-4- 4 Mer komplicerat exempel, forts. Fortsätter tills alla 5 ord läs från adress $5-$564 respektive $6-$664 Totalt 4 cachemissar Alla skrivningar hamnar i cache Vid någon senare tidpunkt töms cacheline och skrivs till primärminnet T ex pga full cache eller speciell signal från processorn (a,d.w),d ; erad address a+d (a,d.w),d ; adress a+d add.w d,d d,(a,d.w) add #,d cmp #5,d atus $5 $5 $5 $6 $6 $6 $4 $5678 $abcd $beef $beef $beef $ $ $ $4 $ $ $ $ $5 $fff $ffff $ffff valid $5 $4 $5678 $abcd dirty $6 $5555 $6789 $abce valid $5 $beef $beef $beef dirty $6 $cfef $beef $bef 4 valid $5 $ $ $ TSEA8 Datorteknik Y (och U), föreläsning, Kent Palmkvi 7-4- 44 Fullt associativ cacheruktur Fördel Enkel att använda (och förå?) Alla cachelines kan placeras var som hel i cacheminnet Nackdel Dyr Använder hela cacheminnet Varje cacheline innehåller jämförelsehårdvara för att jämföra och adressens -del Tag är lång (antal bitar i adress 4 i exemplet ovan) Långsam Resultat från alla jämförelser ska samlas ihop innan beslut om cache-hit eller cachemiss Adress från processor 4.. Byteposition i cacheline
TSEA8 Datorteknik Y (och U), föreläsning, Kent Palmkvi 7-4- 45 Direktaddresserad cache Varje cacheline från minnet kan bara placeras på en plats i cache Cache < Minne => flera olika minnesadresser placeras på samma plats i cache Del av adressen används för att beämma till cache Reen adressen sparas i för att ange vilken minnesline som finns i cache Enda en jämförelse per minnesaccess: Addressens höga bitar jämfört med lagrad Enklare implementera, kan använda vanliga minnen Adress från processor.. 4.. Byteposition i cacheline jämförare för hela cache iället för jämförare för varje cacheline TSEA8 Datorteknik Y (och U), föreläsning, Kent Palmkvi 7-4- 46 Direktaddresserad cache, exempel Samma uppgift som tidigare bitar adress bitar indikerar vilket minnesblock data kommer ifrån 8 bitar för att välja cacheline i cacheminnet 4 MB minne, 6 byte/cacheline => 56 cacheline 4 bitar ering inom n i varje cacheline 6 byte per cacheline () (a,d.w),d (a,d.w),d add.w d,d d,(a,d.w) add #,d cmp #5,d atus $5 $5 $5 $6 $6 $6 $4 $5678 $abcd $beef $beef $beef $ $ $ $4 $ $ $ $ $5 $fff $ffff $ffff tom tom tom tom 4 tom
TSEA8 Datorteknik Y (och U), föreläsning, Kent Palmkvi 7-4- 47 Direktaddresserad cache, exempel Minnesåtkom, cachemiss på adress $5. Enda får lagra data från adress $5 (bitar i adress = ) Läs 6 byte från adress $5, sätt till reen av bitarna i adress (bit till ) (a,d.w),d (a,d.w),d add.w d,d d,(a,d.w) add #,d cmp #5,d atus $5 $5 $5 $6 $6 $6 $4 $5678 $abcd $beef $beef $beef $ $ $ $4 $ $ $ $ $5 $fff $ffff $ffff valid $5 $4 $5678 $abcd tom tom tom 4 tom TSEA8 Datorteknik Y (och U), föreläsning, Kent Palmkvi 7-4- 48 Direktaddresserad cache, exempel Minnesåtkom, läsning på adress $6. Enda får lagra data från adress $6 (bitar i adress = ) Adress har = $6, cacheminne har = $5 => cachemiss! Måe ersätta innehåll i cacheline Läs 6 byte från adress $5, sätt till reen av bitarna i adress (bit till ) Totalt cachemissar (a,d.w),d (a,d.w),d add.w d,d d,(a,d.w) add #,d cmp #5,d atus $5 $5 $5 $6 $6 $6 $4 $5678 $abcd $beef $beef $beef $ $ $ $4 $ $ $ $ $5 $fff $ffff $ffff valid $6 $4 $ $ tom tom tom 4 tom
TSEA8 Datorteknik Y (och U), föreläsning, Kent Palmkvi 7-4- 49 Direktaddresserad cache, exempel Minnesåtkom, skrivning på adress $6. Adress har = $6, cacheminne har = $6 => cacheträff Markera data ändrat (dirty) Totalt cachemissar (a,d.w),d (a,d.w),d add.w d,d d,(a,d.w) add #,d cmp #5,d atus $5 $5 $5 $6 $6 $6 $4 $5678 $abcd $beef $beef $beef $ $ $ $4 $ $ $ $ $5 $fff $ffff $ffff dirty $6 $5555 $ $ tom tom tom 4 tom TSEA8 Datorteknik Y (och U), föreläsning, Kent Palmkvi 7-4- 5 Direktaddresserad cache, exempel Minnesåtkom 4, läsning på adress $5. Adress har = $5, cacheminne har = $6 => cachemiss! Behöver ersätta innehåll på i cache Dirty flaggan satt, skriv för data till primärminne (alla 6 byte) Totalt cachemissar (a,d.w),d (a,d.w),d add.w d,d d,(a,d.w) add #,d cmp #5,d atus $5 $5 $5 $6 $6 $6 $4 $5678 $abcd $beef $beef $beef $ $ $ $4 $ $ $ $ $5 $fff $ffff $ffff valid $5 $4 $5678 $abcd tom tom tom 4 tom
TSEA8 Datorteknik Y (och U), föreläsning, Kent Palmkvi 7-4- 5 Direktaddresserad cache, exempel Minnesåtkom 5, läsning på adress $6. Adress har = $6, cacheminne har = $5 => cachemiss! Totalt 4 cachemissar Varje läsning ger cachemiss i detta exempel Totalt cachemissar kommer ske Kunde lös om annan adress använts för en av vektorerna T ex $54 inället för $5 (a,d.w),d (a,d.w),d add.w d,d d,(a,d.w) add #,d cmp #5,d atus $5 $5 $5 $6 $6 $6 $4 $5678 $abcd $beef $beef $beef $ $ $ $4 $ $ $ $ $5 $fff $ffff $ffff valid $6 $5555 $ $ tom tom tom 4 tom TSEA8 Datorteknik Y (och U), föreläsning, Kent Palmkvi 7-4- 5 Gruppassociativ cache en kompromiss Låt varje adress i primärminnet kunna placeras på flera ällen i cache Exempel I en fyrvägsassociativ cache kan en viss adress i primärminnet placeras i en av fyra cachelines I princip 4 direktadresserade cache placerade bredvid varandra, kräver 4 jämförelser per åtkom i cache I exemplet ovan skulle öka i längd Adress från processor 9.. 4.. bitar till, 6 bitar för till cacheline, 4 bitar för byteposition i cacheline Byteposition i cacheline
TSEA8 Datorteknik Y (och U), föreläsning, Kent Palmkvi 7-4- 5 Skrivning till cache, alternativ Writeback Skrivningar sker bara till cache Flagga indikerar om data måe skrivas till primärminne när cacheline töms Writethrough Skrivningar går alltid till primärminnet Kopia av värdet lagras också i cache Enklare att implementera, mindre effektivt TSEA8 Datorteknik Y (och U), föreläsning, Kent Palmkvi 7-4- 54 Val av cacheline att ersätta, alternativ LRU Lea recently used Håll reda på vilken cacheline som inte använts på länge Dyrt att hålla reda på vilken som sena använts Random Slumpmässigt val. Billigare, dock örre risk ta fel Round-Robin/FIFO etc. Kaa ut den cacheline som varit i cachen läng, oberoende om den använts nyligen
TSEA8 Datorteknik Y (och U), föreläsning, Kent Palmkvi 7-4- 55 Val av cache parametrar Associativitet Vanligen till 8 idag Stör vin när man går från direktmappad till -vägs associativ cache Högre associativitet betalar sig dåligt Vanligt ha separat data och inruktionscache Kallad nivå cache Multipla nivåer av cache möjliga T ex AMD multiprocessorer: Nivå, nivå, nivå cache innan primärminnet nås TSEA8 Datorteknik Y (och U), föreläsning, Kent Palmkvi 7-4- 56 Problem orsakade av cache Data från I/O Läsning av t ex atussignaler får inte lagras i cache (missar ändringar från externa signaler) Cache-koherens Om primärminnet kan skrivas från flera enheter (Multiprocessor) måe allas cache få reda på ändringen Notering: variabler i C gande med volatile kommer inte undan problemet med cache-koherens Behöver få hårdvara och/eller mjukvara hantera tömning av cache i vissa fall
www.liu.se