Виртуальная память хорошо поддерживается современным оборудованием, но распределение памяти на уровне приложений по-прежнему является всем реализованным программным обеспечением, будь то управление памятью кучи памяти a-la C и С++ или сборка мусора на уровне VM.
Идя дальше классического ручного управления памятью и дебатов по сборке мусора, почему нет аппаратных примитивов, которые могут помочь создать эффективные схемы управления памятью и/или сборку мусора в пользовательском пространстве (возможно, открытые или встроенные в ОС, а затем различные виртуальные машины).
Аппаратное обеспечение используется для ускорения графических операций, разгрузки различных частей сетевого стека, а криптографические алгоритмы и аудио/видео кодеки часто реализуются на аппаратных средствах, почему нельзя создавать блоки для управления памятью более высокого уровня? Кажется настолько вездесущим, но я не знаю каких-либо аппаратных решений.
Учитывая мое отсутствие аппаратных знаний, это немного мрачная область для меня, но мне интересно услышать
- если есть такая вещь вообще (по крайней мере на стадии исследования), или
- будет или не даст никакой пользы от обычного управления памятью или, альтернативно,
- почему невозможно создать такую вещь в аппаратном обеспечении?