ПРОЦЕССОРЫ: МИКРОАРХИТЕКТУРЫ И ПРОГРАММИРОВАНИЕ

Процессор и оперативная память образуют центральное устройство (ЦУ) ЭВМ. Процессором является функционально полная совокупность устройств, которая регулирует, управляет и контролирует соответствующий рабочий процесс (в ЭВМ — процесс обработки данных). Сопряжение процессора, памяти и внешних устройств осуществляется через систему интерфейсов, реализующих коммутационно-коммуникационные функции.

Общее представление о структуре и архитектуре процессоров

Системы команд

Основные команды ЭВМ классифицируются вкратце следующим образом (подробнее см. далее, описание команд для 18086) — по функциям (выполняемым операциям), направлению приема-передачи информации, адресности. Основные признаки классификации и типы команд помещены в табл. 3.1.

Очевидна связь таких параметров ЦУ, как длина адресного пространства, адресность, разрядность. Увеличение разрядности позволяет увеличить адресность команды и длину адреса (т. е. объем памяти, доступной данной команде, например, в 32-раз-рядной машине, можно адресовать до 4 Гбайт ОП). Увеличение адресности, в свою очередь, приводит к повышению быстродействия обработки (за счет снижения числа требуемых команд).

В трехадресной машине, например, сложение двух чисел требует одной команды (извлечь число по А1, число по А2, сложить и записать результат по АЗ). В двухадресной машине необходи-

Таблица 3.1. Классы команд

Тип команд

Выполняемые действия (или другие признаки)

Команды пересылки

Пересылка данных между двумя регистрами или между регистром и ячейкой памяти. В некоторых процессорах реализуется пересылка между двумя ячейками памяти, а также групповая пересылка содержимого нескольких регистров в память или их загрузка из памяти

Команды ввода и вывода

Реализуют пересылку данных из регистра процессора (ОП) во внешнее устройство или прием данных из внешнего устройства в регистр (ОП)

Команды обработки дан-

Короткие операции (один такт)

Логиче

ские

Логическое сложение (для каждого бита 01 и 02 осуществляется операция или)

НЫХ(01 — первый операнд, 02 — второй)

Логическое умножение (для каждого бита 01 и 02 осуществляется операция и)

Инверсия (в 01 все единицы заменяются на нули и наоборот)

Сравнение логическое (если 01 = 02, то некий флаг или регистр устанавливается в «1», иначе — в «0»)

Арифме-

Сложение операндов

тические

Вычитание (сложение в обратном коде)

Сравнение арифметическое (если 01 > 02, или 01 = 02, или 01 < 02, то некий флаг или регистр устанавливается в «1», иначе — в «0»)

Команды

сдвига

Осуществляют арифметические, логические и циклические сдвиги адресуемых операндов на один или несколько разрядов

Длинные операции

Сложение/вычитание с плавающей запятой

(несколько тактов)

Умножение/деление с фиксированной и плавающей запятой

Операции

управления

Безусловный переход (ветвление, branch)

Загружает в счак новое содержимое, являющееся адресом следующей выполняемой команды

Вызов

подпрограммы

Производится путем безусловной передачи управления с сохранением адреса возврата управления

Условный переход (conditional branch)

Производит загрузку в рс нового содержимого, если выполняются определенные условия

Команды организации программных циклов

Условный переход в зависимости от значения содержимого заданного регистра, который используется как счетчик циклов

Команды

прерывания

Переход к одной из программ обслуживания исключений и прерываний

Продолжение табл. 3.1

Тип команд

Выполняемые действия (или другие признаки)

Операции

управления

Команды изменения признаков

Запись-чтение содержимого регистра состояния, в котором хранятся признаки, а также изменение значений отдельных признаков

Команды управления процессором

Команды останова, отсутствия операции и ряд команд, определяющих режим работы процессора или его отдельных блоков

Тип выборки

Регистр—регистр

01 и 02 размещаются в регистрах АЛУ

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

Память—регистр (регистр—память)

Один из операндов размещается в ОП

Память—память

01 и 02 размещены в ОП

Адресация

Прямая

Операнд выбирается из ячейки/слова памяти, адрес которой содержится в команде

Регистровая

Операнд выбирается из регистра, номер (имя) которого указано в команде

Косвенно-регист

ровая

Операнд выбирается из ячейки/слова памяти, адрес которой содержится в регистре, указанном в команде

Косвенно-регистровая со смещением

Операнд выбирается из ячейки памяти, адрес которой является суммой содержимого, указанного в команде регистра и заданного в команде смещения (смещение может быть положительным или отрицательным числом)

Косвенно-регистровая с индексированием и смещением

Операнд выбирается из ячейки памяти, адрес которой является суммой содержимого указанного в команде регистра, индексного регистра и заданного в команде смещения. Иногда имеются специальные индексные регистры, иногда в качестве индексного используется регистр, номер или имя которого указывается в команде. Частным случаем этого способа является индексная адресация, когда адрес образуется суммированием специального индексного регистра и заданного в команде смещения

Относительная

Операнд выбирается из ячейки памяти, адрес которой является суммой текущего содержимого СчАК и заданного в команде смещения (числа со знаком). Во многих процессорах этот способ адресации используется не для адресации операнда, а для формирования адреса, к которому переходит программа при ветвлении. При этом сформированный таким образом адрес загружается в счак, обеспечивая выборку требуемой следующей команды

Непосредственная

Операнд непосредственно содержится в поступившей команде, размещаясь следом за кодом операции (КОП)

Окончание табл. 3.1

Тип команд

Выполняемые действия (или другие признаки)

Адресность

Одноадресные

КОП А1

А1 в зависимости от модификации команды может обозначать либо адрес ячейки (регистра), в которой хранится одно из чисел, участвующих в операции, либо адрес ячейки (регистра), куда следует поместить результат

Двухадресные

КОП А1 А2

А1 — это обычно адрес ячейки (регистра), где хранится 1-е из чисел, участвующих в операции, и куда после завершения операции должен быть записан результат; А2 — обычно адрес ячейки (регистра), где хранится второе участвующее в операции число

Трехадресные

КОП А1 А2 АЗ

А2 и аз — адреса ячеек (регистров), где расположены, соответственно, 1- и 2-е числа, участвующие в операции, А1 — адрес ячейки (регистра), куда следует поместить результат выполнения операции

Безадресные

КОП Данные

Содержит только код операции, а информация для нее должна быть заранее помещена в определенные регистры машины или содержаться в адресной части

Комбинированные

КОП Адрес Данные

Один или более адресов адресной части предназначены для размещения данных (непосредственный операнд)

Другие

признаки

Операции с фиксированной запятой (ФЗ) или точкой (ФТ)

Арифметические и логические операции над числами, обычно занимающими одно машинное слово (пример — системы команд процессоров i8086 — i80486, или х86)

Операции с плавающей запятой (ПЗ) или точкой(ПТ)

Арифметические операции над числами, представленными в виде «мантисса—порядок» (пример — операции сопроцессора ?80487 или х87)

Десятичная

арифметика

Реализация команд, обрабатывающих тетрады бит и выполняющих соответствующие арифметические операции

Символьная

обработка

Команды обработки байт памяти как символов ASCII (сравнение, сортировка и пр.)

Обработка чисел большой длины

Обработка машинных слов длины, например, 64 или

128 (256)байт

Векторные операции

Команды SIMD (Single Instruction — Multiple Data) или ОКМД (Одна Команда — Множество Данных) включают ММХ, 3DNow!, SSE, SSE2, SSE3, SSSE3

Команды индексной арифметики

Изменение содержания индексных регистров (в некоторых машинах — ячеек ОП), что используется для обращения к последовательным элементам массива

мы две команды (первая — извлечь число по А1 и поместить в РЧ (или сумматор), вторая — извлечь число по А1, сложить с содержимым РЧ и результат записать по А2). Легко видеть, что одноадресная машина потребует три команды. Поэтому неудивительно, что основная тенденция в развитии ЦУ ЭВМ состоит в увеличении разрядности.

Классы процессоров

В зависимости от набора и порядка выполнения команд процессоры подразделяются на четыре класса, отражающих также хронологию развития ЭВМ.

CISC (Complex Instruction Set Computer) — классическая архитектура процессоров, которая начала свое развитие в 1940-х гг. с появлением первых компьютеров и в которой ЦП использует микропрограммы для выполнения большого набора разноформатных команд с использованием многочисленных способов адресации, для этого требуется наличие сложных электронных цепей для декодирования и исполнения. В течение длительного периода производители компьютеров разрабатывали и воплощали в изделиях все более сложные и полные системы команд.

Типичным примером CISC являются процессоры Intel х86 (в частности, семейство Pentium). Они выполняют более 200 команд разной степени сложности, которые имеют размер от 1 до 15 байт, и обеспечивают более 10 различных способов адресации. Такое многообразие выполняемых команд и способов адресации позволяет программисту реализовать наиболее эффективные алгоритмы решения различных задач. Однако при этом существенно усложняется структура процессора, особенно его устройства управления, что приводит к увеличению размеров и стоимости кристалла, снижению производительности.

В то же время анализ работы процессоров показал, что в течение примерно 80 % времени выполняется лишь 20 % общего набора команд. Поэтому была поставлена задача оптимизации выполнения небольшого по числу, но часто используемых команд. В середине 70-х это привело многих производителей компьютеров к пересмотру своих позиций и к разработке ЦП с ограниченным набором команд.

RISC (Redused Instuction Set Computer) — архитектура отличается использованием ограниченного набора команд фиксированного формата. Первый процессор RISC был создан корпорацией IBM в 1979 г. и имел шифр IBM 801.

Современные RISC-процессоры обычно реализуют около 100 команд, имеющих фиксированный формат длиной 4 байта. Также значительно сокращается число используемых способов адресации. Обычно в RISC-процессорах все команды обработки данных выполняются только с регистровой или непосредственной адресацией. При этом для сокращения количества обращений к памяти RISC-процессоры имеют увеличенный объем внутреннего РЭУ — от 32 до нескольких сотен регистров (в CISC-процессорах число регистров общего назначения обычно составляет 8—16). В результате процессор на 20—30 % реже обращается к оперативной памяти, что также повышает скорость обработки данных. Упростилась топология процессора, выполняемого в виде одной интегральной схемы, сократились сроки ее разработки, она стала дешевле.

Обращение к памяти в RISC-процессорах используется только в операциях загрузки данных в РЭУ или пересылки результатов из РЭУ в память. При этом используется небольшое число наиболее простых способов адресации — косвенно-регистровая, индексная и некоторые другие. В результате существенно упрощается структура процессора, сокращаются его размеры и стоимость, значительно повышается производительность. Начиная с процессора Pentium, корпорация Intel начала внедрять элементы RISC-технологий в свои изделия.

В то время, как в процессоре CISC для выполнения одной команды необходимо в большинстве случаев десять тактов и более, процессоры RISC близки к тому, чтобы выполнять по одной команде в каждом такте. Следует также иметь в виду, что благодаря своей простоте процессоры RISC не патентуются. Это также способствует их быстрой разработке и широкому производству.

Процессор MISC работает с минимальным набором длинных команд и характеризуется небольшим набором чаще всего встречающихся команд. Вместе с этим принцип команд VLIW обеспечивает выполнение группы команд за один цикл работы процессора. Порядок выполнения команд распределяется таким образом, чтобы в максимальной степени загрузить маршруты, по которым проходят потоки данных. Таким образом, архитектура MISC объединила вместе суперскалярную (многопоточную) и VLIW концепции. Компоненты процессора просты и работают с высокими скоростями.

VLIW (Very Large Instruction Word) — архитектура, которая появилась относительно недавно (в 1990-х гг.). Ее особенностью является использование очень длинных команд (до 128 бит и более), отдельные поля которых содержат коды, обеспечивающие выполнение различных операций.

Специальный компилятор планирования перед выполнением прикладной программы проводит ее анализ и по множеству ветвей последовательности операций определяет группу команд, которые могут выполняться параллельно. Каждая такая группа образует одну сверхдлинную команду. Это позволяет решать две важные задачи. Во-первых, в течение одного такта выполнять группу коротких («обычных») команд, а во-вторых — упростить структуру процессора. Этим технология VLIW отличается от су-перскалярности (здесь отбор групп одновременно выполняемых команд происходит непосредственно в ходе выполнения прикладной программы, а не заранее, из-за этого усложняется структура процессора и замедляется скорость его работы).

Процессоры типа VLIW выпускают фирмы Transmeta, Intel и Hewlett-Packard. К VLIW-типу можно отнести и ожидавшийся в 2002 г. процессор Elbrus 2000 — E2k, объявленный российской компанией «Эльбрус».

 
< Пред   СОДЕРЖАНИЕ     След >