LINUX.ORG.RU

Понимание широкой команды, VLIW

 ,


4

2

Лорчик, у меня тут вопрос возник, чисто теоретический.

Есть VLIW, архитектура e2k. Если посмотреть ассемблерный код, то команда там будет в фигурных скобках. Это и есть одна широкая команда.

Пример:

{
  nop 2
  istofd,3    %g17, %g18
}
{
  nop 7
  sdivs,5     %g17, %g16, %g16
}

В документации сказано, что одна такая широкая команда выполняется процессором за 1 такт. Справедливости ради, нужно заметить, что здесь ни слова про ядра. Просто сказано, что за один такт.

Дальше отсебятина, точнее «отменятина». Как бы суть-то широкой команды именно в том, чтобы распределить мелкие команды внутри этой широкой между ядрами процессора. Т.е. смысл фразы «за один такт» - это просто распараллеливание по ядрам.

Поскольку e2k не содержит жуткого блока предсказаний, как на обычном х86_64 и не умеет распаралеливать команды сам. За него это делает компилятор. Вот для этого и нужна эта широкая команда - компилятор распаралелил, перетасовал команды и сказал как их надо выполнить.

А теперь вот вопрсик в связи с этим. Получается, что прогу для e2k придется пересобирать для разных e2k процессоров с разным числом ядер?

Допустим прога собрана для Эльбрус 8С, у которого 8 ядер. Значит в фигурных скобках будет много команд. Т.е. широкая команда будет ну очень широкой, широчайшей прям! А запустится ли этот получившийся бинарник, скажем на 4С, у которого только 4 ядра? А на 1С? В смысле без пересборки.

★★★★★

Ответ на: комментарий от i-rinat

mov ax, 13h int 10h

Толи слишком толсто, толи слишком тонко. Но вопрос задам: причем тут самодостаточные клетки, каждый с независимой логикой, программой работы?

anonymous
()
Ответ на: комментарий от anonymous

Режим 320x200 простой: каждый байт задаёт цвет одного пикселя. Их можно спокойно менять независимо друг от друга. Режим 640x480 сложнее: каждый байт задевает сразу восемь соседних пикселей, и ещё нужно переключать разные цветовые плоскости. Просто так поменять один пиксель нельзя. Нужно сначала вычитать из видеопамяти по байту из каждой плоскости, поменять бит, и уже потом записать всё обратно.

Поэтому 320x200 ближе к идее о независимых клетках.

i-rinat ★★★★★
()
Ответ на: комментарий от khrundel

Да. А особенно удивительно, что сошлись у тебя 35 наносекунд с 35 циклами :).

Я почитал статью про zen 2 на anandtech.

AMD manages its L3 by sharing a 16MB block per CCX, rather than enabling access to any L3 from any core.

Выходит что задержка для 16 Мб, что в 2 раза меньше чем у A12. С таким раскладом выходит соотношение задержек ± 1/2, 35-40 тактов против ~22 (видимо c учётом L1).

Но всё равно посыпаю голову пеплом. Пойду отдохну от этих споров.

anonymous
()
Ответ на: комментарий от anonymous

что в 2 раза меньше чем у A12

Больше.

anonymous
()
14 февраля 2021 г.

оскольку e2k не содержит жуткого блока предсказаний, как на обычном х86_64 и не умеет распаралеливать команды сам.

Кстати, судя по каналу ютуба где энтузиасты (но причастные так или иначе к разработам над Эльбрусом) портируют опенсорс игры под e2k

звучало то что МЦСТ в неопределенном будущем рассматривает возможность появления аппаратного блока предсказаний.

Т.е. тогда - отсутствие такого блока сейчас можно рассматривать не как принципиальное решение для каких-то плюсов, а просто как более простое решение, от которого они хотели бы отойти.

bonta ★★★★★
()
Ответ на: комментарий от bonta

Классика. А как затирали, что это всё нинужно и они уже нагибают небо и аллаха…

anonymous
()
Ответ на: комментарий от anonymous

в планковской системе единиц c=1

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.