Re[7]: Эльбрус мёртв, да здравствует Эльбрус-Б!
От: netch80 Украина http://netch80.dreamwidth.org/
Дата: 21.05.25 19:55
Оценка:
Здравствуйте, Философ, Вы писали:

Ф> Всё-таки лучше переупорядочивать на этапе компиляции — мне кажется, что тут больше возможностей — тут легче загрузить конвеер(Ы).


Хрен там:

1) Представим себе, что есть команда, которая выполняется 100 тактов. Ну там, согласно гайдам x86 у них деление 128/64 выполняется 90. А все остальные выполняются ну до 10 тактов самая сложная. Параллельная группа команд будет выполняться по времени самой долгой, пока она не закончится — все ждут. Кем жертвовать будем?

Наверно, именно из этих соображений из IA64 как раз убрали целочисленное деление. Рисуйте циклы, ребятки (а то, что этот цикл займёт ещё больше времени и к нему не пристроишь другие действия — не проблемы шерифа).

А в OoO проблем нет: пока одно АЛУ хрустит рукояткой арифмометра "Феликс", вычитая по делителю и затем сдвигая его, остальные команды пролетают мимо, и есть шанс, что можно сделать, что никто никого ждать не будет (в реале, конечно, почти никогда не получается идеально, но думать непродумываемое не приходится).

2) Ещё хуже с доступом к памяти: напоминаю, если строки кэша нет ни в одном из L1, L2, L3, запрос идёт в DRAM, а DRAM модуль должен менять строку — прощайте, 100-200-300 тактов. И снова: вот в параллельной группе все получили данные из кэша, а одна ждёт... и все ждут отстающую.

Тут немножко поможет prefetch. Потому и бенчмарки для Эльбруса стараются показывать на потоковой обработке через SIMD, где это возможно. А на другом коде результаты сразу будут в разы хуже, чем у конкурентов с честным OoO: вечно что-то пропадает из кэша в самый интересный момент, и когда на OoO одна соответствующая команда тормозит, на EPIC тормозит вся группа.

Ф>А ведь мне сама идея VLIW нравилась — что-то в этом есть интересное: суперскалярные архитектуры очень сложные — даже просто понять как работает переупорядочивание сложно, а переименование регистров умножает эту сложность кратно. Спекулятивное исполнение вкупе с BTB — вообще заумь. Не нужно быть семи пядей во лбу чтобы предсказать существование ошибок в этих системах — слишком сложно. И они потом, само собой, нашлись — BranchScope, Spectre.


Это вообще не ошибки. Это естественные побочные эффекты изменения времени работы от кэширования. Кэширование сокращает время — но это сокращение можно увидеть со стороны. EPIC (VLIW) будет страдать тем же, просто нет процессоров, где бы этот эффект измерили.

Я в который раз уже говорю — я не понимаю, почему Эльбрусы не комплектуются SRAM вместо DRAM. Разница в цене для вояк будет пофиг, а хотя бы от чудовищных задержек на переоткрытие строки можно будет избавиться (и соответственно сократить всю машину кэшей памяти).
The God is real, unless declared integer.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.