Вычислительная машина и мозг - Джон фон Нейман
Необходимо отметить важное различие между этим способом управления и коммутационным управлением, описанным ранее. При коммутационном управлении управляющие точки представляют собой реальные физические объекты. Их взаимное расположение относительно друг друга выражает решаемую задачу. В способе, рассмотренном выше, команды являются абстрактными объектами, записанными в память машины. Таким образом, задачу описывает содержание данного конкретного сегмента памяти. Соответственно этот способ управления можно назвать управлением, хранимым в памяти.
Принцип работы командного управления
Поскольку команды, осуществляющие все управление, хранятся в памяти, данный способ управления отличается бо́льшей гибкостью. В самом деле, машина под управлением команд может извлекать числа (или команды) из памяти, обрабатывать их (как числа!) и возвращать в память (в то же или другое место); т. е. изменять содержание памяти – фактически это ее нормальный режим работы. Следовательно, она может менять команды, которые определяют ее действия. Это позволяет использовать разнообразные сложные системы команд, которые последовательно изменяют себя и, соответственно, вычислительные процессы, которыми они управляют. Благодаря этому становятся возможны более сложные процессы, нежели простые итерации. Хотя такое может показаться нереальным и сложным, подобные методы широко используются и играют важнейшую роль в современной практике машинных вычислений (вернее, в планировании таких вычислений).
Разумеется, система команд – а именно задача, подлежащая решению, намерение пользователя – сообщается машине посредством ее загрузки в память. Обычно это делается с помощью заранее подготовленной ленты или другого аналогичного посредника.
Смешанные формы управления
Два описанных выше способа управления – коммутационное и командное – допускают различные комбинации, о которых я хотел бы сказать несколько слов.
Рассмотрим машину с коммутационным управлением. Предположим, что она имеет память того же типа, что и машина с командным управлением. Полное состояние ее коммутации можно описать последовательностью цифр (подходящей длины). Эта последовательность может храниться в памяти; скорее всего, она будет занимать место нескольких чисел, т. е. нескольких, скажем, соседних, регистров – иначе говоря, она будет храниться под несколькими последовательными адресами, первый из которых для краткости и будет считаться ее адресом. В память можно загрузить несколько таких последовательностей, представляющих собой несколько разных коммутационных схем.
Кроме того, машина может управляться с помощью системы команд, хранимых в памяти. Помимо обязательных команд (ср. выше), такая система должна включать команды следующих типов: 1) команду сброса схемы коммутации в зависимости от содержимого памяти по определенному адресу (ср. выше); 2) систему команд, которые могут изменять отдельные элементы коммутации (обратите внимание, что для выполнения обеих команд необходимо, чтобы коммутация осуществлялась с помощью электрически управляемых устройств, т. е. электромагнитными реле, электронными лампами, ферромагнитными сердечниками и т. п.); 3) команду, которая переводит управление машиной из командного режима в коммутационный.
Также необходимо, чтобы схема коммутации предусматривала возможность указания командного управления (возможно, под определенным адресом) в качестве преемника (или, в случае разветвления, одного из преемников) управляющей точки.
Комбинированный метод
Нижеследующие замечания позволяют получить общее представление о гибкости, присущей рассмотренным режимам управления и их комбинациям.
Еще один класс типов машин смешанного типа, заслуживающий упоминания, – машины, в которых совмещены аналоговые и цифровые принципы. Такие машины фактически состоят из двух частей: аналоговой и цифровой. Части обмениваются числовыми данными и подчиняются общему управлению. Другой возможный вариант – обе части имеют собственные элементы управления, которые взаимодействуют друг с другом (обмениваются логическими данными). Разумеется, для этого необходимы органы, способные преобразовывать число из цифровой формы в аналоговую, и наоборот. Первая операция подразумевает построение непрерывной величины из ее цифрового выражения; вторая операция заключается в измерении непрерывной величины и выражении результата в цифровой форме. Различные устройства (в том числе быстродействующие электрические), выполняющие эти две задачи, общеизвестны.
Смешанное представление чисел. Машины, построенные на этой основе
Другой важный класс машин смешанного типа включает машины, в которых аналоговые и цифровые принципы сочетаются на каждом этапе вычислительной (но, разумеется, не логической) процедуры. Самым простым примером является представление каждого числа частично в цифровой и частично в аналоговой форме. Я опишу одну такую схему, которая иногда встречается при конструировании машин и их элементов, а также применяется в некоторых типах связи, хотя до сих пор на ее основе не была построена ни одна большая машина.
В этой системе, которую я назову частотно-импульсной, каждое число выражено в виде последовательности электрических импульсов, следующих один за другим (на одной линии). Длина последовательности при этом не имеет значения; число выражается средней частотой (плотностью) последовательности импульсов (во времени). Разумеется, необходимо задать два временны́х интервала t1 и t2 (t2 должен быть значительно больше, чем t1); усреднение производится для промежутков времени между t1 и t2. Также должна быть определена единица числа, приравниваемого к этой плотности. Иногда целесообразно считать плотность равной не самому числу, а некоторой (фиксированной) монотонной функции от него, например логарифму. (В данном случае цель заключается в обеспечении более высокого разрешения там, где это необходимо, например когда числа малы, и более низкого разрешения там, где это допустимо, т. е. когда числа велики, включая все последовательные градации.)
Можно создать органы, которые будут производить над этими числами четыре арифметических действия. Так, когда плотности представляют сами числа, сложение выполняется путем сочетания двух последовательностей. Другие операции сложнее, однако и для них разработаны эффективные, более или менее изящные процедуры. Здесь я не буду рассматривать представление отрицательных чисел – для этого тоже существуют определенные приемы.
Чтобы обеспечить надлежащую точность, каждая последовательность должна содержать большое количество импульсов в каждом временно́м интервале t1, упомянутом выше. Если в ходе вычисления число требуется изменить, можно соответствующим образом изменить плотность представляющей его последовательности,