Разработчик | Компания машин Bull |
---|---|
Семейство продуктов | Компьютер |
Тип | Программируемый электронный компьютер (Гамма 3, 1952), затем компьютер с хранимой в памяти программой (Гамма 3 АЭТ и ЕТ, 1955) |
Поколение | 1-й |
Дата выпуска | 1952 |
Прекращено | 1962 |
Продано единиц | Более 1200 |
Процессор | Ящики с электронными лампами и германиевыми диодами, подключенные к объединительной плате. 48-битный, последовательный процессор с частотой 281 кГц. |
Память | 7 регистров (по 48 бит или 12 символов BCD каждый) с использованием технологии линии задержки. Барабанная память (8192 или 16 384 слов, от 49 до 98 кБ) и промежуточная память на 64 или 128 слов. |
Власть | 3 кВт, питание через 3 входа 220 В |
Размеры | 155 см x 150 см x 68 см |
Масса | 900 кг |
Преемник | Гамма 10 (низкий уровень), Гамма 30 (средний уровень), Гамма 60 (высокий уровень) |
Gamma 3 был ранним электронным ламповым компьютером . Он был разработан компанией Compagnie des Machines Bull в Париже , Франция, и выпущен в 1952 году.
Первоначально разработанный как электронный ускоритель для электромеханических табуляторных машин , аналогичный IBM 604 , он постепенно совершенствовался новыми функциями и превратился в компьютер первого поколения с хранимой программой (Gamma AET, 1955, затем ET, 1957). [1] [2] В своих конфигурациях с хранимой программой Gamma 3 в основном конкурировал с IBM 650 .
В течение десяти лет своей доступности эта машина способствовала переходу от электромеханического оборудования для записи единиц к компьютерам. Gamma 3 имела коммерческий успех, в конечном итоге было продано более 1200 единиц и побудило IBM выпустить 1401 в качестве конкурента. [3] [4]
На смену Gamma 3 пришли Gamma 10 более низкого класса, Gamma 30 среднего класса и большой высокопроизводительный мэйнфрейм Gamma 60 .
До 1950-х годов компания Compagnie des Machines Bull, как и ее конкурент IBM, в основном занималась продажей перфокарточных табуляторов для управления запасами, расчета заработной платы и бухгалтерского учета.
Эти табуляторы выполняли арифметические операции посредством серии цифровых колес, приводимых в движение электромеханическим устройством. Поддерживалось только приращение, а значит, и сложение, что делало вычитание и умножение особенно медленными. [5]
Для увеличения скорости вычислений и избежания задержек считывания перфокарт при более сложных операциях потребовался ускоритель, способный преодолеть электромеханические ограничения. [5]
Начиная с 1949 года компания Bull Company заинтересовалась электронными лампами из- за их скорости переключения по сравнению с добавлением колес и электромеханических реле . Компьютер был разработан с использованием логических схем, включающих около 400 электронных ламп, 8000 германиевых диодов и 48-битных регистров, сделанных из электрических линий задержки, чтобы еще больше снизить зависимость от электронных ламп. [6] [7]
Машина имеет тактовую частоту 281 кГц, [8] что выше, чем 50 кГц IBM 604, и, что более важно, на несколько порядков быстрее, чем электромеханические устройства. Время выполнения для сложения двух чисел составляло 680 мкс, в то время как умножение занимало 5,7 мс. Длительность выполнения инструкций варьировалась от 0,6 мс до 10 мс, со средним временем 2 мс. [8] [9] Gamma 3 был подключен к табулятору через кабель, подключенный вместо его соединительной панели (где были закодированы инструкции программы); таким образом, программа теперь находилась и запускалась на компьютере Gamma 3, а не на табуляторе. [2]
Тем не менее, хотя Gamma 3 можно было программировать через съемную соединительную панель, похожую на панели табуляторов, она оставалась периферийным устройством табулятора, а не наоборот. Кроме того, несмотря на то, что Gamma 3 была электронной, двоичной и имела полный по Тьюрингу набор инструкций, она все еще не могла хранить программы в памяти. [6]
Первый шаг к конфигурации хранимой программы был сделан с помощью Card Program (Programme Par Carte, PPC), которая предоставила возможность выполнять программу, загруженную с перфокарт, а не жестко подключенную к панели подключения. [6] IBM также экспериментировала с похожей концепцией с расширением CPC (Card Programmed Calculator), добавленным к 604. [10] Однако, хотя это сняло бы ограничение в 64 шага программирования и позволило бы запускать программы произвольного размера, программы по-прежнему не выполнялись в основной памяти, поэтому скорость их выполнения зависела от скорости считывания перфокарт, содержащих программу.
Компьютер подвергся новой модернизации в 1955 году с включением магнитного барабана , добавив 8192 слова памяти, что эквивалентно 49 кБ (64 дорожки по 8 блоков по 16 слов по 48 бит), [11] [12] довольно щедрое количество для того времени. На барабане можно было хранить до трех инструкций на слово, что позволяло разместить до 25 000 инструкций. [7] Эта новая версия была названа Gamma 3 AET (Armoire Extension Tambour или Drum Extension Cabinet).
Программы хранились в памяти AET группами по 48 инструкций, называемых «сериями». При необходимости серия перемещалась из барабана в промежуточную группу памяти, действующую как кэш инструкций, что позволяло компьютеру извлекать каждую инструкцию одну за другой и переносить их в свой регистр инструкций. Интересно, что инструкции, в частности адреса, можно было изменять в арифметическом устройстве компьютера, как и любые другие данные. Эта возможность проложила путь для косвенной или индексированной адресации. [7] Кэш инструкций также смягчил проблему, обнаруженную в IBM 650, которая требовала оптимизации расположения инструкций на барабане, чтобы предотвратить замедление программы из-за его задержки. [13]
В качестве последнего обновления в 1957 году высота магнитного барабана была увеличена вдвое, достигнув 16 384 слов (98 кБ) или 50 000 инструкций, а также была включена автономная консоль оператора с дисплеем осциллографа на ЭЛТ и кнопками для проверки памяти и пошагового выполнения кода. [14] Эта новая конфигурация получила название Gamma 3 ET, что означает Extension Tambour.
Благодаря возможности загружать и выполнять программы в памяти, Gamma 3 в конфигурациях AET и ET стал первым французским коммерческим компьютером с хранимой программой (хотя SEA создавала компьютеры с хранимой программой и раньше). [1] Табулятор теперь служил устройством ввода-вывода, в то время как Gamma 3 стал центральным процессором с архитектурой Фон Неймана . [15] Постепенно электромеханическое записывающее оборудование уступило место электронным компьютерам. [16] Gamma 3 ET позиционировал себя как конкурент компьютера IBM 650, который имел очень похожую конструкцию. [1] [3]
Первым клиентом, получившим Gamma 3, стал Crédit Lyonnais в Сент-Этьене в марте 1953 года. [8] Впоследствии Gamma 3 и 3 ET использовались как для обработки бизнес-данных в крупных компаниях, так и для научных расчетов, в частности, в тогда еще только появлявшихся CERN и CNRS [1] [17] или Air Liquide . [18]
Компания Bull никогда не продавала Gamma 3 в Америке, несмотря на партнерство с Remington Rand - Univac и наличие специальной версии с источником питания 60 Гц. [7]
Gamma 3 имела коммерческий успех в Европе, было продано около 1200 единиц, что превзошло продажи IBM 650. [3] Расширенная Gamma 3 очень выгодно отличалась от своего конкурента: объем памяти был в четыре раза больше, и она могла хранить в памяти в двенадцать раз больше инструкций, в то время как скорость обработки была в целом выше. [7] Этот успех побудил IBM разработать в ответ 1401. [3] [19]
В Gamma 3 реализовано три типа памяти, все из которых основаны на 48-битных словах или 12 символах BCD.
Первый тип — это группа из семи регистров в сердце ЦП. M1 , также называемый памятью оператора, — это аккумулятор , к которому подключен сумматор-вычитатель, а M2 — это вспомогательный аккумулятор для двойной точности, 96-битной арифметики. M3 – M7 — это регистры общего назначения, называемые общими запоминающими устройствами ( Mémoires Banales ). Передача данных между ними осуществляется через M1. M0 — это специальный регистр, связанный с M1 и недоступный программисту. [20]
Помимо этих общих регистров, Gamma 3 также использует шесть внутренних регистров:
Чтобы уменьшить количество электронных ламп, которые являются обычным источником сбоев, в регистрах (обычных запоминающих устройствах) вместо триггеров используются электрические линии задержки . [21]
Второй тип памяти известен как циркулирующие памяти, которые действуют как буферы, поскольку их содержимое должно обмениваться с памятью барабана и обратно. Циркулирующие памяти, обозначенные от M8 до M15 , реализованы с использованием магниторестриктивных линий задержки в отдельном, выделенном шкафу (ET). Эти восемь памяти сгруппированы попарно, образуя четыре «группы». Группы 0, 1 и 2 являются исполняемыми и называются «сериями», причем каждая серия служит кэшем инструкций, содержащим 48 инструкций. Коммутационная панель, когда используется, составляет серию 3. Это позже будет использоваться для определенных расширений, поставляемых как проводные подпрограммы.
Группа 3 действует как буфер ввода-вывода. Также может быть добавлен шкаф памяти "Ordonnateur" (ORD), предоставляющий четыре дополнительные группы (от 4 до 7), каждая из которых содержит данные, ни одна из которых не является исполняемой.
Наконец, память барабана служит большим устройством подкачки, размещающим как код, так и данные, и питаемым от перфокарт. На Gamma 3 код выполняется не из барабана, а из первых трех групп циркулирующих запоминающих устройств. Хотя это увеличивает скорость выполнения, это также делает дальние переходы более затратными, поскольку страница должна быть сначала перенесена из барабана в память MC с помощью специальной инструкции («TB»).
Барабан состоит из дюралюминиевого цилиндра длиной 15 или 30 см, вращающегося со скоростью около 2750 об/мин. Он вмещает 64 или 128 дорожек по 8 блоков, каждый из которых содержит группу, поэтому барабан может хранить до 1024 серий или 49 152 инструкций. [21] Плотность записи приближалась к 300 бит на дюйм с использованием фазовой модуляции, что было рекордом на то время. [22]
Инструкция Gamma 3 состоит из 16-битного слова, составленного из четырех шестнадцатеричных чисел: кода операции ( TO , Type d'Opération ), адреса ( AD ), начального порядка ( OD , Ordre Début ) и конечного порядка ( OF , Ordre Fin ). Поле TO определяет общий тип инструкции, в то время как три других поля действуют как параметры. [20] OD и OF задают позиции , которые могут быть либо цифрами в двоичном режиме, либо символами в режиме BCD. Всего в наборе инструкций предусмотрено 29 мнемоник.
Изначально не было ни ассемблера, который в те дни часто называли автокодером , ни языков высокого уровня, таких как Fortran , которые еще не были изобретены. Вместо этого программист сначала создавал блок-схему программы, дополнял ее мнемоникой, вручную преобразовывал мнемонику в машинный код с помощью таблицы, затем записывал полученный код на листе кодирования для проверки перед тем, как нанести его на карты. После загрузки программы в память барабана панель оператора позволяла программисту проверять и вносить данные в память, а также управлять потоком программы для целей отладки. [14]
Инструкции находятся в серии , размещенной в циркулирующих запоминающих устройствах ET-шкафа, где код извлекается и декодируется процессором (шкаф Gamma 3). Короткие программы могут быть подключены к коммутационной плате, хотя чаще всего они будут пробиты на картах и загружены в память барабана для выполнения в качестве сохраненной программы. [12]
В следующей таблице описаны инструкции с их мнемоникой и соответствующим машинным кодом:
Мнемоника | К | ОБЪЯВЛЕНИЕ | Описание |
---|---|---|---|
V (Вариант) | 0 | 0 | Нет операции (NOP), если OD и OF также равны нулю |
VS (систематический вариант) | 0 | 0 | Переход к OD + OF |
VC (Сравнение вариантов) | 0 | 1 | Переход к OD + OF, если MD <= 0 |
0 | 2 | Переход к OD + OF, если MD != 0 | |
0 | 3 | Переход к OD + OF, если MD < 0 | |
0 | 4 | Переход к OD + NF, если MS1 положительный | |
VCS (Вариант изменения серии) | 1 | 0 | Переход к адресу OD серии OF Серия должна быть 0, 1 или 2 |
1 | 1 | VCS, затем сохраняет адрес перехода + 1 в RNL1 | |
1 | 2 | VCS, затем OD + 1 -> RNL2 | |
VRS (Вариант Retour Serie) | 1 | 5 | РНЛ1 -> НЛ (возвращается к адресу, сохраненному в RNL1) |
1 | 6 | РНЛ2 -> Нидерланды | |
ES1 (Статистика экстракции) | 1 | 8 | Отправляет данные в группу 3 (регистр ввода-вывода) |
ES2 (Статистика экстракции) | 1 | 9 | Отправляет данные в группу 3 (регистр ввода-вывода) |
CD (вычислить десятичную дробь) | 1 | 0xА | Устанавливает ALU в режим BCD |
CO (коммутация октады) | 1 | 0xС | Выбирает «октаду» (8 слов), установленную в OF |
CSZ (Commutation de Seizaine) | 1 | 0xD | Выбирает набор «seizaine» (16 слов) в OF |
CB (двоичный расчет) | 1 | 0xF | Переключает АЛУ в двоичный (научный) режим |
BT (Банале->Тамбур) TB (Тамбур->Банале) | 2 | Переносит группу AD в/из блока OF дорожки OD барабана. Последняя позиция OF устанавливает T->B или B->T | |
ZB (Zero Banale) | 3 | Сбрасывает регистр AD между позициями OD и OF | |
КБ (Константе Банале) | 4 | Записывает значение OF в позицию OD регистра AD | |
GG (Группа -> Группа) | 5 | 0 | Копирует группу OD в группу OF |
IS (Введение в статику) | 5 | Получает данные от периферийного устройства (обычно считывателя перфокарт), сопоставленного с каналом AD | |
БО (Банале -> Оперативный) | 6 | 0 | Сбрасывает M1, затем устанавливает позицию 0 в 1. Сбрасывает MD (регистр сдвига). |
6 | Сбрасывает M1, затем переносит регистр AD в M1 между позициями OD и OF. Сбрасывает MD. | ||
AMD (Alternation Mémoire Décalage) | 7 | 0 | Устанавливает MD на 1 |
BD (Банале -> Декалаж) | 7 | 2 | Устанавливает MD с позицией OD M2 |
IL (пересечение логики) | 7 | 0xА | Логическое И между 1 и каждой позицией в M1 |
7 | 0xС | Логическое И между M1 и M2 | |
OB (Оператор -> Банальный) | 8 | 1 | Устанавливает M1 на ноль между положениями OD и OF |
8 | Сдвигает M1, затем копирует позиции OD в OF, чтобы зарегистрировать AD между теми же позициями | ||
CN (нормальное сравнение) | 9 | 0 | Сдвигает M1, затем сравнивает позицию OD с 1 и помещает результат в регистр сравнения (MC) |
9 | Сдвигает M1, затем сравнивает его содержимое с регистром AD между позициями OD и OF. Устанавливает результат в MC | ||
AN (нормальное сложение) | 0xА | 0 | Сдвигает M1, добавляет 1 к позиции 0 |
0xА | Сдвигает M1, прибавляет M1 к значению регистра AD между позициями OD и OF, записывает результат в M1 | ||
SN (нормальная сустрэкция) | 0xБ | 0 | Сдвигает M1, вычитает 1 из позиции 0 в M1 |
0xБ | Сдвигает M1, вычитает M1 из регистра AD из позиции OD в OF, записывает результат в M1 | ||
MR (редукция умножения) | 0xС | Умножает число в M1 на регистр AD между позициями OD и OF, помещает результат в M1 | |
DR (Редуитная дивизия) | 0xD | Делит число в M1 на регистр AD между позициями OD и OF, помещает результат в M1 | |
MC (Полное умножение) | 0xE | Умножение с двойной точностью. Умножает M1 на значение регистра AD между позициями OD и OF, устанавливает результаты в M1-M2 | |
DC (Полное подразделение) | 0xF | Деление с двойной точностью. Делит число в M1-M2 на значение регистра AD между позициями OD и OF. Частное записывается в часть M2, а остаток в M1-M2 |
Поскольку коммутационная панель была сопоставлена с серией 3, некоторые расширения и подпрограммы в конечном итоге стали поставляться как предварительно смонтированные программы коммутационной панели. Одним из таких примеров было расширение 'PDF' ( Point Decimal Flottant , или Floating Point Decimal), которое добавляло две дополнительные инструкции: BD и DCC для облегчения использования чисел с плавающей точкой. [23]
Полное описание набора инструкций вместе с примерами программирования до сих пор можно найти в некоторых курсах программирования 1950-х годов. [24] [12]
В последние дни Gamma 3, язык высокого уровня был реализован группой студентов под руководством профессора Пьера Бахуса из Университета Лилля . Этот язык, Auto-Programmation Bull (APB), смешивал элементы языка ассемблера Gamma 3 со структурированными элементами того, что впоследствии стало ALGOL 60. [ 25] В конечном итоге он оказался довольно популярным в группе пользователей Gamma 3 и позже был портирован на IBM 1620. [25 ]
Gamma 3 имеет двухрежимный ALU , способный работать как в десятичном режиме (12-символьные слова BCD ) для обработки бизнес-данных, так и в двоичном режиме (48-битные слова) для промышленных и научных вычислений. Некоторые специальные инструкции, CD и CB, позволяют переключаться между двумя режимами. [9]
Как необычная функция для 1950-х годов, Gamma 3 опционально оснащалась библиотекой с плавающей точкой. Эта модель, известная как Gamma 3M, была предназначена для научных расчетов. [9] В конечном итоге эта возможность была встроена в Gamma 3 ET.
Числа с плавающей точкой представлены 48 битами. Первый бит используется для знака, следующие восемь бит используются для экспоненты, а следующие 39 бит используются для мантиссы ( также обычно называемой мантиссой). [21]
В конце 1950-х годов профессор Луи Болье провел первые университетские курсы программирования во Франции с использованием машин Gamma 3 ET, ознаменовав переход от курсов, предоставляемых производителем, к академической структуре. Эти курсы теперь доступны онлайн и сыграли важную роль в создании симуляторов Gamma 3. [24]
Gamma 3 был первым компьютером, произведенным в количестве более тысячи единиц. [26]
Четыре образца Gamma 3 все еще существуют. Один выставлен в музее Technikum недалеко от Франкфурта, [27] другой в Fédération des Équipes Bull в Анжере , Франция, где он был изготовлен, [28] и еще один в Museo degli Strumenti per il Calcolo в Пизе , Италия. [29] Наконец, в музее ACONIT в Гренобле , Франция, хранится уникальный образец Gamma 3 ET. [11]
Сохраненный сигнал находился в самосинхронизирующемся фазово-модулированном режиме. Плотность битов была близка к 300 битам на дюйм, что на 50% выше тогдашнего уровня техники.