3.2 Регистровые структуры
Во всех 16-разрядных процессорах используются программно доступные регистры общего (РОН) и специального назначения. Структура РОН зависит от структуры ЛА (рисунок 3.2). РОН в составе ЦП используются для хранения операндов, наиболее часто используемых при вычислениях, что сокращает количество обращений к ОП за операндами, а следовательно, позволяет повысить и производительность процессора. Чем больше емкость программно доступных РОН, тем больше промежуточных данных можно в них хранить без обращения к ОП. Также РОН можно использовать для хранения адресов при выполнении некоторых видов адресации (регистровая косвенная, базовая и т.п.) и для других целей.
Процессор МС68000. В процессоре МС68000 логический адрес размещается в двух 16-разрядных ячейках памяти. Поэтому РОН выполнены в виде 32-разрядных регистров, которые по назначению делятся на две группы по 8 регистров в каждой:
- регистры данных D7-D0, позволяющие хранить как слова двойной длины, так и словные операнды, а в младшем слове разрешена обработка и байтов (в формате команды два бита указывают на размер операнда). Регистры данных используются при выполнении арифметико-логических преобразований, операций сдвига и т.п.;
- регистры адреса А7-А0 используются для хранения ЛА для некоторых видов адресации, при этом регистр А7 выполняет функции указателя стека, а так как процессор работает в двух режимах - системном и пользовательском, то таких регистров в составе РОН два: А7 и А7', которые выбираются автоматически в зависимости от режима работы.
Кроме этих регистров, в состав процессора входит 32-разрядный программный счетчик РС и 16-разрядный регистр слова состояния SR.
В состав процессора Z8001 входит шестнадцать 16-разрядных РОН для адресации к словам, из которых R7-R0 можно использовать для выполнения байтных команд. Кроме того, все регистры образуют восемь регистровых пар RR0-RR14, которые служат для хранения адресов, так как формат ЛА 32-разрядный. Выбор регистровой пары осуществляется автоматически при обработке соответствующего вида адресации.
Z8001 также работает в двух режимах работы: системном и пользовательском, поэтому в состав РОН входят два указателя стека RR14 и RR14', выбираемых автоматически в зависимости от режима работы процессора.
Программный счетчик РС 32-разрядный занимает два регистра, один регистр используется в качестве слова состояния процессора SR и два регистра PSAP используются в качестве указателя области состояния программ.
Необходимость расширения РОН до шестнадцати обусловлена:
- хранением в РОН 32-разрядных логических адресов;
- при выполнении арифметико-логических преобразований результат операции помещается только в РОН, что требует увеличения их количества для сокращения пересылок между РОН и ОП (в формате команды нет бита направления записи результата).
В архитектуре процессора фирмы DEC предусмотрено 8 программно доступных регистров, из которых R6 и R6' используются как указатели стеков системного и пользовательского режимов, а регистр R7 - в качестве программного счетчика РС, что позволяет реализовать 4 дополнительных вида адресации (непосредственную, абсолютную, относительную по РС, косвенную относительную по РС) на основе прямой и косвенной автоинкрементной и индексной адресаций.
Программно доступные регистры R0-R5 используются для хранения операндов, адресов, индексов, счетчиков циклов и не имеют жесткой привязки по назначению. В процессоре выполнение байтовых операций возможно только с младшим байтом РОН.
Программно недоступные регистры R8-R15 предназначены для выполнения определенных функций для временного хранения исполнительного ЛА, входных операндов, промежуточных результатов и других целей.
Процессор Intel 8086 имеет 14 16-разрядных регистров, которые можно разделить на 4 набора: 3 набора по четыре программно доступных регистра и два программно недоступных: указатель команды IP и слово состояния процессора SR.
РОНы в процессоре i8086 представлены 16-разрядными регистрами АХ, ВХ, СХ и DX, которые можно использовать как словные, так и как байтные (AL, BL, CL, DL - младший байт, AH, BH, CH, DH - старший байт). Адресация к регистрам показана ниже.
100 | AH | 000 | AL | AX | 000 | Аккумулятор |
101 | CH | 001 | CL | CX | 001 | Счетчик |
110 | DH | 010 | DL | DX | 010 | Данные |
111 | BH | 011 | BL | BX | 011 | База |
| | | | SP | 100 | Указатель стека |
| | | | BP | 101 | Указатель базы |
| | | | SI | 110 | Индекс источника |
| | | | DI | 111 | Индекс приемника |
В некоторых командах функции РОН специализированы, например, регистр СХ является счетчиком в цепочечных командах.
Вторую группу составляют указательные и индексные регистры (SP, BP, SI, DI), которые обычно содержат внутрисегментные смещения.
Третью группу регистров составляют сегментные регистры CS, DS, SS и ES, каждый из которых идентифицирует конкретный текущий сегмент и функции их совершенно различны: CS - идентифицирует текущий сегмент кода (программы), DS - текущий сегмент данных, SS - текущий сегмент стека, ES - текущий дополнительный сегмент (данных). Таким образом, логический адрес в команде задает только смещение в сегменте, а требуемый текущий сегментный регистр определяется командой по умолчанию или задается в команде. Например, выборка всех команд осуществляется из текущего сегмента кода CS, а смещение задается в указателе команды IP. Базовые адреса операндов хранятся в текущих сегментах данных DS или ES, при стековых командах в сегменте стека SS, а смещение задается в команде или хранится в одном из РОН.
Такое разделение на специализированные сегментные регистры позволяет программе использовать до четырех сегментов емкостью до 64 Кбайт каждый, что в первых моделях процессоров было вполне достаточным, и перезагрузка сегментных регистров новыми базовыми адресами выполнялась редко.
|