Какое поколение виртуального запоминающего устройства

Обновлено: 21.11.2024

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

Миграция страниц – это средство, с помощью которого операционная система может динамически перемещать данные на устройства памяти, которые обеспечивают наилучшие характеристики задержки, пропускной способности, емкости и сохраняемости на разных этапах жизненного цикла программы. Ключом к хорошей производительности является быстрая миграция страниц. В этом тезисе рассматриваются два узких места, которые в настоящее время ограничивают производительность миграции страниц: высокая согласованность перевода и низкопроизводительное копирование страниц. Чтобы уменьшить первый источник накладных расходов, этот тезис реализует аппаратную поддержку когерентности трансляции, объединяя ее с существующими протоколами когерентности кэша. Чтобы уменьшить второй источник накладных расходов, в этой диссертации реализована поддержка ОС, которая распараллеливает, агрегирует и консолидирует операции миграции страниц, чтобы максимизировать пропускную способность миграции.

Гетерогенные системы также продолжают тенденцию, давно наблюдаемую в традиционных гомогенных системах памяти, — стремление к постоянному увеличению емкости памяти. Конкретные типы новых систем с технологиями стекирования кристаллов и постоянной памятью с байтовой адресацией еще больше увеличивают общую емкость физической памяти, которая должна быть адресуемой для каждого процесса. Следовательно, таблицы страниц становятся больше, а TLB промахивается чаще. Чтобы уменьшить увеличение накладных расходов на преобразование адресов, в этой диссертации предлагаются программные методы, облегчающие возможность сжатия записей TLB, зависящих от непрерывности трансляции.

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

Виртуальная память – это область вторичной памяти компьютерной системы (например, жесткого диска или твердотельного накопителя), которая действует так, как если бы она была частью оперативной или основной памяти системы.

В идеале данные, необходимые для запуска приложений, хранятся в ОЗУ, откуда ЦП может быстро получить к ним доступ. Но при запуске больших приложений или при одновременном запуске многих приложений оперативная память системы может переполниться.

Чтобы обойти эту проблему, некоторые данные, хранящиеся в ОЗУ, которые активно не используются, можно временно переместить в виртуальную память (физически расположенную на жестком диске или другом устройстве хранения). Это освобождает место в ОЗУ, которое затем можно использовать для размещения данных, к которым система должна получить доступ в ближайшее время.

За счет обмена данными между ОЗУ и виртуальной памятью, когда они не нужны, и обратно из виртуальной памяти в ОЗУ, когда они нужны, система может продолжать бесперебойно работать с гораздо меньшим объемом физической памяти, чем в противном случае.

Виртуальная память позволяет системе запускать более крупные приложения или запускать больше приложений одновременно без нехватки оперативной памяти. В частности, система может работать так, как если бы ее общие ресурсы ОЗУ были равны объему физической ОЗУ плюс объем виртуальной ОЗУ.

Зачем нужна виртуальная память?

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

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

Другим ключевым фактором использования виртуальной памяти является то, что все компьютерные системы имеют ограничение (продиктованное аппаратным и программным обеспечением) на объем физической оперативной памяти, которую можно установить. Использование виртуальной памяти позволяет системе продолжать работу за пределами физического объема ОЗУ.

Виртуальная память и физическая память

Поскольку оперативная память дороже виртуальной, может показаться, что при прочих равных условиях компьютеры должны быть оснащены как можно меньшим объемом оперативной памяти и как можно большим объемом виртуальной памяти.

Но на самом деле характеристики виртуальной памяти отличаются от характеристик физической памяти. Основное различие между виртуальной и физической памятью заключается в том, что ОЗУ намного быстрее виртуальной памяти.

Поэтому система с 2 ГБ физической ОЗУ и 2 ГБ виртуальной памяти не будет обеспечивать такую ​​же производительность, как аналогичная система с 4 ГБ физической ОЗУ. Чтобы понять почему, необходимо понять, как работает виртуальная память.

Как работает виртуальная память?

Когда приложение (включая операционную систему) работает, оно сохраняет расположение программных потоков и других данных по виртуальному адресу, в то время как данные фактически хранятся по физическому адресу в ОЗУ. Если позже это пространство ОЗУ понадобится другому процессу более срочно, данные могут быть выгружены из ОЗУ в виртуальную память.

Ответственность за отслеживание всех этих данных при их обмене между физической и виртуальной памятью ложится на диспетчер памяти компьютера. Диспетчер памяти поддерживает таблицу, которая сопоставляет виртуальные адреса, используемые операционной системой и приложениями, с физическими адресами, в которых фактически хранятся данные. в правильное физическое местоположение.

Компьютер может запускать потоки и управлять данными только в ОЗУ, а не в виртуальной памяти. И для подкачки необходимых данных в ОЗУ требуется незначительное количество времени. Следовательно, использование виртуальной памяти связано с падением производительности.

Иными словами, система с 4 ГБ ОЗУ, как правило, обеспечивает более высокую производительность, чем система с 2 ГБ ОЗУ и 2 ГБ виртуальной памяти, из-за падения производительности, вызванного свопингом, и по этой причине говорят, что виртуальная память медленнее, чем оперативная память.

Одна потенциальная проблема с виртуальной памятью заключается в том, что если объем имеющейся оперативной памяти слишком мал по сравнению с объемом виртуальной памяти, система может в конечном итоге тратить большую часть ресурсов ЦП на обмен данными туда и обратно. Тем временем выполнение полезной работы почти останавливается — процесс, известный как пробуксовка.

Чтобы предотвратить перегрузку, обычно необходимо уменьшить количество одновременно запущенных приложений или просто увеличить объем оперативной памяти в системе.

Операционные системы, такие как большинство версий Windows, обычно рекомендуют пользователям не увеличивать объем виртуальной памяти более чем в 1,5 раза по сравнению с объемом физической ОЗУ. Таким образом, система с 4 ГБ ОЗУ должна иметь виртуальную память не более 6 ГБ.

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

Виртуальная память может работать совместно с основной памятью компьютера, обеспечивая более быстрые и плавные операции.

Как увеличить виртуальную память в системе

Большинство операционных систем позволяют пользователям увеличивать виртуальную память со страницы конфигурации.

  • В Windows пользователи также могут разрешить системе динамически управлять объемом виртуальной памяти.
  • Аналогичным образом в Mac OS пользователи могут использовать панель настроек для выделения виртуальной памяти.

Типы виртуальной памяти: пейджинг и сегментация

Системная операционная система может управлять виртуальной памятью различными способами, и два наиболее распространенных подхода – разбиение по страницам и сегментация.

Страница виртуальной памяти

В системе, использующей подкачку, ОЗУ делится на несколько блоков, обычно размером 4 КБ, называемых страницами. Затем процессам выделяется ровно столько страниц, сколько необходимо для удовлетворения их требований к памяти. Это означает, что всегда будет теряться небольшой объем памяти, за исключением необычного случая, когда процессу требуется ровно целое число страниц.

Во время обычной работы страницы (т. е. блоки памяти размером 4 КБ) передаются между ОЗУ и файлом подкачки, представляющим виртуальную память.

Сегментация виртуальной памяти

Сегментация — это альтернативный подход к управлению памятью, при котором вместо страниц фиксированного размера процессам выделяются сегменты разной длины, точно соответствующие их требованиям. Это означает, что, в отличие от страничной системы, в сегменте память не тратится впустую.

Сегментация также позволяет разделить приложения на логически независимые адресные пространства, что упрощает их совместное использование и повышает безопасность.

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

По мере накопления этих небольших фрагментов может выделяться все меньше и меньше сегментов полезного размера. И если ОС начнет использовать эти маленькие сегменты, то придется отслеживать огромное их количество, и каждому процессу потребуется использовать много разных сегментов, что неэффективно и может снизить производительность.

Преимущества и недостатки виртуальной памяти

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

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

Миграция страниц – это средство, с помощью которого операционная система может динамически перемещать данные на устройства памяти, которые обеспечивают наилучшие характеристики задержки, пропускной способности, емкости и сохраняемости на разных этапах жизненного цикла программы. Ключом к хорошей производительности является быстрая миграция страниц. В этом тезисе рассматриваются два узких места, которые в настоящее время ограничивают производительность миграции страниц: высокая согласованность перевода и низкопроизводительное копирование страниц. Чтобы уменьшить первый источник накладных расходов, этот тезис реализует аппаратную поддержку когерентности трансляции, объединяя ее с существующими протоколами когерентности кэша. Чтобы уменьшить второй источник накладных расходов, в этой диссертации реализована поддержка ОС, которая распараллеливает, агрегирует и консолидирует операции миграции страниц, чтобы максимизировать пропускную способность миграции.

Гетерогенные системы также продолжают тенденцию, давно наблюдаемую в традиционных гомогенных системах памяти, — стремление к постоянному увеличению емкости памяти. Конкретные типы новых систем с технологиями стекирования кристаллов и постоянной памятью с байтовой адресацией еще больше увеличивают общую емкость физической памяти, которая должна быть адресуемой для каждого процесса. Следовательно, таблицы страниц становятся больше, а TLB промахивается чаще. Чтобы уменьшить увеличение накладных расходов на преобразование адресов, в этой диссертации предлагаются программные методы, облегчающие возможность сжатия записей TLB, зависящих от непрерывности трансляции.

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

Физическая и виртуальная память — это формы памяти (внутреннее хранилище данных). Физическая память существует на микросхемах (оперативная память) и на запоминающих устройствах, таких как жесткие диски.Прежде чем процесс может быть выполнен, он должен сначала загрузиться в физическую память RAM (также называемую основной памятью).

Виртуальная память — это процесс, посредством которого данные (например, программный код) могут быстро обмениваться между местами хранения в физической памяти и оперативной памятью. Быстрый обмен данными является плавным и прозрачным для пользователя. Использование виртуальной памяти позволяет использовать более крупные программы и позволяет этим программам работать быстрее.

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

Современные системы виртуальной памяти заменяют более ранние формы физического обмена файлами и фрагментации программ.

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

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

Интеграция виртуальной памяти осуществляется либо с помощью процесса, называемого сегментацией по требованию, либо с помощью другого процесса, называемого пейджингом по требованию. Пейджинг по требованию более распространен, потому что он проще по дизайну. Процессы виртуальной памяти с подкачкой по запросу не передают данные с диска в ОЗУ, пока программа не вызовет страницу. Существуют также упреждающие процессы подкачки, используемые операционными системами, которые пытаются читать вперед и выполнять передачу данных до того, как данные действительно потребуются в ОЗУ. После выгрузки данных процессы подкачки отслеживают использование памяти и постоянно вызывают данные между ОЗУ и жестким диском. Состояния страниц (действительные или недействительные, доступные или недоступные для ЦП) регистрируются в таблице виртуальных страниц. Когда приложения пытаются получить доступ к недопустимым страницам, диспетчер виртуальной памяти, который инициирует подкачку памяти, перехватывает сообщение об ошибке страницы. Быстрое преобразование виртуальных адресов в реальный физический адрес осуществляется с помощью процесса, называемого сопоставлением. Отображение является важной концепцией процесса виртуальной памяти. Отображение виртуальной памяти работает путем связывания реальных аппаратных адресов (адреса физического хранилища) для блока или страницы хранимых данных с виртуальным адресом, поддерживаемым процессом виртуальной памяти. Реестр виртуальных адресов позволяет осуществлять выборочную и рандомизированную трансляцию данных с дисков для последовательного чтения. По сути, процессы виртуальной памяти предоставляют альтернативные адреса памяти для данных, и программы могут быстро использовать данные, используя эти виртуальные адреса вместо физического адреса страницы данных.

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

Несмотря на то, что подкачки страниц данных (определенной длины данных или тактовых импульсов данных) посредством подкачки виртуальной памяти между жестким диском и оперативной памятью выполняются очень быстро, чрезмерная зависимость от подкачки виртуальной памяти может снизить общую производительность системы.Если объем жесткого диска, выделенного для хранения файлов подкачки, недостаточен для удовлетворения требований системы, которая в значительной степени зависит от обмена данными через виртуальную память, пользователи могут получать сообщения «НЕДОСТАТОЧНО ПАМЯТИ» и ошибки, даже хотя у них много неиспользуемого места на жестком диске.

К началу 2003 г. персональные компьютеры с объемом ОЗУ 1024 МБ (1 мегабайт = 1 000 000 байт) были широко доступны в Соединенных Штатах, а персональные компьютеры многих марок имели емкость жесткого диска 60 ГБ (1 гигабайт равен 1 миллиарду байтов). байт). Относительные пределы как емкости жесткого диска, так и емкости оперативной памяти неуклонно улучшаются с развитием технологии микрочипов.

Читайте также: