7.2. Процессоры персональных компьютеров
Несмотря на то, что первый персональный компьютер был выпущен фирмой Apple, сейчас персональными компьютерами называют в основном IBM PC-совместимые компьютеры. Это связано, прежде всего, с тем, что фирма IBM выбрала правильную рыночную политику: она не скрывала принципов устройства своих компьютеров и не патентовала основных решений. В результате многие производители стали выпускать совместимые компьютеры, и они быстро стали фактическим стандартом. Из-за большого объема выпуска персональные компьютеры начали быстро дешеветь. К тому же для IBM-совместимых персональных компьютеров стали разрабатывать множество программных средств, что еще больше способствовало их распространению. Поэтому, несмотря на некоторые существенные архитектурные недостатки, IBM-совместимые персональные компьютеры сейчас уверенно занимают первое место на рынке.
С самого начала фирма IBM ориентировалась на процессоры Intel. У этих процессоров были очень мощные конкуренты, например, процессоры фирм Motorola или Zilog, превосходившие процессоры Intel по многим параметрам, но именно благодаря персональным компьютерам процессоры Intel смогли выйти победителями в конкурентной борьбе. К тому же еще некоторые фирмы (например, AMD, VIA, Cyrix) выпускают Intel-совместимые процессоры. Поэтому мы рассмотрим основные особенности процессоров фирмы Intel. Это позволит нам также проследить основные тенденции в развитии процессоров за последние десятилетия.
Свой первый 16-разрядный процессор i8086 фирма Intel выпустила в 1978 году. Он мог адресовать 1 Мбайт памяти (то есть имел 20-разрядную шину адреса), производительность его при тактовой частоте 5 МГц составляла 0,33 MIPS, но вскоре появились процессоры с тактовой частотой 8 и 10 МГц. Чуть позже (через год) была выпущена упрощенная версия процессора i8086 — i8088, который отличался только 8-разрядной внешней шиной данных. За счет этого он был медленнее, чем i8086, на 20—60% при той же тактовой частоте, но зато заметно дешевле. Именно на его основе был собран очень популярный персональный компьютер IBM PC XT.
16-разрядный процессор i80286, выпущенный в 1982 году, был использован в персональных компьютерах IBM PC AT. Принципиально новым было в нем то, что он мог адресовать до 16 Мбайт памяти и имел помимо реального режима, аналогичного i8086, еще и так называемый защищенный режим, позволяющий более гибко управлять памятью. Производительность этого процессора при тактовой частоте 8 МГц составляла 1,2 MIPS.
Важным шагом стало появление в 1985 году полностью 32-разрядного процессора i80386, способного адресовать до 4 Гбайт памяти (32-разрядная адресная шина). Он имел еще более развитую систему управления памятью MMU (Memory Management Unit). Производительность его при тактовой частоте 16 МГц составляла 6 MIPS. С появлением этого процессора стала бурно развиваться операционная система MS Windows, существенно изменившая процесс работы с компьютерами типа IBM PC.
Еще одним принципиальным шагом стало создание в 1989 году процессора Intel 486DX, в котором появились встроенный математический сопроцессор, существенно ускоривший выполнение арифметических операций, и внутренняя кэш-память, ускоряющая обмен с оперативной памятью. Максимальный объем адресуемой памяти этого процессора — 4 Гбайт. На тактовой частоте 25 МГц производительность была 16,5 MIPS. Начиная с процессора 486, получило распространение так называемое умножение тактовой частоты, то есть внутреннее удвоение и даже учетверение внешней тактовой частоты (обозначается 486DX2, 486DX4).
В 1995 году появились первые процессоры Pentium, открывшие новый этап в развитии семейства. Они были 32-разрядными внутри, но имели 64-разрядную внешнюю шину данных. Принципиальным отличием было использование в них так называемой суперскалярной архитектуры, следствием чего стало более высокое быстродействие при той же тактовой частоте, что и i486DX. При тактовой частоте 66 МГц производительность процессора достигала 112 MIPS. В 1996 году тактовая частота Pentium была доведена до 200 МГц, а стоимость снизилась настолько, что он стал рядовым процессором персональных компьютеров семейства IBM PC.
В 1997 году Pentium был дополнен технологией MMX, призванной ускорять выполнение мультимедийных приложений (обработку изображений и звука). И в этом же году появился процессор Pentium II, который включает в себя технологию ММХ и имеет более высокое быстродействие. Возможная тактовая частота достигла 400 МГц.
В последние годы появились процессоры Pentium III и Pentium IV, имеющие еще более развитую архитектуру и тактовую частоту, превышающую 1 ГГц у Pentium III и 3 ГГц у Pentium IV.
Таким образом, содружество компании Intel и производителей IBM-совместимых персональных компьютеров успешно продолжается. Другие фирмы, выпускающие процессоры, вряд ли существенно потеснят в ближайшие годы Intel. Поэтому рассмотрим чуть подробнее характерные особенности процессоров для персональных компьютеров этой компании.
7.2.1. Особенности процессоров 8086/8088
Описание микропроцессоров фирмы Intel мы начнем с процессоров i8086/8088. Именно заложенные в них архитектурные решения во многом определили архитектуру последующих моделей семейства Intel, поддерживающих совместимость с более ранними моделями. В том числе и с недостатками и ограничениями предыдущих моделей.
Процессор i8086 имеет совмещенную (мультиплексированную) 20-разрядную внешнюю шину адреса/данных. Данные передаются по 16 разрядам, адрес — по 20 разрядам. Шина управления имеет 16 разрядов (в частности, в нее входят строб адреса и стробы обмена с памятью и устройствами ввода/вывода). Среднее время выполнения команды занимает 12 тактов синхронизации, один цикл обмена по внешней шине требует 4 тактов (без учета тактов ожидания, вводимых при асинхронном обмене). У процессора i8088 внешняя шина данных 8-разрядная.
Одна из характерных особенностей процессоров i8086/8088 — принцип сегментирования памяти. То есть вся память представляется не в виде непрерывного пространства, а в виде нескольких кусков — сегментов заданного размера (по 64 Кбайта), положение которых в пространстве памяти можно программно изменять. Об этом уже говорилось в разделе 3.1.2 (см. рис. 3.5 и 3.6).
Процессор 8086/8088 имеет 14 регистров разрядностью по 16 бит. Об их назначении также уже говорилось в разделе 3.2.
Для ускорения выборки команд из памяти в процессоре 8086 предусмотрен внутренний 6-байтный конвейер (в процессоре 8088 — 4-байтный). Конвейер заполняется читаемыми из памяти командами во время выполнения предыдущей команды и сбрасывается (считается пустым) при выполнении любой команды перехода (даже если это команда перехода на следующий адрес).
Система команд процессора включает в себя 133 команды, поддерживающие 24 метода адресации операндов. Такое большое число команд может рассматриваться как достоинство (можно гибко выбирать команду, оптимально подходящую для каждого конкретного случая), но оно же заметно усложняет структуру процессора.
Каждая команда содержит 1, 2 или 4 байта кода команды, за которыми могут следовать 1, 2 или 4 байта операнда.
В процессоре предусмотрены программные и аппаратные прерывания, разделение внешней шины с другими процессорами или с контроллером прямого доступа к памяти, а также возможность подключения математического сопроцессора i8087, существенно увеличивающего производительность вычислений.
При старте процессора (по внешнему сигналу RESET) он переходит в адрес памяти FFFF0 и начинает выполнение программы, которая размещается начиная с этого адреса.
Процессор может обрабатывать 256 типов прерываний: внешних (аппаратных), программных и внутренних. Векторы прерываний представляют собой двойное слово (два слова по 16 разрядов), определяющее сегмент и смещение начального адреса программы обработки прерываний. Для векторов прерываний отведена область памяти с адресами 00000…003FF. Внутренние прерывания вырабатываются при особых ситуациях:
- прерывание 0 соответствует переполнению при делении на нуль;
- прерывание 1 вырабатывается после каждой команды при установленном флаге трассировки TF в регистре состояния процессора (см. раздел 3.2);
- прерывание 4 вырабатывается по специальной команде INTO, если установлен флаг переполнения OF в регистре состояния процессора (это условное прерывание по переполнению).
Особое место занимает немаскируемое прерывание NMI (Non-Masked Interrupt), которое вырабатывается при поступлении внешнего сигнала NMI и не зависит от состояния флага разрешения аппаратных прерываний IF. В компьютере оно используется для контроля четности памяти, контроля корректности обмена с памятью и устройствами ввода/вывода, а также для обработки так называемых исключений, то есть особых условий, возникающих в процессе работы. Немаскируемым оно называется именно потому, что его нельзя запретить.
Важная отличительная особенность процессора — разделение операций обмена с устройствами ввода/вывода и с памятью. Для обмена с устройствами ввода/вывода используются как отдельные команды ввода и вывода, так и специальные управляющие сигналы на шине управления. Адреса и данные как при обмене с памятью, так и при обмене с устройствами ввода/вывода передаются по одним и тем же шинам. Но если для обмена с памятью используются все 20 разрядов шины адреса (адресуется 1 Мбайт — адреса 00000 ... FFFFF), то в циклах обмена с устройствами ввода/вывода — только 16 разрядов шины адреса (адресуется 64 Кбайта — адреса 00000 ... 0FFFF). Такой подход имеет как свои преимущества (например, упрощение реализации прямого доступа к памяти), так и недостатки (усложнение системы команд, увеличение количества управляющих сигналов).
Микропроцессоры i8086/8088 выполнены в виде интегральной микросхемы в 40-выводном корпусе. Отличие в назначении выводов микросхемы между ними только одно: адрес в процессоре 8088 не мультиплексирован с данными (передается по отдельным линиям), а в процессоре 8086 — мультиплексирован.
Процессор работает от одного источника питания напряжением +5В и требует внешнего тактирующего сигнала с частотой, определяемой номером модели (от 4,77 МГц до 10 МГц).
Специальный управляющий сигнал MN/MX определяет минимальный или максимальный режим работы процессора. В минимальном режиме процессор сам вырабатывает сигналы управления для внешней шины. Этот режим используется для построения простейших систем. Для работы в составе компьютера применяется максимальный режим, при котором сигналы управления внешней шиной вырабатываются специальной микросхемой контроллера шины i8288.
7.2.2. Особенности процессора 80286
Несмотря на то, что процессор 80286 остался 16-разрядным, как и его предшественник 8086, он представлял собой новое поколение процессоров, что определило его высокую популярность и обеспечило персональному компьютеру на его основе (IBM PC AT) довольно долгую жизнь. Этот процессор отличается тем, что он имеет специальные средства для работы в многопользовательских и многозадачных системах.
Наиболее существенное отличие от процессора 8086/8088 — это механизм управления адресацией памяти, который обеспечивает четырехуровневую систему защиты и поддержку виртуальной памяти. (Виртуальная память — это внешняя память большого объема, с которой процессор может взаимодействовать как со своей системной памятью, но с некоторыми ограничениями). Специальные средства предусмотрены также для поддержки механизма переключения задач (Task switching). То есть процессор способен выполнять несколько задач одновременно, переключаясь время от времени между ними. В процессоре 80286 также расширена система команд за счет добавления команд управления защитой и нескольких новых команд общего назначения.
Процессор 80286 может работать в двух режимах:
- Реальный режим (8086 Real Address Mode — режим реальной адресации), полностью совместимый с процессором 8086/8088. В этом режиме возможна адресация только в пределах 1 Мбайта физической памяти. Он используется для обеспечения программной преемственности с процессором 8086/8088.
- Защищенный режим (Protected Virtual Address Mode — защищенный режим виртуальной адресации). В этом режиме возможна адресация в пределах 16 Мбайт физической памяти. Такое решение связано с необходимостью построения компьютеров с большим объемом памяти, которые обеспечивали бы поддержку более сложных программ. В защищенном режиме система команд включает набор команд 8086, расширенный для обеспечения аппаратной поддержки многозадачного режима и виртуальной памяти.
Переключение в защищенный режим осуществляется одной командой (с предварительно подготовленными таблицами дескрипторов, описывающих параметры режима). Естественно, это довольно быстрый процесс. Обратное переключение в реальный режим гораздо сложнее: оно возможно только через аппаратный сброс процессора (по сигналу RESET), что требует гораздо больше времени.
В составе компьютера под управлением операционной системы MS DOS процессор 80286 работает в реальном режиме, а защищенный режим используют операционные системы типа UNIX, OS/2, NetWare286, а также операционные системы семейства MS Windows. Подробнее особенности этих режимов будут рассмотрены в следующем разделе.
Как и процессор 8086, 80286 имеет 16-разрядную внешнюю шину данных и 6-байтный конвейер команд. Однако быстродействие процессора 80286 при тактовой частоте 12,5 МГц примерно в 6 раз выше, чем у 8086 с тактовой частотой 5 МГц. Это достигается за счет усовершенствованной архитектуры и снижения количества тактов на одну команду. Для ускорения выполнения математических операций предусмотрено подключение к процессору 80286 микросхемы математического сопроцессора 80287.
Назначение внутренних регистров процессора 80286 такое же, как у процессора 8086/8088. Но в слове состояния процессора (PSW) добавлены три используемых разряда, и, кроме того, появился еще один внутренний регистр — регистр управления со словом состояния машины (MSW — Machine State Word), в котором используется только четыре бита (рис. 7.4).
Рис. 7.4. Форматы регистров признаков (PSW) и управления (MSW) процессора 80286.
Дополнительные биты слова состояния процессора PSW имеют следующее назначение (подробнее о них — в следующем разделе):
- IOPL (Input/Output Privilege Level) — два бита, определяющие уровень привилегий ввода/вывода;
- NT (Nested Task flag) — флаг вложенной задачи.
Регистр MSW управляет режимом процессора. Для изменения его содержимого и сохранения его в памяти предназначены специальные команды. Назначение его битов следующее:
- PE (Protection Enable) — разрешение защиты. Установка этого флага переводит процессор в защищенный режим. Но очистка флага не переводит в реальный режим (требуется аппаратный сброс процессора).
- MP (Monitor Processor extension) — мониторинг внешнего математического сопроцессора.
- EM (Processor Extension Emulated) — эмуляция математического сопроцессора.
- TS (Task Switch) — переключение задач. Как и два предыдущих разряда, этот разряд управляет сопроцессором.
Сочетание MP=0 EM=0 TS=0, устанавливаемое по аппаратному сбросу (по сигналу RESET), обеспечивает совместимость с 8086/8088. Сочетание MP=1 EM=0 используется при совместном включении с сопроцессором 80287, а сочетание MP=0 EM=1 применяется в случае программной эмуляции сопроцессора, при которой функции сопроцессора выполняются основным процессором, но гораздо медленнее.
Остановимся подробнее на организации памяти процессора 80286. 24-разрядная внешняя шина адреса позволяет адресовать 16 Мбайт физической памяти, но в реальном режиме доступен только 1 Мбайт, начинающийся с нулевого адреса (000000…0FFFFF). Так же, как и в 8086, применяется сегментация памяти, но управление сегментацией в реальном и защищенном режимах различно.
В реальном режиме процессор 80286, в отличие от 8086, имеет средства контроля перехода через границу сегмента. Например, при попытке обращения к слову, имеющему смещение FFFF (его старший байт выходит за границу сегмента), или при выполнении команды, все байты которой не умещаются в данном сегменте, процессор вырабатывает специальное прерывание — Segment Overrun Interrupt.
В защищенном режиме существуют отличия от 8086, касающиеся определения сегментов:
- Сегментные регистры CS, DS, SS и ES хранят не сами базовые (начальные) адреса сегментов, а селекторы, определяющие адреса в памяти, по которым хранятся дескрипторы (описатели) сегментов. Область памяти с дескрипторами называется таблицей дескрипторов.
- Каждый дескриптор сегмента содержит базовый адрес сегмента, размер сегмента (от 1 до 64 Кбайт) и его атрибуты.
- Базовый адрес сегмента имеет разрядность 24 бит, что и обеспечивает адресацию 16 Мбайт физической памяти.
- Селекторы, загружаемые в 16-битные сегментные регистры, имеют три поля: RPL (Requested Privilege Level) — запрашиваемый уровень привилегий, TI (Table Indicator) — индикатор использования локальной или глобальной таблицы дескрипторов, INDEX — номер дескриптора в таблице (формат показан на рис. 7.5).
Рис. 7.5. Формат селектора сегмента процессора 80286.
О порядке вычисления адреса памяти в защищенном режиме процессора 80286 уже говорилось в разделе 3.1.2 (см. рис.3.7). На сумматор, вычисляющий физический адрес памяти, подается не содержимое сегментного регистра, а базовый адрес сегмента из таблицы дескрипторов.
Дескрипторы хранятся в памяти и занимают по четыре смежных 16-разрядных слова (то есть 8 байт). При загрузке нового значения селектора дескрипторы считываются из памяти и сохраняются во внутренних программно недоступных (и невидимых) регистрах процессора. До смены значения селектора при обращениях к памяти используются значения дескрипторов только из этих невидимых регистров (их называют кэш-регистрами).
В защищенном режиме команды ввода/вывода процессора являются привилегированными. Это означает, что они могут выполняться задачами только с определенным уровнем привилегий, определяемых полем IOPL регистра признаков. Несанкционированная попытка выполнения этих команд вызывает прерывание по нарушению защиты.
Как и 8086, процессор 80286 может обрабатывать до 256 типов прерываний. Прерывания подразделяются на аппаратные (маскируемые или немаскируемые), вызываемые сигналами на входах процессора, программные, вызываемые командой INT, и исключения инструкций. При этом аппаратные и программные прерывания работают точно так же, как в 8086/8088.
Исключения инструкций (Instruction Exceptions) или просто исключения случаются при возникновении особых условий при выполнении операций (в 8086 аналогом исключений являлись внутренние прерывания процессора). Обработка исключений проводится аналогично обработке прерываний.
Каждому номеру прерывания соответствует свой элемент в таблице дескрипторов прерываний IDT (Interrupt Descriptor Table). В реальном режиме эта таблица организована так же, как у 8086/8088, то есть содержит двойные слова, определяющие адрес начала процедур обработки прерываний. В защищенном режиме таблица содержит 8-байтные дескрипторы прерываний. Ее размер может быть от 32 до 256 дескрипторов, и располагаться она может в любом месте памяти.
Система команд процессора 80286 включает, помимо полного набора8086, ряд дополнительных команд, например:
- сохранение константы в стеке, сохранение в стеке и восстановление из стека всех регистров одной командой;
- целочисленное умножение на константу;
- сдвиги (включая циклические) на заданное в константе количество шагов;
- вход и выход из процедур;
- команды управления защитой.
Попытка выполнения недействительной команды (или попытка выполнения в реальном режиме команды, предназначенной только для защищенного режима) вызывает специальное исключение.
Процессор 80286 выпускался в 68-выводных корпусах. Внешние шины адреса и данных были разделены. Напряжение питания процессора составляет +5В.
|