Минимально возможная фрагментация (эффективное распределение памяти).
Недостатки:
1) потери памяти на размещение таблиц страниц
2) потери процессорного времени на обработку таблиц страниц (диспетчер памяти).
3) Программы разбиваются на страницы случайно, без учета логических взаимосвязей, имеющихся в коде Þ межстраничные переходы осуществляются чаще, чем межсегментные + трудности в организации разделения программных модулей между выполняющими процессами
Адресные регистры (Address register) применяются для хранения адреса (или его части) ячейки в оперативной памяти. Этот адрес может участвовать в арифметических и логических операциях процессора. Во многих современных процессорах разделение регистров на адресные и регистры данных весьма условно: и в тех, и в других могут находиться как адрес, так и данные, а АЛУ не делает различий между адресом и данными.
Существуют следующие адресные регистры:
Базовый регистр (Base) – служит для указания начального адреса объекта в памяти при операциях с массивами и неявной адресации.
Указатель стека (Stack Pointer) – неявно используется в некоторых процессорах (в частности, Intel и Motorola) для организации работы со стеком.
Указатель базы (Base Pointer) – используется для удобства доступа к данным в стеке, которые не находятся в его вершине (например, параметры подпрограмм, переменные с модификатором auto в программах на Си и т.д.)
К адресным регистрам можно отнести регистры сегментного и страничного разделения памяти, а также селекторы сегментов.
|
|
Системные регистры центрального процессора
Системные регистры (System registers) предназначены для временного хранения операндов (смотри п. D.1.) и результатов вычислений. но не смотря на свое "единое" предназначение, эти устройства различаются по своим функциям. По ним регистры можно разделить на регистры данных, аккумуляторы, адресные и сегментные регистры, регистры стеков, указателями и счетчики команд, регистры флагов (или, как их раньше называли, слово состояния программы, Program Status Word) и прочие.
Регистры данных (Data Register) применяется для хранения промежуточных данных, участвуют в арифметических и логических операциях процессора. Аккумулятор, базовые и индексные регистры также можно использовать в качестве регистров данных.
Дескриптор сегмента — служебная структура в памяти, которая определяет сегмент. Длина дескриптора равна восьми байтам.
Структура сегментного дескриптора
· База (жёлтые поля, 32 бита) — начало сегмента в линейной памяти
· Лимит (красные поля, 20 бит) — (размер сегмента в байтах)-1 (База+Лимит = линейный адрес последнего байта)
· Права доступа (синие поля, 12 бит) — флаги, определяющие наличие сегмента в памяти, уровень защиты, тип, разрядность + один пользовательский флаг
|
|
Специальные типы организации памяти: - стековая (магазинная) память, FIFO -буфера. Сегмент стека, команды ЦП для работы со стеком
Магазинная (стековая) память организуется по принципу “Последний пришел, первый вышел” (LIFO- Last In First Out), или “Первый пришел, первый вышел” (FIFO- First In First Out).
|
Отличительным свойством памяти FIFO является наличие отдельного порта для чтения и отдельного — для записи данных. Благодаря наличию указателей и двухпортовой структуре памяти FIFO, стробы считывания и записи данных могут поступать на одноименные входы микросхемы в произвольном порядке. И если в памяти RAM операции чтения и записи данных выполняются строго последовательно во времени, то в памяти FIFO допускается выполнение записи и считывания в независимых друг от друга асинхронных режимах.
Недостатком FIFO является то, что содержимое уже прочитанной ячейки памяти может быть автоматически замещено новым значением, тогда как в RAM или ROM содержимое ячеек может быть изменено только путем непосредственной адресации и записи в них новых значений. Для предотвращения непредусмотренной потери данных в состав микросхем памяти FIFO введены флаги заполненности. В процессе функционирования память FIFO может находиться в одном из следующих возможных состояний: «нормальная работа», «буфер пуст», «буфер почти пуст», «буфер заполнен на 1/2 от максимального размера пространства памяти», «буфер почти полон», «буфер полон». Флаги заполненности являются индикаторами этих состояний и позволяют внешним устройствам осуществлять гибкий контроль над потоками считываемых или записываемых данных. С целью обеспечения помехоустойчивой передачи данных в канале связи, в состав большинства современных микросхем памяти FIFO добавлена функция повторного считывания данных из буфера, начиная с первого слова. Расширением этой функции является возможность повторного считывания произвольного сегмента памяти путем пользовательской установки указателя начала записи.
|
|
Сегмент стека. Этот сегмент представляет собой область памяти, называемую стеком.
Работу со стеком микропроцессор организует по следующему принципу: последний записанный в эту область элемент выбирается первым. Для доступа к этому сегменту служит регистр ss (stack segment register) - сегментный регистр стека, содержащий адрес сегмента стека.
|
|
Загрузка в стек осуществляется специальной командой работы со стеком push (протолкнуть). Эта команда сначала уменьшает на 2 содержимое указателя стека, а затем помещает операнд по адресу в SP. Если, например, мы хотим временно сохранить в стеке содержимое регистра АХ, следует выполнить команду
push АХ
Команда pop выгружает(выталкивает ) элемент из стека.
Дата добавления: 2020-01-07; просмотров: 222; Мы поможем в написании вашей работы! |
Мы поможем в написании ваших работ!