Hva er minnehierarki?
Minnehierarki er hierarkiet til minne- og lagringsenheter som finnes på en datamaskin. Ofte visualisert som en trekant, representerer bunnen av trekanten større, billigere og tregere lagringsenheter, mens toppen av trekanten representerer mindre, dyrere og raskere lagringsenheter. Dette brukes ofte i beregningsteori og design, så programmerere vet hvordan de skal håndtere de forskjellige minnesystemene når de bygger en datamaskin. Ved å vite hvordan de skal manipulere minnehierarkiet, kan programmerere bygge raskere datamaskiner.
Minneshierarkietrekanten er en visualiseringsteknikk som hjelper forbrukere og programmerere å forstå hvordan hukommelsen fungerer. På bunnen er det billige lagringsenheter med store mengder minne, som harddisken eller magnetbånd. Høyere opp er det RAM (random access memory), som har middels kapasitet og hastighet. Øverst hviler cache og prosessorer, som begge er veldig raske, men har liten kapasitet. Trekanten er primært organisert etter responstid, men det er også en sammenheng mellom faktorer som størrelse, minnekapasitet og pris.
Når du bygger en datamaskin, må programmereren ha minnehierarkietrekanten i tankene. Mens deler av trekanten kan manipuleres, er å bevege deler rundt strengt imot reglene. For eksempel kan en programmerer bytte rolle harddisken til RAM-rollen. Hvis dette skjer, vil datamaskinen gå veldig tregt når du laster øyeblikkelig informasjon, for eksempel filer og nettsteder, og vil kunne ha lite data for langtidslagring, noe som gjør datamaskinen nesten ubrukelig. Å bytte deler av trekanten er ikke den riktige måten å maksimere datamaskinens potensial.
Å manipulere trekanten på riktig måte er hvordan programmerere øker datamaskinens effektivitet. For eksempel, hvis lagringsenhetene er laget for å være veldig enkle, med mindre størrelse og kompleksitet, fungerer minnehierarkiet bedre. Hvis programmerere også kan gjøre det slik at informasjon kan behandles i høyere deler av minnehierarkiet, for eksempel ved å bruke prosessoren i stedet for RAM, beveger datamaskinen seg raskere. Dette flytter ikke delene rundt, det optimaliserer dem bare.
Selv om det å visualisere minnehierarkiet er veldig enkelt, og minnet kan manipuleres for å gå i forskjellige seksjoner, er det vanskelig å vite nøyaktig hvor minnet vil bli lagret eller brukt. Programmerere må estimere denne faktoren, fordi flere forskjellige enheter generelt vil behandle minnet på en gang, eller minnet kan gå fra en seksjon til en annen. Vellagde programmer vil typisk være i stand til å forutse hvor minnet vil bli lagret eller behandlet, men det er en tilfeldig faktor som programmerere ikke alltid kan redegjøre for, og det er grunnen til at minnehierarkiet er mye mer flytende enn trekantens visualisering får det til å virke.