Download ppt - Кеш мемориј a

Transcript
Page 1: Кеш мемориј a

Кеш меморијa

Приципи рада кеш меморијаВеличина кешаФункције пресликавањаАлгоритми заменеПолитике уписаВеличина линије кешаБрој кеш меморија

Page 2: Кеш мемориј a

Принципи рада кеш меморије Кеш (скривена) меморија је релативно

мала и брза меморија између процесора и велике, али релативно споре главне меморије.

CPU Кеш Главна меморија

Пренос речи Пренос блока

Сл. 1. Кеш и главна меморија.

Page 3: Кеш мемориј a

Принципи рада кеш меморије Кеш садржи копију дела главне меморије.

Када процесор покушава да прочита реч из меморије он најпре проверава да ли је у кешу.

Page 4: Кеш мемориј a

Принципи рада кеш меморије Ако је то тачно (кеш погодак), тражена реч

се чита из кеша. Ако то није тачно (кеш промашај), блок

података (фиксираног броја речи) се учитава у кеш из главне меморије и потом предаје процесору.

Page 5: Кеш мемориј a

Принципи рада кеш меморије Због локалности референце велика је

вероватноћа да ће и будуће меморијске референце бити из истог блока података.

Page 6: Кеш мемориј a

Принципи рада кеш меморије Ако главна меморија има 2n речи и ако су

блокови фиксне дужине од K речи, онда је њихов број M=2n/K.

Кеш се састоји од C линија (C<<M) од по K речи.

Свака линија садржи поље ТАГ које идентификује блок из меморије и обични је део меморијске адресе.

Page 7: Кеш мемориј a

Принципи рада кеш меморије

......

Блок (K речи)

Блок

Дужина речи

Меморијске адресе

0123

2n-1

Дужина блока (K речи)

Број линије

012

C - 1

Таг Блок

Сл. 2. Структура кеш меморије и главне меморије.

Page 8: Кеш мемориј a

Принципи рада кеш меморијеПочетак

Прихвати адресу RA од CPU-a

Да ли је блок који садржи RA у кешу?

Добави реч RA и испоручи је CPU-у

Додели линију кеша том блоку

Приступи блоку главнемеморије који садржи RA

Испоручи реч RA CPU-у

Напуни линију кешатим блоком

Крај

Сл. 3. Операција читања кеша.

Page 9: Кеш мемориј a

Принципи рада кеш меморије

Процесор Кеш

Адресе

Подаци

Управљање Управљање

Бафер адреса

Бафер података

Сис

тем

ска

маг

истр

ала

Сл. 4. Типична организација кеша.

Page 10: Кеш мемориј a

Величина кеша

Пожељно је да величина кеша буде довољно мала да укупна цена по биту меморијског система буде блиска цени главне меморије.

С друге стране, кеш треба да буде довољно велики тако да ефективно време приступа за читав меморијски систем буде блиско времену приступа кеш меморији.

Page 11: Кеш мемориј a

Величина кеша

Преостали мотиви за мањи капацитет кеш меморије: Са порастом кеша расте и логика за

адресирање кеша. Расположиви чипови и матичне плоче

лимитирају величину кеша. Рад кеша остељив је на природу меморијских

референци и није могуће одредити оптималну величину.

Page 12: Кеш мемориј a

Величина кешаПроцесор Тип Год. пр. L1 кеш1 L2 кеш L3 кеш

IBM 360/85 Mainframe 1968 16-32 kB - -

PDP-11/70 Mинирачунар 1975 1kB - -

VAX 11/780 Минирачунар 1978 16kB - -

IBM 3033 Mainframe 1978 64kB - -

IBM 3090 Mainframe 1985 128-256kB - -

Intel 80486 PC 1989 8kB - -

Pentium PC 1993 8kB/8kB 256kB-512kB -

PowerPC 601 PC 1993 32kB - -

PowerPC 602 PC 1996 32kB/32kB - -

PowerPC G4 PC/сервер 1999 32kB/32kB 256kB-1MB 2MB

IBM S/390 G4 Mainframe 1997 32kB 256kB 2MB

IBM S/390 G6 Mainframe 1999 256kB 8MB -

Pentium 4 PC/сервер 2000 8kB/8kB 256kB -

IBM SP High-end сервер/суперрачунар 2001 64kB/32kB 8MB -

CRAY MTA2 PC/сервер 2001 16kB/16kB 96kB 4MB

Itanium PC/сервер 2001 16kB/16kB 96kB 4MB

SGI Origin 2001 High-end сервер 2001 32kB/32kB 4MB -

1Две вредности указују на кеш за инструкције и кеш за податке2Оба кеша су за инструкције; нема кеша за податке

Page 13: Кеш мемориј a

Функције пресликавања

Како постоји мање кеш линија него блокова у меморији потребан је алгоритам за пресликавање меморијских блокова у линије кеша.

Даље је потребно одредити који меморијски блок тренутно заузима неку линију кеша.

Page 14: Кеш мемориј a

Функције пресликавања

Избор функција пресликавања диктира организацију кеша. Користе се три технике: Директно пресликавање. Асоцијативно пресликавање. Скупно-асоцијативно пресликавање.

Page 15: Кеш мемориј a

Функције пресликавања У сва три случаја, примера ради,

претпоставићемо да је капацитет кеша 64kB, као и да се подаци преносе између главне и кеш меморије у блоковима од по 4B.

То значи да је кеш организован у 16k=214 линија од по 4B.

Page 16: Кеш мемориј a

Функције пресликавања На располагању је главна меморија

капацитета 16MB где се сваки од бајтова може адресирати 24-битном адресом (224=16М).

Page 17: Кеш мемориј a

Функције пресликавања

Директно пресликавање је најједноставнија техника где се сваки блок из главне меморије пресликава у јединствену линију кеша.

Page 18: Кеш мемориј a

Функције пресликавања

Пресликавање је изражено као

i = j mod m

где је

i – број линије кеша

j – број блока у главној меморији

m – број линија у кешу

Page 19: Кеш мемориј a

Функције пресликавања

Једностава имплементација. Свака меморијска адреса састоји се од три

поља. Најнижих w битова идентификују јединствену

реч или бајт у оквиру меморијског блока.

Page 20: Кеш мемориј a

Функције пресликавања

Преосталих s битова специфицира један од 2s блокова у меморији.

Логика кеша интерпретира ових s битова као таг од s-r битова (највеће тежине) и поље линије од r битова. Ово поље идентификује једну од m=2r линија кеша.

Page 21: Кеш мемориј a

Функције пресликавања

Сл. 5. Организација кеша са директним пресликавањем.

Page 22: Кеш мемориј a

Функције пресликавања

Дужина адресе = (s+w) битова. Број адресибилних јединица = 2s+w. Величина блока = величина линије = 2w. Број блокова у главној меморији = 2s+w/ 2w= 2s. Број линија у кешу = m = 2r . Величина поља таг = (s-r) битова.

Page 23: Кеш мемориј a

Функције пресликавања

Ефекат пресликавања је да се линијама додељују блокови као у табели.

Линија кеша Додељују јој се блокови главне меморије

0 0, m, 2m, …, 2s-m

1 1, m + 1, 2m + 1, …, 2s - m + 1...

...

m-1 m - 1, 2m - 1, 3m - 1, …, 2s – 1

Page 24: Кеш мемориј a

Функције пресликавања

За наш пример пресликавање даје следеће.

Линија кеша Почетна адреса блока

0 000000, 010000, …, FF0000

1 000004, 010004, …, FF0004...

...

214 - 1 00FFFC, 01FFFC, …, FFFFFC

Очигледно су вредности тагова редом 00, 01, ..., FF.

Page 25: Кеш мемориј a

Функције пресликавања

Сл. 6. Пример директног пресликавања.

Page 26: Кеш мемориј a

Функције пресликавања Директно пресликавање је једноставна и

јефтина техника за имплементацију. Главни недостатак је постојање

фиксираних локација за сваки блок. Ако програм понавља узастопно

референцирање речи из два различита блока који се пресликавају у исту линију, онда се ти блокови стално смењују у истој линији и фактор поготка је низак (појава позната као trashing – батинање).

Page 27: Кеш мемориј a

Функције пресликавања Асоцијативно пресликавање превазилази

недостатак директног тако што дозвољава да се сваки од меморијских блокова пуни у произвољну линију кеша.

Управљачка логика кеша интерпретира меморијску адресу као поље тага и поље речи.

Page 28: Кеш мемориј a

Функције пресликавања Поље тага идентификује блок из главне

меморије. Да би се одредило који блок је у кешу

управљачка логика мора симултано да испита таг сваке линије.

Page 29: Кеш мемориј a

Функције пресликавања

Сл. 7. Организација кеша са асоцијативним пресликавањем.

Page 30: Кеш мемориј a

Функције пресликавања

Дужина адресе = (s+w) битова. Број адресибилних јединица = 2s+w. Величина блока = величина линије = 2w. Број блокова у главној меморији = 2s+w/ 2w=

2s. Број линија у кешу = неодређен. Величина поља таг = s битова.

Page 31: Кеш мемориј a

Функције пресликавања

Сл. 8. Пример асоцијативног пресликавања.

Page 32: Кеш мемориј a

Функције пресликавања

Недостатак је сложеност кола потребних да се симултано испитају тагови у свим линијама кеша.

Добра страна је у флексибилности коју имамо код замене блока.

Page 33: Кеш мемориј a

Функције пресликавања

Скупно-асоцијативно пресликавање је компромис између претходна два приступа са тежњом да се искористе добре стране.

Page 34: Кеш мемориј a

Функције пресликавања

Кеш меморија се дели на v скупова од по k линија:

m = vki = j mod v

где је

i – број скупа у кешу

j – број блока у главној меморији

m – број линија у кеша

Page 35: Кеш мемориј a

Функције пресликавања

Овакво пресликавање се означава и као k-тоструко скупно-асоцијативно пресликавање.

Код овог пресликавања се блок Bj пресликава у произвољну линију из скупа i.

Page 36: Кеш мемориј a

Функције пресликавања

Управљачка логика интерпретира меморијску адресу као три поља: таг, скуп и реч. d битова специфицира један од v=2d скупова. s битова поља таг и скуп специфицира један од 2s блокова из меморије.

Page 37: Кеш мемориј a

Функције пресликавања

Сл. 9. Организација k-тоструког скупно-асоцијативног кеша.

Page 38: Кеш мемориј a

Функције пресликавања Дужина адресе = (s+w) битова. Број адресибилних јединица = 2s+w. Величина блока = величина линије = 2w. Број блокова у главној меморији = 2s+w/ 2w=

2s. Број линија у скупу = k Број скупова = v=2d

Број линија у кешу = kv=k2d. Величина поља таг = (s-d) битова.

Page 39: Кеш мемориј a

Функције пресликавања

Сл. 10. Пример организације двоструког скупно-асоцијативног кеша.

Page 40: Кеш мемориј a

Алгоритми замене

Када се нови блок учитава у кеш, један од постојећих блокова се мора заменити.

Код директног пресликавања постоји само једна могућа линија за сваки од блокова!

За асоцијативно и скупно-асоцијативно пресликавање потребан је одговарајући алгоритам замене.

Да би се постигле веће брзине рада такви алгоритми се имплементирају хардверски.

Page 41: Кеш мемориј a

Алгоритми замене

У пракси се користе: LRU (Least Recently Used). FIFO (First In First Out) LFU (Least Frequently Used)

Page 42: Кеш мемориј a

Политика уписа

Пре него се неки блок у кешу замени новим од значаја је да ли је он пре тога измењен.

Ако није био модификован једноставно се преко њега уписује нови блок.

Ако је блок модификован, он мора и у главној меморији да се ажурира.

Page 43: Кеш мемориј a

Политика уписа

Срећемо се са два проблема: Могуће је да меморији приступа више од једног

уређаја (нпр. У/И модул може да обавља DMA). Ако је реч измењена само у кешу, онда она у меморији није ваљана и обрнуто.

Још сложенији проблем се јавља ако је више процесора прикључено на исту меморију а сваки има свој кеш.

Page 44: Кеш мемориј a

Политика уписа

Различите технике решавају ове проблеме паравећи компромис између цене и перформансе. Write through: Операција уписа врши се и у

меморији и у кешу што обезбеђује да је реч у меморији увек ваљана.

Write back: Минимизира упис у меморију тако што се упис врши само у кеш а свакој кеш линији придружује се бит који говори о томе да ли је дотични блок у кешу модификован.

Page 45: Кеш мемориј a

Величина линија кеша

Са порастом величине блока треба да расте и фактор поготка због принципа локалности.

Међутим, почев од неких вредности величине блока/кеш линије овај фактор поготка опада!

Page 46: Кеш мемориј a

Величина линија кеша

Разлози су следећи: Већи блокови смањују број блокова у кешу.

Осим тога, преко блокова се уписују нови убрзо по њиховом учитавању.

Како величина блока расте, свака додатна реч у блоку је даља од тражене те је мања вероватноћа да ће и она бити потребна.

Обично је величина блока/линије 8-32В а код HPC 64-128В.

Page 47: Кеш мемориј a

Број кеш меморија Када је концепт кеш меморије уведен

типични системи имали су само по један кеш.

У новије време уобичајено је коришћење вишеструких кеш меморија.

Page 48: Кеш мемориј a

Број кеш меморија Са порастом густине интегрисаних кола

омогућен је on-chip кеш. Поставља се питање када је off-chip кеш

потребан. Резултујућа организација је двонивовски кеш: L1 (on-chip) i L2 (off-chip).

Page 49: Кеш мемориј a

Број кеш меморија У почетку се on-chip кеш користио и за

податке и за инструкције, али је у новије време постало уобичајено да се овај кеш подели на два посебна.

Предности јединственог кеша су: За дату величину кеша постиже се већи

фактор поготка. Једноставније је пројектовање и

имплементација.

Page 50: Кеш мемориј a

Број кеш меморија И поред ових предности, у тренду је

дељење кеша, нарочито код суперскаларних машина (Pentium и PowerPC).

Главна предност подељеног кеша је елиминација надметања за кеш између степена за припрему/декодирање и степена за извршење инструкција.


Recommended