Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

книги из ГПНТБ / Бакиров Р.О. Применение современных электронных вычислительных машин при расчете и проектировании конструкций инженерных сооружений учебное пособие

.pdf
Скачиваний:
22
Добавлен:
29.10.2023
Размер:
4.93 Mб
Скачать

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

Арифметическое устройство предназначено для производства арифметических, логических и других операций, предусмотренных системой команд машины. В арифметическом устройстве при вы­ полнении команды вырабатываются специальные сигналы (о и <р), учитываемые устройством управления и используемые при состав­ лении программы.

Устройство управления производит автоматическое управление работой машины, в частности, в зависимости от управляющих сиг­ налов, выработанных АУ, производит передачу управления к раз­ личным участкам программы или останавливает работу с выдачей на пульт управления или на печать всех необходимых данных.

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

Все эти перечисленные элементы объединены в единый комп­ лекс и представляют электронную цифровую вычислительную ма­ шину.

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

На рис. 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— два;

111-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

Соседние файлы в папке книги из ГПНТБ