Модель памяти

Одной изособенностей МП Intel – это использование сегментированной памяти. Полнокровное развитие персональных ЭВМ (PC) началась с появления 16-ти битовых микропроцессоров. Изначально микропроцессоры предназначались для управляющих систем. Но PC проектировались для широкого круга пользователей, как максимально дешевых индивидуальных (одна для одного) ЭВМ для эксплуатации без посредников (профессиональных программистов). Для этого они должны быть снабжены определенными средствами программирования на основе простейших языков программирования (типа Бейсик), управляющей (операционной) программной системой и простейшими офисными системами: текстовые редакторы, электронные таблицы и т.д.

Но 16-ти битовая адресация позволяла адресовать только 216 = 65 536 байт (64 Кбайт). Этого было достаточно для управляющих ЭВМ, но не для PC.

Вероятно, по этой причине была выбрана модель структурированной математической памяти ( Рис. 2.1.), состоящая из 16 сегментов по 65 536 байт (64 Кбайт)

Этот прием позволил увеличить адресное пространство математической памятив реальном режиме до 220 = 1 048 576 (1 Мбайт).

При этом первые 10 сегментов определялись, как память пользователей, а остальные 6 сегментов – как системные (для операционной системы).

Кроме этого, вводился еще один дополнительный сегмент (64Кбайт) для адресации портов. Порты – это программно-доступные (адресуемые) регистры контроллеров устройств ввода-вывода. Но это отдельное (дополнительное) адресное пространство процессора.

Биты в памяти, как и в регистрах, нумеруются с младших разрядов. Многобайтные операнды адресуются по номеру младшего байта. Размещение программных объектов без соблюдения правил целочисленных границ не рекомендуются

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

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

Вопросы для самопроверки:

1. Понятие сегментированной памяти.

2. Размер сегмента в МП IA-16.

3. Максимальное число сегментов в МП IA-16.

4. Процедура трансляции сегментов в МП IA-16.

5. Место хранения базовых адресов сегментов.

2.2.2. Порты ввода/вывода.

МП позволяет адресовать порты в адресном пространстве портов и ячейки оперативной памяти в отдельном адресном пространстве оперативной

памяти.

Для адресации портов используются команды ввода: вывода: IN, INS, OUT, OUTS (пересылки между РОНами и портами), а для адресации ячеек памяти – любые адресные команды.

Для доступа к порту ввода/вывода, расположенному в адресном пространстве памяти могут использоваться любые работающие с памятью команды. Это дает некоторую гибкость работы с портами. Например, команда MOV позволяет пересылать данные между портом и любым регистром. Команды AND, OR, и TEST могут манипулировать отдельными битами управляющих регистров портов при программировании процедур ввода/вывода. Сегменты логической памяти, порты ввода/вывода и их отображение (возможное размещение) в памяти представлены на рис. 2.1.

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

Все сегменты (включая сегмента портов) в плоской памяти задаются двумя независимыми параметрами: сегментом (базовый адрес сегмента) и адресом объекта в сегменте (смещением в сегменте).

Адресное пространство портов:

· 216 = 65 536 однобайтных портов с нумерацией от 0 до 65 535 или

· 215 = 32 768 двухбайтных портов с нумерацией от 0 до 65 534 или

· 214 = 16 384 четырехбайтовых портов с нумерацией от 0 до 65 532.

В командах ввода вывода адреса портов от 1 до 255 могут задаваться прямыми адресами:

· IN al, 24 – ввод из 24-го порта байта в регистр al,

· IN ax, 24 – ввод из 24-го порта слова в регистр ax,

· IN eax, 24 – ввод из 24-го порта двойного слова в регистр eax,

Задание в командах портов с адресами больших 255 производится с использованием регистра dx:

· MOV dx, 1024;засылка адреса порта в dx

· IN al, dx;ввод из 1024-го порта байта в регистр al,

· IN ax, 24;ввод из 1024-го порта слова в регистр ax,

Вопросы для самопроверки:

1. Понятие портов,

2. Методы адресации портов,

3. Адресация портов в МП IA,

4. Команды обращения к портам в МП IA-16.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: