Я знаю, що інструкції щодо завантаження в кеш-пам'ять збільшують загальну швидкість обробки. Чи відповідь на питання пов'язана з організацією та швидкістю?
Я знаю, що інструкції щодо завантаження в кеш-пам'ять збільшують загальну швидкість обробки. Чи відповідь на питання пов'язана з організацією та швидкістю?
Відповіді:
По-перше, "шматки" частини вашого питання ...
Зазвичай управління пам'яттю відбувається з патронами пам'яті. Немає сенсу керувати байтом пам'яті за байтом. Це тому, що для управління шматком пам'яті вам потрібна структура даних, яка містить інформацію про цей фрагмент пам'яті. Давайте подумаємо і скажемо, що ця структура даних становить 24 байти. Ви б не використовували 24-байтну структуру даних для управління 1 байтом пам'яті. Ви хочете "економію масштабу". Інакше ви отримуєте жахливо велику суму накладних витрат. Натомість ви одночасно керуєте 1 Кбайт / 32 Кбайт / 1 Мбіт /.
Отже, коли пам'ять переміщується навколо (наприклад, у файл підкачки), це робиться фрагментами, і цей самий метод застосовується до кешу.
Для цитування Вікіпедії: "Дані передаються між пам'яттю та кешем у блоках фіксованого розміру, званих кеш-лініями. Коли рядок кешу копіюється з пам'яті в кеш, створюється запис кешу".
Запис у кеш - це приклад структури даних, про яку я згадував раніше.
Пам’ятайте, що в міру того, як інструкції програми надходять у кеш, вони вводяться так само, як і вводяться дані. Отже, слова "дані передаються" вище також означають, що "інструкції передаються".
Перегляньте запис у Вікіпедії нижче. У ньому є більше інформації.
http://en.wikipedia.org/wiki/CPU_cache
======
А тепер більш загальна відповідь про кеш процесора.
В основному, прискорення відбувається, тому що, коли процесор отримує доступ до кешу, він отримує інструкції / дані МНОГО! швидше, ніж коли це доступ до основної пам'яті.
Ось приклад. Ви закодували цикл у програмі. При першому проході через цю секцію пам'ять буде внесена в кеш. Ви починаєте на початку циклу і врешті-решт дістаєтесь до нижньої частини циклу. Потім повернемося до вершини. Якщо припустити, що весь цикл поміщається в кеш-пам'ять (нормальний стан), то вдруге навколо цих інструкцій вже знаходяться в кеш-пам'яті, і для цього циклу більше не потрібно отримати набір інструкцій. Це дійсно прискорює справи. Після закінчення циклу він зрештою буде перезаписаний у кеш-пам'яті деяким іншим розділом програми, який потрібно виконати.
Те ж саме стосується даних. Якщо на якусь структуру / групу змінних / тощо часто посилаються або оновлюються, вона залишатиметься в кеші деякий період часу. Врешті-решт його простір у кеші даних буде надано якійсь іншій структурі / групі змінних / тощо, тому що програма починає часто отримувати доступ.