Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
!Ответы по аппаратке.doc
Скачиваний:
2
Добавлен:
19.09.2019
Размер:
877.06 Кб
Скачать

15. Процесор і8086. Організація пам'яті, регістри процесора. Процессоры 8086 и 8088

В июне 1978 года Intel совершила революцию, представив свой новый процессор 8086. Это был один из первых 16-разрядных микропроцессоров на рынке; в то время все другие процессоры были 8-разрядными. Процессор 8086 имел 16-разрядные внутренние регистры и мог выполнять программное обеспечение нового типа, использующее 16-разрядные команды. Он также имел 16-разрядную внешнюю шину данных и поэтому мог передавать одновременно 16 бит данных в память.

Разрядность шины адреса составляла 20 бит, и процессор 8086 мог адресовать память емкостью 1 Мбайт (2 в 20-й степени). В то время это казалось чудом, так как большинство других микросхем имели 8-разрядные внутренние регистры, 8-разрядную внешнюю шину данных и 16-разрядную шину адреса и могли адресовать не более 64 Кбайт оперативной памяти (2 в 16-й степени).

В большинстве персональных компьютеров того времени использовались 8-разрядные процессоры, которые работали под управлением 8-разрядной операционной системы CP/M (Control Program for Microprocessors — управляющая программа для микропроцессоров) и такого же программного обеспечения. Плата и интегральные микросхемы как правило были также 8-разрядными. Тогда производство полностью 16-разрядной системной платы с памятью было настолько дорогостоящим, что такой компьютер вряд ли кто-либо мог позволить себе купить.

Стоимость процессора 8086 была довольно высокой — для него требовалась 16-разрядная шина данных, а не более дешевая 8-разрядная. Доступные в то время системы были 8-разрядными, и потому процессоры 8086 продавались плохо. В Intel поняли, что пользователи не хотят (или не могут) так дорого платить за дополнительную эффективность 16-разрядного процессора, и через какое-то время была представлена своего рода "усеченная" версия процессора 8086, названная 8088. В ней, по существу, были удалены 8 из 16 разрядов на шине данных, и теперь процессор 8088 мог рассматриваться как 8-разрядная микросхема в отношении ввода и вывода данных. Однако, поскольку в нем были полностью сохранены 16-разрядные внутренние регистры и 20-разрядная шина адреса, процессор 8088 выполнял 16-разрядное программное обеспечение и мог адресовать оперативную память емкостью 1 Мбайт.

Исходя из этого, IBM выбрала 8-разрядные микросхемы 8088 для своего первого IBM PC. Однако через несколько лет ее критиковали именно за это. (Сейчас понятно, что это было очень мудрое решение.) В то время IBM даже скрывала физические детали проекта, просто отмечалось, что ее новый PC имел быстродействующий 16-разрядный микропроцессор. Это утверждение было справедливым, поскольку процессор 8088 осуществлял то же самое 16-разрядное программное обеспечение, что и 8086, только немного медленнее. Фактически для всех программистов процессор 8088 являлся 16-разрядной микросхемой — на самом деле тогда не было никакого способа, с помощью которого программа могла бы отличить 8088-й от 8086-го. Благодаря этому IBM могла поставлять PC, поддерживающий 16-разрядное программное обеспечение и использующий недорогие 8-разрядные аппаратные средства. Даже в начале производства цена IBM PC была ниже, чем у самого популярного персонального компьютера того времени — Apple II. IBM PC вместе с оперативной памятью объемом 16 Кбайт стоил 1265 долларов, в то время как Apple II аналогичной конфигурации — 1355 долларов.

В первом IBM PC устанавливался процессор 8088. Этот процессор был представлен еще в июне 1979 года, a IBM PC с процессором 8088 появился на рынке лишь в августе 1981 года. В те годы от выхода нового процессора до появления компьютеров с этим процессором могло пройти довольно значительное время; сегодня это немыслимо — компьютеры с новыми процессорами зачастую выпускаются в тот же день, что и сами процессоры.

В первом компьютере IBM PC использовался процессор 8088 с тактовой частотой 4,77 МГц, т.е. за одну секунду происходило 4 770 000 тактов. На выполнение команды в процессорах 8088 и 8086 в среднем затрачивалось 12 тактов. Иногда возникает вопрос, почему объем основной памяти в компьютере ограничен использованием 640 Кбайт, хотя процессор 8088 может адресовать основную память емкостью до 1 Мбайт. Это объясняется тем, что IBM с самого начала зарезервировала 384 Кбайт в верхней части адресного пространства для плат адаптеров и системной BIOS. Оставшиеся 640 Кбайт используются DOS и программами-приложениями.

Организация памяти

В процессорах х86 предусматривается разделение пространств памяти и ввода-вывода. Пространство памяти (Memory Space) предназначено для хранения ко¬дов инструкций и данных, для доступа к которым имеется богатый выбор спосо¬бов адресации (24 режима). Память может логически организовываться в виде одного или множества сегментов переменной длины (в реальном режиме — фик¬сированной). Кроме сегментации в защищенном режиме возможно разбиение (Paging) логической памяти на страницы размером 4 Кбайт, каждая из которых может отображаться на любую область физической памяти. Начиная с 5-го по¬коления, появилась возможность увеличения размера страницы до 4 Мбайт. Сег¬ментация и разбиение на страницы могут применяться в любых сочетаниях. Сег¬ментация является средством организации логической памяти на прикладном уровне. Разбиение на страницы применяется на системном уровне для управле¬ния физической памятью. Сегменты и страницы могут выгружаться из физичес¬кой оперативной памяти на диск и по мере необходимости подкачиваться с него обратно в физическую память. Таким образом реализуется виртуальная память.

Применительно к памяти различают три адресных пространства: логическое, линейное и физическое. Основным режимом работы 32-разрядных процессоров считается защищенный режим, в котором работают все механизмы преобразова¬ния адресных пространств (рис. 5.2).

Логический адрес, также называемый виртуальным, состоит из селектора сег¬мента Seg (в реальном режиме — просто адреса сегмента) и эффективного ад¬реса, называемого также смещением (Offset). Логический адрес обозначается в форме Seg:Offset. Селектор сегмента хранится в старших 14 битах сегмент¬ного регистра (CS, DS, ES, SS, FS или GS), участвующего в адресации конкретного элемента памяти. По значению селектора из специальных таблиц, хранящихся в памяти, извлекается начальный адрес сегмента. Эффективный адрес форми¬руется суммированием компонентов base, index, displacement с учетом масшта¬ба scale. Поскольку каждая задача может иметь до 16 Кбайт селекторов (214), а смещение, ограниченное размером сегмента, может достигать 4 Гбайт, логи¬ческое адресное пространство для каждой задачи может достигать 64 Тбайт. Все это пространство виртуальной памяти в принципе доступно программисту (при условии поддержки со стороны операционной системы).

Блок сегментации транслирует логическое адресное пространство в 32-бит¬ное пространство линейных адресов. Линейный адрес образуется сложением ба¬зового адреса сегмента с эффективным адресом. Базовый адрес сегмента в ре¬альном режиме образуется умножением содержимого используемого сегментно¬го регистра на 16 (как и в 8086). В защищенном режиме базовый адрес загружается из дескриптора, хранящегося в таблице, по селектору, загруженному в ис¬пользуемый сегментный регистр.

32-битный физический адрес памяти образуется после преобразования линей¬ного адреса блоком страничной переадресации. Он выводится на внешнюю шину адреса процессора. В простейшем случае (при отключенном блоке страничной переадресации) физический адрес совпадает с линейным. Включенный блок стра¬ничной переадресации осуществляет трансляцию линейного адреса в физичес¬кий страницами размером 4 Кбайт (для последних поколений процессоров так¬же возможны страницы размером 2 или 4 Мбайт). Блок обеспечивает и расши¬рение разрядности физического адреса процессоров шестого поколения до 36 бит. Блок переадресации может включаться только в защищенном режиме.

Для обращения к памяти процессор (совместно с внешними схемами) фор¬мирует шинные сигналы для операций записи и чтения. Шина адреса разрядно¬стью 32/36 бит позволяет адресовать 4/64 Гбайт физической памяти, но в реаль¬ном режиме доступен только 1 Мбайт, начинающийся с младших адресов.

Стек

Стек представляет собой непрерывную область памяти, адресуемую регистрами ESP (указатель стека) и SS (селектор сегмента стека). Особенность стека заклю¬чается в том, что данные в него помещаются и извлекаются по принципу «пер¬вым вошел — последним вышел». Данные помещаются в стек с помощью инст¬рукции PUSH (заталкивание), а извлекаются по инструкции POP (вытаскивание).

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

Для обработки аппаратных прерываний в многопроцессорных системах тра¬диционные аппаратные средства становятся непригодными, поскольку прежняя схема подачи запроса INTR и передачи вектора в цикле INTA# явно ориентирова¬на на единственность процессора. Для решения этой задачи в процессоры, начи¬ная со второго поколения Pentium, введен расширенный программируемый кон¬троллер прерываний APIC (Advanced Programmable Interruption Controller). Этот контроллер имеет внешние сигналы локальных прерываний LINT[1:O] и трехпро-водную интерфейсную шину (PICD[1:O] и PICCLK), по которым процессоры свя¬зываются с контроллером APIC системной платы. Для локальных запросов пре¬рываний процессоры имеют линии LINTO, LINT1. Локальные прерывания обслу¬живаются только тем процессором, на выводы которого поступают сигналы их запросов. Общие (разделяемые) прерывания (в том числе и SMI) приходят к процессорам в виде сообщений по интерфейсу APIC. При этом контроллеры пред¬варительно программируются — тем самым определяются функции каждого из процессоров в случае возникновения того или иного аппаратного прерывания. Контроллеры APIC каждого из процессоров и контроллер системной платы, свя¬занные интерфейсом APIC, выполняют маршрутизацию прерываний (Interrupt Routing), причем как статическую, так и динамическую. Внешне программный интерфейс обработки прерываний остается совместимым с управлением контрол¬лером 8259А, что обеспечивает прозрачность присутствия APIC для прикладно¬го программного обеспечения. Режим обработки прерываний посредством APIC разрешается сигналом APICEN по аппаратному сбросу, впоследствии он может быть запрещен программно.

Регистры процессора

Процессоры х86 имеют регистры, подразделяющиеся на следующие категории:

» регистры общего назначения;

ш указатель инструкций;

я регистр флагов;

ш регистры сегментов;

ш системные адресные регистры;

ш управляющие регистры;

ш регистры отладки;

« регистры тестирования;

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

Эти регистры относятся к видимой для прикладных программ части архитектуры х86 и представляют собой расши¬рение набора регистров 16-разрядных процессоров 8086/8088 и 80286. К преж¬нему обозначению их имен добавилась приставка Е (Extended — расширенный). Отсутствие приставки в имени означает ссылку на младшие 16 бит расширен¬ных регистров. Существует понятие разрядности адреса и данных. Разрядность адреса определяет, сколько бит (16 или 32) используется в регистрах, формиру¬ющих адрес данных или инструкций, расположенных в памяти. Разрядность дан¬ных определяет, сколько бит (16 или 32) используется в инструкциях, опериру¬ющих словами (инструкции с байтами всегда оперируют с 8 битами). В реаль¬ном режиме по умолчанию разрядность адреса и данных — 16 бит. В защищен¬ном режиме разрядность адреса и данных по умолчанию определяется дескрип¬тором кодового сегмента. Инструкции, которые прежде адресовались к 16-раз¬рядным регистрам, теперь могут адресоваться и к 32-разрядным расширенным регистрам при том же коде операции. Что именно подразумевается в данный момент, определяется текущим значением разрядности слова операнда по умол¬чанию и для текущей исполняемой инструкции может быть изменено на проти¬воположное значение с помощью префикса.

Кроме регистров общего назначения, предназначенных для использования прикладными программами, процессоры имеют ряд регистров системного назна¬чения (на рисунке не показаны). Эти регистры прикладными программами обычно не используются.

Модельно-специфические регистры MSR (Model-Specific Registers) предназна¬чены для управления расширениями отладки, мониторингом производительное ти, машинным контролем, кэшированием областей физической памяти и други¬ми функциями. Их назначение привязывается к архитектуре конкретного про¬цессора, состав меняется от модели к модели, доступ привилегирован. Доступ¬ность регистров различных групп зависит от режима работы процессора и уров¬ня привилегий задачи. Регистры общего назначения, а также регистры сегмен¬тов доступны всегда; доступ к остальным регистрам может быть ограничен.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]