Здравствуйте, 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>Меня интересовали не данные гугла, а твоя оценка ситуации. Ещё надеюсь на более-менее вменяемый ответ без тонн собственных терминов, совпадающих с общепринятыми по названию, но не по содержанию
Да, я в курсе, что иногда умею разродиться постами, "режущими слух".
Зрите в корень, как грится, и да пребудет с вами сила. ))