Проект Кронос и малоизвестная российская команда из Новосибирского академгородка Kronos Research Group (KRG)
Во второй половине 1980 годов исследовательской группой Кronos были разработаны уникальные технологии, воплощенные в виде целого ряда законченных коммерческих продуктов, и ряд проектов в области космической и телекоммуникационной промышленности. С течением времени группа трансформировалась в три самостоятельные компании, известные как XDS, xTech Ltd. и ProPro Group.
Kronos Research Group (KRG) еще в середине 80 годов разработала отечественную 32-разрядную рабочую станцию, собственную UNIX-подобную операционную систему, реализовала программную и аппаратную части транспьютерной архитектуры для проекта МАРС (Модульные Асинхронные Развиваемые Системы).
Новосибирский государственный университет
Лето 1983 года считается началом создания проекта Кронос, как раз в это время стали доступны материалы по Modula-2 и Lilith. Алексей Недоря работал над дипломной работой — компилятор с языка Edison, Дмитрий Кузнецов работал над созданием компилятора Modula-2. Была организована небольшая группа, которая интересовалась программированием, компиляторами в том числе. Позже к группе присоединились Евгений Тарасов и Владимир Васекин. И вот весной 1984 года этим четверым в голову пришла «нахальная» идея создать что-то подобное Lilith, разработать свою машину со своей ОС.
Кронос-игрушки – это отдельная история. Вообще говоря, Кронос и задумывался изначально потому, что народу очень хотелось иметь машину для игр в собственном распоряжении. Дорого бы я дала сейчас, чтобы поиграть в Кроносовые игрушки. Чемоданчики – были написаны Джоном Серюковым. Он подолгу играл в них – должно быть, отлаживал 🙂 Ксоникс – каких только не было придумано стратегий выигрыша! Самым изящным считалось загнать все шарики-убийцы в узкие комнаты или лабиринты, где они могли совершать только слабые подёргивания. Пентикс – аналог Тетриса, только из пяти квадратиков – первая игрушка на Илюшином цветном дисплее. Аддикция игры была такая, что добровольно прекратить играть было абсолютно невозможно. Одной из игрушек был «Лабиринт», творение Димки Флаасса. Суть игры – требовалось запрограммировать робота на мета-язычке так, чтобы он обошёл лабиринт, собрав по пути все «клады». Народ сидел, вырисовывая на бумажке схему лабиринта, вычисляемую в процессе игры эмпирически – лабиринт порождался для каждой игры случайным образом. Увлечение игрой закончилось неожиданно и закономерно – Димка переделал лабиринт в 3-мерный, что сильно усложнило игру и катастрофически увеличило время ее прохождения. Не осилили.
Опираясь на опыт разработки персональной ЭВМ Lilith при разработке, все же многие решения принимались независимо. Была существенно переработана архитектура взаимодействия процессов, прерываний, адресации и работы с внешними устройствами. Многие упрощения были достигнуты благодаря 32-разрядности процессора (в виде платы для Электроники-60), созданием которого были заняты Тарасов с Васекин. Дедушкой Кроноса можно уверенно считать Никлауса Вирта, профессора из Цюриха, именно он создал язык программирования Modula-2 и реализовал его на машине Lilith. Modula-2 незаменима при разработке программного обеспечения.
Название было дано в честь греческого титана Кроноса. В представлении древних греков царство Кроноса соответствовало «золотому веку», а еще оно созвучно греческому слову «хронос», что в переводе означает — время. По словам разработчиков название скорее всего было выбрано случайно, понравилось звучание.
Существенной особенностью проекта Кронос была исключительная, я бы сказал, магическая, притягательность его для талантливых студентов. Такого эффективно работающего, стихийно самоорганизованного молодежного коллектива я больше никогда не видел. В выделенных для работы 40 квадратных метрах день и ночь что-то программировалось (программировали обычно ночью), обсуждалось, приходили все новые и новые студенты, им ставили задачи, а уже через небольшое время они чувствовали себя старожилами Кроноса. Через этот проект прошло, наверное, человек 20. Сразу скажу, что все они достигли высшей квалификации и сейчас являются лидерами своих нынешних команд, хотя и в разных организациях, городах и странах.
Кузнецов начал писать компилятор на Burroughs 6700 и интерпретатор Кроноса. Недоря реализовывал маленькую ОС под управлением интерпретатора. К лету 1984 года Недоря написал на языке Паскаль микроассемблер для микропрограммирования Кроноса. Уже в декабре 1984 года процессор Кронос-1 был готов. После того как для организации кросс-разработки по последовательному каналу Кронос был подключен к Burroughs, начался сложный процесс отладки.
На Кроносе работала пультовая микропрограмма, на Burroughs же была написана маленькая связная утилита, она позволяла загрузить программу в Кронос и запустить ее. Все заработало, но так себе. Поэтому вскоре началась разработка Кронос-2. Планировалось изменить систему команд, процессор, компилятор. Его разработка началась с разработки системы команд, которую не удавалось друг с другом согласовать. Раскрутка новой системы велась прямо через Кронос, на Паскале был завершен Кронос-ассемблер, который был структурным и поддерживал понятия процедуры и раздельной компиляции.
На Кронос-ассемблере были написаны загрузчик, примитивная файловая система и редактор, планировщик процессов. К Кроносу был подключен второй терминал, после этого заработала двухпользовательская операционная система.
Начиная с 1985 года все работы по проекту Кронос проводились в Вычислительном центре, при поддержке А.Г.Марчука. Тут работали создатели проекта Дмитрий Кузнецов, Алексей Недоря, Евгений Тарасов и Владимир Филиппов. Изначально был разработан Кронос-1, позже Кронос-2, Кронос-2.2, Кронос-2.5, Кронос-2.6. Кронос-2 был высоко оценен любителями (вручную было изготовлено около 50 машин) и специалистами в промышленности — документация передавалась в разные организации и в некоторых разработка тиражировалась.
Кронос-2.2, Кронос-2.5, Кронос-2.6 известны как семейство процессоров Кронос.
В 1985 году команде Kronos Group попала в руки книга Вирта на английском языке, которая была о Modula-2.
Это было то, что мы искали, – разбиение программных модулей на интерфейсные и исполнительные части, а также система более строгого программирования с сохранением удобного доступа к низкоуровневым средствам. Появилась возможность наладить нормальное коллективное взаимодействие и вычленить на уровне языка системно-зависимые части. Продолжая работы по обкатанной технологии, мы стали перестраивать свое инструментальное хозяйство на ходу. За пару месяцев удалось разыскать работающий компилятор (это были преемники виртовской системы для PDP-11: М22 и М23 для RT-11). Система понравилась, единственное, что разочаровало, – не очень удачная реализация генератора объектного кода. Даже ради красивой идеи мы не могли позволить себе транжирить системные ресурсы.
Командой была реализована несложная методика ассемблерных вставок, выявлялись критические процедуры, после чего они переписывались вручную на ассемблере «… Оставалось только обмануть защиту компоновщика и написать небольшую программку, которая прямо с листинга в кодах заносила «оптимизированные» процедуры в соответствующее место и корректировала все контрольные суммы, обеспечивающие целостность объектного кода. Все работало как часы».
Алексей Недоря и Владимир Филиппов у рабочей станции Кронос 2.6
Работы проводились на машине с 96 Кбайт оперативной памяти, с единственной внешней памятью были флоппи-диски (480 Кбайт). Так как программировать дальше на ассемблере было «затруднительно», Недоря, Кузнецов и Тарасов занялись написание компилятора, для этого потребовалось 2 недели, размер такого компилятора — 3 тысячи строк на ассемблере. «Не знаю, как остальные, – подчеркивает Недоря, – но я до сих пор считаю тот компилятор для „Кроноса“ одной из лучших своих разработок». Команда приступила к созданию операционной системы Excelsior.
Для ОС Excelsior прототипом послужила ОС UNIX. Она была популярна на то время. Правда окончательная версия, которая была полностью написана на Modula-2, была названа Excelsior iV (мнимая UNIX System V). Она была многопользовательская, многозадачная, построенная на принципе динамической загрузки. 15 человек трудились над созданием операционной системы Excelsior, Дмитрий Кузнецов занимался разработкой файловой системы, а Алексей Недоря — ядром.
В 1986 году из группы ушел Васекин и его место занял Владимир Филиппов. Уже к 1988 году группа насчитывала почти 20 человек.
В 1987 году выпускались модификации Кронос-2.5 и Кронос-2.6. СКВ Института кибернетики АН Эстонии, радиозавод в Ижевске, завод в Ленинграде, несколько предприятий в Новосибирске, Бердске, Кишиневе, Перми занимались выпуском этого семейства процессоров, были модернизированы финские 16-разрядные компьютеры серии ELORG-DATA, позже начал разрабатываться 64-разрядный арифметический сопроцессор.
И так, Кронос — это общее название семейства 32-разрядных процессоров, которые были предназначены для создания микро- и мини-ЭВМ, архитектура данных процессоров ориентирована на поддержку языков программирования высокого уровня, а это позволяло реализовывать новейшие концепции в области создания программного обеспечения и использования ЭВМ.
Семейство процессоров Кронос 2.X
Семейство 2.X включает в себя три разработки: 2.2, 2.5, 2.6. Процессоры Кронос выпускались опытными партиями в основном для целей построения инструментальных машин для создания и отладки ПО. Основное применение нашли процессоры Кронос 2.6 при мелкосерийном производстве Рабочей станции Кронос-2.6WS.
Рабочая станция Кронос-2.6WS
Процессоры семейства 2.X имеют одну систему команд, различаются по внутреннему функциональному устройству, быстродействию и конструктивному исполнению. Процессоры полностью совместимы программно, блок микропрограммного управления реализует логику функционирования всех блоков. «Две шины данных объединяют арифметико-логическое устройство, блок регистров, быстрый аппаратный стек на 7 слов, устройства выборки команд и ввода/вывода. Двухшинная внутренняя структура процессоров позволяет выполнять бинарные операции на стеке (сложение, вычитание, логические И, ИЛИ и т.д.) за один такт. Таким образом, за один такт исполняется большинство команд, что отвечает основным идеям RISC-архитектуры. Микропрограммное управление упрощает устройство процессоров и дает возможность реализовать сложные команды типа вызова процедуры». (Архитектура процессоров семейства Кронос)
ОЗУ Кронос М256.2
процессор Кронос П2.1
процессор Кронос П2.2
Кронос 2.2 — первая реализация изложенных выше архитектурных концепций. Процессор выполнен в виде платы в конструктиве ЭВМ Электроника-60, полностью совместим со всеми устройствами, поддерживающими протокол обмена по шине Q-bus 22, оперирует 32-разрядными словами. Шина 16-разрядная, поэтому доступ к слову данных в памяти происходит за два обращения по шине Q-bus 22. АЛУ Кронос 2.2 — 20-разрядное. Адресная арифметика обрабатывается за один такт, а данные – за два такта, процессор размещен на одной плате.
процессор Кронос П2.5
Существенным отличием Кронос 2.5 является наличие локальной памяти объемом 0,5-2 Мбайт — в зависимости от применяемых микросхем. Остальная память — на шине Multibus-1 (до 1 Мбайт). Кронос 2.5 является полностью 32-разрядным, выполнен в виде двух плат в конструктиве Intel. Тактовая частота процессора — 3 МГц, производительность — 1 млн простых операций в секунду над стеком.
процессор Кронос П2.6
Кронос 2.6 отличается конструктивным исполнением и гибкостью реконфигурации для конкретного применения, он может быть встроен в отдельную мини-ЭВМ, в мультипроцессорный комплекс, размер плат 233,3 х 220 мм (Е2) — плата обрабатывающего тракта (АЛУ, стек, регистры), плата микропрограммного управления, плата локальной памяти (0.5-2 Мбайт), плата адаптера шины ввода/вывода. Устройства объединены локальной синхронной 32-разрядной шиной, куда могут быть добавлены платы памяти, адаптера межпроцессорной связи, контроллера к локальной сети и накопителя на магнитных дисках, плата памяти кода bitmap-дисплея, арифметического вычислителя и других устройств, тактовая частота процессора — 3 МГц, производительность — 1,5 млн операций в секунду над стеком.
Из жизни коллектива: «… на рабочей станции Кронос 2.6 без особого напряга могли работать одновременно три пользователя. Поскольку народу в группе было гораздо больше, работать приходилось посменно в круглосуточном режиме. Ночные смены любил Леопольд: он сидел до утра, а потом около восьми шел отводить ребенка в садик. Утром подтягивалась следующая смена.
Приходим однажды утром, на клавиатуре записка от Леопольда. На перфокарте большими печатными буквами написано: «Don’t touch! SYSTEM BUCHET!» Английского слова «buchet» никто не знал. Стали искать в словаре Мюллера. Было ясно, что слово написано неправильно, но в каком месте он его переврал и что имел в виду? После обеда, отоспавшись, пришел сам виновник торжества. Оказалось, он хотел донести до нас, что ничего нельзя трогать, поскольку модуль SYSTEM виснет».
Кронос-2.6 WS. Экспериментальная модель рабочей станции
Как упоминалось раньше, ЭВМ с процессорами Кронос 2.2, Кронос 2.5 и Кронос 2.6 работали под управлением операционной системы Excelsior, которая предназначалась для решения широкого круга задач. ОС Excelsior была создана отвечая следующим принципам — открытость системы, модульность, интегрируемость результатов, удобство интерфейса. Все программные средства ОС Excelsior ориентированы на мультипроцессное, многозадачное и многопользовательское применение. Модульная архитектура позволяла применять процессоры Кронос и во встроенных системах реального времени, и в супермини-ЭВМ. Легкость программирования делала Кронос незаменимым в приложениях, которые требовали постоянного развития и изменения ПО.
Исследовательский проект МАРС (Модульные Асинхронные Развиваемые Системы)
В 1983 году стало известно, что в Японии ведется проект по созданию компьютеров пятого поколения, в котором упор делался на значительное повышение «интеллектуальности» создаваемых систем. Проект привлек внимание и США, и стран Европы, начали формироваться предложения по созданию альтернативных проектов. В СССР взялись дать оценку японскому проекту и предложить концепцию, реальную в наших условиях. Для этого была создана группа специалистов по архитектуре и программному обеспечению ЭВМ, которую возглавил Котов, были привлечены многие специалисты. К началу 1985 года удалось собрать коллектив, подготовить и согласовать необходимые документы, в апреле Временный научно-технический коллектив Старт приступил к работе.
Александр Марчук заместитель руководителя ВНТК Старт:
Хорошо помню, что серьезных разногласий, а тем более конфликтов — не было. Была творческая атмосфера, научный анализ, уважение к чужому мнению. В отчете совсем мало было написано про японский проект, недостатки которого не хотелось даже критиковать. Будущее показало, что мы были правы и из того японского «чуда» мало что получилось. Кстати, и ведущие западные страны ответили на «японский вызов» программами национального уровня, и результаты американцев и европейцев оказались впоследствии куда более значимыми. Энтузиазм и творческую атмосферу нашей рабочей группы подпитывало ощущение начала большой созидательной работы.
Пару слов о финансировании, было выделено 12 млн. рублей на три года, и более миллиона долларов в валюте для закупки инструментальных компьютеров.
Одна из стоек суперкомпьютера МАРС-М, 1989
Кронос стал базовым процессором для создаваемой коллективом Старт вычислительной системы МАРС. В Старте Кронос был доведен до промышленного образца, выпускался мелкими сериями. Был разработан микропроцессор.
МАРС вычислительный элемент имел произвольное число соседей. Основным строительным блоком служил процессор Кронос (МАРС-Т). Целью проекта МАРС-Т было создание сети процессоров, которые были бы связаны быстрыми каналами. Память в системе была только локальная.
Макет МАРС-Т состоял из четырех процессоров Кронос-2.6, связанных каналами. В процессоры были добавлены дополнительные команды для приема/передачи данных из каналов. На одну машину (головную) загружалась ОС Excelsior iV с модифицированным ядром, на все остальные – небольшое специализированное ядро.
Позже был проект СОКРАТ, во главе с И. В. Поттосиным, сюда же вошли и некоторые члены Kronos Research Group. Проект предусматривал создание средств кросс-разработки для бортового ПО российских спутников.
После развала Сюза правительственное финансирование исследовательских проектов прекратилось и, увы, уже в 1991 году проект Старт был практически полностью свернут.
Началась новая эра -эра частного бизнеса. Участники Группы Кронос создали несколько предприятий. Прикладные программисты собрались в компании ProPro Group, начали работать над созданием чертежного и конструкторского САПР bCAD. Системщики же создали компанию xTech и работали над созданием инструментов программирования, в основном на языках Modula-2 и Оберон-2.
New Kronos
А. Денисов, А. Серюков, Е. Тарасов