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