Snapdragon 810: Cacheminnet Daniel Eckerström dat14dec@student.lu.se
Sammanfattnig Snapdragon 810 innehåller två olika processor arkitekturer, ARM Cortex-A53 samt Cortex-A57. Detta för att kunna på ett så effektivt sätt som möjligt, leverera beräkningar på ett energimässigt snålt vis. Rapporten kommer visa vilka delar av processorn som är delaktiga vid användningen av cacheminnet. Samt hur coherency mellan L1- samt L2 cachen uppnås.
Introduktion I Snapdragon 810 använder Qualcomm sig av ARM tekniken big.little, vilket innebär att man använder två olika processorarkitekturer. Den ena av dem är skräddarsydd för att vara energisnål, och den andra för att göra snabba och tunga uträkningar, detta för att spara energi, och därmed förlänga batteritid vid lågintensiv användning. I fallet snapdragon 810 så innehåller den fyra Cortex- A57 kärnor (big), samt fyra Cortex-A53 kärnor (LITTLE). (ARM 2015) De sammanlagt åtta kärnorna har vardera en L1-cache, de olika arkitekturerna delar på varsin L2- cahe. För att underlätta läsningen ges här en generell förklaring av TLB (Translation Lookaside Buffer): För att översätta från en virtuell adress till en fysisk adress, så utförs något som kallas page-table walk. Detta innebär att MMU:n (Memory Management Unit) med hjälp av en tabell översätter från virtuell till fysisk adress. Är detta tvunget att ske varje gång processorn använder minnet, så hade virtuell adressering varit extremt ineffektivt. Detta löses med en liten buffer, ett cacheminne med vanligtvis ett dussin entries (TLB entry är en samlig nödvändig information för en översättning. virituell adress, fysisk address etc ) (David Mosberger & Stephane Eranian 2002)
Diskussion De högpresterande processorkärnorna (Coretex-A57) använder sig av följande L1 cache: Instruktionscache: 48KB 3-way set-associative statisk line längd om 64 bytes var 16:e bit är paritetsbit Datacache: 32KB 2-way set-associative statisk line längd om 64 bytes var 32:a bit är ECC-skyddad Write-back Cache line:en (Även kallat block) som i detta fallet är statisk, innebär att vid en miss så måste 64 bytes hämtas ur primärminnet. Båda L1 cache:arna använder sig av LRU (Least Recently Used) samt PIPT (Physically-indexed and physically-tagged). PIPT innebär att MMU:n med hjälp av TLB:n måste översätta varje virtuell adress för att kunna kontrollera cachen, detta är en enkel men relativt slö metod. Fördelen är att man slipper problem där olika virtuella adresser refererar till samma fysiska adress och vice versa. För att över huvud taget kunna söka i cachen, måste MMU:n översätta den virtuella adressen som den aktiva processen efterfrågar, till en fysisk adress. Detta görs först och främst genom att kontrollera TLB:n för instruktionscachen och datacachen som består av en 48-entry fully-associative respektive en 32-entry fully-associative TLB, som båda kostar en klockcykel per hit. Vid miss förfrågas L2 TLB:n av MMU:n, L2 TLB:n är ett 4-way set-associative minne om 1024 entry:s Kostnaden för L2 TLB:n är ett varierande antal klockcykler, beroende på konkurrerande förfrågningar av lägre TLB samt underhåll.
Random cache-replacement policy (RR) används på den för Cortex-A57 kärnorna, delade L2 cachen. Den delade L2 cachen kräver att innehållet i L1 cachen även finns representerat i L2 cachen. Dock så behöver datan inte överensstämma. Om så är fallet, ges processorn där dirtybiten i L1 är flaggad en förfrågan om den korrekta datan. (ARM 2013a)
De lågpresterande processorkärnorna (Coretex-A53) använder sig av följande L1 cache: Instruktionscache: 32KB 2-way set-associative statisk line längd om 64 bytes. Datacache: 32KB 2-way set-associative statisk line längd om 64 bytes. Write-back PIPT Pseudo-random replacement En micro-tlb om 10 entry:s används på respektive L1 cache, om det sker en miss i micro-tlb:n, kontrolleras Main TLB, Denna TLB kan innehålla 512 entrys, och är uppbygt med 4-way set associative minne. Kostnaden för L2 TLB:n är ett varierande antal klockcykler, beroende på konkurrerande förfrågningar av lägre TLB samt underhåll. L2 cachen för Coretex-A53 kärnorna har en integrerad SCU (Snoop Control Unit) som upprätthåller coherency (engelska för samstämmighet) mellan L2 cachen samt L1 cacharna. Detta görs för både CortexA-53 samt Cortex-A57 med hjälp av ett modifierat MOESI (Modified Owner Exclusive Shared Invalid) protokoll, som bibehåller samstämmighet mellan delade cache lines. Detta genom att låta delar av cache linen annotera vilken state datan befinner sig i, därefter kan processorn agera utefter det. beskrivning av de olika states:en finns nedan: Modified (M) - Cache line:en har blivit modifierad och är endast representerad i en cache (denna). Owned (O) - Cache line:en är dirty och kan finnas i mer än en cache. En cache line som befinner sig i state owned innehåller den senaste och därmed korrekta datan, endast en av kärnorna kan inneha denna owned line:en. Övriga en Shared variant av samma data. Exclusive (E) - Cache line:en är det enda cahade exemplaret och är samma som i primärminnet. Shared (S) - Cache line:en är identisk med primärminnet men kan finnas i annan cache Invalid (I) - Cache line:en är inte giltig, måste hämtas. (ARM 2013b)
Referenser David Mosberger & Stephane Eranian (2002). IA-64 Linux Kernel: Design and Implementation URL: http://www.informit.com/articles/article.aspx?p=29961&seqnum=4 ARMa (2013a) Cortex -A57 MPCore Processor Technical Reference Manual URL: http://infocenter.arm.com/help/topic/com.arm.doc.ddi0488c/ddi0488c_cortex_a57_mpcore_r1p0_ trm.pdf ARM (2013b). Cortex -A53 MPCore Processor Technical Reference Manual URL: http://infocenter.arm.com/help/topic/com.arm.doc.ddi0500f/ddi0500f_cortex_a53_r0p4_trm.pdf ARM (2150) big.little Technology. Hämtad senast 2015-12-07 URL: https://www.arm.com/products/processors/technologies/biglittleprocessing.php