100 великих изобретений - Страница 130
Любая команда, кроме кода проводимой операции, содержала в себе адреса. Обычно их было три — номера ячеек памяти, откуда брались два исходных числа (1-й и 2-й адрес), а затем номер ячейки, куда отправлялся полученный результат (3-й адрес). Таким образом, к примеру, команда +/17/25/32 указывала, что следует сложить числа, находящиеся в 17-й и 25-й ячейках и результат направить в 32-ю ячейку. Могла использоваться и одноадресная команда. В этом случае для выполнения арифметической операции над двумя числами и отсылки полученного результата требовалось три команды: первая команда вызывала одно из чисел из памяти в арифметическое устройство, следующая команда вызывала второе число и проводила заданную операцию над числами, третья команда отправляла полученный результат в память. Так осуществлялась работа вычислительной машины на программном уровне.
Вычислительные процессы при этом протекали следующим образом. Управление работой ЭВМ осуществлялось с помощью электронных ключей и переключателей, называемых логическими схемами, причем каждый электронный ключ при получении сигнала управляющего импульса напряжения включал нужную линию или цепь электрического тока. Простейшим электронным ключом могла служить уже трехэлектродная электронная лампа, которая заперта, когда на ее сетку подается большое отрицательное напряжение, и открывается, если на сетку подается положительное напряжение. Ее работу при этом можно представить как управляющий вентиль, который пропускает через себя импульс A, когда на второй его вход подан управляющий импульс B. Когда же имеется только один импульс тока A или B, то вентиль закрыт и импульс не проходит на его выход. Таким образом, только при совпадении по времени обоих импульсов A и B на выходе появится импульс. Такую схему называют схемой совпадений, или логической схемой "и". Наряду с ней в вычислительной машине используется целый набор других логических схем. Например, схема «или», которая дает на выходе импульс при появлении его на линии A или B или одновременно на обеих линиях. Другая логическая схема — схема «нет». Она, наоборот, запрещает прохождение импульса через вентиль, если одновременно подан другой запрещающий импульс, запирающий лампу.
С использованием двух этих схем можно собрать одноразрядный сумматор. Предположим, что импульсы A и B одновременно передаются на схемы «нет» и "и", причем со схемой «нет» связана шина (провод) «сумма», а со схемой "и" шина «перенос». Предположим, что на вход A поступает импульс (то есть единица), а на вход B не поступает. Тогда «нет» пропустит импульс на шину «сумма», а схема "и" не пропустит его, то есть в разряде будет значиться "1", что и соответствует правилу двоичного сложения. Предположим, что на входы A и B одновременно поступают импульсы. Это означает, что код числа A есть "1" и код B тоже "1". Схема «нет» не пропустит двух сигналов и на выходе «сумма» будет "0" Зато схема "и" пропустит их, и на шине «перенос» будет импульс, то есть "1" передастся в сумматор соседнего разряда.
В первых ЭВМ основным элементом памяти и арифметического суммирующего устройства служили триггеры. Триггерная схема, как мы помним, обладала двумя устойчивыми состояниями равновесия. Приписывая одному состоянию значение кода "0", а другому значение кода "1", можно было использовать триггерные ячейки для временного хранения кодов. В суммирующих схемах при подаче импульса на счетный вход триггера он переходил из одного состояния равновесия в другое, что полностью соответствовало правилам сложения для одного двоичного разряда (0+0=0; 0+1=1; 1+0=1; 1+1=0 и перенос единицы в старший разряд). При этом первоначальное положение триггера рассматривалось как код первого числа, а подаваемый импульс — как код второго числа. Результат образовывался на триггерной ячейке. Для того чтобы осуществить суммирующую схему для нескольких двоичных разрядов, необходимо было обеспечить перенос единицы из одного разряда в другой, что и осуществлялось специальной схемой.
Сумматор был главной частью арифметического устройства машины. Сумматор параллельного сложения кодов чисел сразу по всем разрядам имел столько одноразрядных сумматоров, сколько двоичных разрядов содержал код числа. Складываемые числа A и B поступали в сумматор из запоминающих устройств и сохранялись там с помощью триггеров. Регистры также состояли из ряда соединенных между собой триггеров T1, T2, T3, Т'1, Т'2 и т.д., в которые код числа подавался из записывающего устройства параллельно для всех разрядов. Каждый триггер хранил код одного разряда, так что для хранения числа, имеющего n двоичных разрядов, требовалось n электронных реле. Коды чисел, хранящиеся в регистрах, складывались одновременно по каждому разряду с помощью сумматоров S1, S2, S3 и т.д., число которых было равно числу разрядов. Каждый одноразрядный сумматор имел три входа. На первый и второй входы подавались коды чисел A и B одного разряда. Третий вход служил для передачи кода переноса из предыдущего разряда.
В результате сложения кодов данного разряда на выходной шине сумматора получался код суммы, а на шине «перенос» код "1" или "0" для переноса в следующий разряд. Пусть, например, требовалось сложить два числа A=5 (в двоичном коде 0101) и B=3 (в двоичном коде 0011). При параллельном сложении этих чисел на входы A1, A2 и A3 сумматора соответственно подавались коды A1=1, A2=0, A3=1, A4=0 и B1=1, B2=1, B3=0, B4=0. В результате суммирования кодов первого разряда в сумматоре S1 получим 1+1=0 и код переноса "1" в следующий разряд. Сумматор S2 суммировал три кода: коды A2, B2 и код переноса из предыдущего сумматора S1. В результате получим 0+1+1=0 и код "1" переноса в следующий третий разряд.
Сумматор S3 складывает коды третьего разряда чисел A и B и код переноса "1" из второго разряда, то есть будем иметь 1+0+1=0 и снова перенос в следующий четвертый разряд. В итоге сложения на шинах «сумма» получим код 1000, что соответствует числу 8.
В 1951 году Джой Форрестер внес важное усовершенствование в устройство ЭВМ, запатентовав память на магнитных сердечниках, которые могли запоминать и хранить сколь угодно долго поданные на них импульсы.
Сердечники изготовляли из феррита, который получался смешением окиси железа с другими примесями. На сердечнике имелось три обмотки. Обмотки 1 и 2 служили для намагничивания сердечника в том или ином направлении с помощью подачи на них импульсов различной полярности. Обмотка 3 являлась обмоткой выхода ячейки, в которой индуцировался ток при перемагничивании сердечника. В каждом сердечнике путем его намагничивания хранилась запись одного импульса, соответствующая одному разряду какого-нибудь числа. Из сердечников, соединенных в определенном порядке, всегда можно было с большой скоростью выбрать нужное число. Так, если через обмотку сердечника подавали положительный сигнал, то сердечник намагничивается положительно, при отрицательном сигнале намагничивание было отрицательным. Таким образом, состояние сердечника характеризовалось записанным сигналом. При считывании через обмотку подавался сигнал определенной полярности, например положительный. Если перед этим сердечник был намагничен отрицательно, то происходило его перемагничивание — и в выходной обмотке (по закону электромагнитной индукции) возникал электрический ток, который усиливался усилителем. Если же сердечник был намагничен положительно, то изменения его состояния не происходило — и в выходной обмотке электрический сигнал не возникал. После выборки кода необходимо было восстановить первоначальное состояние сердечника, что и осуществлялось специальной схемой. Этот вид запоминающего устройства позволял производить выборку чисел за несколько микросекунд.
Большие объемы информации хранились на внешнем носителе, например на магнитной ленте. Запись электрических импульсов здесь была аналогична записи звука на магнитофон: через магнитные головки пропускали импульсы тока, которые намагничивали соответствующие места проходившей ленты. При считывании поле остаточного намагничивания, проходя под головками, наводило в них электрические сигналы, которые усиливались и поступали в машину. Точно так же информация записывалась на магнитный барабан, покрытый ферромагнитным материалом. В этом случае информацию можно было найти быстрее.