Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ЛЕКЦИЯ1.DOC
Скачиваний:
1
Добавлен:
22.07.2019
Размер:
107.52 Кб
Скачать

Лекция № 1

Архитектурные особенности IBM PC

Краткий обзор семейства микропроцессоров фирмы Intel

Микропроцессоры (МП) Intel 8086, 8088, 80286, 80386 и 80486, явившиеся в разные годы основой новых моделей персональных компьютеров фирмы IBM (IBM PC, PC/XT , PC/AT, PS/2) при всех своих различиях и особенностях сохраняют единство архитектурных принципов, системы команд и языка программирования, что обеспечивает программную совместимость многочисленных разновидностей компьютеров «типа IBM PC».

Важнейшей характеристикой любого микропроцессора является разрядность его внутренних регистров, также внешних шин адресов и данных. МП 8086 имеет 16-разрядную внутреннюю архитектуру и такой же разрядности шину данных. Все регистры внутри процессора, в которых могут хранится данные, имеют длину 16 битов. Таким образом, максимальное целое число (данное или адрес), с которым может работать микропроцессор, составляет 216-1=65536 (64К-1). Однако адресная шина МП 8086 содержит 20 линий, что соответствует адресному пространству 220-1 Мбайт. Для того, чтобы с помощью 16-разрядных адресов можно было обращаться в любую точку 20-разрядного адресного пространства, в микропроцессоре предусмотрена сегментная адресация памяти, реализуемая с помощью четырех сегментных регистров.

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

Умножение базового адреса на 16 увеличивает диапазон адре­суемых ячеек до величины 64 Кбайт * 16 = 1 Мбайт.

МП 8088 является, по существу, 8-разрядным вариантом МП 8086. В нем, как и в МП 8086, предусмотрена адре­сация физической памяти объемом до 1 Мбайт с помощью такого же набора сегментных регистров. Однако шина данных МП 8088 имеет ширину не 16, а 8 разрядов, т.е. доступ к памяти осу­ществляется байтами. Это обстоятель­ство никак не отражается на работе с процессором, так как, например, при считывании из памяти операнда-слова микропроцессор автоматически гене­рирует два цикла магистрали, реализующих чтение младшего и старшего бай­тов. С другой стороны, 8-разрядная шина данных облегчила согласование этого микропроцессора со схемами, раз­работанными ранее для 8-разрядных МП 8080 и 8085.

МП 80286, используемый как центральный процессор ком­пьютеров IBM PC/AT, является усовершенствованным вариан­том МП 8086, дополненным схемами управления памятью и ее защиты. МП 80286 работает с 16-разрядными операндами, но имеет 24-разрядную адресную шину, что соответствует адресно­му пространству 224=16 Мбайт. Од­нако описанный выше способ сегментной адресации памяти не позволяет выйти за пределы 1 Мбайт. Для преодо­ления этого ограничения в МП 80286 (так же, как и в МП 80386) используются два режима работы: ре­ального ад­реса и виртуального защищенного адреса, или просто защищенный режим. В реальном режиме МП 80286 функцио­нирует фактически так же, как МП 8086 с повышенным бы­стродействием и может обращаться лишь к 1 Мбайт ад­ресного пространства. Оставшиеся 15 Мбайт памяти, даже если они ус­тановлены в компьютере, использоваться не могут.

В защищенном режиме по-прежнему используются сегменты и смещения в них, однако начальные адреса сег­ментов не вы­числяются путем умножения на 16 содержимого сегментных ре­гистров, а извлекаются из таблиц сег­ментных дескрипторов, индексируемых теми же сегментными регистрами. Каждый сег­ментный дескриптор зани­мает 6 байтов, из которых 3 байта (24 двоичных разряда) отводятся под сегментный адрес. Тем самым обеспечива­ется полное использование 24-разрядного ад­ресного пространства.

В каждом сегментном регистре под индекс таблицы сегмент­ных дескрипторов отводится 14 двоичных разрядов. Полный ло­гический адрес адресуемой ячейки состоит из 14-разрядного ин­декса (номера) сегмента и 16-разрядного относительного адреса. Это позволяет каждой программе использовать до 230! байт логического, или виртуаль­ного пространства, которое, таким об­разом, в 64 раза превышает максимально возможный объем физической па­мяти. Операционная система виртуальной памяти хранит все сегменты выполняемых программ в большом диско­вом пространстве, автоматически загружая в оперативную па­мять те или иные сегменты по мере необходимости.

МП 80386 и 80486 являются высокопроизводительными про­цессорами с 32-разрядными шинами данных и адре­сов и 32-разрядной внутренней архитектурой. Последнее означает, что внутренние регистры этих процессоров, в отличие от процессо­ров ранних моделей, имеют длину 32 бита. Поэтому макси­мальное целое число, с который мо­жет работать микропроцес­сор, составляет 232-l=42949б729б (4Г-1). Во многих случаях ис­пользование 32-битовых операндов позволяет существенно упростить и ускорить вычисления. Помимо этого, в МП 80386 и 80486 расширен состав регистров, что также предоставляет программисту значительные удобства. Наконец, в новых моде­лях про­цессоров имеются встроенные средства поддержки мно­гозадачного режима, а также мультипроцессорных систем. Ес­тественно, что эти процессоры, как и МП 80286, могут рабо­тать в реальном и защищенном режимах. В последнем случае микропроцессор позволяет адресовать до 232=4 Гбайт физичес­кой памяти и 2=64 Тбайт виртуальной. При этом следует подчеркнуть, что разработчиками обеспечена полная совмести­мость новых моделей процессоров со старыми, в том смысле, что программы, написанные для процессоров 8086-80286, т.е. с использованием 16-битовых операндов, выполняются на новых процессорах без всяких исправлений. Фактически программист, создающий про­грамму, предназначенную для работы под управ­лением MS-DOS, может не задумываться над тем, какой про­цессор установлен на его компьютере.

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

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

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

1 Кбайт Векторы прерываний 00000h

2 56 байтов Область данных BIOS 00400h

5 12 байтов Область данных DOS 00500h

IO.SYS/MSDOS.SYS 00700h Стандартная память

Загружаемые драйверы (640 Кбайт)

COMMAND.COM

Дополнительная память(EMS)

(резидентная часть) Дополнительная

Свободная память память(EMS)

для загружаемых

прикладных и системных

программ А0000h

6 4 Кбайт Графический буфер EGA B0000h

3 2 Кбайт UMB B8000h

3 2 Кбайт Текстовый буфер EGA C0000h Верхняя память(384 Кбайт)

6 4 Кбайт ПЗУ-расширения BIOS D00000h

6 4 Кбайт UMB E00000h

1 28 Кбайт ПЗУ BIOS 1000000h

6 4 Кбайт HMA 10FFF0h

Д о 15 Мбайт

(80286) XMS Расширенная память

До 4 Гбайт

( 80386/486)

Первые 640 Кбайт, адресного пространства с адресами от OOOOOh до 9FFFFh отводятся под основную оператив­ную па­мять, которую еще называют стандартной (conventional). На­чальный килобайт оперативной памяти занят век­торами преры­ваний (256 векторов по 4 байта). Вслед за векторами прерыва­ний располагается область данных BIOS, которая занимает

адреса от 00400h до 004FFh. В этой области хранятся разноо­бразные данные, используемые программами BIOS в процессе управления периферийным оборудованием. Так, здесь размещаются:

- входной буфер клавиатуры с системой указателей;

- адреса последовательных и параллельных портов;

- данные, характеризующие настройку видеосистемы (форма курсора и его текущее местоположение на экране, текущий ви­деорежим, ширина экрана и прочее);

- ячейки для отсчета текущего времени;

- область межзадачных связей и т.д.

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

В области памяти, начиная с адреса 500h, содержатся некото­рые системные данные DOS. Вслед за областью дан­ных DOS располагается собственно операционная система, загружаемая из файлов IO.SYS и MSDOS.SYS (1ВМВЮ.СОМ и IBMDOS.COM для системы PC-DOS). Система обычно занимает несколько де­сятков Кбайт.

Если в файл CONFIG.SYS включены директивы DEVICE=... загрузки устанавливаемых драйверов (ADM.SYS, SMARTDRV.SYS, EMM386.EXE, ANSI.SYS и др.), то они загру­жаются вслед за системой. Наконец, ниже драйверов размеща­ется резидентная часть командного процессора COMMAND.COM, занимающая около 3 Кбайт. В функции ре­зидентной части COMMAND.COM входит обработка <Ctrl>/C, <Ctrl>/<Break> и крити­ческих ошибок, вывод сообщений об ошибках, завершение текущей задачи, загрузка транзитной час­ти COMMAND.COM. Транзитная, загружаемая часть COMMAND.COM размещается в самом конце оперативной па­мяти, затирается при загрузке программ и после завершения выполняемой программы должна загружаться с диска заново.

Перечисленные выше компоненты операционной системы за­нимают обычно 60-90 Кбайт. Вся оставшаяся память до грани­цы 640 Кбайт (называемая иногда транзитной областью) сво­бодна для загрузки любых системных или при­кладных про­грамм. Как правило, в начале сеанса в память загружают ре­зидентные программы (русификатор, элек­тронный блокнот, ре­зидентные расширения DOS, программы контроля состояния диска, входящие, например, в со­став Нортоновских утилит и др.). При наличии резидентных программ объем свободной памяти уменьшается. Оставшиеся 384 Кбайт адресного пространства, называемого верхней (upper) памятью, первоначально были предна­значены для размещения постоянных запоминающих устройств (ПЗУ). Практически под ПЗУ занята только часть адресов. В самом конце адресного пространства, в области FOOOOh...FFFFFh (или EOOOOh... FFFFFh) располагается основное постоянное запоми­нающее устройство BIOS, а начиная с адреса COOOOh - так называемое ПЗУ расшире­ний BIOS для обслуживания графических адаптеров и дисков. Часть адресного пространства верхней памяти отводится для адресации к видеобуферам графического адаптера. Приведенное на рисунке расположение видеобуферов характерно для адаптера EGA; для других адаптеров оно может быть иным, например, видеобуфер простейшего монохромного адаптера MDA занимает всего 4 Кбайт и располагается, начиная с адреса ВООООЮ.

В состав компьютеров PC/AT наряду со стандартной памя­тью (640 Кбайт) может входить расширенная (extended) па­мять, максимальный объем которой зависит от ширины адрес­ной шины процессора и при использовании процессора 80286 может достигать 15 Мбайт, а для процессоров 80386/486 - 4 Гбайт. Эта память располагается за пределами первого мегабай­та адресного пространства и начинается с адреса lOOOOOh. Ре­ально на машине может быть установлен не полный объем расширенной памяти, а лишь 2-3 Мбайт или даже меньше, например, всего 384 Кбайт.

Поскольку функционирование расширенной памяти подчиня­ется "спецификации расширенной памяти" (Extended Memory Specification, сокращенно XMS), то и саму память часто назы­вают XMS-памятью. Как уже отмечалось выше, доступ к рас­ширенной памяти осуществляется в защищенном режиме, поэ­тому для MS-DOS, работающей только в реальном режиме, расширенная память недоступна.

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

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

Как видно из приведенного выше рисунка, часть адресного пространства верхней памяти, не занятая расширениями BIOS и видеобуферами, оказывается свободной. На компьютерах с МП 80386 и 80486 эти свободные участки можно использовать для адресации к расширенной памяти (конечно, не ко всей, а лишь к той ее части, объем которой совпадает с общим объемом свободных адресов верхней памяти). Пере отображение расширенной памяти на свободные адреса верхней памяти выполняет драйвер ЕММ386.ЕХЕ, а сами участки верхней памяти, "заполненные" расширенной, называются блоками верхней памяти (Upper Memory Blocks, UMB). MS-DOS позволяет загружать в UMB устанавливаемые драйверы устройств, а также резидентные программы-расширения DOS (APPEND.EXE, DOSKEY.COM, KEYB.COM и др.). Загрузка системных программ в UMB освобождает от них стандартную память, увеличивая ее транзитную область. В UMB можно загрузить также и прикладные резидентные программы. Загрузка в UMB драйверов осуществляется директивой файла CONFIG.SYS DEVICEHIGH (вместо директивы DEVICE), a загрузка резидентных программы - командой DOS LOADHIGH.

По умолчанию драйвер ЕММ386.ЕХЕ преобразует в UMB 128 Кбайт расширенной памяти, располагая ее по адресам СООО... CFFF. При необходимости (если, например, на эти ад­реса настроено какое-то нестандартное внешнее устройство) объем, и расположение UMB в адресном пространстве верхней памяти можно изменить с помощью ключей в строке установки драйвера ЕММ386.ЕХЕ.

Независимо от наличия и объема расширенной (XMS) памя­ти, компьютер может быть укомплектован платой с дополнительной памятью, не отвечающей каким-либо определенным адресам 16-мегабайтного адресного пространства. Эта память функционирует в соответствии со спецификацией Lotus-Intel-Microsoft Expanded Memory Specification (LIM EMS) и может достигать объема (в версии EMS 4/0) 32 Мбайт. Обращение к EMS-памяти осуществляется через относительно узкие окна (физические страницы) размером по 16 Кбайт, в качестве ко­торых используется часть адресного пространства верхней памяти (от границы 640 Кбайт до 1 Мбайт). Любой блок дополнительной памяти, называемый логической страницей, может быть отображен на физическую страницу в верхней памяти, чем и обеспечивается прямая (хотя и не одновременная) адресация всего пространства дополнительной памяти. В дополнительной памяти, как и в расширенной, обычно размещают электронные диски или кеш- буферы, хотя спецификация EMS 4.0 допускает (в отличие, от EMS 3.2) выполнение программ, находящихся в дополнительной памяти.

Компьютеры типа PC/AT или PS/2 обычно оснащаются расширенной памятью того или иного объема, но не всегда до­полнительной. Между тем, некоторые программы в процессе своего выполнения обращаются к дополнительной памяти и при ее отсутствии просто не будут функционировать. Для того, чтобы позволить таким программам выполняться на компьюте­рах без дополнительной памяти, предусмотрена возможность преобразования части расширенной памяти в дополнительную. Это преобразование осуществляет тот же драйвер ЕММ386.ЕХЕ. По умолчанию для отображения дополнительной памяти ис­пользуется диапазон адресов верхней памяти DOOO...DFFF, ко­торый в этом случае, естественно, выпадает из области блоков верхней памяти UMB. При необходимости область отображения дополнительной памяти можно изменить.