Minnets hierarki

Den aktuella versionen av sidan har ännu inte granskats av erfarna bidragsgivare och kan skilja sig väsentligt från versionen som granskades den 6 oktober 2021; kontroller kräver 3 redigeringar .

Hierarkin av datorminne  är konceptet att bygga en sammankoppling mellan klasser av olika nivåer av datorminne baserat på en hierarkisk struktur.

Kärnan i behovet av att bygga hierarkiskt minne är behovet av att förse ett datorsystem (en separat dator eller ett kluster) med en tillräcklig mängd minne, både operativt och permanent.

Med tanke på heterogeniteten i frekvensen av åtkomst till specifika poster ( interna processorregister , cacheminne , sidor och filer ) används olika tekniska lösningar som har utmärkta egenskaper, både tekniska och prisvärda samt vikt och storlek. Långtidslagring i dyrt ultrasnabbt och till och med random access-minne är som regel inte lönsamt, så denna typ av data lagras på enheter - disk , band , flash , etc.

För att säkerställa säkerhetskopiering av data , till exempel av säkerhetsskäl, kan användare skapa bibliotek på flyttbara media (till exempel ett virtuellt bandbibliotek eller en diskuppsättning ), fylla dem med sina egna filer i olika format. Tillgång till dessa data tar längst tid, men samtidigt är deras kapacitet enorm.

I grund och botten är de tekniska egenskaperna tillfälliga, det vill säga vilka tidskriterier som passar en viss lösning. Behovet av höghastighetsminne begränsas vanligtvis antingen av höga overheadkostnader för att säkerställa driften av kretsar, eller av hög strömförbrukning eller av den höga kostnaden för lösningen.

Olika typer av minne bildar en hierarki, på olika nivåer där det finns minnen med olika åtkomsttider, komplexitet, kostnad och volym. Möjligheten att bygga en minneshierarki beror på att de flesta algoritmer får tillgång till en liten datamängd vid varje tidsintervall, som kan placeras i snabbare, men dyrt och därför litet, minne (se en:locality of reference ). Användningen av snabbare minne ökar prestandan hos datorkomplexet. Minne i detta fall hänvisar till en datalagringsenhet ( minnesenhet ) i dator- eller datorminne .

När man designar högpresterande datorer och system finns det många avvägningar att göra, såsom storlek och teknik för varje nivå i hierarkin. Du kan betrakta en uppsättning olika minnen (m 1 ,m 2 ,...,m n ) som finns i hierarkin, det vill säga varje m i - nivå är så att säga underordnad hierarkins m i-1- nivå. För att minska väntetiden på högre nivåer kan lägre nivåer förbereda data i bitar med buffring och, när bufferten är full, signalera till den övre nivån att data kan tas emot.

Ofta finns det fyra huvudsakliga (förstorade) nivåer av hierarki: [1]

  1. Processorns internminne ( register organiserade i en registerfil och processorcache ).
  2. System -RAM ( RAM ) och extra minneskort.
  3. Hot-access-enheter (On-line masslagring) - eller sekundärt datorminne. Hårddiskar och solid state-enheter , som inte kräver långa (sekunder eller mer) åtgärder för att börja ta emot data.
  4. Enheter som kräver mediabyte (Off-line bulklagring) - eller tertiärt minne. Detta inkluderar magnetband , band- och diskbibliotek som kräver lång tillbakaspolning eller mekanisk (eller manuell) byte av lagringsmedia.

De flesta moderna datorer använder följande minneshierarki:

  1. Processorregister organiserade i en registerfil  är den snabbaste åtkomsten (i storleksordningen 1 cykel), men bara några hundra eller, sällan, tusentals byte i storlek.
  2. Nivå 1 processorcache (L1) - åtkomsttid i storleksordningen flera cykler, tiotals kilobyte stora
  3. Processornivå 2 cache (L2) - längre åtkomsttid (2 till 10 gånger långsammare än L1), ungefär en halv megabyte eller mer
  4. Nivå 3 processorcache (L3) - åtkomsttiden är cirka hundra cykler, i storlek från några få megabyte till hundratals
  5. Nivå 4 processorcache (L4) - åtkomsttid på flera hundra cykler, en till flera hundra megabyte stora. Används i 5:e generationens Intel-processorer
  6. System -RAM - åtkomsttid från hundratals till möjligen tusentals cykler, men enorma storlekar, från flera gigabyte till flera terabyte. RAM-åtkomsttiden kan variera för olika delar av det i fallet med NUMA -klasskomplex (med olikformig minnesåtkomst)
  7. Disklagring  - många miljoner cykler, om data inte var cachad eller buffrad i förväg, storlekar upp till flera terabyte
  8. Tertiärt minne - fördröjer upp till flera sekunder eller minuter, men praktiskt taget obegränsade volymer ( bandbibliotek ).

De flesta programmerare brukar anta att minnet är uppdelat i två nivåer, huvudminne och disklagring, även om det i assemblerspråk och assemblerkompatibla språk (som C ) är möjligt att arbeta direkt med register. Att dra nytta av minneshierarkin kräver samordnade åtgärder från programmeraren, hårdvaran och kompilatorerna (liksom grundläggande stöd i operativsystemet):

Många programmerare tar inte hänsyn till flernivåminne vid programmering. Det här tillvägagångssättet fungerar så länge som applikationen inte upplever prestandaförsämring på grund av underpresterande minnesundersystem. När du korrigerar koden ( refactoring ) är det nödvändigt att ta hänsyn till närvaron och särdragen i arbetet på de övre nivåerna i minneshierarkin för att uppnå högsta prestanda.

Se även

Litteratur

Anteckningar

  1. Ty, Wing; Zee, Benjamin. Datorhård-/mjukvaruarkitektur  (neopr.) . - Bell Telephone Laboratories, Inc., 1986. - S.  30 . — ISBN 0-13-163502-6 .