Komma över Memory wall med 3D stacked minne LTH Ingenjörshögskolan vid Campus Helsingborg Institutionen för datavetenskap Christofer Huynh IDA14 EDT621 Lärare: Erik Larsson
Abstrakt Memory wall, något som har varit problem inom dator arkitekturen då prestandan av processorer ökar mycket mer gentemot prestandan av minnet, vilket lämnar ett stort hål mellan dessa. Man strävar efter ett minne som man kan tillverka för ett låg pris, är kompakt, snabb och har bra skalbarhet. Det har varit många forskningar inom 3D stacked minne, då man tror att den vanliga DRAM inte kommer att räcka till, och att man behöver en ny teknik. 3D systemet kan vara tekniken som hjälper oss att minska på hålet mellan processorer och minnen. 3D minnen har mindre begränsningar än de 2D minnen, vilket leder till nya arkitekturer som till exempel en Footprint cache som försöker förutse Footprinten (storleken) av varje sida och hämta bara de block som tros behövas.
Introduktion Den senaste tiden har studier visat att processernas prestanda ökar med 50 % varje år medan prestandan på DRAM (minnet) bara ökar med 10 % varje år vilket lämnar ett stort hål mellan dessa processorer och DRAM, detta kallas även för Memory wall. I rapporten Overcoming the memory wall (Inouye et al 2012:3) nämns detta som ett problem då hålet blir större och större vilket gör att man inte längre kan öka prestandan genom att lägga till mer processorer. Den mest minneskrävande applikation just nu är video encoding, bara behandlingen och segmenteringen av 30 frames tar 15 minuter på en fyra-kärnig processor med 24GB RAM. Författarna menar att problemet inte var antal processor eftersom varje processor kördes bara runt 50-60%. Det man hade problem med var minnesåtkomsten av minnet och som framerate ökar med upplösningen, kan detta tiden förlänga med timmar eller även månader bara för att behandla en enda sekund av videon. En av den mest använda lösningen till Memory wall är användningen av cacheminnen. Man har försökt att hitta andra lösningar eller förbättra cacheminnen, som till exempel out of order execution som låter instruktioner att exekveras även om instruktionen före den har blivit blockerad eller innan den är färdig. Tyvärr så behöver dessa tekniker komplexa kretsar vilket betyder mer el konsumtion, som leder till reducering av investeringar av dessa komplexa tekniker. Shih-Lien Lu et al nämner i deras artikel Scaling the Memory Wall (2012:271) att en ideal minne måste ha ett låg pris, kompakt och ha en bra skalbarhet. Den ska även ha en snabb minnesåtkomst som matcha CPU frekvensen. Det viktigaste är att den ska vara energi-snål. Hög el konsumtion leder till komplicerade termiska lösningar vilket ökar omkostnaden för ett datorsystem. Författarna menar att teknologer har i många år försökt att hitta en ersättare till DRAM. Tyvärr finns det ingen klar ersättare för tillfället vilket betyder att vi måste kunna arbeta runt de begräsningar DRAM har och försöka få ut det bästa av vad DRAM har att ge i åtminstone 5 till 7 år till. Författarna föreslog också om att 3D stacking kan vara en möjlig lösning till att förlänga livs-längden av DRAM. Problemet med DRAM Två av de största problemen som man har med DRAM är skalbarhet och el konsumtionen (Shih-Lien Lu et al 2012:272). Författarna menar att DRAM fortsätter att krympa i fysiskt storlek, vilket gör det svårt att behålla kapaciteten på storleken samtidigt som man gör minnescellerna mindre. El konsumtionen har nyligen blivit ett stort problem för DRAM. Shih-Lien Lu et al referera till en publikation från 2009 Future Scaling of Processor-Memory Interfaces in the Proceedings of Super Computing, 2009 av J.Ahn, et al. Där visa författarna att DRAM chipen konsumera lika mycket eller mycket mer el än CPU:n när systemet kör ett krävande applikation. Anledningen till att el konsumtionen är så hög för DRAM är att man har fokuserat på att maximera effektiviteten på ytan för att minska på kostnaderna. Den nuvarande organiseringen av DRAM array (block) aktiverar tusentals bitar med varje begäran, returnera bara ett låg antal bitar till processorn, vilket gör detta väldigt ineffektivt. Ett annat exempel på el ineffektiviteten är på grund av att IC-kretsen är ihopsatt i något som kallas för DIMM (Dual-in-line Memory Module) som är en typ av minnesmodul med en datakanal som är 64 bitar bred. Det finns en chans att flera DIMM delar samma kanal som kommunicera med processorn, vilket leder till att en enda begäran måste aktivera flera IC kretsar som leder till att det körs mer än laddning.
En av anledningar till avtagningen av prestandan är att processorkärnan måste vänta på fördröjningen i DRAM när den ska hämta den data processorn behöver för att kunna exekveras (Inouye et al 2012:8). Här menar författarna att man skulle kunna öka bandbredden genom att öka bredden på data-bussen, men detta betyder en ökning av kostnaden. Ett annat förslag är att man öka på buss hastigheten istället, dock skulle detta leda till en högre el konsumtion. Det finns många olika förslag på att modifiera DRAM för att bli av med dessa problem, men det finns självklart nackdelar med modifiering vilket leder till forskningar inom 3DRAM för att lösa dessa problem. 3D stacked minne (3DRAM) Upplägget i ett 3DRAM är DRAM mikrochips som är staplad på varandra och är sammankopplade via vertikalt separationer. Genom att stapla minnet vertikalt på varandra skapas ett 3D IC-krets. Det finns olika design till detta som har sina för- och nackdelar. Ett exempel på detta är Intels Hybric Memory Cube (HMC), vilket sägs vara upp till 7 gånger mer energi effektiv än DDR3 (Inouye et al 2012:8). HMC är ett RAM inferface för TSV (through-silicon vias). Teknologin skapar mikrometer stora hål genom en vertikal kisel chip vilket skapar en mycket kompakt arkitektur. Bild 1 TSV, tagen från (Inouye et al 2012:4) Bild 2 visar en exempel på ett grundläggande struktur i ett 3D CPU-minne. CPU:n och L1 cache ligger på samma lager, L2 cache är staplad ovanför och primärminnet finns på de lager som är staplade ovanpå L2 cache lagret. Författarna menar att med ett 3D minne kan man dela upp stora chips till mindre IC-kretsar vilket leder till mindre kostnader då den minskar på tillverkningskostnaderna. Krets lagret kan byggas på olika processorer eller kiselskivor istället för att bli begränsad av en enda kiselskiva. Kablarna kan gå igenom mikrochipen istället för att lindra allting horisontellt som betyder att man få kortare kabel, vilket leder till en förminskning av fördröjningen i kretsen. Dessutom reducera detta även el konsumtionen, därmed minskas även värmebildningen och batterilivet förlängs vilket leder till att procedur kostnaden sjunker. Bild 2 Ett grundläggande 3D CPU-minne struktur (Inouye et al 2012:11) Nackdelarna med 3D minne är att det finns risk för att de blir defekta under tillverkningen, som till exempel hur värmet fördelas inom de staplade minnena.
Ändringar i arkitekturen i ett 3D minne Det enklaste ändringen man kan göra är att öka bredden på minnes-bussen. I ett 2D system är det mycket begränsat av antalet stift. Däremot i ett 3D system som använder TSV (through-silicon-vias) gör detta möjlig att ha tusen, om inte miljontals av anslutningar mellan processorn och primärminnet. Inouye et al (2012:15) nämner att det första logiska steget man tar är att öka minnesbussen till storleken av cache linjen för att utnyttja L2 cache maximalt. Man kan också öka storleken på en cache linje, men eftersom minnesåtkomsten för L2 cache ökas linjärt med cache linjens storlek så blir det inte så optimalt att göra det. En viktig optimering för ett 3D system är att öka klockfrekvensen för minnes-bussen och minnesstyrningen. I ett 2D system behöver inte minnesstyrningen att schemalägga någon begäran som är snabbare än vad DRAM:en kan respondera. Däremot när man växlar till ett 3D system där fördröjningstiden i primärminnet är drastiskt reducerad behöver man öka klockfrekvensen för att kompensera för ändringen. Inouye et al (2012:16) poängterar att denna ändring inte gör mycket ändring i prestandan, men det krävs för att kunna ta fördel av låg fördröjningstid av minnesåtkomsten. Dessa två ändringar som nämndes ovan är betraktas som ett grundläggande del av ett 3D system. Däremot är det möjligt att dela funktionella block över flera lager i ett 3D system. Till exempel, en minnesbank som innehåller rader av cell bitar och de separata peripheral logic (rad de-kodare, sense amp, rad buffert, kolumnväljare) kan delas upp mellan två lager som separera minnet från logiska enheten (Inouye et al 2012:15). Författarna nämner om en 3D minnes arkitektur som har fyra lager av DRAM minne och ett lager av DRAM:ens peripheral logic på toppen av processorn. Varje rank är splittrade över kisel lagren för att reducera längden på kabeln och kapacitansen (Figur b i bild 4). Figur a i bild 4 visar ett vanlig 2D DRAM som är staplade ovanför en processor. Fördelen med strukturen i figur b, genom att separera minnet från logiska enheten så kan man optimera varje lager och ge dem olika uppgifter genom olika process teknologi. Bild 3 Tagen från (Inouye et al 2012:16)
Ideala Cache för 3D stacked minne I artikeln Die-Stacked DRAM Caches for Servers: Hit Ratio, Latency, or Bandwidth? Have It All with Footprint Cache (Jevdjic et al 2013:406) ställer författarna upp några villkor för att ett 3D stacked cacheminne ska vara ideal. Ett cache minne ska bland annat vara snabb på att hitta tags, lagringen av tags och andra metadata ska vara minimalt. Off-chip trafiken ska också vara minimal. Den ska ha hög hit ratio och fördröjningstiden för hit och miss ska vara så låg så möjligt. Den lokala minnesåtkomsten måste vara snabb, och sist måste den ha en effektiv kapacitet hantering. Författarna jämför 2 cache design, Block-based cache och Page-based cache. De båda strukturen har sina för- och nackdelar, men varför inte låta dessa två tekniker komplimera varandra? Följande diagram visar en jämförelse mellan block- och page-based designen. Tabell 1 Jämförelse, tagen från (Jevdjic et al 2013:407) Författarna menar att page-based strukturen är generellt den bättre av de två designen. En ideal cache för 3D stacked minne är om man kan få de egenskaper i page-based struktur fast utan onödig trafik och med en bättre kapacitet hantering. Författarna föreslår något som heter Footprint cache en blandning mellan dessa två designen. För att uppnå dessa egenskaper i Footprint cache, används ett Footprint prediction, den förutspå alla block inom en sida som kommer att bli efterfrågade. Icke-förutspådda som begärs blir till cache miss, vilket leder till förluster i prestandan och energi, detta kallas för underprediction. Overprediction är när ett hämtat block inte används på grund att den har blivit ersatt, vilket bara slösar på bandbredd och energi. Footprint cache kan förutspå de block som kommer att bli efterfrågad med en hög precision, genom att kontrollera de tillgängliga data som finns i cacheminnet. Den första instruktionen innehåller värdefulla informationer om data som finns i sidan och är en god indikation vad som kommer att bli efterfrågad i den sidan. Genom att kontrollera vilka andra blocks den koden har access till och lagra den information kan man senare förutse med hög precision, vilka block som kommer att bli efterfrågade när en annan sida, hämtar information från samma kod. Footprint cache använder sig av en set-associative tag array. Den har två vektorer som håller reda på valid och dirty blocks (se bild 4). Tag arrayn är en pekare som koppla samman sidan till en prediction historik. Prediction historiken finns i en annan struktur som kallas för Footprint History Table (FHT). Där lagras förutspådda footprints som tros komma begäras. FHT har ett set-associative struktur och indexerad i par av PC (instruktionspekare) och offset key. FHT uppdateras varje gång en sida har blivit ersatt.
Bild 4 Design för en Footprint cache, tagen från (Jevdjic et al 2013:408) FHT används bara när man inte hitta en sida som innehåller adressen man söker. PC kommer att kontrollera vilken instruktion och offset bit av den adressen som orsakade missen, sedan returneras den förutspådda footprinten. När en miss uppstår kontrolleras det om PC & offset paren finns i FHT, finns den kommer de resterande blocken (som finns i den förutspådda footprinten) att hämtas från minnet. Sidan kommer sedan få en pekare som pekar på ett tag i FHT. Detta är föresatt att PC och offset paret finns i FHT, vilket det borde göra eftersom den redan har förutspått det. Om det inte innehåller PC och offset paret, vilket brukar hända i början när programmet exekveras, kommer en ny information och en pekare att allokeras i FHT. Footprint cache lyckades att ha den hit ratio som en page-based struktur och samtidigt ha samma bandbredd som block-based strukturen (Jevdjic et al 2013:414). I en simulation av författarna lyckades de demonstrera att Footprint cache ökade prestandan med 57 % i genomsnitt.
Diskussion 3D stacked minnes system är en lovande teknik som kan hjälpa oss att komma över memory wall. Men att det är ett system betyder inte att det inte finns begränsningar och utmaningar. Det har nämnts ovan att värme är ett problem inom 3D stacked system. Det finns många forskningar om olika metoder på hur man kan lösa detta problem, men även det har begränsningar och det kostar en del. Ett annat problem är produktionen. Det krävs mycket kommunikation för processor- och minnestillverkarna för att få 3D systemet att fungera. Dessa problem leder till att utvecklingen av 3D stacked minne går långsam framåt. Dock har vi ju sett signifikanta skillnader genom 3D arkitekturen. Det tar bort de begränsningar som DRAM har och genom att ta vara på denna möjlighet kan vi minska hålet mellan processorer och minnet eller kanske också bryta oss fria från memory wall. I rapporten gavs en exempel på DRAM cachearkitektur genom att använda sig av 3D stacked minne. Denna arkitektur kanske inte är perfekt, men det är något som bidra till utvecklingen av 3D stacked minne och det har gett några positiva resultat. I nuläget så dominerar de vanliga DRAM marknaden, visst det är många brister och den är inte perfekt men det har fungerat i det senaste decenniet, vilket är förståeligt att man är mer bekväm med det. Genom att modifiera till exempel cacheminnen så kan vi åtminstone förlänga användningen av den traditionella DRAM. Men hur länge kommer det att hålla, med den takten prestandan ökar i processorn kommer minnet att halka efter ännu mer vilket gör att man inte kan öka på systemets prestanda genom att bara lägga till mer processorer. Detta kommer att vara ett intressant ämne framöver, om man kan utveckla 3D stacked minne så att den blir en lämplig ersättare till de traditionella DRAM.
Källförteckning Lien Lu, Shih, Karnik, Tanay, Srinivasa, Ganapati, Chao, Kai-Yuan, Carmean, Doug, Held, Jim (2012), Scaling the Memory Wall, Hillsboro Oregon, IEEE/ACM International Conference on Computer- Aided Design (ICCAD); 11/5/2012, sidorna 271-272. Inouye, Jennifer, Molloy, Paul, Wisler, Matt (2012), Overcoming the memory wal, Oregon, Oregon State University, sidorna 3-4, 8-11, 14-17. Jevdjic, Djordje, Volos, Stavros, Falsafi, Babak (2013), Die-Stacked DRAM Caches for Servers: Hit ratio, Latency, or Bandwidth? Have it All with Footprint cache, ISCA '13 Proceedings of the 40th Annual International Symposium on Computer Architecture, ACM, New York, sidorna 404-409, 414.