Реклама:

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

Естественно, виртуальная память и кэш-память кое в чем различаются. Кэш-промахи обрабатываются аппаратно, а ошибки отсутствия страниц обрабатываются операционной системой. Блоки кэш-памяти обычно гораздо меньше страниц (сравните: 64 байта против 8 Кбайт). Кроме того, таблицы страниц индексируются по старшим битам виртуального адреса, а кэш-память индексируется по младшим битам адреса памяти. Тем не менее важно понимать, что различие здесь только в реализации.

Виртуальная память UltraSPARC III || Оглавление || Виртуальные команды ввода-вывода