Режимы доступа к памяти
Режимы доступа к памяти
Все обращения к памяти в AS/400 выполняются под управлением четырех битов режима: «Сквозная запись» W (Write Through), «Кэширование запрещено» I (Caching Inhibited), «Когерентность памяти» M (Memory Coherence ) и «Отслеживаемая память» G (Guarded Storage). Одна из характеристик RISC-процессоров — способность программ контролировать аппаратуру. Значения этих четырех разрядов устанавливаются SLIC для обеспечения части такого контроля на уровне страниц. При всех транслируемых обращениях значения разрядов берутся из PTE. Для всех реальных адресов (E=R или при отключенном перемещении) подразумевается, что биты имеют значения 0, 0, 1 и 1. Биты W и I управляют тем, как процессор использует свой кэш данных. Бит M (обычно используется на многопроцессорных системах) задает, должен ли процессор гарантировать когерентность памяти. Бит G контролирует выборку данных и команд вне порядка их следования.
Приведем некоторую дополнительную информацию о назначении каждого из этих разрядов:
1.W (Write Through)— сквозная запись.
Если W=1, то любое изменение кэша данных записывается и в основную память. Этот разряд устанавливается, если данные в основной памяти должны быть постоянно в актуальном состоянии, например, потому что они используются несколькими процессорами. Команды загрузки будут использовать копию данных из кэша, если она там есть. При сохранении будут обновляться копии в кэше и основной памяти.
2.I (Caching Inhibited)— кэширование запрещено.
Если I=1, то доступ выполняется непосредственно к основной памяти. Во время обращения ни данные по этому адресу, ни содержащий их блок памяти не копируются в кэш. Отключение кэширования может быть полезно при последовательной обработке больших блоков данных, которая иначе будет вызывать постоянную смену содержимого кэша.
3.M (Memory Coherence) — когерентность памяти.
Если M=1, то процессор должен гарантированно обеспечивать когерентность данных. Под когерентностью понимают упорядочение операций записи по данному адресу памяти. Дело в том, что для повышения производительности аппаратура управления памятью иногда может записывать данные в память не в том порядке, в котором процессор выдает команды сохранения. Такой механизм может вызвать проблемы, если область памяти совместно используется несколькими процессорами и порядок операций записи в данную область памяти важен. Установка данного бита для страницы упорядочивает операции записи в эту страницу, выполняемые всеми процессорами.
4.G (Guarded Storage) — отслеживаемая память.
Если G=1, то выборка данных и команд вне порядка их следования с данной страницы запрещена. Для более высокой производительности некоторые процессоры могут выполнять команду до того, как это потребуется при последовательном выполнении. Предположим, например, что у некоторого процессора имеется конвейер команд, не занятый в течение данного цикла. Если далее в потоке команд есть подходящая для конвейера, то процессор начнет ее выполнять. Это называется выполнением вне порядка следования. Конечно, машина должна вести себя в соответствии с моделью последовательного выполнения. Если до того момента, когда процессор в нормальном случае дошел бы до команды, выполненной вне порядка следования, происходит переход или прерывание, то состояние процессора должно быть восстановлено так, как если бы он никогда не выполнял эту команду. Иногда поведение области памяти может не соответствовать модели опережающего выполнения. Например, если область памяти используется устройством ввода-вывода, то опережающая запись в нее может вызвать выполнение ошибочной операции. Если SLIC необходимо гарантировать, что подобного не произойдет, то для соответствующей страницы можно включить бит G.