IBM 704

Компьютер IBM 704 в NASA в 1957 году
Установка IBM 704

IBM 704 — первый массово-выпускавшийся компьютер с аппаратной поддержкой вычислений с плавающей точкой, представленный фирмой IBM в 1954 году[1]. В руководстве по эксплуатации IBM 704[2] машина характеризуется следующим образом:

Электронная машина обработки данных типа 704 — это большой высокоскоростной электронный вычислитель, управляемый хранящийся внутри программой из инструкций одноадресного типа.

Модель 704 была значительно улучшена по сравнению с более ранней IBM 701 в части архитектуры и реализации. Как и в 701 модели, логические цепи были построены на электронных лампах. Изменения по сравнению с 701 моделью включали использование памяти на магнитных сердечниках вместо трубок Уильямса и добавление трёх индексных регистров. Для поддержки новых возможностей длина инструкций была увеличена до полного размера машинного слова (36 бит). Новый набор команд, несовместимый с набором команд модели 701, стал основой для машин IBM серий 700/7000 с «научной архитектурой».

Модель 704 могла выполнять до 12 000 сложений или до 4000 умножений с плавающей точкой в секунду[1], темп выполнения простых инструкций мог достигать 40 000 в секунду[2]. IBM продала около 140 компьютеров модели 704 между 1955 и 1960 годами.

IBM 704 в истории вычислительной техники

Языки программирования Фортран[3] и Лисп[4] были впервые разработаны для IBM 704.

Для IBM 704 Максом Мэтьюсом была разработана первая компьютерная программа для цифрового синтеза звука MUSIC.

В 1962 году физик Джон Ларри Келли младший с использованием компьютера IBM 704 создал одну из самых ярких демонстраций компьютерного синтеза речи в истории компании Bell Labs. Вокодер (синтезатор речи), запрограммированный Келли, воспроизвел популярную песню Daisy Bell под музыкальный аккомпанемент, запрограммированный Максом Мэтьюсом. Оригинальная запись была сделана в 1961 году[5]. Результат синтеза речи и музыки в цифровом виде записывался на магнитную ленту, а затем воспроизводился с использованием 12-разрядного лампового цифро-аналогового преобразователя[6]. Артур Кларк, посещавший друга и коллегу Джона Пирса в отделении Bell Labs в Мюррей-Хилл, по случаю оказался на этой демонстрации. Кларк был настолько впечатлен, что спустя шесть лет он использовал этот момент в романе и сценарии к фильму «Космическая одиссея 2001 года»: в сцене отключения астронавтом Дейвом Боуменом компьютера «HAL 9000» компьютер поёт ту же песню[7].

Эдвард Торп, профессор математики из Массачусетского технологического института, использовал IBM 704 при разработке своей теории игры в блэкджек в качестве исследовательского инструмента для изучения вероятности выигрыша[8][9]. Свою исследовательскую модель Торп запрограммировал на Фортране.

IBM 704 использовался Смитсоновской астрофизической обсерваторией для вычисления орбиты первого советского спутника на основе данных, собранных астрономами любителями в рамках проекта Moonwatch осенью 1957 года. В вычислении параметров орбиты учёным и математикам Смитсоновской астрофизической обсерватории помогали четверо штатных сотрудников компании IBM.

Технические характеристики

  • разрядность машинного слова — 36 бит
  • разрядность шины адреса — 15 бит
  • длина инструкции — 36 бит
  • время операции сложения чисел с плавающей запятой — 84 микросекунды[1]
  • время умножения чисел с плавающей запятой — 240 микросекунд[1]
  • элементная база — электронные лампы
  • память на магнитных сердечниках от 4K до 32K слов

Архитектура

Регистры

IBM 704 содержал 38-битный аккумулятор (2 дополнительных разряда Q и P, использовались для контроля переполнения), 36-битный регистр «множителя/остатка», и три 15-битных индексных регистра. Содержимое индексных регистров вычиталось из базового адреса, поэтому эти регистры также назывались «регистрами декремента». Все три регистра можно было использовать одновременно в одной инструкции: разряды 3-битного поля тега инструкции определяли, какие индексные регистры будут использованы. Перед выполнением декремента содержимое регистров не складывалось, а объединялось операцией логического ИЛИ. Такое поведение сохранилось и в более поздних машинах «научной архитектуры» (таких как IBM 709 и IBM 7090), вплоть до IBM 7094. В машине IBM 7094, представленной в 1962 году, число индексных регистров было увеличено до семи, а одновременно можно было использовать только один. Режим объединения содержимого регистров операцией логического ИЛИ остался доступен только в режиме совместимости[10].

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

Поддерживалось два формата инструкций, называемых «Тип A» и «Тип B»[11]. Большинство инструкций относилось к типу B.

Инструкции типа A содержали последовательность из 3-битного префикса (кода инструкции), 15-битного поля декремента, 3-битного поля тега и 15-битного поля адреса. К типу A относились инструкции условных переходов, использующие значения из индексных регистров, задаваемых в поле тега. Некоторые из этих инструкций позволяли вычитать поле декремента из значения индексного регистра. Аппаратная реализация требовала, чтобы второй, либо третий биты кода инструкции были ненулевыми. Таким образом, было возможно закодировать до 6 инструкций типа A, но только в машине IBM 709 появилась шестая инструкция типа A (STR).

Инструкции типа B содержали последовательность из 12-битного кода инструкции (второй и третий биты должны были быть нулевыми, это был отличительный признак инструкций типа B), 2-битного поля флага, 4 неиспользуемых бит, 3-битного поля тега и 15-битного поля адреса.

Особенностью набора инструкций была возможность модифицировать части машинного слова. Машинное слово рассматривалось как структура, имеющая формат инструкции типа A. Имелись инструкции для модификации полей префикса, декремента и адреса, хотя для модификации поля тега в IBM 704 инструкции не было предусмотрено. Первая реализация языка Лисп использовала поля адреса и декремента для хранения головы и хвоста списка. Системные функции CAR (от англ. contents of the address part of register — «содержимое адресной части регистра») и CDR (от англ. contents of the decrement part of register — «содержимое декрементной части регистра») получили свои названия в соответствии с этими полями[12]. В данном контексте под термином «регистр» подразумевается ячейка памяти[13] [14]. Известное объяснение названий функций CAR и CDR, как сокращений от contents of the address register («содержимое регистра адреса») и contents of the decrement register («содержимое регистра декремента»)[15] следует считать упрощением, не отражающим архитектуры IBM 704. В машине не было программно-доступного регистра адреса, а трём регистрам модификации адреса компанией IBM было дано название «индексных». Поэтому правильно расшифровывать CAR как «Contents of the Address part of the Register» («содержимое адресной части регистра»), а CDR как «Contents of the Decrement part of the Register» («содержимое декрементной части регистра»).

Форматы данных

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

Периферийные устройства, входившие в комплект IBM 704, включали: один считыватель перфокарт модели 711, один алфавитно-цифровой принтер модели 716, один перфоратор перфокарт модели 721, пять накопителей на магнитной ленте модели 727 и один блок управления этими накопителями модели 753, один накопитель на магнитном барабане модели 733 и один блок памяти на магнитных сердечниках модели 737. Блок вычислителя 704 поставлялся с консолью оператора, содержащей 36 управляющих переключателей и 36 переключателей ввода данных (по одному для каждого бита регистра). Консоль оператора, фактически, обеспечивала только задание двоичных значений регистров с помощью переключателей и просмотр содержимого регистров с помощью неоновых лампочек, сгруппированных по 3 разряда. Для работы с компьютером предварительно необходимо было ввести программу с перфокарт, а не с консоли. Человекочитаемый результат работы программы направлялся на принтер. Также было доступно устройство вывода на электронно-лучевую трубку IBM 740, содержавшее 21-дюймовый векторный дисплей с временем послесвечения люминофора до 20 секунд для просмотра человеком и 7-дюймовый дисплей с малым временем послесвечения, отображающий то же самое изображение и предназначенный для фотографирования присоединяемым к нему фотоаппаратом[16].

Блок памяти на магнитных сердечниках модели 737 имел объём 4096 36-битных слов (18432 байта) и использовался как ОЗУ[17]. Накопитель на магнитной ленте модели 727 позволял хранить более 5 миллионов шестибитных символов на одной катушке ленты.

См. также

Примечания

  1. 1 2 3 4 IBM Archives: 704 Data Processing System Product Profile. Дата обращения: 4 марта 2015. Архивировано 10 мая 2013 года.
  2. 1 2 IBM Type 704 Manual of operation, Form 24-66661-1, IBM, 1956, http://www.cs.virginia.edu/brochure/images/manuals/IBM_704/IBM_704.html Архивная копия от 16 марта 2015 на Wayback Machine IBM 704 Manual of Operation
  3. History of FORTRAN and FORTRAN II — Software Preservation Group. Дата обращения: 4 марта 2015. Архивировано 13 марта 2015 года.
  4. http://www-formal.stanford.edu/jmc/history/lisp/node2.html Архивная копия от 26 апреля 2021 на Wayback Machine LISP Prehistory, John McCarthy, 1996
  5. The National Recording Registry 2009. Дата обращения: 4 марта 2015. Архивировано 7 января 2015 года.
  6. C. Roads. Interview with Max Mathews // Computer Music Journal. — The MIT Press, 1980. — Т. 4, вып. 4. — С. 15—22. — ISSN 0148-9267. — doi:10.2307/3679463. Архивировано 13 августа 2014 года.
  7. Bell Labs: Where «HAL» First Spoke (Bell Labs Speech Synthesis website)
  8. Jeff Levinger. Math Instructor Programs Computor: Thorpe, 704 Beat Blackjack // The Tech. — Cambridge, MA: Massachusetts Institute of Technology, 1961. — Т. 81, вып. 1. — С. 1. Архивировано 16 июля 2015 года.
  9. Garry Baldy. Как люди научились считать // Компьютерра. — 2005. — № 27. — ISSN 1815-2198. Архивировано 2 апреля 2015 года.
  10. IBM 7094 Principles of Operation. — пятое изд.. — IBM, 1962. — С. 8. — (IBM Systems Reference Library). Архивировано 30 июня 2013 года.
  11. John Savard. From the IBM 704 to the IBM 7094. Дата обращения: 15 ноября 2009. Архивировано 17 ноября 2009 года.
  12. McCarthy, 1960, p. 28.
  13. McCarthy, 1960, обсуждается использование регистров в списке свободной памяти и сборке мусора, p. 27.
  14. John McCarthy, Paul W. Abrahams, Daniel J. Edwards, Timothy P. Hart, Michael I. Levin. LISP 1.5 Programmer's Manual. — Cambridge, MA: MIT Press, 1985. — ISBN 0-262-13011-4., на странице 36 ячейки списка описаны как машинные слова с 15-битными полями «адреса» и «декремента».
  15. См., например, John C. Mitchell. Concepts in Programming Languages. — Cambridge University Press, 2003. — С. 28—29. — ISBN 9781139433488. Архивировано 21 апреля 2017 года., Раздел 3.4, Innovations in the Design of Lisp. Книга ссылается на IBM 704 и правильно объясняет наличие адресной и декрементной частей ячейки списка, но слова «часть регистра» из объяснения Маккарти пропущены.
  16. IBM Archives: 704 Cathode Ray Tube Output Recorder. Дата обращения: 10 декабря 2012. Архивировано 3 марта 2016 года.
  17. IBM Archives: IBM 737 Magnetic core storage unit. Дата обращения: 10 декабря 2012. Архивировано 27 февраля 2015 года.

Литература

Дополнительная литература

Ссылки