Re[21]: Эльбрус - 8 ядер
От: vdimas Россия  
Дата: 05.06.17 07:09
Оценка:
Здравствуйте, netch80, Вы писали:

N>Или ты не признаёшь за RISC возможность OoO (хотя это сплошь и рядом)


Наверно ты видел где-то реализацию OoO-процессора, совместимого с системой команд некоей RISC-архитектуры и малость недоразобрался в происходящем. Хотя, казалось бы, всё на поверхности.

RISC — это философия построения процессоров, хотя сама аббревиатура изначально появилась от философии формирования системы команд. Но сейчас хватает RISC-процессоров, у которых количество команд поспорит с оными из CISC-мира.


N>или вообще что-то очень оригинальное (и слабо соответствующее действительности) думаешь про RISC. Оба варианта меня смущают.


Ну вот чтобы не смущало, надо отделять мух от котлет.


V>>Побочные эффекты от конвейеризированности в RISC происходят чуть в других местах — на условных ветвлениях.

N>Не во всех RISC.

Почти во всех с конвейером ненулевой длины.


N>И откуда тут взялась идея про побочные эффекты?


От конвейеризированности в отсутствии планировщика, вестимо.

Всё-таки философия RISC — это минимизация "побочных" устройств в процессоре (помимо целевых-исполнительных).


V>> Поэтому-то там бывают такие прикольные виды ветвлений, как "пропустить следующую команду".

N>Если ты про Thumb в ARM, то это больше похоже на вариант

Не важно, на что это похоже. Это один из способов условного ветвления без сброса конвейера.
Ключевое выделено. Безусловные ветвления отслеживаются еще на этапе предвыборки.


V>> Или, например, в той же архитектуре TI C6000 после команды ветвления будет выполнено еще +5 команд, которые уже находятся в конвейере. Т.е. эти следующие 5 команд можно забить NOP-ами, а можно заставить продолжать делать что-то полезное, что и делает оптимизирующий компилятор при компиляции тела цикла. Вот как раз в моём примере видно, что после первого ветвления еще 5 команд приносят некоторую пользу.


N>Delay slot на 5 команд? Оригинально ты же перед этим показывал, что это VLIW. Зачем это называть конвейером, когда это пакет одновременно исполняющихся команд?


Вот, опять ты недоразобрался. Речь о конвейере этих VLIW-команд, а не о нескольких командах в составе пакета. Я же написал выше — почти во всех современных RISC присутствует конвейер команд. Собсно, эта инфа даётся на первых страницах даташита процессоров, т.е. найти её легко.


V>>Увы, конфликтует, когда речь о RISC, потому что ты понятия не имеешь, как он там устроено "унутре". ))

N>Видимо, конфликтует только в твоих представлениях, в которых RISC не может иметь суперскалярность.

Не может. Еще раз, медленно. В основе суперскалярности лежит абстракция исходного кода от кол-ва исполнительных устройств. Это принципиально. И это противоречит философии RISC, когда код напрямую оперирует реально-существующими исполнительными устройствами.

Помимо RISC и CISC есть еще гибридная технология со своим названием — MISC, может тебя это смущает?


N>Или они для тебя уже не RISC? Тогда вводи свои термины специально для этой дискуссии.


Зачем? Есть вики, там вполне доступно и в этом вопросе правильно.


V>>Суперскаляр динамически распределяет свои ресурсы, поэтому, от исходного SIMD там может ничего не остаться после отображения вот этого "абстрактного" входного бинарного кода программы на конкретный внутренний VLIW-микрокод. Ты даже не можешь гарантировать — выполнится ли эта групповая операция над данными за один такт (одновременно) или последовательно/произвольно/как получится, на доступных в данный момент вычислительных блоках. ))

N>Спасибо, кэп. И что?

Дык, в этом состоит принципиальное отличие RISC от суперскаляра/СISC. Т.е. отличие не в системе команд, а в способе исполнения этих команд.


V>>В общем, применение термина SIMD к суперскаляру — оно не корректно, если быть строгим. Даром внешне, т.е. сугубо для программиста, эта техника выглядит почти одинаково в обеих случаях.

N>Это ортогональные друг другу сущности. И "внешне для программиста" они никак не могут одинаково выглядеть. Или ты уже и SIMD переопределил по-своему?

Зачем по-своему? Изначально SIMD появился в процессорах архитектуры MIPS и имел собственную аббревиатуру. Затем в других архитектурах — DEC Alpha и PowerPC, где под векторные вычисления явным образом были введены дополнительные процессорные элементы, т.е. доступные для непосредственного их программирования. Их даже иногда называют "DSP-сопроцессоры". А в архитектуре x86 эти SIMD-команды исполняются "непонятно на чём" — на некоем черном ящике. Т.е. как по мне — это просто стыренная из другой предметной области аббревиатура. Маркетинг, мать его так. ))

В терминологии оно как? Кто первый, того и тапки. Я просто показываю, откуда "оно" взялось.


N>Меня интересовали не данные гугла, а твоя оценка ситуации. Ещё надеюсь на более-менее вменяемый ответ без тонн собственных терминов, совпадающих с общепринятыми по названию, но не по содержанию


Да, я в курсе, что иногда умею разродиться постами, "режущими слух".
Зрите в корень, как грится, и да пребудет с вами сила. ))
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.