Плоская модель памяти или линейная модель памяти относится к парадигме адресации памяти , в которой « память представляется программе как единое непрерывное адресное пространство ». [1] Процессор может напрямую (и линейно ) обращаться ко всем доступным ячейкам памяти , не прибегая к каким-либо схемам переключения банков , сегментации памяти или страничного обмена .
Управление памятью и трансляция адресов по-прежнему могут быть реализованы поверх плоской модели памяти для улучшения функциональности операционной системы , защиты ресурсов, многозадачности или для увеличения объема памяти сверх ограничений, накладываемых физическим адресным пространством процессора, но ключевой особенностью плоской модели памяти является то, что все пространство памяти является линейным, последовательным и непрерывным.
В простом контроллере или в однозадачном встроенном приложении, где управление памятью не требуется и нежелательно, плоская модель памяти является наиболее подходящей, поскольку она обеспечивает наиболее простой интерфейс с точки зрения программиста с прямым доступом ко всем ячейкам памяти и минимальной сложностью конструкции.
В компьютерной системе общего назначения, требующей многозадачности, распределения ресурсов и защиты, система плоской памяти должна быть дополнена некоторой схемой управления памятью, которая обычно реализуется посредством комбинации выделенного оборудования (внутри или снаружи ЦП) и программного обеспечения, встроенного в операционную систему. Модель плоской памяти (на уровне физической адресации) по-прежнему обеспечивает наибольшую гибкость для реализации этого типа управления памятью.
Модели памяти
Большинство современных моделей памяти попадают в одну из трех категорий:
Плоская модель невыгружаемой памяти
- Простой интерфейс для программистов, чистый дизайн
- Максимальная гибкость благодаря равномерной скорости доступа (переключение страниц сегментированной памяти обычно приводит к различной задержке из-за более длительного доступа к другим страницам, либо из-за дополнительной логики ЦП при смене страницы, либо из-за требований к оборудованию)
- Минимальное количество аппаратного обеспечения и ресурсов ЦП для простых приложений контроллера [ требуется разъяснение ]
- Максимальная скорость выполнения, так как нет необходимости обращаться к вспомогательным структурам данных, таким как сегмент или таблица страниц в оперативной памяти
- Не подходит для обычных вычислений или многозадачных операционных систем.
Модель страничной памяти
- Подходит для многозадачности, общего проектирования операционных систем, защиты и распределения ресурсов.
- Подходит для реализации виртуальной памяти
- Больше ресурсов ЦП, немного ниже скорость
- Более сложный в программировании
- Жесткие границы страниц не всегда наиболее эффективны в использовании памяти
- Эта модель памяти необходима при использовании расширения физического адреса (PAE) в процессорах Pentium Pro и более поздних процессорах x86 для поддержки 36-битных физических адресов для адресации более 4 ГБ физической памяти.
модель сегментированной памяти x86
- Аналогично страничной памяти, но страничная организация достигается путем неявного сложения двух относительно смещенных регистров: сегмент:смещение
- Изменяемые границы страниц, более эффективные и гибкие, чем модель страничной памяти
- Довольно сложно и неудобно с точки зрения программиста.
- Более сложно для компиляторов
- Страницы могут перекрываться / плохая защита и изоляция ресурсов
- Соответствие трансляции адреса «многие к одному»: многие комбинации сегмент:смещение преобразуются в один и тот же физический адрес.
- Большая вероятность ошибок программирования
- Реализовано в оригинальных процессорах Intel 8086, 8088 , 80186 , 80286 и поддерживается 80386 и всеми последующими машинами x86 вплоть до современных процессоров Pentium и Core 2. Эта модель памяти сохранилась с тех пор в машинах x86, которые теперь обеспечивают многорежимную работу и редко работают в совместимом сегментированном режиме. [ необходимо разъяснение ] Подробности см . в разделе сегментация памяти x86 .
- экономит оперативную память за счет перемещения адреса сегмента, что позволяет выполнять короткие переходы, требующие меньше байтов.
В архитектурах x86 при работе в реальном режиме (или эмуляции) физический адрес вычисляется как: [2]
- Адрес = 16 × сегмент + смещение
(То есть 16-битный сегментный регистр сдвигается влево на 4 бита и добавляется к 16-битному смещению, в результате чего получается 20-битный адрес.)
Смотрите также
Ссылки
- ^ Гонсалес, Антонио; Латорре, Фернандо; Магклис, Григориос (2011). Микроархитектура процессора: перспективы реализации. Morgan & Claypool Publishers. стр. 72. ISBN 9781608454525.
- ^ Общее описание реального режима «Физический адрес может быть вычислен как Value_in_segment_register
- 16 + Значение_в_регистре_смещения."