Смекни!
smekni.com

Компьютер Атанасова (стр. 3 из 4)

Конечно, этот прототип едва ли можно было назвать компьютером - вычислять карандашом на бумаге было быстрее и удобнее. И все же он имеет такое же отношение к электронным вычислительным машинам, какое имеет, к примеру, самолет братьев Райт к аэронавтике. Продемонстрировав принципы Атанасова в действии, прототип открыл дорогу, которая привела к современному компьютеру.

Теперь Атанасов был готов приступить к созданию машины "АВС", которую он строил с 1939 по 1942 г. Она была предназначена для решения часто встречающейся в физике и технике задачи - алгебраической системы линейных уравнений. Примером такой системы является пара уравнений вида 2x + 5у = 9 и х + 2у = 4, где х и у - неизвестные переменные. Обозначим первое уравнение а, и второе - b.

Как известно всякому, кто изучал алгебру в школе, такая система уравнений решается так называемым методом исключения Гаусса: сложением или вычитанием одного уравнения из другого с предварительным умножением их на определенные коэффициенты, так чтобы в результирующем уравнении одна из переменных пропала. В данном примере, вычитая умноженное на 2 уравнение b из уравнения а, мы сводим коэффициент при х к 0 и получаем уравнение у = 1. Теперь, если подставить 1 вместо у в первое уравнение а, то в результате получим х = 2. Заметим, что мы могли бы дважды вычесть уравнение b из уравнения а, что экивалентно умножению уравнения b на 2 с последующим его вычитанием из а, в конце концов умножение - это лишь многократное сложение.

Атанасов, разумеется, нацелился на решение более сложной задачи: он хотел, чтобы машина решала n уравнений с n неизвестными, а именно 29 уравнений с 29 неизвестными от х до х29. Такие системы уравнений решаются тем же способом, который мы рассмотрели применительно к простенькому примеру из двух уравнений. Здесь также нужно взять два уравнения, например

2x1 + 5x2 - 3x3 + 7x4 + ... +6x29 = 9

и

x1 + 2x2 + 4x3 - 2x4 + ... +8x29 = 4

и вычесть одно уравнение, умноженное на какое-то подходящее число, из другого, так чтобы исключить одно из неизвестных. Скажем, для того чтобы исключить x1, мы должны умножить второе уравнение на 2 и вычесть его из первого, после чего мы получим уравнение с одним исключенным неизвестным:

x2 - 11x3 + 11x4 + ... +10x29 = 1.

Повторяя ту же процедуру с другими парами уравнений, можно получить 28 уравнений с исключенным неизвестным x1. Теперь все повторяется для этих 28 уравнений, из которых мы получим 27 уравнений с исключенными неизвестными x1 и x2 и т.д., пока не останется одно уравнение с одним неизвестным. Затем, имея значение этого неизвестного и возвращаясь по иерархии уравнений, легко определит значения остальных неизвестных.

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

Каждая логическая схема выполняла сложение двух чисел, как в рассмотренном здесь примере (а) в соответствии с правилами, представленными в таблице (b). Допустим, нужно сложить двоичный эквивалент числа 19 в счетчике с эквивалентомчисла 11 на клавиатуре. После того как эти числа преобразованы в двоичную форму, т.е. разложены по степеням двойки (20, 21, 22, 23, или 1,2,4,8), их можно записать как 10011(16+0+0+2+1) и 01011 (0+8+0+2+1). Логическая схема начнет выполнять операцию со сложения разрядов в крайнем правом столбце (2°). При этом она определит, что сочетание разрядов в счетчике, на клавиатуре и в бите переноса - 1,1,0 соответствует третьей от конца строчке в таблице. (Исходное значение бита переноса всегда равно 0.) Согласно графе "выход" в таблице, схема (с) пошлет сигнал 0 {черный) на счетчик (где фиксируются результаты), заменяя старое значение 1. Сигнал 1 {красный) будет послан в ячейку переноса. Эта процедура эквивалентна подсчету "1 плюс 1 равно 2" при условии, что это число 2 по основанию 2 записывается как 10. Аналогичным образом схема сложит затем последовательно разряды в остальных колонках, пока не будет получен окончательный результат.

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

Компьютер "АВС" выполнял процедуру исключения Гаусса каждый раз для двух уравнений. Их коэффициенты, закодированные предварительно на перфокартах в десятичном виде, преобразовывались в двоичную форму специально сконструированным для этого преобразующим барабаном и записывались в запоминающее устройство. Коэффициенты одного уравнения загружались в барабан счетчика, коэффициенты второго - в барабан клавиатуры. При каждом повороте барабана, занимавшем около одной секунды, логические схемы выполняли одно сложение или вычитание над двумя наборами коэффициентов. Точнее, одна логическая схема, состоящая теперь из 7 ламп, складывала или вычитала коэффициент, скажем при x1 на клавиатурном барабане с коэффициентом при x1 на барабане счетчика, оставляя сумму или разность в счетчике. В то же самое время другие логические схемы аналогичным способом обрабатывали остальные пары коэффициентов. (Такой процесс, в ходе которого ряд идентичных действий выполняется параллельно, называется векторной операцией, а компьютер, выполняющий подобные операции, - векторным процессором.) Одновременно специальные схемы регенерации памяти обновляют содержимое запоминающего устройства "клавиатуры". Позже, после того как многочисленные сложения и вычитания были выполнены и соответствующее неизвестное было исключено, компьютер "АВС" перфорировал набор оставшихся коэффициентов (в уравнении с исключенным неизвестным) на картах в двоичном виде. Эти карты хранились до тех пор, пока вновь не требовались на одном из следующих этапов вычислений. При этом специальное устройство чтения двоичных перфокарт переводило записанную на них информацию в запоминающие устройства компьютера. Когда значения всех неизвестных были вычислены в двоичном виде, устройство чтения десятичных карт осуществляло обратную операцию, переводя двоичные данные в обычные десятичные числа.

Компоненты "АВС" были подобраны так, чтобы машина решала систему из 29 уравнений с 29 неизвестными, от х1 до x29. Такие системы решаются путем повторного прибавления (или вычитания) одного уравнения к другому до тех пор, пока одна из переменных во втором уравнении не будет исключена. Прежде чем получить окончательное решение, т.е. вычислить значения всех переменных, требовалось многократное повторение этого процесса. Для того чтобы выполнить эти вычисления, "АВС" считывал коэффициенты при переменных (например, двойку в члене 2х1) с перфокарт, преобразовывал их в двоичную форму и загружал коэффициенты одного уравнения в барабан "клавиатурного" запоминающего устройства, а коэффициенты другого - в барабан "счетчика". При одном повороте барабанов каждая логическая схема (по семь вакуумных ламп на схему) производила сложение или вычитание коэффициентов, записывая результат в "счетчик". В то же время регенерирующие схемы перезаряжали конденсаторы "клавиатуры". Исключив определенную переменную, машина запоминала остающиеся коэффициенты уравнения на перфокартах, с тем чтобы позднее воспользоваться ими.

Система ввода-вывода на перфокартах хорошо работала во время предварительных испытаний, но когда ее подсоединили к "АВС", стали возникать ошибки, приблизительно одна на каждые 10 000 операций чтения или перфорирования. Это означало, что эта машина без сложной системы перепроверок не могла быть надежным средством решения больших систем уравнений, хотя маленькие системы она решала хорошо. Атанасов и Берри пытались решить эту относительно несложную техническую проблему, но начавшаяся вторая мировая война заставила их бросить работу над компьютером. Берри был переведен на другую работу в ожидании призыва, а Атанасов поступил на военную службу в качестве сотрудника военно-морской артиллерийской лаборатории.

Теперь об оставленом ими компьютере часто говорят как о незавершенной машине. Правильнее было бы охарактеризовать ее как компьютер, функционирующий со сбоями, компьютер, в котором собственно электронная вычисляющая часть была выполнена с блестящим успехом. Учитывая, как удивительно мало времени потребовалось для конструирования и изготовления "АВС", наверное, не будет ошибкой полагать, что проблема, возникшая с перфокарточной системой ввода-вывода, была бы решена очень быстро. В действительности для этих целей вполне подошла бы перфокарточная система, разработанная корпорацией IBM десятилетиями раньше (и, кстати, примененная позже в компьютере "ENIAC"). Более того, продемонстрировав возможности своего компьютера, Атанасов легко бы заручился финансовой поддержкой для завершения проекта.