Два описанных выше способа управления – коммутационное и командное – допускают различные комбинации, о которых я хотел бы сказать несколько слов.
Рассмотрим машину с коммутационным управлением. Предположим, что она имеет память того же типа, что и машина с командным управлением. Полное состояние ее коммутации можно описать последовательностью цифр (подходящей длины). Эта последовательность может храниться в памяти; скорее всего, она будет занимать место нескольких чисел, т. е. нескольких, скажем, соседних, регистров – иначе говоря, она будет храниться под несколькими последовательными адресами, первый из которых для краткости и будет считаться ее адресом. В память можно загрузить несколько таких последовательностей, представляющих собой несколько разных коммутационных схем.
Кроме того, машина может управляться с помощью системы команд, хранимых в памяти. Помимо обязательных команд (ср. выше), такая система должна включать команды следующих типов: 1) команду сброса схемы коммутации в зависимости от содержимого памяти по определенному адресу (ср. выше); 2) систему команд, которые могут изменять отдельные элементы коммутации (обратите внимание, что для выполнения обеих команд необходимо, чтобы коммутация осуществлялась с помощью электрически управляемых устройств, т. е. электромагнитными реле, электронными лампами, ферромагнитными сердечниками и т. п.); 3) команду, которая переводит управление машиной из командного режима в коммутационный.
Также необходимо, чтобы схема коммутации предусматривала возможность указания командного управления (возможно, под определенным адресом) в качестве преемника (или, в случае разветвления, одного из преемников) управляющей точки.
Комбинированный метод
Нижеследующие замечания позволяют получить общее представление о гибкости, присущей рассмотренным режимам управления и их комбинациям.
Еще один класс типов машин смешанного типа, заслуживающий упоминания, – машины, в которых совмещены аналоговые и цифровые принципы. Такие машины фактически состоят из двух частей: аналоговой и цифровой. Части обмениваются числовыми данными и подчиняются общему управлению. Другой возможный вариант – обе части имеют собственные элементы управления, которые взаимодействуют друг с другом (обмениваются логическими данными). Разумеется, для этого необходимы органы, способные преобразовывать число из цифровой формы в аналоговую, и наоборот. Первая операция подразумевает построение непрерывной величины из ее цифрового выражения; вторая операция заключается в измерении непрерывной величины и выражении результата в цифровой форме. Различные устройства (в том числе быстродействующие электрические), выполняющие эти две задачи, общеизвестны.
Смешанное представление чисел. Машины, построенные на этой основе
Другой важный класс машин смешанного типа включает машины, в которых аналоговые и цифровые принципы сочетаются на каждом этапе вычислительной (но, разумеется, не логической) процедуры. Самым простым примером является представление каждого числа частично в цифровой и частично в аналоговой форме. Я опишу одну такую схему, которая иногда встречается при конструировании машин и их элементов, а также применяется в некоторых типах связи, хотя до сих пор на ее основе не была построена ни одна большая машина.
В этой системе, которую я назову частотно-импульсной, каждое число выражено в виде последовательности электрических импульсов, следующих один за другим (на одной линии). Длина последовательности при этом не имеет значения; число выражается средней частотой (плотностью) последовательности импульсов (во времени). Разумеется, необходимо задать два временны́х интервала t1 и t2 (t2 должен быть значительно больше, чем t1); усреднение производится для промежутков времени между t1 и t2. Также должна быть определена единица числа, приравниваемого к этой плотности. Иногда целесообразно считать плотность равной не самому числу, а некоторой (фиксированной) монотонной функции от него, например логарифму. (В данном случае цель заключается в обеспечении более высокого разрешения там, где это необходимо, например когда числа малы, и более низкого разрешения там, где это допустимо, т. е. когда числа велики, включая все последовательные градации.)
Можно создать органы, которые будут производить над этими числами четыре арифметических действия. Так, когда плотности представляют сами числа, сложение выполняется путем сочетания двух последовательностей. Другие операции сложнее, однако и для них разработаны эффективные, более или менее изящные процедуры. Здесь я не буду рассматривать представление отрицательных чисел – для этого тоже существуют определенные приемы.
Чтобы обеспечить надлежащую точность, каждая последовательность должна содержать большое количество импульсов в каждом временно́м интервале t1, упомянутом выше. Если в ходе вычисления число требуется изменить, можно соответствующим образом изменить плотность представляющей его последовательности, при условии, что этот процесс протекает достаточно медленно по сравнению с временны́м интервалом t2.
В машинах данного типа считывание условий в виде числовых значений (например, для целей логического управления; ср. выше) может представлять некоторые сложности. Однако существуют устройства, которые способны преобразовывать такое число, т. е. плотность импульсов во времени, в аналоговую величину. (Например, плотность импульсов, каждый из которых доставляет стандартный заряд к медленно разряжающемуся конденсатору [через заданное сопротивление], будет поддерживать достаточно постоянный уровень напряжения и ток утечки; оба эти параметра представляют собой широко используемые аналоговые величины.) Эти аналоговые величины затем могут применяться для логического управления, как описано выше.
После обсуждения основ функционирования и управления вычислительных машин я хотел бы остановиться на их практическом применении и его основных принципах.
Точность
Сравним сначала применение аналоговых и цифровых вычислительных машин.
Основное ограничение аналоговых машин связано с точностью. Так, точность электрических аналоговых машин редко превышает 1:103; даже механические машины (типа дифференциального анализатора) в лучшем случае позволяют добиться точности 1:104–105. Цифровые машины, напротив, могут обеспечить любую желаемую степень точности. Например, точность двенадцатиразрядной десятичной машины, упомянутой ранее, составляет 1:1012 (по причинам, которые мы рассмотрим ниже, такая точность типична для современных цифровых машин). Также следует отметить, что повысить точность гораздо легче в цифровом, нежели в аналоговом режиме. Так, перейти от 1:103 к 1:104 в дифференциальном анализаторе относительно просто; перейти от 1:104 к 1:105 – можно, но это самое большее, на что способны современные технологии; перейти от 1:105 к 1:106, используя существующие средства, невозможно. С другой стороны, перейти от 1:1012 к 1:1013 в цифровой машине – значит просто добавить один разряд к двенадцати; обычно это предполагает всего лишь относительное увеличение оборудования (не везде!) на 1 / 12 = 8,3 % и соответствующее уменьшение скорости (не везде!). Ни то ни другое не является значимым. Частотно-импульсная система сравнима с аналоговой системой. На самом деле она еще хуже: крайне низкая точность обусловлена самим ее устройством. Так, точность 1:102 требует 102 импульсов на временно́й интервал t1 (ср. выше); т. е. один этот фактор снижает скорость машины в 100 раз. Смириться с такой потерей в скорости, как правило, нелегко; бо́льшие потери обычно считаются недопустимыми.
Причины высоких (цифровых) требований к скорости
На этом этапе возникает другой вопрос: почему вообще необходима такая высокая точность (например, 1:1012, как в цифровых машинах)? Почему недостаточно точности аналоговых машин (скажем, 1:104) или точности частотно-импульсных систем (скажем, 1:102)? В большинстве задач прикладной математики и конструирования точность данных составляет не больше 1:103 или 1:104, а иногда не достигает и 1:102. Для ответов тоже не требуется высокой точности. В химии, биологии или экономике, а также в других практических задачах требования к точности обычно еще ниже. Тем не менее опыт современных вычислений показывает, что для большинства важных задач недостаточно даже точности 1:105 и что на практике полностью оправданно использование цифровых машин с точностью порядка 1:1010 и 1:1012. Причины такого удивительного явления крайне интересны и связаны с внутренней структурой наших современных математических и численных процедур.
Характерная особенность этих процедур заключается в том, что, если их разложить на составные элементы, они окажутся очень длинными. Это справедливо для всех задач, оправдывающих применение быстродействующих вычислительных машин, т. е. для всех задач по меньшей мере средней степени сложности. Основная причина заключается в том, что современные вычислительные методы требуют разложения всех математических функций на комбинации основных операций – обычно четырех арифметических действий или их аналогов. Фактически большинство функций можно лишь аппроксимировать таким образом; обычно это приводит к довольно длинным (возможно, определяемым итеративно) последовательностям основных операций (ср. выше). Иными словами, арифметическая глубина необходимых операций, как правило, весьма велика. Следует отметить, что логическая глубина во много раз больше. Если, к примеру, четыре арифметических действия разложить на составляющие их логические шаги (ср. выше), то каждое из них само по себе будет представлять длинную логическую цепочку. Однако здесь я буду говорить только об арифметической глубине.
При большом количестве арифметических операций ошибки, совершаемые в каждой из них, накладываются друг на друга. Поскольку они носят преимущественно (хотя и не всегда) случайный характер, при N операций ошибка возрастет не в N раз, а в √N раз. Само по себе это не требует точности пошаговых вычислений 1:1012 для точности конечного результата 1:103 (ср. выше). Для этого нужно 1 /1012√N ≈ 1 / 103, т. е. N ≈ 1016, тогда как даже в самых быстрых современных машинах N едва ли превышает 1010. (Машина, выполняющая арифметические операции каждые 20 микросекунд и работающая над одной задачей 48 часов, представляет собой крайний случай. Но даже здесь N ≈ 1010.) Впрочем, важную роль тут играет следующее обстоятельство. Операции, выполняемые в ходе вычисления, могут усиливать ошибки, возникшие при выполнении предыдущих операций. Это способно очень быстро покрыть любой численный разрыв. Выше мы использовали соотношение 1:103 к 1:1012, т. е. 109; разница обусловлена 425 последовательными операциями, каждая из которых увеличивает ошибку всего на 5 процентов! Я не буду давать здесь подробную и реалистичную оценку этой амплификации, в частности потому, что искусство машинных вычислений в значительной степени состоит из способов ее удержания на минимально возможном уровне. В любом случае обширный опыт позволяет сделать вывод, что высокие уровни точности, упомянутые выше, абсолютно оправданны при решении достаточно сложных задач.
Прежде чем закончить непосредственное обсуждение вычислительных машин, я хочу сказать несколько слов о скорости их работы, размерах и тому подобных параметрах.