Handledare: Erik Larsson Lunds Tekniska Högskola HT15 Cacheminne i en AMD Opteron Processor En rapport om cacheminne och dess struktur, i en 12 kärnig AMD Opteron Magny-Cours processor. Författare: Hamza Abdulilah
Abstrakt I dagsläget har vi många olika minnestyper och ett av dem är Static Random Acess Memory, SRAM vilket används i cacheminnen för processorer. Metoderna som använts är undersökning av tidigare högkvalitativa arbeten som rör området. Detta arbete visar på hur strukturen för cacheminnet i AMD Magny-Cours ser ut, och hur de olika delarna fungerar ihop med varandra. Det diskuteras och jämförs kort med en annan, nyare processors cacheminne. Nyckelord: Cacheminne Victim Cache AMD Opteron Magny-Cours 1
Inledning Bakgrund Dagens teknik har vi många olika minnestyper för våra vardagliga prylar. Flyktiga minnen (volatile) som exempelvis minneskort eller icke-flyktiga (Non-volatile) som flashminnen, optiska diskar och hårddiskar. Det finns även en andra typer av minnen som kan hittas inuti en dator. En av dessa är DRAM. Det är en förkortning för Dynamic random access memory, är det som används för data och programkod som processorer behöver för att fungera. Den andra minnestypen är SRAM (Static random acess memory), som finns i cacheminnen vilket detta arbete handlar om. Syfte Syftet med detta arbete är att undersöka hur cache fungerar i allmänhet, men speciellt funktion och strukturen av cache i en AMD Opteron processor. Anledningen till varför det just var AMD Opteron för att det är en intressant processor som var en av de första med AMD64 instruktion set arkitekturen. Samt fördjupa mig inom cachestrukturen inom en processor och AMD Opteron processorn kändes som ett bra val för detta. Frågeställningar & Problemformulering Vad är cache? Hur fungerar cache i allmänhet? Hur ser strukturen för cache i en AMD Opteron processor? Hur fungerar de olika nivåerna av cache i denna processor? Metod För att kunna svara på frågeställningarna ovan så har det använts kurslitteratur inom datorarkitektur, studerandet av olika arbeten som rör detta område samt examensarbeten genom Lunds internetbibliotek (LUBsearch) för vetenskapliga artiklar, rapporter eller examensarbete. Så materialet och källorna som valt är ur väldigt god vetenskaplig kaliber. Cache i allmänhet Innan vi diskuterar cacheminnet i en speciell processor kan det vara fördelaktigt att förfriska det vi redan kan om cacheminnen. Det är ett litet men väldigt snabbt minne som oftast är av typen Statisk minne eller Statiskt RAM (SRAM), som innehåller det senaste data som kommits åt av primärminnet. Tiden det tar för dagens system för att hämta instruktioner eller data är väldigt lång jämfört med hur lång tid det tar ett exekvera en instruktion. Cache minnet hjälper genom att minska tiden det tar att flytta information från och till processorn. Det finns även en mellanhand till cache Inledning 2
och primärminnet i en processor. En minneskontroll (memory controller) som är en digital krets, dess uppgift är att hantera dataflödet från och till primärminnet. Att komma åt information i cacheminnet kan vara upp till 4 gånger snabbare än att komma åt informationen på primärminnet (DRAM). Anledning till att cache minne utgör en förbättring för systemet är på grund av fenomenet locality of reference. Det finns olika typer av detta fenomen och två av dem har vi studerat i kursen datorarkitektur redan. Spatial och temporal locality. Själva idén med detta är att vid en viss tidpunkt kommer processorn att vilja komma åt minnet i ett visst område eller en liten region av minnet. Cacheminnet laddar in denna del av minnet för att låta processorn komma åt det snabbare. Hur bra detta fungerar skiljer sig ifrån processor till processor. I detta fall studeras det cache i en AMD processor. (Intel Corporation) Cacheminne i AMD Opteron Cacheminnet i AMD Opteron processor har tre olika nivåer av cache vilket är L3, L2 och L1. Ett block i processorn integrerar sex stycken kärnor med L3 cacheminnet som har en total storlek på 6 MB, men är uppbyggt av flera subcache. L3 cache har även två andra uppgifter. Det är att vara ett vanligt cacheminne för processorn men även ha utrymme för ett undersöknings filter, ett cache directory som är implementerat i SRAM. Minneskontrollern är ansluten till detta directory. L3 cacheminnet är även det som fungerar som victim cache för utkastad data från L2 cache. Syftet med detta cache är att det ska hålla i block som kastats ur L2 cache vid ersättning. Detta är då ofta fullt associativt och ska då minimera antalet konflikter. (Ros et al. 2012) L3 cache allokerar cache lines till ett ledigt subcache och tar hänsyn till adressbaserade regler eller restriktioner och ger företräde till det subcache som innehåller felaktiga poster. Finns det överhuvudtaget inga felaktiga poster så distribuerar en round-robin algoritm allokeringar till subcache med hänsyn till deras storlek. L3 cache stödjer direct adressing (direct mapping) så L3 Inledning 3
delas upp baserat på adresser. Vid användning av direct adressing så är allokeringarna hänvisade till endast halva cacheminnet. Detta baserat på en hash av adressbitarna. Att ha L3 som victim cache reducerar överlappning av data mellan L3 och L2, vilket ger mer plats för cachad minne/data. Kärnorna har separata data och instruktions cache med en storlek på 64 KB, dessa är uppbackade av ett större L2 cache med en storlek på 512 KB för varje kärna. Alla cache minnen i hierarkin har 64 byte rader och detta innefattar även L3. L2 är ett 16-vägs associative cache och som tidigare versioner innan AMD Opteron, så är L2 victim cache av L1 instruktion och data cache. L1 cache är 2-vägs associativa. Hela cache strukturen har även ett smart sätt att minimera latens. Är cacheminnet laddad med endast lite minne så går systemet in i ett latens reducering läge, då det inte behövs att köra på full kraft. Men om requests är höga för innehållet i cacheminnet och L3 inte har resurser nog, så skickar minneskontrollen request till tags. Vilket visar cache status utan datatransfer, sedan om innehållet fortfarande inte finns skickas request vidare till DRAM med kort latens. (Conway et al. 2010) Diskussion I dagsläget så har det kommit ut nyare processorer inom AMD Opteron linjen, då Opteron Magny- Cours släpptes år 2010. Den senaste som släppts inom Opteron linjen är Abu Dhabi. Magny-Cours utrymme i cache L2 och L3 var 12x512KB (totalt 6MB) respektive 2x6MB. I jämförelse med L2 och L3 i Abu Dhabi som har 3x2MB per block (totalt 12MB) respektive 16MB som är delat med båda blocken Slutsatsen av att Abu Dhabi har mer lagring i cache-nivåerna är att ju mer cachad data ju snabbare åtkomst till data i primärminnet. Det är dock inte en helt rättvis jämförelse då Abu Dhabi släpptes lite mer än två år, det är meningen att det ska vara en förbättring. Angående AMD Opteron Magny-Cours cache-strukturen är svårt att hitta några speciella nackdelar eller ens diskutera fördelar, speciellt sett till kunskapsnivån jag befinner mig på som författare är inte hög i jämförelse med de arbeten och källor jag använt för denna rapport. Vid ett eventuellt större arbete hade jag även inkluderat cache-coherence och hur man har försökt lösa detta problem i denna processor som detta arbete är fokuserat kring. Inledning 4
Referenser 1. Ros,A., Cuesta, B., Fernandez-Pascual,R., Gomez, M., Acacio, M., Robles, A., Garcia, J. & Duato, J. (2012). IEEE TRANSACTIONS ON COMPUTERS, vol 61 No. 5: Extending Magny- Cours Cache Coherence. ss. 3-5. 2. Conway, P.,Kalyanasundharam,N., Donley,G., Lepak, K. & Hughes, B. (2010). IEEE Computer Society: Cache Hierarchy and Memory Subsystem of the AMD Opterton Processor. ss.17-25 3. Intel Coporation (2012). An Overview of Cache ss. 1-3. DOI: http://download.intel.com/design/intarch/papers/cache6.pdf Inledning 5
6