Эта статья поднимает множество проблем. Пожалуйста, помогите улучшить его или обсудите эти проблемы на странице обсуждения . ( Узнайте, как и когда удалить эти сообщения-шаблоны ) ( Узнайте, как и когда удалить этот шаблон сообщения )
|
Модель плоской памяти или линейная модель памяти относится к парадигме адресации памяти, в которой « память представляется программе как единое непрерывное адресное пространство ». [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-битный адрес.)
См. Также [ править ]
- Адресное пространство
- Модель памяти (значения)
Ссылки [ править ]
- ^ Гонсалес, Антонио; Латорре, Фернандо; Магклис, Григориос (2011). Микроархитектура процессора: перспективы внедрения . Издатели Morgan & Claypool. п. 72. ISBN 9781608454525.
- ^ Общее описание реального режима "Физический адрес может быть вычислен как Value_in_segment_register.
- 16 + Value_in_offset_register. "