Hi Roman,
Fri Oct 03 2003 20:53, Roman Khvatov wrote to All:
RK> Кстати, по поводу современных процессоров и Форт процессоров есть одно RK> любопытное наблюдение:
RK> Есть такая фирма, Sun называется, и пыталась она сделать Java процессор RK> (что бы байткод от Java VM был ее машинным кодом), и сделала - PicoJava RK> назывался. Делался он на той же технологии, что и UltraSparc II. В RK> результате, один и тот же Java байткод на PicoJave исполнялся в несколько RK> раз _медленнее_, чем тот же код на UltraSparc II на JIT'е :(
Ссылочку не дашь, где про это можно прочитать?
RK> Разбор полетов выявил причину - UltraSparc II супер скалярный процессор, RK> то есть он пытается загрузить сразу несколько команд и исполнять их в RK> параллель. Очевидно это можно сделать только для независимых команд, в
На
formatting link
я почему-то нигде не нашел прямого указания на то, что он суперскалярный проц. Они его называют CMT: These chip multithreading (CMT) processors are designed to execute tens of threads simultaneously, a sharp contrast to the single thread processed at a time by todays typical processors. Это концепция существенно отличается от суперскалярных VLIW пней, которые "нахапывают" сразу много команд в одном треде, а потом "распихивают" эти команды для параллельного исполнения в независимые блоки своего ЦПУ.
RK> частности тех, которые не связаны по используемым регистрам. Компиляторы RK> (в том числе и JIT) об этом знают, и стараются расположить команды так, RK> что бы процессор мог загрузить максимальное количество команд.
RK> PicoJava тоже суперскаляр, но в ней все обстоит гораздо хуже - так как RK> Java VM это стековая машина (как и Форт, кстати), и все операции RK> выполняются над верхушкой стека, то практически _все_ команды оказались RK> зависимы по данным, и число одновременно исполняемых команд упало RK> практически до 1 (то есть вся суперскалярность работать перестала).
Странно что Sun смогла наступить на такие грабли. Вроде не чайники, а подобная проблема должна быть достаточно очевидна задолго до того, как сделали железо, на ранних этапах проектирования.
Ты ничего не путаешь, разве PicoJava - это суперскаляр, расходующий столько же кремния как UltraSparc II (5.4 млн транзисторов, если не ошибаюсь)? Насколько я знаю, это сравнительно маленький проц (примерно такого же класса как ARM), заточенный на встраиваемые применения:
formatting link
I and II are licensable cores, which can be integrated with the application specific I/O functions to design a complete embedded processor that is ideally suited for Internet Information Appliances such as:
-- Digital set-top boxes
-- Internet TVs
-- Internet screen phones
-- Automotive communications devices
Поэтому сравнивать его производительность с UltraSparc II, предназначенным для WorkStations, по крайней мере странно, это примерно то же что AVR сравнивать с пнем. Еще более странно делать какие-то выводы на основе такого сравнения.
RK> Это не значит, что нельзя аппаратно распараллелить операции со стеком, RK> это лишь значит, что затраты аппаратуры на такое распараллеливание RK> превысят затраты аппаратуры на само ядро процессора - спрашивается, RK> нафига это надо? Сделать обычный RISC SuperScalar будет гораздо проще, а RK> производительность будет той же.
Твое утверждение, что "затраты аппаратуры на такое распараллеливание превысят затраты аппаратуры на само ядро процессора" - совершенно безосновательно.
Есть такие чипы Нейрон, выпускаемые уже десятка полтора лет. Они являются основой сети LonWorks фирмы Echelon. Так вот, они сделаны именно так: это
8-битный стековый процессор, который за полный цикл (6 тактов) исполняет 3 независимых команды, по 2 такта на каждую. Сделано это было именно с той же целью, к которой сейчас стремится Sun: Нейрон исполняет 3 совершенно независимых задачи одновременно, в каждом командном цикле исполняя по одной команде для каждой из трех задач.
Эшелон с понтом вешает лапшу на уши, что внутри Нейрона 3 процессора, на на самом деле процессор один, за полный цикл просто 3 раза переключаются указатели стеков. Поскольку стековому процессору не надо сохранять контекст, то такое переключение не требует времени. Затраты аппаратуры на 3 набора указателей стеков и мультиплексоры для их переключения мизерны и даже просто смехотворны на фоне остальной аппаратуры ЦПУ. Так что не надо пургу гнать ;-)
Пока, Алексей