Книга Игра в имитацию - Эндрю Ходжес
Шрифт:
Интервал:
Закладка:
Другим немаловажным аспектом архитектуры машины являлась система «логического управления». Она соотносилась со «сканером» Универсальной машины Тьюринга. Принцип был прост: Универсальная машина должна только постоянно «сверяться» с описанием — то есть командами на ленте — «чтобы знать, что делать на каждом этапе». Таким образом, система логического управления была частью электронного аппаратного обеспечения, содержащего две порции информации: в каком месте «ленты» и какую команду там надо было считать. Команда занимала тридцать две «клетки», или импульса, в «хранилище» линии задержки и должна была быть двух типов. Она должна была просто заставлять «сканер» переходить к другой точке «ленты» для получения следующей команды. Альтернативный вариант — она могла предписывать операцию сложения, умножения, переноса или копирования чисел, хранимых где-либо на «ленте». В последнем случае «сканер» должен был переместиться на следующую точку на «ленте» для получения следующей команды. Ни одно из этих действий не подразумевало ничего, кроме считывания, написания, стирания, изменения состояния и перемещения влево и вправо, что делала и теоретическая Универсальная машина Тьюринга, обрабатывая дескриптивные числа на своей ленте. За исключением тех случаев, когда бы добавлялись специальные устройства с тем, чтобы сложение и умножение можно было выполнять всего за несколько шагов, а не за тысячу более элементарных операций.
Конечно, речь не шла о физическом движении при выборе «сканером» команды. Напротив, принцип работы системы управления АВМ был довольно похож на набор телефонного номера. По большей части сложность электронных схем обуславливалась требованиями этой системы с «древовидной» структурой. Сложность заключалась и в способе, которым эти тридцать две ячейки «временного хранилища», состоявшие из специальных коротких линий задержек, обеспечивались для шунтирования /отвода, ответвления/ импульсов. Он существенно отличался от концепции ЭНИАКа, в которой все арифметические задачи должны были решаться путем переноса чисел в и из центрального «накопителя». В проекте АВМ арифметические операции «распределялись» по тридцати двум линиям задержки для «временного хранения» весьма остроумным способом.
Смысл в таком усложнении заключался в том, что повышалось быстродействие машины. Скорость работы стала приоритетней простоты конструкции. Это нашло отражение также в том, что Алан определил для АВМ частоту импульсов миллион в секунду, вознамерившись использовать электронную технику в полной мере. То, что он сосредоточился на скорости, было вполне естественно, учитывая его опыт работы в Блетчли, где быстродействие, как аппаратуры, так и сотрудников, ее обслуживавших, имела первостепенное значение и несколько часов определяли различие между полезностью и нецелесообразностью. Быстродействие также соотносилось с универсальностью электронной вычислительной машины. В 1942 г. они пытались сделать «Бомбу» быстрее, чтобы справиться с четырехроторной моделью «Энигмы». Но спасла их допущенная немцами ошибка в системе оповещения о погоде. А, если бы не этот счастливый случай, на решение задачи им бы пришлось потратить больше года. Одним из достоинств универсальной машины должна была стать ее способность справляться с любой новой задачей немедленно. Но это значило, что она должна была работать с максимально возможной быстротой. Модернизировать конструкцию универсальной машины ради решения специальной задачи едва было бы целесообразно. Весь смысл был в том, чтобы спроектировать ее необыкновенную конструкцию раз и навсегда, чтобы вся работа после этого сводилась лишь к разработке таблиц команд.
Тем не менее, при том, что АВМ зиждилась на идее Универсальной машины Тьюринга, в одном плане она все же отступала от нее. В конструкции машины не предусматривалось устройство для условного ветвления — особенность, на первый взгляд, необычная. Концепция машины пренебрегала важной идеей, которую ввел Бэббидж столетием ранее. Так как «сканер», или устройство логического управления, могло хранить лишь один «адрес», или позицию на ленте, единовременно. Оно не могло сохранять более двух «адресов» и выбирать следующий адресат информации по ряду критериев.
Впрочем, недоработка была только кажущейся. Она была обусловлена тем, что это был тот случай, когда аппаратное обеспечение можно было упростить, ценой большего объема хранимых команд. Алан пошел путем, при котором условное ветвление можно было осуществить при хранении устройством логического управления не более одного «адреса» единовременно. Этот путь не являлся лучшим техническим решением, но он обеспечивал дерзкую простоту конструкции. Допустим, нужно было выполнить команду 50, если какая-нибудь цифра D была 1, и выполнить команду 33, если D была 0. Идея Алана состояла в том, чтобы «представить себе, что команды были действительно числами, и произвести вычисление D × (команда 50) + (1-D) × (команда 33)». Результат этого вычисления был бы командой, производящей требуемое действие. «ЕСЛИ» определяло бы не аппаратное обеспечение, а дополнительное программирование. Такая схема побудила его причислить данные (цифра D) к командам. Это само по себе имело большое значение, так как Алан позволил себе модифицировать хранимую программу. Но это было только начало.
Фон Нейман также считал возможным изменять хранимые команды, но только одним весьма специфичным путем. Допустим, хранимая команда осуществляла действие «извлечь число по адресу 786». Фон Нейман заметил, что было бы удобно добавить 1 к 786, чтобы в результате выполнялась команда «извлечь число по адресу 787». Только это и нужно было для работы по длинному списку чисел, хранимых в ячейках 786, 787, 788, 789 и далее, как это часто происходит при больших расчетах. Фон Нейман заложил идею перехода на «следующий» адрес с тем, чтобы его не нужно было выражать в имплицитной форме. Но дальше этого фон Нейман не пошел. По факту он, в действительности, предложил метод, гарантирующий, что команды невозможно изменить никаким другим способом.
Подход Тьюринга был совершенно иной. Комментируя свой принцип модифицирования команд, он писал в своем докладе: «Он дает машине возможность создавать свои собственные команды… Это может быть очень действенно». В 1945 г. Тьюрингу с командой ЭНИАКа пришла в голову идея хранения команд внутри машины. Но она не повлекла за собой следующий шаг — использование того факта, что теперь можно было изменять сами команды в процессе работы машины. И именно эту идею Тьюринг стремился развить теперь.
Эта идея зародилась почти что случайно. Американцы работали над хранением команд внутри машины, так как это был единственный способ достаточно быстрой подачи команд. Алан же просто воспользовался принципом одиночной ленты старой Универсальной машины Тьюринга. Но в обоих случаях не рассматривалась возможность влиять на команды в ходе вычисления. Американцы приняли в расчет эту характеристику только в новом проекте 1947 г. Точно так же, концепция Универсальной машины Тьюринга 1936 г. в рабочем процессе на бумаге не предусматривала изменения «дескриптивного (описательного) числа», которым она оперировала. Эта машина была призвана считывать, декодировать и выполнять таблицу команд, хранимую на ее ленте. Она никогда не стала бы менять эти команды. Универсальная машина Тьюринга 1936 г. была сравнима с машиной Бэббиджа в том смысле, что должна была работать с фиксированным набором команд. (И отличалась тем, что этот набор команд (программа) хранился на точно таком же носителе, на каком фиксировались исходные, промежуточные и конечные данные). Так что собственный довод «универсальности» Алана Тьбринга показал, что машины, похожей на машину Бэббиджа, было достаточно. В принципе не было ничего, что можно было достичь посредством модифицирования команд в процессе работы, чего не могла бы достичь универсальная машина без такой функции. Возможность изменения программы позволяла только экономить на командах, но не расширяла теоретический объем операций. Однако эта экономия, как подметил Алан, могла оказаться «очень действенной».