Цитата(SasaVitebsk @ Feb 6 2008, 23:49)

По-моему основные причины медленного продвижения многопроцессорных систем - действительно отсутствие сколь нибудь вразумительных компиляторов, языков и технологий программирования. Это пожалуй первый случай в истории, когда железо реально опережает сознание программистов. И пока (в плане языков) на горизонте ничего не брезжит. Но, и это очевидно, программные технологии за последние годы развиваются столь стремительно, что создание компилятора или другого сложного программного продукта - дело нескольких месяцев, а не нескольких лет, как было ранее. Не хватает какого-то маленького толчка, и всё закрутится. Я это буквально ощущаю. Ну а то, что многопроцессорные системы, даже при невысоком коэффициенте распараллеливания, при всей непредсказуемости времени выполнения той или иной задачи, всётаки наше ближайшее будущее - я думаю никто не сомневается?
Вроде обсуждение было про контроллеры, я и говорю за рилтайм. В остальных приложениях это не так важно (есть способы обхода).
А насчет "сложности компиляторов" - к сожалению, дело не в "программных технологиях" как таковых (кстати, компилятор для практически любой машины уже давно научились писать за разумные сроки, особенно после работ Гриса, Ахо/Ульмана и появления Lex/Yacc). Компилятор чистого С на них делается не больше, чем за месяц, дальше - "раскрутка" (трансляция написанного на С С++), и пошло-поехало. Задачу оптимальной раскладки регистров решил еще Ершов

И "параллельных" языков довольно много (см. по ссылке в конце).
Дело в другом - в конфликте парадигм - "последовательное" написание кода и сильно распаралленное/конвейеризованное исполнение. Т.е. в человеческих мозгах, наработках и тоннах уже написанного кода.
Для справки, "железо" параллельным было практически с самого начала компьютерной эпохи, к примеру, многопоточным (10 аппаратных тредов) был уже более 40 лет назад фронт-енд процессор для CDC6600 (которая была, таким образом, "несимметричной мультипроцессорной системой с общей памятью"). Так что "все украдено и придумано до нас", остается только правильно воспользоваться

А прорыв, кстати, уже есть, и именно для WLIW/EPIC, где есть жесткая диаграмма, которую компилятор может учесть при планировании трасс. Началось все с проекта Multiflow в 1980-х, затем доведено до живого продукта Дитцелом и компанией в Transmeta.
Но важно не это, а то, что Intel вложила в это направление большие деньги, и провела много НИОКР. О результатах части из них я знаю, выигрыш в производительности на единицу мощности потребления/площади кристалла действительно огромный - на порядок-полтора при той же технологии.
Идея именно в том, чтобы убрать из процессора дающую большие задержки логику планирования команд/загрузок/отслеживания конфликтов и фактически оставить только набор АЛУ/память, все планирование выполняет компилятор, генерирующий "длинные" команды для прямого управления аппаратурой. Кстати, примерно так (и по тем же самым причинам) и были сделаны крэевские машины, особенно последние, разработанные при его непосредственном участии.
Так что идея не устарела и вполне здравая. Похожим образом делаются как самые мощные DSP TMS, так и "бытовые" зверушки PNX1300/1500/1700.
На рынок ПК эта технология в полной мере вряд ли придет скоро. Проблема и в маркетинге, и в технике. Первое, при таком подходе нет 100% бинарной совместимости. Нужна перекомпиляция (пусть даже и "невидимая" для пользователя). Но желательно, с анализом исходника. Техническая проблема - для реализации достигаемого выигрыша в быстродействии для больших объемов данных предъявляются более высокие требования к пропускным способностям подсистем памяти. Т.е. нужна куча DIMM, чтобы был эффект - кеши не всесильны, их грузить откуда-то надо и быстро. А если всего этого нет и хочется оставить х86 бинарную совместимость, без анализа исходников - то получится Crusoe со всеми его недостатками (экономичный, но более-менее быстрый только на "родном" коде).
Для мощных же контроллеров с большими вычислительными возможностями - вполне то, что надо. Собственно, упомянутые PNX - и есть такие контроллеры.
За чисто параллельные и многопроцессорные вещи - это скорее в www.parallel.ru