Pull to refresh

Comments 31

Что-то вы странное посчитали.


Частота:                   Мультиклет = 2000 МГц   Intel=4500 МГц
CoreMark, тактов:          Мультиклет = 1069416    Intel=125740

Я делаю простейшую математику: Мультиклет сделал работу за 534 микросекунды (частота* количество тактов), а Intel — за 27 микросекунд.


Вывод — интел быстрее? Или "такт" — это не такт, а что-то другое?

Всё правильно, во всех бенчмарках Intel тратит меньше тактов на их выполнение — то есть да, быстрее. Вся ставка делается на то, что мультиклеточное ядро в 40 раз меньше по площади и энергопотреблению, отсюда и последние 2 строчки в бенчмарках, учитывающие это.
Там видно, что Интел быстрее в 8.5 раз. т.е. нужно 9 мультиклеток чтобы сравняться по этому паказателю. Мультиклетка S1 дает 0.72 коремарка на Мгц. Это где-то в 7-8 раз меньше чем стандартное ядро Risc-V (пример U74 SiFive). т.е. нужно 30 клеток чтобы догнать на этом тесте одно ядро U74. Видно, что архитектура Мультиклета совершенно не для задач подобных коремарку.
Площадь ядра U74 (без кэшей) 0.22 mm2 для 28 нм TSMC!!!
На MultiClet B CoreMark показатель 0.935 / МГц. Производительность всех компилируемых программ сейчас сильно отстает из-за неоптимальности компиляции, мы это знаем.
Ядро MultiClet B (и S1) задумывалось как ускоритель. Уточню: там стоят 4 клетки, в каждой полноценный блок арифметики, поэтому пиковая производительность соответствующая на задачах с хорошим параллелизмом (см. показатели по Ethereum). CoreMark брался потому, что он достаточно известный, и чтобы было хоть на чем-то сравниваться, а так же показать, что хоть это и ускоритель, но он может выполнять полностью арбитрарный код.
Тем не менее, этот Risc-V процессор действительно более интересный кандидат для сравнения. Спасибо, что показали его, мы обязательно посмотрим на него повнимательнее. Можете дать ссылку, откуда взята информация по площади ядра U74?
Я давно интересуюсь вашей архитектурой и отслеживаю все ваши достижения по рекламным статьям. U74 я выбрал как прибор реальный и доступный для покупки каждому. К тому же у него простая архитектура. Инфа о площади взята из статьи
sifive.cdn.prismic.io/sifive%2F5ec09861-351b-420c-b6e3-e2b76843044f_linley+report+-+sifive+raises+risc-v+performance.pdf
Спасибо! Посмотрим, разберемся.
Если вы рассматриваете свое изделие как ускоритель, то хорошо если бы вы и сравнивали его с ускорителями. :)
Задам вопрос первым из недомайнеров…
Плата-ускоритель с 16 MultiClet S1 если она выдает 62 MHash/s при 50W — то где купить? есть ли готовый майнер eth по эту плату?… я первый буду :-)… сайт мультиклета прям столь аскетичен :-) что информации вообще нет, и почему в разделе цены все «по запросу» — неужели это прямо таки гос-ная военная тайна, можно же было не в качестве оферты выложить хотя бы приблизительные цены?… хотя на самом деле меня больше интересует эта разработка в качестве дополнительных вычислителей для использования ее для обучения нейронных сетей на основе временных рядов
Проект Multiclet S1 находится в стадии разработки, следите за новостями :)
То, что на сайте «по запросу» — там много нюансов маркетинга и логистики, которые в прайсе не отразить или пришлось бы постоянно менять цену.
в чём проблема «постоянно менять цены»? меняйте, сделайте их в евро… вариантов тьма
Очень радует ваш прогресс, хотя он более бледен в готовых изделиях, но в плане софта вы вышли на стабильный уровень (премируйте разработчиков :-) ).
По тестам: размерности вообще не понятны, думаю что многие просто пролистнули полстатьи не вдаваясь в непонятые цифры. По тактам всё понятно, и почему их больше тоже. Вторым пунктом должна идти производительность (судя по тому, что там нет запятой, то это размерность в секунду, а не время выполнения фиксированного теста в секундах), но как вы её из тактов вычислили? Ведь если больше тактов — хуже, то в секунду больше тактов, это — обратная величина, при этом, поскольку, время не фиксировано и чем меньше времени — тем лучше (что одновременно увеличивает тактов в секунду), то получается, что такты в секунду, это может быть как лучше, так и — хуже, в зависимости от ситуации.
И из этого, «непонятно чего», вы берёте на Ватт и на площадь… это какой-то сюр.
По поводу железа: поздравляю, раньше у вас вроде как не было кеша, а теперь есть подвижки в этом направлении, главное не усложнайтесь сильно.
И самое главное: по поводу вашей архитектуры, был очень серьёзный вопрос на масштабирование, где подвергались сомнению основы, на тему того, что не сможет большое количество клеток работать через ваш условный «регистровый файл», то есть все заявления о переходе с 4 на 256 клеток с линейным масштабом, это всего лишь мечты. Судя по тому, что вы делаете ядра по 4 клетки, а не 256 клеток и механизмы автопереаспределения (клетки как раз позволяют динамически менять их количество на задачу прямо во время вычисления), то архитектура как раз показала свою слабость и чуда — не случилось.

P. S. За тест эфира, отдельное спасибо, по прежнему выглядит многобещающие, но неустойчивая ситуация на крипторынке просто кричит, что время как песок сквозь польцы утекает. Вы же понимаете, что готовое изделие по эфиру в нужный момент, эта ваша серебрянная пуля, а обещали ещё в прошлом году готовые изделия и время всё ещё подходящее…
вот полностью с этим согласен — если сейчас выпустить майнер и продавать — вы получите деньги на развитие своих проектов… считаю отсутствие майнеров на вашей архитектуре катастрофическим просчетом управленцев и их надо однозначно менять… как то так
Должен напомнить, что Мультиклет — частная компания, и никакой поддержки со стороны бюджета нет.
Выпуск процессора требует огромных финансовых затрат, и средств попросту пока не хватает.
так и тем более — выпустите майнер — получите бабки… получается откровенно бездарное руководство по факту

Если цифры реальные, а не нарисованные, то производство легко финансируется предзаказами, см. ASIC-и всякие. Либо майнингом =)

Бенчмарк затрачивает определенное число тактов на выполнение. Вне зависимости от частоты процессора это количество тактов не меняется. Но чем выше частота процессора, тем быстрее это количество тактов выполняется. Частота 2 ГГц = 2 млрд тактов в секунду. Делим количество тактов в секунду на количество тактов, затрачиваемых на бенчмарк — получаем количество бенчмарков в секунду. На Ватты делили, чтобы показать, примерно, сколько бенчмарков можно сделать на единицу энергопотребления.

По поводу количества клеток, здесь 2 основных причины, почему именно 4 клетки на ядро.
Первое: с увеличением количества клеток увеличивается количество команд, которые выбираются одновременно. Так как при ветвлении кода невозможно продолжать выборку до вычисления следующего адреса, то рано или поздно выборка просто встанет, и все клетки, которым не хватило инструкций будут простаивать. Сколько клеток можно занять — это полностью зависит от алгоритма, поэтому 4 клетки выбрались как золотая середина. К тому же, если есть сильное желание запустить алгоритм на большем количестве, реконфигурация теперь доступно на уровне ядер, т.е. например, 4 ядра могут исполнять один код — 16 клеток будут производить выборку. Масштабирование как раз линейное: если программа это один большой линейный участок, то и клеток на выборку можно отправить все 64.
Второе: в мультиклеточной архитектуре каждая клетка связана с каждой для обмена данных, чтобы когда одна клетка выполнила какую-нибудь команду, другая могла незамедлительно получить её результат. Поэтому, с увеличением количества клеток увеличивается как количество этих связей (что увеличивает площадь кристалла), так и расстояния между клетками (что увеличивает задержки). В итоге, 16 ядер (64 клетки) — это, на текущий момент, разумный предел.
Такие вопросы:
какие варианты уже существуют (готовые к заказу) и на какой норме?
можно посмотреть на реализацию компилятора? Каждый раз, как читаю про мультиклет, мне вспоминается добрая играя TIS-100, и я не понимаю, как Вы заставили llvm генерировать код под такую своеобразную архитектуру.
LLVM заставили генерировать такой код с трудом. Да, там создание бэкенда рассчитано на регистровые машины, поэтому «из коробки» для нас почти ничего не работало, разве что матчинг инструкций.
Начало реализации подробнее написано в этой статье: Компилятор С/С++ на базе LLVM для мультиклеточных процессоров: быть или не быть?
Развитие здесь: Развитие компилятора C для нового мультиклета-нейропроцессора
Bottleneck алгоритма EthHash — в скорости обмена с памятью. Разница в хэшрейте моделей карт Nvidia определяется в основном этим параметром. Но в приведенных бенчмарках нет ничего про память. Поясните, пожалуйста, как проведены расчеты хэшрейта.

Также думаю, что сравнивать лучше с технологически актуальными процессорами Nvidia. Например, A100 с памятью HBM2 — 170 MH/s при потреблении 250 ватт.
В нашей статье про MultiClet S1 подробно написано про алгоритм откуда берутся эти цифры, посмотрите в конце: Перспектива: MultiClet S1
Для текущей статьи был сделан пересчет хэшрейта для частоты процессора и памяти 2 ГГц.

Спасибо, все очень подробно и понятно описано.

Такой вопрос: а как реализована поддержка многозадачности в процессоре?
Каждое ядро может исполнять совершенно разный код. Сколько ядер в процессоре, столько и задач можно решать одновременно.

Я правильно понимаю, что это один из подходов реализации Dataflow architecture?

Неправильно.

У Dataflow команда выполняется когда она получает оба аргумента от команд-источников. В мультиклеточной архитектуре данные никто не рассылает по командам-потребителям, а каждая команда самостоятельно мониторит поток генерируемых данных и выбирает те данные, которые ей необходимы для выполнения команды.

Ну по сути отличия в PUSH/PULL подходе.

Видимо написал непонятно. Попробую на примере из жизни.

Data flow — это плановая экономика. Команда, то бишь предприятие, выдает результат (продукцию). Есть Госплан (программист), который говорит команде (предприятию) кому отослать продукцию (результат). Команда выполняется, когда ей пришлют все необходимые результаты.

Мультиклет — это рыночная экономика. Команда, то бишь предприятие, выдает результат (продукцию) и выбрасывает ее на рынок (общую коммутационную среду). Кто воспользуется ее продукцией — она не знает. Все команды, которые активированы мониторят рынок. Когда на рынке появляется все необходимые команде результаты, она их выбирает и выполняется. Свой результат она, естественно, тоже выбрасывает на рынок.

Вот и все отличия. Плановая экономика, как известно, отличается от рыночной принципиально.

Пока не до конца ясно, за что вы топите. Зайдём с другой стороны.

Вот граф расчёта корней квадратных уравнений:

Из статьи: // Dataflow-архитектуры. Часть 1 https://habr.com/ru/articles/122479

Вот другой граф:

Из статьи: Мультиклеточный процессор — это что? https://habr.com/ru/articles/226773/

Идеологически очень похоже. Но как я вас понял и смешал это со знаниями из статей получается следующее:

  • В Dataflow архитектуре проверяется наличие данных на входе или на выходе из других операций. Для этого к значению в памяти прикрепляется тег назначения. При проставлении каждого нового тега исполнительное устройство проверяет можно ли запустить ещё какие-либо операции на выполнение. Выполнение операций генерирует другие тегированные значения.

  • В мультиклет архитектуре компилятор расставляет операции по ярусам, в ярусе всё можно гарантированно выполнять одновременно. Аргументы для операции находятся тоже в тегированной памяти, похожей как и в Dataflow.

    Выполнение операций тоже генерирует другие тегированые значения. Когда все операции в ярусе выполнены, исполнительное устройство переходит к следующему ярусу.

Вот и получается, что они очень похоже, только в Dataflow значения проталкиваются в операции исполнительным устройством, а в мультиклет данные вытягиваются для операций.

В мультиклет архитектуре компилятор расставляет операции по ярусам, в ярусе всё можно гарантированно выполнять одновременно. Аргументы для операции находятся тоже в тегированной памяти, похожей как и в Dataflow.

Выполнение операций тоже генерирует другие тегированые значения. Когда все операции в ярусе выполнены, исполнительное устройство переходит к следующему ярусу.

Это описание синпьютера — предка мультиклета. Data flow = мультиклету только в одном моменте. Команду они выполняют по готовности операндов. Но, суперскаляр с ООО тоже выполняет команды по готовности. Т.е. это параметр не для сравнения. Отличаются все они способом доставки операндов между командами, т.е. организацией вычислительного процесса. Это наиболее отчетливо видно, если посмотреть на ассемблерный код одного и того же алгоритма для всех трех архитектур.Типовая команда в мультиклете (сложение двух чисел):

А:=+ В,С   — здесь А,В,С  не адреса памяти, не номера РОН, а теги результатов.

Есть какой-то ресурс на подобии godbolt для мультиклета и dataflow?

Sign up to leave a comment.

Articles