
Регистры управления и состояния
В управлении работой процессора принимает участие несколько регистров. В большинстве моделей процессоров эти регистры недоступны программе, но могут неявно опрашиваться при выполнении некоторых привилегированных машинных команд в супервизорном режиме (такие команды используются в программах операционной системы).
Нужно отметить, что разные модели процессоров имеют отличную друг от друга организацию регистров и, следовательно, отличную терминологию. Ниже мы перечислим основные типы регистров, встречающихся в разных моделях, и кратко опишем их назначение.
В процессе обработки машинной команды существенную роль играют четыре регистра управления.
• Счетчик команд (PC — program counter) содержит адрес извлекаемой машинной команды.
• Регистр текущей команды (IR — instruction register) содержит последнюю извлеченную машинную команду.
• Регистр адреса в памяти (MAR — memory address register) содержит адрес ячейки памяти.
• Регистр данных памяти (MBR — memory buffer register) содержит слово данных, которое должно быть записано в память или слово, только что извлеченное из памяти.
Как правило, счетчик команд, PC, обновляется процессором сразу после того, как извлекается очередная машинная команда, и, таким образом, практически в течение всего цикла обработки команды в нем содержится адрес команды, которая должна выполняться в следующем цикле. Содержимое PC также изменяется командами переходов и пропуска. Извлеченная из памяти машинная команда помещается в регистр IR, а затем производится анализ отдельных ее полей — кода операции и полей операндов. Данные извлекаются из памяти с помощью регистров MAR и MBR. В компьютерах с системной магистралью регистр MAR соединен напрямую с линиями адреса, а регистр MBR — с линиями данных. В свою очередь, программно доступные регистры обмениваются данными с MBR.
Четыре перечисленных регистра используются при перемещении данных между процессором и памятью. Но внутри процессора данные должны передаваться в АЛУ для обработки. АЛУ имеет доступ как к регистру MBR, так и к программно доступным регистрам. Но возможен и такой вариант структуры процессора, в котором существуют дополнительные буферные регистры на стыке АЛУ с другими компонентами. Эти буферные регистры играют роль входных и выходных для АЛУ и обмениваются данными с MBR и с программно доступными регистрами.
Во всех моделях процессоров существуют один или несколько регистров, хранящих слово состояния программы (PSW —program status word). В состав PSW входят биты кодов условий и некоторая другая информация о текущем состоянии программы (фактически, процессора). В большинстве моделей в PSW присутствуют если не все, то уж обязательно некоторые из перечисленных ниже флагов или полей.
• S (sign — знак). Содержит знаковый разряд результата последней арифметической операции.
• Z (zero — нуль). Устанавливает в 1, если результат последней операции равен нулю.
• С (carry — перенос). Устанавливает в 1, если в результате последней арифметической операции возник перенос (при сложении) или заем (при вычитании) из старшего значащего разряда. Используется при выполнении арифметических операций над многословными операндами.
• Е (equal — равенство). Устанавливает в 1, если при логическом сравнении обнаружено равенство операндов.
• О (overflow — переполнение). Индикатор переполнения при выполнении последней арифметической операции.
• I (interrupt enable/disable — разрешение/блокировка прерывания). Используется для разрешения или блокировки прерывания.
• SV (supervisor — режим супервизора). Индикатор привилегированного режима выполнения программы (режима супервизора). В режиме супервизора разрешается выполнение некоторых привилегированных машинных команд и доступ к защищенным областям памяти.
В конкретных моделях процессоров можно встретить и другие регистры, хранящие информацию о текущем состоянии процессора и управляющие режимом его функционирования. Помимо PSW, это может быть регистр указателя блока памяти, содержащего дополнительную информацию о состоянии (т.е. блока управления процессом). В состав процессоров, работающих с векторными прерываниями, включается регистр вектора прерывания. Если для выполнения некоторых функций используется стек, в составе процессора должен быть регистр указателя системного стека. Регистр указателя таблицы страниц необходим в системах, работающих с виртуальной памятью. И наконец, определенные регистры нужны для управления операциями ввода-вывода.
При проектировании этой части процессора нужно учитывать множество факторов. Ключевым моментом является необходимость поддержки операционной системы. Определенная управляющая информация представляет особый интерес для операционной системы. Если разработчик хорошо представляет себе принципы работы операционной системы, которая будет использоваться с проектируемым процессором, то он соответствующим образом выберет организационную структуру регистров. Другой, не менее важный вопрос — распределение управляющей информации между памятью и регистрами. Общепринятым является использование первых нескольких сотен или тысяч слов в памяти для целей управления. Проектировщик должен решить, какая часть управляющей информации будет храниться в регистрах, а какая — в памяти. Как всегда, приходится искать компромисс между затратами (стоимостью компонентов) и быстродействием.