[Высокая производительность, Компиляторы, Процессоры, Криптовалюты, Суперкомпьютеры] Мультиклеточная архитектура: тесты и развитие

Автор Сообщение
news_bot ®

Стаж: 6 лет 2 месяца
Сообщений: 27286

Создавать темы news_bot ® написал(а)
02-Апр-2021 20:30


В этой статье мы поговорим о развитии архитектуры и аппаратной части, покажем проведенные тесты и оценим результаты и перспективы дальнейшей разработки. Если вы впервые слышите о мультиклеточной архитектуре, то можете ознакомиться с ней в предыдущих статьях:
Первое, что необходимо сказать, – Мультиклет концептуально переходит от разработки отдельных процессоров к разработке мультиклеточной платформы на основе MultiClet B – базового элемента, состоящего из 4 клеток.   Мультиклеточная платформа – это набор процессорных компонент, обеспечивающих создание высокоэффективной вычислительной среды современных мультиклеточных процессоров, ориентированных на использование в различных предметных областях. 
 В мультиклеточную платформу входят два типа ядер, два типа блоков матричной арифметики и два типа блоков доступа к памяти.Процессоры могут отличаться количеством ядер, системой команд, разрядностью данных, методами доступа к памяти. Конфигурация процессора может быть гомогенной, если процессор состоит из однотипных ядер. Гетерогенной, если в составе процессора присутствуют ядра различных типов. Частным случаем гомогенной конфигурации является матричная организация, когда 1, 4 или 16 ядер объединены блоком матричных операций.Ядро в мультиклеточном процессоре — это четыре клетки объединенные в единый неделимый блок - мультиклетку. Ядра отличаются разрядностью данных. «Младшее» ядро использует малоразрядные данные 8i, 16if, 32if, где цифры указывают на разрядность используемых данных, а индексы i, f на их тип (i — целочисленные, f — с плавающей точкой). «Старшее» – данные 16if, 32if, 64if. Каждый тип ядра имеет два варианта реализации внутренней архитектуры:
  • Первый предназначен для создания процессоров с низким энергопотреблением и имеет внутренние конвейеры с минимальным количеством ступеней.
  • Второй – для процессоров с высокой производительностью, что требует увеличения глубины конвейеров.
Количество мультиклеток и их тип для создания готового процессора выбирается по необходимости, в зависимости от поставленной задачи. Это позволяет создать широкую вариабельность процессоров, сформированных на этой платформе.Блоки матричной арифметики также отличаются разрядностью, а именно блок, использующий 16-ти битовые данные с плавающей точкой и блок с данными 32f/64f. Каждый из блоков обеспечивает выполнение операции умножения матрицы.  Допустимы три варианта размерности матрицы. При использовании одного ядра: 2х2 (64f); 2х4 (32f); 4х4 (16f). При использовании 4-х ядер: 4х4 (64f); 4х8 (32f); 8х8 (16f). Для 16-ти ядер размерности составят: 8х8 (64f); 8х16 (32f); 16х16 (16f).Блоки доступа к памяти также имеют два типа, которые отличаются организацией кэша. Первый (DMC) использует алгоритм прямого отображения на память, который обеспечивает максимальную производительность. В этом случае адрес нового элемента используется для вычисления местонахождения в кэше (в отведенной для этого области). Все, что было ранее, — вытесняется.Максимальную эффективность метод DMC демонстрирует при решениии расчетных задач, которые отличаются сранительно небольшими объемами программ, но при этом выпоняют большой объем вычислений.  Второй тип использует алгоритм LRU, при котором в первую очередь, вытесняется блок данных неиспользованный дольше всех. Этот алгоритм требует отслеживания того, что и когда использовалось. Общая реализация этого метода требует сохранения «бита возраста» для строк кэша и за счет этого происходит отслеживание наименее использованных строк (то есть за счет сравнения таких битов. Этот алгоритм более затратный, но его использование оправдано, если данные плохо локализованы, либо выполняемая программа имеет информационно-логический характер, т.е. состоит из большого количества коротких (несколько команд) линейных участков.При создании MultiClet B была проведена множественная оптимизации ядра, что позволило увеличить тактовую частоту ядра до 2 ГГц на топонорме 28 нм и одновременно на 15-20% ускорить исполнения кода на этой частоте. Ускорение было достигнуто за счет сокращения времени прохождения команд по тракту исполнения. В частности было уменьшено время обработки команд в буфере АЛУ и обеспечена передача адреса нового параграфа клеткам по отдельному тракту.  Компилятор был обновлен до LLVM 11.0.0, что также дало ускорение скомпилированного кода.БенчмаркиВ этой статье мы будем сравнивать производительность отдельно взятых ядер двух архитектур, а не процессоров целиком. В таблицах будет приведено время выполнения одной итерации теста в тактах, что позволяет сравнивать ядра процессоров разных архитектур вне зависимости от их частоты. Так как помимо количества тактов еще очень важны затрачиваемые на выполнение ресурсы, то в таблицы еще будут включены удельные показатели по энергопотреблению и по площади кристалла, которые рассчитываются на основе реального показателя бенчмарка (число выполнений в секунду при заданной частоте).Данные в таблице, приведенной ниже, будут использоваться для расчетов удельной производительности на Ватт и на мм2 для всех бенчмарков. Характеристики ядра MultiClet B получены по результатам логического синтеза и последующего моделирования.ПроцессорMultiClet B1 ядро Intel Kaby LakeЧастота2000 МГц4500 МГцЭнергопотребление0.14 W7 WПлощадь (14 нм)0.23 мм29.5 мм2CoreMarkCoreMark – набор тестов для комплексной оценки производительности микроконтроллеров и центральных процессоров, а также их C-компиляторов. Более подробное его описание и причину использования можно посмотреть в одной из предыдущих статей.ПроцессорMultiClet B, LLVM 11.0.01 ядро Intel Kaby LakeCoreMark, тактов1 069 416125 740CoreMark / с187035788CoreMark / c / Ватт133585112CoreMark / c / мм281313767DhryStoneDhrystone – синтетический тест производительности компьютеров, разработанный в 1984 году. Он содержит разные конструкции, такие как вызовы процедур, обращение по указателю, присваивание и т. д. Со времен его разработки, оптимизации компиляторов стали гораздо более агрессивными, и компиляторы просто выбрасывают куски бенчмарка, которые не несут полезную нагрузку, например множественные присваивания. Даже при компиляции второй версии бенчмарка, призванной бороться с такими оптимизациями компилятора, некоторый код оказывается выброшенным.ПроцессорMultiClet B, LLVM 11.0.01 ядро Intel Kaby LakeDhrystone, тактов73087Dhrystone / с2 739 72651 724 137Dhrystone / c / Ватт19 569 4717 389 162Dhrystone / c / мм211 911 8525 444 646Следующие 3 программы обычно не называются бенчмарками, но их можно использовать с целью оценки скорости определенных свойств процессора.Задача о 8 ферзяхЗадача о восьми ферзях – широко известная комбинаторная задача по расстановке фигур на шахматной доске. Исходная формулировка: «Расставить на стандартной 64-клеточной шахматной доске 8 ферзей так, чтобы ни один из них не находился под боем другого».Данный тест интересен тем, что содержит в себе множество ветвлений, которые плохо поддаются предсказанию.ПроцессорMultiClet B, LLVM 11.0.01 ядро Intel Kaby Lake8 ферзей, тактов3 510 425700 3898 ферзей / с57064258 ферзей / c / Ватт40699178 ферзей / c / мм22477676Размерность следующих двух тестов определена разумным количеством времени, за которое можно выполнить моделирование, чтобы не ждать несколько суток для выполнения симуляции.Бинарные деревья, глубина 6Задача данного теста состоит в создании бинарных деревьев с использованием минимального количества выделений памяти. Листья дерева и внутренние узлы должны быть одинаковыми. Скорость данного теста во многом определена эффективностью реализации динамического выделения памяти.ПроцессорMultiClet B, LLVM 11.0.01 ядро Intel Kaby LakeБинарные деревья, тактов1 166 775247 511Бинарные деревья / с171418181Бинарные деревья / c / Ватт122432597Бинарные деревья / c / мм274521913Множество Мандельброта, размерность 32х32Данный тест просто генерирует множество Мандельброта с заданной размерностью. Тест интересен тем, что содержит множество операций с плавающей запятой двойной точности, исполняемых в цикле с заранее неизвестным количеством итераций.ПроцессорMultiClet B, LLVM 11.0.01 ядро Intel Kaby LakeМножество Мандельброта 32х32, тактов905 430301 888Множество Мандельброта / с220814906Множество Мандельброта / c / Ватт157772129Множество Мандельброта / c / мм296031569Все показанные бенчмарки были скомпилированы компилятором LLVM из исходного кода на С. Компилятор для мультиклеточной архитектуры пока генерирует не самый оптимальный код, что видно по количеству тактов, затрачиваемых на выполнение бенчмарков. Не вдаваясь в разницу между мультиклеточной системой команд и x86, количество инструкций, которые исполняет процессор от Интела для выполнения любого из этих бенчмарков в среднем в 2 и более раза ниже, чем количество инструкций, исполняемых мультиклеточным процессором. Это значит, что у компилятора есть перспектива развития, а также что производительность процессора на данных бенчмарках можно значительно ускорить только за счет оптимизации программного обеспечения.Для оценки теоретической возможности компилятора и, соответственно, процессора, была проведена ручная оптимизации ассемблерного кода, полученного после компиляции программы, генерирующей множество Мандельброта. Было сделано следующее:
  • Удалены лишние пробросы значений инструкцией load, оставшиеся после phi узлов
  • Вместо использования памяти, передача данных между параграфами сделана через коммутатор, где это возможно
  • Где это невозможно, передача данных сделана через регистры общего назначения
  • Объединены некоторые параграфы и/или перенесены некоторые инструкции из следующего параграфа в предыдущий для заполнения простоев, возникающих при переходе с одного параграфа на другой
Эти оптимизации, которые можно внедрить в компилятор и которые требуют разработки, были вручную вписаны в ассемблерный код, что позволило понять какие оптимизации компилятора будут самые эффективные, какие нужно делать в первую очередь, и какую можно ожидать производительность. В итоге, количество тактов уменьшилось с 905,430 до 412,117:ПроцессорMultiClet B, LLVM 11.0.0MultiClet B, прогноз с оптимизациями1 ядро Intel Kaby LakeМножество Мандельброта 32х32, тактов905 430412 117301 888Множество Мандельброта / с2208485214906Множество Мандельброта / c / Ватт15777346642129Множество Мандельброта / c / мм29603210991569Полученные данные показывают, что при реализации сугубо последовательных алгоритмов, мультиклеточное ядро по производительности почти эквивалентно одному ядру архитектуры Intel Kaby Lake, но при этом энергопотребление и затраты кремниевых ресурсов получаются в десятки раз меньше.EthereumEthereum мы тоже используем как бенчмарк, и он очень важен по двум причинам:
  • Алгоритм подсчета хэшей Ethash написан для мультиклеточного процессора на ассемблере как можно более оптимально, поэтому компилятор здесь не играет роли, что позволяет более точно оценить предельную вычислительную мощность процессора.
  • В отличие от других задач, для майнинга очень важно энергопотребление, чем мультиклеточная архитектура действительно отличается от существующих процессоров.
 Плата-ускоритель с 16 MultiClet S1Плата-ускоритель с 16 MultiClet S1NVIDIA 90HXNVIDIA RTX 2080 TiAMD Radeon RX 5700 XTAMD Radeon RX Vega 64Хэшрейт, MHash/s62528652.551.546TDP50 W84 W320 W180 W150 W200 WХэшрейт / TDP1.240.620.270.290.340.23Техпроцесс7 нм28 нм7 нм12 нм7 нм14 нмКак можно заметить, при сопоставимом хэшрейте энергопотребление в 2-3 раза ниже даже на техпроцессе 28 нм. При переходе на техпроцесс 7 нм энергопотребление сокращается еще сильнее.Оценка использования мультитклеточной платформы для майнинга проводилась на примере получения криптовалюты Ethereum. Моделирование проводилось для процессора MultiClet S1, состоящего из 16 мультиклеток. Данные по производительности платы получены расчетным путем. Для сравнения была выбрана старшая модель платы компании NVIDIA, которая спроектирована специально для майнинга и выпуск которой намечен на 2021год.  Данные по ее планируемой производительности взяты с сайта компании. Результаты показывают, что при близкой производительности, плата использующая процессоры MultiClet S1, по удельным показателям, эффективна более чем в 2 раза по сравнению с NVIDIA 90HX.ЗаключениеАнализ полученных результатов определил дальнейшие направления оптимизации программного и аппаратного обеспечения:
  • Во первых, на аппаратном уровне это оптимизация доступа к памяти, аналогичная той, которая реализована для команд, проходящих через буфер АЛУ.
  • Во вторых, это разработка и реализация алгоритмов оптимизации бэкенда для компилятора LLVM. При выполнении всех схем оптимизации (показанные на примере компиляции генератора множества Мандельброта) производительность мультиклеточного ядра на скомпилированном коде будет практически эквивалентно современному ядру Intel, но при этом удельные характеристики по энергопотреблению и кремниевым ресурсом в будут превосходить его в десятки раз.
Если у вас есть желание попробовать скомпилировать и запустить программы на функциональной модели, SDK есть на сайте Мультиклета.Благодарим за внимание!
===========
Источник:
habr.com
===========

Похожие новости: Теги для поиска: #_vysokaja_proizvoditelnost (Высокая производительность), #_kompiljatory (Компиляторы), #_protsessory (Процессоры), #_kriptovaljuty (Криптовалюты), #_superkompjutery (Суперкомпьютеры), #_multiklet (мультиклет), #_multiclet, #_llvm, #_kompiljatory (компиляторы), #_kriptovaljuty (криптовалюты), #_protsessory (процессоры), #_vysokaja_proizvoditelnost (
Высокая производительность
)
, #_kompiljatory (
Компиляторы
)
, #_protsessory (
Процессоры
)
, #_kriptovaljuty (
Криптовалюты
)
, #_superkompjutery (
Суперкомпьютеры
)
Профиль  ЛС 
Показать сообщения:     

Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы

Текущее время: 20-Апр 07:40
Часовой пояс: UTC + 5