CDC COS (Chippewa Operating System)

Материал из Национальной библиотеки им. Н. Э. Баумана
Последнее изменение этой страницы: 15:46, 21 ноября 2017.
CDC 6600 с консолью

Chippewa Operating System, которая часто называется COS, - это операционная система для суперкомпьютера CDC 6600, обычно считающаяся первым суперкомпьютером в мире. Первоначально Chippewa была разработана как экспериментальная система, но затем была развернута и на других машинах CDC 6000.

Chippewa была довольно простой системой управления, ориентированной на работу, полученной из более раннего CDC 3000, который позже повлиял на Kronos и SCOPE. Название системы было основано на Центре исследований и разработок Chippewa Falls CDC в Висконсине.

Эта операционная система в Control Data Corporation отличалась от предыдущей операционной системы Cray (также называемой COS) в Cray.

История

Термин «Суперкомпьютер» впервые был использован в Нью-Йоркском мире в 1929 году для обозначения крупных табуляторов, изготовленных на заказ, которые IBM сделала для Колумбийского университета.

В 1957 году группа инженеров покинула корпорацию Sperry для создания Control Data Corporation (CDC) в Миннеаполисе, штат Миннесота. Сеймур Крей покинул Сперри через год, чтобы присоединиться к своим коллегам в CDC. В 1960 году Cray завершил CDC 1604, один из первых самых быстрых твердотельных компьютеров в то время, когда вакуумные трубки использовались на большинстве крупных компьютеров.

CDC 6600

Примерно в 1960 году Cray решил создать компьютер, который был бы самым быстрым в мире с большим отрывом. После четырех лет экспериментов вместе с Джим Торнтоном и Дином Рушем и около 30 другими инженерами Cray завершил CDC 6600 в 1964 году. Cray переключился с германия на кремниевые транзисторы от компании Fairchild Semiconductor. У них не было недостатков, как у кремниевых транзисторов меза. Он управлял ими очень быстро, и скорость света ограничивала очень компактную конструкцию с серьезными проблемами перегрева, которые были решены путем введения холодильного оборудования, разработанного Дином Рушем. Учитывая, что 6600 превосходит все компьютеры того времени примерно в 10 раз, он был назван суперкомпьютером и определил суперкомпьютерный рынок, когда сто компьютеров были проданы по 8 миллионов долларов каждый.

6600 набрал скорость благодаря «фермерству», работе с периферийными вычислительными элементами, освободив CPU (центральный процессор) для обработки фактических данных. Компилятор Minnesota FORTRAN для машины был разработан Лиддиардом и Мандстоком в Университете Миннесоты, а вместе с ним 6600 мог поддерживать 500 килофлоп на стандартных математических операциях. В 1968 году Cray завершил CDC 7600, снова самый быстрый компьютер в мире. На частоте 36 МГц у 7600 было примерно в три с половиной раза больше тактовой частоты 6600, но было значительно быстрее из-за других технических новшеств. Они продали только около 50 из 7600-х, не совсем неудачно. Cray покинул CDC в 1972 году, чтобы сформировать свою собственную компанию. Спустя два года после его отъезда CDC доставил STAR-100, который на 100 мегафлоп был в три раза быстрее, чем 7600. Наряду с Texas Instruments ASC, STAR-100 была одной из первых машин, использующих векторную обработку - идея была вдохновленный в 1964 году языком программирования APL.

Процесс «мертвого старта»

Процесс «мертвого старта» требует, чтобы на матрице тумблеров на панели «мертвого пуска» была установлена короткая программа (до 12 инструкций). Когда процесс мертвого запуска запускается, эта программа «мертвого запуска» передается в память нулевого оптического процессора и выполняется. Программа «мертвого запуска», в свою очередь, передает программу бутстрапа другому периферийному процессору. Эта программа загрузки загружает загрузчик системы из библиотеки и передает управление ей. Системный загрузчик переносит резидентную программу на каждый периферийный процессор, заставляет загружать программы Display and Monitor, загружает резидентную память, библиотеку и таблицы центральной памяти и помещает оставшиеся библиотечные программы на диск. Затем он запускает выполнение программ отображения и монитора.

Инструкция IAM

Инструкция IAM представляет собой 24-битную инструкцию: d-часть инструкции содержит номер канала, а d-часть инструкции содержит адрес в периферийной памяти процессора, где должно храниться первое слово данных. Предполагается, что регистр A содержит слово слова, которое нужно прочитать.

Функционирование инструкции IAM

• Во время выполнения инструкции IAM содержимое регистра P сохраняется в местоположении 0, а регистр P используется для хранения адреса памяти для следующего слова, которое нужно сохранить. В то время, когда содержимое регистра P сохраняется, P содержит адрес второго слова (m-часть) инструкции IAM. Перед выходом из инструкции содержимое местоположения 0 считывается, увеличивается на единицу и помещается в регистр P для предоставления адреса следующей команды.

  • Инструкция IAM проверяет количество слов в регистре A, чтобы убедиться, что оно было сведено к единице: если да, то (A) сокращается на единицу и вызывается инициатор. Поэтому, если инструкция IAM вводится с содержимым регистра A, равным нулю, количество слов составляет 777778.
  • Инструкция IAM может быть выведена одним из двух способов: (1) в результате того, что количество слов уменьшено до нуля или (2), потому что канал стал неактивным. Если количество слов не уменьшено до нуля и канал активен, выход не будет выполняться, даже если данные не считываются: процессор будет работать в режиме отключения 4, ожидая, когда канал станет заполнен.

Когда процесс мертвого старта запусщен, начинается следующая последовательность:

  • Выдается сигнал Master Clear
  • Регистр A каждого периферийного процессора установлен в 100008: регистр P каждого периферийного процессора установлен на ноль.
  • Регистр K каждого периферийного процессора установлен в 712 (отключение 4 команды IAM).
  • Все каналы настроены на пустые и активные.
  • Все периферийные процессоры подключены к соответствующим каналам (то есть PPO к каналу 0, PP1 к каналу 1 и т.д.) Путем установки соответствующего номера канала в регистре Q каждого процессора.
  • Выбирается первый синхронизатор на каждом канале: выбран первый блок на этом синхронизаторе.
  • Синхронизатор «мертвого запуска» выбирается на канале 0.
  • Программа на мертвой панели запуска переносится в память PPO: сначала передается нулевой байт (сохраняется в местоположении 0); затем передаются 12 байтов от коммутаторов панели (хранятся в местоположении 1 - 14); наконец, передается другой нулевой байт (сохраняется в местоположении 15).

Синхронизатор «мертвого запуска» отключает канал 0, инициируя выполнение программы «мертвого запуска». Периферийный процессор нуля обрабатывает данные, отправленные синхронизатором «мертвого старта», так как он будет поступать с любого другого контроллера. Когда синхронизирующее устройство с мертвым запуском отключается от нулевого канала, периферийный процессорный нуль выходит из инструкции IAM. При выходе содержимое местоположения 0 увеличивается на 1 и используется как адрес следующей команды. Так как это место было очищено до 0 с помощью процесса «мертвого старта», адрес следующей команды - 0001: это место имеет место первая инструкция программы, отправленная синхронизатором «мертвого запуска» с панели «мертвый пуск».

Программа «мертвого старта»

Цель программы «Остановить старт» - передать программу начальной загрузки на периферийный процессор xx (PPxx), где xx - номер канала контроллера, на котором установлена ​​лента системы.

Программа «мертвого старта» начинается с передачи блока из 8 слов на канале xx.

PPxx подключен к этому каналу и работает на холостом ходу в отключении 4 инструкции IAM: поэтому он будет читать эти 8 слов и хранить их в своей памяти, начиная с местоположения 0. PPxx еще не начнет выполнение, так как канал все еще активен, а число слов не уменьшено до нуля. Затем программа мертвого запуска отключает канал xx: когда канал xx становится недоступным, PPxx выходит из инструкции IAM и начинает выполнение программы начальной загрузки. При выходе из инструкции IAM содержимое местоположения 0 считывается, увеличивается на 1 и используется как адрес следующей команды. Поскольку первое слово блока из 8 слов, отправленное PP0, было равно нулю, этот адрес равен 0001, а инструкция по этому адресу считывается и выполняется.

Затем программа «мертвого старта» выдает команду ввода для канала 13: канал 13 пуст и активен, PPO будет работать в режиме отключения 4 этой команды, ожидая, что канал 13 станет заполненным.

Программа bootstrap

Программа bootstrap в PPxx выдает необходимые функции, активирует и вводит инструкции для чтения первой записи на системной ленте в ее память, начиная с местоположения 0. Когда эта запись, содержащая программу загрузчика, была прочитана, PPxx выйдет из инструкции IAM, когда контроллер отключит канал при обнаружении разрыва в конце записи. PPxx, выходя из инструкции IAM, считывает содержимое местоположения 0, добавляет 1 к нему и использует его как адрес следующей инструкции. Место 0 содержит первое слово записи, считанное с ленты: таким образом, это слово поставляет адрес первой инструкции программы загрузчика.

Программа загрузчика

Программа загрузчика

Как уже упоминалось ранее, первое слово программы загрузчика (местоположение 0) содержит адрес - 1 первой инструкции загрузчика. Программа загрузчика также содержит резидентный пакет периферийного процессора в местах 0001 - 07778. Этот пакет передается загрузчиком на каждый из других периферийных процессоров. Резидентная программа содержится в местах 0100 - 07778: местоположения 75, 76 и 778 содержат значения 60, 61 и 62 соответственно. Эти значения являются центральными адресами памяти входного регистра, регистра вывода и буфера сообщений для PP1 и должны быть изменены, когда резидентный пакет передается на процессоры, отличные от PP1.

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

Затем программа загрузчика проверяет, установлена ​​ли лента системы на блоке 607-B или блоке 626-B, и соответственно модифицирует функциональные коды. Затем происходит перенос резидентного пакета на каждый из других процессоров. Сначала загрузчик выводит одно слово в принимающий процессор, который хранит его в своей памяти в нулевом положении. Поскольку принимающий процессор находится в отключении 4 инструкции IAM, после выхода из этой инструкции он будет использовать содержимое местоположения 0 в качестве адреса - 1 следующей инструкции, которую он должен выполнить. Для процессоров 1-8 этот адрес равен 77 ^: адрес - 1 первой инструкции резидентной программы. Для процессоров 0 и 9 этот адрес равен 7778: адрес - 1 первой инструкции программ MTR и DSD, соответственно. После передачи этого единственного слова загрузчик затем передает резидентный пакет, который принимающий процессор сохраняет в своей памяти, начиная с местоположения 0001.

Получающий процессор не выходит из инструкции IAM в это время, однако, поскольку условия для выхода (количество слов, уменьшенное до нуля или неактивного канала), не были выполнены. Когда происходит передача каждого резидента, программа-загрузчик изменяет указатели Input Register, Output Register и Message Buffer на соответствующие значения для каждого процессора.

Когда все процессоры были загружены резидентным пакетом, программа загрузчика затем переходит к загрузке программ MTR и DSD из системной ленты в процессоры 0 и 9 соответственно. Формат системной ленты показан на рисунке 5. Лента содержит один файл двоичных записей: полная физическая запись содержит 1000 граммов слов CM.

Логическая запись, такая как программа MTR или резидент CM, может состоять из более чем одной физической записи: последняя физическая запись для конкретной программы может быть короткой записью менее 1000 граммов слов CM. Конец логической записи указывается при обработке короткой физической записи. Если обнаружена запись с нулевой длиной (4 слова PP), за исключением подпрограмм библиотеки диска: конец каждого дисковая библиотека обозначается только короткой записью. Конец библиотеки обозначается записью нулевой длины. Загрузчик считывает записи, содержащие программу DSD, передавая каждую запись, когда она считывается в PP9: когда обрабатывается короткая запись или регистрируется запись нулевой длины, загрузка программы DSD завершена. Этот процесс повторяется для записей программы MTR. Затем загрузится резидент CM. Этот резидент содержит указатели таблиц и начальные значения для определенных таблиц », например таблицы столов треков.

Библиотека резидентной подпрограммы загружается с использованием указателя RSL из резидентства CM для предоставления начального адреса: резидентная периферийная библиотека (RPL) загружен. Во всех трех случаях (CM Resident, RSL и RPL) записи считываются и передаются в центральную память до тех пор, пока не будет обнаружена запись с нулевой длиной или обработка короткой записи.

Затем программа загрузчика отключает каналы для каждого из других процессоров, позволяя этим процессорам выйти из инструкции IAM и начать выполнение своих программ. Теперь, когда выполняется MTR, программа загрузчика может использовать помощь MTR при загрузке библиотек на диске.

Загрузчик запрашивает трек из MTR через его резидент и берет указатель «Периферийная библиотека» из центральной памяти, чтобы получить начальный адрес каталога. Затем он считывает запись с системной ленты, строит запись PLD и записывает ее в каталог и переносит запись на диск.

Следующая запись затем считывается с ленты и записывается на диск: этот процесс продолжает, пока не будет обработана короткая запись, что указывает на то, что полная программа была перенесена. Следующая запись считывается с ленты, запись в каталоге, созданная и написанная в каталоге, и процесс чтения записей с ленты и их повторной передачи на диск. Конец библиотеки обозначается путем обнаружения записи нулевой длины.

Когда периферийная библиотека была перенесена на диск, передача центральной библиотеки на диск инициируется и выполняется таким же образом. Когда половина трека заполняется во время передачи библиотеки на диск, программа загрузчика запрашивает новую половину трека от MTR через резидентную программу (загрузчика). Резидентная программа POSITION DISK используется для размещения диска в новом положении полупериода.

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

SCOPE

Скриншот SCOPE 3.1

Эта операционная система была основана на исходной операционной системе Chippewa. В начале 1970-х годов он был переименован в NOS/BE для CDC Cyber-машин. Операционная система SCOPE представляет собой файловую систему, использующую массовое хранилище, устройства с произвольным доступом. Он был разработан для использования всех возможностей компьютерных систем CDC 6000 и полностью использует многооперационные режимы для всех сегментов компьютера. Основными задачами SCOPE являются контроль выполнения задания, назначение хранилища, выполнение сегментной и накладной загрузки. Его функции включают в себя комплексные функции ввода / вывода и процедуры обслуживания библиотек. Дневной файл хронологически записывает все рабочие задания и возникающие проблемы. Для поддержки отладки доступны карты дампов и карт памяти. Под управлением SCOPE могут использоваться различные сборщики (COMPASS), компиляторы (ALGOL, FORTRAN, COBOL) и служебные программы (SORT/MERGE, PERT/TIME, EXPORT/IMPORT, RESPOND, SIMSCRIPT, APT, OPTIMA и т.д.). Сообщество компьютерной эмуляции неоднократно предпринимало попытки восстановить и сохранить это программное обеспечение. Теперь он работает под эмулятором CDC CYBER и 6000[Источник 1].

Литература

Примечания

  1. CDC SCOPE // WikiVisually https://wikivisually.com/wiki/SCOPE_(software) (Дата обращения: 26.10.2017).