Внутренняя память процессора i486

12/04/94 09:20am i4_pam.lek
В.Б.Бродин, И.И.Шагурин "Микропоцессор i486. Архитектура, программирование, интерфейс" М "Диалог-МИФИ" 1993
--"i486tm микропроцессор" в 2-х книгах Библиотека программиста "И.В.К.-СОФТ" М 1993

Внутренняя память процессора i486.

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

  1. Ассоциативный буфер трансляции;

  2. Внутренний КЭШ.

В обоих случаях это быстодействующая буферная память, которая располагается между быстродействующим процессором и относительно медленной внешней памятью. В процессе работы выбираемая информация дублируется в буферной памяти. Если в дальнейшем требуется повторное чтение к той же ячейке, то обращение к памяти заменяется на обращение к буферу.
Если осуществляется запись, она производится в буфер и память одновременно (СКВОЗНАЯ запись) или запись осуществляется только в буфер, а по месту назначения при необходимости освободить соответствующий элемент буферной памяти (ОБРАТНАЯ запись).
Выбор информации из буфера называется ПОПАДАНИЕМ, а ее отсутствие там - ПРОМАХОМ.

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

Ассоциативный буфер трансляции (TLB).

Translation Lookside Buffer предназначен для хранения элементов страничных таблиц, использованных последними. Системные программисты должны очищать TLB при изменении элементов текущих страничных таблиц, в притивном случае процессор при формировании адреса будет пользоваться старыми данными.

TLB представляет собой четырех-канальную ассоциативную память и состоит из:

  1. Блока данных;

  2. Блока достоверности, аттрибутов и тега;

  3. Блока замещения наименее используемой информации LRU (Least Recently Used).

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

Информация для заполнения этих битов берется из регистра CR3:

CR3(4) - бит PCD, CR3(3) - бит PWT.

Каждому элементу блока данных соответствует элемент блока достоверности, аттрибута и 17-ти разрядного тега:

Каждому набору соответствуют три бита блока замещения, призванные отслеживать используемость набора.

При трансляции адреса процессор использует биты 12,13,14 линейного адреса бля выбора одного из восьми наборов, а затем проверяет четыре тега выбранного набора на соответствие старшим 17 битам линейного адреса. Если соответствие найдено и бит достоверности установлен, то вместо старших 20 битов адреса подставляется соответствующее значение из блока данных.

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

Регистр TR6 является командным регистром тестирования TLB, а регистр TR7 регистром данных. Доступ к ним выполняется посредством разновидностей коианд MOV. Обращение возможно в реальном режиме и в защищенном с привилегиями 0.

Назначение полей регистров:

X

поиск

запись

0 0

несовпадение (элемент не будет найден)

значение не определено

0 1

совпадение если бит очищен

очистка бита

1 0

совпадение если бит установлен

установка бита

1 1

совпадение (элемент будет найден)

значение не определено

ПРИМЕЧАНИЯ:
1 Операция записи начинается сразу после загрузки регистра TR6, поэтому значение регистра TR7 должно быть записано первым.
2 При тестировании не рекомендуется указывать V=0; поиск незаполненного элемента имеет непредсказуемый результат.

Внутренняя КЭШ-память.

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

Структура кэша:

Кэш состоит из четырех частей (в целом структура схожа со структурой TLB):

  1. Блок данных - имеет размер 8 Кбайт. Поделен на четыре массива (канала) по 128 строк в каждом. Строка содержит 16 байт последовательно расположенных данных, начиная с адреса, кратного 16. Строки с одинаковым номером, принадлежащие разным каналам называются НАБОРОМ.

  2. Блок тега - содержит 21-разрядный тег для каждой строки. Тег образуют старшие разряды физического адреса.

  3. Блок достоверности - для каждого из 128 наборов содержит поле замещения LRU (3 бита) и поле достоверности (4 бита - по одному на каждый канал).

  4. Буфер заполнения кэш-памяти.

При обращении к памяти биты 10..4 физического адреса (7 штук) выбирают один из 128 наборов. Затем биты 31..11 (21 штука) сравниваются с четырьмя тегами каналов, выбранного набора с учетом битов достоверности. При совпадении читается 16-ти байтовая строка данных из которой при помощи битов 3..0 адреса (4 штуки) выбирается нужный байт.

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

Обращение к регистрам возможно с помощью команды MOV (команда привилегированная). Назначение полей:

0 0 Запись в буфер заполнения кэша или чтение из буфера чтения (строка имеет длину 16 байт, при тестировании нужное количество набирается 4-х кратной загрузкой/выгрузкой 32-х разрядных слов через регистр TR3. Перед операцией каждый раз должен инициализироваться регистр TR5.);
0 1 Запись в кэш;
1 0 Чтение кэша;
1 1 Очистка кэш-памяти;

Управление кэшированием осуществляется с помощью регистра CR0:

И команд организации кэша:

ПРИМЕЧАНИЯ:
1. При тестировании кэширование должно быть запрещено, а сам кэш предварительно очищен.
2. Теоретически возможна запись некотрой программы и данных в кэш с последуюшим его закрытием (установкой CD=NW=1); в этом случае "запертые" программа и данные будут доступны и кэш будет использоваться как СОЗУ.


Stay-at-home