Похожие презентации:
Cache_Jad_Prezentatsiya_TUZETILGEN
1.
9-тақырып. Кэш-жад және жад иерархиясыМақсаты: жад деңгейлерінің өзара байланысын түсіну
Орындалу түрі: презентация және сызба
2.
Жоспары:1. Жад иерархиясының деңгейлері
2. L1, L2 және L3 кэштары
3. Кэш-жадтың өнімділікке әсері
Тапсырмалар:
• Жад иерархиясының сызбасын құру
• Кэш деңгейлерін салыстыру
• Кэшті қолданудың тиімділігін түсіндіру
3.
Жад иерархиясы дегеніміз не?• Компьютер жадын жылдамдық, көлем және құны бойынша ұйымдастыру тәсілі
• Негізгі принцип: жиі қолданылатын деректер - ең жылдам жадта
• Пирамида түрінде бейнеленеді:
Жоғарыда – өте жылдам, бірақ аз көлемді (регистр, кэш)
Төменде – баяу, бірақ үлкен көлемді (HDD, бұлт)
• Мақсат: өнімділік пен баға арасындағы тепе-теңдік
• CPU мен негізгі жад арасындағы жылдамдық айырмашылығын жоюға арналған
• Егер тек жылдам жад қолдансақ – өте қымбат, тек баяу жад – өте баяу
• Иерархия – оңтайлы шешім!
4.
1. Жад иерархиясының деңгейлеріЖоғарыдан төменге қарай:
1. Регистрлер – CPU ішінде, <1 нс, бірнеше КБ
2. L1 Кэш – ядро ішінде, ~1 нс, 32-64 КБ
3. L2 Кэш – ядро жанында, ~4-10 нс, 256КБ-1МБ
4. L3 Кэш – барлық ядроларға ортақ, ~15-40 нс, 4-32 МБ
5. Жедел жад (RAM) – 8-64 ГБ, ~100 нс
6. SSD – 256 ГБ-4 ТБ, ~0.1 мс
7. HDD / Бұлтты мұрағат – ТБ-ПБ, мс-секундтар
→ Төмен түскен сайын: баяу, бірақ арзан және үлкен
→ Жоғары көтерілген сайын: жылдам, бірақ қымбат
және аз
5.
Жад иерархиясының сызбасы – талдауСызбада екі маңызды заңдылық бар:
• Сол жақта: Жылдамдық төмендейді, Кідіріс (latency) артады
Регистр <1 нс → L1 ~1 нс → L3 ~15 нс → RAM ~100 нс → SSD 0.1 мс
• Оң жақта: Сыйымдылық артады, Бір биттің құны төмендейді
Кэш қымбат (SRAM), RAM орташа (DRAM), SSD/HDD арзан
• Неліктен иерархия керек?
- Тек жылдам жад → өте қымбат
- Тек баяу жад → өте баяу
- Иерархия → оңтайлы шешім!
• Дизайн мақсаты: өнімділік, құн, көлем балансы
6.
Кэш-жад (Cache Memory) дегеніміз не?• Кэш – процессор мен жедел жад арасындағы аралық жылдам жад
• Ағылш. cache – 'жасырын қор' деген мағына
• SRAM технологиясымен жасалады (6 транзистор)
• Жұмыс принципі:
1. CPU дерек сұрайды
2. Алдымен кэште бар-жоғын тексереді
3. Бар болса – Cache HIT (жылдам ~1 нс)
4. Жоқ болса – Cache MISS, RAM-нан алады (баяу ~100 нс)
• Локальділік принциптеріне негізделген:
- Уақытша: жақында қолданылған дерек қайта керек
- Кеңістіктік: көрші деректер де керек болады
7.
2. L1, L2 және L3 кэштері – Салыстыру8.
L1 Кэш – Бірінші деңгей (ең жылдам)• Ең жылдам және ең кіші кэш
• Көлемі: 32-64 КБ (L1i – инструкция, L1d – деректер)
• Жылдамдығы: ~1 нс, 1-2 такт
• Орналасуы: Ядроның ішінде, CPU-ға ең жақын
• Ерекшелігі: Әр ядроның жеке L1-і бар (private)
• Қызметі: Ең жиі қолданылатын 32-64 КБ деректі сақтайды
• Hit Rate: ~95% жағдайда L1-де табылады
• Технология: Ең қымбат SRAM
• Мысал: Intel Golden Cove – 80 КБ L1 (32+48)
9.
L2 Кэш – Екінші деңгей• Орташа деңгейлі кэш, L1-дің 'артқы қорғанысы'
• Көлемі: 256 КБ – 1 МБ (кейде 2 МБ-ға дейін)
• Жылдамдығы: ~3-10 нс, ~10 такт
• Орналасуы: Ядроның жанында, L1-ден сыртқары
• Ерекшелігі: Әр ядроға жеке, бірақ L1-ге қарағанда үлкен
• Қызметі:
- L1-де табылмаған дерек осында ізделеді
- L1-ден шығарылған (evicted) блоктарды сақтайды
• Инклюзивті / Эксклюзивті болуы мүмкін:
Intel – көбіне инклюзивті, AMD – эксклюзивті
• L2 жоқ болса, L1 miss бірден RAM-ға барар еді
10.
L3 Кэш – Үшінші деңгей (ортақ)• Ең үлкен және ортақ кэш
• Көлемі: 4 МБ – 32 МБ (серверлерде 100+ МБ)
• Жылдамдығы: ~10-40 нс, 40-70 такт
• Орналасуы: Барлық ядролардың сыртында, кристалда
• Ерекшелігі: SHARED – барлық ядроларға ортақ!
• Қызметі:
- Ядролар арасында дерек алмасуды жылдамдатады
- RAM-ға қатынауды азайтады
- Multi-core өнімділігін арттырады
• Мысал: Intel Core i7-14700 – 33 МБ L3
• AMD 3D V-Cache – 96 МБ+ L3
• L3 болмаса, ядролар бір-бірімен RAM арқылы сөйлесер еді (баяу)
11.
3. Кэш-жадтың өнімділікке әсеріКэш неге маңызды? CPU мен RAM арасындағы алшақтық!
• CPU: 5 ГГц = 0.2 нс бір такт
• RAM: ~100 нс = 500 такт күту!
Кэшсіз CPU уақытының 90% күтумен өтеді
• Кэшпен:
L1 hit – 1 нс (еш күту жоқ)
L2 hit – 4 нс (аз күту)
L3 hit – 15 нс (қолайлы)
RAM – 100 нс (тек 5% жағдайда)
• Нәтиже: Өнімділік 10-20 есе артады!
• Формула: T_avg = h1*t1 + (1-h1)[h2*t2 + (1-h2)[h3*t3 + ...]]
h – hit rate, t – access time
12.
Кэштi қолданудың тиімділігі – Hit / MissТиімділік көрсеткіштері:
• Hit Rate – кэште табылу ықтималдығы (90-98% болуы керек)
• Miss Rate = 1 - Hit Rate
• Miss Penalty – RAM-ға бару уақыты
Тиімділікті арттыру жолдары:
1. Локальділікті пайдалану: циклдерді оңтайландыру, массивті жол бойынша оқу
2. Блок өлшемін дұрыс таңдау (64 байт – стандарт)
3. Ассоциативтілікті арттыру (Direct → Set Associative)
4. Prefetching – алдын ала жүктеу
5. Кэш-достық код жазу (cache-friendly code)
Мысал: Матрицаны баған бойынша оқу баяу – кэш miss көп!
Жол бойынша оқу – жылдам
13.
Қорытынды• Жад иерархиясы – жылдамдық, көлем және құн арасындағы компромисс
• Кэш – осы иерархияның ең маңызды буыны:
L1: ең жылдам, жеке, 32-64 КБ
L2: орташа, жеке, 256КБ-1МБ
L3: баяу, ортақ, 4-32 МБ
• Кэштің арқасында процессор RAM-ды күтпейді
• Тиімді кэш – өнімділікті 10-20 есе арттырады
• Болашағы: L4 кэш (eDRAM), 3D-стектелген кэш (AMD 3D V-Cache 96 МБ+)
• Бағдарламашы үшін сабақ: cache-friendly код жазыңдар!
14.
Пайдаланылған әдебиеттер1. Patterson D., Hennessy J. – Computer Organization and Design
2. Таненбаум Э. – Архитектура компьютера, 6-шы басылым
3. Intel® 64 and IA-32 Architectures Optimization Manual
4. AMD – Software Optimization Guide
5. What Every Programmer Should Know About Memory – U. Drepper
Сызбалар:
• Жад иерархиясы пирамидасы
• L1/L2/L3 салыстыру диаграммасы
Рахмет!