Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Конспект по МПиМК / Лекция 09.doc
Скачиваний:
126
Добавлен:
15.06.2014
Размер:
218.11 Кб
Скачать

Тема 9 Микропроцессорные технологии

1. Технологии кэширования кода и данных

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

Если ЦП обратился к какому-либо объекту оперативной памяти, с высокой долей вероятности ЦП вскоре снова обратится к этому объекту. Примером этой ситуации может быть код или данные в циклах. Эта концепция описываетсяпринципом временной локальности, в соответствии с которым часто используемые объектыоперативной памятидолжны быть "ближе" к ЦП (вкэше).

Для согласования содержимого кэш-памяти и оперативной памятииспользуют три метода записи:

  • Сквозная запись (write through) - одновременно с кэш-памятью обновляется оперативная память.

  • Буферизованная сквозная запись (buffered write through) - информация задерживается в кэш-буфере перед записью в оперативную память и переписывается в оперативную память в те циклы, когда ЦП к ней не обращается.

  • Обратная запись (write back) - используется бит изменения в поле тега, и строка переписывается в оперативную память только в том случае, если бит изменения равен 1.

Как правило, все методы записи, кроме сквозной, позволяют для увеличения производительности откладывать и группировать операции записи в оперативную память.

В структуре кэш-памяти выделяют два типа блоков данных:

  • память отображения данных (собственно сами данные, дублированные из оперативной памяти);

  • память тегов (признаки, указывающие на расположение кэшированных данных в оперативной памяти).

Пространство памяти отображения данных в кэшеразбивается на строки - блоки фиксированной длины (например, 32, 64 или 128 байт). Каждая строкакэшаможет содержать непрерывный выровненный блок байт изоперативной памяти. Какой именно блокоперативной памятиотображен на данную строкукэша, определяется тегом строки и алгоритмом отображения. По алгоритмам отображенияоперативной памятивкэшвыделяют три типа кэш-памяти:

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

  • кэшпрямого отображения;

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

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

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

Рис. 1.1.  Полностью ассоциативный кэш 8х8 для 10-битного адреса

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

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

Рис. 1.2.  Кэш прямого отображения 8х8 для 10-битного адреса

Несмотря на очевидные недостатки, данная технология нашла успешное применение, например, в МП Motorola MC68020, для организации кэшаинструкций первого уровня (рис. 1.3). В данном микропроцессоре реализованкэшпрямого отображения из 64 строк по 4 байт. Тег строки, кроме 24 бит, задающих адрес кэшированного блока, содержит бит значимости, определяющий действительность строки (если бит значимости 0, данная строка считается недействительной и не вызовет кэш-попадания). Обращения к данным не кэшируются.

Рис. 1.3.  Схема организации кэш-памяти в МП Motorola MC68020

Компромиссным вариантом между первыми двумя алгоритмами является множественный ассоциативный кэш или частично-ассоциативный кэш (рис. 1.4). При этом способе организации кэш-памяти строки объединяются в группы, в которые могут входить 2, 4, : строк. В соответствии с количеством строк в таких группах различают 2-входовый, 4-входовый и т.п. ассоциативныйкэш. При обращении к памяти физический адрес разбивается на три части: смещение в блоке (строкекэша), номер группы (набора) и тег. Блок памяти, адрес которого соответствует определенной группе, может быть размещен в любой строке этой группы, и в теге строки размещается соответствующее значение. Очевидно, что в рамках выбранной группы соблюдается принцип ассоциативности. С другой стороны, тот или иной блок может попасть только в строго определенную группу, что перекликается с принципом организациикэшапрямого отображения. Для того чтобы процессор смог идентифицировать кэш-промах, ему надо будет проверить теги лишь одной группы (2/4/8/: строк).

Рис. 1.4.  Двухвходовый ассоциативный кэш 8х8 для 10-битного адреса

Данный алгоритм отображения сочетает достоинства как полностью ассоциативного кэша(хорошая утилизация памяти, высокая скорость), так икэшапрямого доступа (простота и дешевизна), лишь незначительно уступая по этим характеристикам исходным алгоритмам.Именно поэтому множественный ассоциативный кэш наиболее широко распространен (табл. 1.1).

Таблица 1.1. Характеристики подсистемы кэш-памяти у ЦП IA-32

Intel486

Pentium

Pentium MMX

P6

Pentium 4

L1 кэш команд

Тип

4-вх. ассоц.

2-вх. ассоц.

4-вх. ассоц.

4-вх. ассоц.

8-вх. ассоц.

Размер строки, байт

16

32

32

32

-

Общий объем, Кбайт

8/16

8

16

8/16

12Кmops

L1 кэш данных

Тип

Общий с кэш инструкций

2-вх. ассоц.

4-вх. ассоц.

2/4-вх. ассоц.

4-вх. ассоц.

Размер строки, байт

32

32

32

64

Общий объем, Кбайт

8

16

8/16

8

L2 кэш

Тип

Внешний

внешний 4-вх. ассоц.

4-вх. ассоц.

8-вх. ассоц.

Размер строки, байт

32

32

64

Общий объем, Кбайт

256/512

128-2048

256/512

Примечания: В Intel-486 используется единый кэшкоманд и данных первого уровня. В Pentium Pro L1кэшданных - 8 Кбайт 2-входовый ассоциативный, в остальных моделях P6 - 16 Кбайт 4-входовый ассоциативный. В Pentium 4 вместо L1кэшакоманд используется L1кэшмикроопераций (кэштрассы).

Для организации кэш-памяти можно использовать принстонскую архитектуру (смешанный кэшдля команд и данных, например, в Intel-486). Это очевидное (и неизбежное для фон-неймановских систем с внешней по отношению к ЦП кэш-памятью) решение не всегда бывает самым эффективным. Разделение кэш-памяти накэшкоманд икэшданных (кэшгарвардской архитектуры) позволяет повысить эффективность работыкэшапо следующим соображениям:

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

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

Именно поэтому все последние модели IA-32, начиная с Pentium, для организации кэш-памяти первого уровня используют гарвардскую архитектуру.

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

Tср= (Thitx Rhit) + (Tmissx (1 Rhit))

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

Очевидно, что чем ближе значение Rhitк 1, тем ближе значениеTсркThit. Частота попаданий определяется в основном архитектурой кэш-памяти и ее объемом. Влияние наличия и отсутствия кэш-памяти и ее объема на рост производительности ЦП показано втабл. 1.2.

Таблица 1.2. Размер и эффективность кэш-памяти

Размер кэш-памяти

Частота попаданий, %

Рост производительности, %

Нет кэш-памяти, DRAM с 2 TW

-

0

16 Кб

81

35

32 Кб

86

38

64 Кб

88

39

128 Кб

89

39

Нет кэш-памяти, SRAM без TW

-

47

Соседние файлы в папке Конспект по МПиМК