Кэш-память
Определение: Кэш-память — это высокоскоростная память произвольного доступа, используемая процессором компьютера для временного хранения информации.
Кэш-память — это высокоскоростная память произвольного доступа, используемая процессором компьютера для временного хранения информации. Она увеличивает производительность, поскольку хранит наиболее часто используемые данные и команды «ближе» к процессору, откуда их можно быстрее получить
Кэш-память напрямую влияет на скорость вычислений и помогает процессору работать с более равномерной загрузкой. Представьте себе массив информации, используемой в вашем офисе. Небольшие объемы информации, необходимой в первую очередь, скажем список телефонов подразделений, висят на стене над вашим столом. Точно так же вы храните под рукой информацию по текущим проектам. Реже используемые справочники, к примеру, городская телефонная книга, лежат на полке, рядом с рабочим столом. Литература, к которой вы обращаетесь совсем редко, занимает полки книжного шкафа.
Компьютеры хранят данные в аналогичной иерархии. Когда приложение начинает работать, данные и команды переносятся с медленного жесткого диска в оперативную память произвольного доступа (Dynamic Random Access Memory — DRAM), откуда процессор может быстро их получить. Оперативная память выполняет роль кэша для жесткого диска.
Уровень за уровнем
Хотя оперативная память намного быстрее диска, тем не менее и она не успевает за потребностями процессора. Поэтому данные, которые требуются часто, переносятся на следующий уровень быстрой памяти, называемой кэш-памятью второго уровня. Она может располагаться на отдельной высокоскоростной микросхеме статической памяти (SRAM), установленной в непосредственной близости от процессора (в новых процессорах кэш-память второго уровня интегрирована непосредственно в микросхему процессора.
На более высоком уровне информация, используемая чаще всего (скажем, команды в многократно выполняемом цикле), хранится в специальной секции процессора, называемой кэш-памятью первого уровня. Это самая быстрая память.
Процессор Pentium III компании Intel имеет кэш-память первого уровня емкостью 32 Кбайт на микросхеме процессора и либо кэш-память второго уровня емкостью 256 Кбайт на микросхеме, либо кэш-память второго уровня емкостью 512 Кбайт, не интегрированную с процессором.
Когда процессору нужно выполнить команду, он сначала анализирует состояние своих регистров данных. Если необходимых данных в регистрах нет, он обращается к кэш-памяти первого уровня, а затем — к кэш-памяти второго уровня. Если данных нет ни в одной кэш-памяти, процессор обращается к оперативной памяти. И только в том случае, если нужных данных нет и там, он считывает данные с жесткого диска.
Когда процессор обнаруживает данные в одном из кэшей, это называют «попаданием»; неудачу называют «промахом». Каждый промах вызывает задержку, поскольку процессор будет пытаться обнаружить данные на другом, более медленном уровне. В хорошо спроектированных системах с программными алгоритмами, которые выполняют предварительную выборку данных до того, как они потребуются, процент «попаданий» может достигать 90.
Для процессоров старшего класса на получение информации из кэш-памяти первого уровня может уйти от одного до трех тактов, а процессор в это время ждет и ничего полезного не делает. Скорость доступа к данным из кэш-памяти второго уровня, размещаемой на процессорной плате, составляет от 6 до 12 циклов, а в случае с внешней кэш-памятью второго уровня — десятки или даже сотни циклов.
Кэш-память для серверов даже более важна, чем для настольных ПК, поскольку серверы поддерживают между процессором и памятью весьма высокий уровень трафика, генерируемого клиентскими транзакциями. В 1991 году Intel превратила ПК на базе процессора 80486 с тактовой частотой 50 МГц в сервер, добавив на процессорную плату кэш с тактовой частотой 50 МГц. Хотя шина, связывающая процессор и память, работала с частотой всего 25 МГц, такая кэш-память позволила многие программы во время работы полностью размещать в процессоре 486 с тактовой частотой 50 МГц.
Иерархическая организация памяти помогает компенсировать разрыв между скоростями процессоров, ежегодно увеличивающимися примерно на 50% в год, и скоростями доступа к DRAM, которые растут лишь на 5%. Как считает Джон Шен, профессор Университета Карнеги-Меллона, по мере усиления этого диссонанса производители аппаратного обеспечения добавят третий, а возможно и четвертый уровень кэш-памяти.
Действительно, уже в этом году Intel намерена представить кэш-память третьего уровня в своих 64-разрядных процессорах Itanium. Кэш емкостью 2 или 4 Мбайт будет связан с процессором специальной шиной, тактовая частота которой совпадает с частотой процессора.
IBM также разработала собственную кэш-память третьего уровня для 32- и 64-разрядных ПК-серверов Netfinity. По словам Тома Бредикича, директора по вопросам архитектуры и технологий Netfinity, сначала кэш будет размещаться на микросхеме контроллера памяти, выпуск которой начнется к концу следующего года.
Кэш-память третьего уровня корпорации IBM станет общесистемным кэшем, куда смогут обращаться от 4 до 16 процессоров сервера. С кэш-памятью третьего уровня Intel сможет работать только тот процессор, к которому она подключена, но представители IBM подчеркнули, что их кэш третьего уровня способен увеличить пропускную способность всей системы. Бредикич отметил, что новая кэш-память производства IBM также поможет реализовать компьютерные системы высокой готовности, необходимые для электронной коммерции, поскольку с ее помощью можно будет менять модули основной памяти и выполнять модернизацию, не прерывая работу системы.
Больше — не всегда лучше
Частота промахов при обращении к кэш-памяти может быть значительно снижена за счет увеличения емкости кэша. Но большая кэш-память требует больше энергии, генерирует больше тепла и увеличивает число бракованных микросхем при производстве.
Один из способов обойти эти трудности — передача логики управления кэш-памятью от аппаратного обеспечения к программному.
«Компилятор потенциально в состоянии анализировать поведение программы и генерировать команды по переносу данных между уровнями памяти», — отметил Шен.
Управляемая программным образом кэш-память сейчас существует лишь в исследовательских лабораториях. Возможные трудности связаны с тем, что придется переписывать компиляторы и перекомпилировать унаследованный код для всех процессоров нового поколения.
Где мои данные?
Когда процессору требуются данные, он сначала анализирует содержимое своих регистров данных. Если данных там нет, процессор смотрит, не лежат ли они в ближайшей к нему кэш-памяти первого уровня. Если и там нет, то следующее обращение происходит к кэш-памяти второго уровня. Если процессор не находит данных в кэше, он проверяет оперативную память. И здесь нет? Тогда процессор посылает запрос к диску. Время идет, а процессор ничего полезного не делает.
Кэш процессора
Современный процессор обладает несколькими основными уровнями кэш-памяти, нередко называемыми сверхоперативной памятью. На кристалле находится несколько аппаратных модулей. Самым меньшим по размеру является Cache Level 1, объем которого способен варьироваться от 32 до 64 Кб в зависимости от процессора. L2 обладает повышенной емкостью — от 128 Кб до 12 Мб. L3 считается самым объемным (до 40 Мб) и самым медленным.
Кэш процессора
Сверхоперативная память необходима для хранения часто используемой информации, поступающей из ОЗУ. Сегодня производители устанавливают больше трех уровней кэширования для обеспечения производительной работы компьютера. Например, компания Intel смогла реализовать дополнительный уровень кэша 0 для краткосрочного хранения расшифрованных команд. В производительных ЦП встречается сверхоперативная память 4 уровня, расположенная в отдельной микросхеме.
Что это такое — «кэш L1, L2, L3»?
- L1 — это самый шустрый кэш процессора. В нем сохраняются те инструкции, которые м огут понадобиться процессору для работы программы в любую секунду.
- L2 — это уже не такой шустрый кэш, как L1, однако он существенно превосходит его по объему. В данном кэше сохраняются инструкции, которые м огут понадобиться процессору для работы программы в обозримом будущем.
- L3 — это самый медлительный и самый масштабный по объему кэш процессора. Этот тип кэша содержит в себе сведения, которые вряд ли понадобятся процессору в ближайшее время.
- Попадание в кэш — это когда процессор находит нужные инструкции в каком-либо своем кэше: L1, L2, L3.
- Задержка — это время , необходимое процессору на поиск нужной инструкции в своем кэше. В L1 самая минимальная задержка, в L2 — больше, в L3 — еще больше , и дальше по иерархии.
Исходя из всего написанного выше , можно заключить, что кэш нужен для того , чтобы ускорить взаимодействие между процессором и основной памятью. От скорости такого взаимодействия напрямую зависит общая производительность компьютера.
Именно поэтому многие компании процессоров улучшают архитектуру своих устройств и увеличивают объем к э ша в процессоре, чтобы как можно больше было попаданий в к э ш и чтобы уменьшить время задержек. По статистик е, средний процент попаданий в к э ш в современном процессоре составляет 94-96%. Чтобы увеличить этот процент , многие компании идут даже на эксперименты, например , компания Intel в один модельный ряд своих процессоров внедрила к э ш L4, но все это пока так и осталось на уровне эксперимента.
Уровни кэш-память
После понимания, что такое кэш-память, давайте посмотрим, сколько существует типов или уровней кеш-памяти.
Есть 4 возможных уровня (L), и они организованы иерархически:
- L1 или кэш первого уровня. Он является внутренним по отношению к процессору и часто разделяется на кэш данных и кэш инструкций.
- L2 или кэш второго уровня. Он может быть как внутренним, так и внешним, и не различает данные и инструкции.
- L3 или кэш третьего уровня. Он может быть как внутренним, так и внешним, но может вовсе отсутствовать. Он не различает данных и инструкций.
Влияние на скорость работы
Размер кэш памяти влияет на скорость работы программ, но почти всегда этот прирост незначителен за счет массы других факторов. Например, если производитель вдруг увеличит у конкретной модели процессора кэш L3 с 4 МБ до 8 МБ, то в лучшем случае, при выполнении некоторых приложений, получим прирост производительности на 10%. А при обычной работе это будет всего около 2%.
Таким образом, можно сделать вывод, что ориентироваться на объем кэш памяти при покупке процессора стоит в последнюю очередь. Хотя прогресс не стоит на месте и появляются новые идеи в устранении задержек при работе с данными. Например, компания Intel уже провела ряд экспериментов по внедрению кэша 4 уровня и останавливаться на этом не собирается.