ЙЕРАРХИЧНА ОРГАНИЗАЦИЯ НА ПАМЕТТА
Обикновено се разглежда взаимодействието в йерархията на паметта между две съседни нива.
Минималната единица информация, която може да присъства или да отсъства на едно от двете взаимодействащи си нива в йерархията, ще наричаме блок. Размерът на блока може да бъде фиксиран или променлив. Ако този размер е фиксиран, тогава обемът на паметта е кратен на размера на блока.

Йерархията на паметта в компютъра е показана на фиг. 17. Капацитетът на паметта нараства отгоре надолу на фигурата, цената за съхранение на байт (дума) и скоростта на извличане на байт (дума) нарастват отдолу нагоре.
- кеш от първо ниво с размер няколко килобайта с време за достъп 2-3 цикъла, вграден директно в процесора;
- кеш памет от второ ниво с време за достъп 3-5 цикъла и обем от няколко десетки килобайта, разположен на същата платка като централния процесор;
- кеш от трето ниво с време за достъп 5-7 цикъла и обем от няколкостотин килобайта на дънната платка и т.н.
По-късно в този раздел ще се върнем към обсъждането на кеш паметта и ще разгледаме нейната работа по-подробно.
Най-ниското ниво на йерархията на паметта е масовото съхранение. неяобемът е с няколко порядъка по-голям от капацитета на основната RAM. Процесорът няма възможност за бърз достъп до данни, намиращи се във външна памет, и за обработка те трябва да бъдат прехвърлени в основната памет. RAM и външната памет заедно образуват така наречената виртуална памет.
Кратката история на компютърните технологии и разработката на софтуер позволи на компютърните разработчици да направят едно важно заключение:наличната физическа памет на компютъра никога не е достатъчна, за да отговори на нуждите на програмиста. По икономически причини е нерентабилно да се доставя компютър с огромна RAM памет. Осъзнаването на този факт доведе до идеята за организиране навиртуална памет.Виртуалният е абстрактен ресурс, който реално не съществува физически, но е моделиран с помощта на налични технически средства.
Системите с виртуална памет могат да бъдат разделени на два класа: системи с фиксиран размер на блокове, наречени страници, и системи с променлив размер на блокове, наречени сегменти. И двата вида организация на виртуалната памет са разгледани по-долу.
Кеш
Както бе споменато по-горе, целта на кеш паметта е временно да съхранява данни и команди, които често се използват от процесора. Основната структурна единица на кеш паметта е така наречената кеш линия. Дължината на реда на кеша обикновено е 32, 64, 128 или 256 байта.
Има три основни начина за организиране на кеш: 1) кеш с директно картографиране; 2) напълно асоциативен кеш; 3) наборен асоциативен кеш.
Фиг. 18. Кеш памет. а) с директен дисплей; б) напълно асоциативен; в) наборно-асоциативни.
Третият тип кеш памет еset-associative (вижте Фигура 18c)) -това е хибриден дизайн, който съчетава простотата на директно картографираната памет с ефективността на асоциативния кеш. Кеш линиите се комбинират в комплекти от 2, 4, 8 и т.н. неща. Средните битове не дефинират низ, а набор. Конкретен ред в набор се избира с помощта на асоциативно сравнение за всички редове в набора.
Нека кеш контролерът открие, че данните, изисквани в момента от процесора, не са в кеша. Трябва да прочетете ред, съдържащ необходимите данни от RAM и да го поставите в кеша. За да направите това, е необходимо да решите кои от редовете на кеша да бъдат изтрити, за да се съберат новополучените данни. За избор на низа за замяна най-често се използва т. нар. LRU алгоритъм (от Least Recently Used - най-дълго неизползван). Същността на алгоритъма е, че заедно с всеки елемент се съхранява историята на използването му за последен път. От всички съществуващи елементи се избира този, който не е бил достъпван най-дълго време. Недостатъкът на алгоритъма може да се счита за необходимостта от съхраняване и обработка на голямо количество информация за историята на използването на елемента от данни, което става особено важно при използване на голям кеш. Поради това в системи с голяма кеш памет често се използва по-прост алгоритъм, според който редът, който трябва да бъде заменен, се избира произволно. Както показва практическият опит, с голямо количество кеш памет, алгоритъмът за произволна замяна леко губи от алгоритъма LRU по отношение на ефективността, но значително печели по отношение на лекотата на изпълнение.
И накрая, нека да разгледаме какво се случва, когато процесорът извърши операция за запис в паметта. В процеса на работа с паметта повече от 90% от достъпите до паметта са операциичете, така че ускоряването на четенето е най-важната задача, но не забравяйте за операциите за запис в паметта. Има три начина за извършване на тази операция.
Първият, най-простият, се наричаwrite through (write through). С този метод данните се записват едновременно в кеш паметта и в RAM. Естествено, няма печалба в скоростта по време на запис. Въпреки това, този метод, в допълнение към простотата, има значителното предимство, че едни и същи данни се съхраняват в кеш паметта и в RAM във всеки момент от време, т.е. йерархичната памет е вконсистентно състояние. Последният факт е важен, например, в многопроцесорни системи, когато няколко различни процесора могат едновременно да имат достъп до един елемент от данни.
Друг метод на запис, който се наричабуфериран запис чрез (буфериран запис през), може значително да намали загубите на производителност. Процесорът прехвърля данните за запис към кеш контролера и в този момент операцията по запис за процесора се счита за завършена. Данните, които се записват, се съхраняват в буфера на кеш контролера и се презаписват от буфера в RAM в онези моменти, когато процесорът няма достъп до паметта и системната шина е свободна.
Третият метод на организация се наричаwriteback (записване обратно). С този метод натоварването на пътищата за обмен на данни между процесора и паметта се намалява максимално. Процесорът записва само в кеш паметта. Във всеки един момент има само едно „истинско“ копие на данните в кеша. Данните се презаписват от кеша в основната памет само когато се замени един ред от кешадруг и само целият ред се презаписва. За да направите това, всеки кеш ред е снабден с допълнителен знак за "мръсни" данни, който се задава, ако е направен запис в този ред. Ако флагът е зададен, редът, който се изважда от кеша, се презаписва в RAM, в противен случай не се презаписва. Този метод на запис, в комбинация с описания по-горе алгоритъм за изпреварване на данни LRU, ви позволява да се отървете от "допълнителни" достъпи до паметта за често използвани данни, като броячи на цикли, временни работни променливи и т.н.