- •Мп и их роль в современных компьютерах, cisc, risc и epic мп:
- •Поэтому, для risc – процессоров характерно:
- •К преимуществам мп с risc – архитектурой можно отнести:
- •Краткая история развития мп семейства х86:
- •4. Перспективы развития микропроцессорной техники.
- •Основные причины и результаты усовершенствования мп семейства х86:
- •Системные регистры мп семейства х86:
- •Дескрипторные таблицы Дескрипторные таблицы
- •Назначение и структура дескрипторов кода и данных:
- •Назначение и структура системных дескрипторов:
- •Назначение и структура дескрипторов шлюзов:
- •Теневые регистры и их назначение:
- •Регистр флагов и назначение его отдельных битов:
- •Принцип формирования линейных адресов в реальном режиме работы мп семейства х86:
- •Принцип формирования линейных адресов в защищенном режиме работы мп в семействе х86:
- •Страничное преобразование адресов, ее назначение и принцип реализации:
- •Источники и разновидности запросов прерываний процессора:
- •Организация системы прерываний в реальном режиме работы процессоров семейства х86:
- •Организация системы прерываний в защищенном режиме работы процессоров семейства х86:
- •Организация общей (базовой) защиты в мп х86:
- •Защита по привилегиям сегментов и ее организация:
- •Защита по привилегиям команд:
- •Принципы организации многозадачного режима работы:
- •Сегмент состояния задачи, его структура и назначение:
- •Принципы, лежащие в основе использования кэш-памяти, и организация кэш-памяти прямого отображения:
- •Принципы организации полностью ассоциативной и множественно-ассоциативной кэш-памятей:
- •Принципы организации целостности данных в подсистеме памяти с кэшированием:
- •Описание блок-схем алгоритмов обслуживания запросов в подсистеме памяти с кэшированием:
- •4. Двухуровневое кэширование.
- •Принципы организации конвейерной обработки сигналов в мп х86:
- •Циклы шины и режимы работы мп х86:
- •2. Реальный режим (r86)
- •3. Защищенный режим (p – режим)
- •4. Виртуальный режим (v86)
- •5. Режим smm
- •Принципы организации пакетного режима обмена информацией:
- •Основные особенности микроархитектуры Intel Sandy Bridge и ее структурная схема:
- •Сущность принципа «динамического исполнения команд»:
- •Структурная схема ядер мп Sandy Bridge и их функционирование:
- •Необходимость и общие принципы функционирования блока предсказаний ветвлений:
- •Необходимость предварительного и основного декодирования инструкций х86 в мп микроархитектуры Sandy Bridge:
- •Функционирование системы обнаружения программных циклов и суть работы блока pcu в мп микроархитектуры Sandy Bridge:
- •Сущность технологий макро- и микрослияний инструкций и микрокоманд в мп микроархитектуры Sandy Bridge:
Принципы организации полностью ассоциативной и множественно-ассоциативной кэш-памятей:
Ассоциативная память – это память, элементы которой выбираются не по адресу, а по некоторому признаку, присваиваемому данному элементу.
В полностью ассоциативной кэш-памяти любой блок оперативной памяти может быть отображен на любую строку кэш-памяти. Поскольку между блоками в данном случае, нет каких либо определенных взаимосвязей, то в буфер должны записываться полный адрес каждого блока и непосредственно сам блок. Тогда четыре младших разряда (в примере рис.IV.3) физического адреса определяют номер байта в блоке, а старшие 28 разрядов определяют признак (тэг) данной строки и помещаются в память признаков. Таким образом, в памяти признаков (тэгов) будет храниться полный адрес блока. Этот подход к реализации кэш-памяти позволяет решить проблему конфликтов адресов, свойственную кэш-памяти с прямым отображением, так как каждая строка кэш-памяти будет отображать только один блок оперативной памяти.
Естественно, что при такой организации кэш-памяти возникает вопрос, а в какую именно строку должны быть помещены блок данных и его адрес (признак, тэг)? Первоначально, пока буфер кэш-памяти еще не заполнен, блок помещается в первую свободную строку. Когда же буфер полон, то один из блоков д00олжен быть из него вытеснен и переписан в основную (оперативную) память, а на его место помещен новый.
Ответ на вопрос, какой же из блоков переписать в основную память, вполне очевиден – тот, к которому было наименьшее число обращений. Следовательно, необходим некоторый механизм, позволяющий определить наименее используемый блок. Кроме того, необходим и механизм, позволяющий отличать строки, к которым уже были обращения, от строк, к которым обращений еще не было. Вся эта технология основывается на информации, которая содержится в поле L (Least Recently Used). Конечно, это потребует дополнительных аппаратных затрат. Принципы функционирования таких механизмов изложим несколько позднее, при рассмотрении структуры множественной ассоциативной кэш-памяти. Кроме того, при каждом обращении к оперативной памяти необходимо сравнивать запрашиваемый адрес со всеми адресами, хранящимися в буфере (памяти признаков), а подобная процедура требует уже немалого времени. Таким образом, полностью ассоциативный кэш разрешает проблему конфликта адресов, но ценой дополнительного оборудования и увеличения времени обработки запроса в память. Поэтому этот тип кэш-памяти используется редко, только при небольших ее объемов в некоторых типах процессоров.
Бит достоверности V (Valid) и бит модифицируемости M (Modified) выполняют ту же роль, что и в кэш-памяти с прямым отображением.
Рис.IV.3 Организация полностью ассоциативной кэш-памяти
объемом 8 Кбайт.
Множественно-ассоциативная кэш-память.
Наборно-ассоциативный или множественный ассоциативный кэш сочетает в себе преимущества кэш-памяти с прямым отображением и полностью ассоциативной кэш-памяти. В этом типе кэш-памяти строки разбиваются на группы (наборы, множества, входы), в которые могут входить две, четыре, восемь и т.д. строк. В соответствии с их количеством различают: двухвходовую (двухканальную) множественную ассоциативную кэш-память, четырехвходовую (четырехканальную) множественную ассоциативную кэш-память, восьмивходовую (восьмиканальную) множественную ассоциативную кэш-память и т.д. Таким образом, во множественной ассоциативной кэш-памяти, в одном множестве (группе) могут находиться строки, которые адресуются одинаковыми индексами, но имеют разные признаки (тэги), т.е. блоки памяти в этих строках находятся в разных областях адресного пространства (расположение этих областей и определяется кодом признака).
Рассмотрим подробнее конкретный пример четырехвходовой множественно-ассоциативной кэш-памяти объемом 8 Кбайт (рис.IV.4), которая использовалась в процессорах i486.
Рис.IV.4. Организация множественно-ассоциативной кэш-памяти
объемом 8 Кбайт.
В этом случае буфер кэш-памяти будет иметь 128 групп строк по 4 строки в каждой. 4 младших бита физического адреса, выдаваемого процессором, по-прежнему определяют байт в блоке. 7 бит поля индекса обеспечивают выбор одной из групп кэш-памяти, а старшие 21 бит поля тэга (признака) позволяют установить присутствие адресуемого блока в кэш-памяти. Понятно, что для блоков с одним и тем же индексом отводится 4 строки буфера.
Следовательно, если даже часть строк в группе (множестве) будет занята уже используемыми блоками, то следующий блок будет помещен в свободную строку, то есть в пределах группы, кэш-память будет полностью ассоциативной. Благодаря этому увеличивается число удачных обращений. Кроме того, по сравнению с полностью ассоциативной кэш-памятью максимальное требуемое количество сравнений старших бит адреса с тэгами (признаками) сокращается до четырех. Оба этих фактора оказывают заметное влияние на повышение производительности системы.
Кроме собственно буфера кэш-памяти, где хранится адресуемая информация, кэш-память имеет еще несколько вспомогательных полей: поле битов достоверности (или занятости), поле битов модифицирования и поле LRU. Рассмотрим их назначение подробнее. Каждой строке ставится в соответствие бит достоверности и бит модифицирования. Каждой группе (набору строк, множеству) ставится в соответствие код LRU. Бит достоверности определяет достоверность соответствующей строки, т.е., что в данную строку был записан некоторый код при обмене информацией между кэш-памятью и основной памятью. В самом начале, после инициализации системы, биты достоверности всех строк содержат нули.
После записи в строку блока данных эта строка становится достоверной и в ее бит достоверности заносится 1. Следовательно, при адресации нового блока данных с тем же индексом, что и у уже записанного, он заносится в соседнюю свободную (недостоверную) строку того же набора (группы), подобно тому, как это происходит в полностью ассоциативной кэш-памяти.
В случае если, при этом, все строки данной группы (множества) уже заняты (достоверны), т.е. все биты достоверности этой группы строк установлены в состояние 1, то выбирается одна из строк, та, к которой дольше всех не было обращений, и на ее место заносится этот новый блок. Этот принцип устранения блока из строки, к которой дольше всего не было обращений, называется принципом LRU (Least Recently Used). Этот принцип аналогичен принципу LRU, который используется при свопинге сегментов или страниц между оперативной памятью и дисками, но более упрощен по методу выбора устраняемого блока. Поэтому применительно к кэш-памяти этот принцип часто называют псевдо-LRU.
Поясним суть метода псевдо-LRU более подробно. Обозначим строки во множестве (наборе) через L3,L2,L1,L0. Каждому множеству строк соответствует трехразрядный двоичный код с битами B2,B1,B0, которые модифицируются при каждом попадании (cache hit) и заполнении строки следующим образом:
Если обращение во множестве было к строке L0 или L1, то бит B0 устанавливается в состояние 1, а при обращении к строке L2 или L3,
бит B0 сбрасывается в 0;
Если последнее обращение в паре L0, L1 было к строке L0, то бит B1 устанавливается в состояние 1, а при обращении к строке L1 бит B1 сбрасывается в 0;
Если последнее обращение в паре L2, L3 было к строке L2, то бит B2 устанавливается в состояние 1, а при обращении к строке L3 бит B2 сбрасывается в 0.
Таким образом, в зависимости от временной последовательности обращения к строкам каждого множества, в блоке LRU данного множества формируется определенный код B2, B1, B0. Выбор заменяемой строки (когда все строки во множестве достоверны) определяется содержимым бит B2, B1, B0 следующим образом:
при 00Х – заменяется строка L0;
при 01Х – заменяется строка L1;
при 1Х0 – заменяется строка L2;
при 1Х1 – заменяется строка L3;
где Х – любое значение: 0 или 1.
Заметим, что кроме алгоритма Pseudo-LRU иногда используется алгоритм замещения по принципу FIFO (First-In, First-Out), при котором для замещения выбирается та строка, к которой было первое обращение в данном множестве строк. Использовался, также, принцип случайного (random) выбора строки для замещения. Эти алгоритмы проще в реализации, но не так эффективны.
Строки кэш-памяти можно по отдельности объявлять недостоверными, задавая операцию недостоверности кэш-памяти на шине процессора. При инициировании такой операции, кэш-память сравнивает объявляемый недостоверным адрес с тэгами строк, находящихся в кэш-памяти, и сбрасывает бит достоверности при обнаружении равенства. Предусмотрена также операция очистки кэш-памяти, которая превращает в недостоверное все содержимое кэш-памяти.
