Управляющие регистры и регистры состояния

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

Конечно, у разных типов машин организация регистров отличается; для их классификации также используется различная терминология. Здесь приводится довольно полный список типов регистров и дается их краткое описание. Кроме ранее упомянутых регистров, MAR, MBR, I/OAR и I/OBR, важными для выпол­нения команд являются следующие.

• Программный счетчик (program counter — PC). Содержит адрес команды, которая должна быть выбрана из памяти.

• Регистр команд (instruction register — IR). Содержит последнюю выбран­ную из памяти команду.

В состав всех процессоров входит также регистр (или набор регистров), из­вестный под названием регистра слова состояния программы (program status word — PSW). В нем, как правило, содержатся коды условий и другая инфор­мация о состоянии, например, бит разрешения/запрещения прерываний или бит режима системный/пользовательский.

Коды условий (известные также как флаги) — это последовательность би­тов, устанавливаемых или сбрасываемых процессором в зависимости от резуль­тата выполненных операций. Например, в результате выполнения арифметиче­ского действия может получиться положительное число, отрицательное, ноль, или может произойти переполнение. В дополнение к сохранению полученного значения в памяти или регистре в результате арифметических операций уста­навливаются также соответствующие коды условий. Впоследствии они могут быть проверены условной операцией ветвления. Биты кодов условий группиру­ются в один или несколько регистров (обычно они составляют часть регистра управления). Вообще говоря, есть машинные команды, позволяющие прочитать содержимое этих битов с помощью явных обращений к регистрам; однако изме­нять их содержимое явным образом нельзя, поскольку эти биты предназначены для отображения результатов выполнения команд.

В машинах, в которых используются различные виды прерываний, может быть предусмотрено несколько регистров прерываний с указателями на каждую программу обработки прерываний. Если при реализации некоторых функций (например, вызова процедуры) используется стек, процессор должен иметь ре­гистр — указатель стека. Для аппаратного обеспечения управления памятью (см. главу 7, "Управление памятью") нужны свои регистры. И, наконец, регистры часто используются при управлении операциями ввода-вывода.

На устройство и организацию управляющих регистров и регистров состоя­ния влияют несколько факторов. Одним из них является поддержка операцион­ной системы. Различные виды управляющей информации используются опера­ционной системой по-разному. Если разработчик процессора имеет ясное пред­ставление об операционной системе, которая будет работать с этим процессором, он сможет так спланировать организацию регистров, чтобы обеспечить аппарат­ную поддержку ряда возможностей, таких, как защита памяти или переключе­ние пользовательских программ.

Еще одним ключевым конструкторским решением является распределение управляющей информации между регистрами и памятью. Общепринятым подхо­дом является выделение для нее нескольких первых сотен или тысяч слов памя­ти. Конструктор должен решить, какая часть информации будет находиться в более дорогих, но более быстрых регистрах, а какая часть — в более дешевой, но медленной основной памяти.