Текст
                    БИБЛИОТЕКА ПО АВТОМАТИКЕ
Выпуск 60
П. НАСЛЭН
ОСНОВЫ ЦИФРОВОЙ
ВЫЧИСЛИТЕЛЬНОЙ
ТЕХНИКИ
Перевод с французского
канд. техн. наук О. И. АВЕНА
ГОСУДАРСТВЕННОЕ ЭНЕРГЕТИЧЕСКОЕ ИЗДАТЕЛЬСТВО
МОСКВА
1962
ЛЕНИНГРАД


Редакционная коллегияз И. В. Антик, А. И. Бертинов, С. Н. Вешеневский, в, С. Кулебакин, В. С. Малов, В. Э. Низе, А. Д. Смирнов, Б. С. Сотсков ЭЭ-5(4)-3 Книга представляет собой популярное изложение основ цифррвой техники: кодирования, элементов, принципов построения цифровых вычислительных машин. В книге описывается ряд новейших элементов и устройств .автоматики и вычислительной техники — криогенные элементы, параметроны, трансфлюксоры, прогрессивные системы памяти и т. д. Книга предназначается для широкого круга инженеров и техников, интересующихся вопросами вычислительной техники, а также может быть полезной студентам старших курсов вузов.
ПРЕДИСЛОВИЕ АВТОРА К ПЕРВОМУ ИЗДАНИЮ Применение цифровых вычислительных машин для научных целей, в промышленности, экономике, для управления производственными процессами стремительно растет. Чтобы быть в состоянии использовать все возможности цифровых вычислительных машин, как студенты технических вузов, так и инженеры и техники должны иметь представление об их устройстве, о методах программирования и работе основных блоков машин. Устройство цифровых вычислительных машин вряд ли изменилось со времени описания его Чарльзом Бэбедж. Значение вычислительных машин выходит за рамки собственно вычислительной техники и их применение, пожалуй, в неменьшей степени важно для целей автоматического управления, в частности в дискретных системах управления, широко распространенных в промышленности. Данная книга имеет целью дать основы того, о чем говорилось выше, вхвозможно более доступной форме, в духе заметок, о которых сказано в конце введения. Книга соответствует программе курса, который мы читаем в Высшей национальной школе армии и в Электротехническом институте. Мы особенно благодарны руководству учебными занятиями Армии за разрешение выпустить нашу книгу массовым тиражом. Большая часть книги была опубликована в 1957 г. в журнале *Mesures et Contr61e iadustrieb в номерах с марта по июнь. Редакции этого журнала мы также приносим благодарность.
ПРЕДИСЛОВИЕ КО ВТОРОМУ ФРАНЦУЗСКОМУ ИЗДАНИЮ Быстрое распространение первого издания данной книги показало нам, что характер изложения и содержание ее удовлеторяют большое число читателей. Именно поэтому при подготовке ко второму изданию книга не была подвергнута сколько-нибудь серьезной переработке. В первой части мы удовлетворились заменой различных программ умножения двух чисел любого знака универсальной программой умножения и деления чисел, представленных в закодированной форме. Вторая часть приведена в порядок включением описания логических схем на транзисторах и новых магнитных элементах, которые даны шосле схем на лампах, а также переработкой изложения устройства систем электростатической памяти. Кроме того, современные достижения заставили нас добавить несколько параграфов, посвященных запоминающим устройствам на магнитной пленке, феррорезонансным схемам и параметрическим колебаниям (параметронам), устройствам емкостной памяти и схемам со сверхпроводящими элементами (криотронам). Ошибки, обнаруженные в первом издании, были исправлены, и мы счастливы поблагодарить здесь тех из наших читателей, которые дали нам свои заключения. Автфр
ПРЕДИСЛОВИЕ РЕДАКТОРА К РУССКОМУ ИЗДАНИЮ Современные электронные цифровые вычислительные машины представляют собой область техники, внутри которой можно выделить целый ряд самостоятельных направлений. Первым таким направлением является технология элементов. Обязанная своим возникновением электронным лампам и электромагнитным реле, современная вычислительная техника строится почти исключительно на основе так называемой «техники твердого тела», т. е. на элементах, использующих в своей работе электрические и магнитные явления в твердых телах. Большинство машин, построенных в последние годы и разрабатываемых в настоящее время, использует в качестве основных'элементов полупроводниковые приборы и, в частности, транзисторы. Переход к транзисторам позволил уменьшить габариты машины от десятков кубических метров до нескольких кубических дециметров, а количество потребляемой электроэнергии — от десятков киловатт до сотен ватт. Наиболее перспективным в этом направлении представляется сейчас использование тонких магнитных пленок, комбинированных полупроводниковых элементов, а также элементов, основанных на явлении сверхпроводимости. Разработка элементов, размеры которых только на один-два порядка отличаются от размеров молекул, привела к тому, что эта новая область технологии получила название «молектроники». Элементы такого типа обладают временем переключения порядка единиц наносекунд, что уже приближается к предельному быстродействию, обусловливаемо му скоростью передачи информации по соединительным линиям. Рассматриваемое направление вызвало к жизни теорию надежности электронных устройств, которая в настоящее время представляет собой достаточно развитую самостоятельную научную дисциплину. Одним из наиболее существенных результатов здесь явилось доказательство принципиальной возможности построения сколь угодно надежных схем из ненадежных элементов. Второе направление, тесно примыкающее к первому, — это разработка теории переключательных функций. В рамках этой теории решаются задача формального описания работы вычислительных схем, а также задача построения алгоритмов минимизации, позволяющих чисто формальным способом строить схемы, выполняющие данные вычислительные функции при минимальном числе используемых элементов. Теория переключательных функций открывает путь для создания машин, разрабатывающих схемы вычислительных устройств, т. е. машин, создающих машины. Своим возникновением теория переключательных функций обязана работам английского ft
математика Дж. Буля, впервые сформулировавшего в своей книге «Законы мышления> (1854 г.) основные законы алгебры логики. Большой вклад в развитие теории переключательных функций был сделан советским ученым проф. М. А. Гавриловым. Теория временных переключательных функций разрабатывалась Ю. Я. Базилевским. Третье теоретическое направление связано с созданием теории структур цифровых вычислительных машин. Это направление возникло в последние годы в связи с тем, что возможности увеличения быстродействия машин чисто технологическими средствами уже в значительной степени исчерпаны. Другая рассматриваемая здесь задача состоит в построении наиболее экономичных структур, отвечающих заданным техническим условиям. До последнего времени всякая цифровая вычислительная машина, как универсальная, так и специализированная, состояла из трех основных устройств, а именно: арифметического устройства, запоминающего устройства и устройства управления. Отдельные машины отличались одна от другой только значениями ряда параметров этих устройств. Многие машины, разрабатываемые в настоящее время, представляют собой сложные комплексы, состоящие из большого количества устройств, работающих автономно и связанных между собой общей системой управления и общими каналами передачи информации. В таких системах достигается возможность наиболее эффективного использования каждого отдельного устройства. Работы в рассмотренных трех направлениях призваны дать ответ на вопрос: как строить цифровую вычислительную машину? Другая группа направлений ставит целью изучение объекта работы вычислительной машины, т. е. информации. Прежде всего, очень важно решить проблему создания входных и выходных устройств машины, т. е. проблему связи машины с человеком. Наибольшее значение имеют здесь исследования, связанные с разработкой теории и созданием устройств, преобразующих информацию, представленную человеческим голосом или написанным текстом, в форму кодов, с которыми оперирует машина, а также устройств, преобразующих выходные сигналы машины в форму, наиболее удобную для восприятия человеком. Следующая проблема связана с представлением информации внутри машины. Особо здесь следует отметить разработку так называемых самокорректирующих кодов, позволяющих обнаруживать и исправлять ошибки, обусловленные отдельными сбоями в работе вычислительных элементов. К этой же группе вопросов следует отнести проблему наиболее экономичного представления информации внутри машины. Задача сводится здесь к удовлетворению противоречивых требований — достижения максимальных возможностей контроля и самоконтроля при максимальной структурной надежности и минимальном числе используемых элементов. Наконец, исследования в последней группе направлений призваны дать ответ на вопрос: как должна работать цифровая вычислительная машина? Одной из проблем здесь является разработка численных методов решения математических задач. Развитие вычислительной техники оказывает, в свою очередь, существенное влияние на развитие математики, так как, с одной стороны, вычислительные четоды в математике разрабатывались до последнего времени с учетом того, что вычисления будут производиться вручную, а с дру 6
rofi стороны, целый ряд задач, на поиски аналитических решений которых затрачивались огромные усилия, потерял актуальность в связи с появлением вычислительных машин. Следующим направлением является разработка теории и практических способов программирования, т. е. перевода условий задачи и описания способа ее решения с языка человека на язык машины. Наиболее актуальной в настоящее время является разработка методов автоматического программирования, позволяющих предельно автоматизировать.этот процесс. Здесь следует отметить как работы по созданию «компилирующих», «интерпретирующих» и тому подобных программ, позволяющих автоматически составлять программу вычислений по исходным данным, записанным в форме, близко совпадающей с формой, обычно используемой в математической литературе, так и работы в области автоматического в полном смысле этого слова программирования, т. е. составления машиной неизвестного заранее алгоритма для решения задачи или класса задач на основе минимума исходных данных. В заключение следует отметить работы по созданию единых алгоритмических языков, в одинаковой степени пригодных для использо вания как машиной, так и человеком. Одним <из достигнутых результатов здесь является возможность организации совместной работы нескольких машин над решением одной задачи. При этом мосут быть реализованы преимущества, даваемые разделением труда и специализацией. Такова в общих чертах основная проблематика современной цифровой вычислительной техники. Из сказанного должно быть ясно, чт© задача написания единой монографии, освещающей хотя бы в небольшой степени большинство перечисленных здесь вопросов, связана с существенными трудностями, обусловленными как чрезвычайно большим объемом материала, так и его разносторонностью. Предлагаемая читателю книга известного французского инженера Пьера Наслэна интересна прежде всего тем методом, который автор избрал для изложения материала. Автор как бы предлагает читателю участвовать вместе с ним в построении цифровой вычислительной машины, очень простой как по объему, так и технологически, но обладающей, тем не менее, всеми характерными свойствами современных машин. Для того чтобы приступить к такому построению, прежде всего нужно знать, как представляются в машине числа и как выполняются над ними основные операции сложения и вычитания. В качестве элемента для изготовления устройств, выполняющих операции сложения и вычитания, автор избрал простейшее, с его точки зрения, а именно, электромагнитное реле. Такой выбор кажет- ся-несколько странным, и по всей вероятности, может быть объяснен тем, что основу книги составляют работы автора, опубликованные в 1957 г. Параллельно с построением устройств читатель знакомится со способами описания работы этих устройств средствами переключательных функций. Итак, выполнение операций сложения и вычитания автоматизировано. Теперь необходимы средства для автоматического хранения получаемых результатов и получения новых исходных данных, над которыми (можно было бы выполнять операции. Для этого на тех же реле строится небольшое запоминающее устройство с местным блоком управления. После этого можно приступать к завершающему этапу работы, а именно, к построению устройства управления. Одно- 7
временно рассматриваются структура команд и основные методы программирования. Во второй части книги описывается принцип действия большого количества элементов цифровых вычислительных схем, начиная с реле и кончая такими современными разработками, как трансфлюк- соры и криотроны. , Книга рассчитана, в основном, на мало подготовленного читателя, что и обусловливает стиль изложения. Однако, несмотря па это, автору удалось избежать чрезмерных упрощений и достаточно четко сформулировать большую часть наиболее актуальных в настоящее время проблем. Все это делает книгу интересной, главным образом для читателя, впервые знакомящегося с основами цифровой вычислительной техники. В ряде случаев автором были допущены неточности, главным образом терминологического характера, которые по возможности исправлялись при переводе и редактировании. Удивляет также полное отсутствие в тексте книги ссылок на работы советских ученых, вклад которых в развитие цифровой вычислительной техники является в настоящее время общепризнанным. А. В. Шилейко
ВВЕДЕНИЕ Не будет лишним напомнить в начале этой книги, что существуют два совершенно различных типа вычислительных машин: аналоговые и цифровые. Аналоговые машины, являясь по существу моделями реальных физических систем, дают возможность изучать эти системы. В подобных машинах исходные переменные математической задачи представляются пропорциональными им значениями -физических величин, таких как электрическое напряжение или угловое перемещение вала. Математические операции — сложение, умножение, деление, интегрирование, дифференцирование и т. д. — осуществляются в аналоговых машинах с помощью в большей или меньшей степени специализированных электрических, электронных или электромеханических устройств. Для решения какой-либо системы уравнений соответствующие устройства соединяются так, чтобы составить систему, работа которой в точности описывалась заданными уравнениями. Если, как это и бывает в большинстве случаев, решаемые уравнения являются математическим описанием некоторой реальной системы, то аналоговая машина образует модель этой системы. На одинаковые внешние воздействия реальная система и ее модель реагируют одинаково. Более •того, если выбор некоторой части параметров системы относительно свободен, то инженер, меняя на модели эти параметры произвольным образом, имеет возможность выбрать оптимальный режим работы системы. Очевидны те преимущества, которые дает подобное моделирование, позволяющее имитировать в лаборатории экспериментальные исследования, которые в реальных условиях будут более длительными и дорогими. Точность аналоговой машины обусловлена точностью ее вычислительных и измерительных устройств. По крайней мере на первый взгляд принцип действия цифровых вычислительных машин резко отличается от принципа действия аналоговых машин. Цифровые вычислительные машины можно рассматривать скорее как средства машинизации работы групп вычислителей. Они автоматически выполняют всю совокупность операций, предусматриваемых численными методами решения математических задач. Таким образом, изучение работы вычислителей позволит нам выявить те функции, которые способна осуществить автоматическая цифровая вычислительная машина. 2—895 9
Во-первых, математик, специалист по численным методам, должен привести исходную задачу к форме, удобной для расчетов на клавишных счетных машинах, имеющихся в вычислительном бюро, т. е. представить задачу в виде последовательности простейших арифметических операций: сложения, вычитания, умножения, деления, в некоторых случаях извлечения корня. Таким образом, дифференциальные уравнения4 будут заменены уравнениями в конечных разностях, интегралы — конечной суммой и т. д. Точность в этом случае ограничивается только количеством знаков в обрабатываемых числах. Подобная подготовительная работа необходима также, когда вычисления предполагается пре-4 I I ' 1 I I I _J т Рис. 1. Блок-схема автоматической цифровой вычислительной машины. доставить автоматической вычислительной машине. В случае вычислений, осуществляемых вручную, план расчетов, подготовленный подобным образом, служит для составления расчетных листов для вычислений, которые могут быть выполнены добросовестными расчетчиками не очень высокой квалификации. Работа этих последних заключается главным образом в чтении чисел в определенных графах их расчетных листов, вводе этих чисел с помощью клавиатуры в счетные машины, выполнении операций, указанных в расчетных листах, и в переписывании результата в предназначенную для этой цели графу. В общем случае эти результаты будут использованы на дальнейших стадиях расчета, предусмотренных инструкциями, в отдельных случаях заиисан- ными на том же листе. Этот вид расчетов складывается из трех весьма различных видов операций: 1) операция вычисления, осуществляемая на клавишной машине; 2) операция накопления цифровых данных и промежуточных результатов или, иначе говоря, операция запоминания, осуществ- 10
ляемая с помощью записи чисел в соответствующих клетках расчетного листа; 3) операция организации или программирования, результатом которой является последовательность команд, характеризующих операции, выполняемые над записанными числами; заметим, что эти программы сами могут быть записаны на расчетном листе. Те же самые операции мы обнаруживаем при работе автоматической цифровой вычислительной машины, укрупненная блок-схема которой представлена на рис. 1. Все в этой схеме напоминает расчетный лист. Запоминающее устройство (память) 2 хранит исходные данные задачи, результаты промежуточных вычислений и программу Выполнения операций. Запоминающее устройство связано двусторонней связью с вычислительным устройством 5, называемым также арифметическим устройством. В одном направлении передаются исходные данные для выполняемых операций, а в другом — частичные результаты для записи в запоминающем устройстве. Устройство управления 5 передает другим устройствам машины Сигналы управления в соответствии с командами, извлекаемыми Шаг за шагом из запоминающего устройства таким образом, чтобы осуществить программу вычисления. Следовательно, мы предполагаем, что выполнение отдельной команды осуществляется в два приема: во-первых, она должна быть извлечена из памяти и помещена временно в специальный регистр1 устройства управления 4, называемый регистром команд; во-вторых, она должна быть интерпретирована или расшифрована, чтобы на ее основании могли быть сформированы управляющие сигналы, воздействующие на арифметическое и запоминающее устройства с целью вы- выполнения определенных элементарных операций. Эти операции должны быть синхронизированы специальным устройством синхронизации, иначе называемым генератором тактовых сигналов. Наконец, оператор должен располагать устройствами, позволяющими, с одной стороны, ввести в машину исходные данные и команды, например с помощью клавиатуры, и, с другой стороны, обеспечивающими возможность ознакомиться с полученными результатами. Эти устройства представляют собой входные / и вы- хддные 6 органы машины, обеспечивающие в известном смысле связь машины с внешним миром. Эти замечания весьма общего характера были сделаны для определения круга вопросов, возникающих при изучении вычислительных процессов на автоматических цифровых машинах. При последующем изложении они будут служить также для формирования некоторых понятий о природе и происхождении различных задач, которые мы будем изучать в дальнейшем. Начиная с этой отправной точки, мы попытаемся шаг за шагом ознакомить читателя с теми теоретическими изысканиями, которые привели к выработке основных принципов работы автоматических вычислительных машин. В этой связи особенно важным представляется убедить читателя, что работа машины проста, логична и естественна, исключая, может быть, трудности произ- * Регистром здесь и В дальнейшем будет называться совокупность запоминающих ячеек, предназначенных для хранения одного числа или одной команды. (Прим. ред.) 2* 11
водственниго характера. Итак, мы последуем совету Декарта и пойдем от простого к сложному, мало-помалу строя" упрощенную1 автоматическую цифровую машину, используя узлы, технология изготовления которых сама по себе проста настолько, насколько это возможно. Ознакомившись, таким образом, с основными задачами автоматических вычислений и принципами устройства цифровой вычислительной машины, мы перейдем к обзору различных элементов и устройств, эффективно используемых в современных машинах. Дав представление о двоичной системе счисления, основной в автоматических вычислениях, мы покажем, как с помощью схем на электромагнитных реле можно легко осуществить такие элементарные операции, как сложение и вычитание. В этой связи мы объясним законы и символику алгебры логики. В дальнейшем нам понадобятся устройства памяти, обеспечивающие возможность извлечения из них в случае надобности данных и необходимую связь с оператором. Рассмотрение основных способов кодирования и программирования дает нам возможность легко перейти к рассмотрению способов передачи информации между различными устройствами машины и объяснить необходимость в запоминающем устройстве для команд, счетчике и дешифраторе команд. Показав необходимость нарушения последовательности программы и предложив средства для ее осуществления, мы сможем установить подробную схему нашей машины и уточнить последовательность операций. Доведя элементарную машину до пускового состояния, мы приступим к детальному составлению программ и рассмотрим несколько характерных примеров. Затем мы скажем несколько слов о входных и выходных устройствах, позволяющих соответственно вводить в машину исходные данные и команды и извлекать из нее конечные результаты. Далее мы перейдем к рассмотрению работы различных узлов машины в порядке, соответствующем их важности, и покажем, как они практически изготовляются на основе современных элементов: германиевых диодов, ферритовых сердечников, ультразвуковых линий задержки, магнитных барабанов и т. д. 1 Мы действительно построили подобную машину, предназначенную для учебных целей, в соответствии с планом Центральной лаборатории я военного училища (CODA или Демонстрационного вычислительного центра армии). Логические функции выполняются в ней с помощью телефонных реле, запоминающее устройство выполнено на двойных триодах Машина содержит 128 регистров памяти, из которых 24 электронных, а 104 используют перфокарты.
Глава первая СТРУКТУРА УНИВЕРСАЛЬНОЙ ЦИФРОВОЙ ВЫЧИСЛИТЕЛЬНОЙ МАШИНЫ ДВОИЧНАЯ СИСТЕМА СЧИСЛЕНИЯ Обычно мы осуществляем вычисления в десятичной системе счисления. Физическое представление какого-либо числа, могущего принимать любые значения от 0 до 9, требует в случае использования этой системы применения устройства, обладающего десятью различными состояниями, каждое из которых будет соответствовать одной из цифр. Это имеет место в клавишных механических счетных машинах, где, например, на цифровых колесах счетчиков или соответствующих устройствах кассовых аппаратов имеется десять цифр. Но современные цифровые вычислительные машины строятся главным образом на электрических, магнитных или электронных, а не на механических устройствах и элементах. Элементы современных цифровых вычислительных машин характеризуются, как правило, наличием двух рабочих состояний; например, это может быть замкнутое или разомкнутое состояние контакта, проводящее или запертое состояние электронной лампы, наличие или отсутствие тока или напряжения в части схемы, намагничивание магнитного материала в том либо в другом направлении и т. д. Именно это обстоятельство и обусловило рождение идеи — использовать в вычислительных машинах систему счисления, построенную на основе числа 2, или двоичную систему счисления. Тем не менее различают два типа машин. Одни работают в чисто двоичной системе, т. е. оперируют с числами, выраженными в двоичной системе.^ причем оператор может игнорировать это обстоятельство — необходим просто автоматический перевод данных, представленных в десятичной системе, в их эквивалент в двоичной системе в момент ввода их в машину и обратное преобразование во время извлечения результата. Другие машины, напротив, работают в десятичной системе, и тогда последовательность цифр в числах, с которыми они оперируют, представляется в двоичной системе или по крайней мере эти машины используют устройства, двоичные по своей основе. ■13
Для простоты будем считать, что изучаемая нами машину работает в чисто двоичной системе. В десятичной системе счисления последовательные цифры лк* бого числа имеют весовые коэффициенты, представляющие co6oJ степени 10, возрастающие справа налево. Таким образом, числ« 1 957 представляется следующим образом: 1 957 = 7 X (Ю)о + 5 X (10)i + 9 X (Ю)2 + 1 X (Ю)8. Двоичная система располагает только двумя цифрами: 0 и 1 Число, выраженное в двоичной системе, представляется в виД{ последовательности степеней 2: 1, 2, 4, 8, 16, 32, 64 и т. д. Сталс быть, двоичное число 1101 имеет смысл 1 X (2)о + 0 X (2)*'+ 1 X (2)2+1Х(2)8 и соответствует, следовательно, числу в десятичной системе: 1 + 4 + 8=13. Табл. 1 содержит перечень 16 первых двоичных чисел и их десятич ные эквиваленты. Таблица 1 Число в десятичной Код в двоичной системе Условное обозначение системе 8 2 1 8 4 2 I 0 0 0 0 0 1 0 0 0 1 1 2 0 0 1 0 1 3 0 0 1 1 1 | 4 0 1 0 0 5 0 1 0 1 ( 6 0 1 1 0 1 7 0 1 1 1 1 | 8 1 0 0 0 9 1 0 , 0 1 1 10 1 0 1 0 1 11 1 0 I 1 1 1 12 1 1 0 0 - 13 1 1 0 1 ■ 14 1 1 1 0 1 15 1 1 1 1 I Отметим чередование 0 и 1 в последовательных столбцах. Правый столбец соответствует младшему разряду. Нули и единицы в нем чередуются через каждый шаг. Следующий столбец содержит попеременно пару 0 и пару 1. Третий столбец справа образован из групп по четыре 0 и по четыре 1. Наконец, левый столбец содержит последовательно группу из восьми 0 и группу из восьми 1. Число цифр каждой группы соответствует весу данного разряда. Эта периодичность условно представлена в таблице линиями и пропусками (крайние правые, колонки). Линия соответствует 1, а пропуск — 0. N В общем виде числа, заключенные между 0 и (2 —1) включительно, можно выразить посредством N двоичных цифр. Точно так же и л десятичных цифр позволяют записать все числа от 0 до (10"—1) включительно. 14
Если наибольшее число из N двоичных чисел равно наибольшему числу из л десятичных чисел, то мы сможем записать: 2N — 1 = 10" —1 , откуда- N logio 2 = п. Следовательно, требуется приблизительно в 3,3 раза больше двоичных цифр, чем десятичных, чтобы выразить одно и то же число. В частности, 10 двоичных цифр обладают емкостью, несколько большей чем емкость 3 десятичных цифр, поскольку 2io= 1 024. ПЕРЕВОД ИЗ ДЕСЯТИЧНОЙ СИСТЕМЫ В ДВОИЧНУЮ Изучим теперь, как можно перевести число, выраженное в десятичной системе, в двоичную систему. Сначала посмотрим, что мы сделали для выделения различных цифр десятичного числа 1 957, начиная с разряда единиц. Разделим это число на 10: 1 957 = 10 X 195 + 7. Остаток 7 представляет разряд единиц. Разделим снова частное на 10: 195=10x19 + 5. Остаток 5 относится к разряду десятков. Наконец, остаток и частное последнего деления на 10 выражают соответственно разряды сотен и тысяч: 19= 10 X 1 +9. Таким же образом, посредством деления на 2 легко образуем в приведенном ниже примере двоичный эквивалент десятичного числа 59: 59 = 2 X 29 + / ; 7 = 2x3 + /; 29 = 2 X 14 + /; 3 = 2x1 + /. 14 = 2x7 + 0; Следовательно, двоичный эквивалент числа 59 запишется как 11011 Проверим, правильно ли это: 1 +2 + 8+ 16 + 32 = 59. Ручной перевод числа из десятичной системы в двоичную значительно ускоряется введением промежуточной восьмеричной системы, т. е. системы с основанием 8. В самом деле, основание этой системы равно как раз третьей степени числа 2 и двоичный эквивалент числа, выраженного в восьмеричной системе, легко получается последовательной записью двоичных эквивалентов каждой из цифр числа, записанных тремя двоичными разрядами. Очевидно что такой перевод легко осуществляется в уме. Следовательно, двоичный эквивалент восьмеричного числа 354 запишется как 011 101 100 С другой стороны, восьмеричный эквивалент какого-либо числа, записанного в двоичной системе, получается разделением цифр числа в группы по три, начиная справа, и записью эквивалентов каждой из этих групп в восьмеричной системе (к тому же одинаковых с их эквивалентами в десятичной системе). Что касается перевода из десятичной системы в восьмеричную, то он легко осуществляется последовательным делением на 8. Применим эти 15
соображения для перевода числа 1 957, записанного в десятичной системе, в двоичную систему. Сначала найдем его восьмеричное представление: 1 957 = ЙХ 244 + 5; 244 = 8X 30 + 4; 30 = 8X5+6. Следовательно, восьмеричное представление числа 1 957 запишется как число 3645 Оно легко переводится в двоичное число 011 110 100 101. Теперь проверим, что 3 645 действительно является восьмеричным представлением десятичного числа 1 957: 5 + 4Х8 + 6Х (8)2 + 3 X (8)8 = 1 957. Точно так же двоичное представление дробного числа, записанного в Десятичной системе, вычисляется последовательным умножением на 2. Целые части последовательных произведений соответствуют последовательности цифр двоичного представления дробного числа. Определим, например, двоичное представление числа 0,58: 0,58X2 ==/,16; 0,16 X 2 = 0,32; 0,32 X 2 = 0,64; 0,64X 2 = /,28; 0,28 X 2 = 0,56; 0,56X2 =/,12. Отсюда результат: 0,100101. В результате умножения на 8 получается таким же образом восьмеричное представление дробного числа, записанного в десятичной системе. Например, для десятичного числа 0,583: 0,583 X8 = 4,644; 0,664 X 8 = 5,312; 0,312X8 = 2,496. Отсюда получается восьмеричное представление 0,452, двоичный эквивалент которого можно записать сразу: 0,100101010. Таким образом, видно, что если мы вправе менять основание нашей системы счисления, то лучше выбрать в качестве этого основания 8, а никоим образом не 12. Основание 12 не дает абсолютно никакого преимущества, разве только облегчает расчеты в. уме. И наоборот, выбор в качестве основания 8 значительно упрощает расчеты, а иногда и отдельные устройства автоматических вычислительных машин, поскольку в этом случае легко обеспечивается последовательное вычисление двоичного представления каждой цифры, 16
СЛОЖЕНИЕ ЦИФР В ДВОИЧНОЙ СИСТЕМЕ, ОСНОВНЫЕ ЛОГИЧЕСКИЕ ОПЕРАЦИИ Таблица сложения имеет в двоичной системе весьма простую форму, а именно: 0 + 0 = 0; 0 + 1-1; 1 + 1 = 10. При сложении двух двоичных чисел система запоминания «в уме» идентична той, к которой мы привыкли, применяя десятичную систему счисления, таким образом 110 1 + 10 11 110 0 0 Займемся сначала сложением двух цифр в двоичной системе, обозначив их а и Ь. Обозначим через 5 цифру наименьшего разряда суммы, а через R — цифру переноса в старший разряд. Таблица сложения, приведенная выше, дает нам возможность составить следующую таблицу для четырех возможных комбинаций значений 0 и 1 цифр а и Ь\ а ь s R 0 0 0 0 0 1 1 0 1 0 1 0 1 1 0 1 Мы сразу замечаем, что Я = 1, если а и Ь одновременно равны 1. Мы замечаем также, что значение R равно обычному произведению а и 6, и, следовательно, мы можем записать: R = a-b (1) а Ь аЪ 0 0 0 0 1 0 1 0 0 1 1 1 17
Заметим, не останавливаясь на подробностях, что эта операция «совпадения» соответствует логической операции «пересечения»1. Значение наименьшего разряда суммы S равно 1, если а или Ь% но не обе сразу, равны 1. Это операция «или исключающее», называемая еще «дилемма»: одно или другое, но не оба. Она соответствует тому, что в арифметике называют «сумма по модулю 2», т. е. остаток от деления суммы на 2. Эта операция записывается как S = a©*. (2) Операцию сложения по модулю 2 удобно выразить с помощью операции конъюнкции («И»), определенной выше, и двух других элементарных логических операций: отрицания или дополнения и дизъюнкции («ИЛИ» включающее). «Отрицание» или «дополнение», которое обозначается чертой сверху, определяется очень просто с помощью следующей таблицы (читают «НЕ а»): а а 0 1 1 0 Операция «дизъюнкция» обозначается символом «V» и задается таблицей: а Ь a v Ь 0 0 0 0 1 1 1 0 1 1 1 1 (а\/Ь) равно нулю, только когда а и Ь одновременно равны нулю. Отрицание (av&) эквивалентно конъюнкции («И») отрицаний а и Ь: _ _ a \jb = а ♦ Ь. Точно так же, если мы обратимся к конъюнкции, мы увидим, что аЬ равно нулю, если или а, или 6, или оба равны нулю. Другими словами, отрицание аЪ эквивалентно дизъюнкции («ИЛИ») отрицаний а и Ь ab —~a\z~b. Возвратимся теперь к выражению для 5. Мы можем записать его двумя различными способами с помощью определенных выше 1 В отечественной литературе чаще применяют название конъюнкция или функция «И» (Прим. ред.). 18
операций. Прежде всего мы видим, что S«l, если а«1 и 6 = 0, если а «О и Ь = 1 (только а или только 6), что записывается как 5 = а-Ъу а-b. (3) Очевидно, что оба члена этого выражения не могут одновременно принять значения 1. Но мы снова можем сказать- 5=1, если а или Ь равны 1, но не а и bt и это запишется как 5 = (а V Ь) (о1>) . (4) Легко обнаружить равнозначность этих двух выражений. Заменим во втором отрицание а - Ь его выражением, полученным выше: 5 = (a v Ь) {а V Ъ). (5) Так как для функций «И» и «ИЛИ» справедливы переместитель- ный и сочетательный законы, можно раскрыть скобки и написать: S = аа у ЬЪ У a b У ~аЬ . Очевидно, что а-а = 0 и b'b = 0, поскольку двоичная переменная не может быть равна одновременно нулю и единице. Не менее очевидно, что в общем виде О v х = х*. Можно, следовательно, исключить два члена а • а и b • b в приведенном выше выражении и сразу получить окончательный результат. В качестве упражнения подвергнем обратному преобразованию выражение (3), представив его теперь в форме конъюнкции дизъюнкций: ab V ab = (a у a) {b V б) (а V Ь) (а У1) . Очевидно, что a у а = 1 и b у ~b= 1 , поскольку двоичная переменная обязательно равна или 0, или 1. С другой стороны, не менее очевидно, что в общем виде 1 •* = JC. Следовательно, в вышеприведенном выражении мы можем исключить две скобки (а У а) и (by Ь) и мы, таким образом, снова получаем выражение (5), эквивалентное (4). ПЕРЕКЛЮЧАТЕЛЬНЫЕ СХЕМЫ НА ЭЛЕКТРОМАГНИТНЫХ РЕЛЕ Покажем теперь, как соответствующее включение контактов электромагнитных реле позволяет очень легко осуществлять рассмотренные выше логические операции. Обмотку возбуждения реле * Видно, что операция V сравнима с операцией за исключением того, что 1 V 1 = 1. 19
а) б) мы будем обозначать строчной буквой, а соответствующей прописной буквой будем обозначать контакты1 этого же реле. Рассмотрим сначала^ показанный на рис, 2, а нормально открытый (т. е. разомкнутый, когда обмотка реле обесточена, и замкнутый* когда она возбуждена) контакт. Если такой контакт управляет возбуждением обмотки Ь второго реле, то эта обмотка будет возбуждена одно- временно с первой: это — операция «тождества»: Ь = а. Рассмотрим теперь нормально закрытый (т. е. замкнутый, когда обмотка реле обесточена, и наоборот) контакт (рис. 2, б). Если этот контакт управляет возбуждением обмотки с реле с, то эта обмотка будет возбуждена, когда обмотка реле а обесточена, и наоборот. Это соответствует операции «дополнения» или «отрицания» с —а. Вот почему в схемах нормально закрытые контакты обозначаются большой буквой с чертой сверху. Одно и то же реле может иметь большое число нормально открытых и нормально закрытых контактов, и именно в этом преимущество релейных схем по отношению к эквивалентным им электронным. В частности, если имеется необходимость получить в одной схеме некоторую переменную и ее отрицание, используют инвертор, показанный на рис. 2,в. Операция конъюнкции легко осуществляется включением последовательно двух нормально открытых контактов А и В (рис. 3): реле г возбуждено, только когда оба контакта одновременно замкнуты, другими словами, если обмотки реле а и Ь одновременчо возбуждены: r = ab = АВ. Следовательно, такая схема обеспечивает перенос при сложении Рис. 2. Схемы эквивалентности и дополнения на электромагнитных реле. 1 В наших схемах контакты всегда представлены в их рабочих состояниях, нормально открытые — разомкнутыми и нормально закрытые—замкнутыми. Кроме того, когда гоказаны обмотки, их положение не связано с соответствующими контактами; понятно, что когда обмотка реле возбуждена, его нормально открытые контакты замыкаются, в то время как нормально закрытые контакты размыкаются. 20
Рис. 3. Схема конъюнкции («И») c-avb - A v8 Рис 4 Схема дизъюнкции («ИЛИ») 9 А В s -CZb -л- А В s-abvab Рис. 5. Схема суммирования по модулю 2
двух Двоичных цифр. Точно так Же Дизъюнкция («ИЛИ») получает* сп в результате параллельного включения двух нормально открытых контактов А и В (рис. 4). Достаточно, чтобы один из двух кон- Рис. 6. Другая схема суммирования по модулю 2. + Рис. 7. Другая схема суммирования по модулю 2. тактов был замкнут (обмотка одного из двух реле возбуждена), чтобы обмотка реле с была также возбуждена. Рассмотрим теперь операцию сложения по модулю 2, которая соответствует формированию цифр суммы двух двоичных чисел. Сначала используем выражение (3) (рис. 5, а). Член а*Ь получается последовательным включением нормально открытого А и 22
нормально закрытого В контактов; точно так же член а*Ъ получается в результате включения последовательно нормально за» крытого контакта А и нормально открытого контакта В. Наконец, полное выражение 5 получится при параллельном включении этих двух схем. Схема упрощается применением двух инверторов (рис. 5,6). Очевидно, что цепь замкнута и обмотка реле 5 возбуждена, если только одно из двух реле возбуждено. Воспользуемся теперь выражением (5), которому соответствует рис. 6, а. В этом случае можно снова выгодно использовать два инвертора (рис. 6,6). Но эта схема не обладает никакими достоинствами по сравнению со схемой на рис. 5,6. Наконец, попытаемся реализовать формулу (4). Чтобы это сделать, нам необходимо одно дополнительное реле с, снабженное одним нормально закрытым контактом и возбуждаемое при а • Ь (рис. 7). Однако эта схема хуже двух предыдущих. ДВОИЧНЫЙ СУММАТОР Мы видели, как строится релейная схема, способная выполнить сложение двух двоичных цифр. Однако такая схема не является двоичным сумматором. Действительно, перенос, получающийся при сложении цифр от предыдущего разряда, может добавляться к сумме двоичных цифр каждого данного разряда. Таким образом, получаются уже 3 двоичные цифры, которые должны быть сложены. Сумматор на двух полусумматорах. Первое решение состоит в осуществлении операции в два этапа (рис. 8,а). Для двоичного разряда п начинают со сложения двух цифр ап и Ьп этого разряда: здесь получается перенос ап • Ьп и сумма по модулю 2 будет: cn = an®bn = anbn V "апЬп . Затем на втором этапе добавляют к сумме перенос гп_^{ » полу-' чающийся от предшествующего более низкого разряда1. Так получаются окончательный результат Sn и второй перенос {an@bn) r„_j_i Видно, что два переноса взаимно исключаются, потому что нельзя одновременно иметь ап • Ьп (ап и Ьп) и ап ®Ьп(ап или Ьп, но не обе одновременно). Стало быть, их можно объединять без предосторожностей. Природа этой операции оправдывает название полусумматор, данное схеме сложения двух двоичных цифр, поскольку необходи- 1 Видно, что мы нумеруем последовательность цифр тем же номером слева направо, т. е. в направлении, в котором мы обычно пишем числа. Таким образом, лри этом условии порядок индикации обратен порядку нумерации разрядов. Следовательно, перенос rn_j_i является результатом предыдущего разряда п, нами рассматриваемого. Это может быть и не очень логично, но нужно выбирать между этой нелогичностью, соответствующей нашим привычкам, или логикой, соответствующей нумерации цифр в порядке, обратном их обычной записи, что немногим более удобно. 23
мо использовать две подобные схемы для построения полного сумматора. На рис. 8,6 представлена принципиальная релейная схема, осуществляющая эту операцию. Эта очень простая схема обладает тем не менее серьезным неудобством. В релейных схемах стараются всеми возможными способами добиться такого положения, когда Ьп dnbn все контакты принимают необходимые состояния до подключения к ним тока. Это возможно для реле ап и Ьп , но не для реле переноса гп+у Перенос от разряда п может быть правильным только после того, как предыдущий разряд принял определенное значение. Он в свою очередь может изменять перенос в последующий разряд и т. д. В наиболее неблагоприятном случае перенос, образованный от сложения двух цифр наименьших разрядов, может распространиться до старших разрядов: 111111 +000001 10 0 0 0 0 0 24
Переключение контактов реле происходит не мгновенно. Исключая, таким образом, особые положения, нужно предусмотреть при сложении двух двоичных чисел из п цифр промежуток времени, соответствующий срабатыванию п последовательных реле. Сумматор с тремя входами. Посмотрим теперь, как можно устранить этот недостаток с помощью схемы, в которой сигнал переноса представлен не состоянием реле, а замыканием или размыканием цепи переноса, связывающей между собой отдельные каскады. Общая схема такого сумматора показана на рис. 9. Два последовательных каскада объединены двумя линиями R и /?. Од- Rn+2 Rn+1 Рис. 9. Принцип действия двоичного сумматора на реле с одновременным запоминанием. на из них, смотря по тому, имеется ли необходимость в переносе, находится под напряжением. Начнем с составления таблицы различных возможных комбинаций трех цифр а , Ь и г , обращая основное внимание на п п П-\-\ наличие или отсутствие гп_^г t а п К гп+1 п г я 0 0 0 0 0 0 1 0 1 0 1 0 0 1 0 1 1 0 0 1 0 0 1 1 0 0 1 1 0 1 1 0 1 0 1 1 1 1 1 1 Изучение таблицы позволяет нам сразу написать: S„ = rn+i( а„Ьп V ап Ьп) v 7a+l (anbnv \Ьл) ; (6) г» =ЧЛ v rn+i («„£. V аяЬя); (7) \ =Л> Ьп V >п+, ( ап Ъп v а„ Ьп) . (8) 25
В выражении (7) можно заметить, что значения гп в четвертой и восьмой строках таблицы определяются членом ап Ьп . Точно так лее член ап Ьп выражения (8) определяет значения гп в первой и пятой строках. Чтобы убедиться в этом, запишем, например, выражение, составленное для гп у читая таблицу строка за строкой: rn = апЬп T^i V~~ bn гя+, V ап bn rn+l V[anbnrn+I . /I» V V A [sn * Rn., (anbn V an b„) V Лл+/ (апЪпУ йпbn) Rn = anbn V fi„+f (anbn Man bn) [KnmanbnV fi^l, (anb„ Vanb„) Рис. 10. Каскад двоичного сложения на реле. Перегруппируем члены: rn ~anbn( rn+l V ^) V гл+1 ( ап Ьп V ап Ьп) Подставляя сюда очевидное соотношение 1, получаем выражение (7). 26
Отметим, наконец, что перенос в самый младший разряд всегда равен нулю. Итак, если мы оперируем над числом из N двоичных цифр, мы запишем: На рис. 10 показан каскад двоичного сумматора на реле. Эта схема, являясь реализацией уравнений (6)—(8), тем не менее дает экономию в числе операций, поскольку сигнал Sn может быть получен с помощью одного единственного инвертора Ьп , Хорошо • а) Хорошо б) Плохо Рис. 11. Условные обозначения: два провода, пересекающиеся и не имеющие электрического контакта (а); четырехполюсное соединение (б). Обозначение (в) не используется в этой книге. Повторим, что в этой схеме значение 1 или 0 переменных г^+1 и г j соответствует не состоянию контактов реле, а наличию или отсутствию тока в соответствующих линиях Я j 11 ^я+Г пеРеДаюи*их сигнал переноса, полученный в предыдущем каскаде. Именно состояние контактов этого каскада, так же как и характер переноса, который он получает с предшествующего ему каскада, определяют, какая из этих двух линий находится под напряжением: Rn+\, если имеется новый перенос, и Rn+\ —в противоположном случае. В такой схеме значения всех сигналов переноса и, следовательно, сигналов суммы устанавливаются сразу после того, как реле а и Ь всех каскадов принимают соответствующие состояния. : Схемы, реализующие члены в скобках при г п_ц или гп+{ , питаются, следовательно, от линий Rn+\ или Rn+\ , в то время как схемы, соответствующие членам апЬп и ап Ьп, подключены прямо к зажиму источника питания, предполагаемому здесь положительным. Сделаем еще одно замечание относительно схемы рис. 10. Мы не отметили на ней черными кружками точки соединения проводов. Мы не будем делать это также и в дальнейшем, ибо очень легко забыть одну или две точки на репродукции чертежа, который станет тогда непонятным. Такой способ начертания схемы приводит к двусмысленности только в случаях пересечения проводов. На 27
рис. 11 показаны два провода, пересекающиеся без контакта (рис. И, а), и соединение, представленное согласно принятому и, к сожалению, нормализованному обозначению (рис. И, в). С нашей стороны мы запретим себе пользование обозначением по рис. 11, в и будем представлять соединение четырех проводов всегда так, как показано на рис. 11, б. Использование точек становится тогда совершенно ненужным. Хочется высказать пожелание, чтобы правила, описанные выше, в скором времени были изменены. ВЫЧИТАНИЕ В действительности проблема вычитания сводится к проблеме представления отрицательных чисел. Здесь можно предложить два разных способа. Первый из них, называемый «чисто алгебраическим представлением», заключается в выражении абсолютного значения и знака обычным способом. Знак, как и цифры, является двоичной переменной. Этот способ очень удобен для операций умножения и деления, поскольку достаточно оперировать с произведением или с частным абсолютных значений и добавлять знаки обычным образом. Напротив, он неудобен для алгебраического сложения или вычитания, так как нужно начинать со сравнения двух абсолютных величин, чтобы знать, какое из двух чисел должно вычитаться из другого. Второй способ, называемый «смешанным алгебраическим представлением», использует дополнительный код, и это вынуждает нас прежде всего уточнить положение запятой. Положение запятой может быть выбрано произвольно.. Тем не менее по различным причинам, которые будут ясны из последующего, удобно представлять себе ее справа от старшего двоичного разряда, другими словами, оперировать с абсолютными значениями чисел, меньших единицы. Это, очевидно, приводит к выбору подходящего масштаба для переменных исследуемой задачи. Однако мы увидим в дальнейшем, что это неудобство может быть преодолено применением так называемой «плавающей запятой». Для уяснения сути ограничимся 5-разрядными двоичными числами. Пусть, например, имеется число 0,1101. Веса цифр, расположенных справа от запятой, представляют собой последовательность отрицательных степеней 2: JL j__ j_ j__ 2 ; 4 ' S 1 16 или иначе JL _1_.J_._L 16 ' 16 ' 16 ' 16 Таким образом, записанное выше является двоичным эквивалентом 13/16. 2Я
Дополнительный код: вычитание. Рассмотрим снова число 0,1101 и прибавим к нему двоичный эквивалент 2: 0,1101 + 10,0000 10,1101 Машина не учитывает второй двоичный разряд слева от запятой (разряд 2) и, следовательно, исходное число не претерпевает каких-либо изменений после этой операции. Выполним теперь операцию (а^Ь), где а и Ь — числа, меньшие единицы. Результат этой операции в двоичной системе счисления будет представляться так же, как и результат операции: 2 + (а — Ь) или а + (2 — Ь). Отсюда мы видим, что для вычитания числа Ь из числа д достаточно прибавить к числу а дополнение до 2 числа Ь. Возникает вопрос: как удобнее получить это дополнение. Исследуем дополнение числа 0,1101 до 2 или его двоичного эквивалента 13/16: 10,0000 -0,1Ю1 1,0011 Последнее число является двоичным эквивалентом числа 19/16, которое дополняет число 13/16 до 2. Цифра слева от запятой характеризует знак: 0 для положительного числа, 1 —« для дополнения положительного числа до 2, которое служит нам для представления того же числа с измененным знаком. Вместо дополнения до 2 найдем дополнение до наибольшего числа, которое мы смогли бы выразить теми же пятью двоичными цифрами, т. е. до 1,1111. Это последнее число является двоичным эквивалентом числа 2 — ——или в двоичной записи: 16 10,0000 -0,0001 1,1111 Итак, найдем дополнение числа 0,1101 до 1,1111 1,1111 -0,1101 1,0010 Этот дополнительный код назван «дополнительным ограниченным»1 в противоположность «дополнительному истинному» или дополни- 1 В отечественной литературе такой код получил (название «обратный». Этим словом мы будем пользоваться в дальнейшем. (Прим. ред:) 29
тельному до 2. Образовать его обычно легче, поскольку для этого нужно просто заменить 0 на 1 и наоборот. После сказанного ясно, что дополнительный код образуется прибавлением к обратному коду одного младшего разряда: К. О. 0,1101 1,0010 + 0,0001 К. Д. 0,1101 1,0011 Проще можно сказать, что дополнительный код получается последовательным инвертированием цифр, начиная с высшего разряда (т. е. слева в нормальном написании) и вплоть до самого младшего значащего разряда, который остается неизменным. Применим эти соображения для образования двоичного кода разности 13 7 \ — — — . Двоичный код 7/16 запишется, как 0,0111. Образуем 1о 16 / его дополнительный код с помощью обратного кода: К. О. 0,0111: 1,1000 +0,0001 К. Д. 0,0111: 1,1001 Прибавим полученное число к двоичному коду числа 13/16: 0,1101 + 1,1001 10,0110 Так как мы не учитываем второй двоичный разряд слева от запятой, результат будет равен 0,0110. Это и есть двоичный код разности 6/16. /7 13 \ Осуществим теперь «обратное» вычитание! — — ^ля это" го прибавим к двоичному коду числа 7/16 дополнение к 13/16, которое мы образовали выше: 0,0111 + 0,0011 1,1010 Единица слева от запятой характеризует отрицательное число, абсолютное значение которого мы найдем, определяя его дополнительный код: К. О. 1,1010: 0,0101 + 0,0001 К. Д. 1,1010: 0,0110 Легко находим искомое абсолютное значение 6/16. 40
Рис. 12 определяет соответствие между отрицательными числами и дополнениями до 2 их абсолютных значений. Пять двоичных разрядов позволяют нам представить все числа с четырьмя цифра- / 1 \ ми после запятой, заключенные между 0 и 1,111112— —I.Мы поделили это множество чисел на две части: часть, заключенную между 0 и 0,1111^1—которую мы предназначаем для положительных чисел, меньших единицы, и часть, заключенную между 1 I 11 1 i Рис. 12. Соответствие между отрицательными числами (включая — 1) и их дополнениями до 2 1 i § -1 ш» Щ Рис. »13. Другое возможное соответствие между отрицательными числами (—1Г исключено) и их дополнениями до % I и 1,1111, образующую дополнение абсолютных значений отрицательных чисел, заключенных между —0,0001 и —1, до 2. В этой системе «—1» представляется, следовательно, числом 1,0000, которое, очевидно, является его дополнением до 2. Цифра «1» слева от запятой, которая, как мы отметили, характеризует отрицательные числа, остается, таким образом, без изменения. Но число «-М» не может быть представлено, наибольшее представи- 15> мое положительное число будет 0,1111 ^— Если мы должны представить число «+1», нужно установить соответствие, схематизированное на рис. 13, на котором число *-Н» записано как 1,0000. Но тогда число «—1» больше не будет 31
пред ставимым, наименьшее отрицательное число —0,1111 представляется как 1,0001. Последняя система неудобна, так как вводит исключения в интерпретацию цифр слева от запятой. ДВОИЧНЫЙ СУММАТОР-ВЫЧИТАТЕЛЬ НА РЕЛЕ (|рис. 14) Сказанное выше позволяет нам легко получить разность а—Ь двух чисел с цифрами ап и Ьп. Эта разность получается, как мы это только что видели, прибавлением к а дополнения Ь. Но можно также (это более просто с технической точки зрения) прибавить к а обратный код Ъ и к полученному результату прибавить единицу младшего разряда. Эта последняя операция получается автоматически, если при сложении сообщить сигналу переноса в младший разряд значение 1 вместо 0 [см. уравнение (9)]. Итак, если мы оперируем с числами из N двоичных цифр, мы будем иметь для вычитания1: Что касается образования обратного кода, то он__легко получается для каждого двоичного разряда подстановкой Ьп вместо Ьп, и наоборот, в соответствии с уравнениями (6), (7) и (8), откуда для разряда sn « r^Ti ( % bn v ап bn) v rn+1 ( an bn V an bn); (11) Образование обратного кода достигается с помощью подключения трех дополнительных инверторов. Нормально открытые контакты инвертора вычитания связываются с нормально закрытыми контактами инвертора сумматора, и наоборот. Соответствующие схемы представлены на рис. 14. Коммутация между выходами сумматора и вычитателя обеспечивается реле аСу обмотка которого должна быть возбуждена при вычитании и обесточена при сложении. Обмотка этого реле будет возбуждаться в надлежащий момент от дешифратора команд. Инвертор Ас коммутирует операции для младшего разряда или разряда ранга N в соответствии с уравнением (6) для сложения и уравнением (10) для вычитания. В каскаде старшего разряда (разряда ранга 0) цепи образования переноса могут быть упразднены. Тем не менее может быть выгодным использовать линию R$ для приведения в действие схемы сигнализации (аварийной схемы), которая показывает, что емкость устройства превышена и автоматически останавливает машину. Другой вид сумматора-вычитателя. При использовании реле и диодов получается значительно более простая схема, показанная на рис. 15. Восемь возможных комбинаций зна- 1 Точнее, коррекция младшего разряда суммы необходима в тех случаях, когда второе слагаемое имеет отрицательный знак. (Прим. ред.) 32
3—895 33
чений трех переменных а , Ь ' и г ,, приведены в таблице на П П /1+1 этом рисунке. Для каждой из комбинаций возбуждается одна из восьми вертикальных шин, пронумерованных на рис. 15 от 0 до 7, как и строки в таблице. Рассмотрим, например, комбинацию 4. Qn л Л^Л АЛ. А АА А А А Л А А АЛЛ А £-£-5. АЛ Ал. -Л Ьп п 4\sn к ап Ьп Vfi К 4 s7 R7 0 0 0 о 1 0 0 1 0 4 0 0 1 1 0 0 i 1 0 1 о 1 0 0 0 5 0 1 1 0 1 1 0 2 1 0 0 1 0 0 1 6 1 0 1 0 1 1 i 3 1 1 о 1 0 1 1 0 7 1 1 1 1 1 0 0 Рис. 15. Сумматор-вычитатель на реле и диодах. Из таблицы видно, что при этой комбинации должны быть под напряжением R% и R~ Ясно, что связь между шинами не может осуществляться простым соединением точек, так как тогда ток может распространиться по одной из горизонтальных шин до другой вертикальной шины и по ней к другой горизонтальной, которая ошибочно окажется под напряжением. Однако можно осуществить соединения, указываемые таблицей с помощью диодов, пропускающих ток только в направлении от вертикальных шин к горизонтальным. Результаты сложения или вычитания в соответствии с сигналами дешифратора команд коммутируются контактами реле ас. Отсюда видно, что «матричная» схема «коммутации» или «кодирования» имеет большие преимущества. 34
РЕГИСТРЫ ПАМЯТИ; ПЕРЕДАЧИ Выше мы рассмотрели способы построения на реле основного вычислительного блока — арифметического устройства, способного выполнять операции сложения и вычитания, на базе которых можно осуществить все остальные арифметические операции. Но нужно также иметь возможность временно хранить числа а и Ь в специальных устройствах, способных надлежащим образом выдавать управляющие сигналы на реле ап и Ъп последовательных каскадов. Аналогичное устройство должно быть предусмотрено также для запоминания результатов вычисления. Итак, мы видим, что появляется необходимость в новой операции—операции запоминания. Будем называть «регистром» устройство, способное хранить УУ-разрядное двоичное число. СодтояниеО — -\- -f- ii—j — — I Состояние t s\i it: Команда на сброс Рис. 16.. Условное обозначение зап0)минаю- щей ячейки. Таной регистр должен состоять из узлов или двоичных ячеек, обладающих возможностью принимать одно из двух определенных состояний (и только двух), характеризующих соответственно цифры 0 и 1. В дальнейшем мы перейдем к обзору различных физических явлений, позволяющих осуществлять подобную элементарную память. Пока будем считать, что существует некоторый элемент, символически изображенный на рис. 16 в виде комбинации из двух частей, способных принимать либо состояние «+», либо состояние «—», причем состояние одной части всегда противоположно состоянию другой. Состояние « Ь», например, будет представлять цифру 0, а состояние «Н »— цифру 1. Если питать обмотку реле выходным сигналом левой части такого элемента при состоянии 1, это реле будет возбуждено, а при состоянии 0 — обесточено. Кроме того, каждая часть обладает входом для управляющего сигнала. Допустим, что для того, чтобы перевести этот элемент из состояния 0 в. состояние 1, достаточно подать на короткое время на вход его левой части положительный потенциал («+»). Наоборот, переход из 1 в 0 осуществляется подачей на этот зажим отрицательного потенциала («—»). Тот же результат будет получен при противоположном действии на правую часть. Очевидно, отсутствие подобных манипуляций оставляет систему в неопределенном состоянии. Принцип действия описанного элемента аналогичен принципу действия электронного триггера, состоящего из двух ламп, соединенных так, что система обладает двумя стабильными состояния- 3* 35
ми, в каждом из которых одйа лампа проводит в то время, когда другая заперта. Система меняет свое состояние, если положительный импульс подается на сетку запертой лампы или отрицательный — на сетку проводящей лампы. Но не будем углубляться в электронику и вернемся к нашей схематической модели. Для передачи числа с какого-либо регистра Ri на регистр R2 (рис. 17) достаточно замкнуть на мгновение контакты С, управляемые реле с. Очевидно, что передача осуществляется только в направлении стрелок и что, следовательно, состояние регистра R2 изменяется под воздействием регистра Ri. Примени- р р р р Ft I Г Ус Ус Ус Ус ШШ ШВ ШВ ЕШ 2 ЕШШШЗШ Рис. 17. Передача между двумя регистрами замыканием контактов С. тельно к этой операции говорят, что содержимое регистра R\ «считывается» и «записывается» в регистре R2. Итак, видно, что основные свойства регистра состоят, с одной стороны, в способности заменять свое содержимое на новое при записи и с другой, при считывании сохранять его неизменным. В автоматической цифровой вычислительной машине исходные данные задачи, так же как и промежуточные результаты, хранятся в запоминающем устройстве, часто содержащем весьма большое число регистров — несколько десятков тысяч, например. Регистры не соединены между собой непосредственно. Они связываются с регистрами арифметического устройства с помощью набора шин р (рис. 18), количество которых равно количеству цифр в рассматриваемом числе. Таким образом, для передачи числа из регистра/? на регистр А нужно замкнуть контакты RL и АЕ> вызывая тем самым соответственно считывание из R и запись в А. Обратное соединение получается в результате замыкания контактов считывания AL и записи RE. На рисунке символов (А) обозначено содержимое регистра А. Запоминающая ячейка на реле. На рис. 19 в качестве примера показано, как можно построить запоминающую ячейку с помощью двух реле р и q, одно из которых р имеет две обмотки р\ и р2. Шина, которая ему соответствует, состоит в этом случае из двух проводов, один из которых находится под положительным 36
напряжением, а другой — под отрицательным. Положение, представленное на рис. 19, соответствует нулевому состоянию шины. Таким образом, если замкнуть контакт считывания L, шина будет в том же состоянии, что и реле р, не изменяя состояния самого реле. Если замкнуть контакт записи £, в то время, когда шина находится в состоянии 0, обмотка реле q оказывается возбужденной, контакт Q Аг° V 1 (R) -~а Рис. 18. Передача между двумя регистрами посредством набора шин. размыкается и реле р оказывается обесточенным, если оно было предварительно возбуждено. Наоборот, если шина находится в состоянии 1, реле р оказывается возбужденным по обмотке ри и блокирующий контакт р2 замыкается. Контакт Q замкнут, поскольку реле д не возбуждено. Обмотка р2 находится при этом под напряжением, и контакты р сохраняют свое состояние, противоположное показанному на рис. 19, после размыкания контакта записи Е. Устройство счетчика. Довольно часто оказывается необходимым заменять операцию сложения двух чисел операцией сложения многих чисел или сальдирования. Предположим, что подобный случай имеет место в нашей гипотетической машине. Накапли- 37
Рис. 19 Запоминающая ячейка на реле. вающим счетчиком называется устройство, обладающее собственным регистром А, к содержимому которого прибавляются все поступающие по входным шинам числа. Таким образом, можно подсчитывать сумму последовательности чисел, посылая их одно за другим да вход накапливающего счетчика. Начиная с этого момента, будем предполагать, что наша машина работает с 10-разрядными двоичными числами1, включая разряд слева от запятой. Операция счета производится в два приема -(рис. 20). В момент tu когда зажим «+» сумматора-вычитателя находится под напряжением, содержимое регистра А и число, передаваемое в этот момент шинами, формируются и записываются в дополнительный регистр Л', так как контакты X' тогда замкнуты. Затем в момент t2, когда реле х? находится под напряжением,чконтакты X' размыкаются, отсоединяя регистр А' от схем счета, а контакты X' замыкаются, вызывая перенос содержимого А' в А. Питание реле х' осуществляется через контакт X, замыкаемый только для некоторого числа определенных операций. Очевидно, контакты AL и АЕ позволяют в соответствующий момент считать содержимое регистра А или записать в него число, взятое из запоминающего устройства. Впервые на примере этой схемы мы сталкиваемся с последовательностью действий при выполнении одной операции. В дальнейшем мы еще более убедимся в том, какую важную роль играет разделение циклов работы цифровых вычислительных машин на отдельные последовательные фазы. Организация запоминающего устройства (рис. 21). Предположим, например, что запоминающее устройство состоит из 64 регистров по 10 ячеек каждый (рис. 21), пронумерованных от 0 до 63. Между прочим, такая емкость совершенно недостаточна для реальной вычислительной машины. Входы «считывание» и «запись» регистра с номером i могут быть связаны с шинами через контакты Ljh £*.Эти контакты управляются обмотками // и в{. Для работы с таким запоминающим устройством необходимо обеспечить выбор данного регистра и осуществление операций считывания и записи. Для этого каждая пара обмоток // и et связана, с одной стороны, с одной из линий S/, выходящих из коммутатора запоминающего устройства, а с другой стороны — с .парой контактов МL и МЕ, общих для всех обмоток. Работа коммутатора, которую мы сейчас будем изучать, такова, что линия 5/, соответствующая выбранным данным, должна находиться под 1 В реальных машинах числа, с которыми оперирует машина, содержат много десятков двоичных цифр. за
напряжением. В этот момент данные считываются либо записываются, смотря по тому, замкнут ли контакт считывания ML, который замыкает цепь обмотки lt , или контакт записи МЕ, который замыкает цепь обмотки е/. Состояние всех других элементов запоминающего устройства остается неизменным. Коммутатор. Порядковый номер регистра в запоминающем устройстве называется его «адресом», другими словами, он определяет его расположение в устройстве. Адрес, заключенный между Рис. 20. Общая схема арифметического устройства. 0 и (2^ —1) выражается с помощью р двоичных цифр, которые можно записать в регистре из р ячеек, каждая из которых воздействует на обмотку реле. В нашей гипотетической машине р = 6 (действительно, 2е = 64). Следовательно, наш регистр коммутатора содержит шесть ячеек, питающих шесть обмоток реле, обозначенных на рис. 23 от /я4 до В дальнейшем мы покажем основание для подобной нумерации. для упрощения изучим работу коммутатора на восемь положений от So до S7, управляемого тремя реле (т0, тх и т2), связанными^ с регистром, имеющим емкость три двоичные цифры (рис. 22). Работа коммутатора должна описываться восемью переключательными функциями: «So — niQ m-i ni2', Si = ttiQ тп\ ш% \ 39
S% = fflQ ПХ\ ffl2 \ S3 = mQ mi m<i; «S4 = mo n%\ Ш2 55 ~ /По Шх n%2 *, 56 = mo mi /7Z2; Sq = /По /Hj /П2 . Левые части представляют собой состояния реле для каждого из состояний регистра, соответствующих числам от 0 до 7. Эта система уравнений реализуется, как это легко (Проверить, пирамидой контактов, показанной на рис. 22. А А Рис. 21. Запоминающее устройство. Замыкание одного из (контактов или МЕ, управляемых дешифраторами, обеспечивает соединение зажимов считывания или записи ячейки соответствующего регистра с выходом переключателя, находящимся под напряжением. 40
Действительно, контакты М0 могут быть общими для линий So — S3, а контакты MQ— для _линий 5'4 — S7. Также первый контакт Mt может быть общим для линий S0 и Si, а первый контакт М — для линий S2 и S3, между тем как второй контакт Mi может быть общим для линий 64 и S5, а второй контакт Mi — общим для линий Se и 57. И наконец, оче- Д7; MS Рис. 22. Восьмиканальный дешифратор. $ О S1 S2 S62 $63 Рис. 23. 64-канальный дешифратор и его запоминающее устройство. видно, нужно столько же контактов, сколько имеется пар выходных шин. Тут мы видим первый пример уменьшения числа контактов, которое может быть достигнуто после систематического изучения системы переключательных функций, подобной системе, приведенной выше, и определяющей работу коммутатора. Из сказанного ясно, как перейти к схеме из 6 реле с 64 выходами (рис. 23). Шесть реле, пронумерованных от 4 до 9, по причине, которая станет ясной из дальнейшего, питаются от специального регистра, называемого «регистром адресов», MS, в который предварительно записываются адреса, поступающие в коммутатор. 4—895 41
ПОНЯТИЯ КОДИРОВАНИЯ И ПРОГРАММИРОВАНИЯ Теперь мы располагаем простыми арифметическим и запоми- нающим устройствами. Мы умеем осуществить передачу в регистр А арифметического устройства числа, адрес которого записан в регистре MS замыканием контактов лЕ, арифметического устройства и контактов М запоминающего устройства. Можно также передать содержимое регистра арифметического устройства в регистр запоминающего устройства с адресом, обозначенным в MS, замыкая контакты AL<1 и МЕ. Операция сложения числа, извлекаемого из запоминающего устройства, с содержимым регистра арифметического устройства требует замыкания контактов ML t которые соединяют выходы «считывание» избранного регистра с набором шин, и замыкания контакта А', который в свою очередь включает арифметическое устройство. Осуществление операции вычитания требует, кроме того, переключения контактов Ас арифметического устройства. Нам остается посмотреть, как и в какие моменты эти различные операции производятся; другими словами, мы должны теперь изучить конструкцию устройств управления. Изучение кодирования и программирования позволит нам выделить те действия, которые должны осуществляться этими устройствами. Вычислительная машина способна осуществить ограниченное количество элементарных операций, заданных заранее, каждая из которых соответствует выполнению данной команды. Перечень команд, который машина способна интерпретировать и выполнить, составляет ее словарь. Каждая команда обозначается порядковым номером, позволяющим ее опознать. Например, в двоичной системе счисления число из четырех цифр позволяет определить одну из шестнадцати команд. Набор команд, соответствующий решению данной ^ задачи, образует программу. Для удобства программиста, который составляет эту программу на листе бумаги, перед тем как передать ее в машину, каждой команде полезно сопоставить букву, называемую часто «рабочей буквой». Можно рассматривать соответствующий порядковый номер1, как двоичный эквивалент этой буквы. Но указание кода операции недостаточно для выполнения элементарной операции. Необходимо задать также адрес регистра запоминающего устройства, хранящего число, над которым будет выполняться операция. Полная команда состоит, следовательно, из кода операции и адреса, выраженных посредством их двоичных эквивалентов. Программист на листе бумаги обозначает каждое действие посредством буквы, таким же образом он пишет адрес в десятичной системе. Входные устройства машины будут выполнять перевод этих указаний в двоичную систему. Мы, таким образом, видим, что в нашей релейной машине команда выражается 1 Двоичное число, обозначающее данную команду, получило название «кода операции». В дальнейшем мы будем пользоваться этим термином. (Прим. ред.) 42
с помощью 10 двоичных цифр: 4 для кода операции (разряды of О до 3) и 6 — для адреса (разряды от 4 до 9). Теперь мы видим, почему мы обозначили цифрами 4—9 реле управления нашего коммутатора. В начале этого параграфа мы рассмотрели четыре элементарные операции, которые теперь полезно уточнить, придавая каждому коду операции его двоичный эквивалент: Ля(Л=сложение 0001): добавить содержимое регистра с адресом п к содержимому регистра арифметического устройства и сохранить в этом регистре полученную таким образом сумму. 5/г(5=вычитание 0010): вычесть содержимое регистра с адресом п из содержимого регистра арифметического устройства и сохранить разность в этом регистре. #/г(/?=замена ООП): заменить содержимое регистра арифметического устройства содержимым регистра запоминающего устройства с адресом п. 7л(Г=передача 0100): заменить содержимое регистра с адресом п содержимым регистра арифметического устройства. Это очень йростой перечень, который мы будем дополнять в дальнейшем новыми командами. Отметим при этом, что требуемые для выполнения операций числа должны определяться не численными значениями, а только адресом в запоминающем устройстве. Дадим пример применения перечисленных команд. Предположим, что мы хотим выполнить следующую операцию: а + Ь — с = d . Числа а, Ь и с записаны предварительно, например в регистрах 20, 21 и 22. В дальнейшем мы будет обозначать содержимое регистра его адресом, заключенным в скобках. Если, кроме того, результат операции должен быть записан в регистре 23, то будет справедлива следующая запись: (20) + (21)- (22) -> 23. Это вычисление будет осуществлено выполнением следующей программы, объясняемой строка за строкой: Команды Пояснения Сокращенно R 20 А 21 5 22 Т 23 Поместить (20) в регистр арифметического устройства Сложить (21) с содержимым регистра арифметического устройства: образование (20) + (21) Вычесть (22) из содержимого регистра арифметического устройства: образование (20)+ (21) —(22) Передать содержимое регистра арифметического устройства в регистр (23) (20) - А (А) + (21)- А (А) -(21) -+А (А) - 23 4» 43
Теперь необходимо выяснить, в каком виде команды этой программы вводятся в машину. Чтобы работа была автоматической, перед началом выполнения программы команды помещаются в запоминающее устройство, например по адресам 0, 1, 2 и 3, а устройство управления обеспечит их последовательное выполнение в надлежащем порядке. Теперь мы понимаем, почему было введено условие, чтобы команды и числа содержали одно и то же число двоичных цифр (10 в данном случае). Само запоминающее устройство без помощи устройств управления не имеет средств для различения команд и чисел. Вот почему иногда дают общее название «слова» как числам, так и командам. Отметим еще, что рассмотренная выше система команд, в которой каждая команда имеет только один адрес, называется по этой причине «одноадресной». В действительности четыре рассмотренные до сих пор операции выполняются над двумя числами с образованием одного результата. Адреса второго числа и результата неявно содержатся в редакции команды: в рассмотренных командах это регистр арифметического устройства. Точно так же видно, что за исключением специальных случаев команды программы выполняются в порядке их записи в запоминающем устройстве. Мы увидим далее, что кроется за этим ограничением. Существуют также двухадресные системы команд, команды которых содержат указания адресов двух слов, и трехадресные системы команд, которые определяют, кроме того, адрес результата операции. С другой стороны, некоторые системы не предусматривают последовательного выполнения команд, и каждая их команда содержит адрес следующей команды. ПРИНЦИПЫ ПОСТРОЕНИЯ УСТРОЙСТВ УПРАВЛЕНИЯ (рис. 24) Из предыдущего следует, что выполнение каждой команды программы должно соответствовать двум различным фазам. В течение первой, называемой «фазой команды», команда, подлежащая выполнению, извлекается из запоминающего устройства и помещается временно в специальном регистре, называемом регистром команд (All на рис. 24). Во время второй фазы (назовем ее «фаза числа») команда, содержащаяся в этом регистре, истолковывается и, как говорят, «дешифруется» и выполняется. Адрес команды, которая должна выполняться во время фазы команды1, указывается счетчиком, называемым «счетчиком адресов команд» (СО на рис. 24). Содержимое этого счетчика увеличивается на единицу в начале каждой фазы числа таким образом, чтобы быть готовым к управлению последующей фазой команды. Перед пуском машины в ход в этот счетчик записывается адрес первой по порядку команды (0 в случае программы, рассмотренной выше). Последовательность фаз задается блоком синхронизации или генератором тактов, на выходе которого попеременно с заданной скоростью чередуется полярность. Для более подробного рассмотрения обратимся к рис. 24. Фаза команды Во время этой фазы реле cL, управляемое генератором тактов, возбуждено. Следовательно, контакты CL 1 Точнее, фазы числа. (Прим ред.). 44
замкнуты, а контакты С L разомкнуты. В результате содержимое СО, указывающего адрес очередной команды, передается в регистр коммутатора запоминающего устройства MS. Кроме того, во время фазы команды реле mL запоминающего устройства также возбуждено генератором тактов. Содержимое регистра запоминающего --t> !! !:ц: 0 ./7/ 9 /7 / 9 /77^ Ш1© 01234.5 9 Рис. 24. Общая схема цифровой автоматической вычислительной машины во время фазы «команд» Ф^, релеС^ возбуждено, так же как и реле считывания запоминающего устройства mL\ во время фазы «чисел» реле С не возбуждено; реле С_ возбуждено во время L Е фазы «чисел» в случае безусловного перехода. устройства появляется, таким образом, на шинах ро— Рэ и передается в Ml, а при втором срабатывании контактов С — в MD. Таким образом, оканчивается фаза команды. Команда, подлежащая выполнению, находится теперь в MD. Фаза числа Ф2- Во время этой второй фазы контакты CL разомкнуты, а контакты CL замкнуты. Адрес (разряды 4—9) из 45
команды, подлежащей выполнению, передается в регистр запоминающего устройства MS. Код операции (разряды 0—3) передается в регистр MD дешифратора команд. Этот последний должен возбудить реле арифметического и запоминающего устройств соответственно той операции, которая должна выполняться. Эти действия будут изучены в дальнейшем. Рассмотрим, например, программу, составленную выше. Двоичный эквивалент первой команды (R20), переданной во. время фазы Ф\ в Ml, запишется в виде: ООП 010100 Регистр 20 выбирается при передаче в регистр коммутатора шести правых разрядов. Передача в MD четырех левых разрядов вызывает возбуждение реле mL запоминающего устройства и реле аЕ арифметического устройства, обеспечивая передачу по шинам содержимого регистра 20 в регистр арифметического устройства. В это время содержимое СО, в котором было 000000 в начале вычисления, становится равным 000001. Таким образом, во время следующей фазы команды следующая команда, содержащаяся в регистре 1, передается в Ml. Эта команда запишется следующим образом: 0001 010101 Во время следующей фазы числа выбирается регистр 21, и дешифратор D1, получив в свой регистр значение 0001, выдает сигнал возбуждения реле mLz запоминающего устройства (считывание) и реле х арифметического устройства (ввод числа). Сумма содержимых регистра А и регистра 21 сначала формируется в регистре А', затем передается в А. Следующая фаза числа отличается от предыдущей только тем, что вместо регистра 21 выбирается регистр 22 и возбуждается реле ас арифметического устройства, что означает вычитание. Наконец, во время фазы числа последней команды программы выбирается регистр 23, и дешифратор выдает сигнал возбуждения реле тЕ запоминающего устройства (запись) и реле mL арифметического устройства (считывание), так что результат вычисления, содержащийся в регистре арифметического устройства, передается в регистр 23. Безусловный переход. Выше мы говорили, что команды в общем случае выполняются в порядке адресов в запоминающем устройстве, и указали на возможность нарушения такой последовательности. Подобное положение будет иметь место, когда после выполнения некоторой части вычислений оказывается необходимо перейти к другой части программы, записанной в других регистрах запоминающего устройства. Возможность нарушения последовательности команд позволяет, кроме того, многократно использовать одну и ту же элементарную программу в течение одного вычисления. Таким образом, можно будет, в частности, заранее приготовить программы часто встречающихся вычислений, записать их в запоминающем устройстве и обращаться к ним с нарушением последо- 46
вательности всегда, когда это потребуется. Подобные элементарные программы, вводимые в состав основной программы, называются подпрограммами». Какая-либо подпрограмма в свою очередь может быть названа подпрограммой относительно другой подпрограммы, и, следовательно, может существовать целая" иерархия подпрограмм, входящих одна в другую. Чем больше имеется в наличии стандартных подпрограмм, тем удобнее работать с цифровой вычислительной машиной. Итак, мы должны предусмотреть команду нарушения последовательности, составленную таким образом: Nn (Л/=0101): переходить к выполнению команды по адресу п. Другими словами, это значит поместить число п в счетчик адресов команд независимо от его предыдущего содержимого. Эта подстановка будет делаться в течение фазы числа Фг, во время которой п образует адрес содержимого ML Передача этого адреса а счетчик адресов команд осуществляется замыканием контактов СЕ в результате наличия комбинации 0101 в регистре дешифратора команд (рис. 24). Условный переход. Описанное нарушение последовательности называют «безусловным», поскольку его выполнение не подчиняется никакому предварительному условию. Но этого недостаточно. Пусть какая-либо задача решается методом последовательных приближений. В этом случае нужно продолжать процесс вычисления до тех пор, пока не будет достигнута искомая точность. Для этого после каждого цикла вычисляют разность Л = (#n_j_i)— —(*п) абсолютных значений результатов предыдущего и данного циклов и сравнивают ее с желаемой точностью е g Сравнение двух величин всегда может быть сведено к рассмотрению знака их разности. Итак, если разность А— е положительна, желаемая точность не достигнута и, следовательно, имеется основание приступать к новому циклу, т. е. к новому нарушению последовательности. Наоборот, если разность отрицательна, вычисление оканчивается, и можно вернуться к последовательной работе. Проверка знака проводится применительно к содержимому регистра арифметического устройства, где как раз находится разность после ее вычисления. Команда условного перехода (нарушения последовательности) будет составлена следующим образом. Рп (Р=0110): если содержимое регистра арифметического устройства положительно или равно нулю (т. е. если й0^0), переходить к выполнению команды по адресу п, в противном случае сохранять последовательность. Следовательно, дешифратор команд должен иметь сведения о состоянии ячейки разряда 0 арифметического устройства. Чтобы иметь возможность выполнить операцию умножения, нам будет необходимо также проверить цифру наименьшего разряда* множителя. В самом деле, в двоичной системе множимое, сдвинутое соответствующим способом, прибавляется к сумме уже сформированных частичных произведений в зависимости от того, равна ли цифра соответствующего разряда множителя 1 или 0. Более того, с помощью последовательных сдвигов мы обеспечиваем, чтобы проверяемая цифра была всегда цифрой наименьшего разряда и чтобы эта проверка проводилась в эегистре арифметического устройства. 47
Следовательно, наша вторая команда условного нарушения по/- следовательности (условного перехода) запишется так: Qn (Q=0111): если цифра наименьшего разряда ад содержимого регистра арифметического устройства равна нулю, перейти к выполнению инструкции адреса п; если нет, — сохранять последовательность. ПОЛНЫЙ ПЕРЕЧЕНЬ И ДЕШИФРАТОР КОМАНД Перед тем как записать окончательный перечень, пополним его несколькими дополнительными командами. Сдвиги. Выше, говоря об операции умножения, мы отмечали необходимость осуществления операции сдвига числа. Заметим по , aDB aDD Рис. 25. Схема сдвига. этому поводу, что сдвиг какого-либо числа на один разряд в сторону больших весов, т. е. влево в нормальной записи чисел, соответствует его умножению на 2. Действительно, при этой операции веса всех разрядов оказываются увеличенными в 2 раза. Наоборот, 48
сдвиг на один разряд в сторону младших разрядов, т. е. вправо, равносилен делению числа на 2 при условии неизменности цифры наибольшего разряда, которая определяет знак. Итак, введем две следующие команды: G (влево: 1000): сдвинуть содержимое регистра арифметического устройства на один разряд влево. D (вправо 1001): сдвинуть содержимое регистра арифметического устройства на один разряд вправо. Схемы сдвига арифметического устройства (рис. 25). Сдвиги происходят при передачах между регистрами Л и Л' арифметического устройства с помощью контактов ADQ для сдвига влево и контактов ADD — для сдвига вправо. Эта операция, очевидно, будет сопровождаться замыканием контактов X. Кроме того, будет необходимо разорвать связь между регистром А' и сумматором-вычитателем с помощью двух контактов Adgvjs. ADD, включенных последовательно с его выходами (рис. 14 и 25). Поразрядное логическое умножение1. В дальнейшем мы покажем полезность операции поразрядного логического умножения двух чисел, а пока мы введем в наш перечень команду: In (1=логическое умножение: 1010): произвести поразрядное логическое умножение содержимого регистра с адресом п с содержимым регистра арифметического устройства и оставить результат в этом последнем. Эта операция позволяет, например, извлекать одну или несколько цифр числа, исключая остальные. Предположим, например, что мы решили извлечь адрес следующей команды: ОНО 100110 Для этого достаточно образовать поразрядное логическое умножение этого слова со следующим: 0000 111111 Применим операцию логического умножения к каждой паре цифр каждого разряда этих двух слов: 0000 100110 Это и есть искомый результат. Схема логического умножения (рис. 14) образуется просто из двух последовательных контактов А и В и инвертора Aj , управляемого реле а7 дешифратора. Ее назначение состоит в замене на выходе сумматора-вычитателя результата сложения или вычитания результатом поразрядного логического умножения. Эта схема, которая использует один из уже используемых контактов Л, представлена на рис. 14. Выполнение этой операции, очевидно, сопровождается замыканием контактов реле х. 1 Поразрядным логическим умножением называется операция, выполняемая над двумя двоичными числами а и Ь, с образованием в результате двоичного числа с, каждый разряд которого ci равен ai • bi (Прим. ред.) 49
Команда останова. Команда Z (код операции 1011) вызывает остановку машины. Дешифратор команд. До сих пор было рассмотрено 11 различных команд, пронумерованных от 1 до 11. Как правило, избегают пользоваться комбинациями 0000 и 1111, нужными для других целей. Следовательно остается еще три комбинации, которые будут нам полезны для управления входными и выходными устройствами. Приводимая ниже таблица содержит перечень 11 рассмотренных уже команд. Для каждой из них приведены: код операции, ее сокращенное обозначение и наименования реле, которые должны быть возбуждены. Сравнение второго и четвертого столбцов таблицы, указывающих соответственно код операции каждой команды и реле, которое при этом должно возбудиться, позволяет нам написать для каждого из реле переключательную функцию, задающую условия его срабатывания. Сводная таблица команд манды Коды операций d0 dx d2 dz Алгебраические обозначения Возбуждаемое реле Ап 0001 (A) + (л) - A X Sn 0010 (A)-(n)-*A mL xac Rn 0011' in)-* A mL aE Тп 0100 (A) -* n aL Nn 0101 (л) -> CO °E Рп 0110 (И) -* CO,7 если aa = 0 CE Qn 0111 (л) ->■ CO, если a9 = 0 CE G 1000 2(A)-* A X aDG D 1001 (A)/2-* A X aDD In 1010 (At) ■ (n,) -* At X Z 1011 Останов z mL = d0dl(d2W d3)V dQd1d2d3; mE = d0 dx d2 ~d3; x = 30 ~d\ (d2ds V d2 d3) V d03i(52 V d3); ac = d0dld2d3> aE = d0d{ d2d3; aL ~ d\ d2 » CE = dod1 (d2d3V d2 d3 aQ v d2 d3a 9) ; 50
aDG = d0dld2d3 aDD = d0dld2d3 aI = d0 dl d2dS> z = do d\ d% d3 . Эти функции легко реализуются с помощью четырех реле: d0, d\, d2 и d3 (рис. 26). Ясно, что две функции тв и aL идентичны так, что два соответствующих реле могут быть включены парал- dn cLj dz d3 Рис. 26. Дешифратор команд на электромагнитных реле. лельно или даже объединены в одно, если это позволит число имеющихся в распоряжении контактов. Наконец, контакты Л0 и Л9 будут управляться соответствующими реле а0 и а9 арифметического устройства. Другой вид дешифратора. Применение диодов позволит нам снова, как и в случае сумматора-вычитателя (рис. 15), придать схеме дешифратора более рациональный вид (рис. 27). Благодаря наличию пирамидальной избирательной контактной схемы, каждой из 16 возможных комбинаций четырех цифр d0, du d2 и d3 кода операции будет соответствовать возбуждение одной из 16 вертикальных шин, пронумерованных от 0 до 15. Для завершения построения схемы достаточно связать каждую горизонтальную ши- 51
ну с теми вертикальными шинами, которые соответствуют выбранным строкам таблицы команд. Эти связи должны осуществляться посредством диодов, пропускающих ток только в направлении от вертикальных линий к горизонтальным. В этом случае можно сказать, что на самом деле операция выполняется в два приема: Рис. 27. Дешифратор на реле и диодах. а) декодирование кода операции избирательной схемой, которая возбуждает соответствующую вертикальную линию; б) декодирование матрицей диодов, которая приводит в действие комбинацию реле, соответствующую выполнению данной команды. СЧЕТЧИК АДРЕСОВ КОМАНД Роль счетчика адресов команд заключается в подсчете количества уже выполненных команд с целью формирования в течение каждой фазы команды Ф\ адреса вызываемой из памяти очередной команды. Его содержимое, выраженное в двоичной системе счисления шестью цифрами (С4 —С9), должно, следовательно, увеличиваться на единицу в начале каждой фазы числа Ф2. Работа счетчика поясняется временной диаграммой, показанной на рис. 28, где, сигнал СL является сигналом синхронизации. Попробуем сначала построить двоичный счетчик с помощью нашей элементарной ячейки памяти, которая является, как мы отмечали, идеализированным вариантом электронного триггера. Бу- 52
дем рассматривать ячейку памяти как двоичный счетный каскад. Из рис 28 видно, что ячейка младшего разряда С9 должна изменять состояние или «срабатывать», когда сигнал генератора синхронизации меняет знак с положительного на отрицательный, и 0, Ф2 Ф, Ф2 Ф, Ф2 Ф, Ф/ Ф, cs ' 1 '■ св 1 < с7 1 Рис. 28. Диаграмма работы счетчика адресов ком анд. *1 t-t0 о—о- X «не срабатывать» в противоположном случае. Нам, следовательно, нужны средства для выделения моментов изменения знака напряжения CL с положительного на отрицательный. Определение знака будет осуществляться дифференцирующей цепочкой (рис. 29, а), образованной последовательной емкостью и параллельным сопротивлением. Такое название эта схема получила потому, что ее выходной сигнал, по крайней мере для достаточно быстрых изменений, приблизительно представляет собой производную входного сигнала по времени. Подключим в момент /=0 на вход схемы постоянное напряжение U0. В течение первых моментов переходного процесса, который последует за замыканием ключа, на выходе схемы будет действовать полное напряжение U0l так как конденсатор не имел еще времени для зарядки. Затем напряжение на конденсаторе увеличивается по экспоненте, конденсатор заряжается через сопротивление и выходное напряжение асимптотически стремится к нулю с постоянной времени RC (рис. 29,6): U Рис. 29. Работа дифференцирующей цепочки. -t/RC При этом постоянная времени RC равна абсциссе точки пересечения касательной к кривой в точке / = 0 и оси t. Заметим, что 53
\с9 t t c9 о * * эти рассуждения справедливы только для случая полного отсутствия тока на выходе схемы, т. е. другими словами, если устройства, подключенные к ее выходу, обладают бесконечно большим (т. е. практически достаточно большим) сопротивлением (сеточное сопротивление лампы, например), или если их входное полное сопротивление учтено в сопротивлении R. Теперь подадим на вход такой дифференцирующей цепочки сигнал CL , имеющий ступенчатую форму (рис. 30). Если постоянная времени RC выбрана значительно меньшей полупериода входного сигнала, выходной сигнал будет представлять собой последовательность экспоненциальных импульсов, попеременно положительных и отрицательных. Таким образом, первое условие, поставленное выше, выполнено. Теперь мы должны ввести устройство, схематично показанное на рис. 30 в виде двух диодов, У Рис. 30. Счетчик адресов команд на триггерах. ч а Ь Рис. 31. Диаграмма работы двоичного счетчика на реле рис. 33. Рис. 32. Схема управления реле Ь(а) и схема, измененная с целью устранения размыкания, которое происходит в момент срабатывания контакта С (б) 54
запрещающее поступление положительных импульсов на вход запоминающей ячейки. Отрицательные импульсы будут передаваться на вход части ( + ) ячейки, вызывая, таким образом, ее срабатывание. Сигнал с выхода левой половины с9 будет также продифференцирован перед подачей на вход ячейки с8 и так далее. На рис. 30 также показаны формы сигналов в точках Л, В, С, D и Е. Имеет также смысл рассмотреть возможность построения каскада двоичного счетчика с помощью таких переключательных элементов, как реле. Постановка задачи иллюстрируется на рис. 31. Речь идет о том, чтобы, имея управляющий сигнал CL , образующийся при возбуждении одного реле, вызвать срабатывание второго реле а с половинной скоростью. Задача может быть решена только с помощью дополнительного реле Ь, моменты срабатывания которого сдвинуты на один такт по отношению к реле а. В действительности рабочий цикл занимает четыре такта, которые могут быть отработаны без двусмысленности только с помощью двух двоичных устройств. Отметим между прочим, что символика рис. 31 обычна для представления работы схем последовательного действия. Каждое из реле а и Ъ будет возбуждено комбинацией контактов , А и В. Из рис. 31 видно, что реле Ь должно быть возбуждено в то же время, что и реле cL , в то время как реле а не возбуждено. Состояние возбуждения реле Ь должно сохраняться после прекращения возбуждения cL до тех пор, пока это последнее не будет снова возбуждено: говорят, что возбуждение должно быть заблокировано после отпускания реле cL до его нового срабатывания. Эти условия запишутся кратко с помощью переключательной функции: b = CL-Av B-CL . На рис. 32,а показана реализация этой функции посредством кон- • такта CL, нормально закрытого контакта А и нормально открытого контакта В. Однако эта схема представляет значительное неудобство: питание Ъ прерывается на все время срабатывания контакта Cl которое наша временная диаграмма предполагает мгновенным. К счастью, это затруднение легко преодолеть с помощью схемы рис. 32,6, работа которой аналогична работе схемы рис. 32, а, как в этом легко убедиться непосредственно. В этой схеме возбуждение реле Ь и одновременное отсутствие возбуждения а обеспечивают непрерывность питания Ъ во время срабатывания контакта С L . Эквивалентность этих двух схем может быть легко установлена следующим образом. Работа второй схемы (рис. 32, б) описывается уравнением Ь = (CL V В) . (CL V А) . Раскрывая скобки, получаем: Ь = Cv Л V BCL V А-В V cL- CL . 55
Во-первых, ясно, что CL CL = 0, следовательно, этот член может быть устранен. Во-вторых, равенство Ь — А . В уже содержится в дизъюнкции двух первых членов второго выражения. Действительно, очевидно, что Ь возбуждено, каким бы ни было состояние CL , если одновременно В = 1 и А = 1, поскольку при этих условиях один из этих двух членов всегда равен 1. Это отчетливо видно из рис. 32, б. Конъюнкция А . В может, следовательно, быть также исключена и, таким образом, снова получается первое выражение. CL CL о t г з <t 5 в ? Рис. 33. Двоичный каскад на реле. Рис. 34. Последовательность фаз. Подобное преобразование часто используется в релейных схемах для того, чтобы обеспечить «непрерывность» схем во время срабатывания переключающих контактов. Запишем теперь условия срабатывания реле а и подвергнем их такому же преобразованию: а = В • ~CL v A-CL = (CL V By (CL V A) . Таким образом, мы получили полную схему рис. 33, а, которая упрощается до схемы рис. 33,6 путем объединения двух контактов Л и Л, которые имеют общую точку, в один контакт. ПОЛНАЯ СХЕМА И РАСПРЕДЕЛЕНИЕ ФАЗ На полной схеме машины (см. вклейку в конце книги) даны принципиальные схемы блоков, схематически показанных на рис. 24. Схемы коммутатора запоминающего устройства SM, дешифратора команд D1 и арифметического устройства OA, не расшифрованные на общей схеме, образованы контактами различных реле, 56
показанных на общей схеме. Подробно эти схемы даны на рис. 22, 26 и 14. Во избежание излишнего износа контактов рекомендуется по мере возможности осуществлять все необходимые переключения до подачи напряжения на схему, составленную из этих контактов. В соответствии с этим точки схемы, обозначенные символом « + », соединяются с положительным зажимом источника питания в порядке, определяемом генератором тактов. Эти вторичные фазы отмечены в треугольниках на общей схеме. Взаимное расположение вторичных фаз дано на рис. 34. Рассмотрим эту систему работы, следуя за ходом операций в течение цикла вычисления, образованного фазой «команды» Ф\ и фазой «числа» Ф2. Фаза команды Фь В начале этой фазы замыкаются контакты Clh размыкаются контакты CL . Содержимое счетчика адресов команд передается контактами СL в регистр коммутатора. При этом возбуждаются "те реле mj, которые соответствуют адресу выполняемой команды. В то же время реле mL возбуждено генератором тактов таким образом, что контакт ML коммутатора запоминающего устройства замыкается, подготавливая считывание из выбранного регистра. Когда все эти контакты займут соответствующее положение, коммутатор включается под напряжение (фаза Ф f ). В этот момент реле // выбранного регистра оказывается возбужденным через замкнутый контакт Ml , и, следовательно, содержимое выбранного регистра появляется на шинах, откуда оно передается в регистр команд через контакты CL . Фаза числа Ф2. В начале этой фазы контакты CL размыкаются, а контакты CL замыкаются. Кроме того, содержимое счетчика адресов команд увеличивается на единицу для подготовки следующей фазы команды. Адрес текущей команды записывается в регистр коммутатора, а код операции — в регистр дешифратора. В этот момент дешифратор команд включается под напряжение (фаза 'Ф-2 )» чтобы вызвать срабатывание реле арифметического и запоминающего устройств, соответствующих той операции, которая ч должна выполняться. Если должна выполняться команда безусловного перехода, то передача адреса из регистра команд в счетчик адресов команд производится с начала этой фазы. Затем включается под напряжение коммутатор запоминающего устройства (фаза Ф^). В результате этого при соответствующей команде контакты записи или считывания выбранного регистра подключаются к шинам. Если с некоторой шиной соединяется выход ячейки выбранного регистра, находящейся в состоянии 1> то это повлечет за собой срабатывание соответствующего реле арифметического устройства. Это последнее может теперь быть включено под напря- жение (фаза Ф£) так, чтобы результат выполненной операции был записан в регистр А'. Затем питание дешифратора, коммутатора и арифметического устройства может быть отключено. Остается в течение последней фазы Ф% осуществить передачу содержимого 57
А' в регистр А посредством замыкания контактов арифметического устройства, имея в виду при этом, что реле х было предварительно возбуждена во время декодирования команды. Из схемы видно, что для получения возможности выключать питание дешифратора перед началом этой фазы и избежать таким образом бесполезных переключений контактов арифметического устройства, реле х снабжают дополнительной обмоткой, включенной параллельно с обмоткой х'. Итак, полный цикл вычислений состоит из семи этапов: двух для фазы «команды» и пяти — для фазы «числа». Этот тип последовательной работы характерен для всех автоматических цифровых вычислительных машин, работа которых не может быть понятна без углубленного изучения взаимной зависимости отдельных фаз. ПРИГОТОВЛЕНИЕ ПРОГРАММ, БЛОК-СХЕМЫ ПРОГРАММ Теперь можно несколько углубиться в подробности работы по приготовлению программ. Мы остановимся, в частности, на той части этого вопроса, которая касается выполнения операций над самими командами, а также на использовании подпрограмм, автоматически входящих в состав основной программы. Первый пример: вычисление модуля числа. Пусть нужно заменить число, содержащееся в регистре с адресом 100* его абсолютным значением. Для этого достаточно проверить знак этого числа с помощью команды Р и если он окажется отрицательным, заменить его на обратный. Пять последовательных команд, приведенных ниже и снабженных пояснениями, реализуют эту операцию. Нумерация команд выбрана произвольно: И IR 100 Число (100) передается в арифметическое устройство. 12 Р 16—1 Проверка знака: если (100) ^ 0, никакого изменения не происходит и осуществляется переход к команде 16; если (100) < 0, то знак этого числа изменяется путем вычитания его из содержимо- го-предварительно сброшенного регистра арифметического устройства (команды 13, 14, 15). 13 R 0 I Сброс регистра арифметического устройства: регистр с адресом 0 предполагается пустым. 14 S 100 | Вычитание числа (100) из содержимого регистра арифметического устройства. 15 Т 100 | Передача полученного модуля в регистр с адресом 100. 16 Продолжение вычислений. Для выполнения этой программы мы были обязаны сбросить регистр арифметического устройства, передавая туда содержимое * В дальнейшем мы не будем придерживаться принятого ограничения на адреса, которые не могли быть больше 63, так как они представлялись 6-разрядными двоичными числами. 58
регистра с адресом 0, предполагая при этом, что он содержит число 000000000О: (0) = 0000000000. Мы резервируем также несколько последующих адресов для постоянного хранения ряда других констант, в которых мы будем часто нуждаться. Удобно отмечать стрелкой то обстоятельство, что по команде безусловного перехода Р 16 может быть осуществлен переход к команде 16. >,о Кл -(wo) +W0 Рис. 35. Блок-схема программы образования модуля содержимого ячейки 100. Процесс выполнения этой программы может быть схематически представлен в виде схемы, показанной на рис. 35 и называемой обычно блок-схемой программы1. Второй пример: вычисление итога; модификация адресов и вычисления. Пусть нужно вычислить сумму чисел, содержащихся во всех регистрах с адресами, заключенными между 100 и 200 включительно, результат должен быть записан в регистр с адресом 100: (100) + (101) + (102)+ • •. + (200) 100. Мы используем также регистр 100 для записи частичных сумм. Начнем с трех команд: R 100 А 101 Т 100 Затем мы будем выполнять три команды: R 100 А 102 \Т 100 Вместо того чтобы 100 раз записывать эту группу команд, мы воспользуемся тем, что команды представляются в запоминающем устройстве в той же форме, что и числа, и будем каждый раз при вычислении суммы увеличивать на единицу адрес команды Л, который предполагается в начале равным 100*. 1 Вместо термина «ординограмма», не принятого в советской литературе, здесь и в дальнейшем мы будем пользоваться термином «блок-схема» (Прим. ред.) * Такая операция называется «модификацией» адреса. (Прим. 89
Для этого запишем в регистр с адресом 1 единицу младшего разряда: (1) =0000000001. Момент окончания вычислений наступит тогда, когда эта команда приобретет вид Л 201, и мы узнаем об этом, проверяя знак разности А 200 — А{ (i обозначает изменяющийся адрес). Итак, мы должны также расположить в памяти двоичный эквивалент числа А 200. Слово, которое по форме совпадает с командой, но используется не как команда, а как число, называется псевдокомандой. В программе, подробно рассматриваемой ниже, переменная команда Ai записана ib квадратных скобках, а псевдокоманда А 200 отмечается знаком ||. Такие обозначения заимствованы у М. В. Уилкса [Л. 11]. Увеличение на единицу адреса переменной команды 25. -21 R 25 22 А 1 23 Т 25 24 R 100 25 [А 100] 26 Т 100 27 R 31 28 5 25 -29 Р 21 30 N 31 II Л 200 Суммирование с передачей разультата в регистр 100: (100) + (0-* ЮО. Проверка окончания суммирования: если А 200 — А 0, прибавить следующее число; если А 200 —Л/ < 0, переходить к следующей команде. Переход к другим вычислениям. Псевдокоманда, служащая для проверки конца операции. Выполнение этой программы схематически показано на блок- схеме на рис. 36. i + / (юо)+(0 —ЮО Ы A ZOO -Ai <0 . Первоначально i = ЮО Рис. 36. Блок-схема программы образования суммы чисел, хранящихся в ячейках с адресами, заключенными между 100 и 200. Плавающие адреса. В приведенной выше программе три адреса, входящие в состав команд, являются адресами самой программы. Из этого следует, что если при составлении программы 60
будет забыта одна команда, то изменится нумерация всех команд, включая те, которые содержат адреса программы. Это неудобство исключается, если при составлении программы обозначать адреса нужных команд буквами с индексами, как, например яь л2, Яз и т. д. После того как будет проверено, что составленная так программа не содержит ошибок, можно пронумеровать последовательные команды и сообщить плавающим адресам их истинные значения: п3 Плавающие адреса j^1 ) модификс /11 [Л100] лоо Rn2 Рп3 суммирование проверка окончания N п2 || Л200 n1==25 л2=31 п3=2\ Истинные адреса 21 R 25 22 Л 1 23 Т 25 24 R 100 25 [Л 100] 26 Т 100 27 Р 31 28 S 25 29 Р 21 30 . . . 37 Л 200 Параметры. Начальное значение переменной команды 25, так же как .и псевдокоманды 31, может быть введено в программу непосредственно перед ее использованием. Эти значения могут рассматриваться тогда как параметры, и придают программе чисто общее значение, позволяя суммировать любое число членов, первый из которых находится в регистре с каким-либо адресом. Третий пример: сумма модулей, вызов подпрограммы -и согласование. Зададимся целью подсчитать сумму модулей чисел, находящихся в регистрах с адресами, заключенными между 100 и 200 включительно, с помещением результата в регистр 100, предполагаемый вначале пустым. Мы используем для этого подпрограмму вычисления абсолютной величины, подотовленную заранее и организованную так, что после ее выполнения осуществляется автоматический переход к главной программе, каков бы ни был адрес, на котором выполнение главной программы было прервано в связи с вызовом подпрограммы. Пусть п — адрес первой команды подпрограммы. Предположим, что нам необходимо сделать вызов этой подпрограммы, т. е. образовать абсолютное значение, после команды с, адресом (m—1) главной программы. Две следующие команды будут обозначены: т Rm т+ 1 Nn Мы видим по первой из двух команд, что сама эта команда переписывается в регистр арифметического устройства и за счет это- 61
го отмечается место перехода от главной программы. Вторая команда вызывает безусловный переход к первой команде подпрограммы. Чтобы иметь возможность после выполнения подпрограммы вернуться к команде (т+2) главной программы, нужно, чтобы стоящая в конце подпрограммы команда безусловного перехода, называемая «командой согласования», имела вид: п + р Nm + 2. Эта команда может быть образована из команды Rm, которая теперь находится в регистре арифметического устройства. В самом деле, числовые эквиваленты R и N равны соответственно 3 и 5; их разность 2 соответствует числовому эквиваленту S. Итак, можно записать: Чтобы иметь возможность преобразовать команду (Rm) в команду (Nm+Q.), нужно, следовательно, прибавить к ней числовой эквивалент (S 2), который, как мы будем предполагать; хранится в регистре с адресом 2: (2) = S2 = 0010000010. Таким образом, нужно, чтобы все первые команды подпрограммы осуществляли эту операцию и передавали результат в конец подпрограммы: п А2 ) Образовать и поместить на место команду согласо- п + 1 Тп+р) вания. п + 2 ... . . . . . . . Команды подпрограммы. п + р (Nm-\- 2) Выполняется команда согласования. Здесь и в дальнейшем содержимое регистра, помещенное в него при выполнении самой программы, будет заключаться в скобки. Подпрограмма, полученная таким образом, называется «закрытой подпрограммой». Применим эти соображения к составлению закрытой подпрограммы образования абсолютной величины. На этот раз результат будет сохраняться в регистре арифметического устройства. Это даст возможность сэкономить по одной команде как в самой подпрограмме, так и в программе суммирования модулей. В приводимой ниже таблице слева приведена программа с плавающим адресом, а справа —-с абсолютным. Число, абсолютное значение которого вычисляется, предполагается помещенным в регистр с адресом п2; кроме того, регистр 2 содержит S 2, как мы уже отмечали выше. 62
Плавающие адреса А 2 \ Образование и расположе- Т п± ) ние команды согласования Проверка знака (п2) Изменение знака Р пг Р П2 \ ni~f- R0 Sn2 щ( )<-] Сюда помещается команда согласования Содержат число, модуль Пч ( ) которого ищут Абсолютные адреса 18 11 А 2 12 Т 17 13 R 18 14 Р 17 15 R 0 16 5 18 17 ( ) ( ) Применим эту подпрограмму для вычисления суммы: |(101) 1 + | (102)|+...+ ((200)1-100. Плавающие адреса Абсолютные адреса 21 R 0 22 Т 100 Т 100 } СбР0С РегистРа Ю° 21 R 0 ~*П* Л I*1 \ Модификация адреса команды 2з R 26 Г щ J П1 24 Л 1 7 18 J | регистр 18" подпрограммы 26 [R 100] щ [R 100] ^ Передача следующего числа в регистр модуля 27 Т 18 п ) Вызов подпрограммы образо- 28 R 28* П2 м if вания модуля (модуль по- 29 #11 j мещается в регистр ариф- • метического устройства) А 100 \ Суммирование" модуля с час- 30 А 100 Т 100 j тичной суммой (100) 31 Т 100 R п* \ п 32 # 36 S п I проверка окончания програм- 33 ^ 26 Р nl J мы по Разности #200—Ri 34 р 23 N . . . Переход к продолжению про- 35 N. . . граммы я3 || # 200 Псевдокоманда, используемая 36 || R 200" для проверки конца суммирования Мы видим, что после того, как подпрограмма составлена и помещена в запоминающее устройство, программист может опери- 63
ровать с ней как с дополнительной командой образования абсолютного значения. Для этого частного случая рассмотрим снова, как образуется команда согласования. Команда. # 28 с адресом 28 переписывает д сама себя в регистр арифметического уст- Т ройства. Следующая команда N 11 вызывает команду 11, первую команду подпрограммы. Эта команда (А 2) вызывает прибавление к содержимому регистра арифме- о тичеюкого устройства R 28 содержимого ре- гистра 2, т. е. .S 2: ч о <V о R 28 +IS 2 = N 30 Вторая команда подпрограммы Т 17 передает N 30 в регистр 17. В конце подпрограммы команда 30 снова передает управление команде 30 главной программы. В этот момент модуль рассматриваемого числа находится в регистре арифметического устройства, и таким образом, к нему достаточно прибавить содержимое регистра 100, в котором происходит накопление итога. Четвертый пример: найти наибольшее из последователь- 'JT* || н о с т и чисел. Пусть нужно найти наи- § g большее из чисел, хранящихся в регистрах * ~ " с адресами, заключенными между 100 и 199 включительно. Можно производить операцию систематически следующим образом: начинают с сравнения второго числа с первым; если второе меньше первого, повторяют операцию с третьим и первым и т. д. Предположим, что п-е число будет больше первого. Тогда начинают снова с я-го числа, т. е. срагвнивают его с (я+1) -м, затем с (п-\-2) -м и т. д. -Если, например, не находят в & Щ последующем числе большего, чем п-е, то я это последнее и есть наибольшее из всей последовательности чисел. Таким образом, * программа будет основана на двух переменных командах: о 3 Ь к 3 я в % s m со СХ 03 X X ni[Rt] П2 [Sj] j ^ / сначала i — ] = 100 . Индекс / увеличивается, начиная с единицы, все время, пока (i) больше или равно ■(/'), а индекс i скачком увеличивается до значения /, когда (/') становится больше (*)*. Программа оканчивает- * (0 и (/} обозначают, как обычно, содержимое памяти адресов i и /. 04
сй, когда Sj становится больше S 200. Процесс иллюстрируется блок-схемой, показанной на рис. 37. Ниже приведены варианты программы, составленной в плавающих и абсолютных адресах. Регистр л3 содержит .S 200, а регистр п6 зарезервирован для результата: Плавающие адреса Абсолютные адреса tii п2 Р п2 А 1 Т п2 S п3 Р пъ [R 100] [S 200] Р л4 R п2 А 5 Т rti —N л4 величение индекса / } п7 R пг Т п7 (R О Т л6 N . Проверка конца: окончание, когда S] станет равно 5 200 Сравнение (i) и (/): увеличить /, если (0^(/)'> начинать с (;), если (/) < (/). Подстановка Rj вместо Ri Sj + AO = Rj [(5) = АО] (i) — наибольшее число: передать команду Ri в п7, чтобы иметь возможность передать (О в пв. Перескочить на продолжение программы 11 R 17 12 А 1 13 Т 17 14 S 28 15 Р 23 16 [R 100] 17 [S 100 18 Р 11 19 R 17 20 А 5 21 У 16 22 N 11 23 R 16 24 Т 25 25 (R 0- 26 Т 29 27 N . . . 28 ||5 200 29 ( ) л3 II 5 200 Псевдокомандадля проверки конца п6 ( ) Результат Начало этой программы легко понять. Увеличивают индекс / с единицы на единицу до тех пор, пока / не станет равным или большим (;). Когда встречают число (j) большее, чем (i), то начинают с этого числа, т. е. подставляют Rj вместо Ri. Числовые эквиваленты 5 и R соответственно равны 2 и 3; поэтому достаточно добавить к St содержащуюся ,в регистре п2 величину АО. Эта величина снова послужит нам в дальнейшем. Предполагается, что она записана в регистре 5: (5) — АО = 0001000000. Адрес i команды пх после пересмотра всех чисел оказывается равным адресу наибольшего из последовательности чисел. Теперь следует передать это число в регистр я6. Для этого команда Ri, Хранящаяся по адресу п\, передается в регистр с адресом п7. При ее выполнении наибольшее число '(*') передается в регистр арифметического устройства и оттуда — в регистр результата пв. Пятый пример: классификация последовательности чисел. Пусть нужно распределить в порядке возрастания числа, хранящиеся в регистрах с адресами, заклю- 5—895 65
ченными между 100 и 199 включительно. Это можно выполнить следующим образом: сравнивают одну за другой пары чисел, образованные из двух соседних чисел, до 'тех пор, пока не доходят до числа ранга (i-Ы), меньшего, чем число ранга и Тогда эти два полученных числа меняют местами и начинают процесс сначала. Так продолжают вплоть до распределения всех этих чисел в возрастающем порядке. Покажем это на примере последовательности 4, 3, 2, 1: 4 3 3 2 2 2 1 XX X 3 4 2 3 X 2 2 4 1 1 1 3 1 X 1 3 X 1 4 Программа будет основана на двух переменных командах: tii \Ri+ 1] (первоначально i = 100); n2[Si] Процесс заканчивается, когда Ri+\ станет равным R 200, помещенному в регистр с адресом /ц. 7*2 П-2 1 пг 1 Пх Пз Пхо Плавающие адреса Увеличение на единицу индекса переменных команд с адресами ri\ и я8; (пх) хранится в регистре арифметического устройства Проверка окончания; цикл оканчивается, когда Ri+l становится равным R 200, содержащемуся в пз (первоначально i = 100). Абсолютные адреса [Ri + Ц [Si] Р л4 Сравнение: процесс продолжается, пока разность (i+l)— — (/) положительна или равна нулю; в противном случае переставляют (i + l) и (i) 21 22 23 24 25 26 27 28 29 30 31 R 30 А 1 Т 30 R 29 А 1 Т 29 S 53 Р 52 [R 101] [S 100] Р 21 п5 R пх Т п-0 (Ri + l) Т п6 R п2 А 5 Т п7 Поместить (/+ 1) для сохранения в щ\ команда п5 приобретает вид Ri + 1 Образование и передача в п7 команхы Ri: Si + АО = = Ri (АО в 5) 32 Я 29 33 Т 34 34 ( ) 35 Т 54 36 37 38 R 30 А 5 Т 43 66
A 5 \ Образбвание й передача в п9 Т пъ J команды Т/: Rt + A0 = Tt. Образование и передача в л8 команды Tt + 1 :Rt + (1) == «=Г/ + 1 [(!)==!] Л 1 Щ (77+1) я9 7 I Р ли. Г пг R Л12 Г л2 N п4 л3 I! Я 200 л6 ( ) пи II ^ Ю1 п1% || 5 100 Перестановка Возвращение в начало по* следовательности установкой на нуль (rii) и (л2) Переход к продолжению про_ граммы Данные для проверки конца Регистр для (+1) 39 40 41 42 А в Т 46 А 1 Т 44 43 ( ) 44 ( ). 45 R 50 46 < ) 47 R 55 48 . Т 29 49 R 56 50 Т 30. 51 #21 52 N . . || # 200 53 ( ) 54 II R 101 55 || 5100 56 Примечание. Если принять команду 47 за первую команду программы, начальные величины R 101 и S 100 автоматически запишутся в 29 и 30. Как и прежде, мы поясним наиболее интересные места рассмотренной программы. Ее блок-схема показана на рис. 38. Перестановка, необходимая, если (i+1), становится меньше, чем (i), обеспечивается четырьмя командами 43—46, которые должны быть последовательно составлены и помещены на место по командам 36—42. Предварительно необходимо освободить один из двух адресов i или t+1, помещая его содержимое для сохранения в регистр 54; если команда Ri+l уже находится в регистре 29, то адрес i+1 освобождается при выполнении рассмотренной выше программы. Достаточно для этого переслать эту команду в 34. Шестой пример: произведение двух положительных чисел. Автоматические цифровые вычислительные машины содержат всегда в своем словаре одну или несколько команд для вычисления произведения двух чисел с помощью специального устройства, называемого множителем. В дальнейшем мы дадим несколько пояснений по этому поводу. Обратимся к вашей упрощенной машине и составим в качестве упражнения подпрограмму выполнения операции умножения. Мы начнем с произведения двух положительных чисел, затем мы укажем общий метод для умножения двух чисел любого знака. Произведение двух положительных чисел образуется обычным способом путем сложения частичных произведений. Но в данном случае это особенно просто, поскольку произведение каждой цифры 5* 67
Мнбжителя на множимое может быть только либо 6, либо самим множимым: 0,1Ю1 холоп 1101 1-101 00-00 110-1 0,10001111 Операцию начинают с проверки последовательных цифр множителя, начиная с цифры младшего разряда; если цифра разряда п равна 1, соответствующее частное пооизведение7 представляет собой множимое, сдвинутое на п разрядов влево. На практике суммирование частичных произведений происходит в регистре А арифметического устройства. Частичные суммы сдвигают на один разряд вправо перед каждым прибавлением нового частного произведения, отбрасывая, таким образом, каждый раз цифру младшего разряда, которая выходит за пределы емкости арифметического устройства: Первое частичное произведение • , . 1101 Сдвиг вправо . . ПО Второе частичное произведение т . +1101 Первая частная сумма ...... 10011 Сдвиг вправо ... 1001 Третье частичное произведение . . . + 0000 Вторая частичная сумма 1001 Сдвиг вправо ... 100 Четвертое частичное произведение . +1101 Третья частичная сумма 10001 Сдвиг вправо 1000 Очевидно мы получаем произведение, округленное до четырех первых двоичных разрядов: 0,1000. Наконец, чтобы проверить последовательность цифр множителя т, его сдвигают на один разряд вправо после каждого сложения частичного произведения и проверяют всегда цифру наименьшего разряда /по с помощью команды Q, которая была введена специально для этого. Элементарный цикл вычисления, записанный выше (проверка множителя, сложение частичного произведения и сдвиг частичной суммы), должен быть повторен 9 раз. Счет количества циклов может выполняться особенно простым образом. Для этого в специально зарезервированный регистр вводят слово 0111111111, представленное псевдокомандой Q 63. Если сдвигать это слово на один разряд вправо после каждого цикла, то цифра наименьшего разряда станет равной 0 после девятого шага, и это легко выявить с помощью команды Q. 68
Подпрограмма умножения двух положительных чисел, данная в блок-схеме На рис. 39, подробно приводится ниже. Множимое М и множитель т предвирительно вводятся в регистры ti\ и п2. Час- тичные произведения суммируются в регистре пз. Регистр щ слу: жит счетчиком. Его начальное содержимое Q 63 записано постоянно в /г9. Исследуем действие команды проверки разряда тд: Qn7 с адресом п&. Если т9=0, то блокируется последовательность команд *° }о + (п*)-+А9 Апз) D Тпз имеющих целью очистить регистр арифметического устройства, ввести туда предыдущую частичную сумму и сдвинуть ее на один разряд вправо. Плавающие адреса Абсолютные адреса Формирование и запись команды согласования Ввод в счетчик л4 слова 0111111111, содержащегося в л9 Проверка т9: если он равен 1, добавить М к частичному произведению и сдвинуть, если он равен 0, только сдвинуть частичное произведение Суммирование частичных проямедений Сдвиг частичной суммы Сдвиг содержимого счетчика /г4 и проверка конца Сдвиг m Сюда "помещается команда согласования 21 22 23 24 25 26 33 34 35 36 37 38 39 40 А 2 Т 41 R 46 Т 45 R 43 Q 29 27 R 42 28 N 30 29 R 0 30 А 44 31 32 D Т 44 R 45 D Т 45 Q 41 R 43 D Т 43 N 26 41 ( ) /ii (Af) Множимое я2 (пг) Множитель Пз (sp) Частичные суммы 42 (М) 43 (т) 44 (sp) 7Q
titiCTR) Счетчик 45 (CTR) л9 || Q63 Псевдокоманда: начальное 46 || Q63 содержимое счетчика Если т9=1, выполняются последующие команды: An,} 0*>+ D Тп3 Величина М прибавляется к предыдущей частичной сумме, затем новая сумма сдвигается. Седьмой пример: произведение двух алгебраических чисел. Первый метод вычисления произведения двух алгебраических чисел состоит в вычислении произведения их абсолютных значений и комбинировании знаков на основании обычного правила, которое сводится к сложению по .модулю 2. Этот метод часто используется в автоматических множительных блоках арифметического устройства. Когда обычное алгебраическое сложение выполняется над числами, представленными дополнительным кодом, сомножители должны перед поступлением в множительное устройство пройти через преобразующее устройство, которое придает им "обычную алгебраическую форму. Второй метод состоит в том, что сначала получают грубое произведение двух чисел, представленных в дополнительном коде, а затем производят коррекцию, чтобы получить точный результат, представленный в дополнительном коде. Рассмотрим сначала произведение положительного числа а на отрицательное число 6, представленное своим дополнением (2—Ь): а (2— b)-=~ab+2a или1 —ab=*(2—b) — U. Итак, нужно скорректировать грубое произведение, вычитая удвоенное значение положительного сомножителя. Произведение двух отрицательных чисел, представленных дополнениями (2—а) и (2—Ь)\ имеет вид: (2-е) (2-*) = вЬ+2 (2-в)+2 (2—*), откуда ab = (2-е) (2-6) - 2 (2—а) - 2 (2-6). 1 Здесь автор допускает неточность. По условию, сформулированному выше, произведение должно получаться также представленным в дополнительном коде. Поскольку в данном случае дополнительный код произведения должен «меть вид 4—ab, следующая формула запишется в виде: 4~ab=a (2—6) + 2 (2—«). При этом становятся справедливыми дальнейшие рассуждения о методе корректировки. (Прим. ред.) 71
На этот раз корректировка заключается в вычитании из грубого произведения двойных значений дополнений каждого из двух сомножителей, другими словами, двойных значений величин, представляющих их в машине. Таким образом, чтобы выполнить умножение двух чисел любого знака, поступают следующим образом: пусть х и у— дополнительные коды. Сначала получают грубое произведение, затем исследуют знак х: если он отрицателен, то из произведения вычитают двойное значение дополнения до 2 модуля у. Затем исследуют В Подготовка счетчика А В Проверка Рис. 40. Блок-схема программы алгебраического -умножения методом Бута. знак у, и если он отрицателен, из предварительно полученного результата вычитают еще двойное значение дополнения до 2 модуля х. Третий метод1. Наиболее изящный метод выполнения операции алгебраического умножения двух двоичных чисел, представленных в дополнительном коде, основывается на алгоритме, предложенном Э. Бутом [Л. 7]. Пусть А и В — два числа, последовательные разряды которых мы обозначим через ап и Ъп. а) Для пфО: если bn—bn^_i: уже полученное частичное произведение сдвигается на один разряд вправо; если Ьп=0 и Ьп_^{ =ь= 0: вычитание А из частичного произведения, сдвинутого на один разряд вправо; если Ьп =0 и rn_|_i = l: прибавление А к частичному произведению, сдвинутому на один разряд вправо. б) Для п=0: те же операции, за исключением сдвига. 1 Подробное описание этого метода можно найти в книге Э. Бут и К. Бут «Автоматические цифровые машины», Физматгиз, 1959. (Прим. ред.) 72
Программа, соответствующая этому алгоритму, может быть составлена в соответствии с блок-схемой, показанной на рис. 40. Чтобы в дальнейшем облегчить редакцию такой программы, отдельные блоки обозначены буквами. Два последних разряда В сравниваются прибавлением В/2 к В (блок £); если сумма оказывается четной, то для подготовки следующей операции достаточно сдвинуть В на один разряд вправо (блоки С и D). Если же сумма (В+В/2) оказывается нечетной, исследуют Ьп, проверяя четность В/2 (блоки G и Н) ив соответствии с этим вводят +Л или —Л в регистр арифметического устройства (блоки М и /) и прибавляют туда частичное произведение (блок /). Операция оканчивается, как в предыдущем случае. Первый цикл несколько отличен, поскольку разряд Ьц не существует. г. Абсолютные Плавающие адреса адреса j Формирование AZ I и размещение ZA Л^ X п | команды согла- 22 /Т 56 1 сования R 1 А Т щ Подготовка 23 R 1 счетчика 24 Т 60 25 Р 58 Проверка чет- 26 Q 28 ности В 27 N 43 26--28 N 47 Умножение на 48-*29 R60 2 содержимого 30 G счетчика 31 7 60 Rn3 ) Сдвиг частич- 32 7? 59 D D > ного произве- 33 О Тп3 ) "дения SP 34 Г 59 Rn2 Вычисление 35 RSg. D Е\ b+JL\ 36 D Ап2 V 2 / • 37 Л58 Проверка четно- в* F сти(* + -|-) 38 ^ 50 R п2 ) 39 R 58 D G \ Сдвиг В 40 D Тп2 J 41 Т 58 6—895 73
Qn10 И пР°веРка чет- ности "1 R0 А +4грегистр А J го устройства пп tZ j] ±a + sp п3 R пА \ Проверка кон- Р пп К ) ца (знак CTR) 42 Q 54 27- ►43 44 55-45 46 R0 S 57 А 59 Т 59 28,53- >47 R 60 48 Р 29 49 //56 #д8 П1° Nn^M ( ) Сдвиг В +Л— регистр Л арифметического устройства Команда согласования 38-50 51 52 53 42- 54 55 R 58 D Т 58 #47 R 57 N 45 49-56 ( ) П1 л4 (В) (SP) (CTR) Множимое 57 А Множитель 58 В Частичные суммы 59 SP Счетчик (сначала 00...01) 60 CTR После постановки на место начального значения счетчика (0000000001) исследуют b п (блок B)t проверяя четность В; если &л = 0, выполняется сдвиг содержимого счетчика и частичного произведения, в данном случае равного 0. Если £л = 1, вычитают А из частичного произведения. Сдвиг частичного произведения, находящегося в цепи обратной передачи, не осуществляется в течение последнего цикла. Подробная программа приведена выше. Ее составление в значительной степени облегчается записью на блок-схеме плавающих адресов, соответствующих выполнениям безусловных переходов. Восьмой пример: скалярное произведение. Применим подпрограмму умножения, которую мы только что составили для вычисления суммы произведений пар чисел, хранящихся в регистрах с адресами, заключенными между 100 и 199 включительно на пары чисел, хранящихся в регистрах с адресами, ааключеннымн между 200 и 299 включительно*. 2 (100+0(200+ 0- 74
&та сумма образует скалярное произведение в 166-мерном пространстве вектора с координатами -(100-И) на вектор с координатами (200+/). Программа, записанная ниже, представлена на блок- схеме рис. 41. Суммирование осуществляется в регистре 300. Плавающие адреса Абсолютные адреса R0 * Сброс на 0 регистра 300 (реги- Т 300 J стра суммирования) 1%2 ты Я 200 Г 58 Rn3 N21 R 300 Л 60 Т 300 Rnx А 1 Rn2 А 1 Rtii Srtx Pni N... Rm Введение двух множителей Вызов подпрограммы умножения Суммирование произведений Модификация адреса Пх Модификация адреса ла Проверка окончания: вычисления оканчиваются, когда (пх) становится равным R 200 Переход к другим вычислениям Псевдокоманда для проверки окончания 71 72 Г 300 73 [Я 100] 74 Г 57 75 R 200 76 Г 58 77 R77 78 N21 79 R 300 80 Л 60 81 Г 300 82 R 73 83 Л 1 84 Т 73 85 R 75 86 Л 1 87 Г 75 88 R92 89 S73 90 Р73 91 N • • • 92 || R 199 • Девятый пример: алгебраическое деление1. Как и для случая умножения, существует специальный алгоритм, называемый «деление без восстановления», который прямо обеспечивает получение частного двух алгебраических чисел, выраженных в дополнительном коде [Л. 7]. Пусть нужно подсчитать частное Q от деления двух N-разрядных чисел Л и В: а) операции от 1 до (N—1): если &i=ai: прибавить 2~ N к Q, сдвинуть Q и Л на один разряд влево и вычесть В из Л; если Ь\фа\. ничего не добавлять к Q, сдвинуть Q и Л на один разряд влево, прибавить В и Л. б) Операция N: прибавить (1-ь2~^) к Q (прибавление 1 дает правильный знак, а цифра младшего разряда правильно округляется, как это видно из дальнейшего). 1 Этот пример также подробно рассматривается в книге Э. Бут К. Б у т, «Автоматические цифровые машины», Физматгиз, 1956. 75
Плавающие адреса Абсолютные адреса Л2 Установка команды согласования Подготовка счетчика "10 В } Проверка В Т tlx } 21 22 23 24 л6 Рп7 С | Проверка А Rnx G Sn2 £ Rnx рпо щ R из G G Tn3 n8 R rii G I 4 ni ( ) (Л) (В) (0) ч (CTR) II 71 Рпю j Rn3 А пц К Тп3 (Q+2-")X2 (АХ2)-В Проверка А QX2 (АХ2)+В Умножение на 2 содержимого счетчика ^Проверка содержимого счетчика Q+1.00--.01 ^Команда согласования Делимое Делитель Члстное Счетчик 1,00,..01 50-25 26 27 28 39-29 30 31 32 33 34 35 36 37 26-38 39 28—40 41 42 43 44 45 46 37-47 48 49 51 52 53 55 56 57 58 59 А 2 7 54 R 1 Г 58 #56* Р38 #55 Р 40 R 57 А 1 G Г 57 #55 G 556 Г 55 #47 #55 Р 29 #57 G Г 57 #55 G Л 56 7 55 #58 G 7 58 50 Р25 #57 Л 59 757 54 ( ) (л) (В) (0) (С7#) Н т1 77
Организация соответствующей программы поясняется блок- схемой, показанной на рис. 42. Если А и В имеют противоположные знаки, то сдвигают частное и добавляют В к сдвинутому А (блоки В, А или i7, G, Я), если А и В одного знака, добавляют 2~^N~~l) к Q, сдвигают таким образом полученное новое частное и вычитают В из сдвинутого А (блоки J3, А или Я, D, £). КОНСТРУКЦИЯ МНОЖИТЕЛЬНОГО УСТРОЙСТВА Мы уже отмечали, что в цифровой автоматической вычислительной «машине всегда предусматриваются команды, необходимые для автоматического выполнения операции умножения. Поскольку в нашем случае принята одноадресная команда, один сомножитель должен быть обозначен неявным образом. Для этого он будет предварительно вводиться в специальный регистр, называемый регистром множителя, который мы обозначим через L. Эта передача будет выполняться по команде вида: Ln: записать в регистр множителя содержимое регистра с адресом п. Содержимое этого регистра сможет тогда быть умножено на содержимое регистра с каким-нибудь адреоом п' по команде: Мпг\ умножить содержимое регистра множителя на содержимое регистра с адресом п' и оставить произведение в регистре А арифметического устройства. В нашей машине мы сможем присвоить L и М двоичные эквиваленты 1100 и 1101, которые еще имеются в нашем распоряжении. На рис. 43 показана структурная схема множительного устройства, построенного на основании описанных принципов. Суммирование частичных произведений выполняется в регистре арифметического устройства. Содержимое регистра L может быть сдвинуто на один разряд вправо при. возбуждении реле d. Кроме того, левая половина ячейки младшего разряда этого регистра управляет возбуждением реле t в зависимости от значения содержащегося в ней разряда. Контакты Т реле t управляют, когда оно возбуждено, передачей в арифметическое устройство содержимого регистра с адресом я', входящим в состав комады Мп% выбираемого коммутатором. Чтобы не нарушать нормальной работы арифметического устройства, эти контакты нормально закорочены контактами Мь размыкающимися только при возбуждении реле т\ под действием кода 1101 (подробнее см. ниже). Выполнение команды Мл' состоит, таким образом, из десятикратного повторения следующего элементарного цикла: а) Сложение содержимого п' с содержимым регистра А, который предполагается пустым в начале первого цикла. Для этого реле mL (считывание из запоминающего устройства) и реле х (включение арифметического устройства) должны быть возбуждены. Эта операция имеет место только в том случае, если младший разряд множителя, содержащийся в L, равен 1; в противном случае содержимое А остается неизменным. 78
Рис. 43а. Схема множительного устройства. 1 р Этот классический знак ^2^=» обозначает напрабленив к младшим разрядам Рис. 436. Множительное устройство, позволяющее сохранять все цифры произведения.
б) Сдвиг на один разряд вправо содержимого регистров А и L при возбуждении реле aDD (сдвиг вправо), реле х (включение; арифметического устройства) и d (сдвиг L). Кроме того, в течение всего времени выполнения операции связь между генератором тактов и счетчиком адресов команд должна быть прервана. Счетчик, работающий от генератора тактов, будет контролировать последовательность шагов и восстановит нормальную работу машины после десятикратного повторения цикла. Все эти элементы схематически показаны на рис. 43а. Возбуждение реле т дешифратора кодом операции М вызывает возбуждение реле ти которое имеет блокирующий контакт Л! j, и переключение контакта Ми кото-; рый в исходном состоянии коммутирует счетчик адресов команд, а в возбужденном состоянии — счетчик, управляющий выполнением цикла, описанного выше. Возбуждение реле Ш\ вызывает также размьь кание контактов Мь которые закорачивают контакты Т. В конце операции счетчик возбуждает реле тг, которое разрывает цепь mi и воз» вращает схему в исходное состояние. С точки зрения конструкции операция счета и управления последовательностью операций может быть осуществлена одними или несколькими телефонными реле. Заметим, что можно не терять половину младшего разряда произведения, выходящего за пределы емкости арифметического устройства при каждом сдвиге вправо частичного произведения. Для этог0 можно использовать регистр L множительного устройства, ячейки которого последовательно освобождаются, начиная с ячейки наибольшего разряда, по одной после каждого сдвига вправо множителя^ Следовательно, можно последовательно посылать цифры младшего разряда произведения в ячейки старших разрядов регистра L по мере •его освобождения (рис. 436). Впрочем, многие машины обладают сумматором двойной емкости с целью уменьшить ошибки, накапливающиеся во время образования суммы частичных произведений. ДЕЛЕНИЕ Если все ариметические цифровые вычислительные машины снабжены арифметическим устройством, способным осуществлять операции сложения, вычитания и умножения, то у большинства из них не предусмотрена команда деления, и в этом случае операция деления Должна быть запрограммирована. Мы уже составили выше (девятый пример) программу, позволяющую выполнять деление алгебраических чисел, представленных в Дополнительном коде. Предлагаемый ниже метод, несколько более медленный, обладав ет тем преимуществом, что он требует меньшей4 емкости запоминающего устройства. Аналогичный принцип может быть применен для вычисления других функций. Пусть нужно вычислить частное а\Ь двух 4исел а и 6, когда оба числа меньше единицы и, кроме того,-а меньшие Ь. Начинают с величины 1/2, которую умножают на Ь. Если результат умножения больше а, то вычитают 1/4 исходной величины Ь\ в противном случае добавляют 1/4 6; затем умножают, таким образом, полученную новую величину на Ь и из нее вычитают (или к ней прибавляют) 1/8 Ь, если новое полученное произведение больше 80
(меньше) а. Продолжают, таким образом, прибавлять или вычитать Та ' 1эо"и т* д* 07 ^ до тех П0Р' пока не будет достигнута искомая точность, другими словами, пока разность между последовательными результатами не будет на единицу меньше разряда исходных чисел. Наиболее часто используемыми методами для вычисления частного двух чисел являются методы итерации (последовательного приближения) . Один метод, часто используемый для вычисления частного двух положительных чисел а и bt заключается в вычислении последовательности чисел, определенных по формулам an+i = a«(2-6n); Ъп+х = Ьп{2-Ъп); взяв за исходные величины сами числа а и 6, увидим, что bn+\ bn Ъ и что стремится к единице, когда т возрастает; из этого следует, что ал_^2 стремится к а/Ь. ОКРУГЛЕНИЕ При всех численных расчетах. необходимо в определенные моменты правильно округлить результаты. В самом деле, для округления числа с N цифрами после запятой недостаточно отбросить без оговорок последующие десятичные разряды, так как при этом вводится ошибка, в среднем равная у\/2, если через ц обозначить единицу младшего разряда. Два нижеследующих метода дают возможность получать среднюю ошибку равной нулю. а) Последняя сохраняемая цифра замещается, если она четная, большей нечетной цифрой, непосредственно следующей за ней. 6У Последняя сохраняемая цифра увеличивается на единицу, . если отброшенная часть больше или равна ч\/2. Это эквивалентно прибавлению *]/2 и сохранению N младших цифр результата. В двоичной системе счисления первый метод просто заключается в присвоении последней сохраняемой цифре значения единицы, а второй — в добавлении единицы (Л/+1)-го разряда. Второй метод более точен, так как он дает в 4 раза меньшую ошибку, равнуют)2/12 против т)2/3 для первого. Он применяется для умножения, когда располагают сумматором с емкостью 2N. Первый метод чаще используется для деления, как мы это сделали в вышеприведенном примере. Примеры Двоичные числа, которые нужно округлить до четырех цифр после запятой Округленные числа Метод (а) Метод (б) 0,11011001 0,1101 0,1110 0,11001001 0,1101 0,1101 81
ОБЗОР БИБЛИОТЕКИ ПОДПРОГРАММ Удобство пользования цифровой вычислительной машиной тесно связано с количеством имеющихся в наличии подпрограмм, непрерывно увеличивающимся в течение эксплуатации машины. Однако и в самом начале можно располагать некоторым минимумом подпрограмм, составленных поставщиком машины. Среди часто встречающихся элементарных функций операции деления и извлечения корней второй и третьей степеней лучше всего выполнять методами итераций, тогда как тригонометрические функции (прямые и обратные), экспоненциальные функции и логарифмы удобно вычислять разложением в ряд. Этот последний метод в случае автоматических вычислений обычно более выгоден, чем интерполяция между данными таблицы, помещенной в память. Тем не менее можно рассматривать коэффициенты разложения в ряд как содержание числовой таблицы, а суммирование ряда — как особый вид интерполяции. Одна или несколько подпрограмм будут посвящены операции возведения в квадрат, Часто прибегают для этого к достаточно отработанным формулам интегрирования таким, как формула Гаусса с неравными интервалами. Это сразу дает увеличение скорости вычисления и экономию в памяти. Решение обычных дифференциальных уравнений также является объектом одной или нескольких подпрограмм. Так как любое обычное дифференциальное уравнение может всегда быть представлено в виде системы дифференциальных уравнений первого порядка, подпрограмма для решения такой системы позволит решить все обычные дифференциальные уравнения. Операции с матрицами являются основой многочисленных вычислительных процессов. Поэтому специальные подпрограммы будут посвящены умножению матриц, решению системы линейных алгебраических уравнений, инвертированию матриц, вычислению собственных значений и векторов и т. д. Решение системы линейных уравнений осуществляется либо методами последовательного исключения переменных, либо итеративными методами. Методы последовательного исключения часто удобно применять в автоматических вычислениях. В дальнейшем мы будем говорить о подпрограммах, связанных с устройствами входа и выхода. В заключение скажем несколько слов об интерпретирующих подпрограммах. ИНТЕРПРЕТИРУЮЩИЕ ПОДПРОГРАММЫ Мы уже показали, что подпрограмма может быть использована программистом в качестве дополнительной команды. Можно пойти еще дальше и дать возможность программисту работать при некоторых вычислениях с кодом, совершенно отличным от кода, принятого в машине. Тогда каждая команда, напитанная в этом новом коде, должна быть интерпретирована составленной для этого подпрограммой с целью составления последовательности обычных команд, эквивалентных командам, которые должны быть интерпретированы. 82
Предположим, например, что мы решили выполнить операции сложения и вычитания комплексных чисел, не обращая специального внимания на то обстоятельство, что эти числа комплексные. Условимся помещать действительную и мнимую части данного комплексного числа в два регистра с адресами п и (л+1). Назовем этот двойной адрес «адресом» нашего комплексного числа. Мы должны также располагать «регистром комплексного оператора», образованным из двух последовательных регистров, например 10 и 11. - Чтобы (выполнить операцию с комплексными числами, мы начнем, следовательно, с вызова соответствующей интерпретирующей подпрограммы, предварительно помещенной в память. Начиная с этого момента, команды сложения Л/г, вычитания Snt замещения Rn и передачи Тп должны быть истолкованы, как составленные для комплексного числа, действительная часть которого содержится в регистре с адресом п и соответственно мнимая часть — в регистре с адресом (/г+1). Тогда по интерпретирующей -подпрограмме будут извлекаться одна за другой команды главной программы, подлежащие интерпретации, и вырабатываться группа соответствующих обычных команд. Например, для выполнения команды Ап нужно будет сложить действительную часть (п) с действительной частью (10) комплексного регистра и передать результат в 10, потом точно так же сложить мнимые части (п+\) и (11) и передать их сумму в 11. Обычный способ, которым эти операции осуществляются, состоит в следующем. Каждый код операции интерпретируемых команд объединяет группу обычных команд, обеспечивающих осуществление соответствующей операции. Эти различные группы могут быть вызваны столькими же командами безусловных переходов, образующими в сумме «сборник». После извлечения интерпретируемой команды главной программы по интерпретирующей подпрограмме сначала исследуется код операции, выделяемый с помощью логического умножения. На основании числового эквивалента этого кода составляется команда безусловного перехода, отсылающая к надлежащей команде сборника и оттуда к соответствующей группе обычных команд. Следовательно, адрес интерпретируемой команды, который необходим для правильного выполнения этой группы команд, будет помещен в резерв на время исследования кода операции. Подпрограммы интерпретации полезны также для следующих расчетов: а) Расчеты с удвоенной точностью: чтобы оперировать на /^-разрядной машине 2ЛГ-разрядными числами, достаточно помещать две половины каждого числа в два последовательных регистра и программировать соответствующим образом. Здесь снова будет полезна подпрограмма интерпретации, так как она позволит использовать нормальные коды операций для чисел двойной длины. Очевидно, что подобный метод позволяет обращаться с числами любой длины. б) Вычисления с плавающей запятой. Часто оказывается невозможным работать с числами, представленными в форме с фиксированной запятой, поскольку порядок получаемых значений различных величин не известен перед началом вычислений. Тогда используется форма представления, получившая название «представление с плавающей запятой». Числа представляются в полулогарифмическом виде: р • Bq, где В — основание системы счисления!, а р 83
й q — положительные или отрицательные числа. Кроме того, значение мантиссы р должно лежать в интервале 1—р<В. Перед тем как приступить к сложению или вычитанию двух чисел, начинают с «расположения» меньшего из них по отношению к большему, присваивая ему тот же порядок. После операции нужно, конечно, снова нормализовать результат таким образом, чтобы его мантисса удовлетворяла приведенным выше условиям. Умножение и деление сводятся соответственно к нахождению произведения или частного мантисс и суммы или разности порядков и к нормализации результата. Мантисса и порядок помещаются либо в один и тот же регистр, либо в два или несколько последовательных регистров. в) Вычисления с десятичными числами: в некоторых случаях может быть выгодно оперировать непосредственно с числами, представленными в десятичной системе счисления. Для этого достаточно выразить каждую десятичную цифру группой из четырех последовательных двоичных цифр и оперировать отдельно с этими группами с помощью соответствующей подпрограммы. Этот способ работы автоматически обеспечивается в машинах, работающих в десятичной системе счисления. Наконец, можно работать в десятичной системе с плавающей запятой, как это делается автоматически во многих современных машинах. СИМВОЛИЗИРОВАННЫЕ КОМАНДЫ Рассмотренные выше интерпретирующие программы состоят из команд, аналогичных нормальным командам, но применяемых к числам особого характера. Можно пойти еще дальше и попробовать записывать команды в форме, предельно приближающейся к обычной математической записи, например: (п") = (п') X (п): записать в регистр п" произведение содержимых двух регистров п' и п. (л')= V{n)\ записать в регистр пг корень квадратный из содержимого регистра с адресом п. В подобных условиях знаки операций, такие как «X» или , имеют числовые эквиваленты, так же как обычные коды операций. Таким образом, очевидно, что с помощью соответствующей интерпретирующей подпрограммы можно управлять выполнением операций, записанных в подобном виде. Однако подобная команда будет занимать в запоминающем устройстве больше места, чем обычная одноадресная команда. Следовательно, нужно либо выделять два или несколько регистров памяти на каждую символизированную команду, либо, чтобьг ограничить максимальную величину адресов л, условиться использовать символизированные команды только применительно к определенной части запоминающего устройства. Именно этот последний метод используется в общем случае. Как мы увидим ниже, вычислительные машины содержат часто два запоминающих 1 В отечественной литературе форма представленная р. Bq называется «нормальной формой представления числа». Числа р и q называются соответственно «мантиссой» и «порядком». Операция приведения числа к виду р. Bq, удовлетворяющему условию 1<р<£, называется «нормализацией». (Прим. ред.)
устройства: одно большой емкости, но сравнительно медленно действующее, а другое — быстродействующее, но меньшей емкости. В состав символизированных команд вводятся исключительно адреса регистров быстродействующего запоминающего устройства. УСТРОЙСТВА ВХОДА И ВЫХОДА Эти устройства обеспечивают машине связь с тем, кто ею поль* зуется. Устройства входа. Информация для автоматической вычислительной машины — числовые данные и команды программы — должна быть записана в носителе, дающем возможность считывания во входном устройстве. Часто используют для этой цели телеграфную перфоленту, и мы ограничимся на время рассмотрением этого случая. Перфоратор, снабженный клавиатурой, позволяет пробить отверстия в ленте. Каждое отверстие соответствует двоичной цифре 1, а отсутствие отверстия — цифре 0. Отверстия или пропуски группируются строками из пяти позиций каждая. Строка пробивается за один раз. Каждая комбинация отверстий и пропусков образует, таким образом, группу из пяти двоичных цифр. Устройство для чтен- ния с перфоленты содержит 5 щеток, замыкающих электрический контакт при прохождении под ним отверстия. На клавиши клавиатуры нанесены цифры от 0 до 9 и различные буквы, обозначающие операции. Выгодно применять числовой код, отличный от кода, используемого в телеграфной связи. Наиболее удобно представить десять десятичных цифр их двоичными эквивалентами. Часть операции преобразования из десятичной системы в двоичную, таким образом, автоматически осуществляется во время приготовления ленты. Двоичные комбинации, заключенные между 10 и 31 включительно, используются для кодов операций. Во время чтения одной строки ленты 5 соответствующих двоичных цифр передаются в 5 ячеек младших разрядов регистра памяти с помощью команды: Еп: прочесть следующую строку с ленты и поместить считываемое двоичное число, умноженное на. 2~~N > в регистр с адресом п. Во время чтения группы строк, содержащей последовательность цифр десятичного числа, ряд десятично-двоичных преобразований осуществляется самой машиной с помощью специально составленной подпрограммы. Преобразование заключается просто в умножении последовательных разрядов на соответствующие степени 10, хранящиеся в запоминающем устройстве, и в суммировании этих произведений. Однако. в случае дробных чисел этого недостаточно. Пусть, например, нужно преобразовать 0,84 в двоичную систему счисления. Начнем с вычисления двоичного эквивалента 84: 84 = 4J- (8 X Ю) в двоичной системе счисления 100 + (1000 X Ю10) = 10101000 . Но написанное в виде 0,01010100 это число является двоичным эквивалентом 84/(1 б)2, а не эквивалентом 84/(10)2, как это нам нужно. Следовательно, необходимо его умножить на (1-6/10)2 или разделить 85
на (iO/16)^ двоичный эквивалент которого равен 6,11001. Это умножение дает число 0,110101 или после округления до 5 цифр после запятой — 27/32^0,84... Различные виды сообщений, записанные на перфоленте, приготавливаются обычно независимо. В общем случае числовые данные, основная программа и подпрограммы, составляемые специально для данной задачи, пробиваются в двух экземплярах, а затем проверяются с помощью шедиальной машины, называемой «контрольником», которая останавливается, как только будет иметь место рассогласование между двумя синхронно читаемыми лентами. Затем с помощью устройства, называемого «дубликатором» или «репродуктором», пробивают также в двух экземплярах для возможности дальнейшей проверки окончательный вариант ленты. Аналогичным образом пробиваются ленты, содержащие части программы и ленты с заранее подготовленными подпрограммами, извлеченными из библиотеки программ. Выходные устройства — один тип выходного устройства, аналогичный рассмотренному входному устройству — телеграфный аппарат, печатающий механизм которого управляется пятью электромагнитами, возбуждаемыми параллельно в соответствии с 5-позиционным кодом. Определенные значения 5-разрядных двоичных чисел образуют код, управляющий выбором букв или цифр, продвижением бумаги и переводом строки. Распределение материала на странице может также производиться с помощью подпрограмм, соответствующих различным способам представления результатов. Перед печатью числа должны быть преобразованы в десятичную систему счисления с помощью подпрограммы. Рассмотрим сначала число, уже выраженное в виде десятичной дроби. Можно выделить цифру старшего разряда слева от запятой, умножая данное число на 10. Печатая эту целую часть и снова умножая оставшуюся дробную часть на 10, выделяют вторую цифру слева от запятой и т. д. Такой же способ применяется для числа, представленного в двоичной системе, умножая каждый раз дробную часть на двоичный эквивалент 10—1010. Пусть, например, нужно преобразовать в десятичную систему двоичное .число 0,11011 (27/32—0,84...). Результаты двух первых последовательных умножений на 1010 запишутся следующим образом: 0,11011 X 1010 ="1000^0111 1 0,84 0,0111 X 1010=0100,0110 /____ Цифры появляются, следовательно, со стороны старших разрядов. Команда вывода будет иметь следующий вид: &п : передать 5 цифр старших разрядов содержимого регистра с адресом п на печатающее устройство и печатать соответствующим образом. Тем не менее часто более выгодно не связывать машину непосредственно с печатающим устройством, а вводить промежуточный 86
электрический перфоратор, управляемый самой машиной по команде, аналогичной предыдущей. Максимальная скорость работы перфоратора больше скорости печатающего устройства (15 букв в секунду против 5 или 6), что дает возможность получить большую среднюю скорость вывода. Печатающее устройство будет наверстывать свое отставание в течение периодов вычислений, не сопровождающихся выдачей результатов. Может быть также выгодным выбрать для представления результатов специальный код, отличный от кода входных данных, чтобы проверить работу печатающего устройства. Например, десятичные цифры, и только они, будут представлены комбинациями, всегда содержащими две единицы и три нуля. Таким образом, единственная ошибка в передаче повлечет, за собой появление на печатающем устройстве комбинации, содержащей либо три единицы, либо одну единицу и не представляющую, следовательно, какую-либо цифру. Такая ошибка бросится в глаза во время изучения таблицы числовых результатов. Ложная цифра может быть напечатана только в случае (менее вероятном) появления двух взаимно компенсирующих ошибок передачи1. ПРОГРАММА ВВОДА Работа цифровой автоматической вычислительной машины так же, как и работа входных и выходных устройств, описанных выше, происходит на основании программы, предварительно помещенной в память. Однажды начатый, этот процесс может продолжаться сколь угодно долго, причем программа может предусматривать, если это нужно, чтение дополнительной информации, записанной на входной ленте. Но ясно, что «пуск» должен быть обеспечен дополнительным способом, не зависящим от нормальной программы и позволяющим записывать команды в память. Этот процесс обеспечивается «программой ввода», помещенной в память с помощью внешних средств перед началом других операций. Если первая команда этой программы записана в память по адресу 0 и если счетчик адресов команд поставлен на нуль перед пуском машины в ход, то команды ввода вызовут считывание и помещение в память в удобной форме команд и числовых данных, пробитых на входной ленте, до тех пор, пока не встретится закодированное указание, вызывающее начало вычислений путем отсылки к первой команде основной программы. Операции, которые должны выполняться для каждой строки программной ленты, состоят в основном в следующем: прочитать код операции и поместить его в резерв; прочитать и преобразовать в двоичную систему счисления последовательность цифр адреса; объединить код операции и адрес для образования- команды; передать составленную таким образом команду в надлежащий регистр памяти. увеличить на единицу адрес, по которому была передана команда; у, 1 Ускорение работы входных и выходных устройств — одна из актуальных забот конструкторов: магнитная лента играет важную роль в этих усовершенствованиях. 87
снова начать, читай код операции следующей команды, и т. д. Группы специальных символов, называемые «комбинации команд» и не предназначенные для помещения в память, позволяют- обозначить адрес, начиная с которого, будут записываться читаемые команды. Это позволяет отметить последнюю команду, которую нужно передать к началу основной программы, и т. д. Но программа ввода должна еще обеспечить очень важную функцию, без которой применение подпрограмм будет затруднено. Изучение подпрограмм, составленных перед этим, показывает, что некоторые из команд относятся к адресам самих подпрограмм. В результате запись этих команд зависит от позиции, занятой в памяти первой командой программы. Это, очевидно, неудобно и имеет смысл составлять подпрограммы в таком виде, чтобы их правильное выполнение не зависело от их местонахождения в памяти. По меньшей мере в общем случае подпрограммы не должны постоянно храниться в запоминающем устройстве машины. Другими словами, должна быть обеспечена возможность обозначать рассмотренные команды относительными по отношению к началу подпрограммы, а не абсолютными адресами. Некоторые машины обладают способностью получать этот результат автоматически без какой-либо модификации подпрограммы с помощью команды следующего типа: Ап': добавить к содержимому регистра арифметического устройства содержимое регистра с адресом (m+n), адрес пг является адресом регистра, содержащего саму эту команду. При отсутствии такой возможности модификация команд, содержащих относительные адреса, обеспечивается программой ввода. Для этого команды приготовленной заранее подпрограммы нумеруются произвольно, начиная с 0, относительные адреса следуют за специальной буквой — кодом. В момент чтения и помещения в память подпрограммы под действием программы ввода, адреса, отмеченные таким образом, увеличивают значение адреса, по которому помещена в память первая команда подпрограммы. Таким образом, получают с точки зрения программиста такую же гибкость, как при системе относительной нумерации адресов. Глава вторая ОТДЕЛЬНЫЕ ВОПРОСЫ ТЕХНИКИ АВТОМАТИЧЕСКИХ ЦИФРОВЫХ ВЫЧИСЛИТЕЛЬНЫХ МАШИН Мы надеемся, что гл. 1 этой книги позволит читателю постепенно познакомиться с основными принципами устройства и действия цифровых вычислительных машин. Теперь можно перейти к обзору средств электронной техники, положенных в основу построения современных автоматических .вычислительных машин. Мы рассмотрим последовательно различные элементы, позволяющие строить переключательные устройства и двоичные ячейки памяти: электронные лампы, транзисторы, основные магнитные элементы, тонкие магнитьте пленки, феррорезонансные схемы, параметроны, 8&
; / 0 i -п- 10 11 л_лл в 0 Ц в криотроны. Затем укажем на несколько характерных применений триггеров и линий задержки в вычислительных и управляющих устройствах. Закончим некоторыми упоминаниями об устройствах динамической магнитной памяти (барабанах, дисках и лентах), десятичных машинах, специальных кодах и методах внутреннего контроля. ПРЕДСТАВЛЕНИЕ И ПЕРЕДАЧА СООБЩЕНИЙ В регистрах вычислительных устройств, устройств > правления и памяти двоичные цифры представляются элементами, обладающими двумя устойчивыми состояниями, такими как два состояния электронного триггера или два состояния насыщения магнитного материала с прямоугольной .характеристикой намагничивания. Цифры — числа или команды — передаются из одного элемента в другой по электрическим линиям в форме импульсов. Заметим сразу, что знаки, выражающие цифры одного слова, могут быть одновременно переданы по стольким же отдельным линиям (параллельная передача) или последовательно по одной линии в форме серии импульсов (последовательная передача). На рис. 44 показана передача двоичного числа 1011 этими двумя способами. При этом для простоты предполагается, что «1» представляется положительным импульсом, а «0» — отсутствием импульса1. В машине, работающей в двоично-десятичной системе счисления, выбирают между тремя возможностями: передать все двоичные разряды параллельно, передать их все последовательно группами, соответствующими десятичным цифрам, следующим одна за другой во времени, и, наконец, комбинированное решение, которое заключается в параллельной передаче группы двоичных разрядов, представляющих одну десятичную цифру, и последовательной передаче этих групп. Но следует изучить более внимательно условия, при которых осуществляется передача этих сигналов. Практически они не будут иметь форму, показанную на рис. 44. Фронт построения импульсов не может быть бесконечно крутым, так как переход электрического напряжения с одного уровня на другой за бесконечно малое время предполагает наличие бесконечной энергии. Фронты импульсов всегда претерпевают некоторый наклон при прохождении через устройства, к которым они приложены. На них всегда накладываются напряжения внутренних шумов, которыми в некоторых случаях нельзя пренебречь. Эта особенность формы сигналов приводит к необходимости уточнения определения информации, которую они содержат, фиксацией двух уровней v0 и v\ (рис. 45) так, что напряжение, меньшее Vo> Рис. 44. Параллельная (а) и /последовательная (б) передача. 1 При параллельном способе для правильной работы схемы сложения цифры наименьших разрядов передаются в начале. §9
представляет двоичную цифру 0, а напряжение, превышающее Vu двоичную цифру 1. Кроме того, исследование уровня сигнала не может, очевидно, осуществляться в то время, когда он изменяется. Определение действительного уровня сигнала производится в течение строго определенного интервала времени А /, когда имеется уверенность, что он не претерпит значительных изменений. Эти интервалы времени называются часто «периодами проверки». Следует, таким образом, различать в работе машины периоды проверки и Период проверки Рис. 45. Интерпретация двоичной информации, содержащейся в электрическом сигнале: значение 0 для сигнала, меньшего V0, значение 1 для сигнала, превышающего Vi, период проверки переходные периоды. Здесь проявляется фундаментальное понятие «временного разделения». Частота и продолжительность «периодов проверки» будет определяться центральным генератором, называемым «генератором тактовых импульсов» и формирующим образцовые импульсы строго определенной длительности и формы. Частоты следования основных тактовых импульсов у современных вычислительных машин имеют величину от нескольких килогерц до нескольких мегагерц1. В последующем мы обозначим через 8 период следования тактовых импульсов. В машине последовательного действия продолжительность передачи слова из N цифр равна Nb и носит название «малый цикл». Он образует в некотором роде единицу времени работы машины, поскольку никакая операция не может осуществляться за время, меньшее «малого цикла». 1 Вспомним в этой связи, что "международная единица частоты получила название герц, а не циклов в секунду и еще меньше «периодов в секунду», что систематически игнорируется в английской и американской литературе. 90
Покажем сразу же на простом примере важность понятия «проверка» или «извлечение информации». Рассмотрим снова (рис. 46, а) временную последовательность I ; IjUJI а) б) I *) импульсов, представляющих двоичное число 1011 в последо. вательной форме представления. Как представить его обратный код 0100? Если ограничиться простейшим случаем, описанным выше, когда 1 представляется импульсом, а 0 — отсутствием импульса, то получается сигнал, показанный на рис. 46,6. Рассмотрим теперь сигнал в, полученный .из сигнала а путем перестановки местами нижнего уровня Ui и верхнего уровня U\. Если проверить сигналы б и в в моменты, отмеченные прерывистыми линиями, видно, что они содержат абсолютно одинаковую информацию. С технической точки зрения получение сигнала в из сигнала а гораздо более просто, чем получение сигнала б. Рассмотрим, в частности, трансформатор' (рис. 47), первичная обмотка которого, питаясь, например, от усилителя, получает сигнал, подобный а на рис. 46. Две вторичные обмотки, включенные в противофазе, образуют одновременно сам сигнал а и его дополнение в. Од-' на из этих обмоток соединена с источником постоянного напряжения £Дь а другая, с источником напряжения U\. Наконец, с помощью диодов сигналы, снимаемые с вторичных обмоток, ограничиваются по уровням Uo и U\. Кроме того, трансформаторная связь позволяет уменьшить выходное индуктивное сопротивление до такой величины, что сигнал может \быть передан на определенное расстояние при хороших условиях и, в частности, без риска искажения от наличия взаимной индукции с соседними линиями. -Тг Усилитель Моменты проверки Рис. 46. Проверка в указанные моменты [два знака (б) и (в) содержат одинаковую двоичную информацию, дополнительную к информации сигнала (а)1 -и- ~1_Г Рис. 47. Передача сигнала и его дополнениях помощью трансформатора связи. 91
СИМВОЛИКА ПЕРЕКЛЮЧАТЕЛЬНЫХ УСТРОЙСТВ Мы видим, что все операции вычисления и управления в автоматических цифровых вычислительных машинах сводятся к трем основным операциям: конъюнкции («И»), дизъюнкции («ИЛИ») и отрицания или дополнения. Следовательно, чрезвычайно полезно располагать символами для обозначения элементов, реализующих эти три операции. Это позволяет, в частности, (представить структуру автоматической вычислительной машины в виде «переключательной Рис. 48. Символика логических операций. схемы», абстрагируясь от техники только частично, так как сложная операция может всегда выполняться различными переключательными схемами, выбор между которыми будет диктоваться соображениями технологического порядка. Были предложены различные условные обозначения для переключательных элементов. Удобная символика, иллюстрированная несколькими примерами, приведена на рис. 48. Символ отрицания обычно изображается на конце линии, передающей рассматриваемую переменную, так, что он пересекается с контуром изображения, элемента, к которому ведет эта линия, как показано на рис. 48, гид. Элементы, реализующие операции конъюнкции и дизъюнкции, часто называются «вентилями» и «собирающими схемами»1. Напомним переключательную функцию полусумматора, который позволяет получить сумму S и перенос R для двух двоичных цифр а и Ь\ R^ab; S = abwa-b = (avb) ab . Два возможных вида функции для S соответствуют двум схемам — рис. 49 и 50. Если, как это часто бывает, переменные и их отрицания имеются в распоряжении одновременно, последняя схема принимает вид рис. 51. 1 В отечественной литературе чаще всего пользуются терминами «элемент (схема) «И» и «элемент (схема) «ИЛИ». Эти термины мы сохраним и в дальнейшем. (Прим. ред.)
Как мы это уже видели, два полусумматора А/й могут быть объединены для получения полного сумматора с тремя входами, позволяющего образовать сумму 5 и перенос R для двух двоичных цифр а и Ъ и сигнала переноса г из предыдущего каскада (рис. 52). Мы уже отмечали, что S\ и R\ не могут .одновременно быть равными 1, так что сигналы переноса R\ и R2 из двух полусумматоров не могут существовать одновременно и могут, следовательно, быть объединены без предосторожности. Применение алгебры логики позволяет к тому же легко проверить, что переменные 5 и R являются именно искомой суммой и запоминанием: Рис. 49. Символическое обозначение двоичного полусумматора. S2 = r .SiVrSi; Si = abV аЪ, -ab ад откуда: Si — ab ab = (так как xvy=xy), = (а V b)(a V b) = (так как ху = xvy) = ab V ab (так как aa=Q и bb=0) и «S2= Д&г V абГ V abr v a6r"= = 5(а,6,г) . ab=R Рис. 50. Другой вид двоичного полусумматора. ab ba ab=R Рис. 51. Модификация полусумматора рис. 50 в случае, когда имеются два числа и их дополнения. г - а b г Л D4 2 _jL С> Ri = ab R2=(a®b)r Рис. 52. Двоичный сумматор из двух полусумматоров. 93
$2 равно 1, когда одна или три из* fрех переменных а, Ь и f р$&- ны 1, и является суммой по модулю 2 этих трех цифр. Точно так же #х V Rz = ab V г(а6 V = = (г v 7) V г(о6 V ab) = abr v abr V ябг V ai&r = R{at b>r) (так как r v г = l). /? является искомым сигналом переноса, равным 1, когда две или три из трех цифр a, b и г равны 1; можно еще записать: R = ab V ar v br . Можно также построить полный сумматор непосредственно на основе переменных а, в и г и их дополнений, используя полученные выше выражения для 5 и R. Эти уравнения, которым соответствует схема на рис. 53, составляют к тому же немедленный перевод результатов из таблицы восьми возможных случаев, представленной ниже: Этот тип сумматора, разновидность которого мы построили ранее на реле, обладает замечательным свойством инвариантности по отношению к операции отрицания: сумма и перенос для отрицаний переменных соответственно равны отрицаниям суммы и переноса для этих переменных. Изучение вышеприведенной таблицы или преобразование уравнений с помощью правил алгебры Буля позволяет представить сумму 5 в различных видах, например: S = abr v (а V b V г) Rx; а b г 5 R 0 0 0 0 0 1 0 0 1 0 0 1 0 1 0 0 0 1 1 0 1 1 0 0 1 0 1 1 0 1 1 0 1 0 1 1 1 1 1 1 £ = (а V Ь V r)(R V abr) , которые соответствуют схемам на рис, 54 и 55. Вентили. Когда какая-либо схема, реализующая операцию конъюнкции, устроена таким образом, что прохождение сигнала оказывается возможным только при одновременном наличии одного или нескольких сигналов управления, ей дают название «вентиль». Рассмотрим, например, вентиль, управляющий передачей числа из N двоичных цифр (рис. 56). В соответствии с использованными элементами сигнал управления либо может быть образован из N последовательных импульсов (б), либо может представлять собой прямоугольный импульс с длительностью, равной одному малом) циклу (а)\ в первом случае, если входной сигнал передается в виде отрицаний, полученных путем изменения полярности, то на выходе он окажется представленным в обычной форме (в). 94
95
Рис. 56. Другой вид су,мматО(ра на три входа. Рис. 56. Вентиль: сигнал открывания вентиля может иметь вид либо прямоугольного импульса с длительностью, равной времени открывания (а), либо серии импульсов про- верки (б) и (в). 96
ПЕРЕКЛЮЧАТЕЛЬНЫЕ СХЕМЫ НА ДИОДАХ Диоды обладают свойством оказывать в зависимости от полярности приложенного к ним напряжения различное сопротивление проходящему току, что позволяет, в частности, выпрямлять с их помощью переменный ток. Идеальный диод будет иметь сопротивление, равное нулю для одного направления тока и бесконечно большое сопротивление — для другого направления. В тех- + нике электронных вычислитель- J ных машин в настоящее время £ используются кристаллические германиевые диоды, которые удобны благодаря незначитель- ° ным размерам, большому сроку службы, повышенному об- b' ратному сопротивлению и относительно большой величине с - обратного напряжения. На рис. 57 показано схематическое изображение диода, который проводит, если u1xj2. Две основные переключа- я - тельные схемы на диодах представлены на рис. 58. Предполо- Ь - жим, что двоичные цифры 0 и 1 представлены соответственно с - потенциалами («—») и (« + »!). -(/-аде а) -t/=avDvc М- Рис. 57. Диод: ток проходит, если Vi больше, чем V2. Рис. 58. Схемы конъюнкции и дизъюнкции на диодах. В схеме на рис. 58,6, для того чтобы соответствующий диод проводил, достаточно, чтобы один из входов был под положительным потенциалом. Будем считать, что прямое сопротив пение диодов очень мало по сравнению с сопротивлением нагрузки. Тогдл выход-схемы- будет находиться также под положительным потенциалом. Эта схема реализует, следовательно, операцию дизъюнкции («ИЛИ»). Наоборот, в случае схемы на !рис. 58,а достаточно, чтобы один из ©ходов был под отрицательным потенциалом, чтобы по сопротивлению нагрузки протекал ток и чтобы вследствие этого выходной зажим находился под отрицательным потенциалом. Для того чтобы на выходе схемы имел место « + », необходимо и достаточно, чтобы все три входа одновременно находились под положительным потенциалом: это операция конъюнкции («И»|). 7—895 97
Заметим, что функции этих двух схем изменятся, если условиться представлять цифру 1 отрицательным потенциалом, а цифру 0 — положительным. Схема на рис, 58, б становится тогда схемой «И», поскольку три входа должны быть одновременно под от- Рис. 59. Пример переключательной схемы на диодах. рицательным потенциалом, чтобы и напряжение на выходном зажиме было также отрицательным. Наоборот, схема на рис. 58, а реализует функцию «ИЛИ», поскольку достаточно, чтобы один из входов был под отрицательным потенциалом, чтобы этот потенциал был и на выходе. Эта двойственность соответствует известным соотношениям алгебры логики1: у =abc = а V b V сДля схемы на рис. 58,6; y = avbvc = а&сдля схемы на рис. 58,а; 1 Следующие соотношения представляют собой частный случай теоремы Де Моргана. (Прим. перге). 98
Для правильной работы этих схем необходимо, чтобы они питались от источника с малым индуктивным сопротивлением, а индуктивное сопротивление нагрузки было бы достаточно велико, например, сеточная цепь электронной лампы. Однако с некоторыми предосторожностями можно несколько элементарных переключатель- -4 ^4 -4 -Л |~->ЛЛЛ" -4 -4 Ж—ж. а • с • d- е -4 -Л -4 I /л. У (avbvc)(ave) abcvde а) б) Рис. 60. Матричная форма схемы рис. 59. ных схем соединять в каскады, как это показано на рис. 59. Удобно представить эти схемы в форме коммутационных матриц на диодах (рис. 60). Таким образом, можно реализовать любую переключательную функцию, представленную в виде либо дизъюнкции конъюнкций, либо конъюнкции дизъюнкций. Рассмотрим, например, функцию сложения по модулю 2: у— ab V ba = a@b ; четыре возможных случая представлены в следующей таблице: Эта функция реализуется матрицей, показанной на рис. 61. Мы видим, что диоды занимают такие же позиции, что и «1» таблицы. Рассмотрим снова уравнения полного сумматора, записанные в следующей форме: 5 = abr V abr v abr V abr ; R = ab V br v ra . Если располагают одновременно переменными и их отрицаниями, то эти уравнения реализуются матрицей на диодах (рис. 62). а 0 1 0 1 а 1 0 1 0 b 0 0 1 1 ~Ъ 1 1 0 0 а^Ь 0 1 1 0 7* 99
A JL.JL ab ba y=abvba Рис. 61. Схема суммирования по модулю 2 на диодах. ал ал МММ -а а 1ал ал л ал а л Рис. 62. Двоичный сумматор на диодах.
Матричные схемы коммутации могут еще рассматриваться как схемы «перевода» или «дешифрования», так как они позволяют преобразовывать один код в другой. Рассмотрим, например, перевод из двоичной формы десятичных цифр в пятипозиционный код, где каждая десятичная цифра представляется двумя «1» и тремя «О». Мы уже указывали на выгодность подобного кода с точки зрения управления. Необходимые преобразования иллюстрируются следующей таблицей [Л. 11]: Вход Выход X У Z t а ъ с d е 0 0 0 0 0 0 0 1 1 0 0 0 1 1 1 0 0 0 0 0 1 0 0 0 1 1 0 0 0 1 1 1 0 0 1 0 0 1 0 0 1 0 0 0 1 0 1 0 1 0 1 0 1 0 0 1 1 0 1 0 1 0 0 0 1 1 1 0 0 1 0 1 1 0 0 0 0 1 0 0 1 1 0 0 1 0 1 1 0 0 Как это часто имеет место, переключательные функции, соответствующие этой таблице, могут быть упрощены применением алгебры Буля1: а = xyzt V xyzt V "xyzt v xyzt = xyt (z V z) V xyt (z V z) — = xyt v xyt; b = "xyzt V 'xyzt V x~yzTv xyzt = xzt (у V у) V xyz (i V t) = = xzt v xyz » с — xyzt V xyzt V xyzt v xyzt = (xyzt V xyzt) V (xyzt) V xyzt = = "xzyt v "xyz v xyzt ; d = xyzt v xyzt v xyzt v xyzt = = (xyzt v xyzt) v (xyzt v xyzt) V xyzt = = "xyt V xyz V xyzt ; e = xy7i v xyzt v xyzt v xyzt ~ = OcySf V ^yil) v (xyzt v *yzO V iyz/ = 'xzt V yzf v xyzt . 1 См. табличные и числовые методы упрощения логических функций в книге ^Circuits a relais et autowatismes a sequences», Dunod, 1958, гл. V. 101
Эти упрощенные выражения дают в результате матрицу преобразования, показанную на рис. 63, в которой диоды представлены в виде соединений между вертикальными и горизонтальными линиями. Можно заметить, что все выходные сигналы этой матрицы равны нулю, если комбинация xyzt, не соответствует десятичной циф- ре. Добавочная схема, реализующая функцию a b с d е~ или av&vcvdve, образует схему выявления ошибки. У У -Ф-Ф- Ф Ф гАЛЛ/ ф ф ■ "Ф~ф- Ф Ф Ф Ф Ф Ф Ф Ф Ф 5 Ji- Рис. 63. Схема преобразования двоичного кода хуг в пятипозиционный код aecde, в котором два разряда всегда равны 1. Если отказаться от матричного представления, вышеприведенные выражения могут еще упроститься и принять следующий вид: a = ~x(yt v yi)\ b — z{xt v xy); с = xz(i v у) V xyzt; d = xy (i V 2) V xyzt; б = г/ (x v у) V ryzf . Избирательные схемы представляют собой особенно простой вид преобразований кодов. Задача здесь состоит в выборе одной и? 2л шин на основании ее номера» записанного в двоичной ся- 102
стеме счисления в регистре, емкость которого п двоичных ячеек. Таким образом, для четырех шин следующая таблица устанавливает подлежащее реализации соответствие между четырьмя возможными состояниями двух ячеек регистра и состояниями четырех шин. Эти соответствия задаются четырьмя переключательными функциями: х —а Ь\ г — аЬ\ у = аЬ; t — ab, 0 12 3 х у z b Во Линцц 0 0 1 0 1 2 1 0 3 г 1 ч п=2(Плинии.) вдиадов Рис. 64. Четырехканальный дешифратор. которые легко реализуются с помощью матричной схемы, показанной на рис. 64, а ь ь X У г t 0 1 0 1 1 0 0 0 0 1 1 0 0 1 0 0 1 0 0 1 0 0 1 0 1 0 1 0 0 0 0 1 На рис. 65 показана избирательная схема на 16 каналов (л=»4). Она содержит 64 диода, схематически показанных маленькими кружочками. Можно уменьшить число диодов до 48, осуществляя дешифирование в два приема (рис. 66). Начинают с выбора одной шины из четырех в первой группе с помощью триггеров В0 и В и а затем одной шины из четырех во второй группе с помощью триггеров В2 и JB3. Затем с помощью двух групп из четырех шин, среди которых только две шины (по одной в каждой группе) находятся под потенциалом «+», и дешифратора на- 32 диодах^ показанного на рис.. 66. выбирают один из 16 выходных
каналов. При этом отбирают простые последовательные совпадения вместо четырехкратных совпадений в случае схемы рис. 65. Экономия получается еще больше и для случая я=8 (256 каналов): ±1 Ф Ф Ф Ф + Ф Ф Ф в2 в, В0 Линии 0 0 0 0 0 0 0 0 1 1 0 0 1 0 г 0 0 1 1 3 0 1 0 0 4 0 1 0 1 5 0 1 1 0 6 0 1 1 1 7 1 0 ъ 0 8 1 0 0 1 9 1 0 1 0 10 1 0 1 1 11 1 * 1 в 0 12 1 1 0 1 13 1 1 1 0 14 1 1 1 1 15 0 1 2 3 U 5 6 7 8 9 10 11 12 13 1ч 15 п=ч(16 линий), 6U диода Рис. 65. 16-канальный дешифратор. Uканала 8диодо0 ^канала 8диодо6 Ф' Ф Ф ф ф ф ф ф ф ф ф ф ф ф ф , 0 1 2 3 ч- 5 6 7 8 9 10 11 12 13 W 15 Рис. 66. 16-канальный двухкаскадный дешифратор. одна избирательная схема требует 2 048 диодов, а трехкаскад- ная — только 608 диодов. СХЕМЫ НА ЭЛЕКТРОННЫХ ЛАМПАХ Логические схемы. Триод с сопротивлением в цепи анода реализует весьма просто операцию отрицания, поскольку его анодное напряжение уменьшается, когда возрастает его сеточное напряжение, и наоборот. Следовательно, положительный импульс, приложенный к сетке, дает на аноде отрицательный импульс (рис. 67). Уровни выходного сигнала, высокий и низкий, будут восстанавливаться до нормальных значений с помощью моста на сопротивлениях, включенного между анодом и источником отрица- 104
JL тельного смещения. Приложение к сетке серии импульсов, представляющих двоичное число, дает, следовательно, на выходе, если условиться проверять сигналы в начальные моменты, определяемые генератором тактов, как это уже было объяснено (рис. 46), обратный код этого числа. Таким образом, сигнал, получающийся в результате образования конъюнкции сигнала х и тактового сигнала представляет собой серию положительных импульсов, соответствующую сигналу х. Две операции, отрицание и конъюнкция, реализованы схемой на одной лампе, катод которой получает сигнал х, отрицание которого нужно получить, а управляющая сетка — отрицание тактового сигнала (рис. 68). Мы уже говорили '(рис. 56), что форма управляющего входного сигнала, .предназначенного для управления прохождением серии импульсов через вентиль зависит от средств образования отрицаний. Заметим еще, что прямая связь, показанная на рис. 67 и 68, может еще быть заменена трансформаторной связью. Как мы уже отмечали ранее (рис. 47), форма выходного сигнала обеспечивается диодами. Кроме того, мы увидим ниже (рис. 73), что one JL 1Г JU1_ н 1Л П П П П 1Л___Л . Рис. 67. Схема дополнения на триоде. RX Рис. 68. Другой вид схе- Рис. 69. Схема конъ- мы дополнения. юнкции на пентоде. рация отрицания может быть удачно скомбинирована с операцией восстановления амплитуды импульсов. Другие переключательные функции могут быть также реализованы с помощью электронных ламп. Пентод, показанный на рис. 69, 8—895 105
ер реализует операцию «И». В исходном состоянии управляющая и экранная сетки находятся под отрицательным потенциалом. Анодный ток может появиться только в том случае, если они одновременно окажутся под достаточным положительным потенциалом. Три триода, показанные на рис. 70, реализуют операцию «ИЛИ», поскольку достаточно, чтобы один из/них получил один положительный импульс на управляющую сетку, чтобы по общему катодному сопротивлению проходил ток и чтобы на выходе появился один по- • ложительный импульс. Мы не будем рассматривать эти схемы более подробно, так как интерес к ним быстро ослабевает. Восстановители импульсов. Проходя через описанные выше сеточные цепи диодов или линии задержки, которые будут рассмотрены в дальнейшем, импульсы подвергаются искажениям и ослаблению. Когда форма этих импульсов становится несовместимой с хорошей работой схем, их необходимо «исправить», т. е. по существу заменить их «новыми» импульсами от генератора тактов. Операция восстановления схематически представлена на рис. 71: X представляет сигнал, который нужно восстановить, R — сигналы генератора тактов, а 5 — восстановленный сигнал. Эта операция описывается переключательной функцией1: S = XRv SR. Рис. 70. Схемы дизъюнкции триодах. на Рис. 71. Восстановление формы импульса. 1 Здесь автор допускает неточность. Операция, соответствующая приведенной переключательной функции, не обеспечит восстановле- 106
Первый член соответствует началу восстановления, обеспечивая совпадение сигнала, который нужно регенерировать, с импульсом такта. Второй — длительности сигнала за счет поддержания выходного напряжения до конца тактового импульса. Это выражение упрощается и приводится к следующему виду: 5 = R(X V S) . *0 Н- R0- -и- R(SVX) Рис. 72. Принципиальная схема восстановления на диодах. Рис. 73. Пример восстановителя с трансформаторной связью. Соответствующая схема показана на рис. 72. Усилитель А отделяет цепь восстановления от схем, питаемых восстановленным сигналом. Он позволяет, кроме того, легко, если имеются два симметричных выхода, образовывать одновременно сигнал S и его отрицание. На рис. 73 показана в качестве примера комбинированная схема динамического элемента для восстановления и образования ния длительности импульса, поскольку сам сигнал 5 в соответствии с первым членом функции будет существовать только тогда, когда существует сигнал X. Для восстановления длительности необходима операция «задержки», рассматриваемая в теории временных переключательных функций. (Прим. ред.). 8* 107
отрицания. Здесь экономятся два диода, так как операция сИ» осуществляется самой лампой усилителя, которая получает на свою управляющую сетку сигнал (XvS), а на катод — дополнение R сигнала генератора тактов. Наконец, если восстановленный сигнал будет передаваться на некоторое расстояние, то нужно использовать обмотки с низким полным сопротивлением, а диоды формирования подключать к вторичной обмотке повышающего трансформатора. Из рис. 71 видно, что сигнал, подлежащий восстановлению, должен слегка опережать тактовый импульс, по которому произ- Рис. 74. Электронный триггер. Рис. 75. Условное обозначение триггера и различные виды его работы. водится восстановление. Благодаря запаздыванию, которое является результатом прохождения по схемам, предшествующим восстановителю, сигнал не будет восстановлен со своей начальной фазой. Как правило, в таких случаях искусственно вводится запаздывание таким образом, чтобы общее запаздывание импульса было немного меньше основного тактового интервала. Восстановленные импульсы оказываются, таким образом, задержанными точно на один тактовый интервал по отношению к входным. Для уменьшения этого запаздывания некоторые машины имеют несколько систем тактовых импульсов, сдвинутых одна по отношению к другой. Операция восстановления может быть также осуществлена с помощью транзистора. Элементарная запоминающая ячейка на триггере. Как мы уже указывали, запоминающая ячейка является устройством, обладающим двумя стабильными состояниями, которым произвольно приписывают значения 0 и 1 и способная изменять состояние под действием сигнала управления. В дальнейшем мы увидим, что запоминающие ячейки могут быть построены с помощью линий задержки и магнитных сердечников. Ограничимся на время изучением работы и некоторых применений электронного триггера. Эта схема (рис. 74) на двух лампах (или на одной двойной) имеет два стабильных состояния, в каждом 108
<2Г + из которых одна из ламп заперта, а по другой протекает некоторый анодный ток. На схемах мы будем указывать состояние проводимости лампы штриховкой. Можно изменить состояние системы или, как говорят, вызвать ее «перебрасывание», подавая отрицательный импульс на сетку проводящей лампы или, наоборот, — положительный импульс на сетку запертой лампы (асимметричное управление), либо подавая отрицательный импульс одновременно на две сетки или на два анода (симметричное управление)1. Эти два способа схематически показаны на рис. 75. При асимметричном способе импульс 1 вызывает переход из состояния 0 в состояние 1, тогда как импульс 0 вызывает сброс на нуль. Каков бы ни был способ запуска, в момент срабатывания на аноде предварительно запертой лампы получается отрицательный скачок напряжения. Положительный скачок наблюдается также на аноде проводящей лампы. Эти импульсы могут быть преобразованы в экспоненциальные импульсы с помощью дифференцирующей /?С-цепочки, как это уже описывалось (рис. 29). В случае асимметричного управления роль конденсаторов связи заключается только в ускорении процесса срабатывания; они обеспечивают цепь с низким индуктивным сопротивлением для высокочастотных составляющих сигналов, передаваемых от анодов к сеткам. Напротив, при симметричном управлении наличие конденсаторов связи существенно. Действительно, в мгновения, следующие немедленно за приложением отрицательного импульса к двум управляющим сеткам, две лампы запираются. При этом система находится в нейтральном состоянии, правда нестабильном. Не было бы никакой причины для преимущественного перехода в одно определенное состояние, если бы конденсаторы связи не запомнили в некотором роде предыдущее состояние. Действительно, рассмотрим состояние триггера, показанное на рис. 74 (левая лампа проводит). Сеточные напряжения отличаются одно от другого только на несколько вольт, а правый конденсатор заряжен до напряжения, большего, чем напряжение левого конденсатора, на величину, приблизительно равную падению напряжения на сопротивлении нагрузки левой лампы. Рассмотрим теперь состояние сразу после приложения управляющего импульса, когда две лампы заперты и как следствие отЗа анода находятся под высоким напряжением. Конденсаторы не успели разрядиться, и сетка правой лампы находится, следовательно, под положительным потенциалом по отношению к сетке левой лампы. Именно эта Рис. 76. Симметричное управление триггерами с помощью диодов. 1 В советской литературе принято называть асимметричное управление «запуском по одному входу», а симметричное управление— «запуском по счетному входу». (Прим. ред.). 109
асимметрия, обусловленная наличием конденсаторов связи, и является причиной перехода триггера в состояние, противоположное предыдущему. В случае симметричного управления можно сделать так, чтобы триггер был чувствителен к отрицательным импульсам, приложенным симметрично к двум сеткам, но при этом был бы нечувствителен к положительным импульсам. Это свойство дискриминации может быть усилено введением управляющих импульсов с помощью диодов (рис. 76), которые осуществляют двойную роль: с одной стороны, они не пропускают положительных импульсов; с другой стороны, они направляют отрицательные импульсы к сетке проводящей лампы. Применение транзистора в качестве коммутатора. Работа транзисторов базируется на свойствах таких полупроводников, как германий и кремний. По сравнению с электронными лампами они имеют меньшие габариты и потребляют гораздо меньше энергии. В настоящее время считают, что плоскостные триоды обладают характеристиками, достаточно воспроизводимыми для практического применения. Рассмотрим каскад с заземленным эмиттером на плоскостном триоде типа р-п-р (рис. 77, а). База образует с эмиттером и коллектором два диода, к первому из которых напряжение приложено в прямом направлении, а ко второму — в обратном направлении. Кроме того, обратное сопротивление диода база — коллектор зависит от прямого тока, проходящего через диод база— эмиттер. Это сопротивление уменьшается с увеличением тока эмиттера. Работа транзистора аналогична, следовательно, работе вакуумного триода, в котором сопротивление между катодом и анодом зависит от напряжения, приложенного к управляющей сетке. Она сопровождается усилением мощности, что позволяет от одного транзистора питать несколько других. Рассмотрим работу схемы на рис. 77, а. Если база соединена с землей, ток базы ie равен нулю, а ток коллектора iK очень мал, так что коллектор практически находится под напряжением пита- СХЕМЫ НА ТРАНЗИСТОРАХ /77777 Рис. 77. Аналогия между реле и полупроводниковым триодом, включенным по схеме с общим эмиттером, схема отрицания. ПО
ния, равным нескольким вольтам. Если теперь мы подадим на базу отрицательное напряжение в несколько десятых долей вольта, сопротивление между базой и коллектором станет очень малым по сравнению с сопротивлением нагрузки и коллектор окажется замкнутым на землю. С этой точки зрения транзистор совершенно аналогичен реле (рис. 77,6), контактная пластина которого находится под напряжением питания до гех пор, пока реле не возбуждено, и замкнутой на землю, когда оно возбуждено. Эта аналогия позволяет легко получать транзисторные схемы, подобные релейным1. Переключательные с х е м ы. Можно заметить, что работа схемы на рис. 77,6 сопровождается ттттт S-xvyvz-хул 0 Рис. 78. Прямое соединение Рис. 79. Схемы дизъюнкции отри- двух полупроводниковых цания. триодов. переворачиванием фазы; следовательно, это схема отрицания или дополнения. Если сигнал базы передает двоичное сообщение х, то напряжение коллектора представляет собой х. Можно, например, дать отрицательному напряжению значение 1, а напряжению земли — значение 0. Второй транзистор позволяет восстановить начальную информацию х (рис. 78). Следует отметить простоту прямой связи между двумя каскадами, невозможную при вакуумных лампах. В схеме «ИЛИ» на реле (рис. 79, а) по сопротивлению нагрузки течет ток, если по крайней мере одно из реле возбуждено. Точно также в варианте на транзисторах (рис. 79, б) протекает ток нагрузки и выходной зажим находится под нулевым напряжением, если по крайней мере один из транзисторов становится проводящим при приложении отрицательного напряжения к его базе. Если х, у 1 R. В. Brown and R. Н. В е t е г, Transistors: a new class of relays, Control Engineering, Dec. 1956. Ill
и г — сигналы базы, то выходной сигнал S определится из соотно шения S = x\jy\/z — x-y-z . На рис. 80 показаны схема «И» на реле и ее транзисторный вариант. Ток нагрузки может существовать, только если три транзистора одновременно становятся проводящими. Ток эмиттера каждого транзистора, равный сумме токов базы и коллектора, является током коллектора предыдущего транзистора. Для выходного сигнала будет справедливо соотношение: S = x-y-z = х v у v z . Элементарная запоминающая ячейка «а триггере. Комбинация двух реле или транзисторов, питающих один другой (рис. 81), позволяет образовать элементарную запоминающую ячейку. В схеме на реле, представленной на рис. 81, а» реле 2 возбуждено, и его контакт замыкает на землю обмотку возбуждения реле /. Чтобы заставить систему перейти в противоположное состояние, достаточно замкнуть на мгновение точку В на землю: обмотка реле 2 станет тогда закороченной, его контакт разомкнётся, реле / возбудится, и его контакт зашунтирует обмотку реле 2. После этого можно отсоединить точку В от массы. Предположим также, что транзистор 2 схемы на рис. 81 будет проводящим; его коллектор соединен с землей так же, как и база 112
транзистора /, который оказывается, таким образом, запертым. Замкнем на мгновение точку А на массу: транзистор 2 запрется, его коллектор вместе с базой транзистора 1 окажутся под напряжением, .и транзистор / начнет проводить, блокируя транзистор 2 путем замыкания его базы на землю. Можно теперь разомкнуть точку А. Использование транзисторов вместо электронных ламп приводит к значительному уменьшению габаритов и потребления энергии, а также и к увеличению надежности. БЕСКОНТАКТНЫЕ МАГНИТНЫЕ СХЕМЫ В устройствах вычислительных машин используются магнитные материалы двух типов. Ферриты или смеси разнородных кристаллов окислов с химической формулой MF204, где М — двувалентный Рис. 82. Принцип действия магнитной запоминающей ячейки. металл (Си, Mg, Mn, Ni, Zn), характеризуются повышенным объемным сопротивлением и пониженной остаточной индукцией. Их используют в виде сердечников тороидальной формы, внутренний, диаметр которых может быть меньше 1 мм, в частности, для построения запоминающих устройств матричного типа. С другой стороны, используются некоторые специальные сплавы, такие как американский дельтамакс и французский рэктимфи. Они обладают повышенной остаточной индукцией (15 000 гс). Производятся эти сплавы в виде тонких лент, которые наматывают и помещают в керамические каркасы1. Эти материалы, как это показывает рис. 82, обладают характеристикой намагничивания, близкой к прямоугольной. Такой сердечник может, следовательно, находиться после на-, магничивания в одном из двух противоположных по знаку состояний остаточного намагничивания, каждому из которых можно произвольно приписать значения 0 или 1. Состояние сердечника может быть проверено приложением импульса напряженности поля 1 На пониженных частотах до нескольких десятков килогерц ферриты значительно проигрывают но сравнению со специальными металлическими сплавами, но они позволяют достигать частот в несколько мегагерц. 113
Ht с помощью специальной обмотки. Тогда на второй обмотке индуктируется напряжение, пропорциональное изменению потока. Если проверяемый сердечник находился предварительно в положении 0 (изменение индукции Д£ь), то в выходной обмотке будет индуктироваться сигнал пониженной амплитуды (паразитный сигнал или шум заметно большей амплитуды). Если сердечник находился в состоянии 1 (изменение н _ индукции A Bs), то в выходной обмотке будет иметь место полезный сигнал. В дальнейшем мы пренебрежем шумами. Элемент на магнитном сердечнике. Рассмотрим теперь простейшую схему такого элемента, показанную на рис. 83. Сигналы генератора Н приложены к перзой обмотке. Сердечник в начале находится в состоянии 0, точка, определяющая его магнитное состояние, колеблется периодически между точками А и В. Предположим, что диод пропускает ток через нагрузку только в моменты уменьшения магнитной индукции. Во время изменения индукции от А до В на зажимах R, следовательно, получается небольшой сигнал, которым мы пренебрежем. Предположим теперь, что между двумя импульсами генератора мы приложили ко второй управляющей обмотке сигнал S противоположной магнитной полярности, способный перевести сердечник из состояния Л в С и затем в D после окончания сигнала При этом на зажимах R вследствие наличия диода не будет никакого выходного сигнала. Но следующий импульс генератора заставит магнитную индукцию в сердечнике измениться по кривой DBA и вызовет появление полезного сигнала на зажимах R. Таким образом, если сердечник предварительно сигналом S переведен в состояние 1, следующий сигнал генератора вызовет появление импульса в выходной цепи. Кроме того, эта схема представляет собой усилитель мощности, и энергия, передаваемая в нагрузку, под действием внешней энергии генератора может стать значительно больше энергии сигнала S. Это позволяет питать несколько сердечников выходным сигналом одного сердечника. Наконец, прямоугольная форма характеристики намагничивания Рис. 83. Выходной сигнал на зажимах сопротивления R, когда входной сигнал S появляется раньше импульса генератора тактов. 114
позволяет придать выходному сигналу прямоугольную форму, аналогичную форме выходного сигнала1. Следовательно, эта схема представляет собой схему восстановления импульсов. Передача, линии задержки на магнитных элементах. Рассмотрим теперь передачу в сердечник v двоичного н' п s s' W П П П n n f П П П в Рис. 84. Передача двоичной информации с одного тора на другой под действием двух сигналов генератора тактов Я и Я'. сообщения, записанного в сердечнике Т, под действием сигнала .S (рис. 84). Поскольку состояние сердечника может быть проверено только после приложения управляющего сигнала, подобная передача требует применения двух связанных сигналов генератора тактов Я и Я'. В этих условиях приложение к обмотке сердечника Т сигнала S в такте Я порождает сигнал S' в такте Я', который в свою очередь порождает выходнбй сигнал S" в такте Я. Выходной сигнал S" возникает, следовательно, в том же такте, что и входной 1 Здесь автор допускает неточность. Выходной сигнал будет иметь форму, близкую к форме- сигнала генератора, а не входного сигнала. Однако и последнее утверждение справедливо только в предположении об идеально прямоугольной форме характеристики намагничивания и при полном пренебрежении паразитными параметрами. (Прим. ред.) 115
сигнал S, но он запаздывает на один тактовый интервал 0, Рис. 84 дает схематическое представление о такой передаче; для каждого сигнала указан в скобках момент его появления. Рис. 85. Магнитное циркуляционное запоминающее устройство. Объединение в каскад некоторого количества таких схем позволяет образовать линию задержки на магнитных элементах. Таким образом, линия из шести сердечников, показанная на рис. 85, вводит запаздывание, равное трем тактовым, интервалам. Если, кроме того, эта линия замкнута сама на себя, она образует циркуляционный регистр, в котором непрерывно \_ Рис. 86. Ячейка магнитного циркуляционного запоминающего устройства. Л 1 1***- Sf о(г) t/r\-i >f Рис. 87. Схема дизъюнкции. Рис. 88. Схема юнкции. конъ- циркулирует двоичная комбинация, вначале введенная сигналами S. Частным случаем бесконтактного циркуляционного регистра является элементарная запоминающая ячейка (рис. 86), которая передает импульсы генератора тактов Я, начиная с момента, когда она получила импульс в такте И на свой вход S\. 116
Бес кон так тные магнитные переключательные схемы. Покажем теперь, как переключательные функции могут быть реализованы с помощью магнитных сердечников. Функция «ИЛИ» (рис. 87). Если один сердечник имеет две управляющие обмотки, так что каждый из сигналов X и У, действуя изолированно, будет способен перевести его из состояния 0 в состояние 1, то его выходной сигнал представляет собой дизъюнкцию двух входных сигналов (X или У, или два одновременно). Г 7 1— Л- у 1 ' У 1 , , л X Y I 1 1 ^00 V I (Н) Рис. 89. Схема запреще- н JLJLJIJ1_J1_TLJL_ у П_Л П TL_ н- -JLJULJLJLJLJL г- —Л (1_Л Рис. 90. Схема дополнения. Функция «И» (рис. 88). Один сердечник может реализовать операцию конъюнкции, если его характеристика намагничивания дает возможность переводить его из состояния 0 в состояние 1 только под действием любого из этих сигналов. Это возможно в случае применения ферритов, но едва ли возможно для сердечников из металлических сплавов, применение которых является предпочтительным в переключательных схемах, работающих на пониженных частотах, по причине большого коэффициента усиления, получаемого благодаря большой остаточной индукции. Вот почему операция конъюнкции обычно не используется в магнитных переключательных схемах. С>на сравнительно просто может быть заменена операцией запрета (XY). Запрет (рис. 89). Действие сигнала X может быть сведено на нет одновременным приложением сигнала У противоположной полярности. Таким образом реализуют функцию XY. В частности, если сигнал X образуется сигналами генератора тактов (рис. 90), выходной сигнал представляет собой обратный коц У, передаваемый в такты Н\ которые легко преобразовать, если это необходимо, с помощью второго сердечника. Схемы пересечения. На рис. 91 показаны две схемы элементов «И», составленные только из элементов «ИЛИ» и «ЗАПРЕТ». Первая реализует функцию А-(В) = А В . 117
Здесь сигнал а такта Я, задержанный на интервал 6, запрещается сигналом J3, который сам получается путем запрещения сигнала генератора Я' сигналом в такта Я. Вторая схема «И» (рис. 91) реализует функцию а-(а-Ъ) = а-в . Ее работа ясна из рисунка. Н 0- 7/' 0. н & н' & Рис. 91. Схемы конъюнкций, используемые только как схемы дизъюнкций и запрещения «Сумма по модулю 2» (рис. 92). Легкость реализации операции запрета имеет особенное значение при построении схем сумматоров по модулю 2: Л©£ = ab v а-в . Комбинация такой схемы со схемой «И», показанной на рис. 91 ,а, образует полусумматор (рис. 93). Триггер или элементарная запоминающая ячейка (рис. 94). Дополнение к схеме рис. 86 запрещающего входа s0 приводит к схеме триггера (рис. 94), которая генерирует сигналы Я, как только она получает импульс S\ такта Я и до тех пор, пока она не будет «закрыта» импульсом запрета So такта Я'. Обра зоват ель дополнения (рис.95). Выходной сигнал схемы на рис. 95 образуется из сигнала а, имеющего запаздывание, равное 28, если триггер (обведенный штрих-пунктиром) находится в состоянии 0, и его обратного кода, если триггер находится в состоянии 1. Переключим теперь триггер, предполагаемый 118
119 Рис. 94. Генератор 1.
сначала в состояний 0, с помощью первого импульса1 сигнала, приложенного к Л, с помощью связи, показанной прерывистой линией. Этот первый импульс передается без искажения на выход, тогда как остальная часть сигнала А будет передаваться обратным кодом. Выходной сигнал представляет собой, следовательно, дополнение к Л. Генератор кодов (рис. 96). На рис. 96 можно видеть несколько примеров применения операции запрета для образования! различных кодов. Матричное запоминающее устройство на магнитных сердечниках. Работа матричного запоминающего устройства на ферритовых сердечниках основана на использовании схемы «И» (рис. 88). Торы с внешним диаметром около 2 мм располагаются в виде квадратной или прямоугольной матрицы (рис. 97). Обмотки образуются проводниками, пронизывающими торы и образующими вертикальные и горизонтальные шины матрицы. Предположим, что в начале все торы будут в состоянии 0. Предположим также, что приложение положительного импульса к горизонтальной или вертикальной шине недостаточно для того, чтобы связанные с ней торы Изменили свое состояние. Наоборот, одновременное приложение положительного импульса к горизонтальной и вертикальной шинам 1 Этот первый импульс представляет двоичную цифру наименьшего разряда. a0-j -oQ" eQh LA Aec/n/S-D AeantS*t Рис-. 95. Образователь дополнения Рис. 96. Генераторы кодов. 120
вызывает изменение состояния тора, находящегося в точке их пересечения (рис. 88). Наоборот, чтобы проверить состояние тора, нужно приложить одновременно отрицательный импульс к двум связанным с ним шинам. Если тор находится в состоянии 0, то в проводе считывания, пронизывающем все торы последовательно, будет индуктироваться сигнал с малой амплитудой. Если, наоборот, проверяемый тор находится в состоянии 1, он переходит в состояние 0 и Рис. 97. Матричное запоминающее устройство на ферритовых сердечниках. соответствующее изменение потока наводит значительно больший сигнал в проводе считывания. К сожалению, этот процесс считывания разрушает считываемую информацию; если тор находился в состоянии 1, то это состояние должно быть немедленно восстановлено добавочными схемами. Должны быть также приняты меры к уменьшению влияния паразитных напряжений, наводимых в проводе считывания небольшими изменениями потока, которые имеют место в невыбранных сердечниках вследствие того, что форма характеристик намагничивания отличается от прямоугольной. Очевидно, необходимо, чтобы сумма этих паразитных сигналов не оказалась сравнимой с амплитудой полезных сигналов. Можно, например, пронизывать торы проводом считывания попеременно то в одном, то в другом направлениях таким образом, чтобы паразитные сигналы в среднем взаимно уничтожались. Мы не рассматриваем подробно этих вопросов, но их технологическая важность тем не менее значительна. Сейчас изготовляются матрицы с несколькими тысячами торов при времени обращения порядка \ мк-сек. Однако необходимость 121
восстановления начальной информации после считывания не позволяет осуществить два последовательных считывания, разделенных промежутком времени, меньшим, чем десяток микросекунд. Матричные системы удобны для построения параллельных запоминающих устройств. Тогда используют столько же матриц, сколько разрядов в слове. Цифры одного и того же числа занимают одинаковые позиции в различных матрицах. В настоящее время рассматривается возможность конструирования быстродействующих запоминающих устройств емкостью порядка миллиона двоичных цифр. Среди усовершенствований, ожидаемых в ближайшем будущем в области матричных запоминающих устройств на ферромагнетиках, укажем, в частности, на предстоящий выпуск фирмой RCA керамических печатных пластин с отверстиями, каждое из которых позволяет записывать одну двоичную цифру. Таким образом, получают плотность информации более чем 50 двоичных цифр на 1 см2 с временем обращения в несколько десятков долей микросекунды. Запоминающие устройства на тонкой магнитной пленке. Новая техника, основанная на использовании тонких магнитных пленок и печатных схем, обеспечивает простое и автоматическое производство матричных магнитных запоминающих устройств с временем обращения порядка наносекунд, способных работать в более широкой области температур, чем ферриты1. Слой ферромагнитного материала (железо-никелевый сплав) о толщиной в 2 000 А наносится распылением в вакууме при наличии магнитного поля на круглый стержень из горячего стекла диаметром 5 мм. Предпочтительное направление намагничивания совпадает с осью стержня (рис. 98). Петля гистерезиса имеет прямоугольную форму в этом направлении и почти линейную — в перпендикулярном направлении. При отсутствии (внешнего магнитного поля магнитный диполь, ориентированный по предпочтительному направлению, имеет два стабильных состояния, соответствующих ориентациям NP (состояние Р или 1) и PN (состояние N или 0) на рис. 98. Если приложено внешнее магнитное поле, то оно вызывает поворот диполя, который после снятия внешнего поля возвращается в ближайшее положение Р или N. Таким образом можно изменять информационное содержимое ячейки. Рис. 98 показывает, как может быть осуществлена операция считывания и записи. Состояние ячейки проверяется с помощью управляющего поля считывания, которое стремится установить диполь в направлении R. Вращение от N и R индуктирует отрицательный сигнал в выходном проводнике, а вращение от Р к R — небольшой отрицательный сигнал, сопровождаемый большим положительным сигналом. После снятия поля считывания диполь возвращается в состояние N, что вызывает индуктирование другого положительного сигнала в выходном проводнике. Если диполь был вначале в состоянии Р, нужно, следовательно, восстановить это состояние, разрушенное при считывании. Операция записи требует двух полей: одного поля управления записью и поля информации 0 или 1. Поле информации 0 вычитается из поля записи, в то время 1 В i 11 m a n n, Using thin films in high-speed memories, Electronics, Juin 1959, 5. 122
как поле информации 1 добавляется к нему. Напряженность поля записи равна 2/3 магнитного порога, а напряженность поля информации — 7з- Во время считывания нуля диполь остается в состоянии 0; когда считывают 1, он принимает положение W, затем направление Р после снятия полей. В действительности дело обстоит несколько сложнее, и одна двоичная ячейка состоит из двух стержней, а не из одного. СХЕМЫ НА ПЕРЕМЕННОМ ТОКЕ Феррорезонансные схемы. Хотя описание явления фер- рорезонанса имело место в публикациях, появившихся в начале века, только в 1952 г. после работ проф. Гарсия Сантесмаса из Мадридского университета в Лаборатории вычислительной техники 1 Ls^l 1 ^ ряс< 101. Влияние частоты на характери- Рис. 99. Последова- Рис. 100. Параллель- стики параллельной тельная феррорезо- ная феррорезонансная феррорезонансной нансная схема. схема. схемы. Гарвардского университета, возглавляемой Г. Айкеном, и работ Исборна внимание было привлечено к возможностям, открываемым феррорезонансом для реализации триггеров и переключательных схем для цифровых автоматических вычислительных машин. Работы в этом направлении продолжаются в лабораториях Института электротехники и автоматики Мадридского университета под руководством проф. Сантесмаса, так же как в исследовательских лабораториях фирмы IBM в Цюрихе. В линейной колебательной схеме «каждому значению тока соответствует определенное значение напряжения, и наоборот. Дело обстоит иначе, если один из элементов схемы, как правило, индуктивность, обладает нелинейной характеристикой. Таким образом, в схеме с последовательно включенными элементами, питаемой напряжением с постоянной амплитудой (рис. 99), может существовать область работы, в которой для одного и того же напряжения возможны два различных устойчивых режима. Точно так же для параллельной схемы, питаемой током постоянной величины (рис. 100), возможны два устойчивых режима для одной и той же величины тока возбуждения. Наличие этих двух режимов зависит от частоты, JK3K это показано на рис. 101 для параллельной схемы. 124
Эти характеристики могут быть построены на основании свойств сердечников простым графическим методом. Для построения триггера с асимметричным управлением достаточно одного сердечника. Но для построения триггера с симметричным управлением, образующего двоичный каскад, нужны уже две ветви, соединенные последовательно или параллельно с помощью соответствующего индуктивного сопротивления (рис. 102). С другой стороны, для подачи управляющего сигнала к сердечнику, находящемуся в состоянии «низ»1, необходимы диоды. Смещение для этих диодов образуется путем выпрям- Рис. 102. Феррорезонансные триггеры (принципиальная схема). Рис. 103. Влияние смещения на характеристики параллельной ферро- резонансной схемы. ления тока несущей частоты. Управляющие сигналы могут подаваться либо на самостоятельные раздельные обмотки, либо на один провод, пронизывающий оба сердечника, либо через индуктивную связь со специальной обмоткой, не связанной с сердечником. Может" оказаться выгодным также использовать специальные сердечники с несколькими магнитопроводами. Такие сердечники получили название «магнисторов»2 (см. ниже). Подобные элементы могут использовать сердечники с любым числом магнитопроводов, большим двух. Таким образом, можно строить кольцевые счетчики на магнитных сердечниках. В работах Г. Сантесмаса было показано, что имеется также возможность построения схемы триггера на одном сердечнике, по которому протекает постоянный магнитный поток смещения. Форма характеристики элемента зависит от величины смещения, как это показано на рис. 103 для случая параллельного соединения. Если схема находится в состоянии А и ток в обмотке смещения изменяет свою величину от Ida до Ida, то состояние А перестает быть устой- 1 Состоянием «низ» автор называет такое состояние ферроре- зонансного элемента, когда напряжение на индуктивности соответствует более низкому из двух возможных значений. (Прим. ред.) 2 Элементы, основанные на сердечниках с несколькими магнитопроводами, называются также трансфлюксорами. Это название более распространено, и им обычно пользуются в отечественной литературе. (Прим. ред.) 125
чивым, й схема после возврата к начальным условием пёрёхоДйт в состояние В. Наоборот, для перехода из состояния В в состояние А величина тока, текущего в обмотке смещения, изменяется от Ida ДО Idea. Для того чтобы избавиться от нечетных гармоник, индуктируемых в управляющей обмотке и обмотке смещения, необходимо для Сигнал Возбуждение Смещение Рис. 104. Распределение потока в транефлюк- соре. Рис. 105. Феррорезонансный триггер на транс- флюксоре. построения одного триггера использовать четыре сердечника. Гораздо удобнее применить'специальную магнитную цепь, как, например, магнистор. Как показано на рис. 104, поток, вызываемый обмоткой возбуждения, на который наложен поток смещения, протекает в основном в направлении линии напряженности /. Поток, возбуждаемый управляющей обмоткой, протекает вдоль линий 2 и 3. Часть управляющего потока 3 прибавляется к потоку возбуждения, в то время как часть управляющего потока 2 вычитается «з потока возбуждения. Благодаря этому напряжение, индуктируемое в управляющей обмотке изменениями потока возбуждения, не содержит нечетных гармоник и, в частности, составляющей основной частоты. Таким образом, имеется возможность построения схемы триггера на единственном магнисторе (рис. 105), работающей с частотой переключения до 600 кгц при несущей частоте 8,5 мгц. На ос- 126
нове такого элемента Могут строиться схемы обыкновенных м на- капливающих счетчиков. Параметрон. Параметрон представляет собой переключательный элемент, еще недостаточно хорошо известный в Европе и заслуживающий того, чтобы мы остановились несколько более подробно на его описании. Принцип действия параметрона основан на параметрическом возбуждении колебаний в цепи, один из элементов которой, индуктивность или емкость, периодически изменяет свою величину под воз- Возбуждение (постоянный ток и пе/ю менньш 2Мгц) Рис. 106. Схема параметрона. действием внешнего возмущения. Параметрические колебания, имеющие частоту, меньшую частоты возбуждения, могут иметь две различные фазы по отношению к некоторой опорной фазе, 0 или те. По желанию можно установить на выходе параметрона любую из этих фаз с помощью внешнего сигнала, подаваемого до начала возбуждения параметрических колебаний. Схема параметрона показана на рис. 106. Переменная индуктивность L составляется из двух обмоток, намотанных на ферритовых сердечниках с внутренним диаметром 2 мм. Трансформатор Т выполнен на ферритовом сердечнике с внутренним диаметром 4 мм. Приложение к индуктивности L периодического сигнала возбуждения с частотой 2 мгц, наложенного на постоянный ток смещения, вызывает появление параметрических колебаний частоты 1 мгц, фаза которых (0 или те) определяется фазой входного сигнала. Амплитуда параметрических колебаний постоянна и не зависит от фазы входного сигнала. Отношение амплитуды выходного сигнала к амплитуде входного сигнала может достигать значений 60—70 дб. Рис. 107 иллюстрирует метод передачи информации по цепи, состоящей из последовательно (включенных параметронов. Токи воз- * Это утверждение автора справедливо только для того случая, когда в результате параметрического возбуждения генерируется первая субгармоника частоты возбуждения. В общем случае может генерироваться любая субгармоника. Например, если частота параметрических колебаний будет в 3 раза ниже частоты возбуждения, 127
Рис. 107. Передача информации в цепи параметров. т 1 —vwww- vw—towfw- -АЛЛАЛЛЛг— Рис. 108. Трехфазные сигналы возбуждения для цепи параметров (рис. 107). / Л ш I и ш Рис. 109. Условное обозначение схемы на рис. 107. буждения с частотой 2 мгц разделены на три группы: /, // и ///. Относительное расположение этих групп во 'времени показано на рис. 108. То обстоятельство, что соседние группы перекрываются, обеспечивает возможность передачи информации от параметрона, питаемого током одной группы, к параметрону, питаемому током следующей группы. Длительность периода Т соответствует частоте 10—30 кгц. На рис. 109 дано символическое обозначение цепи параметро- нов, показанной на рис. 107. На рис. ПО показаны обозначения основных переключательных элементов. Операция дополнения образует- то эти колебания смогут иметь три различные фазы относительно опорной и т. д. Выбор данной субгармоники осуществляется настройкой индуктивности с помощью конденсатора, причем обычно конденсатор подключается параллельно выходной обмотке, а не входной, как показано у автора. (Прим, ред.). 128
ся просто взаимным переключением концов обмотки входного трансформатора. Схема порогового элемента не имеет аналогов среди элементов, выполняемых на основе других деталей. rot Пороговая схема Схемами" Схема МИ* а) б) в) Рис. ПО. Основные переключательные схемы на па- раметронах. Параметроны Информация (32 ячейки) 1Г *0 V, У2 с \ г Л С \ С С л с о ч ( ) ч \ г ) ч t J ч *\ г ) \ Л С У \ ■\ ( ) ч ^ С ) с J \ \ г ) \ -\ ( л -\ г ) \ Л С л с ) \ Л ( J \ 2 ч I г J \ \ ( J ч ^ с J ч ( ) \ ^ ( J ч ^ С ) \ \ г ) \ J ч J ч J ч J ч ) ч ) Рис. 111. Матричное запоминающее устройство на ферритовых сердечниках со считыванием без стирания. Матричное запоминающее устройство на ферритовых сердечниках со считыванием без разрушения. Тороидальные сердечники с внутренним диаметром 1 мм пронизываются шинами таким образом, что они образуют матрицу (рис. 111). Каждый сердечник может находиться в двух состояниях, соответствующих значениям остаточной индукции -\-Вг и —Вг (рис. 112). Считывание производится путем пропускания по шине Xf соответствующей выбранному сердечнику, тока с частотой 500 кгц и путем определения фазы второй гармоники напряжения, индуктируемого через посредство сердечника в соответствующей шине Y. В зависимости от состояния сердечника эта фаза может быть либо 0 либо те. Таким образом, считываемый сиг- 9—895 129
рис. Ill \ Рис. 113 нал может быть непосредственно использован в качестве входного сигнала иараметрона. Запись двоичного сообщения в данный сердечник осуществляется путем приложения сигнала с частотой 1 мгц к шине Y и сигнала с частотой 500 кгц к шине X. Из рис. 113 видно, что в результате сложения этих сигналов образуется положительный импульс, переводящий сердечник в состояние -\-вч* Заменяя фазу сигнала частоты 1 мгц на противоположную, можно получить отрицательный импульс, переводящий сердечник в состояние —вч. Из сказанного ясно, что описанный метод обладает следующими преимуществами; во-первых, используются только сигналы переменного тока, во-вторых, при считывании не разрушается информация, хранящаяся в сердечниках, и, наконец в-третьих, схема легко согласуется с параметронами. СХЕМЫ НА СВЕРХПРОВОДЯЩИХ ЭЛЕМЕНТАХ (КРИОТРОНЫ) Все металлы при охлаждении их до очень низких температур проявляют свойство сверхпроводимости, которое состоит в том, что при понижении температуры ниже определенного значения, различного для разных металлов, но находящегося в пределах от 2 до 8° К, их электрическое сопротивление резко падает до с трудом измеримой величины. С другой стороны, явление сверхпроводимости зависит также от магнитного поля, возбуждаемого в металле, как это видно из рис. 114. Если температура металла несколько ниже значения, соответствующего появлению сверхпроводимости, при отсутствии магнитного поля (пунктирная линия), то, как видно из рисунка, достаточно небольшого магнитного поля, чтобы вывести металл из области сверхпроводимости. Криотроном называется переключательный элемент, использующий описанное явление (рис. 115) и состоящий из отрезка прово- 130
Область нормального " ^сопротивления да, вокруг которого расположена обмотка, обтекаемая током управления. При отсутствии тока управления сопротивление отрезка провода практически равно нулю, но при наличии управляющего тока оно приобретает конечное значение. Криотрон ведет себя, таким образом, как размыкающий контакт электромеханического реле. На приводимых ниже схемах криотроны будут обозначаться символами, показанными на рис. 115,6. Направление управляющего тока не оказывает никакого влияния на работу устройства. Криотроны работают при температуре кипения гелия, равной 4,2° К. Отрезок провод- кика изготовляется из ниобия, критическая температура для которого при отсутствии магнитного поля только на несколько десятых долей градуса выше указанной. Управляющая обмотка изготовляется из тантала, у котрого критическая температура близка к 8° К, т. е. достаточно высока для того, чтобы при всех используемых значениях магнитного поля .материал оставался в состоянии ЮВерХПрОВОДИ- МОСТИ. В некоторых экспериментальных схемах достигались длительности переключения порядка 0,1 мксек* На рис. 116 показано несколько схем переключательных элементов, использующих криотроны и построенных ана- Температура Рис. 114. Влияние магнитного поля на область сверхпроводимости. * Криотрон благодаря сравнительно большим паразитным индуктивн остям обладает весьма вязким быстродействием порядка 1 мсек и выше. Длительность переключения поряд- ' ка долей микросекунды достигалась при работе с элементом персистатроном, также использующим явление сверхпроводимости, но выполненным на основе тонких проводящих пленок и имеющим принцип действия, отличный от криотрона. (Прим. ред.) ЪПроводмин Цепь управления а) б) Рис. 115. Криотрон и его условное обозначение. 9* 131
логично соответствующим релейным схемам. На рис. 116,а показана схема, реализующая операцию дополнения и имеющая несколько выходов. Эта схема аналогична реле с несколькими размыкающими контактами. Схема, показанная на рис. 116,6, соответствует разомкнутой цепи, если хотя бы одна из управляющих обмоток обтекается током. Таким образом, если используются все три обмотки, схема реализует функцию АБС. Значит, если образовать дополнение к каждому входному сигналу, то будет реализоваться обычная операция конъюнкции, как показано на рис. 116,в. Образование дополнения к выходному сигналу позволяет (реализовать операцию дизъюнкции, как показано на рис. 116, г. Наконец, схема триггера, показанная на рис. 116, dt (представляет собой элементарную запоминающую ячейку. Ток, идущий от источника питания, разветвляется по двум проводникам, каждый из которых соединен последовательно с об%< моткой управления другого криотрона. Система обладает двумя устойчивыми состояниями, в каждом из которых один из проводников «проводит, а второй — нет. Действительно, ток, протекающий по обмотке, блокирует прохождение тока по проводнику, связан-, ному с этой обмоткой. Выше мы видели, что схемы триггеров или элементов, обладающих двумя стабильными состояниями, могут строиться на основе электронных ламп, транзисторов, магнитных сердечников и криотро- Рис. 116. Несколько переключательных схем на криотронах. ПРИМЕРЫ ПРИМЕНЕНИЯ ТРИГГЕРОВ 132
нов. В дальнейшем на схемах мы будем изображать триггеры, как показано на рис. 117, с помощью прямоугольника, разделенного на две части, причем .заштрихованная часть соответствует проводящей лампе, проводящему транзистору и т. д. Управляющие сигналы могут подаваться или па одну половину триггера (асимметричное управление), или одновременно на обе половины (симметричное управление). В^последнем случае имеется возможность либо за счет свойств самой схемы, либо с помощью тгг Импульсы счета-у-^п^-у^у^ Левый анод в0 Вход Bj Левый анод В/ Вход В2 бебый анодВ2 Рис. 117. Двоичный счетчик. добавочных диодов сделать триггер чувствительным к импульсам одной определенной полярности. Хотя примеры, приводимые ниже, относятся каждый раз к какому-либо определенному типу триггеров, терминология, используемая в этом параграфе (анод, сетка и т. д.), имеет целью ориентировать все высказываемые соображения на случай триггеров с электронными лампами. Счетчики. Свойство дискриминации входных импульсов по , знаку дает возможность строить двоичные счетчики путем последовательного соединения некоторого количества триггеров (рис. 117), каждый из которых управляется симметрично сигналом, снимаемым с анода предыдущего триггера. Например, напряжение на левом аноде триггера В0 имеет форму прямоугольных импульсов, следующих с частотой, в 2 раза меньшей частоты входных импульсов этого триггера. Дифференцирование этого сигнала #С-цепочкой связи приводит к получению последовательности импульсов попеременно то положительных, то отрицательных. Положительные импульсы не воздействуют на триггер Ви благодаря чему этот триггер будет перебрасываться 1 раз на каждые два переброса В0 и т. д. Можно построить также систему с п стабильными состояниями или схему пересчета на п, соединяя в кольцо п триггеров с асим- 133
Рис. 118. Схема пересчета на три. 0 ГШ и - Импульсы Статические напряжения Рис. 119. Регистр параллельного действия на триггерах. Рис. 120. Запись в регистре на триггерах числа, передаваемого последовательно.
метричным управлением. В состоянии, изображенном на рис. 118, только триггер В0 чувствителен к входным отрицательным импульсам. Благодаря этому юн перебросится под воздействием первого же входного импульса и «в свою очередь заставит переброситься триггер В\, посылая отрицательный импульс на сетку его левой лампы, которая проводила в исходном состоянии. В этот момент состояние кольца переместится на одну позицию вправо. Триггер Вх играет теперь роль, которую первоначально играл триггер B0i и т. д. Легко построить схему пересчета на 10 или декаду, обладающую десятью стабильными состояниями, управляя пентадой или схемой пересчета на 5 выходными сигналами одного триггера с симметричным управлением. Регистры. Покажем теперь, как можно использовать триггеры для построения регистров. Регистр емкостью n двоичных ш ИЗ ш JUUL Рис. 121. Последовательное считывание содержимого регистра на триггерах. разрядов состоит из n триггеров (рис. 119). Содержимое этого регистра может выдаваться во внешнюю цепь с помощью n вентилей, соединенных с выходами 1 триггеров (с анодами ламп, не проводящих iB состоянии 1). На вторые входы этих вентилей поступают импульсы чтения. Для записи в регистр параллельного числа достаточно подать соответствующие импульсы на входы 1 триггеров. Даже в машине последовательного действия часто оказывается необходимым записать Af-разрядное число, передаваемое последовательностью из n импульсов, в параллельный регистр. Такая необходимость может возникнуть, например, при управлении коммутатором или дешифратором. Для такой записи последовательность из n импульсов посылают в линию задержки, состоящую из n—1 ячейки. Каждая ячейка вносит запаздывание, равное периоду следования импульсов 6 (рис. 120). В тот момент, когда первый импульс последовательности поступает на выход последней ячейки линии задержки, остальные импульсы также поступают на выходы соответствующих ячеек. Теперь достаточно подать один управляющий импульс на входы n вентилей, чтобы все импульсы, представляющие число, оказались переданными параллельно на входы 1 ^-разрядного триггернопо регистра. С другой стороны, информация, хранящаяся в параллельном регистре, может быть преобразована в последовательную форму, если последовательно открывать выходные вентили с помощью импульсов, образуемых секционированной линией задержки (рис. 121). 135
Эти операции, называемые также иногда операциями статиза- ции и динамизации, могут выполняться также с помощью сдвигового регистра, показанного на рис. 122. Для его построения достаточно соединить выходы 1 каждого триггера со входами 1 последующего триггера с помощью элементов задержки и элементов, пропускающих импульсы только одного знака (положительного в случае, показанном на рис. 122). Если ко всем триггерам одновременно приложить импульс сброса на нуль, то те из них, которые предварительно находились в состоянии 1, вызовут переброс следующих непосредственно за ними триггеров, если они находились перед этим в состоянии 0. Таким образом, комбинация единиц я нулей, записанная в триггере, после каждого импульса сброса 1 Чтения Установка О R=задержка а прием t= 0 1 0 0 0 t=6 1 0 0 t = Zd 0 1 1 и \ *=3в t 0 1 t Рис. 122. Регистр сдвига. на нуль будет оказываться сдвинутой на одну позицию вправо. Последовательность N импульсов сброса на нуль вызывает появление на выходе «чтения» содержимого регистра в форме последовательности импульсов и в то же время сброс на нуль самого регистра. С другой стороны, если на вход «запись» подать последовательность из N импульсов, представляющую Л^-разрядное двоичное число, а в промежутках между этими импульсами подать N импульсов сброса на нуль, то число окажется записанным в регистре и, следовательно, преобразованным в параллельную форму. Подобное устройство может служить, с одной стороны, для преобразования формы представления числа из последовательной (в параллельную и из параллельной в последовательную и, с другой стороны, для изменения скорости передачи числа. В последнем случае достаточно использовать различные скорости записи и считывания. Структура параллельного запоминающего устройства на триггерах. На рис. 123 показано не что иное, как электронный вариант релейной схемы рис. 21. Пусть, например, нужно передать в течение фазы Ф\ содержимое регистра Rq в регистр запоминающего устройства по команде Ml. Под управлением счетчика адресов команд на выходе s0 коммутатора запоминающего устройства установится уровень. « +», в то время как на всех 136
остальных выходах будет иметь место уровень «—». Поступление импульса на вентили, управляющие чтением, приведет к открыванию вентилей чтения триггеров регистра R0 и к параллельной передаче содержимого этого регистра в шины р. Если к этому моменту вентили записи регистра команды оказываются открытыми импульсом число, прочитанное из регистра R0, запишется в ML Рис. 123. Передача содержимого триггеров в регистр команд. Импульсы и играют ту же самую роль, что и токи возбуждения одноименных реле в релейной машине, рассмотренной выше. Работа этой машины существенно ничем, за исключением скорости, не отличается от работы параллельной электронной вычислительной машины. Просто в последнем случае контакты заменяются (Вентилями, управляемыми синхронизирующими импульсами либо непосредственно, либо с помощью дешифратора команд. Накапливающий счетчик. Описанный способ передачи используется в схеме параллельного накапливающего счетчика, показанной на рис. 124. В этом устройстве сумма содержимого ре- 10—895 137
гистра А и вновь поступающего числа предварительно помещается в регистр S, а затем уже передается в регистр А, заменяя ранее хранившееся там число. Операция выполняется за четыре такта. Вначале регистр S сбрасывается на нуль с помощью импульса i\, затем ъ этот регистр при открывании вентилей с помощью импульса i2 поступают разряды суммы, вычисленные сумматорами. К этому Поступающие числа Рис. 124. Двоичный сумматор. Поступающие числа Рис. 125. Преобразование двоичного счетчика в сумматор; поступающие числа складываются последовательно. моменту регистр А сбрасывается на нуль импульсом н. Наконец, в результате открывания вентилей импульсом содержимое регистра 5 передается в регистр А. Другие типы параллельных накапливающих счетчиков. Двоичный счетчик, показанный на рис. 117, может быть легко преобразован в накапливающий счетчик, если снабдить каждый каскад независимым входом, как показано на рис. 125. Последовательные разряды числа, подлежащего суммированию с содержимым счетчика, последовательно в форме импульсов подаются на соответствующие входы. После подачи каждого импульса 138
должно пройти некоторое время, достаточное для распространения сигнала переноса в худшем случае через все каскады до самого конца регистра: 1 1 1 / vv\ 1111 + 1 1 0 0 0 0 Простота накапливающего счетчика такого типа, достигаемая ценой малого быстродействия, объясняется тем обстоятельством, что каждый триггер здесь выполняет две различные функции. С Поступающая у b цифра Перенос в следующий наснад у Импульс на сложение Перенос из предыдущего каскада Рис. 126. Каскад двоичного сумматора со схемой переноса. одной стороны, он автоматически запоминает сумму по модулю 2 от числа импульсов, .пришедших на его вход, с другой стороны, каждый раз, переходя из состояния 1 ib состояние 0, он генерирует сигнал переноса. Посмотрим теперь, как можно усложнить схему, чтобы обеспечить одновременность передачи сигналов переноса. В схеме на рис. 126 разряды Ь числа, подлежащего суммированию, поступают параллельно на переключательную схему, образующую суммы по модулю 2 разрядов Ь и сигналов переноса г от предыдущих каскадов. Эта же схема образует сигналы переносов для трех переменных а, Ь и г по формуле R = Ы V a (b V г) . По истечении интервала времени, достаточного для того, чтобы в самом худшем случае сигнал переноса успел распространиться от одного конца регистра к другому, на выход вентиля РА поступает импульс суммирования, и в результате этого на симметричный вход триггера поступает импульс в том случае, если сумма по модулю 10* 139
2 сигналов b и г равна единице. Необходимо отметить, что ,во всем, что касается распространения сигналов переноса, данная схема полностью аналогична релейной схеме, показанной на рис. 10. ЛИНИИ ЗАДЕРЖКИ; ЦИРКУЛЯЦИОННЫЕ ЗАПОМИНАЮЩИЕ УСТРОЙСТВА Принцип действия. Рис. 127 иллюстрирует принцип действия линии задержки, способной хранить W-разрядное последовательное двоичное число. В сущности говоря, линия задержки обусловливает запаздывание во времени поступающих на ее вход импульсов на величину, несколько меньшую /V0, где б — длительность Чтение — Запись { 1см ' ллл_ Тактовые импульсы А/в Рис. 127. Принципиальная схема циркуляционного запоминающего устройства. основного тактового интервала. Импульсы, поступающие с выхода линии, восстанавливаются ,в результате процесса, описанного выше, и снова подаются на ее вход. Подобное устройство представляет собой, следовательно, динамический регистр, в котором записанное в него число, представленное последовательностью импульсов, непрерывно циркулирует в замкнутой цепи. Для записи числа необходимо на время одного малого цикла открыть вентиль Р2 и закрыть вентиль регенерации Pi. Поступающее на вход число запишется в результате этого на место предыдущего. Для чтения без разрушения необходимо открыть вентиль Р3 на время одного малого цикла. Если, как это имеет место в общем случае, первый импульс последовательности представляет младший разряд, введение дополнительного элемента задержки длительностью 6 приведет к сдвигу содержимого регистра на одну позицию в сторону старших разрядов. Если одна и та же линия задержки содержит несколько чисел, то полный период циркуляции в ней называется большим циклом. Входной и выходной вентили должны в этом случае открываться на время одного малого цикла, соответствующего числу, подлежащему записи или чтению. . Положение этого малого цикла внутри большого цикла представляет собой «временной адрес» соответст- 140
вующего числа. Если запоминающее устройство состоит из совокупности одинаковых линий задержки, номер линии, содержащей данное число, будет называться его «пространственным адресом». Выбор адреса в запоминающем устройстве, состоящем из нескольких линий задержки, разбивается, следовательно, на две различные операции: операцию выбора пространственного адреса, которую мы уже изучали, и операцию выбора малого цикла внутри большого цикла этой линии или операцию выбора временного ад- Шль/й .цикл г] Распределитель циклов Кольцо 2п Шшифра- на Параллельный регистр «а Малый цикл Рис. 128. Дешифратор малого цикла. реса. Эта последняя операция может выполняться, например, способом, показанным на рис. 128. Порядковый номер малого цикла, подлежащего выбору, записывается в параллельном га-разрядном триггерном регистре, управляемом коммутатором пространственного выбора. Этот последний выбирает один из 2п выходов распределителя малых циклов, представляющего собой по существу кольцевой 2Л-разрядный счетчик, управляемый специальными импульсами, фиксирующими начала малых циклов. На соответствующем выходе действует уровень « + » в течение выбранного цикла. Этот уровень может быть использован для открывания вентилей считывания или записи избранной линии в зависимости от сигнала дешифратора команд. Другой метод выбора временного адреса показан на рис. 129. Здесь номер малого цикла, подлежащего выбору, записывается в динамический регистр, выполненный на линии задержки. Другая линия задержки работает в схеме счетчика малых циклов, которую мы рассмотрим ниже. Содержимое этого счетчика каждый раз оказывается равным номеру следующего малого цикла. Совпадения содержимых этих двух линий фиксируются специальной схемой, вырабатывающей на своем выходе уровень « + » в течение всего следующего за совпадением малого цикла. Принцип действия опи- 1U
санного устройства иллюстрируется на рис. 130 для случая, когда избирается временной адрес 7. При обращении к рисунку не надо забывать, что первым в последовательности импульсов передается младший разряд. Регистр Счетчик циклов Схема содпадения Малый, t цикл J L Выбранный цикл Рис. 129. Дешифратор малого цикла на счетчике и схема совпадения. Время Малые циклы Выбранный цикл 4-JUU .fina ппп У » - С/ «Л ПП ! 1 7 7 7 пап 7 п 7 | П П ! ! 5 1 6 7 9 \ 1 №7 ! Рис. 130. Диаграмма работы дешифратора малого цикла рис. 129. JULJL 1 Тактовые импулуы JL -с> Чтение Ш ы в Циркуляционное запоминающее устройство, длительность задержки в котором равна одному тактовому интервалу, представляет собой элементарную запоминающую ячейку (рис. 131). Если такая ячейка находится в состоянии 1, в замкнутой цепи циркулирует один единственный импульс. Для того чтобы перевести ее в состояние 0, посылают сигнал запрета на вентиль регенерации Р. Для того чтобы ячейку, находящуюся в состоянии 0, перевести в состояние 1, на вход сме- стителя М посылают импульс. На другой вход этого смесителя поступает задержанный -импульс, подлежащий регенерации. Совокупность из N элементарных запоминающих ячеек представляет собой параллельный регистр, эквивалентный совокупности N триггеров, е той разницей, что хранящаяся © нем информация доступна для чтения не все время, а только Рис. 131. Элементарное циркуляционное запоминающее устройство. 142
в отдельные моменты, определяемые синхронизирующими импульсами. Практические конструкции. С технической точки зрения циркуляционные запоминающие устройства отличаются друг от друга по типу, линий задержки. Электромагнитные линии задержки с сосредоточенными или распределенными параметрами (рис. 132) обычно используются только в схемах последовательных ^Д.—~Х—™Г Т* 0 Рис. 132. Электромагнитная линия задержки. Магнит S N Передающая катушки 1 I Приемная катпушна Рис. 133. Магнитострикционная (никель) линия задержки. Передатчик >ПроВодник Рис. 134. Пьезоэлектрическая (кварц) линия задержки. регистров или элементарных запоминающих ячеек. Эти линии вносят настолько большие затухания и искажения сигналов, что схемы регенерации должны устанавливаться не только в точке замыкания кольца, но и в ряде промежуточных точек. Для построения циркуляционных запоминающих устройств значительной емкости используют явление распространения упругих волн в твердых и жидких веществах: никеле, кварце или ртути. В случае никеля для вовбуж- дения упругой волны под воздействием магнитного поля используется явление магнитострикции. Полученная таким образом упругая волна распространяется вдоль никелевой проволоки или трубки. На противоположном конце благодаря обратному явлению в считы- 143
вающей катушке, помещенной -в постоянное магнитное поле, образуется электрический сигнал (рис. 133). Аналогичным образом пьезоэлектрический эффект позволяет при приложении электрического поля образовывать упругую волну на одном конце кварцевого стержня. Обратный пьезоэлектрический эффект позволяет получать электрический импульс на обкладках конденсатора, укрепленного на другом конце кварцевого стержня (рис. 134). Наконец, в ртутных линиях задержки импульсами, подлежащими передаче, модулируют несущую частоту порядка 10 мгц, затем сигнал подается на кварцевый излучатель, возбуждающий в столбе ртути ультразвуковую волну (рис. 135). Сигнал поступает в кварцевый приемный датчик, после чего усиливается и детектируется. Описанными способами КВарц л: Ртуть лбарц Модулятор W—\ГенераторВЧ\ Модулято, Усилитель 64 h JULTL Тактовые J импульсы [ о* о • Усилит* Усилитель сигнала Чтение Запись Рис. 135. Линия задержки с ртутью. можно построить циркуляционное запоминающее устройство емкостью в несколько сотен двоичных цифр. Очевидно, операции записи или считывания числа в случае цир куляционной памяти можно производить только в течение малого цикла, соответствующего 'временному адресу. Среднее время обращения здесь равно половине большого цикла, и это обстоятельство оказывается тем более существенным, чем больше емкость запоминающего устройства. Подобный недостаток имеет место также и у других типов запоминающих устройств, например у магнитных барабанов, о которых мы будет говорить ниже. В определенной мере его влияние можно понизить, таким образом распределяя в запоминающем устройстве числа и команды, чтобы они к моменту использования находились в нужной позиции. Подобный метод, названный оптимальным программированием, требует в свою очередь такой системы команд, чтобы каждая команда содержала в своем составе адрес следующей команды. Возможны также и другие средства оптимального программирования. Примеры использования линий задержки. Линии задержки широко используются в устройствах последовательных вычислительных машин. Приведем несколько характерных примеров. Последовательный двоичный сумматор (рис. 136). Выше мы уже видели, что двоичный суммирующий каскад может состоять либо из полного сумматора, либо из двух полусумматоров. Для 144
а) б) Рис. 136. Последовательные сумматоры. Сложение Стирание Стирание / Чтение на выходе на входе ^Сложение Pi Р2 Рз Рч Сложение 1 0 1 0 1 0 0 0 Чтение 0 1 0 1 Чтение со 0 0 0 t стиранием Рис. 137. Последовательный накапливающий счетчик.
осуществления сложения двух двоичных чисел, представленных в форме двух синхронных последовательностей импульсов с возрастающими весами, достаточно передавать образуемый сумматором сигнал переноса снова на вход сумматора, задерживая его при этом на один тактовый интервал (рис. 136, а и б). Последовательный двоичный накапливающий счетчик. Последовательный накапливающий счетчик, показанный на рис. 137, состоит из последовательного сумматора и последовательного регистра (линия задержки, замкнутая сама на себя). Содержимое этой линии может передаваться на вход сумматора через вентиль Рз одновре- Тактодые хим пульсы ^ЦЦЦЦ1^ Обратный ход ! I ! JUlL Дополнение Поступающее число £И- Самый младший разряд I ГлЛ- т—1 Рис. -138. Образователь последовательных дополнений. менно со «вторым слагаемым, поступающим через вентиль Р\. Результат суммирования помещается в регистр на место его старого содержимого. Вентиль регенерации Рг закрывается л а время одного малого цикла. Операция ввода числа выполняется при закрытом вентиле Рз. При этом новое число просто поступает в (регистр на место старого. Наконец, открывая вентиль Р4 на время одного малого цикла, можно считать без разрушения содержимое регистра. Для сброса регистра на нуль закрывают вентиль Рг. Используемые комбинации открытых и закрытых состояний четырех вентилей перечислены в таблице на рис. 137. Образователь дополнения. Известно, что операция - вычитания эквивалента операции прибавления дополнения. Само дополнение может быть образовано путем прибавления единицы к младшему разряду обратного кода вычитаемого. На этом свойстве чисел основана схема образователя дополнения, показанная на рис. 138. Обратный код получается, как мы это уже видели, с помощью элемента запрета, на основной вход которого подаются сигналы генератора тактов, а на запрещающий вход — число, подлежащее преобразованию. Единица младшего разряда, образуемая в схеме управления, прибавляется с помощью полусумматора, выход которого соединен со входом посредством линии задержки на 6. Здесь оказывается достаточно полусумматора, поскольку одновременное поступление прибавляемой единицы и сигнала переноса исключено. Другой вид схемы образователя дополнения показан на рис. 139. Первый импульс числа, подлежащего преобразованию, соответствующий его первому, отличному от нуля разряду, передается без 146
изменения, но вызывает переброс триггера. Вентиль Pi при этом закрывается, но открывается вентиль Р2, передающий на выход обратный ход остальных разрядов числа, образуемый вентилем Рз- В конце операции триггер сбрасывается на нуль специальным импульсом. Последовательный счетчик. Схема, показанная на рис. 140, позволяет прибавлять единицу младшего разряда к содержимому Поступающее Сброс на нуль Тактовые 1—1 импульсы Дополнение Рис. 139. Другой вид образователя последовательных дополнений. регистра, представляющему собой линию задержки яб. Здесь также суммирование может производиться простым полусумматором. Подобная схема может использоваться в качестве счетчика адресов команд. Для этого единица на его вход должна подаваться после выполнения каждой очередной команды. В случае использования схемы в качестве счетчика малых циклов -на ее вход будут подаваться импульсы, отмечающие эти циклы. Последовательный множитель. На рис. 141 показала упрощенная схема устройства умножения машины EDSAC Кембриджского университета W-разрядные двоичные числа, представляющие собой множитель и множимое, содержатся на месте младших разрядов в двух циркуляционных регистрах емкостью 2N. Разряды множителя проверяются последовательно в порядке возрастания по приходе от устройства управления импульса проверки. Разряды множителя проверяются последовательно в порядке возрастания их весов с помощью импульсов, поступающего из блока управления. Кроме того, в течение каждого малого цикла множитель сдвигается на один разряд в направлении старших разрядов. Если данный разряд множителя имеет значение 1, триггер В перебрасывается и открывает вентиль Р2. Через этот вентиль множимое поступает в накапливающий счетчик. В то же самое время множимое сдвигается на один разряд' влево благодаря наличию вспомогательной линии задержки на 6. Для этого на всё время длительности операции умножения, за исключением первого цикла, вентиль Р3 закрывается, а вентиль Р4 открывается. Само собой 147 —ип^ Рис. 140. Последовательный счетчик на полусумматорах.
разумеется, что в конце каждого малого цикла триггер В сбрасывается на нуль. В результате описанных операций последовательно накапливаются частичные произведения, что хорошо видно из схемы рис. 142, иллюстрирующей частный пример получения произведения. 1101x1011:= 1000Н11. Импульсы проверки образуются с помощью циркуляционного регистра с периодом циркуляции (N+1) 6. В этом регистре циркулирует единственный импульс, сдвигающийся на одну позицию Импульс на проверку Множитель Ъ—Н Множимое Команда на сдвиг Сумматор Регистр счетчика Рис. 141. Множительное устройство с последовательным сложением частичных произведений. в сторону старших разрядов в течение каждого малого цикла таким же образом, как это было рассмотрено выше для случая множимого. После завершения N малых циклов этот импульс оказывается в исходной позиции, что свидетельствует о завершении операции умножения. Последовательное множительное устройство с параллельным суммированием. Длительность выполнения операции умножения двух W-разрядных чисел может быть понижена до значения 2N 8, если формировать частичное произведение параллельно с помощью N—\ сумматоров, как это показано на рис. 143. Последовательность импульсов множимого проходит через вентили Р в зависимости от того, равно ли значение разряда множимого, записанного в статическом регистре, 1 или 0. Частичное произведение оказывается автоматически сдвинутым на один разряд влево после прохождения от одного вентиля к вентилю, непосредственно за ним следующему. Каждое частичное произведение при- 148
149
бавляетея к сумме частичных произведений большего веса, уже частично сформированной к данному моменту. Необходимо еще раз подчеркнуть, что эти различные операции выполняются одновременно, как это показано на рис. 143, применительно к тому же самому примеру, что и на рис. 142. Регистр множителя 1 / а Множимое Время п п п п п п п п п_п_ п п _л_я_ п п п _п п п _JLJ1_ Рис. 143. Последовательное множительное устройство с одновременным сложением частичных произведений. ДИНАМИЧЕСКИЕ МАГНИТНЫЕ ЗАПОМИНАЮЩИЕ УСТРОЙСТВА, БАРАБАНЫ, ДИСКИ И МАГНИТНЫЕ ЛЕНТЫ На основе магнитного барабана или магнитной ленты можно строить запоминающие устройства большой емкости порядка миллиона двоичных цифр для барабана и порядка десяти миллионов двоичных цифр для ленты. Однако непрерывное снижение стоимости запоминающих устройств на ферритовых сердечниках, емкость которых к тому же в настоящее время уже почти достигает емкости магнитного барабана, приводит к тому, что барабаны, обладающие большим временем обращения, постепенно перестают применяться. Магнитные ленты, запоминающие устройства на магнитных дисках, а также специальные запоминающие устройства, представляющие собой комбинацию ленты и барабана, еще продолжают широко использоваться благодаря характерной для них чрезвычайно большой емкости. 150
В запоминающих устройствах описываемого типа двоичные сообщения записываются в форме знака остаточного намагничивания участка поверхности барабана или ленты. При этом поверхность барабана или ленты обычно покрывается слоем специального лака, в состав которого входят смеси окислов различных двухвалентных металлов и, в частности, железа. Для покрытия поверхности барабанов иногда используют также чистый никель. На поверхности ленты может располагаться несколько параллельных дорожек, каждая из которых связана со своей 'магнитной головкой (рис. 144). Методы з а п и с и и с ч и- т ы в а н и я. Основной сигнал записи представляет собой изменение направления магнитного потока в записывающей головке, расположенной на рас- крон от поверхности .магнитно- п / го носителя (рис. И45). После Поток утечки прохождения носителя под го- рис. 145. Схематическое изо- ловкой в соответствующем его бражение записывающей го- участке изменяется знак оста- Л0ВКи и магнитной ленты, точной 'магнитной индукции. Наоборот, при прохождении этого участка под воспроизводящей головкой, роль которой в отдельных случаях может играть та же головка, которая использовалась для записи, в сердечнике этой головки под воздействием изменения знака магнитной индукции произойдет изменение направления (магнитного потока. При этом в обмотке головки будет наведен сигнал, полярность которого зависит от характера изменения потока (от 0 к 1 и от 1 к 0). Процесс воспроизведения схематически показан на рис. 146. Рис. 144. Магнитный барабан. стоянии порядка десятка ми- 151
Двоичные сообщения, подлежащие записи в запоминающее устройство, могут представляться через эти элементарные сигналы различным образом. На рис. 147 показана система записи, получившая название «с возвращением к 0». Здесь ток записи связан обычным образом с последовательностью двоичных разрядов. Уровни 0 и 1 соответствуют положительному и отрицательному насыщающим токам. Единица записывается, таким образом, в форме положительного диполя на общем фоне отрицательного остаточного SNSN S~N NSN SNSNNSNS S N S N /T"S N S N S ^~aj ^б)~ Рис. 146. Процесс чтения: считывание происходит в момент, когда индукция изменяет знак. намагничивания. При чтении этой единицы возникает сигнал, имеющий форму пары импульсов, первый из которых положителен, а второй отрицателен. При чтении нуля не возникает никакого сигнала. После формирования положительный импульс представляет 1, а отсутствие импульса 0. Для того чтобы отличить сигнал, представляющий 0 в последовательности нулей от участка носителя, на котором вообще не записано никакой информации, используются так называемые маркерные сигналы, отмечающие те участки носителя, на которых производится запись. Эти сигналы записываются на специальной дорожке, называемой маркерной или синхронизирующей, в форме непрерывной последовательности единиц. Затем отбираются совпадения прочитанных единиц с маркерными сигналами. Здесь мы снова встречаемся с понятием проверки или извлечения информации. 152
Рис. 147. Процессы записи и считывания в системе записи с возвращением к нулю. Рис. 148. Процессы записи и считывания в системе без возвращения к нулю. 153
На рис. 148 показана система записи, получившая название «без возвращения к нулю». Согласно этой системе ток записи сохраняет положительное значение все время, пока записываемое сообщение представляет собой непрерывную последовательность единиц. Эта система по сравнению с предыдущей позволяет получать удвоенную плотность записи1. При чтении на основании получаемых сигналов необходимо восстановить первоначальную форму записанного сигнала. Для этого положительные прочитанные импульсы поступают на вход 1 триггера, а отрицательные импульсы — на вход 0. Теперь, для того чтобы восстановить первоначальную а) «о в) '111111111 о о о о \ о1 (П IP а1 п о | / i 0 \ 1 \ О i ; | о | ; | о ' ; JJ : 151: П1 1 \ о \ о !_;[ Lf ! i± "Л 0 • ' ■° • ' ; и " ! ! i i 1 in! ini i Рис. 149. Процессы записи и считывания в системе записи с фазовой модуляцией. информацию, достаточно отобрать совпадения выходного сигнала триггера с маркерными сигналами. Существует также третья система записи, разработанная Вильямсом, Килбурном и Томасом (Манчестерский университет) и известная под названием «системы фазовой модуляции». Согласно этой системе при записи 1 ток записи положителен в течение первой половины тактового интервала и отрицателен в течение второй половины. При записи нуля в течение первой половины тактового интервала ток записи отрицателен, а в течение второй — положителен. На рис. 149 показаны сигналы записи, соответствую- 1 Плотностью записи называется количество двоичных единиц информации, записываемое на 1 см длины дорожки на поверхности носителя. (Прим. ред.) 154
щие последовательности единиц,' последовательности нулей, последовательности чередующихся единиц и нулей и некоторому произвольному коду. Основное преимущество этой системы заключается в возможности использования переменного тока в цепи записи. Авторы системы предложили следующий метод воспроизведения. С воспроизводящей головкой соединяется трансформатор, связанный также с источником частоты F, равной тактовой. При этом в цепи воспроизведения обеспечивается достаточная величина затухания. В случае, когда воспроизводится последовательность единиц или последовательность нулей, воспроизводимый сигнал близок к синусоиде частоты F. При воспроизведении последовательности чередующихся единиц и нулей воспроизводимый сигнал также близок к синусоиде частоты F/2. Соответствующий подбор затухания обеспечивает равенство амплитуд этих двух синусоид. На рис. 149 показан сигнал, полученный при воспроизведении некоторого произвольного кода. Если этот сигнал усилить, а затем ограничить как по положительному, так и по отрицательному уровням, то получается последовательность прямоугольных импульсов. Окончательное восстановление исходного сообщения осуществляется путем отбора совпадений этих импульсов с маркерными сигналами. Для исключения запаздывания, характерного для этого метода записи, авторы предлагают смещать воспроизводящую головку на некоторое расстояние против направления движения носителя. Плотность записи на поверхности барабана или магнитной ленты обычно имеет порядок четырех двоичных цифр на 1 мм и в отдельных случаях достигает значения 8—10 цифр на 1 мм. Специальные устройства. Перейдем теперь к рассмотрению методов воспроизведения, используемых только при очень малых скоростях движения носителя. Например, в случае, когда магнитная лента используется в качестве выходного устройства, оказывается необходимым записывать информацию с большой скоростью, а воспроизводить ее с малой скоростью, соответствующей скорости печатающего устройства. Аналогичным образом,- если нужно использовать магнитную ленту в качестве носителя входных данных, необходимо предусмотреть возможность чтения ее с малой скоростью движения или при полностью неподвижной ленте для внесения исправлений. Эти требования удовлетворяются при использовании метода «чтения путем изменения проницаемости», который позволяет считывать данные с ленты, движущейся с различными скоростями, и даже с неподвижной ленты. На рис. 150 показана магнитная головка, изготовленная из двух отрезков ленты из пермаллоя С. Форма этой головки такова, что она имеет дополнительную магнитную цепь тороидальной формы в части сердечника, диаметрально противоположной зазору. Эта дополнительная цепь связана с обмоткой модуляции. Направление витков в двух половинах обмотки модуляции выбрано таким, чтобы магнитный поток, возбуждаемый этой обмоткой во всей остальной части сердечника, был равен нулю. Если в зазоре действует магнитное поле, направление которого показано на рисунке, то ток модуляции вызывает соответствующие изменения магнитного сопротивления в части сердечника, связанной с модулирующей обмоткой (кривая а на рис. 150), и, следовательно изменения магнитного потока в сердечнике (кривая в). На концах 155
обмотки чтения возникает при этом напряжение (кривая г), содержащее составляющую, частота которой равна удвоенной моделирующей частоте (кривая д). Фаза этой составляющей изменяется в соответствии с направлением магнитного поля >в зазоре. Для снижения времени обращения часть дорожки магнитного барабана может быть использована в качестве линии задержки. Для этого головку записи и головку воспроизведения соединяют со схемой восстановления, как показано на рис. 151. Если операция стирания не осуществляется записывающей головкой, то нужна также специальная стирающая головка. Одна и та же дорожка мо- Рис. 150. Метод считывания путем изменения магнитной проницаемости. жет использоваться для образования нескольких регистров с малой емкостью и малым временем обращения. Для получения запоминающего устройства с емкостью того же порядка, что и емкость магнитной ленты, и временем обращения того же порядка, что и время обращения магнитного барабана, используются магнитные диски. Так, например, запоминающее устройство вычислительной машины RAMAC фирмы IBM (США) обладает емкостью в 6 млн. знаков при времени обращения в 0,5 сек. Оно состоит из набора дисков, покрытых магнитным слоем с обеих сторон и укрепленных на валу, вращающемся со скоростью 1 250 об/мин. На каждой поверхности диска располагается 100 дорожек емкостью 600 цифр каждая. Головки укрепляются на специальном кронштейне, приводимом в движение с помощью очень точного механизма. Кронштейн может перемещаться в вертикальном направлении для выбора диска и в горизонтальном направлении для выбора дорожки. Правильная величина зазора между головка- 156
Сигнал синхронизации ф ГолоВка стирания Рис. 151. Применение одной дорожки магнитного барабана в качестве линии задержки. Рис. 152. Схематическое изображение системы.
ми и поверхностью диска обеспечивается за счет продувания сжатого воздуха. . Скажем в заключение несколько слов о «лентобарабане» (Tapedrum),разработанном фирмой Brush Developement Со (США). Это устройство, схематически показанное на рис. 152, обладает емкостью, равной емкости нескольких лент при времени обращения того же порядка, что и у магнитного барабана. Носителем в данном случае служит широкая магнитная лента, отделенная очень небольшим зазором от вращающегося барабана, на котором укреплены воспроизводящая и записывающая магнитные головки. Лента разделена на «страницы», длина которых равна половине окружности барабана. Время, пока производится обращение к одной странице, т. е. время обращения, равно длительности полуоборота барабана. Смена страниц производится е помощью приводного механизма с цифровым управлением. ЭЛЕКТРОСТАТИЧЕСКИЕ ЗАПОМИНАЮЩИЕ УСТРОЙСТВА Запоминающие устройства на конденсаторах. В матричной схеме, показанной на рис. 153, между обкладками каждого из конденсаторов С в исходном состоянии может действо- Цифра / Цифра 2 -чв не 4г 4? цифраы М j= У Слово! -46 +Ч6 Слово 2 Трансформаторы Словом -М +48 -И J, Pi Т ■Г М * KJ 1 -.Г щ ^ и( Т Ч Усилители Рис. 153. Матричное запоминающее устройство на конденсаторах. вать разность потенциалов -f4 б или —4 е. Диоды D{ и D2 при этом заперты. Если напряжения на внешних выводах диодов" внезапно понижаются до нуля с помощью сигнала, передаваемого трансформатором, все заряженные конденсаторы будут заряжаться, и при этом на соответствующих сопротивлениях возникнут импульсы напряжения. На практике напряжение на обкладках конденсаторов ограничены в пределах ±2 в, и это дает возможность восстанавливать 158
информацию после чтения, соединяя сопротивления с выходами усилителей чтения после восстановления напряжений, запирающих диоды. В случае использования кремниевых диодов время чтения и регенерации может быть снижено примерно до 10 мксек при длительности повторения циклов регенерации в 2—3 сек. Матричные зало lm и- ^ нающде устройства на w основе ф е р р о э л е к т ip и- ков. У некоторых диэлектриков, как, например, у титаната бария, наблюдается явление диэлектрического гистерезиса, аналогичное явлению гистерезиса у ферромагнетиков, причем электрическое ноле 'поляризации играет здесь ту же Импульс считывания ЖЖ Ферроэлектпическая ячейка Сигнал считывание Рис. 155. Чтение двоичной мации, сохраняющейся в электрическом запоминающем устройстве. инфор- ферро- Металлические электроды Кристалл титаната бария Рис. 154. Ячейка ферроэлек- трического запоминающего устройства. Рис. 156. Матричное ферроэлек- трическое запоминающее устройство. роль, что и магнитная индукция. Благодаря этому из подобных материалов можно строить запоминающие устройства по конструкции, аналогичной конденсаторам (рис. 154). Если напряжение на выводах такой ячейки имеет определенное значение, а затем уменьшается до нуля, то в диэлектрике сохраняется остаточный заряд, знак которого зависит от полярности приложенного напряжения. Считывание двоичного сообщения, записанного в такой ячейке, может производиться с помощью схемы, показанной на рис. 155. Если приложить ко входу схемы импульс того же знака, что и остаточный заряд ячейки (ABA на рис. 154), то через сопротивление пройдет очень слабый ток и сигнал на выходе будет пренебрежимо мал. В случае приложения импульса противоположной полярности 159
(ACD) ток через сопротивление будет заметно больше, и на выходе будет иметь место сигнал чтения. Запоминающее устройство этого типа также может выполняться в виде матрицы, как показано на рис. 156. На пластине из ти- таната баоия с двух сторон укрепляются металлические полоски, так что области их пересечения играют роль элементарных запоминающих ячеек. Для выбора ячей- jc ки напряжение прикладывается ~ ы к двум соответствующим полоскам. После того что мы говорили об аналогии между явлениями ферроэлектрического и ферро;маг- нитного гистерезиса, естественно задать вопрос, почему ферроэлек- трические ячейки не используются так же, как и ферромагнитные ячейки в схемах переключательных элементов, Это не делается по двум соображениям. Прежде всего петля гистерезиса у известных в настоящее время ферроэлек- триков недостаточно прямоугольна, далее конденсатор с ферро- электрическим диэлектриком име- ет только два вывода в отличие от по меньшей мере трех выводов у ламп и транзисторов и четырех выводов у обмоток магнитного сердечника. В этом состоит трудность построения переключательных схем1. Запоминающие, устройства на электронно-лучевых трубках. Ограничимся кратким описанием запоминающего устройства на электронно-лучевой трубке Вильямса. Принцип действия этого устройства основан на изменении потенциалов экрана электронно-лучевой трубки при бомбардировке этого экрана электронным пучком. Прикладывая соответствующие сигналы к отклоняющим пластинам и управляющему электроду, можно записывать на экране трубки строку за строкой синхронно с тактовыми импульсами комбинации точек и тире, соответствующих нулям и единицам (рис. 157). Если после записи такая строчка прочитывается с помощью нового прохождения по ней электронного луча, то за счет емкостной связи с электродом, расположенным перед экраном трубки (рис. 158), можно получить электрические сигналы, полярность которых зависит от конфигурации считываемого знака. Если этот знак представлял 1, то оказывается удобным воспроизводить его, увеличивая длительность сигнала чтения с помощью вентиля, управляемого с выхода усилителя (рис. 158). Рис. 157. Расположение точек и линий на экране электроннолучевой трубки и соответствующие знаки. 1 Основная трудность построения переключательных схем на основе ферроэлектриков состоит в том, что конденсаторы с ферро- электрическим диэлектриком обладают весьма большим 'выходным полным сопротивлением. (Прим. ред.). 160
Подобные комбинации электрических зарядов со временем разрушаются, и поэтому их надо восстанавливать через регулярные интервалы. Для уменьшения времени обращения строки читаются в порядке 0, л, 1, п, 2, л, 3, л,..., р, л, 0, п..., где строка л— это та, к которой производится обращение, а над остальными строками просто выполняется операция восстановления. Таким образом, если имеются 32 строки по 32 двоичных цифры в каждой, на чтение одной цифры затрачивается 8 мксек, то развертка одной Собирающий электрод Фокусировка Отклонение у Рис. 158. Принципиальная схема запоминающего устройства на электронно-лучевых трубках. строки длится в среднем 300 мксек, и каждая строка восстанавливается через 20 мксек. Среднее время обращения при этом составляет 150 мксек. ЗАМЕЧАНИЯ ОТНОСИТЕЛЬНО МАШИН, РАБОТАЮЩИХ В ДЕСЯТИЧНОЙ СИСТЕМЕ СЧИСЛЕНИЯ Для того чтобы представить все 10 цифр, используемых в десятичной системе счисления, необходим элемент, обладающий десятью устойчивыми состояниями. Такой элемент может быть построен различными способами. Чисто десятичный цифр а т о р. Прежде всего десятичный цифратор может быть построен с помощью десяти двоичных элементов. Каждая десятичная цифра будет представляться тогда такой комбинацией состояний этих десяти элементов, в которой только один из них находится в состоянии 1, а остальные девять — в состоянии 0. Таким образом, получаются следующие десять комбинаций: 0:0000000001 1:0000000010 2:0000000100 11—895 161
3:0000001000 4:0000010000 5:0000100000 6:0001000000 7:0010000000 8:0100000000 9:1000000000 Подобный грубый способ представления используется очень^ редко, так как он требует большого количества оборудования. Двоично-пятеричный код. Как явствует из самого названия, здесь одновременно используются коды с основанием 2 и с основанием 5. Двоично-пятеричный десятичный цифратор представляет собой комбинацию двоичного цифратора и пятеричного цифратора, составленного в свою очередь из пяти двоичных элемен- Число Вид т ft JUUUL "sssr JJdJLL 'innnr ж: 'м\пг Рис. 159. Сигналы чтения. тов. По соображениям, которые будут рассмотрены ниже, двоичный цифратор также составляется из двух двоичных элементов. Таким образом, двоично-пятеричный цифратор содержит 7 двоичных элементов. Десять последовательных цифр представляются в нем следующими комбинациями состояний элементов: 0 = 0 + 0:01 00001 1 =0 + 1:01 00010 2 = 0 + 2:01 00100 3 = 0 + 3-01 01000 .4 = 0 + 4:01 10000 5 = 5 + 0:10 00001 6 = 5 + 1:1000010 7 = 5 + 2:1000100 8 = 5 + 3:1001000 9 = 5 + 4:10 10000 Можно заметить, что каждая комбинация состоит из двух 1 и пяти 0. Очень эффективный метод контроля основывается на том, чтобы после всех преобразований и передач проверять, сохранилось ли такое соотношение нулей и единиц в каждой комбинации. Подобный метод с успехом применяется во многих современ- 162
ных электронных вычислительных машинах. Впервые он был использован в релейной машине фирмы Bell Telephone Laboratories, установленной на испытательном полигоне в городе Абердин (США, штат Мэриленд). В течение десятилетней регулярной круглосуточной работы машины ни разу не было случая, чтобы машина допустила ошибку, которая не была бы немедленно обнаружена. Аналогичный метод используется в двоичной электронной вычислительной машине фирмы Telecommunication Research Establishment (Великобритания). Здесь каждый двоичный шифратор состоит из двух триггеров, образующих комбинации 01 и 10. Комбина- -500 -10 »yi > у ' , *99\ 626 374 500 999 Рис. 160. Соответствие между отрицательными числами и их дополнениями в десятичной системе. ции 00 и 11 являются запрещенными и указывают на наличие ошибки. Д в о и ч н о-д есятичные коды. Очевидно, что имеется возможность представлять каждую из 10 десятичных цифр ее двоичным эквивалентом. Для этого требуются четыре двоичных элемента. Однако подобный способ представления неудобен в том отношении, что он не позволяет просто получать дополнения до 9, требуемые при вычитании. Обратный код двоичных чисел, представляющих 10 десятичных цифр, отличается от дополнения до 9 их десятичных эквивалентов. Среди кодов, удовлетворяющих подобному условию, выделяется своей простотой код Айкена (Гарвардский университет, США). Цифры, меньшие 5, представляются в нем своими двоичными эквивалентами, в то время как цифры, равные или большие 5, перед преобразованием в двоичную систему счисления увеличиваются на 6: 0:0000 5 = 11 — 6: : 1011 1:0001 6 = 12 — 6: : 1100 2:0010 7 = 13 — 6: 1101 3:0011 8 = 14 — 6: 1110 4:0100 9 = 15 — 6: 1111 Заметим, что тот же результат будет получен, если четырем двоичным разрядам присвоить веса слева направо 2, 4, 2, 1. Тогда, например, 7 (1101) =2+4+0+1. Наконец, при использовании такого кода сохраняется четность, поскольку 6 — это четное число. Следует напомнить также о специальном пятипозиционном коде, который мы рассматривали выше при описании схем кодирова- 11* 163
ния. Этот код обладает теми же возможностями контроля, что и двоично-пятеричный код, поскольку каждая десятичная цифра представляется в нем комбинацией, из двух единиц и трех нулей. Он также применяется во многих современных машинах. Десятичное вычитание; дополнения. Напомним, что при пользовании двоичной системой мы разделили все множество чисел, представимых в некоторой данной машине, на две равные части: положительные числа и отрицательные числа. Аналогичным образом можно поступить и в случае десятичной машины. Таким образом, для машины с длиной слова в три десятичных разряда, способной выполнять операции над любыми числами, заключенными между 0 и 999, оставим без изменения числа, заключенные между О и 499, а числа, заключенные между 500 и 999, будем использовать для представления отрицательных чисел, абсолютные значения которых равны дополнениям к представляющим их числам до 1 ООО (рис. 160). Таким образом, числа +374 и —374 будут представляться комбинациями цифр 374 и 626 соответственно. Дополнение можно получать путем прибавления 1 к обратному коду, который в данном случае представляет собой дополнение до 9 к каждой цифре. Сумма чисел, закодированных таким образом, будет представлять собой алгебраическую сумму изображаемых ими величин при условии, что не будет приниматься во внимание единица переноса из самого старшего разряда: 374 — 253:374 + 747 = (1) 121, т.е. 121; 253 — 374:253 + 626 = 879, т.е.—121. Можно использовать также обратные коды при условии образования циклического переноса: 374 —253:374+ 746 =(1)120, т.е. 120+1 = 121; 253 — 374 :253 + 745 = 878 , т. е. — 121 . Пример десятичного сумматора. В целях упрощения будем использовать чистый двоичный код. Пусть необходимо образовать сумму двух десятичных цифр, представленных своими двоичными эквивалентами (старшие разряды слева) аха2агаА и Ь\Ь2ЬфА. В результате сложения получится сумма SxS2SbSA и перенос R (0 или 1). Операция будет выполняться в два приема, разделенных операцией дискриминации (рис. 161): 1. Начинают с получения с помощью четырех полных двоичных сумматоров грубой суммы С\С2с^сА. Затем следует операция дискриминации. Сигнал переноса должен получаться в том случае, если сумма больше или равна 10, и не должен получаться, если сумма меньше 10. Рассмотрим таблицу четырехразрядных двоичных чисел, больших или равных 10 (от 10 до 15 включительно): 10 1 0 1 0 11 . 1 0 1 1 12 1 1 0 0 13 1 1 0 1 14 1 1 1 0 15 1 1 1 1 164
Два средних столбца составляют таблицу, повторенную 2 раза. Каждая из трех комбинаций дополняется цифрой из правого столбца, причем 1 раз нулем и 1 раз единицей. Таким образом, правый столбец можно не учитывать. Наконец, цифра левого столбца всегда равна 1. Отсюда можно сделать вывод, что переключательная функция Сг(с2 V с3) будет принимать значение 1 для всех шести рассмотренных комбинаций. Схема, реализующая эту функцию, состоит из одного д Схема различения 5ез.пер сноса^ Перенос 6 следующий каскад a2c-i А/г a^Djf Перенос из Рис. 161. Каскад сложения двух десятичных цифр, выраженных в чисто двоичном счислении. смесителя и одного вентиля. Результат операции дискриминации, описываемой приведенной переключательной функцией, комбинируется с помощью схемы «ИЛИ» с сигналом переноса из первого сумматора, который также представляет собой десятичный перенос. 2. Если выходной сигнал описанной схемы равен 1, т. е., другими словами, имеет место десятичный перенос, надо вычесть число 10 из грубой суммы, полученной на первом этапе, или, что то же самое, прибавить к ней 6 (по модулю 16). Двоичным эквивалентом 6 является ПО. Подобное сложение выполняется с помощью двух полусумматоров и одного полного сумматора. При этом левый полусумматор не содержит цепи переноса. 165
ЦИКЛИЧЕСКИЕ ИЛИ РЕФЛЕКСНЫЕ КОДЫ Рассмотрим следующий двоичный код: Десятичный Двоичный код Схема 0 0 0 0 0 0 1 0 0 0 0 1 2 0 0 0 1 1 3 0 0 0 1 0 4 0 0 110 5 0 0 111 6 0 0 10 1 7 0 0 10 0 S 0 110 0 *Э 0 110 1 10 0 1111 11 0 1110 12 0 10 10 13 0 10 11 14 0 10 0 1 15 0 10 0 0 16 110 0 0 17 110 0 1 18 110 11 19 110 10 20 11110 21 11111 22 1110 1 Этот код обладает следующим интересным свойством. При переходе от одной* комбинации непосредственно к следующей каждый раз изменяется значение одного и только одного разряда. Подобный код находит применение в специальных устройствах, предназначенных для представления двоичными числами углового положения некоторого вала1 (рис. 162). При незначительном позо- 1 Наряду с отмеченными преимуществами двоичные рефлексные коды обладают также существенными недостатками, благодаря которым часто предпочитают нормальные двоичные коды, предусматривая дополнительные меры при конструировании считывающего устройства. 166
роте вала изменяется значение только одного разряда в представляющем его коде, в то время как при использовании нормального двоичного кода даже при незначительном повороте могут измениться значения сразу нескольких разрядов (например, с 0111 на 1000). Для того чтобы не возникло неопределенности, в последнем случае необходимо, чтобы значения всех разрядов изменялись строго одновременно, а поскольку на практике этого трудно добиться, го возможно появление очень больших ошибок (например, в процессе Рис. 162. Кодирующий диск в двоичной системе счислений. рассмотренного выше перехода может возникнуть комбинация 1111).. Наряду с электромеханическими кодовыми дисками, такими как показано на рис. 162, используются также диски, содержащие прозрачные и непрозрачные участки. Съем данных с таких дисков осуществляется с помощью фотоэлементов. Для того чтобы перейти от двоичного чис'ла х к этому же самому числу, представленному рефлексным кодом, необходимо образовать сумму х и 2х, «е учитывая при этом единицы переноса, и затем отбросить младший разряд. Так, например, если х=110, то I 1 0 + 1110 1 0 1 (0) Обращаясь к более общему случаю, из изучения приведенной выше таблицы можно сделать вывод, что связь между разрядами <з, Ъ, с, d и е числа, представленного двоичным рефлексным кодом и разрядами х, у, z, t и и того же числа, представленного нормальным двоичным кодом, описывается следующими соотношениями: 167
b с d a = /0u X У z t e и и e Заметим здесь, что сумма по модулю 2 нескольких двоичных переменных равна 1, если значение 1 принимает нечетное число этих переменных. Наконец, можно показать, что десятичный эквивалент числа, представленного двоичным рефлексным кодом, получается, если последовательным разрядам, начиная с младшего, присвоить веса 1, 3, 7, 15, 31, 2N~l > «■ Принцип образования циклических кодов не ограничивается только двоичными системами счисления. Вот один из примеров десятичного рефлексного кода: 0 0 10 19 20 20 30 39 1 1 11 18 21 21 31 38 2 2 12 17 22 22 32 37 3 3 13 16 23 23 33 36 4 4 14 15 24 24 34 35 5 5 15 14 25 25 35 34 6 6 16 13 26 26 36 33 7 7 17 12 27 27 37 32 8 8 18 11 28 28 38 31 со 9 19 10 29 19 39 30 Отсюда видно, может быть даже лучше, чем из предыдущей таблицы, почему рассматриваемые коды получили название рефлексных. Несколько лет тому назад в цифровые вычислительные машины начали вводить внутренние контрольные устройства, хотя вначале это встречало много возражений. Надежность элементов была в то время настолько низкой, что не без основания опасались излишнего увеличения общего числа элементов за счет введения органов' контроля. В настоящее время положение изменилось, и потребители вычислительных машин в той же степени, как и математики, требуют, чтобы количество необнаруженных ошибок было снижено до значений, не сравнимых с надежностью работы элементов запоминающего устройства, арифметического устройства и устройства управления. По этой причине все наиболее современные машины содержат более или менее сложные органы контроля. Ясно, что наличие органов контроля не исключает необходимости введения в программу в той степени, в какой это возможно, средств математического контроля: проверки идентичности, существующей между различными переменными, контроля непрерывности ОБСЛУЖИВАНИЕ И КОНТРОЛЬ 168
функции путем вычисления ее последовательных разностей, контроля путем подставления вычислительных корней в исходное уравнение и т. д. В других случаях может оказаться выгодным проводить одно и то же вычисление 2 раза по различным программам. Профилактическое обслуживание, граничные испытания. Прекрасным средством выявления элементов, ве: роятность выхода из строя которых в течение ближайшего периода эксплуатации оказывается достаточно высокой, является выполнение через регулярные интервалы контрольных программ (например, каждую неделю) при граничных режимах работы всех устройств машины. Принцип организации контрольных программ состоит в обеспечивании возможности проверки элемента, группы элементов или всей машины в целом. При этом программа составляется таким образом, чтобы можно было быстро выявлять дефектные элементы. Более того, выполнение подобных программ производится в таких условиях, когда режим работы элементов соответствует граничным значениям допусков, вводимых всегда для обеспечения надежности электронных элементов. В зависимости от типа схемы можно, например, снижать амплитуду управляющих импульсов, уменьшать анодные напряжения, напряжения смещения, тока накала и т. д. Таким образом, выявляются элементы, вышедшие за пределы установленных допусков, после чего либо их требуемые параметры восстанавливаются с помощью регулировок, либо они просто заменяются. Такой способ профилактического обслуживания позволяет, в частности, почти полностью исключать ошибки, связанные со старением электронных ламп. С другой стороны, современная техника монтажа, в соответствие с которой элементы, выполняющие одну и ту же функцию, изготовляются в виде стандартных взаимозаменяемых модулей, в значительной степени ускоряет процесс замены вышедших из строя элементов. Здесь оказывается достаточным заменять целиком модули, а не сами элементы. Можно еще заметить, что во многих случаях сами модули заливаются пластмассой, так что такой метод замены оказывается экономически оправданным. Контроль с помощью вспомогательных чисел. В одной из электронных вычислительных машин фирмы Raytheon (США) каждое двоичное число связывается со специальным вспомогательным числом, получаемым как остаток от деления на 16 числа, получаемого при сообщении разрядам исходного числа весов 1, 2, 4, 1, 2, 4, ... Это число составляется из четырех младших разрядов суммы единиц исходного числа, взятых с указанными весами. Каждая передача контролируется путем составления вспомогательного контрольного числа описанным способом и сравнения его с вспомогательным контрольным числом, переданным вместе с исходным. При этом метод контроля арифметических операций основывается на том обстоятельстве, что существует математическая зависимость между суммой, разностью, произведением или частным двух вспомогательных чисел, связанных с двумя числами, над которыми выполняются эти операции, и вспомогательным числом, связанным с результатом операции над этими двумя числами. Так, например, з арифметическом устройстве последовательные веса имеют следующие значения: 1, 2, 4, 8, 16, 1, 2, 4, 8, 16, а сумма образуется 169
не по модулю 16, т. е. сохраняются все цифры. Таким образом, в случае вычисления произведений xy=z существует следующая зависимость между вспомогательными числами хр,ур и ^связанными с тремя числами х, у и г: [\(xp.yp)p-zp\ + Z\]p = 3\ . Аналогичные методы используются для контроля входных и выходных устройств, блоков выборки из запоминающих устройств и кодирующих блоков. Коды, допускающие обнаружение и исправление ошибок. Наиболее простым методом образования кодов, допускающих обнаружение ошибок, является метод контроля по четности, используемый в большинстве современных вычислительных машин. Этот метод основан на добавлении к n-разрядному двоичному числу (п+\)е разряда. Этому разряду присваивается значение 0 или 1 таким образом, чтобы общее количество единиц7 в новом (я+1)-разрядном числе было бы, например, нечетным. Если в одном из разрядов такого числа будет иметь место ошибка, го это сразу обнаружится по изменению четности. Более сложные коды дают возможность обнаружить ошибки более чем в одном разряде. С другой стороны, мы уже отмечали возможности контроля, присущие различным специальным кодам, например двоично-пятеричному коду или коду с двумя единицами и тремя нулями. Но можно пойти также еще дальше и представить себе коды, позволяющие точно локализовать ошибочные разряды и, следовательно, автоматически их исправлять. Приведем пример кода, позволяющего обнаружить и исправить одну ошибку в одном из четырех разрядов двоичного числа n=abcd.* На основании исходного /1-разрядного числа формируется следующее 7-разрядное число N=ABCDEFG: B = a(^c@d- С = а; D=b®c@d;- Е = Ь; F = c; G = d . Ясно, что всегда возможно определить исходное число п с помощью нового числа N. Предположим теперь, что один из семи разрядов числа N содержит ошибку. Для того чтобы ее локализовать, строят двоичное 3-разрядное число w=xyz: * = ЛфС0£0О. * Rutishauser, Speiser et Stiefel: Programmgesteuerte digitale Rechenmaschine, Separatdruck aus der Z. f. angew. Mathema- tik, Verlag Birkhauser, Bale, 11951. 170
Если до=0, число N не содержит ошибки. Если же w ф О, то ошибку содержит разряд веса w числа N и его надо исправить, заменив существующее значение на противоположное. Таким образом, если /1=1101, то N=N'= 1010101 и до = 000. Изменим теперь значение пятого разряда числа N; N' = 1010001. При этом получится до'=101—двоичный эквивалент 5, т. е. веса разряда, содержащего ошибку. Для исправления этой ошибки достаточно заменить значение пятого разряда на противоположное. В общем случае п контрольных разрядов позволяют локализовать одну единственную ошибку в двоичном числе, состоящем из (2п—я+1) разрядов. ЗАКЛЮЧЕНИЕ Установка Органы регулирования и управлении Вычислительная машина Несмотря на то, что основные принципы, обусловливающие работу больших цифровых вычислительных машин, были известны уже достаточно давно, сами машины появились впервые всего каких-нибудь 15 лет назад. За это время как конструкторами машин, так и теми, кто ими пользовался, была проделана грандиозная работа. За время, прошедшее с момента первого издания этой книги, наблюдалась определенная стабилизация в области техники, обусловленная разработкой - переключательных элементов на основе полупроводников и ферромагнетиков и промышленным выпуском запоминающих устройств магнитного типа на ферритах. Именно поэтому современные вычислительные машины различных типов меньше отличаются одна от другой, чем машины, построенные 5 лет назад. За этот же период надежность работы машин сильно возросла. Причиной этому, с одной стороны, является значительный прогресс, достигнутый в области технологии, особенно в части переключательных элементов и печатного монтажа, а с другой стороны, почти повсеместное устройств контроля. Дальнейшие успехи, ожидаемые в области технологии, будут приводить к все большей степени миниатюризации. Ведь уже в настоящее время говорят о возможности размещения нескольких сотен и даже нескольких тысяч переключательных элементов в одном кубическом сантиметре! Ожидается увеличение тактовой частоты от 1 до 10 мгц. С другой стороны, потребителям вычислительных машин стало достаточно ясно, какую пользу они могут извлечь, применяя средства автоматических цифровых вычислений как при решении науч- Лрограмма Человек Элементы наблюдения Рис. 163. использование внутренних 171
ных и технических задач, так и в области автоматического управления предприятиями. Области применения вычислительной техники все более и более расширяются. Кроме того, техника автоматического программирования упрощает связь между машиной и ее оператором, исключая необходимость для оператора пользоваться языком машины. Однако до сих пор автоматические цифровые машины почти исключительно использовались в лабораториях и не было сделано ничего, за исключением нескольких отдельных попыток ,в области внедрения их для непосредственного управления производственными процессами. Даже если вычислительная машина используется для обработки большого количества информации, связанной с поведением некоторого объекта, решения о необходимости того или иного вмешательства все еще принимает человек. При этом задача, стоящая перед человеком, становится все более и более сложной как благодаря усложнению условий, так и благодаря требуемой скорости реакции. В наиболее сложных случаях только вычислительная машина оказывается способной оправиться с этой задачей путем сбора данных от измерительной аппаратуры, сравнения этих данных с установленными критериями правильности работы и выработки на основании этого управляющих сигналов. Общая структурная схема подобной системы показана на рис. 163. Человек здесь уже не осуществляет непосредственную связь между измерительной аппаратурой и органами управления. Его задача ограничивается составлением программы работы, установлением критериев наилучшего протекания процесса, заданием последовательности выполнения программы вычислительной машиной и общим наблюдением за правильностью работы объекта. Подобное «внедрение» вычислительной машины в производственный процесс пока еще только начинается, однако в ближайшие годы ожидаются серьезные успехи в этом направлении. Однако необходимо еще проведение большого количества фундаментальных исследовательских работ в области динамики промышленных объектов для того, чтобы можно было в полной мере использовать все возможности вычислительных машин. Логические принципы и технические возможности, которые мы рассмотрели в этой книге, не ограничиваются только цифровыми вычислительными машинами в узком смысле этого слова. Логическая структура универсальных цифровых вычислительных машин представляет собой частный случай последовательных автоматов, работающих на основании жестко установленных правил или алгоритма [Л. 17]. Понятия кода, программы и условного нарушения последовательности позволяют описать все процессы, подчиняющиеся определенным формулам на языке кодов, и представить их через основные операции алгебры Буля. Эти последние в свою очередь могут быть реализованы с помощью большого разнообразия электрических, электронных и магнитных элементов, описанных в этой книге. Таким образом, алгебра Буля является в некотором смысле универсальным языком и ею могут пользоваться ученые, инженеры и техники, работающие с прерывистыми процессами, отдельные фазы которых допускают описание переключательными функциями.
ЛИТЕРАТУРА '1. Brilloin, С о u f f i g n а 1 et Peres, Les grandes machines a calculer, C. N. R. S., 1949. 2. Hartree, Calculating instruments and machines, Cambridge University Press, 1950. 3. Staff of Engineering Research Associates, High-speed computing devices, McGraw Hill, 1950. 4. Rutishauser, Speiser etStiffel, Programmgesteuer- te digitale Rechengerate, Birkhauser, 1951. 5. F a v i e r et T t о m e 1 i n, La mecanographie, editions de Mont- ligeon, 1952. 6. Les machines a calculer et la pensee humaine (Colloque international du C. N. R. S.), editions du C. N. R. S., 1953. 7. В о о t h et Booth, Automatic digital calculators, Butter- worth Publishing Co., 1956. 8. Booth, Numerical methods, Butterworth Publishing Co., 1955. 9. Richards, Arithmetic operations in digital computers, Van Nostrand, 1955. 10. Raymond, Les calculatrices numeriques universelles, Memorial de L'Artillerie franeaise, 1955, 3e fasc. et 1956, 4e fasc. 11. Wilkes, Automatic digital computers, Methuen & Co., 1956; французский перевод Calculatrices numeriques automatiques, par Ernest, Dunod, 1959. 12. M i 11 m a n & T a u b, Pulse and digital circuits, McCraw Hill, 1956. 13. Stibitz & Larrivee, Mathematics and computers, McGraw Hill, 1957. 14. Raymond, L'automatique des informations, Masson et Cie, 1957. 15. Richards, Digital computer components and circuits, Van< Nostrand, 1957; французский перевод: Calculateurs numeriques, elements et circuits, par Soubies-Camy, Dunod, 1959. 16. Sestier, Les calculateurs numeriques automatiques et leurs applications, editions Hommes et Techniques, 1958. 17. N a s 1 i n, Circuits a relais et automatismes a sequences, Dunod, 1958. 18. Phister, Logical design of digital computers, Wiley, 1958. 19. Smith, Electronic digital computers, McGraw Hill, 1959.
СОДЕРЖАНИЕ Стр. Предисловие автора к первому изданию 3 Предисловие ко второму французскому изданию 4 Предисловие редактора к русскому изданию 5 Введение ; ' • 9 Глава первая Структура универсальной цифровой вычислительной машины 13 Двоичная система счисления 13 Перевод из десятичной системы в двоичную 15 Сложение цифр в двоичной системе, основные логические операции . , 17 Переключательные схемы на 'электромагнитных реле .... 19 Двоичный сумматор 23 Вычитание 28 Двоичный сумматор-вычитатель на реле ........ 32 Регистры памяти; передачи 35 Понятие кодирования и программирования 42 Принципы построения устройств управления 44 Полный перечень и дешифратор команд 48 Счетчик адресов команд 52 Полная схема и распределение фаз 56 Приготовление программ, блок-схемы программ 58 Конструкция множительного устройства 78 Деление 80 Округление 81 Обзор библиотеки подпрограмм 82 Интерпретирующие подпрограммы 82 Символизированные команды 84 Устройства входа и выхода 85 Программа ввода 87 Глава вторая Отдельные вопросы техники автоматических цифровых вычислительных машин 88 Представление и передача сообщений 89 Символика переключательных устройств 92 Переключательные схемы на диодах 97 174
Стр. Схемы на электронных лампах 104 Схемы на транзисторах ПО Бесконтактные магнитные схемы г • • ^ Схемы на переменном токе 124 Схемы на сверхпроводящих элементах (криотроны) 130 Примеры применения триггеров 132 Линии задержки; циркуляционные запоминающие устройства 140 Динамические магнитные запоминающие устройства, барабаны, диски и магнитные ленты 150 Электростатические запоминающие устройства 158 Замечания относительно машин, работающих в десятичной системе счисления 161 Циклические пли рефлексные коды 166 Обслуживание и контроль . 168 Заключение 171 Литература 173
Полная схема машины.