Nuvarande rigg: CPU: AMD R7 3700X, RAM: G.Skill Flare X, GPU: EVGA 1080Ti FTW3, Moderkort: Gigabyte GA-AX370-Gaming K7 (F51g), HDD: Samsung 840 SSD Pro Basic, WD Black Caviar 1TB SATA II, CPU-kylare: Corsair H115i (Noctua NF-A14), Chassi: Fractal Design R5, PSU: Seasonic Prime GX 1000
Lite hjälp med datorarkitektur
Visa signatur
Ett litet exempel kan nog belysa saker
Antag till att börja med att ingen MMU är inblandad, utan virtuella addresser är identiska med fysiska addresser. Detta bara för att inte krångla till saker i onödan.
Antag att vi har 128kB cache, och varje cache-linje innehåller 64 byte data. Då har vi 128k/64 = 2048 cache-linjer (eller cache-block).
Antag även att det är en direkt-mappad cache, vilket innebär att en given minnesaddress mappas mot exakt en cache-linje.
Eftersom addressrymden är mycket större än cachen så kommer ju många olika minnesaddresser att mappas till samma cache-linje.
64-bytes cache-linje betyder att vi behöver 6 bitar för att välja byte inom blocket. De 6 bitarna motsvarar "Offset" i din modell, och är de 6 minst signifikanta bitarna i addressen.
2048 olika cache-linjer innebär 11 bitar för att ange vilken cache-linje som används. Dessa motsvarar "Index" i din modell.
Återstående 32-(11+6) = 15 bitar blir Tag.
En given cache-linje innehåller förutom de 64 bytes data, även 15 (i det här fallet) bitar Tag, och en Valid bit.
Vid en läsning så används Index för att välja rätt cache-linje. Cachens Valid bit kollas för att se om det överhuvudtaget finns riktig data i cache-blocket.
Sedan jämförs minnesaddressens Tag fält med Tag fältet i cachen. Är de lika så är det rätt minnesblock som ligger lagrat i cachen, och det blir en cache-träff. Om Tag fälten inte matchar så var det något annat minnesblock som låg i cachen, och det blir en cache-miss.
Vid en skrivning så slår man upp rätt cache-block via Index, skriver datat till cachen och det riktiga minnet, sätter cachens Valid bit, och sätter cache-blockets Tag fält till samma som minnesaddressen.
Ovanstående är nästintill enklast möjliga cache-implementation, och sådana används i verkligheten.
Det finns dock en hel del extra finesser som ofta används och krånglar till det och gör att det krävs extra bitar i cachen:
Write-back cache kontra write-through (ovanstående är write-through)
Associativ cache (där en minnesaddress kan mappas mot flera cache-linjer
Virtually indexed/Physically tagged kontra Virtually Indexed/Virtually tagged cache (när man har virtuella minnesaddresser som översätts till fysiska)
Flera nivåer av cachear med olika egenskaper
Multi-CPU system som delar på en eller flera cache-nivåer och där koherens mellan CPUerna behöver upprätthållas
Och så vidare....
Citera flera
Citera
(4)
Tackar så mycket för hjälpen Erik!
Du gjorde det betydligt mer klarare, men nu kommer följdfrågorna haha.
För att sammanfatta i koppling till ditt exempel: Offset anger vilken byte i linjen som ska användas, Index anger vilken linje ska användas och tagen som bekräftar att detta är den datan från minnet som just ligger i cachen. Tagen är alltså mer eller mindre en identifierare för datat i cachen och minnet om jag förstår rätt? Valid-biten ringer en klocka i bakhuvudet men ska kika lite mer på det, även skriv-strategier som write-back och write-through.
Har även en del om set-associativa cacher. Om jag inte minns fel så gör detta att du kan ha ett block/linje som är mappad mot samma tag, men du särskiljer de olika blocken från varandra genom set-bitarna? Eller är det tvärt om?
"En given cache-linje innehåller förutom de 64 bytes data, även 15 (i det här fallet) bitar Tag, och en Valid bit."
Här blev jag lite osäker på vad du menar. Jag har en linje som har plats för 64 bytes data, men också 15 bitar tag säger du. Är detta inne i blocket där datat faktiskt ligger eller är det utanför i adressfältet? Alltså har jag i verkligheten 64*8-(15+1) bitar för faktisk data?
Återkommer om write-back och write-through vid ett senare tillfälle då läraren förklarade det lite knepigt.
Visa signatur
Nuvarande rigg: CPU: AMD R7 3700X, RAM: G.Skill Flare X, GPU: EVGA 1080Ti FTW3, Moderkort: Gigabyte GA-AX370-Gaming K7 (F51g), HDD: Samsung 840 SSD Pro Basic, WD Black Caviar 1TB SATA II, CPU-kylare: Corsair H115i (Noctua NF-A14), Chassi: Fractal Design R5, PSU: Seasonic Prime GX 1000
Citera flera
Citera
Hårdvara
Mjukvara
Övrigt
Datorkomponenter
Ljud, bild och kommunikation
- Vilken begagnad eller ny kamera ska man köpa för foto, stop-motion och kortfilm? Budget 5000 kr
- Jag har fått fler hastighetsalternativ med Zitius som kommunikationsoperatör
- D-link G16 - dålig prestanda med mobilt bredband
- Samlingstråd LG OLED 2023 (A3/B3/C3/G3/Z3)
- Starlink billigare, permanent prissänkning?
- Krönika: När datorn endast blivit ett jobbverktyg28
- Undersökning: Stabilt internet viktigare än barnomsorg2
- Piratkopieringar ökar i Norden – var fjärde person är pirat281
- Vilken begagnad eller ny kamera ska man köpa för foto, stop-motion och kortfilm? Budget 5000 kr12
- Jag har fått fler hastighetsalternativ med Zitius som kommunikationsoperatör16
- Installera OS utan internet14
- Dagens fynd — Diskussionstråden49821
- Tråden om PlayStation 514750
- D-link G16 - dålig prestanda med mobilt bredband6
- Eluttag25
- Säljes Defekt Meta Quest Pro 256gb
- Säljes Oöppnad 4TB M.2 NVME Crucial P3 3D NAND
- Säljes 3070 TUF GAMING OC och 2060 Super
- Säljes Ryzen 7 5800x & Skärm 27" 165hz 1440p
- Säljes Vårstädning
- Säljes Diverse nintendo switch spel
- Säljes Helt Ny-PSUar-Corsair RM850X 2021 + Seasonic Focus GX 850W
- Säljes Lenovo P340 Workstation
- Säljes Laptop T14 Gen 3 - Auktion
- Säljes MSI RTX 4070 Ti Gaming X Trio
- Undersökning: Stabilt internet viktigare än barnomsorg2
- Microsoft överraskar med ny Windows 11-uppdatering13
- Krönika: När datorn endast blivit ett jobbverktyg28
- Google inleder utfasningen av Manifest V2 i Chrome29
- Helgsnack: Tycker du bredband kostar för mycket?192
- Läcka avslöjar nya detaljer om Ryzen 9000-serien26
- Laptop med AR-glasögon i stället för skärm kan nu förbeställas32
- AI-generera dina egna serier med Showrunner31
- SweClockers Noobbyggarguide - Del 4: Aggressivt aggregat5
- Google erkänner brister i AI Overview11