Сделай Сам Свою Работу на 5

Внутренний кэш процессора





Государственное образовательное учреждение высшего профессионального образования

Ивановский государственный химико-технологический

Университет

Кафедра Информатики и вычислительной техники

ПОЯСНИТЕЛЬНАЯ ЗАПИСКА

К КУРСОВОМУ ПРОЕКТУ

 

по дисциплине Архитектура ЭВМ__________________

_________________________________________________

Тема : Кэш - память

____________________

Студент Андреев А.Ю.

Курс 3 Группа 42

Руководитель Ястребцев О.Н.

Зав. кафедрой Бобков С.П.

Г. Иваново, 2008г.

Оглавление.

 

Теоретическая часть

 

· Введение ------------------------------------------------------------------------- 3

· Внутренний кэш процессора ------------------------------------------------ 5

· Внешний кэш процессора ---------------------------------------------------- 7

· Стратегия размещения. ------------------------------------------------------- 7

· Отображение секторов ОП в кэш-памяти. -------------------------------- 8

· Смешанная и разделенная кэш-память. ------------------------------------ 9

· Сводная информация по объемам, принципам организации и тактовым частотам кэш-памяти у процессоров от Intel и AMD. ------------------- 10

· Зачем увеличивать кэш? ------------------------------------------------------- 11



· Выводы. --------------------------------------------------------------------------- 12

 

2. Практическая часть.------------------------------------------------------------- 12

3. Заключение.------------------------------------------------------------------------- 22

4. Список используемой литературы.------------------------------------------- 23

 

Введение

 

Одним из важнейших устройств компьютера является память, или запоминающее устройство (ОЗУ). По определению, данном в книге "Информатика в понятиях и терминах", ОЗУ - "функциональная часть цифровой вычислительной машины, предназначенной для записи, хранения и выдачи информации, представленных в цифровом виде." Однако под это определение попадает как собственно память, так и внешние запоминающие устройства (типа накопителей на жестких и гибких дисках, магнитной ленты, CD-ROM), которые лучше отнести к устройствам ввода/вывода информации. Таким образом под компьютерной памятью в дальнейшем будет пониматься только "внутренняя память компьютера: ОЗУ, ПЗУ, кэш память и флэш-память".

Однако ОЗУ работает намного медленнее процессора. Другое дело - кэш. Очень быстрая и очень дорогая память. Но именно из-за дороговизны в компьютерной системе объем кэш составляет всего 0.1-1% от объема обычной ОЗУ. А также используются специальные алгоритмы работы материнской платы и процессора, обеспечивающие максимальную производительность при наличии встроенной кэш-памяти.



Существующая уже более 100 лет архитектура компьютера, предложенная еще Фон Нейманом, практически не претерпела изменения. Все также процессор окружает оперативная, постоянная и внешняя память. И все также оперативная память, являющаяся одной из скоростных элементов памяти внутри компьютера, не достигает по скорости процессор на несколько порядков. Естественно, что такой «тормоз» в виде одного из необходимых элементов компьютера не устраивал его создателей. Тем более, что в больших компьютерах уже давно существовало понятие кэш-памяти (cashe-memory), более быстрой, чем ОЗУ, но меньшей емкости. Было решено перенести ее архитектуру с БЭВМ на обычные персональные компьютеры.

В качестве элементной базы основной памяти в большинстве ЭВМ используются микросхемы динамических ОЗУ, на порядок уступающие по быстродействию центральному процессору. В результате, процессор вынужден простаивать несколько периодов тактовой частоты, пока информация из ИМС памяти установится на шине данных ЭВМ. Если же ОП выполнить на быстрых микросхемах статической памяти, стоимость ЭВМ возрастет весьма существенно. Экономически приемлемое решение этой проблемы возможно при использовании двухуровневой памяти, когда между основной памятью и процессором размещается небольшая, но быстродействующая буферная память или кэш-память. Вместе с основной памятью она входит в иерархическую структуру и ее действие эквивалентно быстрому доступу к основной памяти. Использование кэш-



памяти позволяет избежать полного заполнения всей машины быстрой RAM памятью. Обычно программа использует память какой-либо ограниченной области, храня нужную информацию в кэш-памяти, работа с которой позволяет процессору обходиться без всяких циклов ожидания. В больших универсальных ЭВМ, обычно используется кэш-память емкость 1-12 Мбайт, т.е. емкость кэш-память составляет порядка 1/100-1/1000 емкости основной памяти, а быстродействие в 5-10 раз выше быстродействия основной памяти. Выбор объема кэш-памяти – всегда компромисс между стоимостными показателями ( в сравнении с ОП ) и ее емкостью, которая должна быть достаточно большой, чтобы среднее время доступа в системе, состоящей из основной и кэш-памяти, определялось временем доступа к последней. Реальная эффективность использования кэш-памяти зависит от характера решаемых задач и невозможно определить заранее, какой объем ее будет действительно оптимальным. Не всякая кэш-память равнозначна. Большое значение имеет тот факт, как много информации может содержать кэш-память. Чем больше кэш-память, тем больше информации может быть в ней размещено, а, следовательно, тем больше вероятность, что нужный байт будет содержаться в этой быстрой памяти. Очевидно, что самый лучший вариант - это когда объём кэш-памяти соответствует объёму всей оперативной памяти. В этом случае вся остальная память становится не нужной. Крайне противоположная ситуация - 1 байт кэш-памяти - тоже не имеет практического значения, так как вероятность того, что нужная информация окажется в этом байте, стремится к нулю.

В процессе работы такой системы в буферную память копируются те

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

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

Принцип работы кэш-памяти заключается в следующем. Процессор редко использует весь объем ОЗУ практически одновременно. Скакать из одного угла памяти в другой, периодически пошвыриваясь по всему ее объему – это не лучший способ использования ресурсов компьютера. Зачастую все обращения процессора к памяти сосредоточены в небольшой области. Если данные из этой области как-либо аппаратно скопировать в кэш, а затем постоянно сверять кэш и ОЗУ на предмет целостности данных, то можно обеспечить режим работы, при котором процессор будет обращаться только к кэш-памяти, тратя на это значительно меньше ресурсов и времени, чем обычно.

Естественно, что весь объем ОЗУ скопировать в кэш нет возможности – такой объем кэш-памяти по цене сравнивается со стоимостью компьютера, а смысла уменьшать объем ОЗУ тоже нет. Было решено реализовать алгоритм работы процессора, кэш-памяти и ОЗУ аппаратно, чтобы не тратить ресурсы процессора.

 

Внутренний кэш процессора

 

Внутренне кэширование обращений к памяти применяется в процессорах, начиная с 486-го. С кэшированием связаны новые функции процессоров, биты регистров и внешние сигналы.

Процессоры 486 и Pentium имеют внутренний кэш первого уровня, Pentium Pro и Pentium II имеется и кэш второго уровня. Процессоры могут иметь как единый кэш инструкций и данных, так и общий. Выделенный кэш инструкций обычно используется только для чтения. Для внутреннего кэша обычно используется наборно-ассоциативная архитектура.

Строки в кэш-памяти выделяются только при чтении, политика записи первых процессоров 486 – только Write Through (сквозная запись) – полностью программно-прозрачная. Более поздние модификации 486-го и все старшие процессоры позволяют переключаться на политику Write Back (обратная запись).

Работу кэша рассмотрим на примере четырехканального наборно-ассоциативного кэша процессора 486. Кэш является несекторированным – каждый бит достоверности (Valid bit) относится к целой строке, так что строка не может являться “частично достоверной”.

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

Любой внутренний запрос процессора на обращение к памяти направляется на внутренний кэш. Теги четырех строк набора, который обслуживает данный адрес, сравниваются со старшими битами запрошенного физического адреса. Если адресуемая область представлена в строке кэш-памяти (случая попадания –cache hit), запрос на чтение обслуживается только кэш-памятью, не выходя на внешнюю шину. Запрос на запись модифицирует данную строку, и в зависимости от политики записи либо сразу выходит на внешнюю шину (при сквозной записи), либо несколько позже (при использовании алгоритма обратной записи).

В случае промаха (Cache Miss) запрос на запись направляется только на внешнюю шину, а запрос на чтение обслуживается сложнее. Если этот зарос относится к кэшируемой области памяти, выполняется цикл заполнения целой строки кэша – все 16 байт (32 для Pentium) читаются из оперативной памяти и помещаются в одну из строк кэша, обслуживающего данный адрес. Если затребованные данные не укладываются в одной строке, заполняется и соседняя. Заполнение строки процессор старается выполнить самым быстрым способом – пакетным циклом с 32-битными передачами (64-битными для Pentium и старше).

Внутренний запрос процессора на данные удовлетворяется сразу, как только затребованные данные считываются из ОЗУ – заполнение строки до конца может происходить параллельно с обработкой полученных данных. Если в наборе, который обслуживает данный адрес памяти, имеется свободная строка (с нулевым битом достоверности), заполнена будет она и для нее установится бит достоверности. Если свободных строк в наборе нет, будет замещена строка, к которой дольше всех не было обращений. Выбор строки для замещения выполняется на основе анализа бит LRU (Least Recently Used) по алгоритму “псевдо-LRU”. Эти биты (по три на каждый из наборов) модифицируются при каждом обращении к строке данного набора (кэш-попадании или замещении).

 

Таким образом, выделение и замещение строк выполнятся только кэш-промахов чтения, при промахах записи заполнение строк не производится. Если затребованная область памяти присутствует в строке внутреннего кэша, то он обслужит этот запрос. Управлять кэшированием можно только на этапе заполнения строк; кроме того, существует возможность их аннулирования – объявления недостоверными и очистка всей кэш-памяти.

Очистка внутренней кэш-памяти при сквозной записи (обнуление бит достоверности всех строк) осуществляется внешним сигналом FLUSH# за один такт системной шины (и, конечно же, по сигналу RESET). Кроме того, имеются инструкции аннулирования INVD и WBINVD. Инструкция INVD аннулирует строки внутреннего кэша без выгрузки модифицированных строк, поэтому ее неосторожное использование при включенной политике обратной записи может привести к нарушению целостности данных в иерархической памяти. Инструкция WBINVD предварительно выгружает модифицированные строки в основную память (при сквозной записи ее действие совпадает с INVD). При обратной записи очистка кэша подразумевает и выгрузку всех модифицированных строк в основную память. Для этого, естественно, может потребоваться и значительное число тактов системной шины, необходимых для проведения всех операций записи.

 

Аннулирование строк выполняется внешними схемами – оно необходимо в системах, у которых в оперативную память запись может производить не только один процессор, а и другие контроллеры шины – процессор или периферийные контроллеры. В этом случае требуются специальные средства для поддержания согласованности данных во всех ступенях памяти – в первичной и вторичной кэш-памяти и динамического ОЗУ. Если внешний (по отношению к рассматриваемому процессору) контроллер выполняет запись в память, процессору должен быть подан сигнал AHOLD. По этому сигналу процессор немедленно отдает управление шиной адреса A[31:4], на которой внешним контроллером устанавливается адрес памяти, сопровождаемый стробом EADS#. Если адресованная память присутствует в первичном кэше, процессор аннулирует строку – сбрасывает бит достоверности этой строки (она освобождается). Аннулирование строки процессор выполняет в любом состоянии.

 

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

 

Внешний кэш процессора

 

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

Внешняя кэш-память состоит из памяти данных, построенная на микросхемах SRAM, и контроллера кэша. В кэш-памяти хранится информация, копируемая из основной оперативной памяти. Каждый раз при обращении микропроцессора к памяти контроллер кэш-памяти проверяет наличие данных в кэше. Если эти данные в кэше есть (“попадание”), то микропроцессор получает данные из кэша. Если этих данных нет (“промах”), выполняется обычный цикл обращения к оперативной памяти DRAM.

Основным фактором, определяющим вероятность попадания, является емкость кэш-памяти. Как правило, при объеме кэша в 2 Кбайта вероятность попадания составляет от 50 до 60%. Поскольку размер кэш-памяти на современных компьютерах превышает 256 Кбайт, то вероятность попадания будет выше 90% (для компьютеров с объемом памяти ~ 256 Мбайт.)

 

Стратегия размещения.

 

На сложность этого механизма существенное влияние оказывает

стратегия размещения, определяющая, в какое место кэш-памяти

следует поместить каждый блок из основной памяти

В зависимости от способа размещения данных основной памяти в кэш-памяти

существует три типа кэш-памяти:

- кэш с прямым отображением (размещением);

- полностью ассоциативный кэш;

- множественный ассоциативный кэш или частично-ассоциативный.

Кэш с прямым отображением (размещением) является самым

простым типом буфера. Адрес памяти однозначно определяет строку

кэша, в которую будет помещен блок информации. При этом предполагается,

что оперативная память разбита на блоки и каждому такому

блоку в буфере отводится всего одна строка. Это простой и недорогой в

реализации способ отображения. Основной его недостаток – жесткое

закрепление за определенными блоками ОП одной строки в кэше. Поэтому, если программа поочередно обращается к словам из двух различных блоков, отображаемых на одну и ту же строку кэш-памяти, постоянно будет происходить обновление данной строки и вероятность попадания будет низкой. Кэш с полностью ассоциативным отображением позволяет преодолеть недостаток прямого, разрешая загрузку любого блока ОП в любую строку кэш-памяти. Логика управления выделяет в адресе ОП два поля: поле тега и поле слова. Поле тега совпадает с адресом блока ОП. Для проверки наличия копии блока в кэш-памяти, логика управления кэша должна одновременно проверить теги всех строк на совпадение с полем тега адреса. Ассоциативное отображение обеспечивает гибкость при выборе строки для вновь записываемого блока. Принципиальный недостаток этого способа – в необходимости использования дорогой ассоциативной памяти.

Множественно-ассоциативный тип или частично-ассоциативный тип

отображения – это один из возможных компромиссов, сочетающий достоинства прямого и ассоциативного способов. Кэш-память (и тегов, и данных) разбивается на некоторое количество модулей. Зависимость между модулем и блоками ОП такая же жесткая, как и при прямом отображении. А вот размещение блоков по строкам модуля произвольное и для поиска нужной строки в пределах модуля используется ассоциативный принцип. Этот способ отображения наиболее широко распространен в современных микропроцессорах.

 

 








Не нашли, что искали? Воспользуйтесь поиском по сайту:



©2015 - 2024 stydopedia.ru Все материалы защищены законодательством РФ.