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]
В следующей таблице описаны инструкции с их мнемоникой и соответствующим машинным кодом:
Поскольку коммутационная панель была сопоставлена с серией 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% выше тогдашнего уровня техники.