апаратних засобів, на яких здійснюється програмна реалізація механізму когерентності.
1.2.1. Однопроцесорний підхід
Створення ієрархічної багаторівневої пам'яті, пересилає блоки програм і даних між рівнями пам'яті за час, поки попередні блоки обробляються процесором, дозволяє істотно скоротити простої процесора в очікуванні даних. При цьому ефект зменшення часу доступу в пам'ять буде тим більше, чим більше час обробки даних у буферній пам'яті в порівнянні з часом пересилання між буферної і основний пам'яттю. Це досягається при локальності оброблюваних даних, коли процесор багаторазово використовує одні й ті ж дані для вироблення деякого результату. p> У зв'язку з тим, що локально оброблювані дані можуть виникати в динаміці обчислень і не бути сконцентрованими в одній області при статичному розміщенні в основній пам'яті, буферну пам'ять організують як асоціативну, в якій дані містяться в сукупності з їх адресою в основній пам'яті. Така буферна пам'ять отримала назву кеш-пам'яті. Кеш-пам'ять дозволяє гнучко погоджувати структури даних, необхідні в динаміці обчислень, зі статичними структурами даних основної пам'яті.
Типова сучасна ієрархія пам'ятей для однопроцесорних НД має наступну структуру:
• регістри 64 - 256 слів з часом доступу 1 такт процесора;
• кеш 1 рівня - 8к слів з часом доступу 1-2 такту;
• кеш 2 рівня - 256К слів з часом доступу 3-5 тактів;
• основна пам'ять - до 4 Гігаслов з часом доступу 12-55 тактів. Кеш має сукупність рядків (cache-lines), кожна з яких складається з фіксованої кількості адресованих одиниць пам'яті (байтів, слів) з послідовними адресами. Типовий розмір рядки:
16 , 32, 64, 128, 256 байтів. p> Найбільш часто використовуються три способи організації кеш-пам'яті, що відрізняються обсягом апаратури, необхідної для їх реалізації:
Це, так звані, кеш-пам'ять з прямим відображенням (direct-mapped, cache), частково асоціативна кеш-пам'ять (set-associative cache) і асоціативна кеш-пам'ять (Fully associative cache). p> Реалізація механізму когерентності найчастіше здійснюється з використанням відстеження (snooping) запитів на шині, яка зв'язує процесор, пам'ять і інтерфейс введення/виведення. Контролер кеша відстежує адреси пам'яті, що видаються процесором, і якщо адреса відповідає даним, що містяться в одній з рядків кеша, то зазначається "попадання в кеш", і дані з кешу направляються в процесор. Якщо даних в кеші не чиниться, то фіксується "промах" і ініціюються дії з доставки в кеш з пам'яті необхідної рядка. У ряді процесорів, що виконують одночасно сукупність команд, допускається кілька промахів, перш ніж буде запущений механізм заміни рядків.
1.2.2. Багатопроцесорний підхід
У сучасних мікропроцесорах, використовуваних для побудови мультипроцесорних систе...