Регистры

Основу большинства ЦП образуют рабочие регистры. Регистры представляют собой сверхоперативное ЗУ небольшой емкости. Регистры состоят из триггеров и адресуются подобно ячейкам памяти. Число регистров, однако, очень невелико. Данные могут храниться в регистре до тех пор, пока шина или некоторый блок не будут готовы принять их или пока они не потребуются по программе. Использование в программе рабочих регистров выгодно, так как ЦП может получить содержащиеся в них данные, не обращаясь к памяти. Регистры, содержимое которых не изменяется под воздействием программы, позволяют сохранить данные для последующего использования.

С помощью внутренних шин регистры связаны друг с другом. С другими блоками системы связь осуществляется под управлением программы.

Стоимость изготовления на кристалле большого числа регистров и внутренних соединений ограничивает их число в БИС.

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

На рис. 2.10 показан типовой набор регистров ЦП. Регистры могут иметь много различных назначений; некоторые ЭВМ даже позволяют программисту присваивать регистрам разнообразные частные функции. Большинство ЭВМ, однако, содержит несколько основных регистров: счетчик команд, регистр команд, регистр адреса памяти, аккумулятор, регистры общего назначения, индексные регистры, регистр условий, указатель стека.

Счетчик команд (СК) содержит адрес ячейки памяти, в которой находится очередная команда. Цикл выполнения команды начинается с того, что ЦП посылает содержимое счетчика команд в шину адреса; таким образом ЦП извлекает из памяти первое слово команды. При этом увеличивается на единицу содержимое счетчика команд и, таким образом, в следующем цикле команды из памяти будет извлечена следующая из последовательности команд. Если команда многобайтная, то ЦП увеличивает на 1 содержимое счетчика команд (инкрементирует) столько раз, сколько это нужно. Таким образом, ЦП извлекает из памяти и реализует команды последовательно, если только команд3 ПЕРЕДАЧА УПРАВЛЕНИЯ ИЛИ УСЛОВНЫЙ ПЕРЕХОД не изме" нит содержимое счетчика команд.



Регистр команд сохраняет код команды до тех пор, пока она не будет дешифрирована.



Регистр адреса памяти содержит адрес данных в памяти. Адреса могут представлять собой часть команд или данные. На рис. 2.11 показаны возможности использования регистра адреса памяти. Команда ЗАГРУЗИТЬ В АККУМУЛЯТОР ЧИСЛО ИЗ ПАМЯТИ загружает аккумулятор содержимым ячейки памяти с адресом 300. Содержимое аккумулятора инкрементируется (ПРИБАВИТЬ 1 К СОДЕРЖИМОМУ АККУМУЛЯТОРА) и запоминается в ячейке 300 (ЗАПОМНИТЬ СОДЕРЖИМОЕ АККУМУЛЯТОРА В ПАМЯТИ). Таким образом, ЭВМ может использовать содержимое ячейки памяти 300 несколько раз без указания ее адреса в каждой команде и использовать следующую ячейку памяти (301) путем добавления 1 к содержимому регистра адреса.

Многие ЭВМ имеют по нескольку регистров адреса. На рис. 2.12 представлена блок-схема программы, которая использует регистры адреса памяти для того, чтобы переслать десять слов данных из одной части памяти в другую. На рис. 2.12 команды ЗАГРУЗИТЬ ДАННЫ Е и и ЗАПОМНИТЬ ДАННЫЕ не требуют адресов памяти; 1 бит в команде мог бы определить, использует ЦП первый регистр адреса памяти или второй.

Аккумуляторы — это регистры временного хранения, которые используются в процессе вычисления. В большинстве ЭВМ, таких как калькуляторы, в аккумуляторе всегда содержится один из операндов арифметических операций. Электронно-вычислительная машина может также использовать аккумуляторы при выполнении логических операций. Таким образом, аккумуляторы в ЭВМ — это в основном наибо-лее часто используемые регистры. Многие из широко используемых ЭВМ имеют по одному аккумулятору; программы для таких ЭВМ затрачивают много команд и времени на пересылку данных в аккумулятор и из него. Большинство более совершенных ЭВМ имеет по нескольку аккумуляторов; поэтому у программы нет необходимости многократно пересылать данные. Например, на рис. 2.13 показана последовательность команд, которая реализует выражение

АхВ + СхD

для ЭВМ, имеющей один аккумулятор, и для ЭВМ с двумя аккумуляторами. При наличии только одного аккумулятора программа должна запомнить первый промежуточный результат и затем вновь обратиться к нему; с двумя аккумуляторами программа может выполнять вычисления раздельно. Однако в машине с двумя аккумуляторами каждая команда должна содержать признак для определения того, какой из аккумуляторов должен использоваться ЦП.

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



Индексные регистры используются для адресации данных. Содержимое индексного регистра складывается с адресом ячейки памяти, который содержится в команде. Затем сумма образует действительный адрес данных или исполнительный адрес. Если содержимое индексного регистра изменяется, одна и та же команда может быть использована для обработки данных из ячеек памяти с различными адресами. Можно пересылать данные из одной области памяти в другую подобно тому, как если бы использовались индексные регистры. На рис. 2.14 иллюстируется этот способ. Команды ЗАГРУЗИТЬ и ЗАПОМНИТЬ должны содержать адреса ячеек памяти. Однако эта программа использует один индексный регистр вместо двух регистров адресов памяти. Некоторые ЭВМ, такие как DEC PDP-8 и PDP-11, имеют автоиндексацию, при помощи которой индексный регистр каждый раз, когда используется, автоматически увеличивает (авто-инкрементация) или уменьшает (автодекрементация) содержимое на L Эта особенность очень важна в программных циклах, таких как представленные на рис. 2.12 и 2.14. Каждая команда в ЭВМ с индексными регистрами должна содержать признаки, указывающие, используется ли в данной команде индексация. Если ЭВМ имеет более чем один индексный регистр, команда должна также содержать указание, какой из регистров в данной команде используется.

Регистр кода условий или регистр состояния содержит набор одноразрядных признаков, которые отображают состояние ЦП или нескольких внешних входов или выходов. Эти признаки — основа для работы ЭВМ, принимающей решение. Различные ЭВМ имеют различное число и назначение признаков. Большинство устаревших ЭВМ имеет один или два признака, так как это связано, прежде всего, со стоимостью аппаратных средств. Новейшие ЭВМ имеют по нескольку при-знаков. Наиболее распространенными признаками являются следующие:

ПЕРЕНОС—1, если при выполнении последней операции в старшем разряде регистра образуется признак переноса. Признак ПЕРЕНОС может сохранять свое значение или может принимать участие в переносе от одного слова к другому в арифметических операциях многократной точности.

НУЛЬ— 1, если результат последней операции равен нулю. Это часто используется в управлении циклом и в процессе поиска некоторого адресуемого числа.

ПЕРЕПОЛНЕНИЕ—1, если последняя операция выдает дополнительный код с переполнением. Бит ПЕРЕПОЛНЕНИЕ определяет, не превышает ли результат арифметической операции разрядности процессора.

ЗНАК—1, если старший значащий бит результата последней операции был 1 (иногда называется ОТРИЦАТЕЛЬНЫМ, так как 1 означает, что число в дополнительном коде отрицательное). Бит ЗНАК используется в арифметических операциях и при анализе знакового разряда в пределах многобайтного слова.

ЧЕТНОСТЬ—1, если в результате последней операции число единичных бит (число единиц) в слове было нечетным (нечетный паритет) или в противном случае четным (четный паритет).

ВСПОМОГАТЕЛЬНЫЙ ПЕРЕНОС—1, если в результате последней операции возник признак переноса в младшем полуслове, что используется для выполнения арифметических операций с двоично-кодированными десятичными числами.

РАЗРЕШЕНИЕ ПРЕРЫВАНИЯ—1, если прерывание разрешается, 0 — если прерывание не разрешено программой. Центральный процессор может автоматически запретить прерывания в периоды запуска сервисных программ или выхода из них. Программист может запретить прерывания в течение циклов операций со многими словами. Электронно-вычислительная машина может иметь несколько признаков разрешения прерывания, если имеется несколько источников или уровней прерывания.

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