Иерархия памяти в компьютере
Кэш-память Процессоры работают быстрее чем память! При обращении процессора к памяти из-за разницы в скорости работы процессору приходится ждать. У этой проблемы существует два способа решения: 1) начать считывать команды заранее. Проблема: если какая-либо команда захочет использовать это слово, то процессор должен простаивать. 2) сконструировать машину, которая не приостанавливает работу, но следит, чтобы компиляторы не использовали слова, до того как они считаются из памяти. Проблема – слишком сложно! Быструю память можно сделать! Но для это она должна быть в одной микросхеме с процессором (это не всегда так, но наиболее близко к истине). Следствие – очень дорого! Промежуточное решение - это сочетание технологий с использованием маленькой и быстрой памяти с большой и медленной. Маленькая память с большой скоростью работы называется кэш-памятью.
Что хранится в кэш-памяти? В ней находятся слова, которые чаще всего используются. Если процессору нужно какое-нибудь слово он сначала обращается к кэш-памяти и только, если и там его нет, он обращается к основной памяти. Если значительная часть слов лежит в кэш-памяти, то скорость значительно возрастает!
Принцип локальности Большинство программ вызывают команды из последовательных участков памяти, кроме того в циклах также обычно используется один и тот же кусок памяти. Свойство программ, что при последовательных отсылках к памяти в течении некоторого промежутка времени они используют только ее небольшой кусок, называется принципом локальности. Он и составляет основу всех систем кэш-памяти.
Подсчитаем выигрыш
Немного об организации кэш-памяти Загрузка в кэш-память идет сразу строками, т.е. вся кэш память поделена на некоторые куски, большие машинного слова. При необходимости загрузить в кэш память слово из основной памяти загружается весь участок в котором это слово находится, по размеру совпадающий со строчкой кэш-памяти. В современных машинах могут разделять кэш- память для данных и для команд. Также могут быть предусмотрены системы с несколькими уровнями кэш-памяти.
Кэш-память видео
Кэш центрального процессора разделён на несколько уровней. Для универсальных процессоров до 3. Самой быстрой памятью является кэш первого уровня L1-cache. L1 кэш работает на частоте процессора, и, в общем случае, обращение к нему может производиться каждый такт (зачастую является возможным выполнять даже несколько чтений/записей одновременно). Латентность доступа обычно равна 24 тактам ядра. Объём обычно невелик не более 128 КБ.такт Латентность Вторым по быстродействию является L2-cache кэш второго уровня. В современных многоядерных процессорах кэш второго уровня, находясь на том же кристалле, является памятью раздельного пользования при общем объёме кэша в 8 МБ на каждое ядро приходится по 2 Мб. Обычно латентность L2 кэша, расположенного на кристалле ядра, составляет от 8 до 20 тактов ядра. Кэш третьего уровня наименее быстродействующий и обычно расположен отдельно от ядра ЦП, но он может быть очень внушительного размера более 32 МБ. L3 кэш медленнее предыдущих кэшей, но всё равно значительно быстрее, чем оперативная память. В многопроцессорных системах находится в общем пользовании.