Foreversoft.ru

IT Справочник
0 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Карта адресного пространства

Карта памяти. Критерии и способы распределения адресного пространства

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

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

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

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

Основными критериями распределения адресного пространства системы являются:

• максимально доступное адресное пространство; • минимум аппаратных затрат на реализацию необходимых системных функций;

• максимальное быстродействие системной памяти в сочетании с контролем достоверности информации;

• обеспечение выбранной модели памяти необходимыми системными программными и аппаратными ресурсами;

• удобочитаемость карты распределения, подразумевающая иерархический, сегментированный или иной способ описания адресного пространства, при котором разработчик достаточно легко проводит анализ адресов аппаратной части системы;

• наращиваемость, возможность комбинационного проектирования адресного пространства.

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

Контрольные вопросы к главе 1

1. Дайте определение понятиям «автомат», «программа», «команда» и «память программ».

2. Приведите основные исторические сведения о развитии микропроцессоров.

3. Перечислите критерии классификации микропроцессоров.

4. Перечислите компоненты простейшей микропроцессорной системы, организованной по архитектуре «с тремя шинами».

5. Каковы основные принципы построения MPP- и SMP-систем?

6. Приведите общий алгоритм выполнения команды процессором.

7. Дайте определение понятиям «системная синхронизация», «машинный такт», «машинный цикл» и «цикл команды».

8. Каковы алгоритмы функционирования микропроцессорной системы в режиме прерывания и прямого доступа к памяти?

9. Приведите основные характеристики запоминающих устройств.

10. Каковы принципы функционирования динамической, статической и энергонезависимой памяти? Назовите методы и способы организации кэшпамяти.

11. Что такое карта памяти? Перечислите основные критерии и способы распределения адресного пространства вычислительных систем.

Дата добавления: 2016-10-17 ; просмотров: 916 ; ЗАКАЗАТЬ НАПИСАНИЕ РАБОТЫ

Распределение адресного пространства

Не следует думать, что термины «адресное пространство» и «оперативная память» эквивалентны. Адресное пространство — это просто набор адресов, которые умеет формировать процессор; совсем не обязательно все эти адреса отвечают реально существующим ячейкам памяти. В зависимости от модификации персонального компьютера и состава его периферийного оборудования, распределение адресного пространства может несколько различаться. Тем не менее, размещение основных компонентов системы довольно строго унифицировано. Типичная схема использования адресного пространства компьютера приведена на рис. 1.5. Значения адресов на этом рисунке, как и повсюду дальше в книге, даны в шестнадцатеричной системе счисления.

Рис. 1.5. Типичное распределение адресного пространства.

Первые 640 Кб адресного пространства с адресами от 00000h до 9FFFFh (и, соответственно, с сегментными адресами от 0000h до 9FFFh) отводятся под основную оперативную память, которую еще называют стандартной (conventional). Начальный килобайт оперативной памяти занят векторами прерываний, которые обеспечивают работу системы прерываний компьютера, и включает 256 векторов по 4 байта каждый. Вслед за векторами прерываний располагается так называемая область данных BIOS, которая занимает всего 256 байт, начиная с сегментного адреса 40h. Сама BIOS (от Basic In-Out System, базовая система ввода-вывода) является частью операционной системы, хранящейся в постоянном запоминающем устройстве. Это запоминающее устройство (ПЗУ BIOS) располагается на системной плате компьютера и является, таким образом, примером встроенного, или «зашитого» программного обеспечения. В функции BIOS входит тестирование компьютера при его включении, загрузка в оперативную память собственно операционной системы MS-DOS, хранящейся на магнитных дисках, а также управление штатной аппаратурой компьютера — клавиатурой, экраном, дисками и прочим. В области данных BIOS хранятся разнообразные данные, используемые программами BIOS в своей работе. Так, здесь размещаются:

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

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

В области памяти, начиная с адреса 500h, располагается собственно операционная система MS-DOS, которая обычно занимает несколько десятков Кбайт. Программы MS-DOS, как и другие системные составляющие (векторы прерываний, область данных BIOS) записываются в память автоматически в процессе начальной загрузки компьютера.

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

Читать еще:  Как можно написать электронный адрес

Оставшиеся 384 Кб адресного пространства между границами 640 Кб и 1 Мб, называемые старшей, или верхней (upper) памятью, первоначально были предназначены для размещения постоянных запоминающих устройств (ПЗУ). Практически под ПЗУ занята только небольшая часть адресов, а остальные используются в других целях.

Часть адресного пространства старшей памяти отводится для адресации к графическому и текстовому видеобуферам графического адаптера. Графический адаптер представляет собой отдельную микросхему или даже отдельную плату, в состав которой входит собственное запоминающее устройство (видеопамять). Это запоминающее устройство не имеет никакого отношения к оперативной памяти компьютера, однако, его схемы управления настроены на диапазоны адресов A0000h. AFFFFh и B8000h. BFFFFh, входящих в общее с памятью адресное пространство процессора. Поэтому любая программа может обратиться по этим адресам и, например, записать данные в видеобуфер, что приведет к появлению на экране некоторого изображения. Если видеосистема находится в текстовом режиме, а запись осуществляется по адресам текстового видеобуфера, на экране появятся изображения тех или иных символов (букв, цифр, различных знаков). Если же перевести видеосистему в графический режим, и записывать данные в графический видеобуфер, то на экране появятся отдельные точки или линии. Можно также прочитать текущее содержимое ячеек видеобуфера.

В самом конце адресного пространства, в области адресов F0000h. FFFFFh, располагается ПЗУ BIOS — постоянное запоминающее устройство, о котором уже говорилось выше.

Часть адресного пространства, начиная с адреса C0000h, отводится еще под одно ПЗУ — так называемое ПЗУ расширений BIOS для обслуживания графических адаптеров и дисков.

В состав компьютера, наряду со стандартной памятью (640 Кб), входит еще расширенная (extended) память, максимальный объем которой может доходить до 4 Гбайт. Эта память располагается за пределами первого мегабайта адресного пространства и начинается с адреса 100000h. Реально на машине может быть установлен не полный объем расширенной памяти, а лишь несколько десятков Мбайт или даже меньше.

Поскольку функционирование расширенной памяти подчиняется «спецификации расширенной памяти» (Extended Memory Specification, сокращенно XMS), то и саму память часто называют XMS-памятью. Как уже отмечалось выше, доступ к расширенной памяти осуществляется в защищенном режиме, поэтому для MS-DOS, работающей только в реальном режиме, расширенная память недоступна. Однако в современные версии MS-DOS включается драйвер HIMEM.SYS, поддерживающий расширенную память, т.е. позволяющий ее использовать, хотя и ограниченным образом. Конкретно в расширенной памяти можно разместить электронные диски (с помощью драйвера RAMDRIVE.SYS) или дисковые кэш-буферы (с помощью драйвера SMARTDRV.SYS).

Первые 64 Кб расширенной памяти, точнее, 64 Кб — 16 с адресами от 100000h до 10FFEFh, носят специальное название область старшей памяти (High Memory Area, HMA). Эта область замечательна тем, что хотя она находится за пределами первого мегабайта, к ней можно обратиться в реальном режиме работы микропроцессора, если определить сегмент, начинающийся в самом конце мегабайтного адресного пространства, с сегментного адреса FFFFh, и разрешить использование адресной линии А20. Первые 16 байт этого сегмента заняты ПЗУ, область же со смещениями 0010h. FFFFh можно, в принципе, использовать под программы и данные. MS-DOS позволяет загружать в HMA (директивой файла CONFIG.SYS DOS=HIGH) значительную часть самой себя, в результате чего занятая системой область стандартной памяти существенно уменьшается. Старшую память обслуживает тот же драйвер HIMEM.SYS, поэтому загрузка DOS в HMA возможна, только если установлен драйвер HIMEM.SYS.

Как видно из приведенного выше рисунка, часть адресного пространства верхней памяти, не занятая расширениями BIOS и видеобуферами, оказывается свободной. Эти свободные участки можно использовать для адресации к расширенной памяти (конечно, не ко всей, а лишь к той ее части, объем которой совпадает с общим объемом свободных адресов старшей памяти). Отображение расширенной памяти на свободные адреса старшей памяти выполняет драйвер EMM386.EXE, а сами участки старшей памяти, «заполненные» расширенной, называются блоками верхней памяти (Upper Memory Blocks, UMB). MS-DOS позволяет загружать в UMB устанавливаемые драйверы устройств, а также резидентные программы. Загрузка системных программ в UMB освобождает от них стандартную память, увеличивая ее транзитную область. Загрузка в UMB драйверов осуществляется директивой файла CONFIG.SYS DEVICEHIGH (вместо директивы DEVICE), а загрузка резидентных программ — командой DOS LOADHIGH. На оптимально сконфигурированном компьютере системными компонентами заняты лишь около 20. 25 Кб основной памяти, а вся остальная память в объеме около 620 Кб может использоваться для загрузки прикладных программ.

Не нашли то, что искали? Воспользуйтесь поиском:

Лекция 3: Физическая и логическая организация адресного пространства

Сегментная организация памяти в защищенном режиме

В основе сегментной модели памяти лежит разделение ее на независимые адресные пространства переменной длины — сегменты. Для программы адресное пространство разделено на блоки смежных адресов, называемых сегментами, а программа может обращаться только к данным, находящимся в этих сегментах. Внутри сегментов применяется линейная адресация , то есть программа может обращаться к байту 0, байту 1 и т. д. Такая адресация осуществляется относительно начала сегмента, и физический адрес , ассоциируемый, например, с программным адресом 0, по существу, скрыт от программиста. Этот подход к управлению памятью опирается на тот факт, что программы обычно логически разделяются на области ( сегменты ) кода, данных и стека. При этом упрощается изоляция программ друг от друга в мультипрограммном режиме работы. Каждый сегмент имеет свое целевое назначение. Каждая задача имеет непосредственный доступ к трем основным сегментам: кода, данных и стека, определяемых сегментными регистрами CS, DS SS соответственно, и к трем дополнительным сегментам данных, определяемых сегментными регистрами ES, FS, GS. Описания этих сегментов содержатся в их дескрипторах. Любая программа , независимо от уровня ее привилегий, не может обращаться к сегменту до тех пор, пока он не описан с помощью дескриптора, а сам дескриптор не помещен в таблицу дескрипторов.

Читать еще:  Как правильно писать емейл адрес

Дескрипторы хранятся либо в глобальной таблице дескрипторов (Global Descriptor Table — GDT ) , либо в локальных таблицах дескрипторов (Local Descriptor Table — LDT). В GDT содержатся дескрипторы сегментов, которые доступны всем активным задачам, имеющимся в системе на данный момент. GDT может содержать любые дескрипторы сегментов, за исключением дескрипторов прерываний и ловушек. Обычно GDT включает дескрипторы сегментов кодов и данных операционной системы, сегментов состояния задач и дескрипторы сегментов, содержащих локальные таблицы дескрипторов. Микропроцессорная система имеет единственную глобальную таблицу дескрипторов.

Локальная таблица дескрипторов LDT используется для хранения дескрипторов, доступных только данной задаче. Их количество определяется количеством активных задач в системе.

С точки зрения расположения в памяти, локальные таблицы дескрипторов представляют собой обычные сегменты . Они могут накладываться друг на друга, частично пересекаться. Это приводит к тому, что отдельные сегменты , описанные дескрипторами в своих LDT , могут разделяться несколькими задачами (рис. 3.8).

Для нахождения дескриптора в таблице дескрипторов используется селектор, который содержится в одном из сегментных регистров. Селектор представляет собой 16-разрядое слово , которое разбито на 3 поля (рис. 3.9):

  • TI ( Table Indicator — индикатор таблицы ) показывает, к какой таблице идет обращение: TI = 0 — дескриптор находится в глобальной таблице дескрипторов GDT , TI = 1 — в локальной таблице LDT ;
  • Index : поле индекса — номер дескриптора в соответствующей таблице дескрипторов;
  • RPL ( Request privilege level — уровень привилегий запроса ). При обращении сравнивается с полем DPL в байте доступа дескриптора.

Обращение разрешается, если уровень привилегий запроса не ниже, чем уровень привилегий дескриптора.

Максимальное количество дескрипторов, находящихся в таблице дескрипторов, определяется длиной поля Index селектора и равно 2 13 . Так как каждый дескриптор имеет длину 8 байт , максимальный объем любой таблицы дескрипторов составляет 2 16 байт . Каждая из таблиц дескрипторов имеет регистр ( GDTR для глобальной таблицы и LDTR для локальной), определяющий ее положение в памяти. Регистр GDTR содержит 48 разрядов, из которых 32 задают базовый адрес глобальной таблицы дескрипторов, а 16 указывают ее объем в байтах (границу таблицы). Для определения положения дескриптора относительно начала таблицы его номер ( поле Index селектора) умножается на 8, то есть реально сдвигается на три разряда влево, так как длина дескриптора составляет 8 байт . Если селектор обращается к дескриптору, содержащемуся в таблице GDT (при TI = 0 в селекторе), то полученное смещение сравнивается с хранящейся в GDTR границей таблицы. Если нарушения границы нет, то смещение прибавляется к содержащемуся в GDTR базовому адресу, в результате чего образуется физический адрес выбираемого дескриптора (рис. 3.10).

Нулевой дескриптор в GDT является пустым, не используемым. Селектор с нулевым значением разрядов 2….15 называется нуль-индикатором. Он обеспечивает обращение к нулевому дескриптору GDT . Так как этот дескриптор не используется, то при обращении к нему происходит прерывание . Одно из возможных применений пустых селекторов заключается в следующем. Перед инициированием задачи операционная система может загрузить в регистры DS и ES пустые селекторы. Если в последующем не инициализировать эти регистры, то адресация памяти через них вызовет особый случай ( прерывание ). Загрузка в LDTR пустого селектора, для которого поле Index = 0 , допустима. Такая операция сообщает процессору о том, что в задаче не будет использоваться локальная дескрипторная таблица . Это характерно для небольших однопользовательских систем.

Для обращения к локальной таблице дескрипторов предназначен 16-разрядный регистр LDTR . Он содержит селектор, определяющий размещениев GDT дескриптора используемой локальной таблицы дескрипторов.

Такая структура упрощает работу с таблицами LDT . Благодаря описанию LDT с помощью селектора эти таблицы превращаются в обычные сегменты памяти и, в частности, могут размещаться в любых областях памяти, участвовать в свопинге и т. п. Внутри процессора с регистром LDTR ассоциируется так называемый «теневой регистр «, в котором и хранится дескриптор LDT текущей задачи. Это ускоряет в последующем обращение к локальной таблице дескрипторов текущей задачи. При переключении с одной задачи на другую для замены используемой LDT достаточно загрузить в регистр LDTR селектор новой LDT , а процессор уже автоматически загрузит в теневой регистр дескриптор новой LDT при первом обращении к нему.

Если в селекторе индикатор таблицы TI = 1 , то дескриптор сегмента выбирается из локальной таблицы дескрипторов. Процесс определения адреса сегмента в этом случае представлен на рис. 3.11.

Он более сложен по сравнению с получением дескриптора из глобальной таблицы дескрипторов и проходит следующие этапы:

  1. Анализируем, к какой из двух возможных таблиц дескрипторов идет обращение. Если в селекторе TI = 1 , то обращение идет к локальной таблице дескрипторов.
  2. Находим дескриптор локальной таблицы дескрипторов в глобальной таблице дескрипторов.

Таким образом, при обращении к сегменту через таблицу LDT появляется дополнительный уровень вложенности , снижающий быстродействие микропроцессора . «Теневые» регистры микропроцессора частично обеспечивают решение этой проблемы.

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

В случае если режим страничной адресации выключен (в регистре CR0 бит PG = 0), полученный линейный адрес равен физическому адресу искомого операнда или команды.

Рассмотрим подробнее процесс получения адреса операнда на примере команды

MOV EAX, [ECX+ ESI +20h] .

В этой команде нет специальных указаний об использовании сегмента, поэтому она обращается к текущему сегменту данных, селектор которого по умолчанию находится в сегментном регистре DS . Пусть ( DS ) = 0000000000011.0.XXb .

Читать еще:  Какой можно написать адрес электронной почты

Формирование физического адреса операнда включает следующие действия (для сегментированного ЛАП):

  1. Образовать эффективный адрес (вычислить смещение в сегменте):

EA = (ECX)+( ESI )+20h .

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

При TI = 1 потребовалось бы еще одно обращение к памяти для счтывания дескриптора LDT из GDT .

Чтобы сократить число обращений к памяти (а такой процесс должен проходить и при считывании кода каждой команды), в микропроцессорах с архитектурой IA-32 применяется так называемое кэширование дескрипторов. Кэширование опирается на тот факт, что обращение к памяти производятся гораздо чаще, чем изменение используемых сегментов и переключение задач. Поэтому с каждым регистром, содержащим селекторы тех или иных сегментов ( сегментные регистры , а также регистры локальной таблицы дескрипторов LDTR и регистр задач TR ), ассоциируются «теневые», или кэш -регистры.

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

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

Помимо локальной и глобальной таблиц дескрипторов в микропроцессорной системе используется также дескрипторная таблица прерываний ( IDT ). Она содержит дескрипторы специальных системных объектов , которые определяют точки входа в процедуры обработки прерываний.

IDT служит заменой таблицы векторов прерываний 16-разрядного микропроцессора . Обращение к ней проводится только аппаратными средствами МП при возникновении аппаратных прерываний или особых случаев при выполнении программы. Программы самостоятельно не могут обратиться к IDT , так как единственный бит индикатора таблицы в селекторе сегмента идентифицирует только GDT или LDT .

До перевода процессора в защищенный режим необходимо создать таблицы GDT и IDT и соответственно инициализировать регистры GDTR и IDT R. Таблицы GDT и IDT определяются при загрузке в соответствующие регистры GDTR и IDT R базового адреса и предела. Это действие осуществляется только один раз в ходе подготовки к переходу в защищенный режим, и в дальнейшем содержимое GDTR и IDTR не изменяется. Это значит, что местонахождение таблиц GDT и IDT в известном смысле фиксировано, и они не могут участвовать в свопинге .

Адресные пространства оперативной памяти. Часть 1.

Основная особенность и мини-, и микроЭВМ — малый размер слова — 16 бит. Такой же размер имеет полный адрес, который используется программой. Так как минимально адресуемой единицей памяти в системе является байт, размер адресного пространства, непосредственно доступного программе, 64 Кбайт (или 32К слов). В дальнейшем это адресное пространство будем называть виртуальным.

Большинство программ реального времени, связанных с автоматизацией процессов, обладают повышенной активностью, характеризуемой отношением времени выполнения программы к объему программы. В связи с этим размер физического адресного пространства в 64 Кбайт для большинства применений оказывается достаточным, чтобы разместить в нем программу полностью. Допустимый размер программ совпадает с размерами физического и виртуального адресных пространств. При переходе к расчетным задачам и, особенно к задачам взаимодействия с человеком, связанным с повышением логического уровня систем (использованием языковых процессоров, систем программирования и т. д.), активность программ снижается и размер виртуального адресного пространства становится недостаточным. Традиционное решение проблемы расширения пространства — введение последовательного наложения участков программ на один и тот же участок (участки) виртуального адресного пространства (оперативной памяти). Такая структура называется оверлейной.

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

Следует отметить, что в ЭВМ других семейств, предназначенных главным образом для вычислений, длина адреса значительно больше, оверлейная структура является вспомогательным средством и применяется в основном для экономии оперативной памяти, для обеспечения достаточного уровня мультипрограммирования. В этом случае виртуальное пространство много больше физического.

В ЭВМ рассматриваемого семейства оверлейная структура — основное средство управления памятью, при этом физическое и виртуальное пространства совпадают. Отображения адресных пространств программы при оверлейной структуре (рис. 1.6,а) реализуются операционной системой (ОС) с помощью двух функций отображения, заданных таблицами. Таблица наложений связывает виртуальное (и совпадающее с ним физическое) пространство с логическим, отыскать во внешней памяти файл, соответствующий логическому пространству программы, помогает справочник файла, а извлечь из файла требуемый сегмент — карта файла.

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

Ссылка на основную публикацию
Adblock
detector