Kes Memorija

You might also like

Download as pptx, pdf, or txt
Download as pptx, pdf, or txt
You are on page 1of 31

6.

Кеш меморија
Врло брза меморија (брзина приступа врло близу брзини приступа
регистрима) зове се кеш (Cash). Анализама је установљено да се у
појединим временским интервалима генеришу блиске адресе (временски
и просторни локалитет постоји) и основна идеја је да се одређен део
меморије пребаци у кеш и одатле користе подаци, а када треба да се
пређе на следећи блок, евeнтуално измењени, део меморије из кеша
враћамо у оперативну меморију.
Код обраде у петљи, адресе из уског
опсега понављају се велики број пута -
просторни и временски локалитет.
У почетку, кеш је празан. Обраћамо се
меморији, блок података преносимо у кеш.
Када се следећи пут обратимо адреси из тог
блока, податке читамо из кеша (не обраћамо
се оперативној меморији).

Хардверски се проверава да ли је тражени садржај у кеш-у. Ако није,


онда се садржај у кеш довлачи из оперативне меморије, и из кеша
очитава. Ово се све ради хардверски.
Кеш је скривена меморија - инструкцијама процесора не можемо
приступити.
Техника пресликавања - вођење евиденције о делу
оперативне меморије који се налази у кеш-у. Постоје три
технике: директно, асоцијативно и сет-асоцијативно
пресликавање.
Величина блока. Ради хардверског вођења евиденције о
мемoријским блоковима присутним у кешу потребан је додатни
хардвер који повећава цену. Мала величина блока је погодна
када има честих скокова у програму. Већи блокови погоднији су
код честог коришћења дужих секвенци програма или података.
Пошто у сваком случају имамо и једно и друго треба наћи
оптимално решење.
Алгоритам замене битан је код неких техника пресликавања
(асоцијативно пресликавање), а код неких не. После неког времена кеш
је пун. Генерише се адреса из блока ван кеш-а. Потребно је тај нови
блок довући у кеш, али пре тога треба ослободити место у кеш-у. Који
блок избацити из кеш-а? Због високе цене ређе се користи алгоритам
LRU (Last Recently Used). Чешће се користи алгоритам FIFO (First In
First Out).
Код директног пресликавања овај проблем се не појављује. Унапред
је дефинисано који се блок оперативне меморије преноси у који блок
кеш - меморије.
Код сет-асоцијативног пресликавања (комбинација директног и
асоцијативног пресликавања), алгоритам замене примењује се само на
нивоу сета где се користи асоцијативни метод пресликавања. На нивоу
блока користи се директан метод пресликавања.
Ажурирање оперативне меморије. Када тражени садржај не
нађемо у кеш-у довучемо га из оперативне меморије. Даље
коришћење тог блока везано је за кеш-меморију. После првог уписа
у тај блок (у кеш-у) постоји несагласност између блока оперативне
меморије и одговарајућег блока кеш-а. Постоје два начина
превазилажења овог проблема.
Техника "врати назад" (Write Back) - одмах по упису у кеш цео
блок враћамо у оперативну меморију. Боља варијанта овог начина -
водимо евиденцију о блоковима чији је садржај мењан (Dirty
Block), а у оперативну меморију (ОМ) их враћамо приликом
ослобађања кеш-а.
Недостаци:
 приликом уписа податка цео блок враћамо у ОМ (ово код
првопоменуте варијанте)
 код довлачења новог блока у кеш, ако је блок у кешу „прљав“, најпре
се блок из кеша враћа у ОМ, па онда нови блок из ОМ иде у кеш (ово
код боље варијанте)
Предност:
 не оптерећује се често магистрала - нарочито код боље варијанте. 
Техника "упиши кроз" (Store Through) - упис се врши истовремено
и у кеш и у ОМ. Меморијски блокови у кеш-у и ОМ увек су усаглашени,
не води се евиденција о "прљавим" блоковима и нема враћања блокова
из кеш-а у ОМ. Недостатак је што се и непотребни међурезултати
уписују у ОМ, па се тако непотребно заузима и магистрала.
Асоцијативно пресликавање

Узећемо конкретне вредности за капацитет оперативне и кеш


меморије (у задацима се ове вредности мењају али принцип остаје
исти).
Оперативна меморија: Кеш меморија:
- 64 KB - 128 блокова (укупно 2 KB)
- блок од 16 речи - блок од 16 речи
216 / 24 = 212 = 4096 блокова 27 * 24 = 211 = 2 KB
Пренос блока из кеш - меморије у оперативну меморију
догађа се када је потребно ослободити простор у кеш-у за нови
блок из ОМ (кеш је пун), а током "боравка" у кеш-у мењан је
садржај блока (dirty бит је постављен). Ова техника назива се
WRITE BACK (упиши назад). Избор блока који мењамо у кеш-у
обавља се помоћу алгоритма FIFO (First In First Out) или LRU
(Last Recently Used), а редни број изабраног блoка у кеш-у уписује
се у бројач улаза. Поменути алгоритми извршавају се хардверски.
LRU је знатно компликованији.
Извори потребних адреса за кеш и ОМ дати су у табели.
Ознаке у табели дате су према блок шеми организације
асоцијативне меморије.
Пренос блока из ОМ у КЕШ догађа се када блок чија је адреса генерисана
није у кеш-у. Када кеш није пун, бројач улаза указује на слободно место у кеш-у.
Када је кеш пун, долази до замене блока у кеш-у (стари блок се избацује из
кеша, а нови преноси из ОМ у кеш).
Извори потребних адреса за кеш и ОМ дати су у табели. Ознаке у табели дате
су према блок шеми организације асоцијативне меморије.
Читање или упис када се генерисана адреса
налази у кеш меморији
Извори потребних адреса за кеш и ОМ дати су у табели. Ознаке
у табели дате су према блок шеми организације асоцијативне
меморије.
*) Из генерисане адр. број блока (А4 - А15) пореди се преко
TGI0 - TGI11 са садржајем асоцијативне меморије. На
сегменту где је нађена подударност сигнал М добија
активну вредност ("1"). Ако је нађени блок код кога је
постигнута подударност валидан (validity - V = 1),
одговарајући сигнал S добија активну вредност ("1").
Могуће је да само један од 128 сигнала S буде активан.
Кодирањем 128 сигнала S добија се 7 битова адресе
нађеног блока у кеш меморији.
Директно пресликавање

Узећемо конкретне вредности за капацитет оперативне и кеш


меморије (у задацима се ове вредности мењају али принцип остаје
исти).
Оперативна меморија: Кеш меморија:
- 64 KB - 128 блокова (укупно 2 KB)
- блок од16 речи - блок од 16 речии
216 / 24 = 212 = 4096 блокова 27 * 24 = 211 = 2 KB
Пренос блока из кеш - меморије у оперативну меморију
догађа се када је потребно ослободити простор у кеш-у за нови
блок из ОМ (исти број блока, али из друге групе. Кеш не мора
бити пун!), а током "боравка" у кеш-у мењан је садржај блока
(dirty бит је постављен). Ова техника назива се WRITE BACK
(упиши назад). Избор блока који мењамо у кеш-у одређен је
генерисаном адресом (број блока унутар групе - BB). Ако се
специфицирани садржај у TAG меморији не слаже са бројем
групе (TAG - битови) из генерисане адресе и ако је садржај
валидан (validity, V(BB) = 1), блок из кеша треба пренети у ОМ.
Извори потребних адреса за кеш и ОМ дати су у табели. Ознаке у
табели дате су према блок шеми организације кеш меморије са
директним приступом.
Пренос блока из ОМ у КЕШ догађа се када блок чија је адреса генерисана
није у кеш-у. Када тражени блок (BB) у кешу није пун, одговарајући бит
валидности има вредност „0“ (V(BB)=0). Када је кеш пун, долази до замене блока
у кеш-у (стари блок се избацује из кеша, а нови преноси из ОМ у кеш).
Извори потребних адреса за кеш и ОМ дати су у табели. Ознаке у табели дате
су према блок шеми организације кеш меморије са директним приступом.

*) TAG битови из
генерисане адресе уписују
се преко TGIO - TGI4 у TAG
меморију
Читање или упис када се генерисана адреса
налази у кеш меморији
Извори потребних адреса за кеш и ОМ дати су у табели. Ознаке у табели
дате су према блок шеми организације кеш меморије са директним
приступом.
*) Из генерисане адресе број блока (BB = А4 - А10) селектује
локацију у TAG меморији. Нађени садржај из TAG меморије
поредимо са TAG битовима генерисане адресе. Ако је блок (BB), код
кога је постигнута подударност, валидан (validity - V(BB) = 1), сигнал
HIT добија активну вредност ("1") - "генерисана адреса је у кеш
меморији".
Кеш са асоцијативним приступом захтева комплекснији хардвер
(нарочито у вези алгоритма замене), али је зато ређе (у односу на
директно пресликавање) пребацивање блока из кеш-а у ОМ и обрнуто
што резултира укупно већом брзином система. У сваком случају број
промена блока у кешу зависи од места у меморији на коме се налази
програм и подаци.
Сет асоцијативно пресликавање

Представља комбинацију претходна два начина. Дељењем кеш


меморије у најмање два дела, постиже се да за сваки блок оперативне
меморије има најмање два места у кешу где се може сместити (особина
асоцијативне меморије). Истовремено, у оквиру сваког од поменутих
делова постоји унапред одређено и јединствено место за н-ти блок из
неке од група оперативне меморије (као код директног пресликавања).
Н-ти сет чине н-те позиције блокова из свих делова кеш меморије са
припадајућим хардвером. У оквиру сета начин смештања је
асоцијативан, док је одређивање сета на принципу директног приступа.
Узећемо конкретне вредности за капацитет оперативне и кеш
меморије (у задацима се ове вредности мењају али принцип остаје исти).
 
Оперативна меморија: Кеш меморија:
- 64 KB - 128 блокова (укупно 2 KB)
- блок од16 речи - блок од 16 речи
216 / 24 = 212 = 4096 блокова 27 * 24 = 211 = 2 KB
Извори потребних адреса за кеш и ОМ дати су у табели. Ознаке у
табели дате су према блок шеми организације сет-асоцијативне
меморије.
Пренос блока из кеш - меморије у оперативну меморију
догађа се када је потребно ослободити простор у кеш-у за нови
блок из ОМ (исти број блока, али из друге групе. Кеш не мора
бити пун!), а током "боравка" у кеш-у мењан је садржај блока
(dirty бит је постављен). Ова техника назива се WRITE BACK
(упиши назад). Избор блока који мењамо у кеш-у одређен је
генерисаном адресом (избор сет-а) и неким од алгоритама замене
(FIFO или LRU) у оквиру сет-а. Ако се специфицирани садржај у
TAG меморији не слаже са бројем групе (TAG - битови) из
генерисане адресе и ако је садржај валидан (validity, V(BB) = 1),
блок из кеша треба пренети у ОМ.
Пренос блока из ОМ у КЕШ догађа се када блок чија је адреса генерисана
није у кеш-у. Када тражени блок у кешу (у одговарајућем сету) није пун,
одговарајући бит валидности има вредност „0“ (V(BB)=0). Када је кеш пун,
долази до замене блока у кеш-у (стари блок се избацује из кеша, а нови
преноси из ОМ у кеш).
Извори потребних адреса за кеш и ОМ дати су у табели. Ознаке у табели
дате су према блок шеми организације сет-асоцијативне меморије.

А 9 - А15 уписују се у
*)

TAG меморију преко


TGI0 - TGI6
Читање или упис када се генерисана адреса
налази у кеш меморији
Извори потребних адреса за кеш и ОМ дати су у табели. Ознаке у табели
дате су према блок шеми организације сет-асоцијативне меморије.
*) Из генерисане адресе број групе (А8 - А15) пореди се преко
TGI0 - TGI6 са садржајем асоцијативне меморије (у оквиру
одређеног сета). На сегменту где је нађена подударност сигнал М
добија активну вредност ("1"). Ако је нађени блок код кога је
постигнута подударност валидан (validity - V = 1), одговарајући улаз
у кодер добија активну вредност ("1"). Могуће је да само један од 4
улаза буде активан. Кодирањем 4 улазна сигнала добијају се 2 бита
адресе нађеног блока у кеш меморији.

You might also like