О портале "Математика. ру" arrow Язык алгебры arrow Быстродействующие вычислительные машины
Математический портал Математику.ру

Д. Ф. Араго

Я никогда не приписываю формулам неограниченную область правильности. В действительности большая часть формул справедлива только при выполнении некоторых условий. Определение этих условий и, конечно, уточнение смысла употребляемых терминов заставляют у меня исчезать всякую неопределенность [цит. по: 167, с. 39].

 

Быстродействующие вычислительные машины

Печать E-mail
05.03.2008 г.

Быстродействующие вычислительные машины

Беседа об уравнениях в плане «Занимательной ал­гебры» не может пройти мимо решения уравнений на вычислительных машинах. Мы уже говорили о том, что вычислительные машины могут «играть» в шах­маты (или шашки). Математические машины могут выполнять и другие задания, например, перевод с од­ного языка на другой, оркестровку музыкальной ме­лодии и т.д. Нужно только разработать соответствую­щую «программу», по которой машина будет действо­вать.

Конечно, мы не будем рассматривать здесь «про­граммы» для игры в шахматы или для перевода с одного языка на другой: эти «программы» крайне слож­ны. Мы разберем лишь две очень простенькие «про­граммы». Однако вначале нужно сказать несколько слов об устройстве вычислительной машины.

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

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

На подобном же принципе основано действие за­поминающих устройств. Числа и условные сигналы записываются (при помощи электрических, магнит­ных или механических сигналов) на специальном барабане, ленте или другом устройстве. В нужный момент записанное число может быть «прочтено», а если оно уже больше не нужно, то его можно стереть, а на его месте записать другое число. «Запоминание» и «чтение» числа или условного сигнала длятся всего лишь миллионные доли секунды.

«Память» может содержать несколько тысяч ячеек, каждая ячейка - несколько десятков элементов, например магнитных. Для записи чисел по двоичной системе счисления условимся считать, что каждый намагниченный элемент изображает цифру 1, а ненамагниченный - цифру 0. Пусть, например, каждая ячейка памяти содержит 25 элементов (или, как го­ворят, 25 «двоичных разрядов», причем первый эле­мент ячейки служит для обозначения знака числа (+ или -), следующие 14 разрядов служат для за­писи целой части числа, а последние 10 разрядов - для записи дробной части. На рис. 11 схематически изображены две ячейки памяти; в каждой по 25 раз­рядов. Намагниченные элементы обозначены знаком +, ненамагииченные обозначены знаком -. Рассмо­трим верхнюю из изображенных ячеек (запятая по­казывает, где начинается дробная часть числа, а пунк­тирная линия отделяет первый разряд, служащий для записи знака, от остальных). В ней записано (в двоичной системе счисления) число +1011,01 или - в привычной для нас десятичной системе счисления - число 11,25.

Кроме чисел в ячейках памяти записываются при­казы, из которых состоит программа. Рассмотрим, как выглядят приказы для так называемой трех-адресной машины. В этом случае при записи при­каза ячейка памяти разбивается на 4 части (пунктир­ные линии на нижней ячейке, рис. 11). Первая часть служит для обозначения операции, причем операции записываются числами (номерами).

Например.

 

Image

 

Приказы расшифровываются так: первая часть ячейки - номер операции, вторая и третья части - номера ячеек (адреса), из которых надо взять числа для выполнения этой операции, четвертая часть - номер ячейки (адрес), куда следует отправить по­лученный результат.

 

Image

 

 

 

Например, на рис.  11   (нижняя строка) записаны в двоичной системе числа 11, 11, 111, 1011 или в десятичной системе: 3, 3, 7, 11, что означает следующий приказ: выполнить операцию 3 (т. е. умножение) над числами, находящимися в третьей и седьмой ячейках памяти, а получен­ный результат «запомнить» (т. е. записать) в один­надцатой ячейке.

В дальнейшем мы будем записывать числа и при­казы не условными значками, как на рис. 11, а прямо в десятичной системе счисления. Например, приказ, изображенный в нижней строке рис. 11, запишется так:

 

Image

 

Рассмотрим теперь два простеньких примера про­грамм.

 

Image

 

Посмотрим, как будет работать машина, у кото­рой в первых пяти ячейках записаны эти данные.

1-й приказ: сложить числа, записанные в 4-й и 5-й ячейках, и отправить результат снова в 4-го ячей­ку (вместо того, что там было записано ранее). Таким образом, машина запишет в 4-ю ячейку число 0+1 = 1. После выполнения 1-го приказа в 4-й и 5-й ячейках будут следующие числа:

4) 1,

5)1.

2-й приказ: умножить число, имеющееся в 4-й ячейке, на себя (т. е. возвести его в квадрат) и ре­зультат, т. е. I2, выписать на карточку (стрелка озна­чает выдачу готового результата).

3-й приказ: передача управления в 1-ю ячейку. Иначе говоря, приказ п. у. означает, что надо снова по порядку выполнять все приказы, начиная с 1-го. Итак, снова 1-й приказ.

1-й приказ: сложить числа, имеющиеся в 4-й и 5-й ячейках, и результат снова записать в 4-й ячейке. В результате в 4-й ячейке будет число 1 + 1 = 2:

4) 2,

5) 1.

2-й приказ: возвысить в квадрат число, стоящее в 4-й ячейке, и полученный результат, т. е. 22, выпи­сать на карточку (стрелка - выдача результата).

3-й приказ: передача у п р а в л е н и я в пер­вую ячейку (т. е. опять переход к 1-му приказу).

1-й приказ: число 2+1=3 отправить в 4-ю ячейку:

4) 3,

5) 1.

2-й приказ: выписать на карточку число З2.

3-й приказ: передача управления в 1-ю ячейку и т. д.

Мы видим, что машина вычисляет один за другим квадраты целых чисел и выписывает их на карточку. Заметьте, что каждый раз набирать новое число вручную не надо: машина сама перебирает под­ряд целые числа и возводит их в квадрат. Действуя по этой программе, машина вычислит квадраты всех целых чисел, скажем, от 1 до 10 000 в течение несколь­ких секунд (или даже долей секунды).

Следует отметить, что в действительности про­грамма для вычисления квадратов целых чисел должна быть несколько сложнее той, которая приве­дена выше. Это прежде всего относится ко 2-му при­казу. Дело в том, что выписывание готового резуль­тата' на карточку требует во много раз больше вре­мени, чем выполнение машиной одной операции. Поэтому готовые результаты сначала «запоминаются» в свободных ячейках «памяти», а уже после этого («не спеша») выписываются на карточку. Таким об­разом, первый окончательный результат должен «за­поминаться» в 1-й свободной ячейке «памяти», вто­рой результат - во 2-й свободной ячейке, третий - в 3-й и т. д. В приведенной выше упрощенной про­грамме это никак не было учтено.

Кроме того, машина не может долго заниматься вычислением квадратов - не хватит ячеек «памяти»,- а «угадать», когда машина уже вычислила нужное нам число квадратов, чтобы в этот момент выклю­чить ее, - невозможно (ведь машина производит многие тысячи операций в секунду!). Поэтому преду­смотрены особые приказы для остановки машины в нужный момент. Например, программа может быть со­ставлена таким образом, что машина вычислит ква­драты всех целых чисел от 1 до 10 000 и после этого автоматически выключится.

Есть и другие более сложные виды приказов, на которых мы здесь для простоты не останавливаемся.

Вот как выглядит в действительности программа для вычисления квадратов всех целых чисел от 1 до 10000:

 

Image

 

 

Image

 

 

 

 

 

Первые два приказа мало отличаются от тех, ко­торые были в предыдущей упрощенной программе. После выполнения этих двух приказов в 8-й, 9-й и 10-й ячейках будут следующие числа:

8) 1

9) 1

10) 12

Третий приказ очень интересен: надо сложить то, что стоит во 2-й и 6-й ячейках, и результаты сно­ва записать во 2-й ячейке, после чего 2-я ячейка будет иметь вид

2) умножение   8   8    11.

Как видите, после выполнения третьего приказа меняется второй приказ, вернее меняется один из адресов 2-го приказа. Ниже мы выясним, для чего это делается.

Четвертый приказ: условная передача управления (вместо 3-го приказа в рассмотренной ранее программе). Этот приказ выполняется так: если число, стоящее в 8-й ячейке, меньше числа, стоящего в 7-й ячейке, то передается управление в 1-ю ячейку; в противном случае выполняется следующий (т. е. 5-й) приказ. В нашем случае действительно 1<10 000, так что происходит передача управления в 1-ю ячейку. Итак, снова  1-й приказ.

После выполнения 1-го приказа в 8-й ячейке будет число 2.

Второй приказ, который теперь имеет вид

2) умножение   8   8    11.

заключается в том, что число 22 направляется в 11-ю ячейку. Теперь ясно, зачем был выполнен ранее 3-й приказ: новое число, т. е. 22, должно попасть не в 10-ю   ячейку, которая уже занята.

 

 

 

 

 

 

После выполнения 1-го и 2-го приказов у нас будет следующие числа:

8) 2

9) 1

10) 12

11) 22

 

После выполнения 3-го приказа 2-я ячейка примет вид

2) умножение   8   8    12,

т. е. машина «подготовилась» к тому, чтобы записать новый результат в следующую, 12-ю ячейку. Так как в 8-й ячейке все еще стоит меньшее число, чем в 9-й ячейке, то 4-й приказ означает снова передачу упра­вления в 1-ю ячейку.

Теперь после выполнения 1-го и 2-го приказов по­лучим:

8) 3

9) 1

10) 12

11) 23

12) 32

До каких пор машина будет по этой программе вычислять квадраты? До тех пор, пока в 8-й ячейке не появится число 10000, т.е. пока не будут вычислены квадраты чисел от 1 до 10 000. После этого 4-й приказ уже не передаст управления в 1-ю ячейку (так как в 8-й ячейке будет стоять число, не меньшее, а равное числу, стоящему в 7-й ячейке), т. е. после 4-го при­каза машина выполнит 5-й приказ: остановится (вы­ключится).

Рассмотрим теперь более сложный пример про­граммы: решение систем уравнений. При этом мы рассмотрим упрощенную программу. При желании читатель сам подумает о том, как должна выглядеть такая программа в полном виде.

Пусть задана система уравнений:

 

Image

 

Эту систему нетрудно решить:

 

Image

 

 

Для решения такой системы (с заданными числовыми значениями коэффициентов а, b, с, d, е, f) вам потре­буется, вероятно, несколько десятков секунд. Машина же может решить в секунду тысячи таких систем. Рассмотрим соответствующую программу. Будем считать, что даны сразу несколько систем:

 

Image

 

с числовыми значениями коэффициентов а, b, с, d, е, f, а', b', ...

Вот соответствующая программа:

 

Image

1-й приказ: составить произведение чисел, стоя­щих в 28-й и 30-й ячейках, и направить результат в 20-ю ячейку. Иначе говоря, в 20-й ячейке будет запи­сано число се.

Аналогично выполняются приказы 2-й - 6-й. Пос­ле их выполнения в ячейках 20-й - 25-й будут нахо­диться следующие числа:

 

Image

 

7-й приказ: из числа, стоящего в 20-й ячейке, вычесть число, стоящее в 21-й ячейке, и результат (т. е. се-bf) снова записать в 20-ю ячейку.

Аналогично выполняются приказы 8-й и 9-й. В ре­зультате в ячейках 20-й, 21-й, 22-й окажутся следую­щие числа:

 

Image

 

10-й и 11-й приказы: составляются частные

 

Image

 

и выписываются на карточку (т. е. выдаются как го­товые результаты). Это и есть значения неизвестных, получаемых из первой системы уравнений.

Итак, первая система решена. Зачем же дальней­шие приказы? Дальнейшая часть программы (ячей­ки 12-я- 19-я) предназначена для того, чтобы заста­вить машину «подготовиться» к решению второй системы уравнений. Посмотрим, как это происходит. Приказы с 10-го по 17-й заключаются в том, что к содержимому ячеек 1-й - 6-й прибавляется запись, имеющаяся в 19-й ячейке, а результаты снова остают­ся в ячейках 1-й-6-й. Таким образом, после выпол­нения 17-го приказа первые шесть ячеек будут иметь следующий вид:

 

Image

18-й приказ: передача управления в первую ячейку.

Чем же отличаются новые записи в первых шести ячейках от прежних записей? Тем, что первые два адреса в этих ячейках имеют номера не от 26 до 31, как прежде, а номера от 32 до 37. Иначе говоря, машина снова будет производить те же действия, но числа будет брать не из ячеек 26-й-31-й, а из ячеек 32-й - 37-й, где стоят коэффициенты второй системы уравнений. В результате машина решит вторую систему уравнений. После решения второй системы ма­шина перейдет к третьей и т. д.

Из сказанного становится ясным, как важно уметь составить правильную «программу». Ведь машина «сама» ничего делать не «умеет». Она может лишь выполнять заданную ей программу. Имеются про­граммы для вычисления корней, логарифмов, синусов, для решения уравнений высших степеней и т. д. Мы уже говорили выше о том, что существуют програм­мы для игры в шахматы, для перевода с иностран­ного языка, ... Конечно, чем сложнее задание, тем сложнее соответствующая  программа.

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

 
След. »
Яндекс.Метрика