книги из ГПНТБ / Бакиров Р.О. Применение современных электронных вычислительных машин при расчете и проектировании конструкций инженерных сооружений учебное пособие
.pdfпамятью, которая может обмениваться информацией с внешними накопителями. Основными характеристиками запоминающих уст ройств является их быстродействие и емкость.
Арифметическое устройство предназначено для производства арифметических, логических и других операций, предусмотренных системой команд машины. В арифметическом устройстве при вы полнении команды вырабатываются специальные сигналы (о и <р), учитываемые устройством управления и используемые при состав лении программы.
Устройство управления производит автоматическое управление работой машины, в частности, в зависимости от управляющих сиг налов, выработанных АУ, производит передачу управления к раз личным участкам программы или останавливает работу с выдачей на пульт управления или на печать всех необходимых данных.
Кроме того, программно-управляемая машина включает в свой состав устройства ввода и вывода информации, пульт управления, обеспечивающие начало действия машины, вмешательство в ее ра боту в процессе решения задачи, ввод программы и числового ма териала, а также печать промежуточных и выходных результатов, предусмотренных программой.
Все эти перечисленные элементы объединены в единый комп лекс и представляют электронную цифровую вычислительную ма шину.
Так же как при ручном счете, для решения задачи на машине необходимо иметь программу вычислений и числовой материал, на зываемый исходными данными. В результате машинного счета, как прежде, получаются интересующие исследователя данные, назы ваемые выходными.
На рис. 3 цифрами обозначена общая последовательность ра боты машины по решению задачи: сначала программа и числовой материал устанавливаются (1) на вводное устройство машины; далее оператор вводит в память машины весь этот материал
(2)-±-(3); затем машина команду за командой выполняет всю про грамму; при выполнении команд машина обращается к АУ (4) для выполнения предусмотренных командой действий, а далее с учетом выработанных сигналов (5) после записи результата в память или ее печати, приступает к выполнению соответствующей следую щей команды; в процессе выполнения команд машина может об ращаться к внешним накопителям (6)-v-(S) Для записи результата или считывания необходимой информации; после выполнения всей программы и решения задачи в полном объеме машина печа тает результат (5) и автоматически останавливается.
Описанная выше последовательность работы машины при реше нии задачи является безусловно общей и лишь принципиальной схемой. Но усвоение ее читателем весьма желательно, ибо в проти воположном случае, не уяснив в принципе общей картины процес са, можно запутаться в частных вопросах, связанных с применени ем машин.
10
ПОНЯТИЕ О СИСТЕМАХ СЧИСЛЕНИЯ
До появления ЭЦВМ немногие специалисты сталкивались с необходимостью изучать различные системы счисления, ибо для обозначения чисел и производства над ними арифметических дей ствий использовалась привычная всем десятичная позиционная си стема счисления.
Система называется десятичной потому, что любое число представляется в ней десятью цифрами 0, 1,2, 3, 4, 5, 6, 7, 8, 9. Чис ло десять изображается в виде 10 и составляет основание системы.
Кроме того, десятичная система является позиционной, ибо зна чимость цифры зависит не только от величины, но и места (пози ции) в ряду цифр, обозначающих какую-либо величину. Действи тельно, если мы напишем число 1031, то легко убедимся, что его можно представить и в следующем виде:
1031 = Ы 0 3 + 0-102 + 3-101+ Ы 0 °.
Ясно, что крайняя справа единица обозначает число единиц, а крайняя слева — число тысяч.
Позиционная система счисления удобна еще и тем, что для про изводства арифметических действий над числами необходимо знать лишь таблицу сложения и умножения для десяти цифр, составляю щих ее основание.
Существует не только десятичная, но и любая р-ичная позици онная система счисления. При этом можно перевести любое число из одной системы счисления в другую. Мы не будем останавливать ся на этих вопросах со всей подробностью. Укажем лишь, что при решении задач с применением ЭЦВМ в большинстве случаев ис пользуются десятичная, восьмеричная и двоичная позиционные си стемы счисления: исходные данные обычно подготавливаются в де сятичной системе; программа записывается в восьмеричной систе ме; все вычисления машина осуществляет в двоичной системе счис ления. Поэтому именно перечисленные выше три системы счисле ния представляют для нас наибольший интерес и рассматриваются ниже с необходимой степенью подробности.
Запись исходных данных в десятичной системе объясняется тем, ч>о эта система наиболее близка нам, к ней уже привыкли все вы числители, поэтому заставлять людей, использующих машину, пе реводить все исходные данные из десятичной в двоичную систему, на которой работает машина, было бы нецелесообразным. Значи тельно проще ввести в машину десятичные исходные данные, а по сле этого при помощи специальной подпрограммы перевести их в систему, на которой работает машина, что обычно и реализовано на подавляющем большинстве машин.
Почему же нецелесообразно машине работать в наиболее при вычной нам десятичной системе счисления? Дело в том, что в ма шинах дискретного действия каждая цифра изображается устойчи выми состояниями физического элемента. Этих устойчивых состоя-
11
ний должно быть столько, сколько цифр имеет принятая система счисления. Технически наиболее просто осуществить элемент, имеющий два устойчивых состояния (наличие или отсутствие им пульса, положительный или отрицательный импульс и т. д.). Сле довательно, наиболее просто создать машину, имеющую алфавит лишь из двух символов, например, 0 — положительный, 1 — отри цательный импульс. Именно этим обстоятельством объясняется то, что большинство машин работает в двоичной системе счисления.
Итак, основание двоичной системы есть число два, так как в ней всего две цифры 0 и 1.
Первые числа натурального ряда в двоичной системе имеют вид: 0; 1; 10; 11; 100; 101; 110; 111; 1000; 1001.
Или 0 — нуль; 1 — один;
10— два;
11— 1-2Ч-1—три;
100— 1 • 22+ 0 • 21-)—0 — четыре;
101— 1 • 22-f-0 - 21-j-l • 2° — пять и т. д.
Выпишем таблицы сложения и умножения для двоичной си стемы (табл. 1 и 2):
|
|
Т а б л и ц а 1 |
|
|
Т а б л и ц а 2 |
Таблица |
сложения |
Таблица |
умножения |
||
+ |
1 |
0 |
X |
1к |
0 |
1 |
10 |
1 |
1 |
1 |
0 |
0 |
1 |
0 |
0 |
0 |
0 |
В каждой из этих таблиц в первом столбце и первой строке вы писаны слагаемые или сомножители, а на их пересечении стоит со ответственно сумма или произведение. Но запись чисел в двоичной системе очень длинна. Например, десятичное число 215 оо> в дво ичной системе имеет вид 11010111. Для того чтобы убедиться, за
пишем это |
число в развернутом |
виде 11010111 == 1 * 10111 -f- |
+ М 0 ио + |
0-10Ш + М 0 100 + 0-Юи + |
М 0 10+ М 0 1 + М 0 0 |
или, приведя все к десятичной системе |
|
|
1 ^ ^ i -26+ o - 26+ i •24+ о - 23+ 1-22+ i -24-1
убедимся в справедливости приведенной выше записи.
Вследствие этого при программировании используется запись команд в восьмеричной системе счисления. Восьмерка представля ет собой 23, т. е. три двоичных разряда составляют один восьме ричный разряд. Это обстоятельство позволяет производить перевод
12
из двоичной системы в восьмеричную и обратно весьма простым способом.
Например, для перевода числа из восьмеричной системы в дво ичную существует следующее правило: каждую восьмеричную цифру необходимо заменить равным ему трехразрядным двоичным числом.
Пусть дано восьмеричное число 70, 271 (в). Тогда согласно ука занному правилу его двоичное изображение имеет вид:
70, 271(8)= 111000, 0Ю111001(2).
Так же легко осуществить и обратный перевод. Для того что бы двоичное число перевести в восьмеричное, необходимо начиная от запятой, влево и вправо от нее, разбить заданное число на трой ки цифр (триады) и далее каждое полученное трехзначное двоич ное число заменить его восьмеричным изображением.
При этом, если правая и левая части цифр не будут полными триадами, то их соответственно справа и слева дополняют нулями.
Пусть дано двоичное число 11, 001111. Схема его перевода в восьмеричную систему счисления, согласно приведенному прави лу, имеет вид:
011, 001 11^4 = 3,17(8).
Разработаны практические правила перевода чисел и во все другие системы счисления, но изучение их выходит за рамки посо бия и поэтому здесь не рассматривается.
СТРУКТУРА КОМАНД МАШИНЫ
При рассмотрении программы 1 ручного счета было установле но, что в любой команде содержатся две основные информации: какое действие нужно произвести и над какими величинами эти действия производятся. Команда для машины содержит ту же ин формацию. Структура команд машины определяется ее адресно стью. В зависимости от количества адресов в команде различают одноадресные, двухадресные и трехадресные машины.
Например, команда трехадресной машины имеет вид:
|
6; а, Ь, с, |
где |
В — код операции; |
а, |
Ь, с — первый, второй и третий адреса. |
Обычно первый и второй адреса — это номера ячеек, где рас положены величины, над которыми необходимо произвести дейст вие 0, а третий — номер ячейки, куда нужно поместить результат.
Так, если код операции сложения обозначить через 01, а вось меричные изображения первого, второго и третьего адресов соот ветственно ПО, 115, 216, то команда трехадресной машины могла бы иметь вид: 0 1 ПО 115 216. В результате выполнения этой коман ды будет выполнено следующее действие: к содержимому ячей-
13-
ки ПО прибавится содержимое ячейки 115, и результат запишет ся в ячейку 216.
Для полноты картины рассмотрим структуру команды одно адресной машины. Предварительно заметим, что команда одно адресной машины, как показывает само название, имеет лишь один адрес 0; а. Вследствие этого все действия производятся через про межуточный элемент, так называемый сумматор. Таким образом, чтобы сложить два числа а и Ь, находящиеся в ячейках ПО и 115, а результат отослать в ячейку 216 придется написать не одну, а не сколько команд.
Обозначим через 02, 01 и 16 соответственно коды операции вы зова числа в сумматор, сложения и отсылки. Тогда для выполнения поставленной задачи нам придется написать следующие три команды:
02ПО
01115
16216
По первой команде число а, находящееся в ячейке ПО, будет вызвано в сумматор, по второй получим сумму а -+- Ь, по треть ей — результат сложения будет отослан в ячейку 216 для хране ния.
Таким образом, мы получили программу, правда, пока весьма элементарную, для решения совсем простой задачи.
Из приведенного примера видно, что программы машин строят ся на адресном принципе, т. е. в каждой команде указываются не сами числа, над которыми нужно произвести определенные опера ции, а адреса ячеек, в которых хранятся эти числа. Указанный принцип обеспечивает, в определенном смысле, универсальность программ, так как при замене содержимого ячеек исходных данных предусмотренные в программе действия будут произведены над другими числами.
ПЕРЕДАЧА УПРАВЛЕНИЯ
Ясно, что окончательное решение задачи на машине достигается после выполнения реализующей ее программы. Естественно, воз никает вопрос, каким образом машина переходит от выполнения предыдущей команды к последующей?
Все машины, в зависимости от порядка выполнения команд, де лятся на машины с принудительным и последовательным принци пом выполнения команд.
Команды машин принудительного действия обязательно содер жат информацию о передаче управления. В машинах же последо вательного действия, к которым принадлежит подавляющее боль шинство отечественных машин, после выполнения предыдущей команды обычно управление получает следующая за ней команда. Исключение составляют команды, имеющие информацию нестан дартной передачи управления. Информация эта может быть не-
14
скольких типов: безусловная передача управления, условная |
пере |
|
дача управления и останов. |
б е з у с л о в н о й |
пере |
Если команда содержит информацию о |
||
даче управления, то машина приступает к |
выполнению команды, |
|
указанной в адресной части, независимо от управляющего сигнала, выработанного в результате предыдущего действия.
Команды с у с л о в н о й передачей управления работают так: если в результате выполнения предыдущей команды выработан сигнал со—0 (или со=1), то управление получает следующая за рассматриваемой команда, а в противоположном случае — управ ление передается команде, указанной в адресной части рассматри ваемой.
Если в кодовой части команды стоит операция «сто п », то ника кой передачи управления не производится и машина останавлива ется.
Выше указывалось, что в процессе выполнения команд машина вырабатывает специальные сигналы со и <р, которые учитываются при программировании задачи.
Например, при получении результата, превышающего опреде ленную величину 1У, в машине вырабатывается сигнал q>—1 (заго рается специальная лампочка) и машина останавливается. Если же результат достигает значения 10 ~ N, то эта величина воспринима ется машиной как нуль (говорят вырабатывается машинный нуль). В частности, для ЭЦВМ «Урал-2» jV = 10±i9-
Необходимо также заметить, что при выполнении арифметиче ских и некоторых других операций вырабатывается управляющий сигнал о). В-большинстве машин, если результат выполнения ко манды величина отрицательная, то вырабатывается ш =1, а в про тивоположном случае —со=0.
ФОРМА ПРЕДСТАВЛЕНИЯ ЧИСЕЛ
По форме представления различают числа с фиксированной и плавающей запятой.
Запись числа с ф и к с и р о в а н н о й запятой совпадает с обыч ной, естественной формой ее записи. Например, числа — 145, 328; 1359, 125438 или 0,1389 и 0,0242 являются числами с фиксирован ной запятой. Следовательно, число с фиксированной запятой — это последовательность цифр, изображающих число в определенной системе счисления, разделенное запятой на целую и дробную ча сти. Не останавливаясь на этом вопросе более подробно, укажем лишь, что машины, работающие в режиме с фиксированной запя той, обычно оперируют с числами, по модулю меньшими единицы, поэтому программирование для таких машин связано с достаточно сложным вопросом масштабирования. Это вызывает значительные трудности при программировании и подготовке исходных данных.
Большинство машин работает с числами, представленными в форме с п л а в а ю щ е й запятой, поэтому на данном вопросе оста новимся несколько подробнее.
15
Число, записанное в форме с плавающей запятой, имеет вид:
х = т х- \0Рх, |
(2) |
где т х — мантисса числа х; рх — целый порядок числа; 10 — основание системы счисления.
В этой форме записи число можно представить различным об разом. Например, число 135,685 (ю> можно записать так:
135,685=135685 •10 -3 = 0,00135685 • 105=0,135685 • 103.
Или то же самое число в восьмеричной системе, равное 207,7, можно записать следующим образом:
207,7(8) = 207700-10-3 = 0,02077-104= 0 ,2077-103.
Из приведенных примеров видно, что в числах с плавающей за пятой порядок числа показывает, на сколько разрядов нужно пере нести запятую в мантиссе влево (при отрицательном порядке) или вправо (при положительном порядке), чтобы получить истинное число, написанное в обычном привычном нам изображении. Запя тая меняет свое положение, как бы плавает по мантиссе, откуда и
происходит название формы представления числа. |
|
|
Число с плавающей запятой (2) |
называется нормализованным, |
|
если выполнено условие |
|
|
\ > т х > |
— . |
(3) |
|
10 |
|
Напомним, что 10 — есть основание системы счисления, т. е. |
||
10(2) == 2(Ш); 10(8) = 8(Ю) ■ = 1000(2). |
где десятичные цйфры в круг |
|
лых скобках указывают принадлежность к определенной системе счисления.
Из неравенства (3) вытекает, что первый цифровой разряд ман тиссы нормализованного числа всегда значащая цифра, строго большая нуля. Убедимся в этом на следующем примере.
Пример. Десятичное число 928,72541 записать в нормализован ном виде.
Р е ш е н и е . *=928,72541=0,92872541 - 103.
Действительно,
— < т х = 0,92872541 < 1. 10
Исходные данные в ячейках машины, работающей в режиме с плавающей запятой, обычно записываются в нормализованном ви де. Также печатаются и выходные результаты.
Например, если такая машина выдала т х =12439875, /Д = + 0 4 ,
то это число запишется в виде х = т х -ЮРх =0,12439875• 104= = 1243,9875.
Таким образом, знание форм представления чисел помогает рас шифровывать напечатанные машиной выходные результаты.
16
ЗАПИСЬ ЧИСЕЛ И КОМАНД В ЯЧЕЙКАХ ПАМЯТИ
Память машины состоит из ячеек. Диапазон чисел или команд, реализуемых на машине, зависит от количества двоичных разрядов в ячейке. Таким образом, увеличивая число элементов, из которых образована ячейка памяти, можно увеличивать диапазон представ ляемых в машине чисел.
Рассмотрим запись двоичного нормализованного числа в соро каразрядной ячейке памяти, изображенной на рис. 4,а.
а |
|
|
|
|
0 12 |
Ю |
20 |
30 33 |
39 |
0 1 2 |
|
3233 |
39 |
|
|
||
|
|
101 001 О01 |
|
Знак |
Мантисса |
Порядок |
|
мантиссы |
|
Знак |
|
|
|
порядка |
|
|
Р и с. |
4 |
|
Можно представить себе следующее распределение разрядов: 0- й разряд — для знака мантиссы ± ; 1— 32-й разряд — значение мантиссы т х\ 33- й разряд — знак порядка ± ; 34— 39-й разряд — значение порядка р х.
Пример. Требуется записать двоичное число — 0,00000000011 в полную сорокаразрядную ячейку, изображенную на рис. 4 в форме с плавающей запятой.
Р е ше н и е . Можно записать
- 0,00000000011 = — 0,11 • ю - 1001,
где м х = — 0,11;
Рх = - 1001.
Следовательно, в полной сорокаразрядной ячейке заданное чис ло будет записано, как показано на рис. 4,6.
Команда одноадресной машины записывается в неполную (двадцатиразрядную) ячейку. Структура команд была рассмотре на выше. Например, команда «вызвать двоичное число из ячейки 215 в сумматор» имеет вид:
02 0215.
2 Зак. 1018 |
п |
ГО С . ЛУЬЛИ-СН.-
НА у ч Н О -Т Е Х Н и Ч Е С Н ^ .-.
с. RnУОТ С.и А ССОР _
Вспомним, что команды записываются в восьмеричной системе, поэтому для записи команды в ячейку памяти в рассматриваемом случае необходимо 18 двоичных разрядов, по 3 двоичных разряда на каждый восьмеричный разряд.
Но команды реальных машин, для увеличения их возможностей и облегчения программирования, имеют еще некоторые признаки. Например, в машинах типа «Урал» нулевой разряд отводится для признака изменяемости команды, а 19-й — для признака полноты (4 или 0). В частности, изменяемая команда с признаком полноты может иметь вид:
—02 0215 4.
Знак «—» изображается в нулевом разряде единицей «1», а признак полноты «4» — единицей в девятнадцатом разряде (со держание первого двоичного разряда от двоичного числа 100). На писанная выше команда в двадцатиразрядной ячейке получит изо бражение, представленное на рис. 5.
0 1 2 |
18 |
19 |
/Ы /М 'OOi 001 Ol / Ш / |
|
|
/^ т ~ 'wy |
■признак полноты |
|
Знак - |
W |
|
признак изменяемости |
|
|
команды
Ри с. 5
Всорокаразрядной ячейке, например, можно поместить следую щие две команды:
02 0115 4
41ОНО 4.
Вкачестве упражнения изображение этих команд в сорокараз рядной ячейке предлагается произвести читателю самостоятельно.
Наконец, заметим, что при записи числа или команды в ячейку
еепрежнее содержание стирается, при считывании — сохраняется.
ОСНОВНЫЕ ЭТАПЫ РЕШЕНИЯ ЗАДАЧ НА МАШИНЕ
Решение любой задачи на машине можно разделить на два ос новных этапа — описание и программирование задачи в широком
смысле слова.
О п и с а н и е з а д а ч и , как правило, осуществляется специа листом определенной области, к которой относится задача, и вклю чает следующие основные элементы: постановка, математическая формулировка и последовательность вычислений. Кроме этого, при описании задачи указываются ее особенности, а также необходи мые исходные и выходные результаты и требования к программе. В постановке коротко формулируется назначение задачи, основные предпосылки, положенные в ее основу, схемы расчета конструк-
18
щии или сооружения, а также другие графические материалы, пояс няющие ее физическое содержание.
Математическая формулировка задачи включает все расчетные формулы и логические условия, которые необходимо выполнить для решения задачи в полном объеме. При описании математиче ской формулировки указываются все особенности задачи, могущие повлиять на успешное ее решение. Например, обращается внимание на места, где может быть деление на нуль, отрицательный аргу мент при извлечении квадратного корня и вычислении логарифми ческой функции, исследуется возможность появления особенных матриц при решении систем линейных алгебраических уравнений,
•особых точек при дифференцировании функций или решении си стем дифференциальных уравнений.
При описании последовательности решения задачи указывается порядок использования всех данных математической формулиров ки, которая совершенно определенным образом приводит к реше нию всей задачи, т. е. описывается путь, приводящий от исходных данных задачи, путем использования формул и логических условий, к выходным результатам.
Весьма желательно, в соответствии с описанием задачи, прове дение предварительного ручного просчета одного варианта задачи. Это необходимо не только потому, что результаты ручного счета в дальнейшем помогут проверке справедливости машинного счета, но и потому, что это послужит наиболее эффективной проверкой пра вильности математической формулировки и составленной последо вательности вычислений.
От корректности описания задачи зависит продолжительность ее программирования в широком смысле, да и вообще успех всей работы по машинному ее решению. Опыт показывает, что при не достаточно продуманном описании задачи ее программирование длится в течение многих месяцев и, таким образом, компромети руется вообще использование машинных методов расчета. Наобо рот, при квалифицированном описании даже достаточно сложных инженерно-технических задач (например, задач по оптимальному проектированию) весь процесс программирования может быть вы полнен за несколько дней и получен значительный экономический эффект.
Второй этап решения задачи на машине — п р о г р а м м и р о в а н и е в широком смысле, как правило, выполняется работником вычислительного центра (ВЦ) и включает в общем случае следую щие элементы: выбор численного метода, алгоритмизацию, собст венно программирование (в дальнейшем называемое просто про граммированием), отладку и решение задачи на машине.
Конечно, сказанное не исключает того, что решение задачи на машине в полном объеме, т. е. описание задачи и ее программиро вание может быть выполнено одним специалистом. Это весьма же лательно, но в настоящее время в массовом масштабе .трудно осу ществимо.
2 * |
19 |
