Введение
Компьютерная система на вакуумных лампах.
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 операций сложения с плавающей точкой в секунду.
The type 704 Electronic Data Processing Machine is a large scale, high speed electronic calculator controlled by an internally stored program of the single address type. The 704 at that time was thus regarded as "pretty much the only computer that could handle complex math". The 704 was a significant improvement over the earlier IBM 701 in terms of architecture and implementation. Like the 701, the 704 used vacuum tube logic circuitry, but increased the instruction size from 18 bits to 36 bits, the same as the memory's word size. Changes from the 701 include the use of magnetic core memory instead of Williams tubes, floating point arithmetic instructions, 15 bit addressing and the addition of three index registers. To support these new features, the instructions were expanded to use the full 36 bit word. The new instruction set, which is not compatible with the 701, became the base for the "scientific architecture" subclass of the IBM 700/7000 series computers. The 704 could execute up to 12,000 floating point additions per second.
Достопримечательности
Языки программирования 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-битных символов на катушку.
The 704 itself came with a control console having 36 assorted control switches or buttons and 36 data input switches, one for each bit in a register. The control console essentially allows only setting the binary values of the registers with switches and seeing the binary state of the registers displayed in the pattern of many small neon lamps, appearing much like modern LEDs. For human interaction with the computer, programs would be entered on punched cards initially rather than at the console, and human readable output would be directed to the printer. The IBM 740 Cathode Ray Tube Output Recorder was also available, which is a 21 inch vector display with a very long phosphor persistence time of 20 seconds for human viewing, together with a 7 inch display receiving the same signal as the larger display but with a fast decaying phosphor designed to be photographed with an attached camera. The 737 Magnetic Core Storage Unit serves as RAM and provides 4,096 36 bit words, the equivalent of 18,432 bytes. The 727 Magnetic Tape Units store over 5 million 6 bit characters per reel.
Надежность
IBM 704 была значительно надежнее своего предшественника, IBM 701, у которого среднее время наработки на отказ составляло около 30 минут. Однако, будучи машиной на вакуумных лампах, IBM 704 имела очень плохую надежность по современным меркам. В среднем, машина выходила из строя примерно каждые 8 часов, что сравнимо с Манчестерской машиной Mark 1 в 1949 году. Это ограничивало размер программ, которые первые компиляторы Fortran могли успешно скомпилировать, поскольку машина могла выйти из строя до завершения компиляции большой программы.