LGP -30 , что означает Librascope General Purpose , а затем Librascope General Precision , представляет собой ранний серийный компьютер. Он был изготовлен компанией Librascope из Глендейла, Калифорния (подразделение General Precision Inc. ), а продавался и обслуживался компанией Royal Precision Electronic Computer Company, совместным предприятием с подразделением Royal McBee компании Royal Typewriter Company . LGP-30 был впервые изготовлен в 1956 году [1] [2] [3] по розничной цене 47 000 долларов США, что эквивалентно 510 000 долларов США в 2022 году. [4]
LGP-30 обычно называли настольным компьютером. Его высота, ширина и глубина без учета полки для пишущей машинки составляли 33 на 44 на 26 дюймов (84 на 112 на 66 см). Он весил около 800 фунтов (360 кг) [5] и был установлен на прочных роликах , которые облегчали перемещение устройства.
Основным консультантом по проектированию компьютера Librascope был Стэн Франкель , ветеран Манхэттенского проекта и один из первых программистов ENIAC . Он разработал удобный компьютер с минимальным количеством аппаратного обеспечения. [6] В наборе инструкций с одним адресом было всего 16 команд. Память на магнитном барабане содержала основную память и регистры процессора центрального процессора (ЦП) , информацию синхронизации и тактовый сигнал главного бита, каждый на отдельной дорожке. Количество электронных ламп было сведено к минимуму за счет использования твердотельной диодной логики , последовательной побитовой архитектуры [7] и многократного использования каждого из 15 триггеров.
Это был двоичный компьютер с 31-битным словом и барабанной памятью на 4096 слов . Стандартными вводами были клавиатура Flexowriter и бумажная лента (десять шестибитных символов в секунду). Стандартным выводом был принтер Flexowriter ( пишущая машинка , работающая со скоростью 10 символов в секунду). Дополнительное высокоскоростное устройство чтения бумажной ленты и перфоратор были доступны в качестве отдельного периферийного устройства.
Компьютер содержал 113 электронных ламп и 1450 диодов . Лампы были смонтированы на 34 съемных картах с вытравленными схемами, которые также содержат соответствующие компоненты. 34 карты были всего 12 разных типов. Были доступны расширители карт, позволяющие проводить динамическое тестирование всех функций машины. 680 из 1450 диодов были установлены на одной сменной материнской плате .
LGP-30 требовал 1500 Вт при полной нагрузке. Шнур питания можно подключить к любой стандартной однофазной линии напряжением 115 В , 60 циклов. Компьютер оснащен регулятором напряжения , подходящим для изменения напряжения в сети от 95 до 130 вольт. Помимо регулирования мощности, компьютер также содержал схему для этапа прогрева, которая сводила к минимуму тепловой удар по лампам и обеспечивала более длительный срок службы. Компьютер имел охлаждающий вентилятор, который направлял отфильтрованный воздух через каналы к лампам и диодам, чтобы продлить срок службы компонентов и обеспечить правильную работу. Если LGP-30 эксплуатировался при разумных температурах, не требовалось дорогостоящего кондиционирования воздуха .
На одно барабанное слово приходилось 32 бита, но использовалась только 31, что позволяло «восстановить магнитный поток в головке» на 32-м битовом времени. Поскольку в каждой инструкции был только один адрес, требовался метод оптимизации распределения операндов . В противном случае каждая инструкция будет ожидать полного оборота барабана (или диска) каждый раз, когда будет сделана ссылка на данные. LGP-30 обеспечивал оптимизацию расположения операндов путем чередования логических адресов на барабане так, чтобы два соседних адреса (например, 00 и 01) были разделены девятью физическими ячейками. Эти пробелы позволяли располагать операнды рядом с инструкциями, которые их используют. Всего было 64 дорожки, каждая по 64 слова (сектора). Время между двумя соседними физическими словами составляло около 0,260 миллисекунды (мс), а время между двумя соседними адресами — 9 x 0,260 или 2,340 мс. Время доступа в худшем случае составило 16,66 мс.
Половина инструкции (15 бит) не использовалась. Неиспользованную половину можно было использовать для дополнительных инструкций, индексации, косвенной адресации или второго (+1) адреса для поиска следующей инструкции, каждая из которых увеличивала бы производительность программы. Ни одна из этих функций не была реализована в LGP-30, но некоторые были реализованы в его преемнике 1960 года, RPC-4000.
Уникальной особенностью ЛГП-30 была встроенная функция умножения, несмотря на ее невысокую стоимость. Поскольку это был драм-компьютер, биты обрабатывались последовательно по мере их считывания с барабана. Выполняя каждое сложение, связанное с умножением, он эффективно сдвигал операнд вправо, действуя так, как если бы двоичная точка находилась на левой стороне слова, а не на правой стороне, как на большинстве других компьютеров. Операция разделения работала аналогично.
Для дальнейшего снижения затрат традиционные индикаторы на передней панели , показывающие внутренние регистры, отсутствовали. Вместо этого Librascope установила на передней панели небольшой осциллограф , который отображал выходные данные трех считывающих головок регистров, расположенных одна над другой, что позволяло оператору видеть и считывать биты. Элементы управления размером по горизонтали и вертикали позволяют оператору настраивать дисплей так, чтобы он соответствовал пластиковой накладке, на которой выгравированы номера битов. Для чтения битов оператор подсчитывал переходы вверх и вниз на кривой осциллографа.
В отличие от других компьютеров того времени, внутренние данные были представлены в шестнадцатеричном формате , а не в восьмеричном , но, будучи очень недорогой машиной, он использовал физические клавиши пишущей машинки, которые соответствуют позициям с 10 по 15 в корзине типов для шести недесятичных символов (в отличие от других компьютеров того времени). к теперь уже нормальному A – F), чтобы представить эти значения, в результате чего получилось 0 – 9 fgjkqw, что запомнилось по фразе «Дротики из стекловолокна убивают довольно хорошо».
LGP-30 имеет 16 инструкций. Каждая инструкция занимает 31-битное слово, хотя около половины битов не используются и установлены в ноль. Инструкция состоит из «приказа», такого как буква b для «вынести из памяти», и части адреса, такой как число 2000, для обозначения ячейки памяти. Все инструкции в слове LGP-30 имеют одинаковый вид. Биты порядка занимают позиции с 12 по 15 слова, а биты адреса занимают позиции с 18 по 29 слова. Биты адреса далее делятся по дорожкам и секторам. Хотя все инструкции имеют адрес, некоторые не используют его. В этих инструкциях принято вводить адрес 0000. [8]
LGP-30 имел язык высокого уровня под названием ACT-III. Каждый токен должен был отделяться апострофом, что затрудняло чтение и еще больше усложняло подготовку лент: [9]
s1'dim'a'500'm'500'q'500''индекс'j'j+1'j-1''daprt'e'n'e'er' 'd'a''cr''rdxit''s35''s2'iread'm'1''iread'q'1''iread'd''iread'n''1';'j''0'flo'd';''s3'sqrt'd.';'sqrd.''1'unflo'sqrd.'i/'10';'sqrd''2010'print'sqrd.''2000'iprt'sqrd''cr''cr''...
Дартмутский колледж разработал две реализации АЛГОЛА 60 для LGP-30. Дартмутский АЛГОЛ 30 представлял собой трехпроходную систему (компилятор, загрузчик и интерпретатор), которая обеспечивала почти все функции АЛГОЛа, за исключением тех, которые требовали выделения памяти во время выполнения. SCALP, автономный процессор Алгола, представлял собой однопроходную систему для небольшого подмножества Алгола (без блоков, кроме всей программы), без объявлений процедур, условных операторов, но без условных выражений, без каких-либо конструкций, кроме while
операторов for
, без вложенные switch
объявления (вложенные вызовы разрешены), а также логические переменные и операторы. Как и в ACT-III, каждый токен должен был быть разделен апострофом. [10]
ДИКТАТОР — это болезненная аббревиатура от интерпретационного кода D ODCO для трех адресов с техническим оптимальным диапазоном . ДИКТАТОР, представленный в 1959 году, представляет собой интерпретатор, предназначенный для сокрытия деталей машины ЛГП-30 от программиста. Язык программирования напоминает ассемблерный код с тремя операндами: двумя исходными операндами и одним целевым операндом. Все числа имеют формат с плавающей запятой, восьмизначную мантиссу и двухзначный показатель степени. Натуральные журналы и показатели степени поддерживаются наряду с sin, cos и arctan . Поддерживается до четырех вложенных циклов. Реализованы операции поиска по таблице и перемещения блоков в памяти. Чуть больше половины всей памяти LGP-30 используется интерпретатором; Загрузка бумажной ленты через Flexowriter занимает около 30 минут. Сложение, вычитание, умножение и деление операций с плавающей запятой занимают менее 455 миллисекунд каждое. Косинус рассчитывается за 740 миллисекунд. [11]
Процедура запуска или « загрузки » LGP-30 была одной из самых сложных, когда-либо разработанных. Сначала бумажная лента была прикреплена к консольной пишущей машинке Friden Flexowriter . Оператор нажимал рычаг на флексописателе, чтобы прочитать поле адреса, и нажимал кнопку на передней панели, чтобы перенести адрес в компьютерный регистр. Затем нажимался рычаг на флексописателе для считывания поля данных и нажимались еще три кнопки на передней панели для сохранения его по указанному адресу. Этот процесс повторялся, может быть, шесть-восемь раз, и выработался ритм:
лязг,урррр, стук, стук, стук,лязг,урррр, стук, стук, стук,лязг,урррр, стук, стук, стук,лязг,урррр, стук, стук, стук,лязг,урррр, стук, стук, стук,лязг,урррр, лязг, лязг, лязг.
Затем оператор удалил загрузочную ленту, вставил ленту с обычным загрузчиком, аккуратно расположив ее так, чтобы она не застряла, и нажал еще несколько кнопок, чтобы запустить программу начальной загрузки. Как только штатный загрузчик был включен, компьютер был готов к чтению программной ленты. Обычный загрузчик читал ленту более компактного формата, чем загрузчик начальной загрузки. Каждый блок начинался со стартового адреса, чтобы ленту можно было перемотать и повторить попытку в случае возникновения ошибки. Если в процессе были допущены какие-либо ошибки или программа падала и повредила программу-загрузчик, процесс приходилось начинать заново. [12]
В 1963 году [13] Librascope выпустила транзисторную версию LGP-30, получившую название LGP-21. [14] [15] В новом компьютере было около 460 транзисторов и около 375 диодов. Он стоил всего 16 250 долларов, что составляет треть цены его предшественника. К сожалению, он был примерно на треть быстрее предыдущего компьютера.
Центральный компьютер весил около 90 фунтов (41 кг), [16] базовая система (включая принтер и подставки) — около 155 фунтов (70 кг). [17]
Другой, более мощной машиной-преемником стала General Precision RPC 4000, анонсированная в 1960 году. [18] Похожая на LGP-30, но на транзисторах, она имела 8008 32-битных слов барабанной памяти. Он имел 500 транзисторов и 4500 диодов, продавался за 87 500 долларов и весил 500 фунтов (230 кг). [19] [20] [21]
Эдвард Лоренц использовал LGP-30 в своей попытке смоделировать изменяющиеся погодные условия. Его открытие того, что огромные различия в прогнозах могут возникать из-за крошечных различий в исходных данных, привело к тому, что он придумал термины « странный аттрактор » и «эффект бабочки» , ключевые концепции теории хаоса . [22] RPC-4000 (преемник LGP-30) также помнят как компьютер, на котором Мел Кэй выполнял легендарную задачу программирования в машинном коде , пересказанную Эдом Натером в хакерской эпопее «История Мэла» . [23]
{{cite web}}
: CS1 maint: другие ( ссылка )В ноябре 1955 года (...) произошли два важных события.
Компьютер LGP-30, содержащий семь головок MH-10R, не работал корректно на Международной выставке автоматизации в Чикаго 15 ноября 1955 года. Фактически компьютер LGP-30 не работал удовлетворительно до марта 1956 года, и компьютер не предлагался для продажи широкой публике до осени 1956 года.
{{cite book}}
: CS1 maint: несколько имен: список авторов ( ссылка )Размером с два стола, весит 900 фунтов.