Здравствуйте, Sinclair, Вы писали:
S>Ну всё таки нет. у SIMD есть офигенное преимущество — single instruction. То есть тайминг всей команды одинаковый.
Тайминг всей одной команды одинаков? ))
VLIW способен на это же by design через явный параллелизм на уровне команд (
EPIC), для этого достаточно задать одну и ту же команду разным операндам в широком слове и получишь "одинаковый тайминг всей команды".
Основная особенность линейки отечественных процессоров «Эльбрус» — заложенный в архитектуру принцип явного параллелизма операций, он даёт возможность выполнять на каждом ядре за один машинный такт до 25 операций неупакованных 32- и 64-разрядных данных и до 41 операции в векторном режиме (упакованные 32-разрядные данные)[8], что обеспечивает высокую производительность при умеренной тактовой частоте;
Вот тебе за такт 41 векторная операция (упакованные данные — это которые идут последовательно в памяти).
Одна такая операция равна одной SIMD-операции привычной тебе архитектуры, а тут их 41.
25 неупакованных за такт — тоже неплохо, позволяет вести эффективные вычисления в регистрах без обмена с RAM.
Для сравнения с SIMD раздели на 4, получишь 6 аналогов SIMD-инструкций за такт в регистрах (с произвольной их адресацией).
Но аналогично лишь условно, бо VLIW/EPIC оставляют больше простора для реализации всевозможной комбинаторики сценариев.
Впрочем, я уже пытался обратить на этот важный факт внимание, не зря ведь когда-то суперкомпьютеры делались по такой технологии.
Насчёт задержек — компилятор обладает информацией о таймингах операций.
Далее.
Со своей стороны железо использует несколько спекулятивных конвейеров, где по итогу ветвления ненужные ветки (и результаты их вычислений) отбрасываются.
Примерно то же самое происходит и в суперскалярах, т.к. ОО — это лишь один из трюков, без спекулятивности никак.
=====================
Чтобы два раза не вставать и не возвращаться к этой скучной теме:
SIMD выручает там, где вычисления дороги, например, из-за планирования OO и спекулятивности.
Именно это и есть "его офигенное преимущество" (С), оно же единственное, т.к. вычисления в суперскалярных процах слишком дороги — до половины всей энергии и транзисторов на кристалле заняты обслуживанием потока команд, а не целевыми вычислениями. В архитектурах EPIC больше ресурсов заняты полезными вычислениями.
По-сути, суперскаляры являются компроммисом между быстрыми вычислительными ядрами и ужасного медленного IO, в т.ч. RAM.
И если обратишь внимание на относительный рост характеристик компонент вычислителных систем, то станет видно, что все 90-е и примерно до 2004-го резко отрывались в быстродействии ЦП, а IO безбожно отставало. Сейчас кривая роста эффективности ЦП давно в насыщении, зато IO продолжает стабильно улучшать свою эффективность.
По мере увеличения эффективности обмена с RAM значимость EPIC-вычислений будет расти. Но в данный исторический период, когда RAM с т.з. ЦП работает чудовищно медленно, суперскаляры рулят, ес-но.
Ну а я просто вижу, что кеши в процах тоже непрерывно растут, а там статическая быстрая память, сегодня уже есть по 64 метра.
Рано или поздно внутренняя память процов вырастет до размера "достаточности" и OO-исполнение потеряет свою остроту. ))