Hem - Data
Inverkan av cacheminne på datorns prestanda. Vad är hårddiskcacheminne och varför behövs det?Vad är cachestorleken ansvarig för?

Det handlar inte om kontanter, det handlar om cache-processorminne och mer. Från volym cache-minneshandlare har gjort en annan kommersiell fetisch, speciellt med cachen för centralprocessorer och hårddiskar (videokort har det också - men de har inte kommit till det än). Så det finns en XXX-processor med en 1MB L2-cache och exakt samma XYZ-processor med en 2MB cache. Gissa vilken som är bättre? Ah - gör det inte direkt!

Cache-minnet är en buffert som lagrar det som kan och/eller behöver läggas åt sidan för senare. Processorn jobbar och situationer uppstår då mellanliggande data behöver lagras någonstans. Jo, självklart i cachen! - trots allt är det storleksordningar snabbare än RAM, eftersom... den sitter i själva processormatrisen och körs vanligtvis med samma frekvens. Och sedan, efter en tid, kommer han att fiska tillbaka denna data och bearbeta den igen. Grovt sett är det som en potatissorterare på ett löpande band, som varje gång han stöter på något annat än potatis (morötter) slänger det i en låda. Och när den är full reser han sig upp och tar ut den hans till nästa rum. I detta ögonblick står transportören stilla och stillestånd observeras. Lådans volym är cache i denna analogi. OCH Hur många hans Behöver du 1MB eller 12? Det är klart att om hans volymen är liten du kommer att behöva lägga för mycket tid på borttagning och det kommer att vara enkelt, men från en viss volym hans ytterligare ökning kommer inte att göra något. Jo, sorteraren kommer att ha en låda för 1000 kg morötter - men han kommer inte att ha så mycket under hela sitt skift och på grund av detta KOMMER han INTE BLI TVÅ GÅNGER SNABBARE! Det finns ytterligare en subtilitet - stor cache kan orsaka en ökning av förseningar för att komma åt den, för det första, och samtidigt ökar sannolikheten för fel i den, till exempel under överklockning - för det andra. (om HUR man bestämmer stabiliteten/instabiliteten hos processorn i detta fall och ta reda på att felet uppstår specifikt i hans cache, test L1 och L2 - du kan läsa här.) För det tredje - cacheäter upp en anständig mängd chiparea och transistorbudgeten för processorkretsen. Detsamma gäller för cache hårddiskminne. Och om processorarkitekturen är stark kommer den att ha en cache på 1024 KB eller mer efterfrågad i många applikationer. Om du har en snabb hårddisk är 16MB eller till och med 32MB lämpligt. Men ingen mängd på 64 MB cache kommer att göra det hans snabbare om det är en trim som kallas den gröna versionen (Green WD) med en hastighet på 5900 istället för de nödvändiga 7200, även om den senare har 8MB. Sedan använder Intel och AMD-processorer detta på olika sätt cache(Allmänt sett är AMD mer effektivt och deras processorer är ofta bekväma med lägre värden). Dessutom Intel cache allmänt, men för AMD är det personligt för varje kärna. Den snabbaste cache L1 för AMD-processorer är 64 KB för data och instruktioner, vilket är dubbelt så mycket som för Intel. Cache tredje nivån L3 är vanligtvis närvarande i toppprocessorer som AMD Phenom II 1055T X6 Socket AM3 2,8GHz eller en konkurrent Intel Core i7-980X. Först och främst älskar spel stora cachevolymer. OCH cache Många professionella applikationer gillar det INTE (se Dator för rendering, videoredigering och professionella applikationer). Mer exakt, de som är mest krävande är i allmänhet likgiltiga för honom. Men vad du definitivt inte bör göra är att välja en processor baserat på cachestorlek. Den gamla Pentium 4 i sina senaste manifestationer hade också 2 MB cache vid driftsfrekvenser långt över 3 GHz - jämför hans prestanda med en billig dubbelkärnig Celeron E1*** som arbetar vid frekvenser på cirka 2 GHz. Han lämnar ingen sten ovänd från den gamle mannen. Ett mer relevant exempel är den högfrekventa dubbelkärniga E8600, som kostar nästan 200 dollar (uppenbarligen på grund av 6MB cachen) och Athlon II X4-620 2,6GHz, som bara har 2MB. Detta hindrar inte Athlone från att slakta sin konkurrent.

Som du kan se av graferna finns det ingen cache kommer inte att ersätta ytterligare kärnor. Athlon med 2MB cache (röd) slår enkelt Cor2Duo med 6MB cache, även vid en lägre frekvens och nästan halva kostnaden. Det glömmer många också cache finns i grafikkort eftersom de generellt sett också har processorer. Ett färskt exempel är grafikkortet GTX460, där de inte bara lyckas skära av buss- och minneskapaciteten (vilket köparen kommer att gissa om) - utan också CACHE shaders, respektive från 512Kb till 384Kb (som köparen INTE kommer att gissa om). Och detta kommer också att lägga till dess negativa bidrag till produktiviteten. Det kommer också att vara intressant att ta reda på prestandans beroende av cachestorlek. Låt oss undersöka hur snabbt den växer med ökande cachestorlek med hjälp av exemplet med samma processor. Som ni vet skiljer sig processorer i serierna E6***, E4*** och E2*** endast i cachestorleken (4, 2 respektive 1 MB vardera). De arbetar med samma frekvens på 2400 MHz och visar följande resultat.

Som du kan se är resultaten inte alltför olika. Jag ska säga mer - om en processor med en kapacitet på 6MB hade varit inblandad skulle resultatet ha ökat lite mer, eftersom processorer når mättnad. Men för modeller med 512Kb skulle nedgången vara märkbar. Med andra ord räcker 2MB även för spel. För att sammanfatta kan vi dra följande slutsats: cache det är bra när det REDAN finns mycket av allt annat. Det är naivt och dumt att ändra hastigheten på hårddisken eller antalet processorkärnor för cachestorleken till samma kostnad, eftersom inte ens den rymligaste sorteringslådan kommer att ersätta en annan sorterare. Men det finns också goda exempel.. För Exempelvis hade Pentium Dual-Core i en tidig revidering av 65 nm-processen 1 MB cache för två kärnor (E2160-serien och liknande), och den senare 45-nm-revisionen av E5200-serien har fortfarande 2MB, allt annat lika ( och viktigast av allt - PRIS). Självklart ska du välja det senare.

En cache är en mellanbuffert med snabb åtkomst som innehåller information som med största sannolikhet kommer att begäras. Att komma åt data i cachen är snabbare än att hämta originaldata från operationsminnet (RAM) och snabbare än externt minne (hårddisk eller solid-state-enhet), vilket minskar den genomsnittliga åtkomsttiden och ökar den övergripande prestandan för datorsystemet.

Ett antal centralprocessormodeller (CPU) har sin egen cache för att minimera åtkomsten till RAM (Random Access Memory), som är långsammare än register. Cacheminne kan ge betydande prestandafördelar när RAM-klockhastigheten är betydligt lägre än CPU-klockhastigheten. Klockhastigheten för cacheminne är vanligtvis inte mycket lägre än CPU-hastigheten.

Cachenivåer

CPU-cachen är uppdelad i flera nivåer. I en generell processor idag kan antalet nivåer vara så högt som 3. Nivå N+1-cache är vanligtvis större i storlek och långsammare i åtkomsthastighet och dataöverföring än nivå N-cache.

Det snabbaste minnet är första nivåns cache - L1-cache. Faktum är att det är en integrerad del av processorn, eftersom den är placerad på samma chip och är en del av funktionsblocken. I moderna processorer är L1-cachen vanligtvis uppdelad i två cacher, instruktionscachen och datacachen (Harvard-arkitektur). De flesta processorer utan L1-cache kan inte fungera. L1-cachen arbetar vid processorfrekvensen och kan i allmänhet nås varje klockcykel. Det är ofta möjligt att utföra flera läs-/skrivoperationer samtidigt. Åtkomstlatens är vanligtvis 2–4 kärnklockcykler. Volymen är vanligtvis liten - inte mer än 384 KB.

Den näst snabbaste är L2-cache - en andra nivås cache, vanligtvis placerad på chipet, som L1. I äldre processorer, en uppsättning chips på moderkortet. L2-cachevolym från 128 KB till 1?12 MB. I moderna flerkärniga processorer är den andra nivåns cache, som ligger på samma chip, ett separat minne - med en total cachestorlek på nM MB har varje kärna nM/nC MB, där nC är antalet processorkärnor. Vanligtvis är latensen för L2-cachen som finns på kärnchippet från 8 till 20 kärnklockcykler.

Den tredje nivåns cache är minst snabb, men den kan vara mycket imponerande i storlek - mer än 24 MB. L3-cachen är långsammare än tidigare cacher, men ändå betydligt snabbare än RAM. I multiprocessorsystem är den i vanlig användning och är avsedd för synkronisering av data från olika L2:er.

Ibland finns det också en 4:e nivås cache, vanligtvis finns den i ett separat chip. Användningen av nivå 4-cache är endast motiverad för högpresterande servrar och stordatorer.

Problemet med synkronisering mellan olika cacher (både en och flera processorer) löses genom cachekoherens. Det finns tre alternativ för att utbyta information mellan cacher på olika nivåer, eller, som man säger, cachearkitekturer: inklusive, exklusiv och icke-exklusiv.

Hur viktig är L3-cache för AMD-processorer?

Det är faktiskt vettigt att utrusta flerkärniga processorer med dedikerat minne som kommer att delas av alla tillgängliga kärnor. I den här rollen kan en snabb tredje nivå (L3) cache avsevärt påskynda åtkomsten till data som efterfrågas oftast. Då kommer kärnorna, om möjligt, inte behöva komma åt långsamt huvudminne (RAM).

Åtminstone i teorin. Nyligen AMD tillkännagav Athlon II X4-processorn, som är en Phenom II X4-modell utan L3-cache, antyder att det inte är så nödvändigt. Vi bestämde oss för att direkt jämföra två processorer (med och utan L3-cache) för att testa hur cachen påverkar prestandan.

Klicka på bilden för att förstora.

Hur fungerar cachen?

Innan vi dyker in i testerna är det viktigt att förstå några grunder. Principen för hur cachen fungerar är ganska enkel. Cachen buffrar data så nära bearbetningskärnorna i processorn som möjligt för att reducera CPU-förfrågningar till mer avlägsna och långsamma minne. På moderna skrivbordsplattformar innehåller cachehierarkin så många som tre nivåer som föregår åtkomst till RAM. Dessutom tjänar cacher på den andra och i synnerhet tredje nivån inte bara till att buffra data. Deras syfte är att förhindra att processorbussen blir överbelastad när kärnorna behöver utbyta information.

Träffar och missar

Effektiviteten hos cachearkitekturer mäts med träfffrekvens. Dataförfrågningar som kan tillgodoses av cachen betraktas som träffar. Om denna cache inte innehåller nödvändiga data, skickas begäran vidare längs minnespipelinen, och en miss räknas. Visst leder missar till att det krävs mer tid för att få information. Som ett resultat visas "bubblor" (tomgång) och fördröjningar i beräkningspipelinen. Träffar, tvärtom, låter dig behålla maximal prestanda.

Cache-ingång, exklusivitet, koherens

Ersättningspolicyer dikterar hur utrymme frigörs i cachen för nya poster. Eftersom data som skrivs till cachen så småningom måste visas i huvudminnet, kan system göra det samtidigt som de skriver till cachen (genomskrivning), eller kan markera dataområdena som "smutsiga" (återskrivning) och skriva till minne, när den kastas ur cachen.

Data i flera cachenivåer kan lagras exklusivt, det vill säga utan redundans. Då hittar du inte samma datarader i två olika cachehierarkier. Eller så kan cacher fungera inkluderande, det vill säga att de lägre cachenivåerna garanterat innehåller data som finns i de övre cachenivåerna (närmare processorkärnan). AMD Phenom använder en exklusiv L3-cache, medan Intel följer en inkluderande cache-strategi. Koherensprotokoll säkerställer integriteten och färskheten hos data över olika kärnor, cachenivåer och till och med processorer.

Cachestorlek

En större cache kan innehålla mer data, men tenderar att öka latensen. Dessutom förbrukar en stor cache ett ansenligt antal processortransistorer, så det är viktigt att hitta en balans mellan transistorbudget, formstorlek, strömförbrukning och prestanda/latens.

Associativitet

Poster i RAM kan mappas direkt till cachen, det vill säga det finns bara en cacheposition för en kopia av data från RAM, eller så kan de vara n-vägs associativa, det vill säga det finns n möjliga platser i cachen där detta data kan lagras. Högre grader av associativitet (upp till helt associativa cachar) ger större cachningsflexibilitet eftersom befintlig data i cachen inte behöver skrivas om. Med andra ord, en hög n-grad av associativitet garanterar en högre träfffrekvens, men det ökar också latensen eftersom det tar längre tid att kontrollera alla dessa associationer för en träff. Vanligtvis är den högsta graden av association rimlig för den sista nivån av cachelagring, eftersom den maximala kapaciteten är tillgänglig där, och sökning efter data utanför denna cache kommer att resultera i att processorn kommer åt långsamt RAM.

Här är några exempel: Core i5 och i7 använder 32 KB L1-cache med 8-vägsassociativitet för data och 32 KB L1-cache med 4-vägsassociativitet för instruktioner. Det är förståeligt att Intel vill att instruktioner ska vara tillgängliga snabbare och att L1-datacachen ska ha en maximal träfffrekvens. L2-cachen på Intel-processorer har 8-vägsassociativitet, och Intel L3-cachen är ännu smartare, eftersom den implementerar 16-vägsassociativitet för att maximera träffarna.

AMD följer dock en annan strategi med Phenom II X4-processorerna, som använder en 2-vägs associativ L1-cache för att minska latensen. För att kompensera för eventuella missar fördubblades cachekapaciteten: 64 KB för data och 64 KB för instruktioner. L2-cachen har 8-vägsassociativitet, som Intel-designen, men AMD:s L3-cache fungerar med 48-vägsassociativitet. Men beslutet att välja en cachearkitektur framför en annan kan inte bedömas utan att ta hänsyn till hela CPU-arkitekturen. Det är ganska naturligt att testresultat har praktisk betydelse, och vårt mål var just ett praktiskt test av hela denna komplexa multi-level caching-struktur.

Varje modern processor har en dedikerad cache som lagrar processorinstruktioner och data, redo att användas nästan omedelbart. Denna nivå kallas vanligtvis för nivå 1 eller L1-cache och introducerades först i 486DX-processorerna. Nyligen har AMD-processorer blivit standard med 64 KB L1-cache per kärna (för data och instruktioner), och Intel-processorer använder 32 KB L1-cache per kärna (även för data och instruktioner)

L1-cache dök först upp på 486DX-processorerna, varefter det blev en integrerad del av alla moderna processorer.

Andra nivås cache (L2) dök upp på alla processorer efter lanseringen av Pentium III, även om de första implementeringarna av den på förpackningar var i Pentium Pro-processorn (men inte på chip). Moderna processorer är utrustade med upp till 6 MB on-chip L2-cache. Som regel är denna volym uppdelad mellan två kärnor på till exempel en Intel Core 2 Duo-processor. Typiska L2-konfigurationer ger 512 KB eller 1 MB cache per kärna. Processorer med en mindre L2-cache tenderar att vara på den lägre prisnivån. Nedan är ett diagram över tidiga L2-cache-implementeringar.

Pentium Pro hade L2-cachen i processorförpackningen. I efterföljande generationer av Pentium III och Athlon implementerades L2-cachen genom separata SRAM-chips, vilket var mycket vanligt vid den tiden (1998, 1999).

Det efterföljande tillkännagivandet av en processteknik upp till 180 nm gjorde det möjligt för tillverkare att äntligen integrera L2-cache på processormatrisen.


De första processorerna med dubbla kärnor använde helt enkelt befintliga konstruktioner som inkluderade två dies per förpackning. AMD introducerade en dubbelkärnig processor på ett monolitiskt chip, lade till en minneskontroller och en switch, och Intel samlade helt enkelt två enkelkärniga chip i ett paket för sin första dual-core processor.


För första gången började L2-cachen delas mellan två datorkärnor på Core 2 Duo-processorer. AMD gick längre och skapade sitt första fyrkärniga Phenom från grunden, och Intel använde återigen ett par dies, denna gång två dual-core Core 2 dies, för sin första fyrkärniga processor för att minska kostnaderna.

Den tredje nivåns cache har funnits sedan de första dagarna av Alpha 21165-processorn (96 KB, processorer introducerades 1995) eller IBM Power 4 (256 KB, 2001). Men i x86-baserade arkitekturer dök L3-cachen först upp med modellerna Intel Itanium 2, Pentium 4 Extreme (Gallatin, båda processorerna 2003) och Xeon MP (2006).

Tidiga implementeringar gav helt enkelt ytterligare en nivå i cachehierarkin, även om moderna arkitekturer använder L3-cachen som en stor, delad buffert för dataöverföring mellan kärnor i flerkärniga processorer. Detta understryks av den höga n-graden av associativitet. Det är bättre att leta efter data lite längre i cachen än att hamna i en situation där flera kärnor använder mycket långsam åtkomst till huvud-RAM. AMD introducerade först L3-cache på en stationär processor med den redan nämnda Phenom-linjen. 65 nm Phenom X4 innehöll 2 MB delad L3-cache, och den moderna 45 nm Phenom II X4 har redan 6 MB delad L3-cache. Intel Core i7- och i5-processorer använder 8 MB L3-cache.

Moderna fyrkärniga processorer har dedikerade L1- och L2-cacher för varje kärna, samt en stor L3-cache som delas av alla kärnor. Den delade L3-cachen möjliggör också utbyte av data som kärnorna kan arbeta med parallellt.


Hej killar Låt oss prata om processorn, eller mer exakt, om dess cache. Processorns cache kan vara annorlunda, till exempel har jag nu en Pentium G3220 (1150 socket), detta är en modern processor och har 3 MB cache. Men samtidigt har den gamla modellen Pentium D965 (sockel 775) 4 MB cache. Men samtidigt är G3220 flera gånger snabbare än D965, det jag menar är att cachen är bra, men huvudsaken är att cachen är modern. Cacheminnet hos äldre processorer är mycket långsammare än hos nya, tänk på detta.

Låt oss prata om några enheter som påverkar prestandan. Titta, låt oss ta en hårddisk, har den en cache? Ja, det finns, men det är litet, även om det har en liten inverkan på prestandan. Vad händer då? Sedan kommer RAM-minnet, allt som programmet eller processorn arbetar med, allt detta placeras i RAM-minnet. Om det inte finns några data i RAM-minnet läses det från hårddisken, och det går väldigt långsamt. Men RAM-minnet är redan väldigt snabbt, det kan bli ganska mycket av det. Men RAM-minnet är snabbt jämfört med en hårddisk, för en processor är det fortfarande inte särskilt snabbt, och därför har den senare också en egen cache, som redan är supersnabb!

Vad påverkar processorns cache? Det är i denna cache som processorn lagrar det den ofta använder, det vill säga alla möjliga kommandon och instruktioner. Följaktligen, ju mer det finns, desto bättre, men detta är inte helt sant. Hur mycket cache har du? Om du inte vet, så ska jag visa dig hur du tar reda på det, allt är enkelt. Tja, se vilken intressant situation, låt oss gå tillbaka till de gamla processerna igen. Det verkar som om det finns mycket cache så är det här bra. Men det finns en Q9650-processor (775-socket), som har 12 MB cache, men den är inte ens i närheten av moderna Core i5 eller ens Core i3-modeller. i5 har mycket mindre cache, det vill säga bara 6 MB, och i3 har ännu mindre cache - bara 3 MB.

Jag förstår att i allmänhet är moderna processorer mycket snabbare än gamla. Men det är inte det jag pratar om. Cache och cache är olika, Q9650 har helt enkelt långsam cache jämfört med processorer på en modern socket. Därför är dessa 12 MB till ingen nytta. Detta är allt jag menar: jaga inte kvantitet, jaga kvalitet. Så här. Jag skrev allt detta som en anteckning till dig, jag hoppas att du har nytta av det

Här är en enkel bild på hur cachen fungerar:

Och här är en annan bild, en annan enhet indikeras också här, det här är en kontroller, som bara talar om för dig om det finns data i cachen eller inte:

Cacheminnet är supersnabbt. Jag är inte så kunnig om processorer, men det skulle vara intressant att veta om denna cache var... 100 MB... eller till och med 1 GB... skulle processorn vara snabbare? Detta är förstås fantastiskt även nu, men nu finns det processorer med en enorm mängd cache... ca 30 MB eller mer.. Jag är inte säker på detta, men det verkar som att detta cacheminne är väldigt dyrt och det är generellt svårt att sätta in den i en processor, jag menar stor volym

Nåväl, låt mig nu visa dig hur du tar reda på hur mycket cache som finns i processorn. Om du har Windows 10 så är det här bra, eftersom det kan visa alla cacher, det finns tre nivåer där. Även om den tredje nivån verkar vara den viktigaste, är den också den största. Så titta, öppna aktivitetshanteraren och gå till fliken Prestanda och här på CPU-fliken kan du se information om cachen, här är den:

Här kan du se att jag har en Pentium G3220, en ganska bra processor, om än billig. Men det är faktiskt snabbare än många modeller på socket 775, som kan kallas near-top-modeller och som har mycket mer cache... Det här är sakerna...

Men jag ska säga dig ärligt att det här inte är ett tydligt sätt att se hur mycket cache en processor har. Jag råder dig att använda verktyget CPU-Z om du tänker: ja, det här är ett program, jag måste installera det och allt det där, men kom igen... Sluta då! Det här programmet används av coola overlockare som överklockar sina processorer. Under installationen skapar inte verktyget ett gäng filer och i själva verket packar installationen bara upp programmet i Program Files, sedan kan cpuz.exe kopieras var som helst och köras, det kommer att fungera! De har precis lanserat det och det var allt, hon samlade informationen och titta! Du kan enkelt ladda ner den på Internet, eftersom den finns i alla hörn. Se bara till att du inte tar tag i virus. För att göra detta, ladda ner till exempel på mjukportalen. Skriv bara i CPU-Z mjukportalsökning. CPU-Z fungerar på nästan alla versioner av Windows, förutom de äldsta...

I allmänhet kan du ladda ner det på den här webbplatsen: cpuid.com, jag visste ärligt talat inte om det och var van vid att ladda ner från andra webbplatser!

Tja, jag hoppas att du kan ladda ner den utan problem. Nu startar du den och allt om processorn är till hands. Så jag lanserade CPU-Z och detta är vad den visade om min Pentium G3220:

Där jag ringde in rutan, det är där cachen visas. Vad är ett sätt, ja, det står 8-vägs, 12-vägs, ja, jag vet inte vad det är, förlåt. Men som du kan se här kan du tydligt se inte bara cachen, utan även annan information, frekvens, kärnor och trådar. Tja, det som också är intressant är vad en eller två cacher visar här. Tja, jag har bara skrivit 3 MByte här, det vill säga jag har bara 3 MB cache.

Men till exempel, när det gäller toppmodellen Q9650, är ​​situationen där lite annorlunda, även om det finns 12 MB cache, men dessa är i huvudsak två block på 6 MB vardera och CPU-Z avgör detta:

Förresten, som du kan se, finns det överklockning till 4 GHz, vilket inte är dåligt. Sådan överklockning kan förresten mycket väl vara luftkyld. Men det är en helt annan historia...

Förresten, en annan intressant sak är att modeller på socket 775 inte har en tredje nivå L3-cache ... Det vill säga, det finns bara L1 och L2 ..., men jag visste inte ...

Så dessa är sakerna. Jag hoppas att jag skrev allt tydligt. Jag upprepar en gång till, jaga inte kvantitet. Så jag ångrar det inte riktigt, men ändå... Kort sagt, jag tog den och byggde mig en dator på 1150-uttaget. Tja, jag tycker att allt är bra. Men jag kände mig lite kränkt när jag fick reda på att socket 1151 släpptes och att det kostar lika mycket, eller till och med lite billigare... Men processorerna är faktiskt snabbare där... Nå, okej. Jag har precis köpt en dator i evigheter, men jag var glad att mitt kort, och denna Asus Gryphon Z87, stöder processorer baserade på Devil's Canyon-kärnan! Detta var en gåva, för Intel hade tidigare sagt att dessa processorer bara skulle stödjas av Z97-chipset, men jag tog den jäkla Z87!

Kort sagt, dessa är sakerna

Det är allt killar. Jag hoppas att allt kommer att bli bra för dig och att denna information var användbar för dig, lycka till

Till hemmet! cache-processor 2016-07-30

virtmachine.ru

Inverkan av cacheminne på datorns prestanda

Alla användare är väl medvetna om sådana datorelement som processorn, som är ansvarig för att bearbeta data, såväl som random access memory (RAM eller RAM), som är ansvarig för att lagra dem. Men det är nog inte alla som vet att det också finns ett processorcacheminne (Cache CPU), det vill säga själva processorns RAM (det så kallade ultra-RAM).

Cachefunktion

Vad är anledningen till att datordesigner fick använda dedikerat minne för processorn? Räcker inte datorns RAM-kapacitet?

Under lång tid klarade sig persondatorer faktiskt utan något cacheminne. Men som ni vet är processorn den snabbaste enheten på en persondator och dess hastighet har ökat med varje ny generation av CPU. För närvarande mäts dess hastighet i miljarder operationer per sekund. Samtidigt har standard-RAM inte nämnvärt ökat dess prestanda under dess utveckling.

Generellt sett finns det två huvudsakliga minneschipteknologier – statiskt minne och dynamiskt minne. Utan att fördjupa sig i detaljerna i deras design, kommer vi bara att säga att statiskt minne, till skillnad från dynamiskt minne, inte kräver regenerering; Dessutom använder statiskt minne 4-8 transistorer för en bit information, medan dynamiskt minne använder 1-2 transistorer. Följaktligen är dynamiskt minne mycket billigare än statiskt minne, men samtidigt mycket långsammare. För närvarande tillverkas RAM-chips på basis av dynamiskt minne.

Ungefärlig utveckling av förhållandet mellan hastigheten på processorer och RAM:

Således, om processorn tog information från RAM hela tiden, skulle den behöva vänta på långsamt dynamiskt minne, och den skulle vara inaktiv hela tiden. I samma fall, om statiskt minne användes som RAM, skulle kostnaden för datorn öka flera gånger.

Det var därför en rimlig kompromiss togs fram. Huvuddelen av RAM-minnet förblev dynamiskt, medan processorn fick sitt eget snabba cache-minne baserat på statiska minneschips. Dess volym är relativt liten - till exempel är storleken på den andra nivåns cache bara några få megabyte. Det är dock värt att komma ihåg att hela RAM-minnet för de första IBM PC-datorerna var mindre än 1 MB.

Dessutom påverkas lämpligheten av att införa cachningsteknik också av det faktum att olika applikationer som finns i RAM laddar processorn på olika sätt, och som ett resultat finns det mycket data som kräver prioriterad bearbetning jämfört med andra.

Cachehistorik

Strängt taget, innan cacheminnet flyttade till persondatorer, hade det redan använts framgångsrikt i superdatorer i flera decennier.

För första gången dök ett cacheminne på endast 16 KB upp i en PC baserad på i80386-processorn. Idag använder moderna processorer olika nivåer av cache, från den första (den snabbaste cachen av den minsta storleken - vanligtvis 128 KB) till den tredje (den långsammaste cachen av den största storleken - upp till tiotals MB).

Till en början var processorns externa cache placerad på ett separat chip. Med tiden gjorde detta dock att bussen mellan cachen och processorn blev en flaskhals, vilket saktade ner datautbytet. I moderna mikroprocessorer finns både den första och andra nivån av cacheminne i själva processorkärnan.

Under lång tid hade processorer bara två cachenivåer, men Intel Itanium-processorn var den första som hade en tredje nivås cache, gemensam för alla processorkärnor. Det finns också utvecklingar av processorer med fyra-nivås cache.

Cachearkitekturer och principer

Idag är två huvudtyper av cacheminnesorganisation kända, som härstammar från den första teoretiska utvecklingen inom cybernetikområdet - Princeton- och Harvard-arkitekturer. Princeton-arkitekturen innebär ett enda minnesutrymme för att lagra data och kommandon, medan Harvard-arkitekturen innebär separata. De flesta x86 persondatorprocessorer använder en separat typ av cacheminne. Dessutom har en tredje typ av cacheminne också dykt upp i moderna processorer - den så kallade associativa översättningsbufferten, utformad för att påskynda konverteringen av operativsystemets virtuella minnesadresser till fysiska minnesadresser.

Ett förenklat diagram över interaktionen mellan cacheminne och processor kan beskrivas enligt följande. Först kontrollerar processorn förekomsten av den information som behövs av processorn i den snabbaste cachen på första nivån, sedan i den andra nivåns cache, etc. Om den nödvändiga informationen inte hittas på någon cachenivå, så kallar de det för ett fel eller en cachemiss. Om det inte finns någon information i cachen alls måste processorn ta den från RAM eller till och med från externt minne (från hårddisken).

Den ordning i vilken processorn söker efter information i minnet:

Så här söker processorn information

För att styra driften av cacheminnet och dess interaktion med processorns beräkningsenheter, såväl som RAM, finns det en speciell styrenhet.

Schema för att organisera interaktionen mellan processorkärnan, cache och RAM:


Cacheminnet är nyckellänken mellan processorn, RAM-minnet och cacheminnet

Det bör noteras att datacachning är en komplex process som använder många tekniker och matematiska algoritmer. Bland de grundläggande begreppen som används i cachelagring är cacheskrivningsmetoder och cacheassociativitetsarkitektur.

Cache-skrivmetoder

Det finns två huvudsakliga metoder för att skriva information till cacheminne:

  1. Återskrivningsmetod – data skrivs först till cachen och sedan, när vissa förhållanden uppstår, till RAM.
  2. Genomskrivningsmetod – data skrivs samtidigt till RAM och cache.

Cache-associativitetsarkitektur

Cache-associativitetsarkitektur definierar det sätt på vilket data från RAM mappas till cachen. De viktigaste alternativen för cachelagring av associativitetsarkitektur är:

  1. Direktmappad cache - en specifik sektion av cachen är ansvarig för en specifik sektion av RAM
  2. Helt associativ cache - vilken del av cachen som helst kan associeras med vilken del av RAM som helst
  3. Blandad cache (uppsättningsassociativ)

Olika cachenivåer kan vanligtvis använda olika. Direktmappad RAM-cache är det snabbaste cachealternativet, så den här arkitekturen används vanligtvis för stora cachar. I sin tur har en helt associativ cache färre cachefel (missar).

Slutsats

I den här artikeln introducerades du begreppet cacheminne, cacheminnesarkitektur och cachingmetoder, och lärde dig hur det påverkar prestandan hos en modern dator. Närvaron av cacheminne kan avsevärt optimera driften av processorn, minska dess vilotid och följaktligen öka prestanda för hela systemet.

biosgid.ru

Galleri med processorcache-effekter

Nästan alla utvecklare vet att processorcachen är ett litet men snabbt minne som lagrar data från nyligen besökta minnesområden – definitionen är kort och ganska exakt. Men att känna till de tråkiga detaljerna om cachemekanismerna är nödvändigt för att förstå de faktorer som påverkar kodprestandan.

I den här artikeln kommer vi att titta på ett antal exempel som illustrerar olika funktioner hos cacher och deras inverkan på prestanda. Exemplen kommer att vara i C#, valet av språk och plattform påverkar inte i någon större utsträckning prestationsbedömningen och slutsatserna. Naturligtvis, inom rimliga gränser, om du väljer ett språk där läsning av ett värde från en array motsvarar att komma åt en hashtabell, kommer du inte att få några tolkningsbara resultat. Översättarens anteckningar är i kursiv stil.

Habracut - - -

Exempel 1: Minnesåtkomst och prestanda
Hur mycket snabbare tror du att den andra cykeln är än den första? int arr = ny int;

För (int i = 0; i // sekund för (int i = 0; i Exempel 2: påverkan av cachelinjer Låt oss gräva djupare - prova andra stegvärden, inte bara 1 och 16: för (int i = 0; i

Observera att med stegvärden från 1 till 16 förblir drifttiden praktiskt taget oförändrad. Men med värden större än 16 minskar körtiden med ungefär hälften varje gång vi dubblar steget. Det betyder inte att loopen på något magiskt sätt börjar springa snabbare, bara att antalet iterationer också minskar. Nyckelpunkten är samma drifttid med stegvärden från 1 till 16.

Anledningen till detta är att moderna processorer inte kommer åt minnet en byte i taget, utan snarare i små block som kallas cache-linjer. Vanligtvis är strängstorleken 64 byte. När du läser något värde från minnet kommer minst en cache-rad in i cachen. Efterföljande åtkomst till valfritt värde från den här raden är mycket snabb. Eftersom 16 int-värden upptar 64 byte, kommer loopar med steg från 1 till 16 åt samma antal cache-rader, eller mer exakt, alla cache-linjer i arrayen. Vid steg 32 sker åtkomst till varannan rad, vid steg 64 till var fjärde. Att förstå detta är mycket viktigt för vissa optimeringstekniker. Antalet åtkomster till den beror på var data finns i minnet. Till exempel kan ojusterade data kräva två åtkomster till huvudminnet istället för en. Som vi fick reda på ovan kommer driftshastigheten att vara två gånger lägre.

Exempel 3: Nivå 1 och 2 cachestorlekar (L1 och L2)
Moderna processorer har vanligtvis två eller tre nivåer av cacher, vanligtvis kallade L1, L2 och L3. För att ta reda på storlekarna på cacher på olika nivåer kan du använda verktyget CoreInfo eller Windows API-funktionen GetLogicalProcessorInfo. Båda metoderna ger också information om cache-radstorleken för varje nivå. På min dator rapporterar CoreInfo 32 KB L1-datacacher, 32 KB L1-instruktionscacher och 4 MB L2-datacacher. Varje kärna har sina egna personliga L1-cacher, L2-cacher är gemensamma för varje par av kärnor: Logisk processor till cachekarta: *--- Datacache 0, nivå 1, 32 KB, Assoc 8, LineSize 64 *--- Instruktionscache 0, Nivå 1, 32 KB, Assoc 8, LineSize 64 -*-- Datacache 1, Nivå 1, 32 KB, Assoc 8, LineSize 64 -*-- Instruktionscache 1, Nivå 1, 32 KB, Assoc 8, LineSize 64 ** -- Unified Cache 0, Nivå 2, 4 MB, Assoc 16, LineSize 64 --*- Data Cache 2, Nivå 1, 32 KB, Assoc 8, LineSize 64 --*- Instruktionscache 2, Nivå 1, 32 KB, Assoc 8, LineSize 64 ---* Datacache 3, Level 1, 32 KB, Assoc 8, LineSize 64 ---* Instruktionscache 3, Level 1, 32 KB, Assoc 8, LineSize 64 --** Unified Cache 1 , Level 2, 4 MB, Assoc 16, LineSize 64 Låt oss kontrollera denna information experimentellt. För att göra detta, låt oss gå igenom vår array och öka vart 16:e värde - ett enkelt sätt att ändra data i varje cache-rad. När vi når slutet återvänder vi till början. Låt oss kolla olika arraystorlekar; vi bör se en minskning i prestanda när arrayen inte längre passar in i cacher på olika nivåer. Koden är: int steg = 64 * 1024 * 1024; // antal iterationer int lengthMod = arr.Length - 1; // array size -- power of two

för (int i = 0; i (

// x & lengthMod = x % arr.Längd, eftersom två potenser

Arr[(i * 16) & lengthMod]++; ) Testresultat:

På min maskin är det märkbara sänkningar i prestanda efter 32 KB och 4 MB - det här är storlekarna på L1- och L2-cachen.

Exempel 4: Instruktionsparallelism
Låt oss nu titta på något annat. Enligt din åsikt, vilken av dessa två loopar kommer att köras snabbare? int steg = 256 * 1024 * 1024; int a = ny int;

For (int i = 0; i // sekund för (int i = 0; i Exempel 5: cacheassociativitet En av nyckelfrågorna som måste besvaras när man designar en cache är om data från ett visst minnesområde kan lagras i någon cacheceller eller bara i några av dem. Tre möjliga lösningar:

  1. Direktmappad cache, data för varje cache-rad i RAM-minnet lagras endast på en fördefinierad cacheplats. Det enklaste sättet att beräkna mappningen är: row_index_in_memory % number_of_cache_cells. Två rader mappade till samma cell kan inte finnas i cachen samtidigt.
  2. N-entry partiell-associativ cache, varje rad kan lagras på N olika cacheplatser. Till exempel, i en cache med 16 poster, kan en rad lagras i en av de 16 celler som utgör gruppen. Vanligtvis delar rader med lika minst signifikanta bitar av index en grupp.
  3. Helt associativ cache, vilken rad som helst kan lagras på valfri cacheplats. Lösningen är likvärdig med en hashtabell i sitt beteende.
Direktmappade cacher är benägna att strida, till exempel när två rader tävlar om samma cell, växelvis vräker varandra från cachen, är effektiviteten mycket låg. Å andra sidan är helt associativa cacher, även om de är fria från denna nackdel, mycket komplexa och dyra att implementera. Delvis associativa cacher är en typisk kompromiss mellan implementeringskomplexitet och effektivitet. Till exempel, på min maskin, är 4 MB L2-cache en 16-poster partiell-associativ cache. Hela RAM-minnet är uppdelat i uppsättningar linjer enligt de minst signifikanta bitarna av deras index, linjer från varje uppsättning tävlar om en grupp med 16 L2-cacheceller.

Eftersom L2-cachen har 65 536 celler (4 * 220 / 64) och varje grupp består av 16 celler, har vi totalt 4 096 grupper. Således bestämmer de nedre 12 bitarna av radindexet vilken grupp denna rad tillhör (212 = 4 096). Som ett resultat delar rader med adresser som är multiplar av 262 144 (4 096 * 64) samma grupp med 16 celler och tävlar om utrymmet i den.

För att effekterna av associativitet ska få effekt måste vi ständigt komma åt ett stort antal rader från samma grupp, till exempel genom att använda följande kod: public static long UpdateEveryKthByte(byte arr, int K) (

const int rep = 1024 * 1024; // antal iterationer

Stoppur sw = Stopwatch.StartNew();

För (int i = 0; i p += K; if (p >= arr.Längd) p = 0; ) sw.Stop();

returnera sw.ElapsedMilliseconds;

) Metoden ökar varje K:te element i arrayen. När vi når slutet börjar vi igen. Efter ett ganska stort antal iterationer (220) stannar vi. Jag gjorde körningar för olika arraystorlekar och K-stegvärden. Resultat (blå - lång körtid, vit - kort):

Blå områden motsvarar de fall då, med konstanta dataändringar, cachen inte kan ta emot all nödvändig data samtidigt. En ljusblå färg indikerar en drifttid på cirka 80 ms, nästan vit - 10 ms.

Låt oss ta itu med de blå områdena:

  1. Varför visas vertikala linjer? Vertikala linjer motsvarar stegvärden där för många rader (mer än 16) från en grupp nås. För dessa värden kan min maskins cache med 16 poster inte ta emot all nödvändig data.

    Några av de dåliga stegvärdena är två potenser: 256 och 512. Överväg till exempel steg 512 och en 8 MB-array. Med detta steg finns det 32 ​​sektioner i arrayen (8 * 220 / 262 144), som tävlar med varandra om celler i 512 cachegrupper (262 144 / 512). Det finns 32 sektioner, men det finns bara 16 celler i cachen för varje grupp, så det finns inte tillräckligt med utrymme för alla.

    Andra stegvärden som inte är två potenser är helt enkelt oturliga, vilket orsakar ett stort antal träffar till samma cachegrupper och leder också till uppkomsten av vertikala blå linjer i figuren. Vid det här laget uppmanas älskare av talteori att tänka.

  2. Varför bryts vertikala linjer vid 4 MB-gränsen? När arraystorleken är 4 MB eller mindre, beter sig cachen med 16 poster som en helt associativ cache, det vill säga den kan rymma all data i arrayen utan konflikter. Det finns inte fler än 16 områden som slåss om en cachegrupp (262 144 * 16 = 4 * 220 = 4 MB).
  3. Varför finns det en stor blå triangel längst upp till vänster? För med ett litet steg och en stor array kan cachen inte få plats med all nödvändig data. Graden av cacheassociativitet spelar en sekundär roll här, begränsningen är relaterad till storleken på L2-cachen. Till exempel, med en arraystorlek på 16 MB och en stride på 128, kommer vi åt var 128:e byte, och modifierar därmed varannan arraycache-rad. För att lagra varannan rad i cachen behöver du 8 MB cache, men på min maskin har jag bara 4 MB.

    Även om cachen var helt associativ skulle den inte tillåta 8 MB data att lagras i den. Observera att i det redan diskuterade exemplet med ett steg på 512 och en arraystorlek på 8 MB, behöver vi bara 1 MB cache för att lagra all nödvändig data, men detta är omöjligt på grund av otillräcklig cacheassociativitet.

  4. Varför ökar den vänstra sidan av triangeln gradvis i intensitet? Den maximala intensiteten inträffar vid ett stegvärde på 64 byte, vilket är lika med storleken på cacheraden. Som vi såg i det första och andra exemplet kostar sekventiell åtkomst till samma rad praktiskt taget ingenting. Låt oss säga att med ett steg på 16 byte har vi fyra minnesåtkomster för priset av en. Eftersom antalet iterationer är detsamma i vårt test för valfritt stegvärde, resulterar ett billigare steg i mindre körtid.
De upptäckta effekterna kvarstår vid stora parametervärden:

Cacheassociativitet är en intressant sak som kan visa sig under vissa förutsättningar. Till skillnad från de andra problemen som diskuteras i den här artikeln är det inte så allvarligt. Det är definitivt inget som kräver konstant uppmärksamhet när man skriver program.

Exempel 6: Partitionering av falsk cache
På flerkärniga maskiner kan du stöta på ett annat problem - cachekoherens. Processorkärnor har delvis eller helt separata cacher. På min maskin är L1-cacharna separata (som vanligt), och det finns också två L2-cacher som delas av varje par kärnor. Detaljerna kan variera, men i allmänhet har moderna flerkärniga processorer hierarkiska cacher på flera nivåer. Dessutom tillhör de snabbaste, men också de minsta cacharna, individuella kärnor.

När en kärna modifierar ett värde i sin cache, kan andra kärnor inte längre använda det gamla värdet. Värdet i cachen för andra kärnor måste uppdateras. Dessutom måste hela cache-raden uppdateras, eftersom cacher fungerar på data på linjenivå.

Låt oss demonstrera detta problem med följande kod: private static int s_counter = new int;

privat void UpdateCounter(int position)

{

för (int j = 0; j ( s_counter = s_counter + 3; )

Om jag på min fyrkärniga maskin anropar den här metoden med parametrarna 0, 1, 2, 3 samtidigt från fyra trådar, kommer körtiden att vara 4,3 sekunder. Men om jag anropar metoden med parametrarna 16, 32, 48, 64, så blir körtiden bara 0,28 sekunder. Varför? I det första fallet kommer sannolikt alla fyra värden som behandlas av trådar vid varje given tidpunkt att hamna i en cache-rad. Varje gång en kärna ökar ett värde, markerar den cacheceller som innehåller det värdet i andra kärnor som ogiltiga. Efter denna operation måste alla andra kärnor cachelagra raden igen. Detta gör cachningsmekanismen inoperabel, vilket dödar prestandan.

Exempel 7: Hårdvarukomplexitet
Även nu, när principerna för cachedrift inte är några hemligheter för dig, kommer hårdvaran fortfarande att ge dig överraskningar. Processorer skiljer sig från varandra i optimeringsmetoder, heuristik och andra implementeringsfinesser.

L1-cachen för vissa processorer kan komma åt två celler parallellt om de tillhör olika grupper, men om de tillhör samma grupp, bara sekventiellt. Såvitt jag vet kan vissa till och med komma åt olika håll i samma cell parallellt.

Processorer kan överraska dig med smarta optimeringar. Exempelvis fungerar inte koden från föregående exempel om falsk cachedelning på min hemdator som det är tänkt – i de enklaste fallen kan processorn optimera arbetet och minska negativa effekter. Modifierar du koden lite så faller allt på plats. Här är ett annat exempel på konstiga hårdvaruegenskaper: privat statisk int A, B, C, D, E, F, G;

privat statisk tomrum Konstighet()

{

för (int i = 0; i ( ) ) Om du byter ut tre olika alternativ kan du få följande resultat:

Att öka fälten A, B, C, D tar längre tid än att öka fälten A, C, E, G. Det som är ännu konstigare är att det tar längre tid att öka fälten A och C än fälten A, C och E, G. Jag vet inte för säkert vad är orsakerna till detta, men de kanske är relaterade till minnesbanker (ja, med vanliga tre-liters sparminnesbanker, och inte vad du trodde). Om du har några tankar om denna fråga, säg till i kommentarerna.

På min maskin observeras inte ovanstående, men ibland finns det onormalt dåliga resultat - troligtvis gör uppgiftsschemaläggaren sina egna "justeringar".

Lärdomen att dra av detta exempel är att det är mycket svårt att helt förutsäga hårdvarans beteende. Ja, du kan förutsäga mycket, men du måste kontinuerligt validera dina förutsägelser genom mätning och testning.

Slutsats
Jag hoppas att allt som diskuterats ovan har hjälpt dig att förstå designen av processorcacher. Nu kan du omsätta denna kunskap i praktiken för att optimera din kod. * Källkoden markerades med Source Code Highlighter. Taggar:

En av de viktiga faktorerna som ökar processorprestandan är närvaron av cacheminne, eller snarare dess volym, åtkomsthastighet och distribution mellan nivåer.

Sedan ganska länge har nästan alla processorer utrustats med denna typ av minne, vilket återigen bevisar användbarheten av dess närvaro. I den här artikeln kommer vi att prata om strukturen, nivåerna och det praktiska syftet med cacheminne, vilket är mycket viktigt. processoregenskaper.

Vad är cacheminne och dess struktur

Cacheminne är ultrasnabbt minne som används av processorn för att tillfälligt lagra data som är mest åtkomlig. Så här kan vi kort beskriva denna typ av minne.

Cacheminne är byggt på vippor, som i sin tur består av transistorer. En grupp transistorer tar upp mycket mer utrymme än samma kondensatorer som utgör Bagge. Detta medför många svårigheter i produktionen, såväl som begränsningar i volym. Det är därför cacheminne är ett mycket dyrt minne, samtidigt som det har försumbara volymer. Men från denna struktur kommer den största fördelen med sådant minne - hastighet. Eftersom vipporna inte behöver regenereras och fördröjningstiden för grinden på vilken de är monterade är liten, sker tiden för att byta vippan från ett tillstånd till ett annat mycket snabbt. Detta gör att cacheminnet kan arbeta med samma frekvenser som moderna processorer.

En viktig faktor är också placeringen av cacheminnet. Den sitter på själva processorchippet, vilket avsevärt minskar åtkomsttiden. Tidigare låg cacheminne på vissa nivåer utanför processorkretsen, på ett speciellt SRAM-chip någonstans på moderkortet. Nu har nästan alla processorer cacheminne placerat på processorkretsen.


Vad används processorcache till?

Som nämnts ovan är huvudsyftet med cacheminne att lagra data som ofta används av processorn. Cachen är en buffert i vilken data laddas, och trots dess ringa storlek (ca 4-16 MB) moderna processorer, ger det en betydande prestandaökning i alla applikationer.

För att bättre förstå behovet av cacheminne, låt oss föreställa oss att organisera en dators minne som ett kontor. RAM-minnet kommer att vara ett skåp med mappar som revisorn periodvis kommer åt för att hämta stora datablock (det vill säga mappar). Och tabellen kommer att vara ett cacheminne.

Det finns element som placeras på revisorns skrivbord, som han refererar till flera gånger under en timme. Det kan till exempel vara telefonnummer, några exempel på dokument. Dessa typer av information ligger precis på bordet, vilket i sin tur ökar hastigheten för åtkomst till dem.

På samma sätt kan data läggas till från de stora datablocken (mapparna) till tabellen för snabb användning, till exempel ett dokument. När detta dokument inte längre behövs placeras det tillbaka i skåpet (i RAM-minnet), vilket rensar tabellen (cacheminne) och frigör denna tabell för nya dokument som kommer att användas under nästa tidsperiod.

Också med cacheminne, om det finns någon data som med största sannolikhet kommer att nås igen, så laddas denna data från RAM in i cacheminnet. Mycket ofta sker detta genom att samladda de data som med största sannolikhet kommer att användas efter den aktuella datan. Det vill säga att det finns antaganden om vad som kommer att användas "efter". Dessa är de komplexa driftsprinciperna.

Processorns cachenivåer

Moderna processorer är utrustade med en cache, som ofta består av 2 eller 3 nivåer. Visst finns det undantag, men så är det ofta.

I allmänhet kan det finnas följande nivåer: L1 (första nivån), L2 (andra nivån), L3 (tredje nivån). Nu lite mer detaljer om var och en av dem:

Första nivåns cache (L1)– den snabbaste cacheminnesnivån som arbetar direkt med processorkärnan, tack vare denna snäva interaktion har denna nivå den kortaste åtkomsttiden och fungerar på frekvenser nära processorn. Det är en buffert mellan processorn och den andra nivåns cache.

Vi kommer att överväga volymer på en högpresterande processor Intel Core i7-3770K. Denna processor är utrustad med 4x32 KB L1-cache 4 x 32 KB = 128 KB. (32 KB per kärna)

Andra nivåns cache (L2)– den andra nivån är större än den första, men har som ett resultat lägre "hastighetsegenskaper". Följaktligen fungerar den som en buffert mellan L1- och L3-nivåerna. Om vi ​​tittar igen på vårt exempel Core i7-3770 K, så är L2-cacheminnets storlek 4x256 KB = 1 MB.

Nivå 3 cache (L3)– den tredje nivån, återigen, är långsammare än de två föregående. Men det är fortfarande mycket snabbare än RAM. L3-cachestorleken i i7-3770K är 8 MB. Om de två föregående nivåerna delas av varje kärna, är denna nivå gemensam för hela processorn. Indikatorn är ganska solid, men inte orimlig. Eftersom till exempel för Extreme-seriens processorer som i7-3960X är det 15 MB och för vissa nya Xeon-processorer mer än 20.



 


Läsa:



Betyg av de bästa trådlösa hörlurarna

Betyg av de bästa trådlösa hörlurarna

Är det möjligt att köpa universella öron billigt? 3 000 rubel - är det möjligt att köpa högkvalitativa hörlurar för den typen av pengar? Som det visade sig, ja. Och tal...

Huvudkameran på en mobil enhet är vanligtvis placerad på baksidan av kroppen och används för att ta foton och filma

Huvudkameran på en mobil enhet är vanligtvis placerad på baksidan av kroppen och används för att ta foton och filma

En uppdaterad version av surfplattan med förbättrade egenskaper och hög autonomi. Acers smartphones besöks sällan...

Så här byter du till en annan operatör samtidigt som du behåller ditt nummer

Så här byter du till en annan operatör samtidigt som du behåller ditt nummer

Lagen om att bevara ett telefonnummer när en abonnent byter till en annan mobiloperatör trädde i kraft i Ryssland den 1 december. Det visade sig dock att...

recension av en phablet, dyr, men mycket kompetent

recension av en phablet, dyr, men mycket kompetent

Recension av en phablet, dyr, men mycket kompetent 2015-03-20 Jag är den enda skomakaren i världen utan stövlar, en smartphone-recensent utan min egen smartphone....

feed-bild RSS