Download presentation
Presentation is loading. Please wait.
1
Кеш меморијa Приципи рада кеш меморија Величина кеша
Функције пресликавања Алгоритми замене Политике уписа Величина линије кеша Број кеш меморија
2
Принципи рада кеш меморије
Кеш (скривена) меморија је релативно мала и брза меморија између процесора и велике, али релативно споре главне меморије. CPU Кеш Главна меморија Пренос речи Пренос блока Сл. 1. Кеш и главна меморија.
3
Принципи рада кеш меморије
Кеш садржи копију дела главне меморије. Када процесор покушава да прочита реч из меморије он најпре проверава да ли је у кешу.
4
Принципи рада кеш меморије
Ако је то тачно (кеш погодак), тражена реч се чита из кеша. Ако то није тачно (кеш промашај), блок података (фиксираног броја речи) се учитава у кеш из главне меморије и потом предаје процесору.
5
Принципи рада кеш меморије
Због локалности референце велика је вероватноћа да ће и будуће меморијске референце бити из истог блока података.
6
Принципи рада кеш меморије
Ако главна меморија има 2n речи и ако су блокови фиксне дужине од K речи, онда је њихов број M=2n/K. Кеш се састоји од C линија (C<<M) од по K речи. Свака линија садржи поље ТАГ које идентификује блок из меморије и обични је део меморијске адресе.
7
Принципи рада кеш меморије
Меморијске адресе 1 2 3 2n-1 Број линије Таг Блок Блок (K речи) 1 2 C - 1 . . Блок Дужина блока (K речи) Дужина речи Сл. 2. Структура кеш меморије и главне меморије.
8
Принципи рада кеш меморије
Почетак Прихвати адресу RA од CPU-a Да ли је блок који садржи RA у кешу? Добави реч RA и испоручи је CPU-у Додели линију кеша том блоку Приступи блоку главне меморије који садржи RA Испоручи реч RA CPU-у Напуни линију кеша тим блоком Крај Сл. 3. Операција читања кеша.
9
Принципи рада кеш меморије
Процесор Адресе Бафер адреса Кеш Управљање Управљање Системска магистрала Бафер података Подаци Сл. 4. Типична организација кеша.
10
Величина кеша Пожељно је да величина кеша буде довољно мала да укупна цена по биту меморијског система буде блиска цени главне меморије. С друге стране, кеш треба да буде довољно велики тако да ефективно време приступа за читав меморијски систем буде блиско времену приступа кеш меморији.
11
Величина кеша Преостали мотиви за мањи капацитет кеш меморије:
Са порастом кеша расте и логика за адресирање кеша. Расположиви чипови и матичне плоче лимитирају величину кеша. Рад кеша остељив је на природу меморијских референци и није могуће одредити оптималну величину.
12
High-end сервер/суперрачунар
Величина кеша Процесор Тип Год. пр. 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 64kB IBM 3090 1985 kB Intel 80486 PC 1989 8kB Pentium 1993 8kB/8kB 256kB-512kB PowerPC 601 32kB PowerPC 602 1996 32kB/32kB PowerPC G4 PC/сервер 1999 256kB-1MB 2MB IBM S/390 G4 1997 256kB IBM S/390 G6 8MB Pentium 4 2000 IBM SP High-end сервер/суперрачунар 2001 64kB/32kB CRAY MTA2 16kB/16kB 96kB 4MB Itanium SGI Origin 2001 High-end сервер 1Две вредности указују на кеш за инструкције и кеш за податке 2Оба кеша су за инструкције; нема кеша за податке
13
Функције пресликавања
Како постоји мање кеш линија него блокова у меморији потребан је алгоритам за пресликавање меморијских блокова у линије кеша. Даље је потребно одредити који меморијски блок тренутно заузима неку линију кеша.
14
Функције пресликавања
Избор функција пресликавања диктира организацију кеша. Користе се три технике: Директно пресликавање. Асоцијативно пресликавање. Скупно-асоцијативно пресликавање.
15
Функције пресликавања
У сва три случаја, примера ради, претпоставићемо да је капацитет кеша 64kB, као и да се подаци преносе између главне и кеш меморије у блоковима од по 4B. То значи да је кеш организован у 16k=214 линија од по 4B.
16
Функције пресликавања
На располагању је главна меморија капацитета 16MB где се сваки од бајтова може адресирати 24-битном адресом (224=16М).
17
Функције пресликавања
Директно пресликавање је најједноставнија техника где се сваки блок из главне меморије пресликава у јединствену линију кеша.
18
Функције пресликавања
Пресликавање је изражено као i = j mod m где је i – број линије кеша j – број блока у главној меморији m – број линија у кешу
19
Функције пресликавања
Једностава имплементација. Свака меморијска адреса састоји се од три поља. Најнижих w битова идентификују јединствену реч или бајт у оквиру меморијског блока.
20
Функције пресликавања
Преосталих s битова специфицира један од 2s блокова у меморији. Логика кеша интерпретира ових s битова као таг од s-r битова (највеће тежине) и поље линије од r битова. Ово поље идентификује једну од m=2r линија кеша.
21
Функције пресликавања
Сл. 5. Организација кеша са директним пресликавањем.
22
Функције пресликавања
Дужина адресе = (s+w) битова. Број адресибилних јединица = 2s+w. Величина блока = величина линије = 2w. Број блокова у главној меморији = 2s+w/ 2w= 2s. Број линија у кешу = m = 2r . Величина поља таг = (s-r) битова.
23
Функције пресликавања
Ефекат пресликавања је да се линијама додељују блокови као у табели. Линија кеша Додељују јој се блокови главне меморије 0, m, 2m, …, 2s-m 1 1, m + 1, 2m + 1, …, 2s - m + 1 . m-1 m - 1, 2m - 1, 3m - 1, …, 2s – 1
24
Функције пресликавања
За наш пример пресликавање даје следеће. Линија кеша Почетна адреса блока 000000, , …, FF0000 1 000004, , …, FF0004 . 00FFFC, 01FFFC, …, FFFFFC Очигледно су вредности тагова редом 00, 01, ..., FF.
25
Функције пресликавања
Сл. 6. Пример директног пресликавања.
26
Функције пресликавања
Директно пресликавање је једноставна и јефтина техника за имплементацију. Главни недостатак је постојање фиксираних локација за сваки блок. Ако програм понавља узастопно референцирање речи из два различита блока који се пресликавају у исту линију, онда се ти блокови стално смењују у истој линији и фактор поготка је низак (појава позната као trashing – батинање).
27
Функције пресликавања
Асоцијативно пресликавање превазилази недостатак директног тако што дозвољава да се сваки од меморијских блокова пуни у произвољну линију кеша. Управљачка логика кеша интерпретира меморијску адресу као поље тага и поље речи.
28
Функције пресликавања
Поље тага идентификује блок из главне меморије. Да би се одредило који блок је у кешу управљачка логика мора симултано да испита таг сваке линије.
29
Функције пресликавања
Сл. 7. Организација кеша са асоцијативним пресликавањем.
30
Функције пресликавања
Дужина адресе = (s+w) битова. Број адресибилних јединица = 2s+w. Величина блока = величина линије = 2w. Број блокова у главној меморији = 2s+w/ 2w= 2s. Број линија у кешу = неодређен. Величина поља таг = s битова.
31
Функције пресликавања
Сл. 8. Пример асоцијативног пресликавања.
32
Функције пресликавања
Недостатак је сложеност кола потребних да се симултано испитају тагови у свим линијама кеша. Добра страна је у флексибилности коју имамо код замене блока.
33
Функције пресликавања
Скупно-асоцијативно пресликавање је компромис између претходна два приступа са тежњом да се искористе добре стране.
34
Функције пресликавања
Кеш меморија се дели на v скупова од по k линија: m = vk i = j mod v где је i – број скупа у кешу j – број блока у главној меморији m – број линија у кеша
35
Функције пресликавања
Овакво пресликавање се означава и као k-тоструко скупно-асоцијативно пресликавање. Код овог пресликавања се блок Bj пресликава у произвољну линију из скупа i.
36
Функције пресликавања
Управљачка логика интерпретира меморијску адресу као три поља: таг, скуп и реч. d битова специфицира један од v=2d скупова. s битова поља таг и скуп специфицира један од 2s блокова из меморије.
37
Функције пресликавања
Сл. 9. Организација k-тоструког скупно-асоцијативног кеша.
38
Функције пресликавања
Дужина адресе = (s+w) битова. Број адресибилних јединица = 2s+w. Величина блока = величина линије = 2w. Број блокова у главној меморији = 2s+w/ 2w= 2s. Број линија у скупу = k Број скупова = v=2d Број линија у кешу = kv=k2d. Величина поља таг = (s-d) битова.
39
Функције пресликавања
Сл. 10. Пример организације двоструког скупно-асоцијативног кеша.
40
Алгоритми замене Када се нови блок учитава у кеш, један од постојећих блокова се мора заменити. Код директног пресликавања постоји само једна могућа линија за сваки од блокова! За асоцијативно и скупно-асоцијативно пресликавање потребан је одговарајући алгоритам замене. Да би се постигле веће брзине рада такви алгоритми се имплементирају хардверски.
41
Алгоритми замене У пракси се користе: LRU (Least Recently Used).
FIFO (First In First Out) LFU (Least Frequently Used)
42
Политика уписа Пре него се неки блок у кешу замени новим од значаја је да ли је он пре тога измењен. Ако није био модификован једноставно се преко њега уписује нови блок. Ако је блок модификован, он мора и у главној меморији да се ажурира.
43
Политика уписа Срећемо се са два проблема:
Могуће је да меморији приступа више од једног уређаја (нпр. У/И модул може да обавља DMA). Ако је реч измењена само у кешу, онда она у меморији није ваљана и обрнуто. Још сложенији проблем се јавља ако је више процесора прикључено на исту меморију а сваки има свој кеш.
44
Политика уписа Различите технике решавају ове проблеме паравећи компромис између цене и перформансе. Write through: Операција уписа врши се и у меморији и у кешу што обезбеђује да је реч у меморији увек ваљана. Write back: Минимизира упис у меморију тако што се упис врши само у кеш а свакој кеш линији придружује се бит који говори о томе да ли је дотични блок у кешу модификован.
45
Величина линија кеша Са порастом величине блока треба да расте и фактор поготка због принципа локалности. Међутим, почев од неких вредности величине блока/кеш линије овај фактор поготка опада!
46
Величина линија кеша Разлози су следећи:
Већи блокови смањују број блокова у кешу. Осим тога, преко блокова се уписују нови убрзо по њиховом учитавању. Како величина блока расте, свака додатна реч у блоку је даља од тражене те је мања вероватноћа да ће и она бити потребна. Обично је величина блока/линије 8-32В а код HPC В.
47
Број кеш меморија Када је концепт кеш меморије уведен типични системи имали су само по један кеш. У новије време уобичајено је коришћење вишеструких кеш меморија.
48
Број кеш меморија Са порастом густине интегрисаних кола омогућен је on-chip кеш. Поставља се питање када је off-chip кеш потребан. Резултујућа организација је двонивовски кеш: L1 (on-chip) i L2 (off-chip).
49
Број кеш меморија У почетку се on-chip кеш користио и за податке и за инструкције, али је у новије време постало уобичајено да се овај кеш подели на два посебна. Предности јединственог кеша су: За дату величину кеша постиже се већи фактор поготка. Једноставније је пројектовање и имплементација.
50
Број кеш меморија И поред ових предности, у тренду је дељење кеша, нарочито код суперскаларних машина (Pentium и PowerPC). Главна предност подељеног кеша је елиминација надметања за кеш између степена за припрему/декодирање и степена за извршење инструкција.
Similar presentations
© 2024 SlidePlayer.com. Inc.
All rights reserved.