Нужна ли компьютерной системе как кэш-память, так и виртуальная память, или одна может заменить другую? Почему или почему нет?

#computer-science #cpu-architecture #virtual-memory

#информатика #cpu-архитектура #виртуальная память

Вопрос:

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

Комментарии:

1. Виртуальная память и кэш-память — это две совершенно разные вещи, это не отношение «одно или другое». Виртуальная память — это абстракция для решения множества проблем, связанных с предоставлением физических адресов приложениям, в то время как кэш позволяет избежать повторных дорогостоящих обращений к основной памяти. «Однако виртуальная память увеличивает емкость основной памяти» — нет, виртуальная память — это просто операционная система, скрывающая физические адреса, чтобы создать иллюзию, что каждый процесс имеет доступ ко всему адресному пространству. Виртуальная память на самом деле не увеличивает физическую емкость.

2. Однако виртуальная память увеличивает емкость основной памяти. — Подкачка делает это и включается виртуальной памятью. Но что еще более важно, виртуальная память предоставляет каждому процессу собственное виртуальное адресное пространство. Совершенно не связано с тем, что делает кэш. Ни то, ни другое не требуется для компьютерной системы, например, такие операционные системы, как DOS и Atari ST’s TOS, работали на системах без кэша или MMU.

Ответ №1:

Как указано в комментариях, виртуальная память и кэш — это разные вещи, и они не взаимозаменяемы.

Виртуальная память — это абстракция физической памяти системы — это позволяет размещать последовательные адреса виртуальной памяти в разных местах памяти (и не обязательно последовательные физические адреса). Это также, по-видимому, на бумаге приводит к тому, что система имеет больше памяти, чем на самом деле. Например, объем памяти, выделенный для каждой программы, огромен и потенциально превышает объем памяти вашего компьютера. Однако виртуальные адреса позволяют ОС использовать физическую память только по мере необходимости, сохраняя при этом ожидаемое пространство виртуальных адресов (и, следовательно, то, как стек может уменьшаться, а куча может увеличиваться).

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

Таким образом, хотя оба они технически не нужны (некоторые встроенные системы будут использовать только физические адреса), вам понадобятся оба на вашем обычном компьютере.

TL; DR: Виртуальная память используется ОС для управления вашей физической памятью, что позволяет системе создавать впечатление, что у нее больше памяти для каждой программы (но на самом деле вы по-прежнему ограничены объемом имеющейся у вас физической памяти). Кэш используется для ускорения доступа к часто используемым данным за счет их хранения на носителе с более быстрым доступом.

Комментарии:

1. В большинстве систем стеки растут вниз, обычно начиная с вершины виртуального адресного пространства. В некоторых ISA возможен любой выбор, но для использования эффективных инструкций, таких как x86 call и ret , например, для кода ядра, встроенного в то, как аппаратные прерывания и исключения используют стек.

2. Но да, в большинстве конструкций ЦП кэш прозрачно ускоряет физическую оперативную память. (Исторически у некоторых процессоров были виртуально адресованные кэши L1, которые требовали, чтобы ОС очищала их при переключении контекста, но большинство современных систем имеют физически помеченные кэши.) В любом случае кэши ортогональны виртуальной памяти. Одно будет работать без другого, и их преимущества не пересекаются.

3. Не сообщайте об изменениях в тексте с помощью «edit:», особенно о том, что нужно только в сообщении edit changelog. Исправил это для вас.