Muistihierarkia on tietokoneessa olevien muistin ja tallennuslaitteiden hierarkia. Usein kolmioina visualisoitu kolmion alaosa edustaa suurempia, halvempia ja hitaampia tallennuslaitteita, kun taas kolmion yläosa edustaa pienempiä, kalliimpia ja nopeampia tallennuslaitteita. Tätä käytetään usein laskennateoriassa ja suunnittelussa, joten ohjelmoijat osaavat hallita erilaisia muistijärjestelmiä rakennettaessa tietokonetta. Ohjelmoijat voivat rakentaa nopeampia tietokoneita tietäen, miten tätä hierarkiaa käsitellään.
Muistihierarkian kolmio on visualisointitekniikka, joka auttaa kuluttajia ja ohjelmoijia ymmärtämään, miten muisti toimii. Alareunassa on halpoja tallennuslaitteita, joissa on paljon muistia, kuten kiintolevy tai magneettinauha. Ylempänä on RAM -muisti, jonka kapasiteetti ja nopeus ovat keskitasoa. Yläosassa on välimuisti ja prosessorit, jotka molemmat ovat erittäin nopeita, mutta joilla on pieni kapasiteetti. Kolmio on järjestetty ensisijaisesti vasteajan mukaan, mutta myös tekijöiden, kuten koon, muistikapasiteetin ja hinnan, välillä on korrelaatio.
Tietokonetta rakennettaessa ohjelmoijan on pidettävä mielessä muistihierarkian kolmio. Vaikka kolmion osia voidaan manipuloida, osien siirtäminen on ehdottomasti sääntöjen vastaista. Ohjelmoija voi esimerkiksi vaihtaa kiintolevyn roolin RAM -muistiin. Jos näin tapahtuu, tietokone olisi erittäin hidas ladatessaan välittömiä tietoja, kuten tiedostoja ja verkkosivustoja, ja pystyisi säilyttämään vähän tietoja pitkäaikaista tallennusta varten, mikä tekee tietokoneesta lähes hyödyttömän. Kolmion osien vaihtaminen ei ole oikea tapa maksimoida tietokoneen potentiaali.
Ohjelmoijat lisäävät tietokoneen tehokkuutta kolmion manipuloinnilla oikein. Jos esimerkiksi tallennusyksiköt on tehty erittäin yksinkertaisiksi, pienemmiksi ja monimutkaisemmiksi, muistihierarkia toimii paremmin. Lisäksi jos ohjelmoijat voivat tehdä sen niin, että tietoja voidaan käsitellä hierarkian korkeammissa osissa, esimerkiksi käyttämällä prosessoria RAM -muistin sijasta, tietokone liikkuu nopeammin. Tämä ei siirrä osioita ympäri, vaan vain optimoi ne.
Vaikka muistihierarkian visualisointi on hyvin yksinkertaista ja muistia voidaan manipuloida eri osioihin, on vaikea tietää tarkalleen, mihin muisti tallennetaan tai käytetään. Ohjelmoijien on arvioitava tämä tekijä, koska useat eri yksiköt käsittelevät yleensä muistia kerralla tai muisti voi siirtyä osasta toiseen. Hyvin tehdyt ohjelmat kykenevät yleensä ennakoimaan, mihin muisti tallennetaan tai käsitellään, mutta on olemassa satunnainen tekijä, josta ohjelmoijat eivät voi aina ottaa huomioon, minkä vuoksi muistihierarkia on paljon sulavampi kuin kolmion visualisointi näyttää.