Файл: Трахтенброт, Б. А. Алгоритмы и вычислительные автоматы.pdf
ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 19.10.2024
Просмотров: 122
Скачиваний: 0
трическне сигналы, изображающие выходные данные. Вход ные сигналы поступают в арифметический блок из ячеек па мяти, где они хранились, а выходной сигнал отправляется из него в ту ячейку, в которой он будет храниться. Схема тически это изображено на рис. 10, б, где числа из ячеек 11 и 12 складываются, а результат отправляется в ячейку 15. Для того чтобы такая операция была осуществлена в ма шине в некотором такте, необходимо, чтобы к началу этого такта были произведены соединения ячеек 11 н 12 с ариф метическим блоком и арифметического блока с ячейкой 15;
также необходимо, чтобы |
арифмометр был включен на нуж |
ную операцию (в данном |
случае на сложение). Все это вхо |
дит уже в «компетенцию» |
блока управления. |
3. Б л о к у п р а в л е н и я предназначен для выпол нения функций, которые в схеме рис. 10, а выполняет сам
вычислитель. Именно, |
на каждом этапе |
работы |
машины |
у п р а в л я ю щ е е |
у с т р о й с т в о |
создает |
условия |
для реализации очередной операции процесса. При этом оно действует как автоматическая телефонная станция, со единяющая тех «абонентов» (узлы и ячейки машины), ко торые участвуют в данной отдельной операции. Выражаясь образно, блок управления заглядывает в программу и в со ответствии с нею отправляет распоряжения о срабатывании тех узлов машины, которые должны обеспечить очередную операцию.
5.3. Машинные команды. Для более точного описания возникающей здесь картины укажем, что каждая машина характеризуется вполне определенной системой команд (при казов), которые она может принимать к исполнению. При этом всякая программа, вкладываемая в машину, представ
ляет собой |
определенную комбинацию команд и некоторых |
|||
вспомогательных |
чисел (параметров), которые помещаются |
|||
в ячейки |
«памяти». |
Например, в вычислительной |
машине |
|
М-20 принята |
так |
называемая трехадресная |
система |
команд, каждая из которых является последовательностью
четырех |
чисел: сфуб, |
из которых |
первое указывает н о- |
|||
м е р предписываемой |
операции, |
последующие |
два — ад |
|||
р е с а |
двух |
ячеек, над содержимым |
которых |
совершает |
||
ся операция, |
а последнее — а д р е с |
ячейки, |
в которую |
|||
следует |
поместить результат (всего три адреса)*). |
*) В машине БЭСМ-6 и в машинах серии «Урал» принята одно адресная система; в машинах серии «Минск» — двухадресная.
50
Практически каждая команда записывается в одной ячейке в виде одного числа, цифры которого разбиваются на четыре группы, имеющие соответствующие назначения. Например, на рис. 10, б в ячейке 1 запоминающего устрой ства записано число 1 11 12 15, которое представляет собой следующий зашифрованный приказ:
«Сложить (операция № 1) числа из ячек 11, 12 и резуль тат отправить в ячейку 15».
(Здесь принято разделение на группы справа налево по два разряда. Для определенности мы будем и дальше при держиваться такого метода записи команд.)
Обычно система команд насчитывает несколько десятков команд (хотя наблюдается общая тенденция к увеличению
их числа |
и разнообразия |
до сотен, а в отдельных |
случаях |
|||||
до тысяч команд). Укажем самые употребительные. |
||||||||
1. А р и ф м е т и ч е с к и е |
к о м а н д ы : |
|
||||||
а) 1 Руб — с л о ж и т ь |
число из |
р с числом из у |
и сумму |
|||||
б) 2 Руб |
отправить в б; |
|
|
|
|
|
|
|
— в ы ч е с т ь |
из числа, хранящегося в Р, число |
|||||||
|
из у и разность отправить в б; |
|
||||||
в) 3 Руб — у м н о ж и т ь |
|
число из |
Р |
на число из у и про |
||||
|
изведение отправить в б; |
|
|
|
||||
г) 4 Руб — р а з д е л и т ь |
|
число из р на число из у и част |
||||||
|
ное отправить |
в б. |
|
|
|
|
||
П. К о м а н д ы |
п е р е д а ч и |
|
у п р а в л е н и я : |
|||||
д) 5 00 00 б — переходить |
|
к команде, хранящейся в б |
||||||
|
(безусловная |
передача |
управления); |
|
||||
е) 5 01 уб — переходить к |
команде, |
хранящейся |
в б, при |
|||||
|
условии, |
что |
в ячейке |
у |
хранится |
положи |
||
|
тельное число; |
|
|
|
|
|
||
ж) 5 02 у б — переходить |
к команде, хранящейся в б, при |
|||||||
|
условии, что в ячейке у хранится отрицатель |
|||||||
|
ное число. |
|
|
|
|
|
|
|
I I I . |
К о м а н д а |
о с т а н о в к и: 0 00 00 00. |
|
|||||
Кроме перечисленных команд имеются еще и команды |
||||||||
так называемых логических |
|
операций |
и другие, на |
которых |
||||
мы здесь |
останавливаться |
не будем. Перечисленных команд |
вполне достаточно |
для составления из них самых разнооб |
|
разных программ; |
некоторые примеры будут рассмотрены |
|
в следующем |
параграфе. |
|
Команды |
е — ж называются условными; они принима |
ются к исполнению лишь в том случае, если выполнено со-
51
ответствующее условие, в противном случае они пропуска ются управляющим устройством без выполнения.
Обычно команды выполняются машиной в том порядке в каком они записаны в ячейках памяти, причем отклонение от этого порядка может произойти только в результате ко манды о передаче управления (безусловной или условной, если выполнено соответствующее условие).
Работа машины распадается на такты, в течение каж дого из которых выполняется одна очередная команда. К на чалу каждого такта из одной ячейки памяти поступает в блок управления содержащееся в этой ячейке число-команда. Как только команда попадает туда, управление осуществля ет автоматически соответствующие соединения и тем самым обеспечивает выполнение очередной операции процесса. После этого в блок управления поступает следующая коман да, и машина срабатывает на следующую операцию и т. д. до результативной остановки машины.
Возможность технической реализации такого блока управления не представляет собой ничего неожиданного; ведь от этого устройства требуется не больше того, что уме ет делать любая автоматическая телефонная станция, в ко торой номер набирается путем посылки соответствующего электрического сигнала.
Таковы основные три устройства вычислительной маши ны. Правда, в ней имеется еще ряд важных органов, в част ности, для ввода данных в машину, для вывода из нее выработанных ею результатов. Однако эти устройства не имеют значения при рассмотрении принципов работы маши ны и выяснении ее логических и математических возможно стей. Поэтому мы можем и не привлекать их в дальнейшем к рассмотрению, предполагая, что подача информации в ма шину и снятие результативной информации производится непосредственно на запоминающем устройстве.
§ 6. ПРОГРАММА (МАШИННЫЙ АЛГОРИТМ)
В этом параграфе мы рассмотрим примеры программ, со ставленных для электронной вычислительной машины стрехадресной системой команд. Эти программы получаются из рассмотренных ранее алгоритмов путем их переработки с учетом того, что их исполнителем будет теперь уже не че ловек, а автоматическая машина с рассматриваемой систе мой команд. Разбор предлагаемых примеров призван уяс-
52
нить реальный смысл употребляемого обычно выражения
«машина руководствуется в своей работе введенной в нее про граммой». Именно, будет выяснено, каким образом регу лируется тот или иной порядок поступления команд в блок управления и как удается при помощи сравнительно не большого числа команд обеспечить зачастую очень длинную цепь операций, необходимых для решения того или дру гого варианта решаемой задачи.
В дальнейшем мы полагаем, что арифметические опера ции сложения, вычитания, умножения и деления указыва ются в командах номерами I , 2, 3, 4 соответственно (см.
п5.3).
6.1.Программа для линейных уравнений. П р и м е р 1. Запрограммируем решение системы уравнений
ах - f by = |
о, |
dx + еу = |
f. |
Примем для определенности, |
что коэффициенты а,Ь, |
с, d, е, f помещены подряд в ячейки памяти, начиная с номе ра 51:
Адрес |
Содержимое |
Адрео |
Содержимое |
51 |
а |
54 |
d |
52 |
Ь |
55 |
е |
53 |
с |
56 |
/ |
Далее для промежуточных и окончательных результатов вычислений отведем ячейки 31—50.
Как видно из формул
х = |
се—fb |
af — cd |
, |
— , |
У = - |
||
|
ае—bd |
ае—bd |
|
для получения результата нужно совершить последователь но 6 умножений, три вычитания и два деления. В соответ ствии с этим предлагаемая нами программа состоит из 12
команд, записанных |
в ячейках |
1—12: |
|
|
|
|
|||
Адрес |
Содержимое |
Адрео |
Содержимое |
||||||
|
(команды) |
|
(команды) |
||||||
1 |
3 |
53 |
55 |
31 |
7 |
2 |
31 |
32 |
37 |
2 |
3 |
56 |
52 |
32 |
8 |
2 |
33 |
34 |
38 |
3 |
3 |
51 |
55 |
33 |
9 |
2 |
35 |
36 |
39 |
4 |
3 |
53 |
54 |
34 |
10 |
4 |
37 |
39 |
40 |
5 |
3 |
51 |
55 |
35 |
11 |
4 |
38 |
39 |
41 |
6 |
3 |
52 |
54 |
36 |
12 |
0 |
00 |
00 |
00 |
53
Команды поступают в блок управления и выполняются в порядке возрастания их адресов. После выполнения по следней команды в ячейках 31—41 приняты на хранение следующие числа:
Адрео |
Содержимое |
Адрео |
Содержимое |
|
31 |
се |
37 |
се —/6 |
|
32 |
fb |
38 |
af — cd |
|
33 |
at |
39 |
ае — bd |
|
|
се—lb |
|||
34 |
cd |
40 |
||
ае — bd |
||||
35 |
ае |
|
||
|
af—cd |
|||
36 |
bd |
41 |
||
ае — bd |
||||
|
|
|
представляющие собой промежуточные результаты вычис лений и окончательный результат (помещенный в ячейках 40,41).
6.2. Повторение. |
П р и м е р |
2. |
Пусть требуется най |
|
ти решения п заданных систем уравнений: |
||||
atx+biy |
= ct |
. = |
1 ) 2 |
п |
dtx+ |
ely = ii |
|
|
|
Разрешающий алгоритм представляет собой «-кратное |
||||
повторение алгоритма решения |
одной системы такого вида, |
и соответствующую программу для машины можно было бы легко составить по указанному выше образцу так, чтобы 6/г коэффициентов располагались в б/z ячейках памяти, и чтобы программа насчитывала lln + 1 команд.
После того, как первый цикл из 11 команд выработает решение первой системы, второй цикл из И команд выра ботает решение второй системы и так дальше п раз, (11/г -f- + 1)-й командой является команда остановки.
Однако такое значительное увеличение объема програм мы нецелесообразно и его можно избежать. Для этого за метим, что каждый последующий цикл из 11 команд может быть получен из предыдущего путем изменения адресов, участвующих в командах. Именно, если 6/z коэффициентов расположены по одному в ячейках, следующих подряд одна за другой, например, начиная с № 51, то в первых шести командах адреса множителей должны быть увеличены каж дый на 6, для того чтобы получить соответствующие коман ды второго цикла.
Далее, для того чтобы решение очередной системы ока залось записанным в двух ячейках, следующих за ячей-
54