Модель плоской памяти

редактировать

Модель плоской памяти или линейная модель памяти относится к адресации памяти парадигма, в которой «память представляется программе как единое непрерывное адресное пространство ». ЦП может напрямую (и линейно ) адресовать все доступные ячейки памяти без необходимости прибегать к каким-либо видам схемы сегментации памяти или подкачки.

Управление памятью и преобразование адресов все еще могут быть реализованы поверх плоской модели памяти, чтобы облегчить функциональность операционной системы, защиту ресурсов, многозадачность или для увеличения объема памяти сверх ограничений, налагаемых физическим адресным пространством процессора, но ключевой особенностью плоской модели памяти является то, что все пространство памяти является линейным, последовательным и непрерывным от нулевого адреса до MaxBytes - 1.

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

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

Большинство архитектур процессоров реализуют дизайн плоской памяти, включая все ранние 8-битные процессоры, Motorola серии 68000 и т. Д. Единственным исключением были оригинальные 8086, первый 16-разрядный микропроцессор Intel, в котором реализована грубая сегментированная модель памяти, позволяющая получить доступ к более чем 64 КБ памяти без затрат на расширение всех адресов до более чем 16-разрядных.

Содержание
  • 1 Модели памяти
    • 1.1 Модель плоской памяти
    • 1.2 Модель выгружаемой памяти
    • 1.3 Модель сегментированной памяти X86
  • 2 См. Также
  • 3 Ссылки
Модели памяти

Большинство современных моделей памяти попадают в одну из трех категорий:

Модель плоской памяти

  • Простой интерфейс для программистов, чистый дизайн
  • Наибольшая гибкость благодаря равномерной скорости доступа (сегментированная память переключение страниц обычно вызывает различную задержку из-за более длительного доступа к другим страницам, либо из-за дополнительной логики ЦП при смене страницы, либо из-за требований к оборудованию)
  • Минимальное количество оборудования и ресурсов ЦП для простых приложений контроллера
  • Максимальная скорость выполнения
  • Не подходит для обычных вычислительных или многозадачных операционных систем, если не усилен дополнительным оборудованием / программным обеспечением для управления памятью; но это почти всегда имеет место в современных процессорах CISC, которые реализуют передовые технологии управления памятью и защиты над плоской моделью памяти. Linux например использует модель плоской памяти, см. Сегментация памяти x86 # Практики.

Модель выгружаемой памяти

  • Подходит для многозадачности, общего проектирования операционных систем, защиты и распределения ресурсов
  • Подходит для реализации виртуальной памяти
  • Больше ресурсов ЦП, несколько более низкая скорость
  • Сложнее программировать
  • Жесткие границы страниц, не всегда наиболее эффективно с точки зрения памяти
  • Это модель памяти Pentium Pro и более новые процессоры x86 используют 32-битный режим адресации при адресации памяти с использованием 36-битных адресов. Это называется Physical Address Extension

Модель сегментированной памяти X86

  • Подобно страничной памяти, но разбиение на страницы достигается неявным сложением двух относительно сдвинутых регистров: сегмент: смещение
  • границы переменных страниц, более эффективен и гибок, чем модель страничной памяти
  • Довольно сложно и неудобно с точки зрения программиста
  • Сложнее для компиляторов
  • Страницы могут перекрываться / плохая защита и изоляция ресурсов
  • Соответствие преобразования адресов "многие в один": многие комбинации сегмент: смещение преобразуются в один и тот же физический адрес
  • Повышенная вероятность ошибок программирования
  • Реализовано в исходный Intel 8086, 8088, 80186, 80286, и поддерживается 80386 и всеми последующими машинами x86 через по настоящее время процессоры Pentium и Core 2. С тех пор эта модель памяти осталась в машинах x86, которые теперь обеспечивают многорежимную работу и редко работают в совместимом сегментированном режиме. Подробнее см. сегментация памяти x86.

В архитектурах x86 при работе в реальном режиме (или эмуляции) физический адрес вычисляется как:

Адрес = 16 × сегмент + смещение

(т.е. 16-битный сегментный регистр сдвигается влево на 4 бита и добавляется к 16-битному смещению, в результате получается 20-битный адрес.)

См. Также
Ссылки
Последняя правка сделана 2021-05-20 08:13:28
Содержание доступно по лицензии CC BY-SA 3.0 (если не указано иное).
Обратная связь: support@alphapedia.ru
Соглашение
О проекте