Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
лекции АКС / лекции АКС / Лекция 9. СТРУКТУРА ПРОЦЕССОРА.doc
Скачиваний:
178
Добавлен:
26.02.2016
Размер:
4.51 Mб
Скачать

Пример организации регистров в микропроцессоре

Очень интересно проанализировать и сравнить организацию регистров в разных моделях процессоров примерно одного класса. В этом разделе мы позна­комимся с двумя моделями 16-разрядных микропроцессоров, разработанными примерно в одно и то же время: Motorola MC68000 [STRI79] и Intel 8086 [MORS78]. Организация регистров микропроцессора MC68000 показана схема­тически на рис. 11.3,а, а микропроцессора Intel 8086 — на рис. 11.3.6. Регистры, имеющие отношение к абсолютно внутренним функциям процессора, как, на­пример регистр адреса в памяти, на схемах не показаны.

В микропроцессоре MC68000 имеется восемь 32-разрядных регистров дан­ных и девять регистров адреса такой же длины. Хотя основное назначение реги­стров данных — манипуляция со значениями операндов, они используются и в качестве индексных регистров при формировании исполнительного адреса. Раз­рядность регистров позволяет работать с 8-, 16- или 32-разрядными элементами

данных в зависимости от кода операции. Регистры адреса содержат 32-разрядные адреса (без сегментации). Два из них используются в качестве указа­телей стека: один — стека прикладной программы, а другой — стека операцион­ной системы в соответствии с текущим режимом выполнения программы. Оба регистра имеют номер 7, поскольку в каждый момент времени может быть ак­тивным только один из них. В состав MC68000 входит также 32-разрядный счетчик команд и 16-битовый регистр состояния.

Разработчики фирмы Motorola создали систему команд с регулярной струк­турой, в которой отсутствуют регистры специального назначения. Стремление обеспечить высокую эффективность программы в машинном коде привела их к мысли разделить регистры на две функциональные группы и таким образом сэ­кономить один бит в поле спецификации регистра. Такой компромисс между универсальностью назначения регистров и компактностью машинного кода пред­ставляется вполне разумным.

Разработчики микропроцессора Intel 8086 использовали при организа­ции регистров другой подход. Каждый регистр имеет свое назначение, хотя некоторые из них могут использоваться и в качестве универсальных. В со­ставе Intel 8086 имеется четыре 16-разрядных регистра данных, которые можно адресовать как целиком (все 16 разрядов), так и побайтово, и четыре 16-разрядных регистра, предназначенных для формирования адреса. В неко­торых командах регистры данных можно использовать в качестве универ­сальных. В других командах эти регистры используются неявно. Например, в команде умножения всегда используется аккумулятор. В большинстве ко­манд неявно используются и четыре адресных регистра, каждый из которых содержит смещение внутри сегмента. Имеется также четыре 16-разрядных регистра сегментов. Три из них используются неявно и указывают на сегмент текущей команды (это весьма полезно при выполнении команд переходов), сегмент данных и сегмент, в котором размещен стек. Такое жесткое распре­деление функций между этими регистрами позволяет за счет ограниченной гибкости добиться компактного кодирования операций в коде команды. В состав микропроцессора Intel 8086 также входят указатель команды и набор флагов состояний и управления.

Из этого краткого описания двух конструкций процессоров следует, что не существует единого общепринятого подхода к организации регистров в процессоре (см. [TOON81]). Как и многие другие вопросы проектирования процессоров, эта проблема до сих пор является темой оживленных дискуссий и экспериментов.

Второй вывод, касающийся организации регистров в процессоре, иллю­стрируется схемой регистров процессора Intel 80386, представленной на рис. 11.3,в [ELAY85]. Этот микропроцессор разрабатывался как 32-разрядная модификация процессора 8086. В состав процессора 80386 входят 32-разрядные регистры, но чтобы сохранить обратную совместимость про­граммного обеспечения, в нем сохранена прежняя схема распределения функций между регистрами.

Рис. 11.3. Организация регистров в микропроцессорах: а — Motorola MC68000; б — Intel 8086; в — Intel 80386, 80486, Pentium, Pentium II