?

Log in

No account? Create an account

Previous Entry | Next Entry

Набрел чисто случайно на одну страничку, вспомнил кусочек жизни.

Где-то в 1998-1999 годах мы с приятелем - Алексеем Пиялкиным (dragonfa) частенько бывали в институте Математики им.Стеклова (ЛОМИ) - примерно на углу Фонтанки и Невского он находится. Не то, чтобы нравилась математика (скорее наоборот :) , но там был Интернет, в то время не такой уж общедоступный, и Sun Classic. Как сейчас помню, взаимосвязь была прямая - чтобы настроить dialup, надо было на этот Sun Classic поставить Solaris 2.0 и скомпилить для него SunOS'овский slip (с ppp были какие-то непреодолимые проблемы).
Сейчас с удивлением вспоминаю, что я реально ставил GNU C, чего-то там в adb/gdb отлаживал. Ради любопытства даже на Sparc'овском ассемблере писал короткие программки,  конвейер заполнял nop'ами после переходов, с регистровыми окнами разбирался (в том же adb!). Просто не верится..

Поскольку весь этот процесс развлечения с Solaris'ом был очень небыстрым (а на Sun Classic'е с 24мб RAM - тем более), ходили мы туда регулярно. Пару раз домой шли пешком аж до Лесной-Гражданки.

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

Изучили просто нереальное количество документации, начиная с 1960-х. Сейчас, подозреваю, единицы имеют представление об архитектурах типа i432, AS/400, SWARD, Эльбрус (не тот, который E2K, а оригинальный). Мы всё пытались придумать архитектуру виртуальной машины, которая красиво легла бы на любую железку - с любым процессором, в том числе и несколькими. Тогда железки были слабоваты и производительность имела значение. Скажем, стековую архитектуру той же JVM (равно как и CISC'овскую у конкурентов - Dis) трудно было рассматривать всерьез, если предполагать, что оно должно работать как на RISC'ах, так и на CISC'ах (и еще VLIW был на подходе), плюс распараллеливаться на несколько процессоров (слово "ядро" не употребялось еще). В то время высокотехнологичные костыли в виде JIT'ов не достигли таких высот, как сейчас.
У нас предполагалось что-то типа регистровой машины с тэговой архитектурой (данные сопровождаются типом, операция частично определяется типами операндов) изначальной ориентированной на использование прекомпилятора. Ну а поверх предполагались объекты, мигрирующие между различной памятью, процессорами/кластерами взависимости от условий и доступности (все это считается средой со свойствами, а объекты стремятся оказаться в среде со свойствами подходящими именно им), capability based системой разграничения доступа, одноуровневой памятью.

Закончились наши исследования вот чем - во-первых, мы уткнулись в проблему драйверов периферии. Во-вторых, чуть позже, Алексей погиб в автокатастрофе. Чем и была поставлена точка ( заметки кое-какие остались). Но поняли мы тогда многое. К примеру, я отчетливо вижу, что в области микропроцессоров, компьютеров и операционных систем с, примерно, 1970-х годов ничего качественно нового не появилось. Просто, мало кто читает старые книжки. Да и пользователям, видимо, хватает того, что уже придумано. Дима Завалишин вот пытается обобщить некоторые правильные идеи и реализовать их в одном продукте. Если удастся - должна хорошая вещь получиться.
...
А страничка неплохая - приятно видеть, что народ полезным делом занимается.

Tags:

Comments

( 3 comments — Leave a comment )
thesz
May. 15th, 2009 08:37 pm (UTC)
http://thesz.mskhug.ru/svn/hiersort/

С 1970-х, значит, ничего не придумали. ;)
cr_it
May. 16th, 2009 01:43 am (UTC)
Просмотрел PDF'ки, завис в математике. Ты можешь в двух словах рассказать в чём идея?
thesz
May. 16th, 2009 07:19 am (UTC)
Динамический поток данных.

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

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

В моём случае ещё и упорядочение по "времени" выполнения программы, чтобы не было переполнения ассоциативной памяти.
( 3 comments — Leave a comment )