IBM 650 Магнитный барабан обработки данных машины ранний цифровой компьютер производства IBM в середине 1950-х годов. Это был первый в мире компьютер массового производства. Было произведено почти 2000 систем, последняя из которых - в 1962 году, и это был первый компьютер, принесший значительную прибыль. Первый был установлен в конце 1954 года и был самым популярным компьютером 1950-х годов.
650 был продан коммерческим, научным и техническим пользователям как универсальная версия компьютеров IBM 701 и IBM 702, предназначенных для научных и деловых целей соответственно. Он также был продан пользователям перфокарт, которые переходили с вычислений штампов, таких как IBM 604, на компьютеры.
Из-за относительно низкой стоимости и простоты программирования, модель 650 использовалась для создания широкого спектра приложений, от моделирования работы экипажей подводных лодок до обучения программированию для старшеклассников и студентов колледжей. IBM 650 стал очень популярным в университетах, где целое поколение студентов впервые изучило программирование.
Он был анонсирован в 1953 году и в 1956 году усовершенствован как IBM 650 RAMAC с добавлением до четырех дисковых накопителей. Поддержка 650 и его составных частей была прекращена в 1969 году.
650 был два-адрес, би-пятеричный кодированного десятичного компьютер (как данные, так и адреса были десятичное), с памятью на вращающемся магнитном барабане. Поддержка символов обеспечивалась устройствами ввода / вывода, преобразующими алфавитные и специальные кодировки символов перфокарты в / из двузначного десятичного кода.
Первый 650 был установлен 8 декабря 1954 года в диспетчерском отделе компании John Hancock Mutual Life Insurance Company в Бостоне.
Ожидается, что IBM 7070 (десятизначные десятичные слова со знаком), анонсированный в 1958 году, станет «общим преемником по крайней мере 650 и [IBM] 705 ». IBM 1620 ( с переменной длиной в десятичной системе), введенный в 1959 г., на имя нижний конец рынка. UNIVAC твердотельный (два-адрес компьютера, подписанный 10-значные десятичные слова) был объявлен Sperry Rand в декабре 1958 года в ответ на 650. Ни один из них был 650 совместимый комплект с инструкцией.
Базовая система 650 состояла из трех блоков:
Вес: 5 400–6 263 фунтов (2,7–3,1 коротких тонн; 2,4–2,8 т).
Дополнительные блоки:
Вращающаяся память барабана обеспечивала память на 1000, 2000 или 4000 слов (десятизначное число со знаком или пять символов на слово) по адресам от 0000 до 0999, 1999 или 3999 соответственно. Слова на барабанах были организованы в группы вокруг барабана, по 50 слов на группу и 20, 40 или 80 полос для соответствующих моделей. Доступ к слову можно было получить, когда его местоположение на поверхности барабана проходило под головками чтения / записи во время вращения (при вращении со скоростью 12500 об / мин неоптимизированное среднее время доступа составляло 2,5 мс ). Из-за этого времени второй адрес в каждой инструкции был адресом следующей инструкции. Затем программы могут быть оптимизированы путем размещения инструкций по адресам, которые будут доступны сразу после завершения выполнения предыдущей инструкции. IBM предоставила форму с десятью столбцами и 200 строками, чтобы программисты могли отслеживать, куда они помещают инструкции и данные. Позже был предоставлен ассемблер SOAP (Symbolic Optimal Assembly Program), выполняющий грубую оптимизацию.
В компьютерах LGP-30, Bendix G-15 и IBM 305 RAMAC также использовались электронные лампы и барабанная память, но они сильно отличались от IBM 650.
Команды, считанные с барабана, поступали в регистр программы (в современной терминологии - регистр команд ). Данные, считанные с барабана, проходили через 10-значный распределитель. 650 имел 20-разрядный аккумулятор, разделенный на 10-значные нижний и верхний аккумуляторы с общим знаком. Арифметика производилась однозначным сумматором. Консоль (10-значные переключатели, один знаковый переключатель и 10 двухзначных индикаторов дисплея), распределитель, нижний и верхний аккумуляторы были адресуемыми; 8000, 8001, 8002, 8003 соответственно.
Дополнительный модуль хранения IBM 653, представленный 3 мая 1955 года, в конечном итоге предоставляет до пяти функций:
650 инструкций состояли из двузначного кода операции, четырехзначного адреса данных и четырехзначного адреса следующей инструкции. Знак игнорировался на базовой машине, но использовался на машинах с дополнительными функциями. Базовая машина имела 44 кода операций. Дополнительные коды операций были предоставлены для таких опций, как память с плавающей запятой, основная память, индексные регистры и дополнительные устройства ввода-вывода. При всех установленных опциях было 97 кодов операций.
Команда просмотра таблицы (TLU) могла бы с равным числом сравнивать указанное 10-значное слово с 48 последовательными словами на одной и той же полосе барабана за один оборот 5 мс, а затем переключаться на следующую полосу времени для следующих 48 слов. Этот подвиг составлял примерно одну треть скорости бинарной машины в тысячу раз быстрее в 1963 году (1500 микросекунд на IBM 7040 и 5000 микросекунд на 650) для поиска 46 записей, если обе были запрограммированы на ассемблере. Была необязательная инструкция Equal для поиска в таблице с той же производительностью.
Команда чтения (RD) считывает карту числовых данных из 80 столбцов в десять слов памяти; распределение цифр по словам определяется проводкой панели управления картридера. При использовании с буквенным устройством 533 Reader Punch может считываться комбинация числовых и буквенно-цифровых столбцов (максимум 30 буквенно-цифровых столбцов). Функция расширения позволяла использовать больше буквенно-цифровых столбцов, но не более 50, поскольку только десять слов (пять символов на слово) были сохранены на барабане с помощью операции чтения карты.
IBM 650 в Texas Aamp;M, открыта, чтобы показать заднюю часть передней панели, модули вакуумных трубок и барабан для хранения Модуль цепи с вакуумной трубкой того типа, который используется в 650 Класс в 1960 году в Высшей научной школе Бронкса с таблицей инструкций IBM 650 над доской, вверху справа.Коды операций базовой машины были:
17 | AABL | Добавить абсолютное значение в нижний аккумулятор |
15 | AL | Добавить в нижний аккумулятор |
10 | Австралия | Добавить в верхний аккумулятор |
45 | BRNZ | Ветвь на аккумуляторе ненулевой |
46 | BRMIN | Отделение на минусовом аккумуляторе |
44 год | BRNZU | Переход на ненулевое значение в верхнем аккумуляторе |
47 | БРОВ | Ветка при переполнении |
90–99 | BRD | Ответвление на 8 в распределительных позициях 1-10 ** |
14 | DIV | Делить |
64 | DIVRU | Разделить и сбросить верхний аккумулятор |
69 | LD | Распределитель нагрузки |
19 | MULT | Умножить |
00 | NO-OP | Нет операции |
71 | PCH | Перфорировать карту |
70 | RD | Читать карту |
67 | RAABL | Сбросьте аккумулятор и добавьте абсолютное значение в нижний аккумулятор. |
65 | RAL | Сбросьте аккумулятор и добавьте в нижний аккумулятор |
60 | RAU | Сбросить аккумулятор и добавить в верхний аккумулятор |
68 | РСАБЛ | Сбросить аккумулятор и вычесть абсолютное значение из нижнего аккумулятора |
66 | RSL | Сбросить аккумулятор и вычесть из нижнего аккумулятора |
61 | RSU | Сбросить аккумулятор и вычесть из верхнего аккумулятора |
35 год | SLT | Аккумулятор переключения передач влево |
36 | SCT | Сдвинуть аккумулятор влево и считать *** |
30 | SRT | Аккумулятор переключения передач правый |
31 год | SRD | Аккумулятор переключения передач правый и круглый аккумулятор |
01 | ОСТАНАВЛИВАТЬСЯ | Остановить, если консольный переключатель установлен в положение «Остановка», в противном случае продолжайте как НЕТ-ОП. |
24 | ЗППП | Сохранить дистрибьютор в памяти |
22 | STDA | Сохраните нижний адрес данных аккумулятора в дистрибьюторе Затем сохраните дистрибьютор в памяти |
23 | STIA | Сохраните адрес инструкции младшего аккумулятора в дистрибьюторе. Затем сохраните дистрибьютор в памяти |
20 | STL | Сохраните нижний аккумулятор в памяти |
21 год | СТЮ | Сохранить верхний аккумулятор в памяти * |
18 | SABL | Вычесть абсолютное значение из нижнего аккумулятора |
16 | SL | Вычесть из нижнего аккумулятора |
11 | SU | Вычесть из верхнего аккумулятора |
84 | ВПУ | Поиск по таблице |
Примечания:
Опции IBM 653 могут реализовывать дополнительные коды инструкций.
Эта программа с одной картой, взятая из 650 Programming Bulletin 5, IBM, 1956, 22-6314-0, установит большую часть памяти барабана на минус нули. Программа включает примеры выполнения инструкций с консольных переключателей и с аккумулятора.
Для начала в загрузочную карту вводят 80 последовательных цифр (2-й столбец ниже), так что при считывании содержимое ячеек барабана с 0001 по 0008 будет таким, как показано.
0001 0000010000 0002 0000000000- 0003 1000018003 0004 6100080007 0005 2400008003 0006 0100008000 0007 6900060005 0008 2019990003
Цифровые переключатели консоли (адрес 8000) вручную устанавливаются на команду чтения с адресом данных 0004.
loc- op|data|next ation |addr|instruction | |addr
8000 RD 70 0004 xxxx Read load card into 1st band read area
У каждой ударной группы есть зона чтения; эти области чтения находятся в ячейках 0001-0010, 0051-0060, 0101-0110 и так далее. Любой адрес в полосе может быть использован для идентификации этой полосы для инструкции чтения; адрес 0004 определяет 1-ю полосу. Затем начинается выполнение с консоли со считывания 8 слов на загрузочной карте в ячейки 0001-0008 1-го диапазона памяти. В случае чтения загрузочной карты «адрес следующей инструкции» берется из поля адреса данных, а не из поля адреса следующей инструкции (показано выше как xxxx). Таким образом, выполнение продолжается на 0004.
0004 RSU 61 0008 0007 Reset entire accumulator, subtract into upper (8003) the value 2019990003 0007 LD 69 0006 0005 Load distributor with 0100008000 0005 STD 24 0000 8003 Store distributor in location 0000, next instruction is in 8003 (the upper accumulator) Note: the moving of data or instructions from one drum location to another requires two instructions: LD, STD.
Теперь выполняется цикл из двух инструкций:
8003 STL 20 1999 0003 Store lower accumulator (that accumulator was reset to 0- by the RSU instruction above) The "1999" data address is decremented, below, on each iteration. This instruction was placed in the upper accumulator by the RSU instruction above. Note: this instruction, now in the upper accumulator, will be decremented and then executed again while still in the accumulator.
0003 AU 10 0001 8003 Decrement data address of the instruction in the accumulator by 1 (by adding 10000 to a negative number)
Адрес данных STL в конечном итоге будет уменьшен до 0003, а инструкция AU... в 0003 будет перезаписана нулями. Когда это происходит (адрес следующей инструкции STL остается 0003), выполнение продолжается следующим образом:
0003 NOOP 00 0000 0000 No-operation instruction, next instruction address is 0000 0000 HALT 01 0000 8000 Halt, next instruction address is the console (this Halt instruction was stored in 0000 by the STD instruction above)
Известно, что серия книг Дональда Кнута « Искусство компьютерного программирования» посвящена 650.
Программное обеспечение, написанное для IBM 650, включало: