Регистры это не абстрактные переменные, а физические операнды устройств. В данном случае разговор идет про бранч-юнит и его специальные управляющие регистры, через которые он переключает бранчи, передает управление в вызываемые или возвращаемые процедуры.
В эльбрусе 4 параллельных пайплайна В одном исполняется наш основной код, а регистры %ctpr1-3 содержат косвенный адрес трех дополнительных. Поэтому когда ты запускаешь return%ctpr3 ты приказываешь бранч-юниту "готовить" возврат в пайплайн на который указывает регистр переданный в виде аргумента. То есть инструкции возвращаемой процедуры будут параллельно загружаться и проходить через первые стадии пока у нас что-то считается в основном пайплайне. На стадии запуска непосредственно команд, подготавливаемый возврат разумеется встанет и будет ждать пока основной конвеер не прикажет передать на него управление командой ct%ctpr3
Значит наверное так и есть, компилятор видит что данные можно пустить в обход кэша и даже не пытается подгружать что-то из массива заранее. А то просадки как-то с кэшами вообще не бъются
сбоку прикручивают SIMD-расширения, чтобы предсказуемо дробить числа - и где разница?
Здесь разницы нет, вы правы. Тот же самый ручной параллелизм на уровне операций как он есть. Тем не менее своеобразное преимущество широкой команды в том что в нее можно внедрять что угодно и реализовывать в процессоре какие то интересные механизмы управляемые программно. В обычном потоке команд как у ARM ничего особо не сделать, можно только изобретать специальные команды раздувая ISA но и как бы все. Показательна история с предикатами в armv7 - каждая команда работающая с ними занимает целую в потоке и руинит вообще смысл этих предикатов, в итоге в aarch64 просто сделали условные команды с внутренними флагами как в интеле.
Не надо смешивать понятия "архитектура", "VLIW" и "процессор". Как "процессоры" эльбрусы именно что общезадачные и по компоновке и наполнению похожи на процессоры интел поколения Санди бридж. Архитектура ядер в процессорах эльбрус, да, vliw-like но не такая простая как в dsp, а с навешенными на нее динамическими хреновинами типа как в итаниуме. Но самое главное отличие в подсистеме памяти - в процессоре общего назначения кэши и MMU, тогда как у DSP просто набортная память без контроллеров и интерфейсов, поэтому так вот просто сравнить кто быстрей будет некорректно.
почему после return есть еще вычитание и сложение?
потому что return, после его исполнения, происходит в %ctpr3, тогда как текущий код исполняется в %ctpr0. То есть на эльбрусе в дополнении к основному конвееру дается три дополнительных %ctpr1-3 в которые можно загружать бранчи, вызовы функций, итд что бы на них быстро переключиться. Короче выход запускается асинхронно как корутина, а командой ct%ctpr3 совершается непосредственный await и переход.
До сих пор это был единственный способ вызова и возврата из процедур, в новой системе команд все таки добавили классический icallfn_name iret Из за того что в коде довольно част о происходят подобные ситуации, и асинхронная система становится избыточна: { disp fn_name, %ctpr1 } { call%ctpr1 } { return%ctpr3 } { ct%ctpr3 } мало того что просирает такты, еще и забивает кэш инструкций
Первая качественная статья по эльбрусу. Начинается с самой базовой базы - с подкачки данных в цикле, а потом уже поднимает вопрос об уплотнении комманд. Причем очень наглядно видно что векторизация позволяет выжимать максимум, но код при этом будет уродливый и архитектурно зависимый. В большинстве случаев подкачка массива и легкая раскрутка из первой половины статьи дают хороший результат и углубляться в симды на vliw-е необязательно.
По поводу кэшей, везде на лекциях по эльбрусу рассказывали что APB может прокачивать данные минуя кэш, можно ли этим как то управлять нигде не уточняется. Думаю если перед входом в цикл не делать предварительных загрузок элементов массива на регистры (через обычный лоад), а просто взвеcти APB подождать и прыгнуть в цикл, то произойдет та самая подкачка данных минуя кэш.
По поводу написание на ассемблере, аллокацию регистров вы врядли вывезете, лучше все таки писать на ассемблернизированном Си используя беззнаковые типы для переменных и заменив сишные операции на вызов макросов вставляющих ассемблерные операции. Компилятору выставить только -O1 чтоб он ничем кроме аллокации регистров и упаковки ШК не заморачивался. Сама МЦСТ похоже применяет именно такой способ написания на ассемблере (если судить по заголовочным файлам типа e2kintrin.h)
Двухъядерные эльбрусы судя по всему продолжают негласно поставлять, тогда как серверные похоже запрещены к поставке на любой архитектуре. Даже китайцы посикивают, и тот самый лунгсон с шильдиком, который недавно презентовали, оказался чисто десктопным процессором.
Риск5 это просто система команд, которая освобождена от роялтей. И Всё. Это не волшебное заклинание, произнеся которое прилетит фея с vhdl высокопроизводительного ядра в руках. А даже если бы и прилетала от одного ядра толку мало, без обвязки контроллеров это бумажный тигр.
У продавцов электроники на складах полно старых интелов и AMD, под которых просто уже не найти материнских плат, той же МЦСТ стоило бы лучше выделить финансирование на то что бы адаптировать свои контроллеры, материнские платы и ПО под них. Это было бы более полезно чем очередной процессор о котором никто не просил.
С ним то же самое что с полковником МВД который закупил 10k терминалов "Таволга" для МВД.
Насколько я помню был проведен тендер, требованиям которого ни байкал-Т1 ни эльбрус 1С+ не соответствовали, гаишникам нужен был дотнет и java так как на них написано ПО с экзаменом ПДД. Эльбрус отлетел сразу, а байкал по известным неизвестным причинам тендер выйграл. А когда им предъявили что компы требованиям не соответствуют, байкал электроникс (тогда им руководил еще не Евдокимов, а какой то неприятный дед похожий на Чемезова) включал дурака и заявлял что можно же в гнездо SO-DIMM и 8гб модули вставить, а в PCIe слот какую нибудь видеокарту, и значит они всем требованиям соответствуют. А то что у них там 32битный mips (купленый кстати за деньги РОСНАНО) который больше адресовать не может, нет никаких дров на pcie и дискретные видеокарты не поддерживаются это остапа бендера не волнует, лишь бы впарить и умыть руки.
Чукча писатель, а не писатель? В статье речь про планы на разработку своего чипа, а не про развертывание LTE/5G на процессорах Qualcomm как "во всем мире".
позволяет компилировать ядро Linux в промежуточный код WebAssembly для последующего прямого выполнения в веб‑браузере без задействования эмуляторов.
все таки wasm это что-то типа байткода виртуальной машины, и исполняется оно в js-рантайме ( как джава опять таки). Браузер это все таки нативное приложение которое старается безопасно увязать свой контекст где все нативные библиотеки и апи вызовы живут с js-контекстами. А многим раньше еще и пытались примотать сюда на скотч флеш, джава и другие сторонние плагины. А потом появился emscripten который показал что нужно не чужой рантайм пытаться встраивать, а конкретное приложение. Так и пришли к wasm.
Плагины правда все равно остались но уже чисто как модули для внутрибраузерного контекста. Вот если бы линукс был собран в плагин, тогда можно было бы сказать что он напрямую в браузере (зачем это уже другой вопрос).
Глядя на это можно спросить то же самое - какие могут быть перспективы на десктопе у этих блобоколясок на risc-v когда на рынке есть нормальные селероны с amd-apu?
Я еще мог понять когда были аргументы за свободное железо, но тут тот же самый огороженый одноплатник просто вместо aarch64 теперь riscv64
А, так это нейросеть писала, тогда понятно. Ютуб загажен этими нейромусором с новостями из параллельной вселенной, теперь еще и статьи на швабре и дзене. Интернет умер.
Первая массово применённая в коммерческих вычислительных системах суперскалярная архитектура (возможность выполнения до 23 операций за такт).
Суперскалярные эльбрус-1/2 делали 2 (две) операции за такт. Ко всему остальному в статье лучше тоже следует относится настороженно, автор явно не понимает о чем пишет.
Регистры это не абстрактные переменные, а физические операнды устройств. В данном случае разговор идет про бранч-юнит и его специальные управляющие регистры, через которые он переключает бранчи, передает управление в вызываемые или возвращаемые процедуры.
В эльбрусе 4 параллельных пайплайна
В одном исполняется наш основной код, а регистры
%ctpr1-3содержат косвенный адрес трех дополнительных. Поэтому когда ты запускаешьreturn%ctpr3ты приказываешь бранч-юниту "готовить" возврат в пайплайн на который указывает регистр переданный в виде аргумента. То есть инструкции возвращаемой процедуры будут параллельно загружаться и проходить через первые стадии пока у нас что-то считается в основном пайплайне. На стадии запуска непосредственно команд, подготавливаемый возврат разумеется встанет и будет ждать пока основной конвеер не прикажет передать на него управление командойct%ctpr3Как то так.
Роса это бывшая Russian Mandriva
Астра это сворованные патчи и DE из МСВС прикрученные к дебиану.
Значит наверное так и есть, компилятор видит что данные можно пустить в обход кэша и даже не пытается подгружать что-то из массива заранее. А то просадки как-то с кэшами вообще не бъются
Здесь разницы нет, вы правы. Тот же самый ручной параллелизм на уровне операций как он есть.
Тем не менее своеобразное преимущество широкой команды в том что в нее можно внедрять что угодно и реализовывать в процессоре какие то интересные механизмы управляемые программно. В обычном потоке команд как у ARM ничего особо не сделать, можно только изобретать специальные команды раздувая ISA но и как бы все. Показательна история с предикатами в armv7 - каждая команда работающая с ними занимает целую в потоке и руинит вообще смысл этих предикатов, в итоге в aarch64 просто сделали условные команды с внутренними флагами как в интеле.
Не надо смешивать понятия "архитектура", "VLIW" и "процессор".
Как "процессоры" эльбрусы именно что общезадачные и по компоновке и наполнению похожи на процессоры интел поколения Санди бридж.
Архитектура ядер в процессорах эльбрус, да, vliw-like но не такая простая как в dsp, а с навешенными на нее динамическими хреновинами типа как в итаниуме. Но самое главное отличие в подсистеме памяти - в процессоре общего назначения кэши и MMU, тогда как у DSP просто набортная память без контроллеров и интерфейсов, поэтому так вот просто сравнить кто быстрей будет некорректно.
потому что return, после его исполнения, происходит в %ctpr3, тогда как текущий код исполняется в %ctpr0. То есть на эльбрусе в дополнении к основному конвееру дается три дополнительных %ctpr1-3 в которые можно загружать бранчи, вызовы функций, итд что бы на них быстро переключиться. Короче выход запускается асинхронно как корутина, а командой ct %ctpr3 совершается непосредственный await и переход.
До сих пор это был единственный способ вызова и возврата из процедур, в новой системе команд все таки добавили классический
icallfn_nameiretИз за того что в коде довольно част о происходят подобные ситуации, и асинхронная система становится избыточна:
{dispfn_name,%ctpr1 }{
call%ctpr1 }{
return%ctpr3 }{
ct%ctpr3 }мало того что просирает такты, еще и забивает кэш инструкций
Первая качественная статья по эльбрусу. Начинается с самой базовой базы - с подкачки данных в цикле, а потом уже поднимает вопрос об уплотнении комманд. Причем очень наглядно видно что векторизация позволяет выжимать максимум, но код при этом будет уродливый и архитектурно зависимый. В большинстве случаев подкачка массива и легкая раскрутка из первой половины статьи дают хороший результат и углубляться в симды на vliw-е необязательно.
По поводу кэшей, везде на лекциях по эльбрусу рассказывали что APB может прокачивать данные минуя кэш, можно ли этим как то управлять нигде не уточняется. Думаю если перед входом в цикл не делать предварительных загрузок элементов массива на регистры (через обычный лоад), а просто взвеcти APB подождать и прыгнуть в цикл, то произойдет та самая подкачка данных минуя кэш.
По поводу написание на ассемблере, аллокацию регистров вы врядли вывезете, лучше все таки писать на ассемблернизированном Си используя беззнаковые типы для переменных и заменив сишные операции на вызов макросов вставляющих ассемблерные операции. Компилятору выставить только -O1 чтоб он ничем кроме аллокации регистров и упаковки ШК не заморачивался.
Сама МЦСТ похоже применяет именно такой способ написания на ассемблере (если судить по заголовочным файлам типа e2kintrin.h)
А в каком году купили? До покупки аэродиска аквариусом или после?
Двухъядерные эльбрусы судя по всему продолжают негласно поставлять, тогда как серверные похоже запрещены к поставке на любой архитектуре. Даже китайцы посикивают, и тот самый лунгсон с шильдиком, который недавно презентовали, оказался чисто десктопным процессором.
Риск5 это просто система команд, которая освобождена от роялтей.
И Всё. Это не волшебное заклинание, произнеся которое прилетит фея с vhdl высокопроизводительного ядра в руках. А даже если бы и прилетала от одного ядра толку мало, без обвязки контроллеров это бумажный тигр.
У продавцов электроники на складах полно старых интелов и AMD, под которых просто уже не найти материнских плат, той же МЦСТ стоило бы лучше выделить финансирование на то что бы адаптировать свои контроллеры, материнские платы и ПО под них. Это было бы более полезно чем очередной процессор о котором никто не просил.
Да там даже сайт похоже китайцы делали:
С ним то же самое что с полковником МВД который закупил 10k терминалов "Таволга" для МВД.
Насколько я помню был проведен тендер, требованиям которого ни байкал-Т1 ни эльбрус 1С+ не соответствовали, гаишникам нужен был дотнет и java так как на них написано ПО с экзаменом ПДД. Эльбрус отлетел сразу, а байкал по известным неизвестным причинам тендер выйграл. А когда им предъявили что компы требованиям не соответствуют, байкал электроникс (тогда им руководил еще не Евдокимов, а какой то неприятный дед похожий на Чемезова) включал дурака и заявлял что можно же в гнездо SO-DIMM и 8гб модули вставить, а в PCIe слот какую нибудь видеокарту, и значит они всем требованиям соответствуют. А то что у них там 32битный mips (купленый кстати за деньги РОСНАНО) который больше адресовать не может, нет никаких дров на pcie и дискретные видеокарты не поддерживаются это остапа бендера не волнует, лишь бы впарить и умыть руки.
Чукча писатель, а не писатель? В статье речь про планы на разработку своего чипа, а не про развертывание LTE/5G на процессорах Qualcomm как "во всем мире".
все таки wasm это что-то типа байткода виртуальной машины, и исполняется оно в js-рантайме ( как джава опять таки). Браузер это все таки нативное приложение которое старается безопасно увязать свой контекст где все нативные библиотеки и апи вызовы живут с js-контекстами. А многим раньше еще и пытались примотать сюда на скотч флеш, джава и другие сторонние плагины. А потом появился emscripten который показал что нужно не чужой рантайм пытаться встраивать, а конкретное приложение. Так и пришли к wasm.
Плагины правда все равно остались но уже чисто как модули для внутрибраузерного контекста. Вот если бы линукс был собран в плагин, тогда можно было бы сказать что он напрямую в браузере (зачем это уже другой вопрос).
Глядя на это можно спросить то же самое - какие могут быть перспективы на десктопе у этих блобоколясок на risc-v когда на рынке есть нормальные селероны с amd-apu?
Я еще мог понять когда были аргументы за свободное железо, но тут тот же самый огороженый одноплатник просто вместо aarch64 теперь riscv64
Мог бы вот этими двумя ограничиться. Пистон то с луа зачем?
А, так это нейросеть писала, тогда понятно.
Ютуб загажен этими нейромусором с новостями из параллельной вселенной, теперь еще и статьи на швабре и дзене. Интернет умер.
Суперскалярные эльбрус-1/2 делали 2 (две) операции за такт.
Ко всему остальному в статье лучше тоже следует относится настороженно, автор явно не понимает о чем пишет.
Два руководителя из мцст в двух прошлогодних видео сказали что "да, возможно" (про 25й год и Э32)
Я с
-O1что-то не наблюдаю такого: