книги из ГПНТБ / Нечаев А.Н. Устройство и работа электронных цифровых машин
.pdfК |
ПС |
Адрес |
|
1-го числа |
|||
|
|
||
К+1 |
Сл |
Адрес |
|
2-го числа |
|||
|
|
||
К+2 |
ПЯ |
Адрес |
|
|
|
результата |
Нетрудно заметить, что не всегда выполнение ариф метической операции требует трех одноадресных команд. Например, для последовательного суммирования групп из п чисел с посылкой конечного результата в запоми нающее устройство потребуется п •+■1 одноадресных команд, так как частные суммы не отсылаются каждый раз в ЗУ, а остаются в сумматоре и к ним с каждой но вой командой посылки прибавляется новое число. Та ким образом, одноадресные команды оказываются вы годными для выполнения таких групповых операций, в результате которых образуется одно число.
Д в у х а д р е с н а я команда содержит три группы чисел, представляющих собою адреса двух исходных чи сел, участвующих в операции, и код операции.
Результат данной операции остается в накапливаю щем сумматоре, и для его отсылки в накопитель требу ется новая команда, состоящая только из одного адре са (второй адрес команды остается свободным) и услов ного кода операции отсылки.
Чаще двухадресная команда кроме двух адресов и кода операции имеет также указатель порядка исполь зования адресов. В зависимости от значения этого ука зателя каждый из адресов может быть использован как для считывания, так и для записи или для того и друго го одновременно. Например, по двухадресной команде может быть выполнена операция сложения ( 0 = Сл ) двух чисел, стоящих в ячейках «а» и «Ь», с записью ре зультата в ячейку «Ь» (или в ячейку «а»). При другом значении указателя может быть выполнена пересылка числа из ячейки «а» в ячейку «Ь» (или наоборот) без выполнения каких-либо действий в арифметическом устройстве.
52
Код |
Адрес |
Адрес |
Указатель |
|
операции |
1-го числа |
2-го числа |
||
|
||||
е |
а |
Ь |
|
В приведенных одно-, двух- и трехадресных систе мах команды программы выполняются последовательно, в порядке возрастания их номеров. Это до некоторой степени ограничивает свободу программиста и в случае необходимости изменения порядка, что встречается до вольно часто, требует применения специальных команд. Однако переходы с одного участка программы на дру гой могут быть осуществлены и иначе, а именно, путем использования ч е т ы р е х а д р е с н о й с и с т е м ы команд, содержащей пять групп чисел, из которых четыре совпадают с группами, имеющимися .в трехадресной команде, а пятая представляет собой адрес команды, ко торая должна быть выполнена вслед за данной.
Код |
Адрес |
Адрес |
Адрес |
Адрес |
|
следующей |
|||||
операции |
1-го числа |
2-го числа |
результата |
||
команды |
|||||
|
|
|
|
-Четырехадресная система позволяет осуществить так называемое свободное выполнение программы, при котором последовательность выполнения команд может быть какой угодно. Заметим, что четырехадресная си стема предоставляет больше возможностей для програм мирования задач, но оборудование машины при этом ис пользуется хуже, чем при одно-, двухили трехадресиой системе. Поэтому такие машины не получили рас пространения. •
При решении расчетных задач, содержащих большое количество последовательно выполняющихся арифмети ческих операций, лучше других используются одноад ресные машины. При этом, хотя программы содержат несколько большее число команд, чем трехадресные про граммы, составленное для решения тех же задач, ис пользование памяти для хранения команд лучше, так как сами команды короче.
53
Для решения задач, связанных с сортировкой и пе рераспределением чисел в памяти, более удобны двух адресные системы, позволяющие по одной команде (бо лее короткой, чем трехадресная) переслать число из од ной ячейки в другую. В одноадресной машине для это го требуется две команды.
В большинстве машин команды хранятся в том же запоминающем устройстве, что и числа. Это дает воз можность выполнять операции не только над числами, но и над командами. Для этого достаточно вместо адре сов чисел указывать адреса команд, служащих для по лучения новых команд. Результаты таких операций ста новятся новыми командами, которые в дальнейшем вы полняются. Поэтому программы могут сами себя пре образовывать в зависимости от получаемых результатов. Способность преобразовывать команды чрезвычайно сильно расширяет возможности электронных цифровых машин.
Для уяснения сущности программирования рассмот рим два примера (с использованием трехадресной и од ноадресной систем команд).
П р и м е р |
1. Для трехадресной машины. |
|
|
С о с т а в л е н и е п р о г р а м м ы д л я в ы п о л н е |
|||
ния на м а ш и н е г р у п п о в о й |
о п е р а ц и и . |
Такая |
|
программа может быть частью |
более сложной |
про |
|
граммы. |
|
|
|
Допустим, |
что требуется умножить п чисел |
ах, ..., |
ап, размещенных в последовательных ячейках запоми нающего устройства, на некоторое постоянное число Ь. Можно легко составить программу, содержащую я трех адресных команд умножения, и с помощью ее решить за дачу. Однако при программировании более сложных за дач такой путь приведет к тому, что программа будет содержать чрезмерно большое количество команд, для записи которых понадобится очень много ячеек ЗУ. Ис пользуем для сокращения, количества команд цикличе скую программу, позволяющую многократно выполнять' одну и ту же операцию (в данном случае умножение). Запишем эту команду, предположив, что она находится в ячейке запоминающего устройства:
54
м |
ь |
c i |
Последовательность |
чисел а1, ..., |
ап находится в |
ячейках начиная с номера 300, число b находится в ячей ке номер 400, а результаты clt ..., сп будут записывать ся в ячейки с номерами 1000, ..., 1000+ п — 1. Структура команды для каждой из п операций умножения одинако ва, меняются только первый и третий адреса. Если после каждого цикла умножения записывать в ячейку номер К новые адреса сц и С{, увеличенные на единицу, то для всех п умножений понадобится только одна коман да, записанная в одну ячейку.
Такое изменение адресов команды на единицу назы вается м о д и ф и к а ц и е й, или преобразованием коман ды, и выполняется при помощи команды специального сложения С]. В зависимости от необходимости в машине могут модифицироваться один, два или все три адреса.
Возможность изменения адресов обусловлена тем, что они представлены в машине в виде кодов чисел, над которыми так же, как и над обычными числами, можно производить арифметические операции.
Таким образом, после команды умножения, записан ной в ячейке номер К, должна быть записана команда специального сложения Cj. Присвоим'ей условный код 02, а команде умножения М — условный код 05.
№Обозначение Код
ячейки |
операции |
операции |
|
к |
м |
05 |
|
К+1 |
С. |
’ -02' |
" |
К +2 |
в |
03 |
, |
к+з |
Е |
20 |
|
Адреса
300 400
У слов
кное
'Ч И С Л О
|
! |
1200 |
to о |
|
КК +4
1000
К
to О О
000
К +4
55
Операцию Ci можно выполнить с помощью специаль ного блока арифметического устройства. Указание о том, какие адреса команды должны быть изменены на единицу, дается условным числом, помещаемым по вто рому адресу команды Сь Читается эта команда так: взять команду из ячейки К, увеличить в ней на единицу первый и третий адреса и измененную команду снова записать в ячейку К.
После выполнения операции Ci в ячейке К будет за писана команда:
К |
м |
05 |
301 |
400 |
1001 |
к выполнению которой следует перейти, чтобы получить второе произведение (а2) (Ь) = (с2). Последовательный порядок выполнения команд при этом нарушается, и для изменения этого порядка машине должно быть да но специальное указание. Кроме того, в программе долж но быть дано указание о том, когда перейти к естествен ному порядку выполнения команд. Эти два указания представляют собой участок программы, предназначен ной для контроля количества циклов и для определения (в зависимости от этого количества) направления даль нейших вычислений.
В нашем примере таких циклов должно быть п. Сущ ность контроля состоит в получении признака (резуль тата проверки логического условия), по которому можно
судить |
о том, что все п циклов (содержащие в нашем |
|||
случае |
одну операцию умножения) |
выполнены. |
Про |
|
верку логического условия |
(выработку признака) |
можно |
||
осуществить с помощью |
операции |
вычитания, которой |
_ присвоим код 03.
Для этого в какие-либо две ячейки запоминающего устройства, например 1200 и 1201, помещаем соответст венно числа п — 1 и 1 и записываем команду К +2 сле дующим образом:
56
К+2 |
В |
03 |
1200 |
1201 |
1200 |
Эта команда читается так: взять число из ячейки но мер 1200, вычесть из него число, находящееся в ячейке номер 1201, и результат снова записать в ячейку номер 1200. После каждого цикла число, записанное в ячейку номер 1200, будет уменьшаться на единицу и до п —1-го цикла включительно результат будет положительным
( п - |
1— / 1 + 1 = 0). После выполнения п-го цикла резуль |
тат, |
записанный в ячейку номер 1200, окажется отрица |
тельным (п— 1 —п — — 1). Этот признак используется для прекращения выполнения циклической программы. Осуществляется это с помощью команды условной пе редачи управления Е, которая позволяет в зависимости от знака результата выполнения предшествующей ко манды (в нашем случае команды вычитания В, запи санной в ячейке К+2) изменить направление вычисли тельного процесса.
Команда Е, которую обозначим условным кодом 20,
должна быть помещена в ячейку К+3. |
|
||||
к+з |
Е |
20 |
К |
К+4 |
0000 |
Если знак результата, полученный после выполнения команды К + 2, положителен, то следующей за коман дой К + 3 будет выполняться команда К; если же этот знак отрицателен, то это значит, что все ч циклов груп повых операций выполнены и после команды К +3 будет выполняться команда К+4, т. е. будет продолжен есте ственный процесс выполнения команд программы. Тре тий адрес команды условного перехода остается сво
бодным.
Таким образом, мы составили программу, позволяю щую при помощи четырех команд выполнить п умноже-
57
ннй. Само собой разумеется, что вместо умножения мы могли бы взять любую другую операцию.
Следует отметить, что применение полученной про граммы для выполнения одной операции над группой чисел нецелесообразно с точки зрения эффективности использования машины, так как на одну полезную команду (М) требуется затратить три вспомогательные (Сь В и Е). Полезное-машинное время в этом случае составляет всего 25%.
Использование такой программы может оказаться целесообразным для циклического повторения отдель ных больших участков программы, состоящих из боль шого количества команд.
Для уменьшения числа команд, требуемых для вы полнения циклов, подобных приведенному выше, приме няют автоматическое изменение адресов команд. Для этого в каждой команде предусматривают указатель из менения адресов. В соответствии со значением этого указателя при каждом выполнении команды один, два или все три адреса команды увеличиваются на единицу. Для подсчета числа циклов применяют специальные команды. Команда начала цикла (Нц) в специальный регистр устройства управления записывает число п — количество повторений цикла. Команда конца цикла (Кц) представляет собой команду условной передачи управления, при выполнении которой содержимое реги стра устройства управления, несущего число п, умень шается на единицу. Если в результате этого на регист ре образовалось число, отличное от нуля, то выполняет ся передача управления к команде, номер которой ука зан в первом адресе, в противном случае происходит пе редача управления по второму адресу. Присвоим опе рациям начала и конца цикла условные коды 22 и 23 со ответственно. Тогда программа умножения п чисел аг,
..., ап на число Ь, составленная с использованием опи санных команд, имеет вид, приведенный в таблице (см. стр. 59). При этом считаем, что если указатель содер жит число 0, то изменение адресов не производится. Если указатель равен 5, то при каждом повторении команды ее 1-й и 3-й адреса увеличиваются на Г.
Как видно из сравнения программ, приведенных ч таблицах, применение автоматического изменения команд сокращает объем программы и время ее выполне-
58
|
Программа умножения |
группы чисел |
|
|||
|
с автоматическим изменением команды |
|
||||
№ |
Обозначе |
Код |
Указатель |
|
Адреса |
|
ячейки |
ние |
операции |
|
|
||
|
операции |
|
|
|
|
|
к |
Нц |
22 |
0 |
— |
П |
— |
К+1 |
М |
05 |
5 |
300 |
400 |
. 1000 |
К+2 |
Кд |
23 |
0 |
к+ . |
К+З |
— |
|
1 |
к+з
ния. Применяя более сложные команды, удается еще сильнее сократить объем программы и время работы.
П р и м е р 2. Для одноадресной машины.
С о с т а в л е н и е ' п р о г р а м м ы д л я в ы ч и с л е н и я полинома степени п
у = а0+ агх + а2х 2+ а3х 3- f ...+ an- i^ n-1+ о-а*п•
Для получения компактной программы перепишем полином иначе:
_У=[[[(( ап) х -f a0r-i)x+aa-a)x+ . ..а3]х + а,}х -f а,]* + а0.
Такая запись позволяет использовать для решения за дачи циклическую программу.
Пусть в одноадресной ма1пине имеются команды на чала и конца цикла, аналогичные описанным выше для' трехадреснои машины, с той только разницей, что коман да конца цикла выполняет передачу управления ли бо к команде, указанной в адресе команды Кц, либо к команде, стоящей в .следующей ячейке.
Пусть коэффициенты полинома #п, а0 записаны в ячейках начиная с № 100, значение переменного х — в ячейке № 200, результат вычислений у должен быть по мещен в ячейку 1000. Тогда программа будет такой, как представлена в таблице на стр. 60; в этой программе,
если команда имеет значение указателя «1», происхо дит увеличение ее адреса на 1 при каждом исполнении. Сложение имеет код 01, посылка в сумматор — 02, умно жение— 05, конец цикла — 23, начало цикла — 22, по сылка из сумматора в .ячейку— 10.
Программа вычисления полинома
Номер
ячейки
К
К+1
К+2
К+3
К+ 4
К+5
К+ 6
Обозначе
ние Код •Указатель Адрес Пояснения операции операции
Нц |
22 |
0 |
п |
Засылка |
на |
ре |
|
|
|
|
гистр |
ап |
в |
ПС |
02 |
0 |
100 |
Посылка |
||
сумматор |
|
|||||
м |
05 |
|
|
|
||
0 |
200 |
Умножение содер |
||||
|
|
|
|
жания |
суммато |
|
Сл |
|
|
|
ра на х |
содер |
|
01 |
1 |
101 |
Сложение |
|||
|
|
|
|
жимого |
сумма |
|
|
|
|
|
тора последова |
||
|
|
|
|
тельно |
с |
|
|
23 |
|
|
|
а0 |
|
Ки |
0 |
К+2 |
Проверка, |
условия |
||
|
|
|
|
и переход либо |
||
|
|
|
|
к К+2, либо к |
||
ПЯ |
|
|
|
К+5 |
резуль |
|
10 |
0 |
1000 |
Перенос |
|||
|
|
|
|
тата |
|
|
После работы машины по команде К+1 и первого выполнения команд К + 2, К +3 в сумматоре образуется
вычисленное значение выражения |
(апх-\-ап—\) — часть |
формулы, по которой производятся |
вычисления. При |
втором повторении команд К+2, К +3 образуется значе ние выражения [(an^+an-i)Jc+an-2 )], наконец, после я-го повторения формула подсчитывается полностью и результат по команде с номером К + 5 записывается в ячейку 1000.
ЭЛЕМЕНТЫ ЭЛЕКТРОННЫХ ЦИФРОВЫХ МАШИН
Современная электронная цифровая машина пред ставляет собой сложный комплекс устройств, содержа щий порой миллионы отдельных элементов, от разме ров, экономичности и быстродействия которых зависят основные параметры машины.
Современная вычислительная техника строится почти исключительно на элементах, использующих в своей работе электрические и магнитные, явления. В зависимо сти от физических принципов, положенных в основу их конструкции, элементы ЭЦМ могут быть электромеха ническими (электромагнитные реле и шаговые искате ли),, электронно-ламповыми, полупроводниковыми, маг нито-полупроводниковыми (феррит-транзисторными я магнито-вентильными), магнитными, параметрическими
идр.
Кдеталям, применяемым в современных электрон ных цифровых машинах, предъявляются следующие тре бования:
высокое быстродействие, составляющее миллионные
доди секунды; большой срок -службы (десятки тысяч часов для
наименее надежных элементов); малые величины допусков основных параметров;
отсутствие значительных изменений параметров от температуры, режима и времени работы;
хорошие конструктивные показатели (высокая меха ническая прочность, малые размеры, небольшая потреб ляемая мощность и т. п.).
Машины, построенные'на электромагнитных реле, не могут обладать высоким' быстродействием, так'как
61