IBM 1401 — это десятичный компьютер с переменной длиной слова , который был анонсирован IBM 5 октября 1959 года. Первый представитель очень успешной серии IBM 1400 , он был нацелен на замену оборудования для обработки данных, хранящихся на перфокартах , и на предоставление периферийных услуг для более крупных компьютеров. [1] IBM считает 1401 Ford Model-T компьютерной индустрии из-за его массовой привлекательности. [2] Было произведено более 12 000 единиц, и многие из них были сданы в аренду или перепроданы после того, как они были заменены более новой технологией. 1401 был снят с производства 8 февраля 1971 года.
Проект 1401 развился из проекта IBM под названием «Всемирная бухгалтерская машина» (WWAM), который, в свою очередь, был реакцией на успех Bull Gamma 3. [ 3]
1401 использовался как независимая система в сочетании с оборудованием IBM для перфокарт. Он также использовался как вспомогательное оборудование для систем IBM серий 700 или 7000. [4]
Ежемесячная арендная плата за 1401 конфигурацию начиналась с 2500 долларов США (сегодня это около 26 100 долларов США). [5] Спрос превзошел ожидания.
«IBM была приятно удивлена (возможно, шокирована), получив 5200 заказов всего за первые пять недель — больше, чем прогнозировалось за весь срок службы машины!» [6] К концу 1961 года 2000 единиц, установленных в США, составляли около четверти всех электронных компьютеров с хранимой программой всех производителей. Количество установленных 1401-х достигло пика выше 10 000 в середине 1960-х годов. «В целом, к середине 1960-х годов почти половина всех компьютерных систем в мире были системами типа 1401». [6] Система продавалась до февраля 1971 года. [7]
Обычно используемый малыми предприятиями в качестве основных машин для обработки данных, 1401 также часто использовался в качестве автономного периферийного контроллера для мэйнфреймов . В таких установках, например, с IBM 7090 , мэйнфреймы использовали только магнитную ленту для ввода-вывода. Именно 1401 передавал входные данные с медленных периферийных устройств (таких как IBM 1402 Card Read-Punch) на ленту и передавал выходные данные с ленты на перфокарту, принтер IBM 1403 или другие периферийные устройства. Это позволяло пропускной способности мэйнфрейма не ограничиваться скоростью считывателя карт или принтера. (Для получения дополнительной информации см. раздел спулинг .) Некоторые более поздние установки (например, в NASA) включали 1401 в качестве контроллера периферийных устройств интерфейса для IBM 7094 в системе с прямым сопряжением (DCS).
Некоторые представители IBM, в частности Джон Ханстра , руководитель, отвечавший за развертывание 1401, поддерживали его продолжение в более крупных моделях для меняющихся потребностей (например, IBM 1410 ), но принятое на высшем уровне в 1964 году решение сосредоточить ресурсы на System/360 довольно внезапно положило конец этим усилиям.
IBM столкнулась с конкурентной угрозой со стороны Honeywell 200 [8] [9] и несовместимостью 360 с дизайном 1401. IBM была пионером в использовании эмуляции микрокода в форме ПЗУ , так что некоторые модели System/360 могли запускать программы 1401. [10]
Благодаря своей популярности и массовому производству IBM 1401 часто считался первым электронным мэйнфреймом, представленным в разных странах, таких как Сингапур (1963; для Центрального совета по обеспечению сберегательных фондов ) [11] и Южная Корея (1967; для Совета по экономическому планированию ). [12] [13] В 1970-х годах IBM установила множество компьютеров 1401 в Индии и Пакистане , где они использовались вплоть до 1980-х годов.
Две системы 1401 были восстановлены и доведены до рабочего состояния в Музее компьютерной истории в Маунтин-Вью, Калифорния . [14] [15]
Каждый буквенно-цифровой символ в коде 1401 кодируется шестью битами , называемыми B, A, 8, 4, 2, 1. Биты B, A называются зонными битами, а биты 8, 4, 2, 1 называются числовыми битами, термины взяты из 80-колоночной перфокарты IBM .
IBM назвала код символов 1401 BCD («двоично-десятичный»), хотя этот термин описывает только кодировку десятичных цифр. [16] Буквенно-цифровая последовательность сортировки 1401 совместима с последовательностью сортировки перфокарт.
С каждой ячейкой памяти связаны два других бита, называемые C для проверки на нечетность и M для словесного знака . M присутствует в памяти, но не на перфокартах, и должен быть установлен с помощью специальных машинных инструкций; при печати памяти он обычно отображается подчеркиванием символа. C вычисляется автоматически и также не присутствует на перфокартах.
Каждая ячейка памяти имеет следующие биты:
ЦБ 8 4 2 1 М
1401 был доступен в шести конфигурациях памяти : 1400, 2000, 4000, 8000, 12000 или 16000 символов. [a] Каждый символ адресуем, адреса варьируются от 0 до 15999. Очень небольшое количество 1401 были расширены до 32000 символов по специальному запросу. [17]
Некоторые операции используют определенные ячейки памяти (эти ячейки не зарезервированы и могут использоваться для других целей). Чтение карты сохраняет 80 столбцов данных с карты в ячейках памяти 001–080. Индексные регистры 1, 2 и 3 находятся в ячейках памяти 087–089, 092–094 и 097–099 соответственно. Перфорация карты перфорирует содержимое ячеек памяти 101–180 в карту. Запись строки печатает содержимое ячеек памяти 201–332.
Формат инструкции 1401 :
Код операции с [A-или-I-или-адрес-юнита [B-адрес]] [модификатор] словесный знак
Коды операций состоят из одного символа. Адреса памяти («I» — цель перехода, «A» и «B» — данные) и адрес блока состоят из трех символов. Модификатор кода операции — из одного символа. Длина инструкции составляет 1, 2, 4, 5, 7 или 8 символов. За большинством инструкций должен следовать словесный маркер (этому требованию обычно соответствует словесный маркер с кодом операции следующей инструкции).
Список операций см. в разделе Коды символов и операций.
Трехсимвольный адрес памяти в инструкции представляет собой кодировку пятизначного адреса памяти. Три младшие цифры пятизначного адреса, от 000 до 999, определяются числовыми битами трех символов. Биты зоны старшего символа определяют приращение следующим образом: A 1000, B 2000, B и A вместе 3000, что обеспечивает адресуемость 4000 ячеек памяти. Биты зоны младшего символа определяют приращение 4000, 8000 или 12000 для адресации 16000 ячеек памяти (с IBM 1406 Storage Unit). [b] Например, трехсимвольный адрес «I99» является ссылкой на ячейку памяти 3000 + 999 или 3999.
Биты зоны среднего символа трехсимвольного адреса памяти могут определять один из трех индексных регистров , что является одной из многих дополнительных функций.
Операнды, на которые ссылаются A-адрес и B-адрес, могут быть: одиночным расположением памяти, полем переменной длины или записью переменной длины. Поля переменной длины адресуются по их младшей (самой высокой) адресной позиции, их длина определяется словесным обозначением, установленным по старшей (самой низкой) адресной позиции. Когда выполняется такая операция, как сложение, процессор начинает с младшей позиции двух полей и продвигается к старшей, так же, как человек делает это при сложении с помощью карандаша и бумаги.
Единственным ограничением длины таких полей является доступная память. Инструкции, применимые к полям переменной длины, включают: Add , Subtract , Multiply , Divide , Compare , Move Characters to A or B Word Mark , Move Characters и Edit . Одно или несколько смежных полей переменной длины могут составлять запись переменной длины. Запись переменной длины адресуется в своей старшей позиции, ее длина определяется символом групповой метки со словесной меткой или символом метки записи в своей младшей позиции. Инструкция Move Characters Record или Group Mark может использоваться для сборки блока записей. Запись переменной длины или блок записей, которые должны быть записаны на магнитную ленту, адресуются в своей старшей позиции, ее длина определяется символом групповой метки со словесной меткой, следующей сразу за ее младшей позицией.
Последовательность операций над соседними полями может быть "связана", используя адреса, оставшиеся в регистрах адреса предыдущей операцией. Например, добавление соседних полей данных может быть закодировано как A 700,850
, A 695,845
, A 690,840
. С цепочкой это может быть закодировано как A 700,850
, A
, A
- опуская адрес данных из второй и третьей инструкций. [18]
IBM 1401G продавался в шести моделях: (G1 и G11: 1400 позиций хранения ; G2 и G12 по 2000; G3 и G13 по 4000). [19] Одно из различий между 1401 и 1401G заключается в том, как управляется считыватель-перфоратор. [20]
При нажатии кнопки ЗАГРУЗИТЬ на 1402 Card Read-Punch карта считывается в ячейки памяти 001–080, в ячейке 001 устанавливается метка слова, указывающая, что это исполняемая инструкция, метки слова в ячейках 002–080 (если таковые имеются) очищаются, и выполнение начинается с инструкции в ячейке 001. Это всегда двоичная Set Word Mark , для установки меток слова на двух следующих словах (инструкциях). Одна инструкция Set Word Mark может установить две метки слова, но требует, чтобы одна метка слова была на себе, поэтому необходима последовательность этих инструкций, которые пошагово устанавливают метки слова в коде или данных программы и устанавливают метки слова для последующих инструкций Set Word Mark . Выполнение инструкций в карте продолжается, устанавливая метки слова, загружая программу в память, а затем переходя к начальному адресу программы. Для чтения последующих карт необходимо выполнить явную команду Read (opcode 1
) в качестве последней инструкции на каждой карте, чтобы поместить содержимое новой карты в ячейки 001–080. Обратите внимание, что словесные метки не стираются при выполнении команды Read , а сохраняются как есть для следующей считываемой карты. Это удобно, поскольку большая часть того, что делают первые несколько карт, — это установка словесных меток в нужных местах; наличие первых полудюжины или около того установленных словесных меток означает, что программисту не нужно устанавливать эти словесные метки снова.
Однокарточные программы могут быть написаны для различных задач. Обычно доступны однокарточная программа для печати колоды карт, следующих за ней, и другая для копирования колоды на перфоратор. См. веб-сайт Тома Ван Флека. [21] Вот однокарточная программа, которая напечатает "HELLO, WORLD!". Нажатие LOAD (выше) считывает одну карту и начинает выполнение с 001 (первой ,
). Программа автоматически установит свои собственные словесные знаки, предполагая, что у первой ,
уже есть словесный знак.
,036008,040015,044022,051029,052053/299/332L0652132.HELLO, WORLD!
Согласно общепринятой системе обозначений IBM, подчеркивания [ требуется пояснение ] показывают, где в памяти устанавливаются словесные знаки после запуска программы; на перфокартах они не будут отображаться визуально или присутствовать в перфокартах.
Программа:
,
операнды кода операции 036 008). Это всегда должна быть первая инструкция, и один из ее операндов всегда должен быть 008, иначе следующая инструкция не будет иметь словесной метки, указывающей на то, что это исполняемая инструкция.,
кодов операций. Для «внутренностей» программы нужны только словесные метки от 036 и далее; словесные метки до 029 нужны только для инструкций Set Word Mark . Поскольку ядру программы нужно шесть словесных меток, всего нужно пять инструкций Set Word Mark . Причина, по которой требуется на одну меньше, заключается в том, что последняя Set Word Mark не должна тратить операнд на другие Set Word Mark/
операции 299)/
операции 332)HELLO, WORLD!
в область печати (код операции L
, операнды 065 и 213. Перемещение останавливается из-за словесного знака в позиции 052 (который, выполняя двойную функцию, также определяет конец инструкции Halt и перехода))2
; «HELLO, WORLD!» будет напечатано в 13 крайних левых позициях принтера).
)Большая часть логических схем 1401 представляет собой тип диодно-транзисторной логики (DTL), которую IBM называла CTDL (Complemented Transistor Diode Logic) . Другие типы схем IBM назывались: Alloy (некоторая логика, но в основном различные нелогические функции, названные по используемым транзисторам из сплава германия), CTRL ( Complemented Transistor Resistor Logic , тип резисторно-транзисторной логики (RTL)). Более поздние обновления (например, ленточный интерфейс TAU-9) используют более быстрый тип DTL, использующий «дрейфовые» транзисторы (тип транзистора, изобретенный Гербертом Кремером в 1953 году) для их скорости, которую IBM называла SDTDL (Saturated Drift Transistor Diode Logic) . Типичные логические уровни этих схем были (уровень S & U): высокий: от 0 В до -0,5 В, низкий: от -6 В до -12 В; (Уровень T) высокий: от 6 В до 1 В, низкий: от -5,5 В до -6 В.
Эти схемы состоят из дискретных компонентов (резисторов, конденсаторов, транзисторов), смонтированных на односторонних бумажно-эпоксидных печатных платах размером 2,5 на 4,5 дюйма (64 на 114 мм) с 16-контактным позолоченным краевым разъемом (одинарной ширины) или 5,375 на 4,5 дюйма (136,5 на 114,3 мм) с двумя 16-контактными позолоченными краевыми разъемами (двойной ширины), которые IBM назвала картами SMS ( стандартная модульная система ). Количество логики на одной карте аналогично количеству в одном корпусе SSI серии 7400 или более простом корпусе MSI (например, от трех до пяти логических вентилей или пара триггеров на карте одинарной ширины до примерно двадцати логических вентилей или четырех триггеров на карте двойной ширины).
Карты SMS вставлялись в гнезда на поворотных стойках с шарнирным механизмом, которые в IBM называли воротами .
Используемые модули были довольно хрупкими по сравнению с предыдущим оборудованием, поэтому IBM отправила их в недавно изобретенном упаковочном материале — пузырчатой пленке . Это было одно из первых широко распространенных применений этой упаковки; она произвела большое впечатление на получателей и принесла большую известность материалу.
Как и большинство машин того времени, 1401 использует память на магнитных сердечниках . Сердечники имеют диаметр около 1 мм и используют четырехпроводную компоновку (x, y, считывание и блокировка). Память организована в плоскостях по 4000 сердечников в каждой, каждое сердечник хранит один бит. Стек из восьми таких плоскостей хранит шесть бит данных, бит словесного знака и бит четности для 4000 ячеек памяти. Вместе с восемью дополнительными плоскостями с меньшим количеством сердечников на них для дополнительных функций хранения это составляло модуль памяти на 4000 символов. [22] Один такой модуль размещается в основном корпусе 1401. Системы обычно были доступны с двумя, тремя или четырьмя такими модулями. Дополнительные модули содержатся в дополнительной коробке, 1406 Core Memory Unit, которая имеет площадь около двух квадратных футов и высоту три фута.
Операнды в памяти доступны последовательно, по одной ячейке памяти за раз, и 1401 может считывать или записывать одну ячейку памяти в течение своего основного времени цикла 11,5 микросекунд. [23]
Все временные интервалы выполнения инструкций указаны в кратных этому времени цикла. [24]
Принтер IBM 1403 был представлен в октябре 1959 года вместе с системой обработки данных 1401. Принтер был совершенно новой разработкой.
Программное обеспечение IBM для 1401 включало:
Каталог программного обеспечения IBM 1401 см. в разделе IBM 1400 series .
Коды операций 1401 представляют собой отдельные символы. Во многих случаях, особенно для более общих инструкций, выбранный символ является мнемоническим для операции: A для сложения, B для ветвления, S для вычитания и т. д.
Таблица находится в последовательности сопоставления символов .
Две из инструкций, «Ветвь по индикатору» (B) и «Выбрать укладчик» (K), используют операнд «модификатор».
В октябре 2006 года исландский авангардный музыкант Йоханн Йоханссон выпустил альбом IBM 1401, A User's Manual через музыкальное издательство 4AD . [26] Концепция основана на работе, проделанной в 1964 году его отцом Йоханном Гуннарссоном, главным инженером по техническому обслуживанию одного из первых компьютеров страны, и Элиасом Давидссоном , [27] одним из первых программистов в стране. Альбом изначально был написан для струнного квартета, органа и электроники и для сопровождения танцевальной пьесы давнего друга-соратника Эрны Омарсдоттир. Для записи альбома Йоханн переписал его для струнного оркестра из шестидесяти человек, добавив новую финальную часть и включив электронику и винтажные катушечные записи поющего 1401, найденные на чердаке его отца. [27]
Более известны различные демонстрационные программы для воспроизведения музыки на транзисторных радиоприемниках, размещенных на центральном процессоре [28], и компьютерное «искусство», в основном безвкусные картинки, напечатанные с использованием крестиков и нулей на цепных принтерах. [29] Другие программы генерируют музыку, заставляя принтер печатать определенные группы/последовательности символов, используя удары молоточков принтера для создания тонов.
IBM 1401 был первым компьютером, представленным в Непале для переписи населения в 1971 году. Проведение переписи населения страны заняло около года. В то время население Непала составляло около 10 000 000 человек.
IBM 1401, установленный на грузовике и сконфигурированный в 1960 году для использования в военных целях, был обозначен как портативный компьютер и получил прозвище DataMobile. [30] [31] [32]
... настроенные для автономного использования, а также для периферийного обслуживания более крупных компьютеров ... Небольшая конфигурация без лент и с минимальным объемом памяти была доступна всего за 2500 долларов в месяц, что было намного ниже арендной платы за гораздо более высокую производительность, чем у трех бухгалтерских машин 407 и калькулятора 604 .
Тактовая частота 1401 составляет 86 957 циклов в секунду, или около 87 килогерц! Это соответствует времени цикла системных часов в 11,5 микросекунд. ... Процессор 1401 выполняет все в последовательном порядке символов. Чтобы сложить, скажем, два N-значных числа, процессору требуется несколько циклов для выборки самой инструкции, а затем один цикл для каждого символа двух операндов или аргументов инструкции, или всего 2N циклов.
Хронометраж IBM 1401 описывается в терминах времени, необходимого для одного полного цикла хранения ядра, который составляет 11,5 микросекунд ... Время, необходимое для любой внутренней инструкции обработки, всегда кратно этому интервалу времени.