Байкал т1 тесты. «Байкалы» приблизились на тестах к современным процессорам Intel. Процессоры «Эльбрус»: история

Они существуют! К нам на тест попала первая публично доступная версия оценочной платы или, как её называют сами создатели, программно-аппаратного комплекса для разработчиков BFK 3.1 с SoC отечественной разработки «Байкал-Т1» на базе архитектуры MIPS P5600 Warrior.

Первым делом стоит подчеркнуть, что BFK 3.1 - это программмно-аппаратный комплекс (но по привычке будем называть его просто платой) для разработчиков, а не основа для построения конечных продуктов. Никто в здравом уме не будет использовать её, грубо говоря, для сборки системы. Во-первых, получится неоправданно дорого. Во-вторых, затея эта довольно бессмысленна. Нет, плата нужна для разработки и отладки программного обеспечения, ну и для оценки производительности самого процессора и совместимости его с другим оборудованием. Сравнивать её с одноплатными микрокомпьютерам вроде Raspberry Pi или Cubieboard тоже некорректно, хотя формально она к ним близка.

Аналогичные инструменты разработки предлагают и другие создатели процессоров. В зависимости от типа и оснащения они могут стоить от сотни-другой до тысяч и тысяч долларов. Важно то, что это первая плата с процессором Baikal-T1, которая доступна уже не узкому кругу лиц и организаций, как было раньше, а практически всем. Да, стоит она немало - 40 тысяч рублей. Дорого, но меньшую цену с учётом относительно небольшого объёма производства компания пока предложить не может. Кроме того, покупатели после регистрации продукта получит доступ к закрытой библиотеке инженерной документации. Также они получат схемотехнический проект платы в формате Altium Designer, что существенно ускорит и упростит процесс создания собственных программно-аппаратных решений на базе плат BFK 3.1 и процессоров «Байкал-Т1».

Плата «Байкал» BFK 3.1

Собственно плата оснащена процессором с базовой обвязкой. Почти все интерфейсы процессора выведены на плату. Не хватает разве что порта 10GbE. Сама плата имеет размеры 229 × 191 мм (FlexATX). На ней присутствуют два порта SATA-3 (контроллер версии 3.1), один разъём SO-DIMM для модуля памяти DDR3-1600, два гигабитных порта Ethernet RJ-45, один разъём USB 2.0 Type A, два USB-порта Mini-B (нужны для отладки), один разъём PCI-E 3.0 x4. Есть 40-контактная гребёнка выводов GPIO (основной контроллер 32-битный).

Для питания нужен любой блок питания ATX 2.0 мощностью от 200 ватт. Это значение явно дано с запасом, даже с учётом потребления устройств PCI-E и SATA. На плате есть отдельные кнопки для включения/отключения и сброса питания. Процесс запуска системы предельно прост: устанавливаем модуль памяти, подключаем БП, соединяем ПК с верхним портом mini-USB, запускаем любимый эмулятор терминала с поддержкой COM-портов (может понадобится драйвер для самого моста). Ну и всё, жмём кнопку ON и выбираем в меню загрузчика нужный пункт.

На плате есть два модуля NOR-памяти объёмом 16 и 32 Мбайт. Первый из них загрузочный, в нём находится собственно прошивка. Тут всё стандартно: U-Boot + Linux-ядро + минимальный образ с BusyBox. Также возможна загрузка по сети с сервера NFS или TFTP. Для встраиваемых систем этого достаточно. В этом случае конечный продукт - это относительно компактная плата с уже напаянными RAM и ROM нужного объёма и заранее подготовленная и оптимизированная под конкретный спектр задач программное окружение. Для примера можно посмотреть на те же домашние роутеры.

Второй вариант работы с платой - запуск полноценной ОС. Именно им и воспользуемся для тестов. Разработчики предлагают слегка модифицированный вариант Debian 9 с ядром из SDK. Обратите внимание, что сами они не занимаются пересборкой всего софта. Используются готовые репозитории mipsel-ветки Debian, так что оптимизаций под конкретно этот процессор нет. Впрочем, есть ещё и сборки Astra Linux Special Edition для устройств «Таволга Терминал» 2BT1, в которых установлен тот же процессор «Байкал-Т1». Но их, увы, никто в открытый доступ не выкладывает. Также ожидается поддержка Alt Linux и Buildroot и есть возможность запуска OpenWRT/LEDE.

Для запуска Debian необходимо взять образы ядра, прошивки и ramdisk из SDK. В сам SDK также входят вспомогательные инструменты для кросс-компиляции, скрипты для сборки ROM-образа и подготовленная ВМ для QEMU, где можно предварительно отладить свои программы. Работу с Debian 9 на BFK 3.1 пока что нельзя назвать идеально гладкой: после установки придётся покопаться с настройками и доустановить часть ПО, но особых проблем с этим нет. Жаль только, что полноценной документации к плате пока также не существует: кое-что придётся выяснять опытным путём или спрашивать напрямую у разработчиков.

Для тестов к плате были подключены древний по нынешним меркам накопитель Kingston SSDNow V для ОС и модуль памяти DDR3L-1600 ёмкостью 4 Гбайт производства Samsung. Однако для знакомства с возможностями процессора этого хватит. Есть ещё один нюанс - из-за особенностей контроллера видна не вся память, что есть в модуле SO-DIMM. Другой важный момент касается базовой сборки тестовых программ из исходных кодов: всё это проделывалось непосредственно на BFK 3.1. Там, где это необходимо, указаны ключи компилятора.

Процесс сборки, надо сказать, не всегда безболезненный. Где-то пришлось покопаться с параметрами оптимизации, чтобы достичь лучшего результата. Что-то успешно собиралось, но при исполнении падало или вело себя некорректно. Временами вообще возникало ощущение, что разработчики о существовании отличных от x86-платформ не подозревают. И это касается не только ПО. В частности, в PCI-E, скорее всего, не заработают современные GPU, так как, по словам создателей, почти все они требуют наличия UEFI/BIOS x86. Также могут возникнуть проблемы с устройствами, у которых внутри используется, например, мост PCI ↔ PCI-E.

Характеристики процессора «Байкал-Т1»

Для начала короткая справка о самом процессоре. «Байкал-Т1» имеет два 32-битных ядра на архитектуре P5600 Warrior (MIPS32 Release 5) с аппаратной поддержкой виртуализации. Каждое ядро получило L1-кеш данных и инструкций объёмом 64 Кбайт. На оба ядра приходится один общий L2-кеш ёмкостью 1 Мбайт.

Также у каждого ядра есть свой FPU-блок c поддержкой 128-бит SIMD. Ядра, L2 и FPU работают на одной частоте: 1,2 ГГц. Процессор способен исполнять до четырёх целочисленных операций, до двух операций над числами с плавающей запятой двойной точности или четырёх одинароной точности за такт. То есть теоретическая пиковая производительность составляет 4,8 Гфлопс FP64 (2 ядра 1,2 ГГц × 2 FP64) или 9,6 Гфлопс FP32. Однако на практике для раскрытия потенциала (как любят выражаться в комментариях) необходимы и ручная оптимизация кода, и компилятор, «знающий» об особенностях FPU/SIMD.

В реальности же, к примеру, неоптимизированная версия Linpack, собранная открытым GCC, выдаёт результат на порядок меньше ожидаемого. Ситуация, вообще говоря, вполне нормальная для новых или специфичных (вроде того же «Эльбруса») архитектур. Это следует учитывать при оценке результатов, приведённых ниже. Ещё один важный момент касается нашумевших уязвимостей Meltdown и Spectre. Вычислительные блоки в MIPS32r5 суперскалярны и умеют делать внеочередное исполнение инструкций, но о глубокой спекулятивности явно не говорится. Разработчики ядра выпустили предупреждение о возможном наличии Spectre (но не Meltdown) в «чистых» ядрах P5600/P6600. По словам создателей, в случае «Байкала-Т1» официальный код проверки на наличие уязвимости не срабатывает, но со стопроцентной уверенностью говорить об её отсутствии пока рано. В планах организация отдельного хакатона для проверки безопасности процессора.

С остальными компонентами ядра общаются по шине AXI. Все высокоскоростные интерфейсы имеют поддержку DMA. Собственно одноканальный контроллер памяти поддерживает DDR3-1600 с ECC. Максимальный поддерживаемый CPU объём RAM равен 8 Гбайт. Есть ещё один нюанс - контроллер памяти имеет шину данных шириной 32 бит и 8 бит ECC и поддерживает работу с микросхемами памяти шириной от 8 до 32 бит. Для готовых изделий с уже напаянными подходящими модулями проблем нет, а вот плата у обычных SO-DIMM «увидит» только половину заявленного объёма, так как наружу они «смотрят» обычно 64-бит интерфейсом. Ну и скорость работы, очевидно, будет ниже - до 6,4 Гбайт/с.

Из интересных блоков, которые есть в CPU, можно выделить сопроцессор собственной разработки, который позволяет, например, ускорить шифрование по стандартам ГОСТ (но не только) и 10-гигабитный контроллер. Последний, как уже отмечалось выше, требует отдельный мезонина с SFP-портом. Это сделано для снижений итоговой цены BFK 3.1, да и для разработки этот порт нужен далеко не всем. Остальные блоки лицензированы у компаний MIPS, Imagination Technologies и Synopsys. На внутреннее строение чипа можно полюбоваться здесь.

Мезонин с 10 GbE SFP для BFK первого поколения. Для BFK 3.1 такой платы сейчас нет.

Для питания процессор требует напряжение 0,95 В, а заявленная потребляемая мощность составляет не более 5 Ватт. Во время тестов CPU прогревался до 60 с небольшим градусов Цельсия. Активное охлаждение для него не требуется, однако в закрытом корпусе наличие радиатора лишним не будет. Частота ядер динамически регулируется в диапазоне от 200 до 1500 МГц, но это требует поддержки со стороны ОС, так что пока в текущей сборке Debian частоту можно задать при старте системы. В любом случае во время работы при малой нагрузке одно ядро автоматически может отключаться полностью. Производится «Байкал-Т1» на фабриках TSMC по 28-нм техпроцессу. Сам по себе он стоит $65. Также важно отметить, что данная модель изначально разрабатывалась не только и не столько для госзаказчиков. Она, по задумкам и надеждам создателей, должна приглянуться и обычным коммерческим потребителям, которые создают продукты для гражданского сектора.

Тест CoreMark

Перейдём непосредственно к тестам. Первый в очереди CoreMark - специализированный бенчмарк, который используется для оценки производительности процессоров и SoC встраиваемых систем. Собственно говоря, именно с анонса нового рекорда в CoreMark Imagination Technologies и начала рассказ о преимуществах ядра MIPS P5600 Warrior. Правда, речь шла об одиночном ядре, которое к тому же на тот момент существовало только в виде симуляции на FPGA и работало на частоте 20 МГц. Тогда речь шла о рекорде в значении CoreMark на мегагерц на ядро: 5,61, но в реальности стоит рассчитывать на значение около 5. Разработчики даже указывали на бо́льшую эффективность P5600 в сравнении с десктопными CPU Intel. Формально «Байкал-Т1» является лидером в пересчёте на мегагерц и мегагерц/ядро. На практике же для достижения производительности в абсолютных величинах производители не чураются экстенсивных методов, увеличивая частоты и число ядер.

Увы, база результатов CoreMark собирается не слишком аккуратно, так что пришлось вручную подбирать тесты двуядерных чипов, которые имели бы близкие к показателям «Байкала-Т1» частоты и явное указание на то, что в тесте используются два потока. Для сравнения был добавлен один четырёхъядерный образец, и это неслучайно. Вообще, ранжировать результаты можно сразу по нескольким критериям. Однако тут же появляется масса нюансов. Во-первых, решения и ARM, и MIPS лицензируются сторонним компаниям, так что реализация одного того же дизайна может значительно отличаться. Во-вторых, многое зависит от оптимизации и самого кода, и его сборки, и среды исполнения.

Для нашего базового теста использовался GCC 6.3 со следующими опциями: -O3 -DMULTITHREAD=2 -DUSE_PTHREAD -funroll-all-loops -fgcse-sm -fgcse-las -finline-limit=1000 -mhard-float -mtune=p5600. В тестах самих разработчиков использована в том числе и коммерческая среда Sourcery CodeBench. Здесь и далее в таблицах приняты следующие обозначения: «оф. тест» для результатов, выложенных на сайте разработчиков; «precomp» - для запусков бинарных файлов бенчмарков, присланных создателями CPU; «б/опт.» - собственные сборки из исходных кодов с применением открытых средств и указанием ключей; «опт.» - кросс-компиляция силами SDK и коммерческих утилит по «рецептам» от разработчиков. При ручной оптимизации можно добиться лучших показателей, что очень хорошо заметно в таблице с результатами. Однако перед нами не стоит задача перебирать ключи и копаться в коде. А вот разработчикам софта для «Байкала-Т1» определённо придётся этим заниматься на регулярной основе.

Классические бенчмарки

Из того же документа можно взять и результаты классических бенчмарков «старой школы». Тест Stream для оценки пропускной способности памяти был собран для одного потока со следующими ключами: -mtune=p5600 -O2 -funroll-all-loops. Результат примерно вдвое меньше, чем теоретическая скорость работы RAM.

Всё вышесказанное про CoreMark относится и к Dhrystone2 (целочисленные вычисления), который в базе был собран с минимумом ключей: -O3 -funroll-all-loops -mtune=p5600. Увы, как и в примерах выше, база измерений не блещет чистотой и аккуратностью. Для сравнения были взяты некоторые результаты для 32-битных вычислений с явным указанием на наличие оптимизаций. К сожалению, для них не указаны конкретные модели или хотя бы поколения CPU. Кроме того, дело осложняется наличием TurboBoost или аналогичных техник кратковременного (а тест этот как раз непродолжительный) увеличения базовой частоты процессора, что смазывает общую картину. Опять-таки в тесте повторяется ситуация с CoreMark - в пересчёте на мегагерц производительность у P5600 неплохая.

Но другие современные CPU повышают её и наращиванием частоты, и поддержкой 64-битных инструкций, и числом ядер заодно. В Whetstone всё то же самое, только разница от увеличения потоков и задействования векторных инструкций ещё разительнее. Ах да, для сборки всего этого добра пришлось слегка подкорректировать код, убрав несущественные вызовы на x86-ассемблере и проверки на наличие x86-расширений, которые нужны только лишь для идентификации CPU.

Для быстрой проверки работы гигабитных сетевых адаптеров использовалась утилита iperf 3.1.3, которая показала, что для односторонних подключений скорость совпадает с положенными 940 Мбит/с, а вот в дуплексе, увы, скорость была на уровне 1,2 Гбит/с. Разработчики объясняют это тем, что для получения полноценной производительности необходимо сделать небольшой тюнинг на программном уровне.

Phoronix Test Suite

А вот эта затея уже попахивает безумием, так как PTS в целом не предназначен для такого рода систем. Сборка происходит непосредственно на тестируемой машине, так что в случае «Байкалом-Т1» это просто мучительно долго, как и исполнение большинства тестов. Собственно, из набора исключены тесты, которые или так и не смогли скомпилироваться, или исполнялись бы неприлично долго даже на «взрослых» ПК. С первой проблемой, по идее, можно справиться вручную, подгоняя параметры сборки. Но повторимся, что, во-первых, такой задачи не было, а во-вторых, нельзя забывать, что результаты тестов вряд ли достигают максимально возможных значений.

Все результаты тестирования доступны по этой ссылке. Строго говоря, все проведённые тесты - это скорее задел на будущее, чтобы потом можно было посмотреть, насколько лучше стали (или не стали) результаты после работы над системой сборки и/или оптимизаций, а вот прямо сейчас всё это сравнивать особо не с чем. Из любопытного можно привести только несколько случайно совпавших по конфигурации бенчмарков с китайскими процессорами Loongson Godson 3A3000 (4 ядра @ 1,5 Гц, L2-кеш 1 Мбайт, L3-кеш 8 Мбайт, 28 нм, 30 Вт). Оба CPU схожи в том, что у них новая архитектура и проблемы с оптимизацией кода для него. Пока что китайцы впереди с большим отрывом по абсолютным показателям, но в пересчёте на ядра, МГц и потребление всё чуть менее однозначно.

Заключение

Отрадно, что отечественные разработчики смогли небольшой командой и в разумные сроки воплотить в «железе» SoC на современной архитектуре с неплохими характеристиками и возможностями. К тому же она не ориентирована строго на госзаказ и не стоит заоблачных денег. Это действительно здорово, кто бы что ни говорил. Но успех (или провал) реально удастся оценить только через год-два - всё зависит от того, кто и в каких объёмах будет использовать SoC в своих продуктах. Прямо сейчас публично рассказано только некоторых из них. О терминале «Таволга» уже говорилось в самом начале, хотя он-то как раз является примером устройства для госслужб, равно как и DEPO Neos Twin. Промышленные ПК представлены моделями Fastwell CPС516 и CPC313, а также модулем SF-BT1. Близкими по духу к ним являются система ЧПУ «Ресурс-30» и модуль для работы с микромехеническими элементами оптических и лазерных систем от ЦИФ МГУ. Кроме того, анонсированы маршрутизаторы NSG-3000 и некие точки доступа РАЙТЕК, которые упомянуты на сайте производителя. Всё это типичные примеры областей применения «Байкал-Т1». Хотелось бы ещё увидеть решения NAS/SAN, IoT и SDR.

12.04.2018 , Игорь Осколков

Они существуют! К нам на тест попала первая публично доступная версия оценочной платы или, как её называют сами создатели, программно-аппаратного комплекса для разработчиков BFK 3.1 с SoC отечественной разработки «Байкал-Т1» на базе архитектуры MIPS P5600 Warrior

Первым делом стоит подчеркнуть, что BFK 3.1 — это программно-аппаратный комплекс (но по привычке будем называть его просто платой) для разработчиков, а не основа для построения конечных продуктов. Никто в здравом уме не будет использовать её, грубо говоря, для сборки системы. Во-первых, получится неоправданно дорого. Во-вторых, затея эта довольно бессмысленна. Нет, плата нужна для разработки и отладки программного обеспечения, ну и для оценки производительности самого процессора и совместимости его с другим оборудованием. Сравнивать её с одноплатными микрокомпьютерами вроде Raspberry Pi или Cubieboard тоже некорректно, хотя формально она к ним близка.

Плата BFK 3.1

Аналогичные инструменты разработки предлагают и другие создатели процессоров. В зависимости от типа и оснащения они могут стоить от сотни-другой до тысяч и тысяч долларов. Важно то, что это первая плата с процессором Baikal-T1, которая доступна уже не узкому кругу лиц и организаций, как было раньше, а практически всем. Да, стоит она немало — 40 тысяч рублей . Дорого, но меньшую цену с учётом относительно небольшого объёма производства компания пока предложить не может. Кроме того, покупатели после регистрации продукта получит доступ к закрытой библиотеке инженерной документации. Также они получат схемотехнический проект платы в формате Altium Designer, что существенно ускорит и упростит процесс создания собственных программно-аппаратных решений на базе плат BFK 3.1 и процессоров «Байкал-Т1».

Плата «Байкал» BFK 3.1

Собственно плата оснащена процессором с базовой обвязкой. Почти все интерфейсы процессора выведены на плату. Не хватает разве что порта 10GbE. Сама плата имеет размеры 229 × 191 мм (FlexATX). На ней присутствуют два порта SATA-3 (контроллер версии 3.1), один разъём SO-DIMM для модуля памяти DDR3-1600, два гигабитных порта Ethernet RJ-45, один разъём USB 2.0 Type A, два USB-порта Mini-B (нужны для отладки), один разъём PCI-E 3.0 x4. Есть 40-контактная гребёнка выводов GPIO (основной контроллер 32-битный).

Для питания нужен любой блок питания ATX 2.0 мощностью от 200 ватт. Это значение явно дано с запасом, даже с учётом потребления устройств PCI-E и SATA. На плате есть отдельные кнопки для включения/отключения и сброса питания. Процесс запуска системы предельно прост : устанавливаем модуль памяти, подключаем БП, соединяем ПК с верхним портом mini-USB, запускаем любимый эмулятор терминала с поддержкой COM-портов (может понадобиться драйвер для самого моста). Ну и всё, жмём кнопку ON и выбираем в меню загрузчика нужный пункт.

На плате есть два модуля NOR-памяти объёмом 16 и 32 Мбайт. Первый из них загрузочный, в нём находится собственно прошивка. Тут всё стандартно : U-Boot + Linux-ядро + минимальный образ с BusyBox. Также возможна загрузка по сети с сервера NFS или TFTP. Для встраиваемых систем этого достаточно. В этом случае конечный продукт — это относительно компактная плата с уже напаянными RAM и ROM нужного объёма и заранее подготовленная и оптимизированная под конкретный спектр задач программное окружение. Для примера можно посмотреть на те же домашние роутеры.


Второй вариант работы с платой — запуск полноценной ОС. Именно им и воспользуемся для тестов. Разработчики предлагают слегка модифицированный вариант Debian 9 с ядром из SDK. Обратите внимание, что сами они не занимаются пересборкой всего софта. Используются готовые репозитории mipsel-ветки Debian, так что оптимизаций под конкретно этот процессор нет. Впрочем, есть ещё и сборки Special Edition для устройств «Таволга Терминал» 2BT1 , в которых установлен тот же процессор «Байкал-Т1». Но их, увы, никто в открытый доступ не выкладывает. Также ожидается поддержка Alt Linux и Buildroot и есть возможность запуска OpenWRT/LEDE.

Для запуска Debian необходимо взять образы ядра, прошивки и ramdisk из SDK. В сам SDK также входят вспомогательные инструменты для кросс-компиляции, скрипты для сборки ROM-образа и подготовленная ВМ для QEMU, где можно предварительно отладить свои программы. Работу с Debian 9 на BFK 3.1 пока что нельзя назвать идеально гладкой: после установки придётся покопаться с настройками и доустановить часть ПО, но особых проблем с этим нет. Жаль только, что полноценной документации к плате пока также не существует: кое-что придётся выяснять опытным путём или спрашивать напрямую у разработчиков.

Для тестов к плате были подключены древний по нынешним меркам накопитель Kingston SSDNow V для ОС и модуль памяти DDR3L-1600 ёмкостью 4 Гбайт производства Samsung. Однако для знакомства с возможностями процессора этого хватит. Есть ещё один нюанс — из-за особенностей контроллера видна не вся память, что есть в модуле SO-DIMM. Другой важный момент касается базовой сборки тестовых программ из исходных кодов: всё это проделывалось непосредственно на BFK 3.1. Там, где это необходимо, указаны ключи компилятора.

Процесс сборки, надо сказать, не всегда безболезненный. Где-то пришлось покопаться с параметрами оптимизации, чтобы достичь лучшего результата. Что-то успешно собиралось, но при исполнении падало или вело себя некорректно. Временами вообще возникало ощущение, что разработчики о существовании отличных от x86-платформ не подозревают. И это касается не только ПО. В частности, в PCI-E, скорее всего, не заработают современные GPU, так как, по словам создателей, почти все они требуют наличия UEFI/BIOS x86. Также могут возникнуть проблемы с устройствами, у которых внутри используется, например, мост PCI ↔ PCI-E.

Характеристики процессора «Байкал-Т1»

Для начала короткая справка о самом процессоре. «Байкал-Т1» имеет два 32-битных ядра на архитектуре P5600 Warrior (MIPS32 Release 5) с аппаратной поддержкой виртуализации. Каждое ядро получило L1-кеш данных и инструкций объёмом 64 Кбайт. На оба ядра приходится один общий L2-кеш ёмкостью 1 Мбайт. Также у каждого ядра есть свой FPU-блок c поддержкой 128-бит SIMD. Ядра, L2 и FPU работают на одной частоте: 1,2 ГГц. Процессор способен исполнять до четырёх целочисленных операций, до двух операций над числами с плавающей запятой двойной точности или четырёх одинарной точности за такт. То есть теоретическая пиковая производительность составляет 4,8 Гфлопс FP64 (2 ядра 1,2 ГГц × 2 FP64) или 9,6 Гфлопс FP32. Однако на практике для раскрытия потенциала (как любят выражаться в комментариях) необходимы и ручная оптимизация кода, и компилятор, «знающий» об особенностях FPU/SIMD.

В реальности же, к примеру, неоптимизированная версия Linpack, собранная открытым GCC, выдаёт результат на порядок меньше ожидаемого. Ситуация, вообще говоря, вполне нормальная для новых или специфичных (вроде того же «Эльбруса») архитектур. Это следует учитывать при оценке результатов, приведённых ниже. Ещё один важный момент касается нашумевших уязвимостей Meltdown и Spectre . Вычислительные блоки в MIPS32r5 суперскалярны и умеют делать внеочередное исполнение инструкций, но о глубокой спекулятивности явно не говорится. Разработчики ядра выпустили предупреждение о возможном наличии Spectre (но не Meltdown) в «чистых» ядрах P5600/P6600. По словам создателей, в случае «Байкала-Т1» официальный код проверки на наличие уязвимости не срабатывает, но со стопроцентной уверенностью говорить о её отсутствии пока рано. В планах организация отдельного хакатона для проверки безопасности процессора.

С остальными компонентами ядра общаются по шине AXI. Все высокоскоростные интерфейсы имеют поддержку DMA. Собственно одноканальный контроллер памяти поддерживает DDR3-1600 с ECC. Максимальный поддерживаемый CPU объём RAM равен 8 Гбайт. Есть ещё один нюанс — контроллер памяти имеет шину данных шириной 32 бит и 8 бит ECC и поддерживает работу с микросхемами памяти шириной от 8 до 32 бит. Для готовых изделий с уже напаянными подходящими модулями проблем нет, а вот плата у обычных SO-DIMM «увидит» только половину заявленного объёма, так как наружу они «смотрят» обычно 64-бит интерфейсом. Ну и скорость работы, очевидно, будет ниже — до 6,4 Гбайт/с.

Из интересных блоков, которые есть в CPU, можно выделить сопроцессор собственной разработки, который позволяет, например, ускорить шифрование по стандартам ГОСТ (но не только) и 10-гигабитный контроллер. Последний, как уже отмечалось выше, требует отдельный мезонин с SFP-портом. Это сделано для снижений итоговой цены BFK 3.1, да и для разработки этот порт нужен далеко не всем. Остальные блоки лицензированы у компаний MIPS, Imagination Technologies и Synopsys. На внутреннее строение чипа можно полюбоваться .

Мезонин с 10 GbE SFP для BFK первого поколения. Для BFK 3.1 такой платы сейчас нет.

Для питания процессор требует напряжение 0,95 В, а заявленная потребляемая мощность составляет не более 5 ватт. Во время тестов CPU прогревался до 60 с небольшим градусов Цельсия. Активное охлаждение для него не требуется, однако в закрытом корпусе наличие радиатора лишним не будет. Частота ядер динамически регулируется в диапазоне от 200 до 1500 МГц, но это требует поддержки со стороны ОС, так что пока в текущей сборке Debian частоту можно задать при старте системы. В любом случае во время работы при малой нагрузке одно ядро автоматически может отключаться полностью. Производится «Байкал-Т1» на фабриках TSMC по 28-нм техпроцессу. Сам по себе он стоит $65. Также важно отметить, что данная модель изначально разрабатывалась не только и не столько для госзаказчиков. Она, по задумкам и надеждам создателей, должна приглянуться и обычным коммерческим потребителям, которые создают продукты для гражданского сектора.

Тест CoreMark

Перейдём непосредственно к тестам. Первый в очереди CoreMark — специализированный бенчмарк, который используется для оценки производительности процессоров и SoC встраиваемых систем. Собственно говоря, именно с анонса нового рекорда в CoreMark Imagination Technologies и начала рассказ о преимуществах ядра MIPS P5600 Warrior. Правда, речь шла об одиночном ядре, которое к тому же на тот момент существовало только в виде симуляции на FPGA и работало на частоте 20 МГц. Тогда речь шла о рекорде в значении CoreMark на мегагерц на ядро: 5,61, но в реальности стоит рассчитывать на значение около 5. Разработчики даже указывали на бо́льшую эффективность P5600 в сравнении с десктопными CPU Intel. Формально «Байкал-Т1» является лидером в пересчёте на мегагерц и мегагерц/ядро. На практике же для достижения производительности в абсолютных величинах производители не чураются экстенсивных методов, увеличивая частоты и число ядер.

CoreMark
Модель Архитектура Частота, МГц Ядра CoreMark CoreMark/МГц CoreMark/ядро CoreMark/МГц/ядро
ARM Cortex-A15 ARM Cortex-A15 1700 2 15908,00 9,36 7954,00 4,68
Samsung Exynos 4412 ARM Cortex-A9 1400 4 15399,42 11,00 3849,86 2,75
Baikal T-1 (3DNews, precomp) MIPS P5600 1200 2 13052,51 10,88 6526,26 5,44
Baikal T-1 (3DNews, опт.) MIPS P5600 1200 2 13039,36 10,87 6519,68 5,43
Baikal T-1 (оф. тест) MIPS P5600 1200 2 12364,00 10,30 6182,00 5,15
Intel Core 2 Duo T5500 x86-64 1660 2 12095,88 7,29 6047,94 3,64
Baikal T-1 (3DNews, б/опт.) MIPS P5600 1200 2 11988,45 9,99 5994,23 5,00
Nufront NuSmart 2816 ARM Cortex-A9 2000 2 11661,19 5,83 5830,60 2,92
AMD E350 x86-64 1600 2 10987,00 6,87 5493,50 3,43
TI Sitara AM57xx ARM Cortex-A15 1500 2 10976,40 7,32 5488,20 3,66
Intel Atom E3827 x86-64 1743 2 10820,91 6,21 5410,46 3,10
VIA Nano X2 L4350 x86-64 1600 2 9104,01 5,69 4552,01 2,85
TI OMAP4460 ARM Cortex-A9 1200 2 6357,78 5,30 3178,89 2,65
NVIDIA Tegra 2 ARM Cortex-A9 1000 2 5866,39 5,87 2933,20 2,93
Allwinner A20 ARM Cortex-A7 1000 2 2086,23 2,09 1043,12 1,04

Увы, база результатов CoreMark собирается не слишком аккуратно, так что пришлось вручную подбирать тесты двухъядерных чипов, которые имели бы близкие к показателям «Байкала-Т1» частоты и явное указание на то, что в тесте используются два потока. Для сравнения был добавлен один четырёхъядерный образец, и это неслучайно. Вообще, ранжировать результаты можно сразу по нескольким критериям. Однако тут же появляется масса нюансов. Во-первых, решения и ARM, и MIPS лицензируются сторонним компаниям, так что реализация одного и того же дизайна может значительно различаться. Во-вторых, многое зависит от оптимизации и самого кода, и его сборки, и среды исполнения.

Для нашего базового теста использовался GCC 6.3 со следующими опциями: -O3 -DMULTITHREAD=2 -DUSE_PTHREAD -funroll-all-loops -fgcse-sm -fgcse-las -finline-limit=1000 -mhard-float -mtune=p5600. В тестах самих разработчиков использована в том числе и коммерческая среда Sourcery CodeBench. Здесь и далее в таблицах приняты следующие обозначения: «оф. тест» — для результатов, выложенных на сайте разработчиков; «precomp» — для запусков бинарных файлов бенчмарков, присланных создателями CPU; «б/опт.» — собственные сборки из исходных кодов с применением открытых средств и указанием ключей; «опт.» — кросс-компиляция силами SDK и коммерческих утилит по «рецептам» от разработчиков. При ручной оптимизации можно добиться лучших показателей, что очень хорошо заметно в таблице с результатами. Однако перед нами не стоит задача перебирать ключи и копаться в коде. А вот разработчикам софта для «Байкала-Т1» определённо придётся этим заниматься на регулярной основе.

Классические бенчмарки

Из того же документа можно взять и результаты классических бенчмарков «старой школы». Тест Stream для оценки пропускной способности памяти был собран для одного потока со следующими ключами: -mtune=p5600 -O2 -funroll-all-loops. Результат примерно вдвое меньше, чем теоретическая скорость работы RAM.

Stream (1 поток), Мбайт/c
Copy Scale Add Triad
Оф. тест 3119,2 3109,9 2466,9 2467,7
3DNews, precomp 3255,8 3287,9 2481,0 2503,1
3DNews, опт. 3255,6 3290,2 2480,9 2503,1
3DNews, б/опт. 3295,9 3284,4 2509,3 2485,8

Всё вышесказанное про CoreMark относится и к Dhrystone2 (целочисленные вычисления), который в базе был собран с минимумом ключей: -O3 -funroll-all-loops -mtune=p5600. Увы, как и в примерах выше, база измерений не блещет чистотой и аккуратностью. Для сравнения были взяты некоторые результаты для 32-битных вычислений с явным указанием на наличие оптимизаций. К сожалению, для них не указаны конкретные модели или хотя бы поколения CPU. Кроме того, дело осложняется наличием TurboBoost или аналогичных техник кратковременного (а тест этот как раз непродолжительный) увеличения базовой частоты процессора, что смазывает общую картину. Опять-таки в тесте повторяется ситуация с CoreMark — в пересчёте на мегагерц производительность у P5600 неплохая.

Dhrystone 2
Модель Архитектура Частота, МГц DMIPS DMIPS/МГц
Intel Core i7 3930K (32-бит, разгон) x86-64 4730 13877,00 2,93
AMD Phenom II (32 бит) x86-64 3000 6676,00 2,23
Baikal-T1 (3DNews, precomp) MIPS P5600 1200 4433,17 3,69
Baikal-T1 (3DNews, опт.) MIPS P5600 1200 4432,27 3,69
Baikal-T1 (оф. тест) MIPS P5600 1200 4398,00 3,67
Intel Pentium 4 x86 3066 4012,00 1,31
AMD Athlon XP x86 2080 3700,00 1,78
Baikal-T1 (3DNews, б/опт.) MIPS P5600 1200 3650,40 3,04
Intel Atom x5-Z8300 (32-бит) x86-64 1840 3044,00 1,65
Broadcom BCM2837 (32-бит, Rpi 3) ARM Cortex-A53 1200 2469,00 2,06
Broadcom BCM2836 (32-бит, Rpi 2) ARM Cortex-A7 900 1667,00 1,85

Но другие современные CPU повышают её и наращиванием частоты, и поддержкой 64-битных инструкций, и числом ядер заодно. В Whetstone всё то же самое, только разница от увеличения потоков и задействования векторных инструкций ещё разительнее. Ах да, для сборки всего этого добра пришлось слегка подкорректировать код, убрав несущественные вызовы на x86-ассемблере и проверки на наличие x86-расширений, которые нужны только лишь для идентификации CPU.

Whetstone (32-бит, FP32)
Модель Архитектура Потоков Частота, МГц MWIPS MWIPS/МГц MWIPS/МГц/ядро
AMD Phenom X4 x86-64 2 3000 5141,00 1,71 0,86
Baikal-T1 (3DNews, б/опт.) MIPS P5600 2 1200 1025,00 0,85 0,43
Baikal-T1 (оф. тест) MIPS P5600 2 1200 1213,00 1,01 0,51
Baikal-T1 (3DNews, precomp) MIPS P5600 2 1200 1226,00 1,02 0,51
Baikal-T1 (3DNews, опт.) MIPS P5600 2 1200 1227,00 1,02 0,51
Intel Atom x86-64 2 1600 1182,00 0,74 0,37
Intel Core 2 Duo x86-64 2 2400 4270,00 1,78 0,89
Intel Core i7-4820K x86-64 2 3900 7312,00 1,87 0,94

Для быстрой проверки работы гигабитных сетевых адаптеров использовалась утилита iperf 3.1.3, которая показала, что для односторонних подключений скорость совпадает с положенными 940 Мбит/с, а вот в дуплексе, увы, скорость была на уровне 1,2 Гбит/с. Разработчики объясняют это тем, что для получения полноценной производительности необходимо сделать небольшой тюнинг на программном уровне.

Думаю многие уже слышали про реализованный московскими разработчиками Байкал Электроникс процессор Байкал-Т1 - с двумя ядрами Imagination Technologies P5600 MIPS 32 r5 и набортным 10GbE. Байкал оказался первым, кто реализовал в кремнии это ядро.

Внимание, картинки кликабельны - но местами довольно тяжелы (до 100Мб).

Сами процессоры (всего их пришлось вскрыть 4 штуки):

BGA-подложка и теплораспределяющая/защитная крышка - как и у других современных процессоров (Intel и ко), чип перевернут контактами вниз (flip-chip BGA):

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

В левой части - Ethernet контроллер (вероятно 10GbE KR/KX4), на кадре видна половина:

После снятия металлизации - видим автосинтезированную из стандартных ячеек логику (Мультиклет например аналогичными «волнами» синтезировался на 180нм), кучу сгенерированных инстансов памяти/регистровых файлов (их обычно поставляет фабрика), и по всей площади раскиданные идентичные блоки мониторинга (предположительно, мелкие бело-синие вертикальные прямоугольнички). Заметная часть чипа (около 25%) транзисторами не занята, и там просто заполнение пустыми ячейками.

Посмотрим чуть ближе:
Предположительно, блок мониторинга (температура/скорость генерации инверторной цепочки например). Вокруг - поле пустых ячеек:

Ряды стандартных ячеек в максимальном оптическом разрешении. Тут 1 пиксель = 28.5нм, 28 микрометров (0.03мм) на ширину кадра, но оптическое разрешение ограничено дифракцией на уровне порядка 200нм (потому кадр кажется и является нечетким). Видно, что в первом приближении тут подход тот же, что и на 180нм - те же ряды транзисторов «спина-к-спине» - … транзисторы (т.е. соседние ряды стандартных ячеек зеркально отражаются). Линия с P транзисторами чуть шире:

Один из мелких сгенерированных блоков памяти - собственно массив SRAM ячеек занимает небольшую часть блока (остальное - драйверы строк/колонок и усилители сигнала, логика внешнего интерфейса). Вокруг детальнее видно поле «пустых» ячеек (совсем ничего там рисовать нельзя - чип получится неравномерным по высоте, что недопустимо):

Напоследок - фотография Байкала в иммерсионном масле, сразу после последних кадров:

На мой взгляд Baikal-T1 - большой шаг вперед для отечественной гражданской микроэлектроники. Это современное ядро, разработанное и произведенное по современным массовым гражданским технологиям, которое решает поставленные задачи стандартными средствами - общепринятый в мировой индустрии маршрут разработки, всем понятный и открытый компилятор, всем понятная и открытая ОС. Изобретение своих велосипедов там, где без них можно обойтись - это настоящий бич отечественных разработок, и тут этого удалось избежать.

На этом пока все - надеюсь в обозримом будущем чаще выходить с публикациями. Если работы такого рода вам нравятся - теперь вы можете поддержать их на

«Байкал электроникс» протестировала процессоры Baikal-T1 для определения показателей быстродействия. Cnews сравнила показатели российского чипа с процессорами Intel и AMD. Оказалось, что характеристики Baikal-T1 находятся на уровне зарубежных чипов, выпущенных 5-10 лет назад.

Baikal-T1 частотой 1,2 ГГц построен на основе MIPS-архитектуры по 28-нм техпроцессу. Он включает контроллер памяти DDR3-1600 и кэш второго уровня объемом 1 Мб, поддерживает один порт 10Gb Ethernet, по два порта 1Gb Ethernet и SATA 3.0, контроллер PCIe Gen.3 х4 и USB 2.0.

Тестирование Baikal-T1 проводили в популярных бенчмарках: CoreMark, Dhrystone, Whetstone, Stream, IPERF, SPEC CPU2006. Тестирование выполнялось в таких условиях:

Представитель «Байкал электроникс» Андрей Малафеев отметил, что реальные показатели быстродействия «превосходят оценочные характеристики для процессорных ядер MIPS P-класса, а те, в свою очередь очень выгодно смотрятся по сравнению архитектурой х86». Речь, в первую очередь, идёт об отношении производительности к энергопотреблению и площади кристалла.

Специалисты Cnews протестировали Baikal-T1 в бенчмарке CoreMark и сравнили результаты с процессорами Intel и AMD. Результаты оказались выше, чем ожидалось, но, конечно, рекордов Baikal-T1 не ставит:

Напомним, Baikal-T1 разрабатывали до 2014 года. В декабре 2014 года RTL-код изделия передали на фабрику TSMC, а в мае 2015 года получили первые инженерные образцы. После этого «Байкал электроникс» протестировал чипы и получил заем от Минпромторга на 500 млн рублей. Добавив к ним 288 собственных средств, компания разместила заказ на TSMC и в сентябре 2016 года получила установочную партию из 10 тыс. процессоров. Ожидается, что вскоре выйдет 100-тысячная промышленная партия чипов.


Этот маленький процессор потребляет всего 5 Вт и может работать даже без радиатора. В процессор встроены три контроллера Ethernet (два гигабитных и один 10-гигабитный), контроллер памяти DDR3-1600, поддерживающий до 8 ГБ, контроллер PCIe Gen.3, контроллер SATA 3.0 (6 Гбит), контроллер USB 2.0.
Процессор построен на 2-ядерном MIPS 32 r5 P5600 (это первая в мире реализация процессора на этом ядре), работающем на частоте до 1,2 ГГц, встроенная кэш-память 1 Мбайт, технологический процесс 28 нм.

По производительности Baikal-T1 сопоставим с процессорами Intel Atom и процессорами современных смартфонов. Он будет применяться преимущественно в мощном телекоммуникационном оборудовании (роутерах, управляемых коммутаторах), но пригоден и для тонких клиентов.

Компания «Т-Платформа» начинает производство моноблоков Таволга Терминал TP-T22BT на процессоре Байкал Т1. Они будут использоваться для создания автоматизированных рабочих мест там, где предъявляются специальные требования безопасности.

«Таволга» работает под управлением Linux и может оснащаться любыми совместимыми с ней прикладными программами - пакетом офисных приложений LibreOffice, браузером Firefox и многими другими.

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

«Байкал Электроникс» подписали меморандум о научно-техническом сотрудничестве с компанией Lenovo.
Lenovo уже продемонстрировали рабочий образец моноблока ThinkCentre Tiny-in-one 23, построенный на процессоре Baikal-T1.

Сегодня я впервые публикую данные о быстродействии процессора Baikal-T1, работающего на частоте 1 ГГц.

Coremark: 10342 coremarks (2 thread), Whetsnone: 1052 MWIPS (2 thread), Dhrystone: 3651 VAX MIPS (1 thread).
Результаты Coremark для большинства процессоров можно посмотреть .

К моменту завершения разработки процессора Байкал-Т1 компания существовала уже три года, в ней работало 70 российских «железячников» и программистов.

За основу было взято лицензированное ядро MIPS P5600, кроме того были лицензированы контроллеры Ethernet, SATA и USB. Российским разработчикам предстояло собрать эти компоненты вместе, заставить их корректно работать друг с другом и произвести разводку чипа по современной топологии 28 нм. Некоторые компоненты процессора разрабатывались с нуля.

Я попросил показать топологию процессора Байкал-Т1.

Так выглядит один маленький её кусочек.

Таких кусочков в процессоре миллионы.

Вы тоже видите странных грустных животных в топологии соединений Байкала? ;)

Это всего лишь один слой соединений.

Для процессора Байкал-Т1 была разработана и выпущена отладочная плата в стандартном формате MicroATX.

Это две самых первых платы.

Плата №0001. Кодовое имя «Лошадка». :)

В электронную лабораторию Байкал Электроникс не пускают никого, даже большинство своих сотрудников. Меня пустили. :)

Офис разработки программной части.

Идёт тестирование.

Процессор Baikal-T1 получился вполне конкурентоспособным и за счет большого количества различных интерфейсов на чипе обладает преимуществами перед конкурирующими изделиями иностранных разработчиков. При стоимости около $60 он позволит создавать телекоммуникационное и промышленное оборудование, блоки диспетчеризации и тонкие клиенты, системы автоматизации и управления. Российское происхождение гарантирует отсутствие «закладок» и позволит применять его в структурах с повышенными требованиями к информационной безопасности.

Сейчас Байкал Электроникс работает над разработкой новых процессоров на базе архитектуры ARM - Baikal-M для настольных ПК, встроенных систем, средств промышленной автоматики, смарт-камер и Baikal-MS для микросерверов и встроенных систем.

2016, Алексей Надёжин