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

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

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

Фон

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

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

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

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

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

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

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
       СРАВНИТЬ УСТАНОВИТЬ £ T ЗАРПЛАТУ, R SC TAXLIMIT TAXLIMIT, R CTC BELOWTAXLIMIT ABOVETAXLIMIT EQUAL TC EQUALTAXLIMIT

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

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

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

<IAN●TAYLOR●41●HIGH STREET●KIDSGROVE●STAFFS>

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

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

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

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

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

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

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

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

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

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

  • Ранние британские компьютеры

Рекомендации

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