Введение

Компьютерная система на вакуумных лампах.

IBM 704 – это модельное название большого цифрового мейнфрейм-компьютера, представленного компанией IBM в 1954 году. Он стал первым компьютером, выпускаемым массово и оснащенным аппаратной частью для вычислений с плавающей точкой. В руководстве по эксплуатации IBM 704 указано: "Электронная вычислительная машина типа 704 представляет собой крупномасштабный высокоскоростной электронный калькулятор, управляемый внутренней программой с одноадресной системой". В то время 704 считался "практически единственным компьютером, способным выполнять сложные математические вычисления". 704 являлся значительным улучшением по сравнению с более ранней моделью IBM 701 с точки зрения архитектуры и реализации. Как и 701, 704 использовал логические схемы на вакуумных лампах, но увеличил размер инструкции с 18 до 36 бит, что соответствовало размеру слова в памяти. Изменения по сравнению с 701 включают использование магнитной памяти на сердечниках вместо электронно-лучевых трубок Уильямса, инструкции для арифметики с плавающей точкой, 15-битное адресование и добавление трех индексных регистров. Для поддержки этих новых функций инструкции были расширены до полного 36-битного слова. Новый набор инструкций, несовместимый с 701, стал основой для подкласса "научная архитектура" компьютеров серии IBM 700/7000. 704 мог выполнять до 12 000 операций сложения с плавающей точкой в секунду.

Достопримечательности

Языки программирования FORTRAN и LISP были впервые разработаны для компьютера 704, как и ассемблер SAP (Symbolic Assembly Program), позднее распространявшийся организацией SHARE как SHARE Assembly Program. Первая компьютерная музыкальная программа MUSIC была разработана Максом Мэтьюсом на IBM 704. В 1962 году физик Джон Ларри Келли-младший создал один из самых известных моментов в истории Bell Labs, использовав компьютер IBM 704 для синтеза речи. Синтезатор-вокодер, имитирующий голос, созданный Келли, воссоздал песню Daisy Bell с музыкальным сопровождением Макса Мэтьюса. Артур Кларк случайно посещал своего друга и коллегу Джона Пирса в исследовательском центре Bell Labs в Мюррей-Хилле во время демонстрации синтеза речи, и Кларк был настолько впечатлен, что шесть лет спустя использовал её в кульминационной сцене своего романа и сценария к фильму «2001 год: Космическая одиссея», где компьютер HAL 9000 поет ту же песню. (Позже Bell Laboratories выпустила запись речи и музыки, созданных таким образом, на десятидюймовых виниловых пластинках с 78 оборотами в минуту. По-видимому, запись была сделана на IBM 7090, твердотельной версии 704.) Эдвард О. Торп, преподаватель математики в MIT, использовал IBM 704 в качестве исследовательского инструмента для изучения вероятностей выигрыша при разработке своей теории игры в блэкджек. Он использовал FORTRAN для формулирования уравнений своей исследовательской модели. Компьютер IBM 704 в вычислительном центре MIT использовался в качестве официального устройства отслеживания для операции Moonwatch Смитсоновской астрофизической обсерватории осенью 1957 года. IBM предоставила четырех научных сотрудников для помощи ученым и математикам Смитсоновской астрофизической обсерватории в расчете спутниковых орбит: доктора Джанпиеро Россони, доктора Джона Гринштадта, Томаса Эппла и Ричарда Хэтча. IBM 704 использовался для анализа динамики полета ракет Vanguard, разработанных NRL. Лос-Аламосская научная лаборатория (LASL) разработала ранний монитор под названием SLAM для обеспечения пакетной обработки.

Реестры

IBM 704 имел 38-битный аккумулятор, 36-битный регистр умножителя/частного и три 15-битных индексных регистра. Значения индексных регистров вычитаются из базового адреса, поэтому индексные регистры также называют "регістрами декремента". Все три индексных регистра могут участвовать в выполнении одной инструкции: 3-битное поле тега в инструкции представляет собой битовую карту, определяющую, какие из регистров участвуют в операции. Однако, если выбрано более одного индексного регистра, их значения складываются посредством побитового ИЛИ – а не сложения – перед выполнением декремента. Такое поведение сохранялось в последующих машинах с научной архитектурой (таких как IBM 709 и IBM 7090) вплоть до IBM 7094. IBM 7094, представленный в 1962 году, увеличил количество индексных регистров до семи и позволял выбирать только один за раз; функция побитового ИЛИ оставалась доступной в режиме совместимости IBM 7094.

Формат инструкции и данных

Существует два формата инструкций, называемых "тип А" и "тип В". Большинство инструкций были типа В. Инструкции типа А имеют последовательность: 3-битный префикс (код инструкции), 15-битное поле декремента, 3-битное поле тега и 15-битное поле адреса. Существуют операции условного перехода, основанные на значениях в индексных регистрах, указанных в поле тега. Некоторые инструкции также вычитают значение поля декремента из содержимого индексных регистров. Реализация требует, чтобы вторые два бита кода инструкции были ненулевыми, что дает в общей сложности шесть возможных инструкций типа А. Один из них (STR, код инструкции в двоичном виде 101) не был реализован до IBM 709. Инструкции типа B имеют последовательность: 12-битный код инструкции (с битами 2 и 3 установленными в 0 для отличия от инструкций типа А), 2-битное поле флага, четыре неиспользуемых бита, 3-битное поле тега и 15-битное поле адреса. Числа с фиксированной точкой хранятся в двоичном формате знак/величина. Числа с плавающей точкой одинарной точности имеют знак мантиссы, 8-битный экспонент со смещением 128 и 27-битную мантиссу (без неявного ведущего бита). Алфавитно-цифровые символы обычно представлялись 6-битными BCD, упакованными по шесть символов в слово. Набор инструкций неявно подразделяет формат данных на те же поля, что и инструкции типа А: префикс, декремент, тег и адрес. Существуют инструкции для изменения каждого из этих полей в слове данных, не изменяя остальную часть слова, хотя инструкция Store Tag не была реализована на IBM 704. Первоначальная реализация Lisp использует поля адреса и декремента для хранения соответственно головы и хвоста связанного списка. Примитивные функции car ("содержимое адресной части регистра") и cdr ("содержимое декрементной части регистра") были названы в честь этих полей.

Память и периферийные устройства

В состав 704 входят органы управления для: одного 711-го считывателя перфокарт, одного 716-го алфавитного принтера, одного 721-го перфоратора, пяти 727-х магнитных ленточных накопителей и одного 753-го блока управления лентами, одного 733-го магнитного барабанного считывателя и записывающего устройства и одного 737-го устройства хранения на магнитных сердечниках. Общая масса составляла около…
Сама 704 поставлялась с консолью управления, оснащенной 36 различными переключателями или кнопками управления и 36 переключателями ввода данных, по одному для каждого бита в регистре. Консоль управления, по сути, позволяла только устанавливать двоичные значения регистров с помощью переключателей и видеть двоичное состояние регистров, отображаемое в виде множества небольших неоновых ламп, напоминающих современные светодиоды. Для взаимодействия человека с компьютером программы первоначально вводились на перфокартах, а не на консоли, а результаты, предназначенные для чтения человеком, направлялись на принтер. Также был доступен IBM 740 – осциллограф для вывода информации, представляющий собой 21-дюймовый векторный дисплей с очень длительным временем послесвечения фосфора – 20 секунд для визуального восприятия, а также 7-дюймовый дисплей, получающий тот же сигнал, что и большой дисплей, но с быстро затухающим фосфором, предназначенный для фотографирования с помощью прикрепленной камеры. 737 – устройство хранения на магнитных сердечниках – служит оперативной памятью и обеспечивает 4096 36-битных слов, что эквивалентно 18 432 байтам. 727-е магнитные ленточные накопители хранят более 5 миллионов 6-битных символов на катушку.

Надежность

IBM 704 была значительно надежнее своего предшественника, IBM 701, у которого среднее время наработки на отказ составляло около 30 минут. Однако, будучи машиной на вакуумных лампах, IBM 704 имела очень плохую надежность по современным меркам. В среднем, машина выходила из строя примерно каждые 8 часов, что сравнимо с Манчестерской машиной Mark 1 в 1949 году. Это ограничивало размер программ, которые первые компиляторы Fortran могли успешно скомпилировать, поскольку машина могла выйти из строя до завершения компиляции большой программы.