Тестирование софта - статьи

       

Типы зависимостей для подсистемы управления памятью


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

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

Мы используем следующие типы зависимостей для буферов, входящих в состав MMU:

  • IndexEqual — совпадение используемых множеств;
  • EntryEqual — совпадение строк внутри множества;
  • BlockEqual — совпадение данных внутри строки;
  • EntryReplace — обращение к данным, строка с которыми была вытеснена из буфера предшествующей инструкцией;
  • BlockEqual — совпадение данных внутри строки.

В целом для подсистемы управления памятью можно выделить следующие типы элементарных зависимостей:

  • VAEqual — совпадение/несовпадение виртуальных адресов;
  • VPNEqual — совпадение/несовпадение номеров страниц виртуальной памяти;
  • PAEqual — совпадение/несовпадение физических адресов;
  • PFNEqual — совпадение/несовпадение номеров страниц физической памяти;
  • L1IndexEqual — совпадение/несовпадение множеств кэш-памяти L1;
  • L2IndexEqual — совпадение/несовпадение множеств кэш-памяти L2;
  • L1Replace — совпадение/несовпадение тэга кэш-памяти L1 с тэгом данных, которые были вытеснены из кэш-памяти предшествующей инструкцией;
  • L2Replace — совпадение/несовпадение тэга кэш-памяти L2 с тэгом данных, которые были вытеснен из кэш-памяти предшествующей инструкцией.

В силу иерархической организации памяти зависимости по адресам имеют многоуровневую структуру. Фрагмент дерева возможных зависимостей представлен на рисунке 2 (пунктирная дуга соответствует значению false, сплошная — значению true). Результирующая зависимость между инструкциями соответствует пути от корня до листовой вершины.


Рисунок 2. Фрагмент иерархии зависимостей по адресам

Содержание раздела