Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

ЭВУ 2 семестр / Презентации ЭВУ в пдф / метода моховикова

.pdf
Скачиваний:
39
Добавлен:
31.05.2015
Размер:
4.4 Mб
Скачать

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

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

вим по размеру с кэшэм L2, и меньше, если кэш L2 – во много раз больше,

чем кэш L1. Когда L1 пропускает и L2 получает доступ в случае попадания,

строка кэша попадания в L2 обменивается со строкой в L1. Этот обмен рабо-

тают ненамного чаще, чем только копирование строки из L2 в L1, которое делает инклюзивный кэш.

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

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

как говорят, кэш-архитектуры: инклюзивная, эксклюзивная и неэксклюзив-

ная. Инклюзивная архитектура предполагает дублирование информации кэ-

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

ных уровнях кэша (предпочитает фирма AMD).

Кэш жертв

«Кэш жертв» (англ. Victim cache или Victim buffer) – это небольшой спе-

циализированный кэш, хранящий те кэш-линии, которые были недавно вы-

теснены из основного кэша микропроцессора при их замещении. Данный кэш располагается между основным кэшем и его переходом (англ. refill path).

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

шения количества конфликтных промахов (conflict miss). Многие часто ис-

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

221

циативность для подобных редких запросов. Был предложен Norman Jouppi (DEC) в 1990 г. Размер такого кэша может составлять от 4 до 16 кэш-линий.

Кэш трасс

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

сти загрузки инструкций и для уменьшения тепловыделения (в случае

Pentium 4) за счет хранения декодированных трасс-инструкций. Таким обра-

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

Одной из ранних публикацией о кэше трасс была статья коллектива ав-

торов (Eric Rotenberg, Steve Bennett и Jim Smith), вышедшая в 1996 г. под на-

званием «Trace Cache: a Low Latency Approach to High Bandwidth Instruction

Fetching» («Кэш трасс: низколатентный подход для обеспечения высокой пропускной способности загрузки инструкций»). Digital Object Identifier :

10.1109/MICRO.1996.566447

Кэш трасс сохраняет декодированные инструкции либо после их деко-

дирования, либо после окончания их исполнения. Обобщая, инструкции до-

бавляются в кэш трасс в группах, представляющих собой либо базовые бло-

ки, либо динамические трассы. Динамическая трасса (путь исполнения) со-

стоит только из инструкций, результаты которых были значимы (использова-

лись впоследствии) и удаляет инструкции, которые находятся в не испол-

няющихся ветвях, кроме того, динамическая трасса может быть объединени-

ем нескольких базовых блоков. Такая особенность позволяет устройству под-

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

Линии трасс хранятся в кэше трасс по адресам, соответствующим счет-

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

222

ляющие различные ситуации по результату предсказания ветвлений. На ста-

дии подгрузки инструкции (instruction fetch) конвейера инструкций для про-

верки попадания в кэш трасс используется как текущий счетчик инструкций

(program counter), так и состояние предсказателя ветвлений. Если попадание свершилось, линия трассы непосредственно подается на конвейер без необ-

ходимости опрашивать обычный кэш (L2) или основное ОЗУ. Кэш трасс по-

дает машинные команды на вход конвейера, пока не кончится линия трассы,

либо пока не произойдет ошибка предсказания в конвейере. В случае прома-

ха кэш трасс начинает строить следующую линию трассы, загружая машин-

ный код из кэша или из памяти.

13.6. Способы отображения основной памяти на кэш

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

но зависят от того, каким образом основная память отображается на кэш-

память. Принцип прозрачности требует, чтобы правило отображения основ-

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

При кэшировании данных из оперативной памяти широко используются две основные схемы отображения: случайное и детерминированное.

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

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

мах, что и в алгоритмах замещения страниц, например выгрузка данных, к

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

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

торый данные имеют в оперативной памяти. При каждом запросе к опера-

223

тивной памяти выполняется поиск в кэше, причем критерием поиска высту-

пает адрес оперативной памяти из запроса.

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

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

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

88). Признак, по которому выполняется сравнение, называется тегом (tag).

Рис. 88. Ассоциа-

тивный поиск в кэше со случайным отображе-

нием

В данном случае тегом является адрес данных в оперативной памяти.

Электронная реализация такой схемы приводит к удорожанию памяти, при-

чем стоимость существенно возрастает с увеличением объема запоминающе-

го устройства. Поэтому ассоциативная кэш-память используется в тех случа-

ях, когда для обеспечения высокого процента попадания достаточно неболь-

шого объема памяти.

Второй, детерминированный способ отображения предполагает, что лю-

бой элемент основной памяти всегда отображается в одно и то же место кэш-

224

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

ет свой номер. Между номерами строк кэш-памяти и адресами оперативной памяти устанавливается соответствие «один ко многим»: одному номеру строки соответствует несколько (обычно достаточно много) адресов опера-

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

торые интерпретируются как номер строки кэш-памяти (такое отображение называется прямым). Например, пусть в кэш-памяти может храниться 1 024

записи, т. е. кэш имеет 1 024 строки, пронумерованные от 0 до 1 023. Тогда любой адрес оперативной памяти может быть отображен на адрес кэш-

памяти простым отделением 10 двоичных разрядов (рис. 89).

Рис. 89. Де-

терминированное

отражение

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

225

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

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

нием. Во-первых, вытеснение данных происходит не только в случае отсут-

ствия свободного места в кэше, во-вторых, никакого выбора данных на за-

мещение не существует.

Во многих современных процессорах кэш-память строится на основе со-

четания этих двух подходов, что позволяет найти компромисс между сравни-

тельно низкой стоимостью кэша с прямым отображением и интеллектуально-

стью алгоритмов замещения в кэше со случайным отображением. При сме-

шанном подходе произвольный адрес оперативной памяти отображается не на один адрес кэш-памяти (как это характерно для прямого отображения) и

не на любой адрес кэш-памяти (как это делается при случайном отображе-

нии), а на некоторую группу адресов. Все группы пронумерованы. Поиск в кэше осуществляется вначале по номеру группы, полученному из адреса опе-

ративной памяти из запроса, а затем в пределах группы путем ассоциативно-

го просмотра всех записей в группе на предмет совпадения старших частей адресов оперативной памяти (рис. 90).

При промахе данные копируются по любому свободному адресу из однозначно заданной группы. Если свободных адресов в группе нет, то вы-

полняется вытеснение данных. Поскольку кандидатов на выгрузку несколько

– все записи из данной группы – алгоритм замещения может учесть интен-

сивность обращений к данным и тем самым повысить вероятность попаданий в будущем.

226

Рис. 90. Комбинирова-

ние прямого и случайного отображения

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

13.7.Архитектуры кэша

Впорядке ухудшения (увеличения длительности проверки на попада-

ние) и улучшения (уменьшения количества промахов):

кэш прямого отображения (англ. direct mapped cache) – наи-

лучшее время попадания, и, соответственно, лучший вариант для

больших кэшей;

2-канальный множественно-ассоциативный кэш (англ. 2-way set associative cache);

2-канальный skewed ассоциативный кэш (англ. the best tradeoff for caches whose sizes are in the range 4K-8K byte» – André Seznec);

227

4-канальный множественно-ассоциативный кэш (англ. 4-way set associative cache);

полностью ассоциативный кэш (англ. fully associative cache

наилучший (самый низкий) процент промахов (miss rate), и лучший ва-

риант при чрезвычайно высоких затратах при промахе (miss penalty).

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

кэш прямого отображения, полностью ассоциативный кэш и их комбинация – частичноили наборно-ассоциативный кэш.

13.7.1. Кэш прямого отображения

В кэш-памяти прямого отображения адрес памяти, по которому проис-

ходит обращение, однозначно определяет строку кэша, в которой может на-

ходиться требуемый блок. Принцип работы такого кэша рассмотрим на при-

мере несекторированного кэша объемом 256 Кбайт с размером строки 32

байт и объемом кэшируемой основной памяти 64 Мбайт. Структуру памяти в такой системе иллюстрирует рис. 91.

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

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

няется, что требуемого блока нет в кэше, генерируется цикл обращения к ос-

новной памяти – кэш-промах. В случае попадания запрос обслуживается кэш-памятью.

В случае промаха после считывания основной памяти приемником ин-

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

228

знак действительности данных. Независимо от объема затребованных данных в кэш из основной памяти строка переписывается вся целиком. Если кон-

троллер кэша реализует упреждающее считывание, то в последующие сво-

бодные циклы шины обновляется также следующая строка, при условии, что она была чистой. Чтение «про запас» позволяет при необходимости осуще-

ствлять пакетный цикл чтения из кэша через границу строки.

Рис. 91. Кэш прямого отображения

Кэшируемая основная память условно разбивается на страницы (в дан-

ном случае по 256 Кбайт), размер которых совпадает с размером кэш-памяти

(256 Кбайт). Кэш-память делится на строки (256 Кбайт/32 байт = 8 К строк).

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

вующую ей строку (на рис. 91 они находятся на одном горизонтальном уров-

не). Поскольку объем основной памяти больше объема кэша, на каждую строку кэша может претендовать множество блоков памяти с одинаковой

229

младшей частью адреса (смещение внутри страницы). Одна строка в опреде-

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

шая часть адреса или номер страницы). Память тегов должна иметь количе-

ство ячеек, равное количеству строк кэша, а ее разрядность должна быть дос-

таточной, чтобы вместить старшие биты адреса кэшируемой памяти, не по-

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

ности данных.

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

езный недостаток, вполне очевидный при рассмотрении рис. 91. Если в про-

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

лостую.

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

ных системах также снижает количество кэш-попаданий, что отражается на производительности системы. Увеличение размера кэша при сохранении ар-

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

скольку разные задачи будут претендовать на одни и те же строки кэша.

Объем кэшируемой памяти (Mcached) при архитектуре прямого отображения определяется объемом кэш-памяти (Vcache) и разрядностью памяти тегов

(N):

230