Кэш-память

Время выполнения команд процессором, как правило, всегда существенно меньше времени выборки данных из оперативной памяти.

Такое несоответствие в скорости работы приводит к тому, что, когда процессор обращается к памяти, проходит несколько машинных циклов, прежде чем он получит запрошенное слово. Чем медленнее работает память, тем дольше процессору приходится ждать, (простой процессора).

В большей степени эта проблема не технологическая, а экономическая.

Технологически можно создать память, которая работает так же быстро, как процессор. Одна­ко ее приходится помещать прямо на микросхему процессора (поскольку инфор­мация через шину поступает существенно медленнее).

Размещение памяти большого объема на микросхеме процессора делает его больше и, следовательно, дороже, и даже если бы стоимость не имела значения, все равно существуют технологические ограничения на размеры создаваемых процессоров.

Таким образом, приходится выбирать между быстрой памятью небольшого объема и медленной памятью большого объема. (Мы, естественно, предпочли бы иметь быструю память большого объе­ма и к тому же дешевую.)

Однако существует способ, объединяющий небольшую и быструю память с большой и медленной памятью.

Это позволяет по разумной цене по­лучить память и с высокой скоростью работы, и с большой емкостью.

Память не­большого объема с высокой скоростью работы называется кэш-памятью.

В английском языке слово «cash получило значение «наличные (карманные) деньги, то есть то, чтo под рукой. А уже из него и образовался термин "кэш", который относят к сверхоперативной па­мяти.

Основная идея кэш-памяти проста: в ней находятся слова с данными, которые чаще все­го используются.

Если процессору нужно какое-нибудь слово, сначала он обра­щается к кэш-памяти. Только в том случае, если слова там нет (кэш-промах), он обращается к основной памяти. Если значительная часть слов находится в кэш-памяти, сред­нее время доступа значительно сокращается.

Таким образом, эффективность кэш-памяти определяется тем, какая часть слов находит­ся в кэш-памяти.

Известно, что программы не обращаются к памяти нау­гад. Если программе нужен доступ к адресу А то скорее всего после этого ей по­надобится доступ к адресу, расположенному поблизости от А.

Практически все команды обычной программы (за исключением команд перехода и вызова про­цедур) вызываются из последовательных областей памяти. Кроме того, большую часть времени программа тратит на циклы, когда ограниченный набор команд выполняется снова и снова.

Высокая вероятность последовательных обращений к ограниченному (локальному) объему памяти в течение неко­торого промежутка времени, назы­вается принципом локальности.

Этот принцип лежит в основе всех систем кэш-памяти.

Идея состоит в том, что когда определенное слово вызывается из памяти, оно вместе с соседними словами переносится в кэш-память, что позво­ляет при очередном запросе быстро обращаться к следующим словам.

 
 

Схема подключения процессора, кэш-памяти и основной памяти показана на рисунке.

Если слово считывается или записывается k раз, компьютеру требуется сделать 1 обращение к медленной основной памяти и k - 1 обращений к быстрой кэш-па­мяти. Чем больше k, тем выше общая производительность.

В некоторых системах обра­щение к основной памяти может начинаться параллельно с проверкой кэш-памяти, чтобы в случае кэш-промаха цикл обращения к основной памяти уже начался. Однако эта стратегия требует способности останавливать процесс обращения к основной памяти вслучае кэш-попадания, что усложняет разработ­ку подобного компьютера.

Основная память и кэш-память делятся на блоки фиксированного размера с учетом принципа локальности.

Блоки внутри кэш-памяти обычно называют строками кэша(cache lines). При кэш-промахе из основной памяти в кэш-память загружается вся строка, а не только необходимое слово.

Например, если строка состоит из 64 байт, обращение к адресу 260 влечет за собой загрузку в кэш-память всей строки (байты с 256 по 319) на случай, если через некоторое время понадобятся другие слова из этой строки.

Такой путь обращения к памяти более эффективен, чем вызов каждого слова по отдельности, потому что однократный вызов k слов происходит гораздо быстрее, чем вызов одного слова k раз.

Кэш-память очень важна для повышения производительности процессоров. Однако при этом возникают следующие вопросы:

  1. Какой объем кэш-памяти должен быть? Чем больше объем, тем лучше работает память, но тем дороже она стоит.
  2. Какой размер должен быть у строки кэш-памяти? Кэш-память объемом 16 Кбайт можно разделить на 1024 строки по 16 байт, или 2048 строк по 8 байт и т. д.
  3. Какое использовать правило для определения, какие именно слова должны нахо­дятся в данный момент в Кеш-памяти?
  4. Должны ли команды и данные находиться вместе в об­щей кэш-памяти?

Более простая (и дешевая) объединенная кэш-память (unified cache), в которой охраняться и данные и команды.

В настоящее время существует тенденция к использованию разделенной кэш-памяти (split cache), когда команды хранятся в одной кэш-памяти, а данные — в другой.

Такая архи­тектура также называется гарвардской (Harvard architecture), поскольку эта идея родилась в Гарвардском университете.

Разделенная кэш-память позволяет осуществлять параллельный доступ к командам и к данным, а объединенная — нет.

К тому же, поскольку коман­ды обычно не меняются во время выполнения программы, содержание кэша-ко­манд не приходится записывать обратно в основную память, в отличие от содержимого кэша-данных.

Какой использовать способ размещения блоков кэш-памяти? В настоящее время блок кэш-память может располагаться:

  • прямо на микросхеме процессора - кэш-память первого уровня,
  • не на самой микросхеме, но в корпусе процессора - кэш-память второго уровня
  • вне корпуса микросхемы процессора — кэш-память третьего уровня.







Дата добавления: 2015-07-24; просмотров: 643; ЗАКАЗАТЬ НАПИСАНИЕ РАБОТЫ


Поиск по сайту:

При помощи поиска вы сможете найти нужную вам информацию.

Поделитесь с друзьями:

Если вам перенёс пользу информационный материал, или помог в учебе – поделитесь этим сайтом с друзьями и знакомыми.
helpiks.org - Хелпикс.Орг - 2014-2022 год. Материал сайта представляется для ознакомительного и учебного использования. | Поддержка
Генерация страницы за: 0.007 сек.