Э. Таненбаум - Архитектура компьютера (1127755), страница 95
Текст из файла (страница 95)
Существует один регистр, который представляет собой «гибрид», доступный и в привилегированном, и в пользовательском режимах. Это — упоминавшийся в главе 4 регистр РЯ»у' (Ргойгаш агате 1«'опт — слово состояния программы), который еще называют флаговым. Флаговый регистр содержит различные биты, необходимые центральному процессору. Самые важные биты — это коды условий. Они устанавливаются в каждом цикле АЛУ и отражают состояние результата предыдущей операции: Общий обзор уровня архитектуры набора команд 381 + Н вЂ” результат отрицателен (Хеяа11че); + Х вЂ” результат равен 0 (Лего); + Ч вЂ” результат вызвал переполнение (оЪ'егйотч); + С вЂ” перенос самого левого бита (Саггу опс); + А — перенос бита 3 (Апх111агу саггу — служебный перенос); + Р— результат четный (Рапгу).
Коды условий очень важны, поскольку используются при сравнениях и условных переходах. Например, команда СИР обычно вычитает один операнд из другого и на основе полученной разности устанавливает коды условий. Если операнды равны, то разность будет равна О, а во флаговом регистре установится бит Е.
Последующая команда ВЕО (ВгапсЬ Ецпа1 — переход в случае равенства) проверяет бит Х и совершает переход, если он установлен. Флаговый регистр может хранить не только коды условий. Его содержимое в разных машинах может быть разным. Дополнительные поля указывают режим машины (например, пользовательский или привилегированный), бит трассировки (который используется для отладки), уровень приоритета процессора, статус разрешения прерываний. Флаговый регистр обычно читается в пользовательском режиме, но некоторые поля могут записываться только в привилегированном режиме (например, бит, который указывает режим). Команды Главная особенность уровня, который мы сейчас рассматриваем, — это набор машинных команд.
Они управляют действиями машины. В этом наборе всегда в той или иной форме присутствуют команды 1.ОАО и 5ТОкЕ, предназначенные для перемещения данных между памятью и регистрами, и команда МОЧЕ, которая служит для копирования данных из одного регистра в другой. Также всегда присутствуют арифметические и логические команды, команды сравнения элементов данных и команды переходов в зависимости от результатов.
Некоторые типичные команды мы уже рассматривали в главе 4 (см. табл. 4.2.), а в этой главе мы познакомимся со многими другими, В этой главе мы обсудим три совершенно разные архитектуры команд: 1А-32 компании 1пге1 (она реализована в Реп1шш 4), Ъ'егз1оп 9 БРАКС (она реализована в процессорах ПггаБРАВС) и 8051. Мы не преследуем цель дать исчерпывающее описание каждой из этих архитектур.
Мы просто хотим продемонстрировать важные аспекты архитектуры команд и показать, как эти аспекты меняются от одной архитектуры к другой. Начнем с машины Репбшп 4. Общий обзор уровня архитектуры набора команд Регй1ит 4 Процессор Репгшш 4 развивался на протяжении многих лет.
Как отмечалось в главе 1, его история восходит к самым первым микропроцессорам. Основная архитектура команд обеспечивает выполнение программ, написанных для про- 382 Глава 5. Уровень архитектуры набора команд цессоров 8086 и 8088 (которые имеют одну и ту же архитектуру команд), и отчасти даже для 8080 — 8-разрядного процессора, который был популярен в 70-е годы. На 8080, в свою очередь, в значительной степени повлияли требования совместимости с процессором 8008, построенным на базе процессора 4004 (4-разрядной микросхемы, применявшейся еще в каменном веке). С точки зрения программного обеспечения компьютеры 8086 и 8088 были 16-разрядными (хотя компьютер 8088 содержал 8-разрядную шину данных).
Их последователь, 80286, также был 16-разрядным. Его главным преимуществом был больший объем адресного пространства, хотя очень немногие программы его использовали, поскольку оно состояло из 16 384 64-килобайтных сегментов, а не представляло собой линейную 2зюбайтную память. Процессор 80386 был первой 32-разрядной машиной, выпущенной компанией 1пге1. Все последующие процессоры (80486, Репсшш, Репгшш Рго, Репсшш П, Репсшш П1, Репйнш 4, Се!егоп, Хеоп, Репг(пш М, Сепсг(по и т. д.) имеют точно такую же 32-разрядную архитектуру, которая называется 1А-32, поэтому мы сосредоточим наше внимание именно на этой архитектуре.
Единственным существенным изменением архитектуры со времен процессора 80386 было введение в более поздние версии Репгшш ММХ-команд. Эти команды выполняют совершенно определенную функцию — повышают производительность мультимедийных приложений. Репгшш 4 имеет 3 операционных режима, в двух из которых он работает как 8086. В реальном режиме все функции, которыми был наделен процессор со времен 8088, отключаются, и Репг(цш 4 работает как простой процессор 8088. При программной ошибке происходит полный отказ системы.
Если бы компания 1пге! занималась разработкой человеческих существ, то внутрь каждого такого существа непременно помещался бы специальный бит, возвращающий человека в режим функционирования своих предков (примитивный мозг, отсутствие речи, обитание на деревьях, сугубо банановая диета и т. д.). На следующей ступени находится режим виртуального процессора 8086, который делает возможным исполнение старых программ, написанных для 8088, но с защитой.
Чтобы запустить старую программу 8088, операционная система создает специальную изолированную среду, которая работает как процессор 8088, если не считать того, что при программном сбое операционной системе передается соответствующая информация, и полного краха системы не происходит. Когда пользователь уу(поотгз открывает окно МБ-?)ОЯ, запускаемая в этом окне программа выполняется в режиме виртуального процессора 8086 — это позволяет зашитить |Ч(пдотчз от возможных вольностей 1)08-программ. Последний режим — это защищенный режим, в котором Репгшш 4 работает как Реп1шш 4, а не как 8088.
В этом режиме доступны 4 уровня привилегий, задаваемые битами во флаговом регистре (РЯЖ). Уровень 0 соответствует привилегированному режиму на других компьютерах и обеспечивает полный доступ к машине. Этот уровень используется операционной системой. Уровень 3 предназначен для пользовательских программ. На этом уровне блокируется доступ к определенным командам и регистрам управления, чтобы сбой какой-нибудь пользовательской программы не привел к краху всей системы.
Уровни 1 и 2 применяются редко. Общий обзор уровня архитектуры набора команд 383 Репгшш 4 имеет огромное адресное пространство. Память разделена на 16 384 сегмента, каждый из которых занимает адреса от О до 2з2 — 1. Однако большинство операционных систем (включая 1ЛЯ1Х и все версии Ю1пг)отта) поддерживают только один сегмент, поэтому для прикладных программ обычно доступно линейное адресное пространство размером 2з' байт, причем иногда часть этого пространства занимает сама операционная система.
Каждый байт в адресном пространстве имеет свой адрес. Слова состоят из 32 бит. Байты нумеруются справа налево (то есть самьгй первый адрес соответствует самому младшему байту). Регистры процессора Репс1пш 4 показаны на рис. 5.3. Первые четыре регистра, ЕАХ, ЕВХ, ЕСХ и ЕПХ, — 32-разрядные. Это регистры общего назначения, хотя у каждого из них есть определенные особенности. ЕАХ вЂ” основной арифметический регистр; ЕВХ предназначен для хранения указателей (адресов памяти); ЕСХ связан с организацией циклов; ЕРХ нужен для умножения и деления — этот регистр вместе с ЕАХ содержит 64-разрядные произведения и делимые.
6 В ЕВХ ЕСХ ЕОХ ЕЗ! Е01 ЕВР ЕЗР СЗ 08 ГЗ Е!Р ЕГЫ88 Рио. З.З. Основные регистры процессора РепГшгп 4 384 Глава 5. Уровень архитектуры набора команд Младшие 16 и 8 бит в каждом из рассматриваемых регистров — это самостоятельные 16- и 8-разрядный регистры соответственно, позволяющие легко манипулировать 16- и 8-разрядными значениями. В компьютерах 8088 и 80286 имеются только 8- и 16-разрядные регистры, 32-разрядные регистры появились в системе 80386 вместе с приставкой Е (Ехгепоео — расширенный).
Следующие три регистра также являются регистрами общего назначения, но с большей степенью специализации. Регистры ЕБ1 и Е1)1 предназначены для хранения указателей и в основном ориентированы на аппаратную поддержку строковых команд: ЕЯ указывает на исходную строку, Е1)1 — на целевую. Регистр ЕВР тоже предназначен для хранения указателей и обычно используется для указания на базу текущего фрейма локальных переменных, как и регистр 1Л' в машине 1) ЧМ. Такой регистр обычно называют указателем фрейма.
Наконец, регистр ЕБР— это указатель стека. Следующая группа регистров от СБ до ОБ — сегментные регистры. Это электронные трилобиты — атавизмы, оставшиеся от процессора 8088, которому через 16-разрядные адреса было доступно 2ю байт памяти. Достаточно сказать, что когда Репе(цш 4 работает в режиме использования единого линейного 32-разрядного адресного пространства, их можно смело игнорировать. Регистр Е1Р (Ехгепоео 1пзггпсгюп Ро1пгег — расширенный указатель команд) представляет собой счетчик команд. Регистр ЕРЕАСБ — флаговый.
Общий обзор уровня архитектуры набора команд ЦйгаЗРАЙС Ш Архитектура БРАКС была впервые введена в 1987 году компанией Бцп М)сгозузгешз. Эта архитектура стала одной из первых К1БС-архитектур промышленного назначения. Она была основана на исследовании, проведенном в Беркли в 80-е годы [161, 1641. Изначально архитектура БРАКС была 32-разрядной, но ЛсгаБРАКС 1П вЂ” это 64-разрядная машина, основанная на архитектуре Чегзюп 9 БРАКС, и именно ее мы будем описывать в этой главе. В целях согласованности с остальными частями книги мы будем называть данную систему П)сгаБРАКС 1П, хотя на уровне архитектуры набора команд все машины П)ггаБРАКС идентичны.