Английский Electric KDF8 - English Electric KDF8

Английский Electric KDF8
Разработчик Английский Электрический
Производитель Английский Электрический
Поколение 1
Дата выхода 1961 ; 59 лет назад (как KDP10 ) ( 1961 )
Продолжительность жизни 5 лет
Начальная цена 400 000 фунтов стерлингов
Проданных единиц 13
объем памяти ( Память на магнитном сердечнике )
Место хранения Магнитные ленты
Съемное хранилище Бумажная лента

KDF8 был ранним британским компьютером, созданным компанией English Electric как версия RCA 501 . Целью создания программно-совместимой системы было сокращение времени и затрат на разработку программного обеспечения. Однако длительный процесс развития производственных возможностей означал, что система вскоре уступила место системам других поставщиков. За 5 лет производства было продано всего несколько систем. В связи с консолидацией британской компьютерной индустрии компьютерное подразделение English Electric стало одним из компонентов того, что впоследствии стало ICL .

Задний план

В конце 1950-х годов English Electric приступила к реализации двух крупных компьютерных проектов.

Во-первых, компания English Electric создала версию компьютера RCA 501, известную как KDP10 (KDP для обработки данных Kidsgrove). Это была машина, предназначенная для коммерческих приложений обработки данных, с инструкциями фиксированной длины и возможностями обработки числовых и буквенно-цифровых данных переменной длины. Первоначальная конструкция RCA была адаптирована для использования транзисторов, диодов и других компонентов, произведенных в Великобритании. KDP10 был впервые поставлен в 1961 году. В 1964 году он был переименован в KDF8, и продажи продолжались до 1965 года. Машина была по существу такой же, как RCA 501, и производилась по лицензии, так что English Electric могла предложить полный спектр компьютерных систем. для всех своих клиентов без затрат на разработку совершенно новой машины. Машину продали за 400 000 фунтов стерлингов. Было продано всего 13 штук.

Вторым большим компьютером, появившимся в результате разработок в Kidsgrove, стал KDF9 , в первую очередь предназначенный для научной работы.

Один KDF8 был установлен в Кидсгроуве (Стаффордшир) компьютерного бюро English Electric Company. С годами и после ряда слияний эта организация стала называться English Electric Leo Marconi (EELM), International Computing Services Limited (ICSL) и, наконец, в рамках совместной договоренности между ICL и Barclay's Bank , Baric.

Основные характеристики

Процессор / основной магазин

KDF8 был машиной на основе транзистора с памятью на магнитном сердечнике . Основная память машины, установленной в компьютерном бюро Kidsgrove, была увеличена с 64 КБ до максимальных 96 КБ. KDF8 использовал восьмеричную систему адресации (основание восемь). Инструкция машинного кода имела фиксированную длину, десять восьмеричных символов. Набор инструкций был специально разработан для коммерческого использования. В нем были инструкции уровня машинного кода для всех четырех десятичных арифметических функций, работающих с числами переменной длины, а также были инструкции для эффективного управления строками данных переменной длины. Не все инструкции требовали всех десяти символов. Учитывая минимальный объем доступной основной памяти, программисты часто использовали «запасные» символы в инструкциях для хранения констант и аналогичные уловки для экономии памяти.

KDF8 был строго компьютером с пакетной обработкой, запускающим по одной программе за раз. Одновременно могла обрабатываться только одна инструкция вычисления, но также было возможно, чтобы одна инструкция чтения и / или одна инструкция записи (обычно с магнитной ленты и на магнитную ленту) выполнялась параллельно. Для контроля степени синхронной работы использовалась система аппаратных «вентилей», установленных и проверенных на уровне машинного кода. Однако, поскольку не было какой-либо операционной системы, это должно было полностью контролироваться на уровне отдельной программы.

KDP10 в сервисном бюро был обновлен на месте, так как система была построена на германиевых транзисторах RCA. Частью обновления было преобразование основной логики на кремниевые транзисторы. Также был добавлен трехсимвольный сумматор адресов, и машинный цикл составлял 15 микросекунд с шестью синхронизирующими импульсами, где шестой импульс был для времени установления, таким образом, машинный цикл был сокращен до 12,5 микросекунд.

Уровень навыков программиста для управления полным перекрытием чтения / записи / вычислений, особенно если записи данных были «сгруппированы» по несколько в «настоящий» блок данных на магнитной ленте, был значительным, поскольку все проверки одновременности приходилось вручную кодировать в программа. Автоматическое обнаружение ошибок по существу ограничивалось аппаратной проверкой четности на уровне символов, и не было никаких аппаратных проверок процессора того, что мог сделать программист. Например, компьютер просто остановится, если ему будет дано указание получить доступ к области памяти за пределами физической памяти.

Периферия

Не было ни магнитных дисков, ни барабанов, ни других подобных устройств временного хранения. Объемное хранение ограничивалось магнитными лентами на открытых барабанах, каждая из которых имела толщину около одного дюйма и девять дюймов (229 мм) в диаметре, вмещая максимум 2400 футов (730 м) ленты. На этих лентах хранились данные и программы. Периферийная проверка ошибок снова была ограничена проверкой четности всех операций чтения и записи и использованием колец разрешений на запись. Kidsgrove KDF8 имеет восемь магнитных лент, работающих со скоростью чтения / записи 40 тыс. Символов в секунду. Каждое ленточное устройство было около 6 футов (1,8 м) в высоту и 2 фута (0,61 м) в ширину, а шкафы процессора и памяти были примерно одинаковыми по размеру и количеству. Конфигурация Kidsgrove требовала большого помещения с кондиционером.

Восемь считалось рабочим максимальным количеством магнитных лент, по одному на канал, для любой фактической конфигурации KDF8. Каждый ленточный канал можно было разделить с помощью дополнительных аппаратных блоков на подгруппу из восьми ленточных деок, что дает теоретический максимум 61 ленточный блок онлайн. (Для других устройств требовалось как минимум три однозначно кодированных идентификатора канала ввода / вывода.)

Были доступны другие пары магнитофон / принтер, способные работать независимо от мэйнфрейма. Это обеспечивало возможность автономной печати для объемного вывода, освобождая KDF8 для выполнения другой работы.

Другие периферийные устройства включены:

  • устройство чтения бумажных лент (1000cps) для ввода данных и (начальной) программы,
  • телетайп оператора (со встроенным медленным перфоратором бумажной ленты), позволяющий программам отображать информацию оператору, а оператору - использовать клавиатуру для перфорирования коротких программ или элементов данных на бумажной ленте. Этот телепринтер нельзя было использовать для ввода данных напрямую в компьютер, все команды оператора приходилось вводить через консоль оператора.
  • он-лайн принтер, используемый в основном для дампов сбойных программ.

И офлайновые, и офлайновые принтеры были ударными принтерами, способными печатать строку из 120 или 160 символов, в зависимости от модели. Они были одинарными, без нижнего регистра. Фальцованная веером бумага для принтеров была сплошной, с перфорацией между страницами и отверстиями для звездочек на каждой стороне бумаги для механизма подачи бумаги. Нестандартные размеры бумаги с предварительно напечатанными линиями / текстом / цветами и т. Д. Были обычным явлением, особенно для таких приложений, как расчет заработной платы, и требовались небольшие контуры управления бумажной лентой, чтобы соответствовать размеру страницы для каждого типа бумаги.

Набор инструкций

Каждая инструкция машинного кода KDF8 имела формат

OO AAA RR BBB

В этом представлении

OO представляет собой двух- (восьмеричный) символьный код операции, идентифицирующий команду, которая должна быть выполнена, в диапазоне от 00 до 77, AAA представляет собой шестизначный (восьмеричный) символьный адрес ядра «A» в диапазоне от 000000 до 777777. (Теоретически 14 мегабайта напрямую адресуемой основной памяти, фактическое 96 КБ!) RR представляет собой двухсимвольную настройку регистра (по одному символу для каждого из двух возможных регистров, пронумерованных от 1 до 7, используемых для изменения адресов «A» и «B» с 0 указывает на отсутствие модификации регистра), а BBB представляет адрес "B", такой же, как адрес "A" по формату.

Инструкции по очереди считывались из основного хранилища в регистры, а затем выполнялись.

Пример. Инструкция по считыванию данных из онлайн-устройства чтения бумажных лент в места, начинающиеся с местоположения магазина (восьмеричное число) 200000, будет выглядеть так:

14 200000 00 770000 (пробелы только для ясности)

Где 14 был кодом операции для этого типа чтения, 200000 было наименьшим местоположением хранилища, в которое будут считываться данные, 00 указывает, что никакие изменения регистров не должны быть выполнены для адресов A или B инструкции, а 77 было ( фиксировано) идентификатор устройства считывателя бумажных лент. (Примечание - 77, используемый в качестве идентификатора устройства для операции записи, направит запись на телетайп оператора. Смущает, если это произошло из-за программной ошибки, и это был большой блок данных, предназначенный для магнитной ленты ...) последние четыре восьмеричных символа (0000) не требуются в этой инструкции и будут проигнорированы при обработке инструкции. Такие «запасные» символы использовались часто, учитывая чрезвычайно ограниченное основное хранилище, используемое программистами для хранения констант.

Некоторые аспекты набора команд были усовершенствованы, что значительно упростило программирование коммерческих систем.

Коды операций 51-54 выполняли десятичные арифметические операции сложения, вычитания, умножения и деления над числами переменной длины, сохраненными как десятичные символы. Один конец каждого операнда был сохранен по адресам «A» и «B» инструкции. Другой конец обозначался ISS (символ разделителя предметов), восьмеричным числом 74. Таким образом, числа могли быть любой длины. Инструкция «Сравнение секторов» (восьмеричное число 43) разрешала трехстороннее условное ветвление управления программой в зависимости от того, были ли данные, хранящиеся в диапазоне от адреса «A» до адреса «B», больше, меньше или равны значение того же количества символов, хранящихся в местах слева от (ранее установленного) регистра "T", как пытается продемонстрировать следующая версия языка Ассемблера.


       Tag             Op      A-Address      RR    B-Address
       COMPARE         SET     £T                   SALARY,R
                       SC      TAXLIMIT             TAXLIMIT,R
                       CTC     BELOWTAXLIMIT        ABOVETAXLIMIT
       EQUAL           TC      EQUALTAXLIMIT

В этом примере сравнивается зарплата с налоговым пределом и выполняется переход к одному из трех положений программы в зависимости от соответствующих значений. Соглашение Ассемблера ", R" представляет крайний правый символ названного поля. CTC означает «условную передачу управления», а TC означает (безусловную) передачу управления.

В приведенном выше коде «сравнения» исходный набор инструкций (KDP10?) Сравнивается справа налево, требуя сравнения всей длины строк данных, по символу за раз. KDP8 был улучшен для сравнения слева направо, поэтому сравнение можно было остановить, как только относительные значения стали ясны, что значительно ускорило обработку таких инструкций.

Данные переменной длины обрабатывались с помощью специально обозначенных символов. ISS или символ разделителя элементов, восьмеричное число 74, обычно представленное как «●», использовалось для разделения полей данных переменной длины. Восьмеричное число 75 "<" и 76 ">" определяло начало и конец сообщения с данными, восьмеричное число 777777 использовалось по обычаю и на практике для обозначения конца файла. Таким образом, данные, такие как имена и адреса, могут быть перфорированы на бумажной ленте для ввода данных как (например)

<ИАН ● ТЭЙЛОР ● 41 ● ХАЙЛ-СТРИТ ● КИДСГРОВУ ● ПЕРСОНАЖИ>

Различные инструкции могут работать непосредственно с этими данными переменной длины, и записи могут быть сгруппированы, скажем, по десять штук в пакет на магнитной ленте для эффективного хранения. Учитывая относительно низкую (по сегодняшним стандартам) скорость процессора и ввода-вывода, важным аспектом задачи программиста было сбалансировать пакетирование данных на ленте с вычислениями, необходимыми для каждой записи, и организовать одновременный ввод-вывод и вычислительные операции с цель максимизировать перекрытие вычислений с вводом-выводом и избежать остановки магнитофона между пакетными чтениями.

Программное обеспечение

Операционной системы не было. Программы запускались онлайн-оператором через операторскую консоль. Операторы также отвечали за ручную очистку памяти и переключение компьютера между программами, установку и замену лент, управление автономной печатью и тому подобное.

Некоторые стандартные пакеты программного обеспечения были доступны или стали доступны, все они были написаны в США организацией RCA. К ним относятся следующие.

  • Программа сортировки-слияния, управляемая параметрами, способная обрабатывать очень большие объемы данных. Параметры сортировки могут быть либо считаны из устройства чтения бумажных лент, для одноразовых сортировок, либо «скомпилированы» (на самом деле просто сохранены в программе). Существовали обширные пользовательские "ловушки", в которые пользовательский код можно было вставить на различных этапах процесса сортировки / слияния.
  • Компилятор на языке ассемблера под названием EZ-Code. Некоторое время это не использовалось в коммерческих целях, поскольку время компиляции тогда считалось большими накладными расходами, но в последующие годы стало использоваться все чаще. Чтобы сэкономить компьютерное время, обычно программист выполняет первоначальную компиляцию, проверяет программу вручную, повторно компилирует, а затем тестирует и устраняет ошибки в скомпилированной версии программы с машинным кодом, создавая рулон бумаги. записывать патчи машинного кода в программу по мере внесения каждого исправления. Как только будет доступна достаточно надежная копия, изменения будут реплицированы в Assembler, а программа будет повторно скомпилирована и протестирована. Часто последний этап так и не был полностью завершен, и для производственных программ было небезызвестно, что программные исправления машинного кода загружались с бумажной ленты при каждом запуске. Кроме того, ряд основных коммерческих пакетов для расчета заработной платы, счетов и регистрации акций был написан сотрудниками Бюро до того, как был принят компилятор Assembler, и оставался полностью в машинном коде. Еще одна причуда заключалась в том, что подпрограммы генерации ввода-вывода ассемблера не использовались одним разделом программирования, который написал свой собственный обобщенный пакет ввода-вывода, названный Tape Control, на основе форматов таблиц описания файлов COBOL. Это автоматизировало большую часть подверженного ошибкам программирования пакетирования / отмены пакетирования записей и управления одновременными операциями чтения / записи и условиями конца файла.
  • Компилятор COBOL. Это использовалось очень редко, ранний опыт был не совсем благоприятным. Одним из заметных исключений была программа проектирования электропроводки под названием «WRS1», которая использовалась для помощи в проектировании оборудования для более поздних моделей мэйнфреймов English Electric KDF9 и System 4 . Еще одной странностью был препроцессор таблицы решений для программ COBOL, который сам был написан на COBOL. Это вызывало некоторый интерес, поскольку сотрудники программного бюро в то время экспериментировали с использованием таблиц решений в качестве альтернативы блок-схемам. Однако, хотя эти программисты продолжали писать код на ассемблере из рукописных таблиц решений с некоторым успехом, накладные расходы на компиляцию не позволили использовать препроцессор.

Чтобы оптимизировать производительность производственных программ, программисты бюро разработали стандартные пакеты программного обеспечения для расчета заработной платы, бухгалтерских книг продаж и покупок, регистрации акций, управления запасами и т. Д., А некоторые приложения, такие как расчет заработной платы, поддерживали обработку данных от многих клиентов бюро. за один запуск компьютера, с индивидуальными настройками параметров в соответствии с индивидуальными требованиями заказчика. Более сложные требования клиентов были выполнены с помощью специально разработанных программ.

Работа с компьютером

Очень маленький (около 20 инструкций) загрузчик начальной загрузки можно было разместить в передней части каждой ленты программы, но даже этот подход использовался не всегда. Этикетки на магнитной ленте (за исключением управляемых приложений COBOL и Tape Control) практически не существовали. Цикл ротации «дед-отец-сын» защищал производственные ленты от крупных катастроф, но требовал тщательного ручного контроля. Программисты (или сотрудники отдела производственного контроля операционных комплектов) давали оператору письменные инструкции, на которых программная лента и ленты данных загружать, на какие устройства, а также письменное описание того, как загружать и запускать каждую программу. Затем оператор загружал ленты, загружал и запускал каждую программу по очереди вручную с консоли.

Консоль, состоящая из вертикальной дисплейной панели высотой около 10 дюймов (250 мм) и длиной около 5 футов (1,5 м) с панелью управления аналогичного размера, расположенной под небольшим углом под ней. Каждая из этих двух частей была заполнена маркированными кнопками и светящимися индикаторами, каждая (примерно) квадратным дюймом. Секция дисплея состояла из индикаторов, которые при включении отображали двоичными (сгруппированными в восьмеричные) символы текущий рабочий (или статический) статус машины на уровне отдельного ядра машины и на уровне регистров для операций вычисления, чтения и записи, а затем в ходе выполнения. Во время работы программы этот дисплей представлял собой калейдоскоп быстро меняющихся, мигающих разноцветных огней. Раздел панели управления состоял из кнопок для выбора следующего регистра, который должен быть установлен, и центральной части, которая отражала структуру адреса ядра одной машины. Другие кнопки обеспечивают доступ к более сложным операциям. Использование этих кнопок позволяло оператору выбирать, а затем напрямую вводить данные в основные места хранения машины и регистрировать восьмеричный образец, который он / она вводил вручную. Чтобы оператор мог ввести одну машинную команду, каждый из десяти восьмеричных символов команды должен был быть выбран и введен как его двоичный шаблон - каждый с правильным (нечетным) битом четности.

Смотрите также

Ссылки

  1. ^ Саймон Хью Лэвингтон, Ранние британские компьютеры: История старинных компьютеров и людей, которые их построили , Manchester University Press, 1980 ISBN  0719008107, стр. 76
  2. ^ Б. Джек Коупленд (редактор), Электронный мозг Алана Тьюринга: борьба за создание ACE, самого быстрого компьютера в мире , OUP Oxford, 2012, ISBN  0191625868 , стр. 166-168
  3. ^ А. Ганди, Ранняя компьютерная индустрия: Ограничения масштаба и объема , Springer, 2012, ISBN  0230389112 , стр. 196-198