8086.ru2. Организация памяти ЭВМ2.3 КЭШ - память → 2.3.7 Пример алгоритма работы контроллера кэш-памяти

2.3.7 Пример алгоритма работы контроллера кэш-памяти

На рисунке 2.15 приведен фрагмент микропрограммы работы кон-троллера кэш-памяти с распределением секторов с обратной флаговой за-писью строк сектора с замещением по признаку неиспользования сектора. ОП и СОЗУ данных построены с расслоением обращений на длину строки. Адрес и данные предварительно загружены в RgФА и RgDIO памяти.

  1. В блоке 1 на входы DI памяти тегов поступает номер тега из RgФА и выполняется ассоциативный поиск по всем ячейкам номеров тега секто-ров. В триггере Trc фиксируется значение признака А Teg сектора, и если А Teg, то устанавливается бит признака неиспользования сектора, а в бу-ферном регистре RgB (рисунок 2.14) - значение адреса сектора СОЗУ дан-ных f, хранимого в поле памяти тегов или формируемого схемой шифра-тора CD1. Триггер бита достоверности секторов Trdsek устанавливается в "0", если в АЗУ памяти тегов в поле бит достоверности сектора имеется хо-тя бы один недостоверный сектор, иначе Trdsek := 1.
  2. Если А Teg (блок 2), то выполняется считывание значений бит достоверности строк сектора в Rg P (блок 17) (рисунок 2.12) и на выходе MS (@) формируется значение бита достоверности запрашиваемой строки Pbd. Если Pbd=0, то выполняется процедура замещения строки из ОП в кэш-память (блоки 8-10). Переход к пункту 9.
  3. Иначе Pbd=1, т.е. строка достоверна и в блоках 19-21 выполняется запись данных или чтение из СОЗУ данных. Параллельно при записи в СОЗУ данных выполняется установка признака в памяти флагов. Конец.
  4. Если А Teg, то сначала проверяется значение триггера достовер-ности сектора Trdsek (блок 3). Если Trdsek=0, то в памяти тегов имеется не-достоверный сектор, подлежащий замещению без выполнения процедуры обновления ОП. В блоке 4 в RgB фиксируется адрес сектора, у которого бит достоверности di=0.
  5. В блоке 7 в памяти бит достоверности строк сбрасываются все би-ты сектора. Выполняется загрузка нового тега, перезапись адреса сектора СОЗУ данных и установка бита достоверности сектора в памяти тегов. При этом автоматически в регистре бит неиспользования секторов будет уста-новлен соответствующий бит и выполняется процедура замещения запра-шиваемой строки из ОП в кэш-память (блоки 8-10). Переход к пункту 9.

    Если бит достоверности сектора Trdsek=1, то все сектора в памяти те-гов достоверны, и выполняется процедура обновления ОП строк сектора, назначенного в качестве кандидата на удаление.

    В блоке 5 по адресу, сформированному в RgB (блок 1) в качестве сек-тора кандидата на удаление, из памяти тегов считывается значение поля те-га [a] и фиксируется в буферном регистре RgTeg, а из памяти бит досто-верности строк по этому же адресу считываются 16 бит достоверности строк сектора и фиксируются в RgP.
  6. Далее анализируется значение Rg P (блок 6), и если он не равен ну-лю, то на выходах шифратора CD (рисунок 2.12) формируется адрес строки, у которой бит достоверности равен 1, а из памяти флагов выбирается зна-чение признака записи в эту строку и фиксируется в TrFL (блок 11).
  7. Если флаг равен нулю, то в Rg P сбрасывается бит достоверности строки с выходов DC (блок 16) и выполняется переход к блоку 6 для анализа содержимого Rg P на равенство нулю. Иначе в строку была произведена хотя бы одна запись и в памяти флагов сбрасывается соответствующий бит, а из СОЗУ данных считывается строка в RgDIоп (блок 13) и записывается в ОП на место старой по адресу, определяемому содержимым RgTeg и шифратором адреса строки с битом достоверности равным "1" (блоки 14-15).

    В Rg P сбрасывается соответствующий бит достоверности строки (блок 16) и переход на анализ содержимого Rg P. Пункт 6 выполняется в цикле до тех пор, пока Rg P не станет равным нулю.
  8. Если Rg P = 0, то выполняется пункт 5 (блок 7).
  9. Из ОП считывается запрашиваемая строка (блоки 8-9), а в блоке 10 осуществляется запись считанной строки в СОЗУ данных и установка бита достоверности новой строки. Переход на пункт 3 для выполнения чтения или записи данных в СОЗУ данных.

На основе данного алгоритма можно разработать алгоритмы работы кэш-памяти и для других методов распределения и стратегий обновления ОП и замещения кэш-памяти. Следует заметить, что эффективность использования кэш-памяти су-щественно зависит не только от правильно выбранных методов распреде-ления кэш-памяти и стратегий обновления ОП и замещения кэш-памяти, но и от ее технических характеристик: емкости СОЗУ данных, времени доступа и размера строки. Так, чем больше емкость СОЗУ данных, тем больше дан-ных может храниться в кэш-памяти, а следовательно, тем выше вероятность попадания при обращении к данным. Правильный выбор стратегии заме-щения кэш-памяти позволяет хранить в кэш-памяти только активные стро-ки, а использование флаговой логики обновления ОП сокращает количест-во обращений к ОП. Сквозная запись с применением буфера записи в ОП позволяет реализовать принцип отложенной записи в ОП, что сокращает время простоя процессора при обращении к кэш-памяти. Таким образом, правильный выбор сочетания различных методов организации кэш-памяти позволяет существенно повысить вероятность обращения к ней до 85-95%, а разделение кэш-памяти на память программ и данных позволит не только иметь две кэш-памяти достаточно большой емкости, но и обеспечить при-менение различных стратегий обновления и замещения наиболее эффек-тивных к каждому типу данных: команд и операндов.

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