СУЭБ ИВТ СО РАН


А.М.Федотов

Словарные статьи в коллекции: (public_cat = Thesaurus of Information Technology: Dictionary Articles )

Некэшируемые данные

Поскольку проблема когерентности имеет отношение к тем данным, которые в ходе выполнения программы могут быть изменены, то одним из вероятных решений является запрет кэширования таких данных.

Технически запрет на кэширование отдельных байтов и слов достаточно трудно реализуем. Несколько проще сделать некэшируемым определенный блок данных. При обращении процессора к такому блоку складывается ситуация кэш-промаха, производится доступ к основной памяти, но копия блока в кэш-память не заносится. Для реализации подобного приема каждому блоку в основной памяти должен быть придан признак, указывающий, является ли блок кэшируемым или нет.
Если кэш-система состоит из раздельных кэшей команд и данных, сказанное относится главным образом к кэш-памяти данных, поскольку современные подходы к программированию не рекомендуют модификацию команд программы. Следовательно, по отношению к информации в кэше команд применяется только операция чтения, что не влечет проблемы когерентности.
В отношении того, какие данные не должны кэшироваться, имеется несколько подходов.
В первом варианте запрещается занесение в кэш лишь той части совместно используемых данных, которая служит для управления критическими секциями программы, то есть теми частями программы, где процессоры могут изменять разделяемые ими данные. Принятие решения о том, какие данные могут кэшироваться, а какие - нет, возлагается на программиста, что делает этот способ непрозрачным для пользователя.
Во втором случае накладывается запрет на кэширование всех совместно используемых данных, которые в процессе выполнения программы могут быть изменены. Естественно, что для доступа к таким данным приходится обращаться к медленной основной памяти и производительность процессора падает. На первый взгляд, в варианте, где запрещается кэширование только управляющей информации, производительность процессора будет выше, однако, прежде чем сделать такой вывод, нужно учесть одно обстоятельство. Дело в том, что для сохранения согласованности данных, модифицируемых процессором в ходе выполнения критической секции программы, блоки с копиями этих данных в кэш-памяти при выходе из критической секции нужно аннулировать. Данная операция носит название очистки кэш-памяти (cache flush). Очистка необходима для того, чтобы к моменту очередного входа в критическую секцию в кэш-памяти не осталось «устаревших» данных. Регулярная очистка кэша при каждом выходе из критической секции снижает производительность процессора за счет увеличения времени, нужного для восстановления копий в кэш-памяти. Ситуацию можно несколько улучшить, если вместо очистки всей кэш-памяти помечать те блоки, к которым при выполнении критической секции было обращение, тогда при покидании критической секции достаточно очищать только эти помеченные блоки.

Ключевые термины, связанные с термином : "Некэшируемые данные":

  1. Аппаратные способы решения проблемы когерентности [ru]
  2. Когерентность кэш-памяти [ru]

Литература

Основная

  1. Орлов С. А., Цилькер Б. Я. Организация ЭВМ и систем: Учебник для вузов. 2-е изд. — СПб.: Питер, 2011. — 688 с.: ил. - ISBN 978-5-49807-862-5.
Ключевые термины публикации:  Когерентность кэш-памяти;   Аппаратные способы решения проблемы когерентности;
Контекстный поиск: Задайте образец для поиска:
    

|Список терминов| |Терминдер тізімі| |Directory of Terms|
© 2013-2024, Евразийский национальный университет им. Л.Н.Гумилева, Астана
© 2007-2024, Новосибирский государственный университет, Новосибирск
© 1998-2024, Институт вычислительных технологий СО РАН, Новосибирск
© 1998-2024, Федотов А.М.
[FIT]
ФИТ НГУ       НГУ
ЕНУ им.Гумилева
ИВТ СО РАН
    Дата последней модификации: 16.08.2013