Плоская модель памяти
Эта статья нуждается в дополнительных цитатах для проверки . ( декабрь 2009 г. ) |
Модель плоской памяти или модель линейной памяти относится к парадигме адресации памяти , в которой « память представляется программе как единое непрерывное адресное пространство ». [1] ЦП , может напрямую (и линейно ) обращаться ко всем доступным ячейкам памяти не прибегая к каким-либо переключениям банков , сегментации памяти или подкачки схемам .
Управление памятью и трансляция адресов по-прежнему могут быть реализованы поверх плоской модели памяти, чтобы облегчить функциональность операционной системы , защитить ресурсы, многозадачность или увеличить емкость памяти за пределы, налагаемые физическим адресным пространством процессора, но Ключевой особенностью плоской модели памяти является то, что все пространство памяти линейно, последовательно и непрерывно.
В простом контроллере или во встроенном приложении с одной задачей , где управление памятью не требуется и не желательно, модель плоской памяти является наиболее подходящей, поскольку она обеспечивает простейший интерфейс с точки зрения программиста с прямым доступом ко всей памяти. локации и минимальная сложность конструкции.
В компьютерной системе общего назначения, которая требует многозадачности, распределения ресурсов и защиты, плоская система памяти должна быть дополнена некоторой схемой управления памятью, которая обычно реализуется посредством комбинации выделенного аппаратного обеспечения (внутри или вне ЦП) и программного обеспечения, созданного в операционную систему. Модель плоской памяти (на уровне физической адресации) по-прежнему обеспечивает наибольшую гибкость для реализации этого типа управления памятью.
Модели памяти
[ редактировать ]Большинство современных моделей памяти попадают в одну из трех категорий:
Плоская модель памяти
[ редактировать ]- Простой интерфейс для программистов, чистый дизайн
- Наибольшая гибкость благодаря одинаковой скорости доступа (переключение страниц сегментированной памяти обычно вызывает различную задержку из-за более длительного доступа к другим страницам, либо из-за дополнительной логики ЦП при изменении страницы, либо из-за требований к оборудованию)
- Минимум аппаратного обеспечения и ресурсов ЦП для простых приложений контроллера [ нужны разъяснения ]
- Максимальная скорость выполнения. Просто нет никаких задержек из-за процессора или логики. [ почему? ]
- Не подходит для общих вычислительных или многозадачных операционных систем, если не улучшено. [ почему? ] с дополнительным аппаратным/программным обеспечением управления памятью; но это почти всегда имеет место в современных процессорах CISC , которые реализуют передовые технологии управления и защиты памяти на основе плоской модели памяти. Linux, например, использует плоскую модель памяти, см. сегментацию памяти x86#Practices .
Модель страничной памяти
[ редактировать ]- Подходит для многозадачности, общего проектирования операционной системы, защиты и распределения ресурсов.
- Подходит для реализации виртуальной памяти
- Больше процессорного пространства, несколько более низкая скорость
- Более сложно программировать
- Жесткие границы страниц, не всегда наиболее эффективные с точки зрения использования памяти.
- Эта модель памяти требуется при использовании расширения физических адресов (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). Микроархитектура процессора: перспектива реализации . Издательство Морган и Клейпул. п. 72. ИСБН 9781608454525 .
- ^ Общее описание реального режима «Физический адрес может быть рассчитан как Value_in_segment_register».
- 16 + Value_in_offset_register."