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

Кеш мемориј a

  • Upload
    geneva

  • View
    34

  • Download
    0

Embed Size (px)

DESCRIPTION

Кеш мемориј a. Приципи рада кеш меморија Величина кеша Функције пресликавања Алгоритми замене Политике уписа Величина линије кеша Број кеш меморија. Пренос речи. Пренос блока. Главна меморија. CPU. Кеш. Сл. 1. Кеш и главна меморија. Принципи рада кеш меморије. - PowerPoint PPT Presentation

Citation preview

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).

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