Устройство управления системы 360 - Регистры общего назначения

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

Вообще, регистры служат в качестве временной памяти. Регистры имеют два характерных отличия от ячеек памяти. Во-первых, время доступа к информации, помещенной в регистр, значительно меньше, чем для ячеек памяти. Во-вторых, обычно регистры предназначены для выполнения гораздо более сложных операций, чем простое хранение информации, как это имеет место для ячеек памяти. Устройству управления «известно», что адрес следующей команды хранится именно в счетчике команд.

Регистр и счетчик команд — примеры регистров специального назначения. Изменить содержимое регистра команд или прибавить что-нибудь к содержимому счетчика команд мы не в состоянии. Другими словами, эти регистры тесно связаны с устройством управления и обычно не могут быть использованы для каких-либо иных целей, чем те, для которых они созданы.

Для увеличения скорости и гибкости обработки информации в Системе 360 предусмотрено 16 регистров общего назначения, имеющих номера от 0 до 15. Они используются в качестве связующих звеньев между устройством управления, арифметическим устройством и памятью. По крайней мере один из операндов большинства арифметических, логических команд и команд сравнения находится в регистре общего назначения. После выполнения очередной команды результат обычно оставляется в регистре 1). Регистры поэтому играют роль накопителей, или временной памяти для промежуточных результатов вычислений.

Предположим, что первоначально в регистре 3 находилось число 50. Мы хотим сложить число, находящееся в ячейке 1000, с указанным числом. Для этого могут быть использованы следующие команды:

или в машинных кодах

Результат операции будет находиться в регистре 3. Следовательно, если до выполнения операции ячейка 1000 содержала число 100, то содержимым регистра 3 после ее выполнения будет число 150. Содержимое ячейки 1000 останется неизменным.

Рассмотрим более детально процесс выполнения команды. Сначала команда попадает в регистр команд, а в счетчике команд устанавливается адрес следующей. Первый операнд выбирается из регистра 3 и посылается в арифметическое устройство. Второй — из ячейки памяти с адресом 1000 (это не меняет содержимого ячейки 1000) и также посылается в арифметическое устройство. Числа (50+100) складываются, и результат (150) заносится в регистр 3, при этом предыдущее содержимое регистра теряется.

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

Пусть нам надо вычислить сумму десяти тысяч чисел, расположенных в последовательных ячейках памяти. Поскольку у каждого числа свой адрес, то, значит, необходимо выполнить 10 000 команд сложения, содержащих 10 000 различных адресов операндов. Прямым способом достижения этой цели является написание для каждого числа своей команды сложения с содержимым некоторого регистра. Но поскольку числа хранятся в последовательных ячейках памяти, мы можем поручить часть работы по вычислению адресов самой ЭВМ. Поместим адрес первого числа в регистр. В дальнейшем будем использовать содержимое этого регистра в качестве адреса каждого следующего слагаемого. Теперь мы можем просто пересчитывать содержимое адресного регистра каждый раз при вычислении очередной частичной суммы.

Процедура, описанная выше, является примером цикла, или последовательности команд, выполнение которой повторяется до тех пор, пока требуемые вычисления не будут завершены. Как узнать, когда вычисления уже закончены? Обычно мы используем регистр общего назначения в качестве счетчика циклов. Мы начинаем с того, что заносим в этот регистр 0, и затем при каждом новом прохождении цикла увеличиваем его содержимое. Когда значение счетчика цикла достигает необходимого количества повторений, мы выходим из цикла.

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

Если бы не было циклов, мы должны бы были написать 10 000 команд для вычисления суммы 10 000 чисел. Более того, каждый раз при изменении количества слагаемых программу приходилось бы менять. Почему бы в этом случае не использовать настольный вычислитель?

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

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

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

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



 
Статьи раздела