Вычислительная машина и мозг - Джон фон Нейман
Я начну с обсуждения некоторых принципов, лежащих в основе классификации и работы вычислительных машин.
Существующие вычислительные машины подразделяются на два класса: аналоговые и цифровые. Разница между первыми и вторыми заключается в способе представления числовых данных, которыми оперирует машина.
Аналоговый метод
В аналоговой машине любое число представлено некой подходящей физической величиной, значение которой, измеряемое в тех или иных заранее заданных единицах, равно этому числу. Такой величиной может быть угол поворота диска, сила тока, величина (относительного) напряжения и т. д. Чтобы машина могла вычислять, т. е. оперировать числами согласно намеченному плану, ее необходимо снабдить органами (компонентами), которые могли бы выполнять с этими величинами основные математические операции.
Стандартные основные операции
Под основными операциями обычно понимают четыре арифметических действия: сложение (x + y), вычитание (x – y), умножение (xy) и деление (x / y).
Очевидно, сложение и вычитание двух токов (путем их соединения в одинаковых или противоположных направлениях) не представляет сложностей. Умножение (токов) выполнить труднее, однако на сегодняшний день существуют различные типы электрических устройств, которые могут произвести эту операцию. То же относится и к делению (одного тока на другой). (Для умножения и деления – но не для сложения и вычитания – важное значение, конечно, имеют единицы, в которых измеряется ток.)
Нестандартные основные операции
Примечательная особенность некоторых аналоговых машин, о которой я еще буду говорить позже, заключается в следующем. Иногда машина строится на других основных операциях, отличных от четырех арифметических действий, упомянутых выше. Так, классический дифференциальный анализатор, в котором числа выражаются при помощи углов поворота определенных дисков, работает следующим образом. Вместо сложения x + y и вычитания x – y выполняются операции (x + y) / 2, поскольку они осуществляются весьма доступным и простым устройством – дифференциалом (подобным тому, что устанавливают на задней оси автомобиля). Вместо умножения xy используется совершенно иная операция: в дифференциальном анализаторе все величины представлены как функции времени; для двух таких величин x (t), y (t) так называемый интегратор образует интеграл (Стильтьеса) z (t) = ∫t x (t) dy (t).
Таким образом, можно выделить три ключевые характеристики данной схемы.
Во-первых, три вышеперечисленные операции (в соответствующих комбинациях) воспроизводят три из четырех стандартных основных операций: сложение, вычитание и умножение.
Во-вторых, в сочетании с принципом обратной связи они порождают четвертую операцию – деление. Я не буду рассматривать здесь принцип обратной связи; скажу только, что, хотя он и выглядит как средство для решения уравнений в неявном виде, на самом деле это исключительно изящная короткозамкнутая схема итеративного приближения.
В-третьих (в этом, в частности, и заключается подлинное обоснование дифференциального анализатора), для широкого круга задач основные операции дифференциального интегратора – (x + y) / 2 и интегрирование – представляются более экономичными, нежели арифметические (x + y, x – y, xy, x / y). Так, любая вычислительная машина, предназначенная для решения сложной математической задачи, должна быть запрограммирована на решение такой задачи. Это означает, что сложную операцию решения задачи необходимо заменить комбинацией основных операций. Часто это подразумевает нечто более тонкое: точную аппроксимацию результата данной операции. Вместе с тем для определенного класса задач один набор основных операций может оказаться эффективнее, чем другой, т. е. допускать использование более простых комбинаций. Например, для систем уравнений в полных дифференциалах вышеупомянутые основные операции этой машины более эффективны, нежели основные арифметические операции (х + y, x – y, xy, x / y).
Далее переходим к цифровым машинам.
Цифровой метод
В десятичной цифровой машине каждое число представлено так же, как в обычном (рукописном или печатном) тексте, т. е. в виде последовательности десятичных цифр. Каждая десятичная цифра в свою очередь представлена системой так называемых маркеров.[6]
Маркеры, их комбинации и представление
Маркер, который способен принимать десять разных форм, сам по себе может представлять десятичную цифру. Если же маркер имеет только две разные формы, каждой десятичной цифре должна соответствовать целая группа таких маркеров. (Группа из трех двузначных маркеров допускает 8 комбинаций; этого недостаточно. Группа из четырех таких маркеров допускает 16 комбинаций; и этого более чем достаточно. Следовательно, для каждой десятичной цифры необходимо использовать группы по меньшей мере из четырех маркеров. Иногда могут потребоваться и бо́льшие группы; ср. ниже.) Примером десятизначного маркера является электрический импульс, возникающий на одной из десяти заданных линий. Двузначный маркер представляет собой электрический импульс, присутствие или отсутствие которого на определенной линии передает некую информацию (значение маркера). Другим примером двузначного маркера служит электрический импульс, имеющий либо положительную, либо отрицательную полярность. Конечно, существует много других равно допустимых схем маркеров.
Говоря о маркерах, необходимо отметить следующее: вышеупомянутый десятизначный маркер – это группа из десяти двузначных маркеров, а значит, он отличается высокой избыточностью (в смысле, рассмотренном выше). В рамках данной схемы можно ввести минимальную группу, состоящую из четырех двузначных маркеров. Рассмотрим систему, на четырех линиях которой появляются (одновременно) электрические импульсы. Всего возможно 16 комбинаций; при этом любые 10 могут соответствовать десятичным цифрам.
Обратите внимание, что эти маркеры (обычно электрические импульсы; реже – электрические напряжения или токи, длящиеся столько времени, сколько нужно для их надежного распознавания) должны управляться электрическими вентилями.
Типы цифровых вычислительных машин и их основные компоненты
До сих пор в цифровых вычислительных машинах последовательно применялись электромеханические реле, электронные лампы, кристаллические диоды, ферромагнитные сердечники и транзисторы. Одни использовались в сочетании друг с другом; другие – преимущественно в запоминающих устройствах (ср. ниже); третьи – главным образом вне памяти (в «активных» органах). В зависимости от этого выделяют соответствующие типы цифровых машин.
Параллельные и последовательные схемы
Итак, в цифровых вычислительных машинах все числа представлены последовательностями десятизначных маркеров (или групп маркеров), которые могут появляться либо одновременно в разных органах машины – т. е. параллельно, либо один за другим в одном органе – т. е. последовательно. Если машина предназначена для оперирования, скажем, двенадцатиразрядными десятичными числами (например, с шестью разрядами слева и шестью разрядами справа от десятичной запятой), тогда в каждом информационном канале машины, который служит для передачи числовых данных, должны присутствовать двенадцать таких маркеров (или групп маркеров). (Существуют различные способы придать этой схеме ту или иную гибкость; во многих машинах так и делается. Так, почти во всех машинах положение десятичной запятой можно регулировать. Однако здесь я не буду вдаваться в эти подробности.)
Обычные основные операции
До сих пор операции цифровой вычислительной машины всегда основывались на четырех арифметических действиях.