Методи за организация и обработка на данните в процесорния кеш
Кеш паметта съхранява копия на блокове от системната памет, вероятността за обръщане към които е най-голяма. Основни понятия при организацията на информацията в кеш паметта са:
- ред (cache line) – съхранява един блок (кадър) от системната памет; броя на редовете е винаги многократно по-малък от броя на блоковете
- каталог (cache directory) – съхранява списък на текущото съответствие между редовете в кеша и блоковете от системната памет.
Механизъм на четене от кеша
При всяко обръщение към системната памет, контролерът на кеша първо проверява каталога дали търсените данни не са в кеша. Има две възможности:
- адресираните данни да са в кеша, това е т.нар. кеш попадение (cache hit) – тогава данните се четат от кеша
- адресираните данни не са в кеша, това е т.нар. кеш пропуск (cache miss) – тогава данните се четат от системната памет. Прочетеният блок от паметта се записва в някой от редовете на кеша, на мястото на друг блок. От «интелигентността» на алгоритъма за замяна зависи процентът на попаденията и следователно ефективността на кеширането – сега той е около 90%.
Методи на търсене на блока в системната памет
Съществуват два метода и респективно две архитектури:
Look Aside – обръщението към системната памет започва едновременно с търсенето на блока в каталога на кеша. В случай на cache hit – търсенето в системната памет се прекратява.
Реализацията на метода се отличава с много високо бързодействие, но излишните обръщения към системната памет водят до повишаване на енергопотреблението, с всички произтичащи последствия.
Look Through – обръщението към системната памет започва едва след като се регистрира cache miss. При реализацията на този метод се губи поне един такт на процесора, но се икономисва енергия.
Методи за актуализация на системната памет
Нарича се още политика на запис (Write Policy). Съществуват два метода за актуализация на данните в системната памет (два метода на запис):
Незабавен запис (политика Write-trough) – всяка промяна на съдържанието на ред от кеша незабавно се отразява в съответния блок от системната памет, т.е. предвижда се едновременно изпълнение на всяка операция за запис и в кеша и в системната памет.
Характеристики на метода:
- прост за реализаци
- осигурява цялостност на данните за сметка на постоянно съвпадение на данните в кеша и в системната памет, т.е. редовете в кеша са винаги валидни (чисти – clean)
- неефективен – даже при еднобайтоя запис в кеша процесорът изпълнява относително дълга процедура за запис в системната памет.
Вариант на метода: записът в системната памет е леко отложен. Всички променени редове се съхраняват в FIFO буфер, от който се презаписват в системната памет по време на свободните тактове на системната шина
Отложен запис (политика Write Back) – актуализацията на данните в системната памет се отлага до:
а) освобождаване на системната шина (свободни тактове на систем-ната шина)
б) възникване на някое от следните обстоятелства:
- опит за достъп до съответния блок от системната памет от друг потребител (многопотребителски режим на работа)
- необходимост съответният ред в кеша да се даде на друг блок от паметта, т.е. изхвърляне на блока от кеша
- ако управляващият алгоритъм определи, че е изтекло максималното време за актуализация на системната памет.
При отложения запис няма пълно съответствие между редовете в кеша и съответните блокове от системната памет, т.е. има мръсни (dirty) редове.
Характеристики на метода:
- сложен за реализация. Поддържа се информация за състоянието (валидността) на редовете в кеша. Непосредствено след запис в кеша, съответният ред се бележи като модифициран (dirty). Едва след актуализацията на системната памет той се маркира като валиден (чист) и може да бъде използван за кеширане на друг блок от системната памет.
- целостта на данните се поддържа трудно
- по-ефективен – намалява натоварването на системната шина.
Методи за разполагане на блоковете от системната памет в редовете на кеша
Известни са още като “методи за определяне на взаимното съответствие”. Съществуват 3 метода и съответно 3 архитектури:
Кеш с директно съответствие (direct-mapped cache)
Същност: Един ред от кеша кореспондира на група блокове от системната памет, т.е. всеки един блок от групата може да бъде записан в този ред и обратно – блок от друга група не може да ползва за запис този ред.
Предимства: Проста реализация
Приложение: За L2 в повечето процесори
Напълно асоциативен кеш (fully-associative cache)
Същност: Всеки ред от кеша кореспондира на всеки блок от системната памет, т.е. всеки един блок от групата може да бъде записан в всеки ред на кеша.
Предимства: Висока ефективност, тъй като наскоро използваните данни обикновено се намират в кеша, което е резултат от принципа “всеки блок навсякъде в кеша”
Недостатъци: Много сложен алгоритъм за търсене на блоковете в кеша. Има два варианта на алгоритъма за търсене:
а) последователен анализ на съдържанието на каталога на кеша – много нерационален, поради продължитеността на търсене. Не се използва.
б) паралелен анализ на съдържанието на каталога на кеша – много сложна апаратна реализация. Прилага се в някои процесори за организация на L1 с неголям капацитет.
Частично асоциативен кеш (set-associative cache), известен още като “асоциативен кеш с подмножества”
Същност: Редовете в кеша са условно групирани (обединени) в 2, 4 или 8 множества (набори). Всеки блок от системната памет може да бъде записан в един ред от всяко множество, т.е. все едно, че има 2, 4 или 8 кеша с директно съответствие. Контролерът на кеша преценява в кое множество на кеша да запише прочетения блок от системната памет.
Например при 2 множества, всеки блок от системната памет може да се запише в един от двата реда – по един от всяко подмножество.
Предимства: Много ниска вероятност за кеш-пропуск, особено при по-голям брой на множествата.
Недостатъци: Трудна реализация.
Приложение: За L1 в повечето съвременни процесори.



