Адресная структура команд микропроцессора


и планирование ресурсов

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

В настоящее время разработано несколько способов решения этих противоречий. Например, для борьбы с фрагментацией основной па­мяти адресное пространство программы может быть разбито на от­дельные сегменты, слабо связанные между собой. Тогда программа D общей длиной 50 Кбайт может быть представлена в виде ряда сег­ментов, загружаемых в различные области ОП (рис. 4.6). Это позво­ляет использовать реальную память, теряемую из-за фрагментации.

Адреса в каждом сегменте начинаются с 0. При статическом пе­ремещении программы в процессе загрузки ее в основную память ад­реса должны быть привязаны к конкретному месту в памяти, на что уходит много времени и отвлекаются вычислительные ресурсы. Бо­лее эффективной является динамическая трансляция адресов (ДТА), которая заключается в том, что сегменты загружаются в основную память без трансляции адресного пространства (т.е. без изменения адресов в программе с учетом физического размещения в памяти ко­манд и данных), а трансляция адресов каждой команды производится в процессе ее выполнения. Этот тип трансляции называется динами­ческим перемещением и осуществляется специальными аппаратными средствами ДТА.

Каждый сегмент программы должен иметь свое имя. Форма имени сегмента может быть любой, например номер (рис. 4.7, а,б).

Рис. 4.6.Фрагментация ОП. Загрузка сегментированной программы

Рис.4.7. Форма имени сегмента: а - при выделении номеру сегмента 8 разрядов; б - при выделении номеру сегмента 16 разрядов

При таком представлении адрес будет состоять из двух частей: s, i, где s — имя сегмента, / — адрес внутри сегмента.

Если ЭВМ имеет 32-битовую адресную структуру, максималь­ная длина адреса в единственном сегменте будет 32 разряда. Если 16 разрядов из 32 отвести под номер сегмента (а 16 — под смещение), то в этом случае все адресное пространство программы может состоять из 216 = 64 К сегментов. Сегмент может содержать 216 = 64 Кбайта (т.е. иметь адреса от 0 до 65535). При другой структуре адреса изменяется количество сегментов и их длина.

Структура адресов накладывает два важных ограничения:

• ограничивается максимальное число сегментов, которое может су­ществовать в адресном пространстве программы;

• ограничивается максимальное смещение любого адреса в сегменте.

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

Процессор может обращаться к основной памяти, используя толь­ко абсолютные адреса.

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

-Рис. 4.8.Динамическая трансляция адресов при сегментной организации программы

Каждая строка таблицы сегментов содержит адрес начала сегмента в реальной памяти. Для каждого сегмента имеется одна строка таб­лицы.

Таблицу сегментов содержит каждая выполняемая программа.

В дополнение к таблице сегментов для динамической трансляции адреса используется специальный управляющий регистр, называемый регистром начала таблицы сегментов (РНТС или STOR — segment table origin register). В этот регистр занесен адрес таблицы сегментов выполняемой в данный момент программы.

На рис. 4.9 изображено выполнение программы D. В РНТС нахо­дится адрес таблицы сегментов этой программы. Если программа В прервет выполнение программы D, то в РНТС будет занесен началь­ный адрес таблицы сегментов программы В.

 

Рис.4.9 Технология динамической трансляции адресов

Допустим, для выполняемой программы D начальный адрес таб­лицы сегментов — 68000. В реальной вычислительной машине все дей­ствия выполняются в шестнадцатеричной системе счисления, мы же проведем вычисления для простоты в десятичной системе счис­ления.

Для обращения к адресу 15000 сегмента 1 производятся следую­щие действия:

• РНТС указывает на начало таблицы сегментов программы D — 68000;

• номер сегмента в относительном адресе используется как индекс при обращении к таблице сегментов. В данном примере обраще­ние производится к 1-й строке;

• адрес, хранимый в выбранной строке таблицы сегментов, есть ад­рес начала сегмента в реальной памяти. Смещение в относитель­ном адресе добавляется к начальному адресу, и результат является адресом в реальной памяти: 15000+75000=90000.

Для относительного адреса (сегмент 3, смещение 13000) будет по­лучен абсолютный адрес 218000.

При ДТА такое определение адресов ведется в процессе выполне­ния каждой команды.

Если операционной системе понадобится переместить исполняемую программу в другую часть памяти (например, чтобы исключить фраг­ментацию), сначала надо будет переслать команды и данные сег­мента. Затем строку таблицы сегментов для данного сегмента нужно изменить так, чтобы она содержала новый адрес, и выполнение про­граммы может быть продолжено. Это дает возможность динами­ческого управления реальной памятью в процессе выполнения про­граммы.

Использованием сегментации программ достигается уменьшение фрагментации основной памяти, но полностью фрагментация не уст­раняется — остаются фрагменты, длина которых меньше длины сег­ментов программы.

Если сегменты разделить на одну или несколько единиц, называе­мых страницами, которые имеют фиксированный размер, то, посколь­ку размер страницы достаточно мал по сравнению с обычным разме­ром сегментов, неиспользуемые фрагменты ОП значительно сокра­щаются в объеме — будет иметь место так называемая фрагментация внутри страниц. Следовательно, потери все-таки останутся, но они будут существенно меньше.

Сегментно-страничная организация добавляет еще один уровень в структуре адресного пространства программы. Теперь адресное пространство программы дробится на сегменты, внутри сегмен­тов — на страницы, а внутри страниц — на адреса байтов. Структу­ра адреса: (S, Р, i) — рис. 4.10, где S — имя сегмента внутри адрес­ного пространства программы; Р — имя внутри страницы; i — адрес внутри страницы.

Рис. 4.10.Адресная структура при сегментно-страничной организации памяти

Формирование сегментно-страничной структуры выполняется ав­томатически с помощью операционной системы.

Для динамической трансляции адресов каждому сегменту необхо­дима одна таблица сегментов и несколько таблиц страниц (рис. 4.11). Динамическая трансляция адресов будет выполняться следующим образом:

• регистр начала таблицы сегментов содержит начальный адрес таб­лицы сегментов выполняемой программы 28000;

• номер сегмента в относительном адресе используется как индекс для обращения к записи таблицы сегментов. Эта запись идентифи­цирует начало таблицы страницы (реальный адрес) 30000;

• номер страницы в относительном адресе используется как индекс для обращения к записи таблицы страниц. Эта запись идентифи­цирует начало страничного блока, содержащего эту страницу — 128000;

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

Все преимущества динамического перемещения с использованием сегментации и страничной организации достигаются благодаря ап­паратуре и программному обеспечению, а не пользователям систе­мы. Специальные программы во время загрузки разбивают адресное пространство программы на сегменты и страницы, строят таблицы сегментов и страниц. Средства ДТА автоматически транслируют адрес в процессе выполнения программы.

*

Рис. 4.11.Структурная схема формирования абсолютного адреса при сегментно-страничной организации ОП

 

 

Виртуальная память

Имея иерархическую структуру запоминающих устройств, на ре­альном объеме памяти, значительно меньшем максимального, можно имитировать работу с максимальной памятью. В этом случае програм­мист работает так, как будто ему предоставлена реальная память мак­симально допустимого для данной ЭВМ объема, хотя имеющаяся ре­альная память значительно меньше по объему. Такой режим работы называется режимом виртуальной памяти.

Теоретически доступная пользователю основная память, объем которой определяется только разрядностью адресной части команды и которая не существует в действительности, называется виртуаль­ной памятью.

Виртуальная память имеет сегментно-страничную или страничную организацию и реализована в иерархической системе памяти ЭВМ. Часть ее размещается в страничных блоках основной памяти (page frames), а часть — в ячейках внешней страничной памяти (slot). Вне­шняя страничная память является частью внешней памяти. Ячейка (слот) — это записываемая область во внешней страничной памяти (например, на жестком магнитном диске). Она того же размера, что и страница.

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

Загрузить программу в виртуальную память значит переписать несколько программных страниц из внешней страничной памяти в ос­новную память. Если в процессе выполнения программы А система обнаружит, что требуемой страницы нет в реальной памяти, она дол­жна переслать копию этой страницы из внешней страничной памяти в реальную память. Этот механизм называется принудительным стра­ничным обменом.

Максимальный размер виртуальной памяти определяется только длиной физического адреса (32 бита): 232 = 4 Гбайта. Размер страницы в IBM PC фиксирован — 4 Кбайта. При таком объеме страниц для адресации байтов внутри страницы необходимо 12 бит. Поэтому ад­рес виртуальной памяти состоит из двух частей: номера страницы (20 бит) и смещения (12 бит).

Сегмент в виртуальной памяти не влияет на ее размер. Он имеет логический характер, позволяющий специализировать соответствую­щую часть памяти, определять допустимый характер ее использова­ния. Например, с помощью сегментации можно выделить часть памя­ти для размещения в ней программ, часть — для размещения данных, часть — для размещения стека. Можно выделить часть памяти только для чтения или для полного доступа и т.д.

Учитывая, что при виртуальной организации в основной памяти хранится только часть страниц, а основным хранилищем информации являются слоты на жестком диске, номера виртуальных страниц не­обходимо преобразовывать в номера физических страниц (слотов), в которых должны содержаться такие данные, как имя накопителя, но­мер цилиндра, номер головки, номер трека, номер сектора и т.д. Это преобразование осуществляется при помощи таблицы страниц. Если производить такое преобразование за один этап, потребуется линей­ная таблица, содержащая 1М элементов. При размере элемента таб­лицы 4 байта для хранения таблицы страниц необходим блок памяти 4 Мбайта, причем в мультизадачной среде такая таблица может по­требоваться для каждой задачи. Содержать эти страницы в ОП прак­тически невозможно. Поэтому в современных системах реализовано более гибкое двухуровневое преобразование, при котором линейный адрес делится не на две части (номер виртуальной страницы — 20 бит, смещение — 12 бит), а на три: каталог — 10 бит, таблица — 10 бит, смещение — 12 бит. В основной памяти при таком подходе постоянно должны храниться только каталог и активные таблицы страниц.

В каждой записи каталога страниц один из служебных битов (бит присутствия) указывает, является ли данная таблица активной (т.е. присутствует ли она в основной памяти). В записях каждой активной таблицы страниц аналогичный бит присутствия отмечает страницы, которые в настоящий момент находятся в основной памяти. Благода­ря такой организации сокращается количество обращений к внешней памяти, что сказывается на производительности ЭВМ.



Дата добавления: 2017-01-26; просмотров: 2174;


Поиск по сайту:

Воспользовавшись поиском можно найти нужную информацию на сайте.

Поделитесь с друзьями:

Считаете данную информацию полезной, тогда расскажите друзьям в соц. сетях.
Poznayka.org - Познайка.Орг - 2016-2024 год. Материал предоставляется для ознакомительных и учебных целей.
Генерация страницы за: 0.014 сек.