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

Автор: Пользователь скрыл имя, 19 Мая 2013 в 15:37, курсовая работа

Описание работы

Основная память компьютеров реализуется на относительно медленной динамической памяти (DRAM), обращение к ней приводит к простою процессора – появляются такты ожидания (wait states). Статическая память (SRAM), построенная, как и процессор, на триггерных ячейках, по своей природе способна догнать современные процессоры по быстродействию и сделать ненужными такты ожидания (или хотя бы сократить их количество). Разумным компромиссом для построения экономичных и производительных систем явился иерархический способ организации оперативной памяти. Идея заключается в сочетании основной памяти большого объема на DRAM с относительно небольшой кэш-памятью на быстродействующих микросхемах SRAM.

Содержание

Введение 3
Соответствие между строками кэша и блоками оперативной памяти 7
Функция прямого отображения 8
Ассоциативная функция отображения 10
Секционированная ассоциативная функция отображения 12
Алгоритм замены строк кэша 14
Целостность информации в кэше и оперативной памяти 16
Размер блока 19
Кэширование в современных процессорах 21
Управление кэшированием 26
Кэш трасс 35
Общая организация и способ хранения трасс в кэше 38
Сравнение с альтернативной организацией кэша инструкций 42
Заключение 46
Список литературы 47

Работа содержит 1 файл

Курсовая Работа (Наташенька).doc

— 7.60 Мб (Скачать)

При использовании страничной переадресации в управлении кэшированием принимают участие биты PCD и PWT регистра CR3 и элементов каталога и таблиц страниц. В регистре CR3 эти биты управляют кэшированием таблицы каталогов. В элементах каталога таблиц (РОЕ) эти биты управляют кэшированием таблиц страниц, на которые они ссылаются. В элементах таблиц страниц (РТЕ) эти биты управляют кэшированием обслуживаемых страниц. В Р6 бит PQE регистра CR4 разрешает использование бита глобальности страницы G для управления аннулированием вхождений в TLB.

Для управления кэшированием на аппаратном уровне процессоры 486 и Р5 имеют входы KEN# и WB/WT#. Внешние схемы (чипсет системной платы) могут запрещать процессору кэшировать определенные области памяти установкой высокого уровня сигнала KEN# во время циклов доступа процессора к этим областям памяти. Этот сигнал управляет только возможностью заполнения строк кэша из адресованной области памяти (с дискретностью, равной размеру строки). Для процессоров с WB-кэшем имеется входной сигнал WB/WT#, который может упростить политику записи для данного адреса до WT. Выходные сигналы PCD и PWT управляют работой вторичного (внешнего) кэша (они же управляют и внутренним кэшем). В циклах обращения к памяти, когда страничные преобразования не используются (например, при обращении к таблице каталогов страниц), источником сигналов являются биты PCD и PWT регистра CR3, при обращении к таблице страниц – биты PCD и PWT из дескриптора соответствующего элемента каталога, при обращении к самим данным страницы – биты PCD и PWT из дескриптора страницы. Кроме того, оба этих сигнала могут принудительно устанавливаться общими битами управления кэшированием CD и WT регистра CRO.

В архитектуру Р6 введены  регистры MTRR (Memory Type Range Registers), которые  реализуют вышеописанные функции аппаратного управления кэшированием, а также изменение порядка записи для определенных областей памяти. С помощью этих регистров в физической памяти может быть определено до 96 областей адресов с одинаковым типом кэширования. Такое распределение позволяет оптимизировать операции с ОЗУ, ПЗУ, видеобуферами и адаптерами ввода/вывода, отображенными на пространство памяти. По аппаратному сбросу регистры MTRR устанавливаются в такое состояние, которое ведет к объявлению некэшируемой всей физической памяти. Дальнейшая инициализация, выполняемая обычно во время POST BIOS, программирует регистры в соответствии с реальным распределением памяти. Типы памяти и их характеристики приведены в следующей таблице:

Мнемоника

Код в mtrr

Кэши-рование

Политика WB

Спекулятив-ное чтение

Порядок операций

UC (UnCacheble)

0

Нет

Нет

Да

Строгий

WC (Write Combining

1

Нет

Нет

Да

Слабоупорядоченный (Weak Ordering)

WT (Write-Truugh)

4

Да

Нет

Да

Спекулятивный (Speculative)

WP (Write-Protected)

5

Чтение –да,

Запись – нет

Неь

Да

Спекулятивный

WB (Write-Back)

6

Да

Да

Да

Спекулятивный

UC- (UnCacheble)

7

Нет

Нет

Да

Строгий


Коды 2,3, 8-255 зарезервированы, их применение в Р6 вызывает исключение защиты. Код 7 применим только для задания  свойств через PAT.

Регистры MTRR входят в  число модельно-специфических регистров (MSR). Они определяют наборы фиксированных зон для 1-го мегабайта физической памяти и зоны (в Р6 – 8 зон) произвольного размера для памяти в любом диапазоне адресов. Наличие MTRR определяется инструкцией CPUID по флагу MTRR (бит 13 в EDX). 64-битный регистр MTRRcap определяет возможности MTRR. Количество произвольных зон определяется полем VCNT (биты 7:0, для Р6 – 8 зон), флаг FIX (бит 8) определяет наличие фиксированных зон; а флаг WC (бит 10) указывает на поддержку памяти типа WC.

Общее управление MTRR осуществляется записью в 64-битный регистр MTRRdefType. Флаг Е (бит 11) разрешает использование MTRR; если он сброшен, вся память определяется как UC. Флаг FE (бит 10) разрешает использование  фиксированных зон. Поле Туре (биты 7:0) задают тип памяти по умолчанию (памяти, не попавшей ни в одну из зон). Для физически отсутствующей памяти рекомендуется тип UC.

Для управления фиксированными зонами используются следующие регистры:

  • MTRRfix64K_00000 – для отображения восьми зон по 64 Кбайт в диапазоне адресов 0-7FFFFh;
  • MTRRfix16K_80000 и MTRRfix16K_AOOOO – для отображения 16 зон по 16 Кбайт в диапазоне адресов 8OOOOh-BFFFFh;
  • MTRRfix4K_COOOO, MTRRfix4K_C8000 ... MTRRfix4K_F8000 (8 регистров) – для отображения 64 зон по 4 Кбайт в диапазоне адресов C0000h-FFFFFh.

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

Для управления каждой из зон произвольного размера используются пары регистров (суффикс n определяет номер регистра).

  • MTRRphysBasen – регистр базового физического адреса зоны. Поле Туре (биты 7:0) определяет тип памяти для зоны, поле PhysBase (биты 35:12) задает ее базовый адрес (старшие 24 бита, младшие 12 – нулевые). Зоны определяются по границам страниц размером 4 Кбайт.
  • MTRRphysMaskn – регистр маски физического адреса. Поле PhysMask (биты 35:12) задает маску зоны, флаг V (бит 11) определяет действительность данных данной регистровой пары. Маска определяется так, чтобы результат операции И над ней и адресом, принадлежащим зоне, совпадал с результатом той же операции над ней и базовым адресом.

Перекрытие произвольных зон допускается лишь для типов UC или UC и WB (в области перекрытия •тип будет UC), для перекрытий зон  иных типов поведение процессора непредсказуемо.

При определенных значениях  масок определяемые ими зоны перестают  быть непрерывными. На области разрывов будет распространяться тип памяти по умолчанию. Использование таких масок не приветствуется, поскольку оно может потребовать присутствия реальной памяти во всем диапазоне физических адресов (4 или 64 Гбайт).

Если произвольная зона перекрывает фиксированную, то на перекрытую область распространяется определение  фиксированной зоны (при установленном  флаге FE).

Если используются большие страницы (размером 2 или 4 Мбайт), каждая страница может накрывать несколько зон, определенных в MTRR. Если эти зоны имеют разные свойства, поведение процессора будет непредсказуемо (тип страниц памяти кэшируется в TLB). Чтобы избежать этой неопределенности, используя большие страницы следует заботиться об однотипности зон памяти, на которые отображается данная область (корректно программировать MTRR). Запись в регистр MTRRcap, как и в неопределенные поля других регистров MTRR или попытка использования типов памяти, отличных от приведенных в таблице, вызывает исключение #GP.

Регистры MTRR позволяют  управлять статически определенными зонами физической памяти. Эта задача ложится, как правило, на BIOS компьютера, В процессорах Pentium III введен новый способ управления свойствами памяти на уровне страниц, который позволяет операционной системе и приложениям динамически выбирать оптимальные свойства каждой страницы памяти с точки зрения повышения производительности. Этот способ основан на таблице атрибутов страниц PA7(Page Attribute Table). Прежде на уровне страниц свойства памяти задавались битами PCD и PWT. Теперь в элементах, описывающих страницы, определен бит PATi (PAT index), прежде зарезервированный (бит 12 в PDE 2/4 Мбайт и бит 7 в РТЕ 4 Кбайт). В процессор введен новый регистр MSR с именем PAT (адрес 277h), представляющий собой таблицу атрибутов страниц. В этой таблице имеются восемь элементов (трехбитных полей РА0...РА7). С помощью комбинации трех бит PATi, PCD, PWT для конкретной страницы выбирается соответствующий элемент таблицы. В этом элементе хранится код типа памяти (0-7), назначенный этой комбинации данных бит. Код типа соответствует определениям для MTRR, но, дополнительно для PAT, определили еще тип для кода 7. Для тех страниц, с которыми не связаны биты PATi, возможно использование только первых четырех элементов PAT. После аппаратного сброса в PAT устанавливаются определения типов памяти, как показано в последней графе табл. 6.5. Операционная система (только при CPL0) может изменить эти определения по своему усмотрению, выбирая наиболее приемлемый метод кэширования для каждой комбинации бит PATi, PCD, PWT.

 

63

58        56

 

50       48

 

42         40

 

34         32

Резерв 

РА7

Резерв 

РА6

Резерв 

РА5

Резерв 

РА4


 

31

26        24

 

18       16

 

10          8

 

2             0

Резерв 

РАЗ

Резерв 

РА2

Резерв 

РА1

Резерв 

РАО


Формат регистра PAT

 

Индексирование в PAT и  тип памяти, определяемый по аппаратному  сбросу

PATi

PCD

PWT

Элемент PAT

Тип после RESET

0

0

0

0

6(WB)

0

0

1

1

4(WT)

0

1

0

2

7(UC-)

0

1.

1

3

0(UC)

1

0

0

4

6(WB)

1

0

1

5

4(WT)

1

1

0

6

7(UC-)

1

1

1

7

0(UC)


Тип памяти, заданный через MTRR, может отличаться от типа, заданного  в PAT. Результат взаимодействия определений  типов памяти через MTRR, биты PWT, PCD и PATi можно выяснить по специальным таблицам. Если в процессорах Р6 имеется MTRR и он запрещен битом 11 (Е) регистра MTRRDefType, то вся память становится некэшируемой (UC). Определение UC в PAT всегда обеспечивает некэшируемость области памяти (перекрывает назначение WC в MTRR), UC перекрывается назначением WC в MTRR на ту же область. Таким образом, надежно запретить кэширование для страницы можно только при PCD=1 и PWT=1.

Буферы трансляции адресов (TLB) обновляются процессором прозрачно для программ. Для аннулирования отдельных вхождений служит инструкция INVLPG. Аннулирование всех вхождений TLB, за исключением отмеченных как глобальные флагом G, происходит при записи в регистр CR3 или изменении его состояния при переключении задач. Аннулирование всех вхождений с игнорированием флага глобальности происходит при изменении состояния (в обе стороны) входа FLUSH*, записи в регистр MTRR (в Р6), модификации флагов PG или РЕ в регистре CR0 или флагов PSE, PGE или РАЕ в регистре CR4.

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

  • возникновение исключения или прерывания;
  • выполнение инструкций ввода/вывода;
  • выполнение инструкций сериализации (в Р6);
  • выполнение операции LOCK;
  • выполнение инициализации шины по сигналу BINIT# (в Р6).

 

10. КЭШ ТРАСС

Важнейшим элементом  процессора Intel Pentium 4 является так называемый кэш трасс (Trace cache, Т-кэш), который выполняет ту же функцию, что и кэш инструкций в классических микропроцессорах. Необходимость создания такого устройства была связана с тем, что разработчики процессора столкнулись с трудностями реализации обычного кэша инструкций, эффективно работающего на повышенных тактовых частотах. Эти трудности обусловлены сложностью декодирования и обработки машинных инструкций процессоров архитектуры x86 (x86-инструкций), имеющих переменную длину и неудобный формат. Уже в процессорах предыдущего поколения (Pentium Pro, Pentium II, Pentium III) было реализовано преобразование «нерегулярных» x86-инструкций в «регулярные» микрооперации (uOP's, МОПы), удобные для последующей обработки. Однако в кэше инструкции по-прежнему хранились в исходном виде. Сложность декодирования x86-инструкций усугублялась тем, что эти процессоры имеют суперскалярную архитектуру и способны исполнять до трёх инструкций за такт, и декодирование этих трёх инструкций должно производиться параллельно. В процессоре Pentium 4 был сделан следующий шаг – кэш разместили после блока декодирования инструкций, и теперь в нём хранятся микрооперации с регулярной структурой. Таким образом, критически важный этап выборки и окончательного декодирования инструкций может производиться в высоком темпе и с минимальными временными затратами. Новый кэш получил название «Trace-cache» (Т-кэш).

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

Информация о работе Организация кэш-памяти современных процессоров