Из Википедии, свободной энциклопедии
  (Перенаправлен с линейной адресации )
Перейти к навигации Перейти к поиску

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

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

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

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

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

Модели памяти [ править ]

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

Плоская модель памяти [ править ]

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

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

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

Сегментированная модель памяти X86 [ править ]

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

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

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

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

См. Также [ править ]

  • Адресное пространство
  • Модель памяти (значения)

Ссылки [ править ]

  1. ^ Гонсалес, Антонио; Латорре, Фернандо; Магклис, Григориос (2011). Микроархитектура процессора: перспективы внедрения . Издатели Morgan & Claypool. п. 72. ISBN 9781608454525.
  2. ^ Общее описание реального режима "Физический адрес может быть вычислен как Value_in_segment_register.
    • 16 + Value_in_offset_register. "