Pruebas independientes de Baikal-T1, el primer SoC ruso de 28 nm, y la placa de evaluación BFK 3.1

El periodista tecnológico Igor Oskolkov de 3DNews.ru ha probado recientemente la versión públicamente disponible de la placa de evaluación o, como lo llama el proveedor, el complejo de software y hardware del desarrollador, bajo el nombre en código BFK 3.1 con el SoC ruso Baikal-T1 basado en MIPS Arquitectura del guerrero P5600. Aquí va la traducción al inglés de su texto, que fue publicado por primera vez en ruso por servernews.ru .

Para comenzar, debemos enfatizar que BFK 3.1 es un complejo de software y hardware para desarrolladores (seguiremos llamándolo una placa) y no la base para construir productos finales. Nadie cuerdo usará esta placa para construir un sistema. Primero, dicho sistema será excesivamente caro. En segundo lugar, tal idea no tiene sentido. Esta placa es necesaria para desarrollar y depurar software, y para evaluar el rendimiento del procesador y su compatibilidad con otros equipos. Es incorrecto comparar BFK 3.1 con microcomputadoras de placa única como Raspberry Pi o Cubieboard, aunque formalmente está muy cerca de ellas.



Placas de desarrollo similares son ofrecidas por otros proveedores de procesadores. Dependiendo de su tipo y equipo embebido, los precios de dichas tarjetas pueden variar de cientos a miles de dólares estadounidenses. Lo que es importante con la placa BFK 3.1, es que es la primera placa con Baikal-T1 SoC, que está disponible prácticamente para todos, y no se limita a un círculo estrecho de individuos y organizaciones, como solía ser con los procesadores rusos antes . Cuesta una fortuna, 650 USD, es costoso, pero el vendedor no puede ofrecer un precio más bajo, teniendo en cuenta el volumen relativamente pequeño de la producción de estas tablas.

Lo que obtienen los clientes después de registrar el producto es el acceso a la biblioteca de documentación de ingeniería de acceso limitado y el diseño de la placa de circuito impreso en formato Altium Designer. Esto acelerará y simplificará significativamente el proceso de creación de soluciones propias de hardware y software basadas en placas BFK 3.1 y SoC Baikal-T1.

La placa en sí está equipada con un procesador con un flejado básico. Casi todas las interfaces del procesador tienen salidas a la placa, solo un puerto de 10 GbE no. La placa en sí mide 229 × 191 mm (FlexATX). Tiene dos puertos SATA-3 (versión de controlador 3.1), una ranura SO-DIMM para el módulo de memoria DDR3-1600, dos puertos Gigabit Ethernet RJ-45, un conector USB 2.0 Tipo A, dos puertos USB Mini-B necesarios para la depuración , un conector PCI-E 3.0 x4. También hay un GPIO de 40 pines (su controlador principal es de 32 bits).





Para la fuente de alimentación, se necesita cualquier módulo ATX 2.0 con 200 vatios o más. Este valor se da claramente con un gran margen, incluso teniendo en cuenta el consumo de dispositivos PCI-E y SATA. La placa tiene botones separados de "encendido / apagado" y "reinicio de energía". Iniciar la placa es extremadamente simple: instale el módulo de memoria, conecte la fuente de alimentación, conecte la PC con el puerto mini-USB superior, ejecute su emulador de terminal favorito con soporte para puertos COM ( puede necesitar un controlador para el puente en sí mismo - use este enlace ) Bueno, eso es todo, presione el botón "on" y seleccione el elemento deseado en el menú de arranque.





La placa tiene dos módulos de memoria NOR: 16 MB y 32 MB. El primero es de arranque, contiene el firmware en sí. Aquí todo es estándar: U-Boot + Linux-kernel + mínima imagen de BusyBox. Es posible iniciar desde la red a través de un servidor NFS o TFTP. Para sistemas embebidos será suficiente. En tales casos, el producto final es una placa relativamente compacta con RAM y ROM ya soldadas del volumen requerido y un entorno de software preprogramado y optimizado para una gama específica de tareas. Como ejemplo, uno puede pensar en enrutadores SOHO.



La segunda opción para usar esta placa es el lanzamiento de un sistema operativo completo. Eso es lo que haremos para las pruebas. El proveedor ofrece una versión ligeramente modificada de Debian 9 con un núcleo del SDK. Tenga en cuenta que ellos mismos no vuelven a ensamblar todo el software. Se utilizan repositorios listos para usar de las ramas de mipsel de Debian, por lo que no hay optimizaciones para este procesador en particular. Sin embargo, también hay ensamblajes Astra Linux Special Edition para dispositivos Tavolga Terminal 2BT1 con el mismo SoC Baikal-T1. Pero ellos, por desgracia, no están disponibles abiertamente. Además, se espera el soporte para Alt Linux y Buildroot y existe la posibilidad de ejecutar OpenWRT / LEDE.



Para iniciar el sistema operativo Debian, es necesario tomar las imágenes del núcleo, firmware y ramdisk del SDK. El SDK en sí también incluye herramientas auxiliares para compilación cruzada, scripts para construir una imagen de ROM y una VM preparada para QEMU, donde puede depurar previamente sus programas. La experiencia con Debian 9 en BFK 3.1 todavía no es perfecta: después de la instalación, uno tendrá que profundizar en la configuración e instalar algún software, pero no hay problemas especiales con esto. Es una pena que todavía no haya documentación completa para esta placa: uno tiene que averiguarlo mediante prueba y error o preguntarle directamente al proveedor.



Para ejecutar las pruebas, se conectó la placa a una antigua según los estándares actuales Kingston SSDNow V para el sistema operativo y el módulo de memoria Samsung DDR3L-1600 de 4 GB. Esto es suficiente para familiarizarse con las capacidades de SoC. Ha habido un matiz más: debido a las características del controlador, no toda la memoria del módulo SO-DIMM es visible. Otro punto importante se ocupa de las compilaciones básicas de los programas de prueba del código fuente: todo se ha hecho directamente en BFK 3.1. En caso necesario se especifican las claves del compilador.



El proceso de construcción, debemos decir, no siempre es indoloro. En algún lugar tuvimos que profundizar en los parámetros de optimización para lograr un mejor resultado. Algo iba bien, pero cuando se ejecutó, falló o no funcionó correctamente. A veces, había una sensación general de que el proveedor no sospechaba la existencia de otras plataformas que no fueran x86. Y esto se aplica no solo al software. En particular, en PCI-E, lo más probable es que las GPU modernas no funcionen, ya que, según el proveedor, casi todas requieren la presencia de UEFI / BIOS x86. Además, puede haber problemas con los dispositivos que usan, por ejemplo, un puente PCI PCI-E.


Características del SoC Baikal-T1

Repasemos brevemente el procesador en sí para comenzar. Baikal-T1 tiene dos núcleos de 32 bits basados ​​en la arquitectura P5600 Warrior (MIPS32 Release 5) con soporte de hardware para virtualización. Cada núcleo recibió una memoria caché L1 de 64 KB para datos e instrucciones. Ambos núcleos tienen un 1 MB de caché L2 común. Además, cada núcleo tiene su propia FPU que admite SIMD de 128 bits. Todos los núcleos, L2 y FPU funcionan a la misma frecuencia de 1.2 GHz. El procesador es capaz de realizar hasta cuatro operaciones de enteros, hasta dos operaciones con números de coma flotante de doble precisión o cuatro de precisión simple por ciclo de reloj. Eso le da un rendimiento máximo teórico de 4.8 GFlops FP64 (2 núcleos 1.2 GHz × 2 FP64) o 9.6 GFlops FP32. Sin embargo, en un nivel práctico, para abrir el potencial de SoC (como a la gente le gusta publicar en comentarios), una optimización manual del código y el compilador, que "sabe" acerca de FPU / SIMD, las características son necesarias.



En realidad, por ejemplo, una versión no optimizada de Linpack, compilada por el GCC abierto, produce un resultado mucho menor al esperado. Tal situación es bastante normal para arquitecturas nuevas o específicas (como Elbrus). Esto debe tenerse en cuenta al evaluar los resultados que figuran a continuación. Otro punto importante para las preocupaciones son las notorias vulnerabilidades Meltdown y Spectre. Los bloques computacionales en MIPS32r5 son superescalares y capaces de ejecutar ejecuciones de instrucciones extraordinarias, pero claramente no se habla de especulaciones profundas. El proveedor principal emitió una advertencia sobre la posible presencia de Spectre (no Meltdown) en los núcleos P5600 / P6600 "limpios". Según el proveedor, en el caso de Baikal-T1, el código oficial de verificación de vulnerabilidad no produce un resultado, pero es demasiado pronto para afirmar con absoluta certeza que el SoC no se ve afectado por la vulnerabilidad. El vendedor planea organizar un hackathon para verificar la seguridad del SoC.



Los núcleos del SoC se comunican a través del bus AXI con el resto de los componentes. Todas las interfaces de alta velocidad tienen soporte DMA. El controlador de memoria de un solo canal es compatible con DDR3-1600 con ECC. La capacidad máxima de CPU admitida de RAM es de 8 GB. Hay otro matiz: el controlador de memoria tiene un bus de datos de 32 bits y 8 bits de ECC y admite trabajar con chips de memoria con un ancho de 8 a 32 bits. Para productos terminados con módulos adecuados ya soldados, no presenta problemas, pero la placa solo verá la mitad del volumen declarado con los SO-DIMM convencionales, ya que generalmente "miran" hacia afuera con una interfaz de 64 bits. Y su velocidad, obviamente, será menor, hasta 6.4 GB / s.

El interior del SoC se puede admirar en este enlace .

El SoC requiere un voltaje de 0.95 V para la fuente de alimentación y el consumo de energía reclamado no es más de 5 vatios. Durante las pruebas, la CPU se calentó hasta 60 con un pequeño grado más de Celsius. No se requiere enfriamiento activo, sin embargo, en el caso cerrado, un radiador no será superfluo. La frecuencia de los núcleos se ajusta dinámicamente en el rango de 200 a 1500 MHz, pero esto requiere soporte del sistema operativo, hasta ahora en la versión actual de Debian, la frecuencia se puede configurar al inicio del sistema. En cualquier caso, durante la operación de baja carga, un núcleo puede apagarse automáticamente. Con un precio de 65 USD, Baikal-T1 se fabrica en TSMC de 28 nm fab.

Coremark

Ahora vamos directamente a los puntos de referencia. El primero en la cola, CoreMark, es un punto de referencia especializado, utilizado para evaluar el rendimiento de los procesadores y SoC para sistemas integrados. Para decirlo con claridad, fue con el anuncio de un nuevo registro de CoreMark que Imagination Technologies comenzó a contar la historia sobre las ventajas del núcleo MIPS P5600 Warrior. La verdad es que en ese momento era un solo núcleo de simulación FPGA que funcionaba a 20 MHz. Luego se trató del récord en megahercios por valor CoreMark por núcleo: 5.61, pero en realidad vale la pena contar con el valor de aproximadamente 5. El proveedor principal incluso señaló la mayor eficiencia del P5600 en comparación con las CPU Intel de escritorio . Formalmente, Baikal-T1 es el líder en términos de megahercios y megahercios por núcleo. En la práctica, para lograr el rendimiento en términos absolutos, el proveedor utiliza métodos extensivos, aumentando las frecuencias y el número de núcleos.



Lamentablemente, la base de resultados de CoreMark no se completa con mucho cuidado, por lo que tuvimos que seleccionar manualmente las pruebas para chips de doble núcleo con características de frecuencia cercanas a las de Baikal-T1 y también una indicación explícita de que la prueba había utilizado dos flujos. Para la comparación, incluimos intencionalmente una muestra de cuatro núcleos. En general, uno puede clasificar los resultados de referencia por varios criterios. Sin embargo, produce inmediatamente muchos matices: primero, los núcleos IP ARM y MIPS tienen licencia para compañías de terceros, por lo que la implementación del mismo diseño puede variar significativamente; en segundo lugar, mucho depende de la optimización del código del software, sus compilaciones y su tiempo de ejecución.

Para nuestra prueba básica, utilizamos GCC 6.3 con las siguientes opciones: -O3 -DMULTITHREAD = 2 -DUSE_PTHREAD -funroll-all-loops -fgcse-sm - fgcse-las -finline-limit = 1000 -mhard-float -mtune = p5600 . Las pruebas del proveedor también incluyeron el entorno comercial de Sourcery CodeBench. De aquí en adelante en las tablas se aceptan las siguientes designaciones: "prueba oficial": para los resultados publicados en el sitio web del proveedor; "Precomp": para ejecutar archivos de referencia binarios proporcionados por el proveedor de la CPU; "W / opt". - nuestras propias compilaciones del código fuente abierto con las claves indicadas; "Optar". - compilación cruzada con SDK y utilidades comerciales por las "recetas" del vendedor. La optimización manual permite lograr un mejor rendimiento, que es muy claramente visible en la tabla de resultados. Sin embargo, no necesitamos clasificar las claves y profundizar en el código, mientras que los desarrolladores de software Baikal-T1 definitivamente tienen que lidiar con él de manera regular.

Puntos de referencia clásicos

Del mismo documento se pueden elegir los resultados de los puntos de referencia clásicos de la "vieja escuela". La prueba Stream para el ancho de banda de memoria se compiló para un subproceso con las siguientes claves: -mtune = p5600 -O2 -funroll-all-loops. Su resultado representa aproximadamente la mitad de la velocidad teórica de RAM.


Todo lo dicho anteriormente sobre CoreMark se aplica a Dhrystone2 (que se ocupa de la computación entera), que se compiló en la base con un mínimo de claves: -O3 -funroll-all-loops -mtune = p5600. Por desgracia, como en los ejemplos anteriores, la base de mediciones no es un ejemplo de precisión. A modo de comparación, se tomaron algunos resultados para cálculos de 32 bits con indicación explícita de optimizaciones. Desafortunadamente, no publican modelos específicos de CPU o al menos generaciones. Además, el asunto se complica por la presencia de TurboBoost o un aumento similar a corto plazo (y esta prueba es breve) en la frecuencia base del procesador, que lubrica la imagen general. Una vez más, la situación se repite en la prueba con CoreMark: en términos de megahercios, el rendimiento del P5600 no es malo.



Pero otras CPU modernas aumentan el rendimiento ya sea al aumentar la frecuencia, al admitir instrucciones de 64 bits y también por la cantidad de núcleos, todo al mismo tiempo. Los resultados de la piedra de afilar son en su mayoría los mismos, solo la diferencia del aumento en los flujos y el uso de instrucciones vectoriales es aún más sorprendente. Ah, sí, para construir todo esto, tuvimos que ajustar ligeramente el código eliminando las llamadas no esenciales a las comprobaciones de ensamblaje x86 y extensiones x86, que son necesarias solo para la identificación de la CPU.



Para una comprobación rápida de los adaptadores Gigabit Ethernet, utilizamos la utilidad iperf 3.1.3, que demostró que para las conexiones unidireccionales la velocidad es la requerida de 940 Mb / s, pero en dúplex, por desgracia, la velocidad era de 1.2 Gb / s. Al explicar este hecho, señaló, que se requiere un pequeño ajuste a nivel de software para obtener un rendimiento completo.

Phoronix Test Suite

Sabemos que esta idea huele a locura, ya que PTS (https://www.phoronix-test-suite.com/) generalmente no está diseñado para tales sistemas. La construcción se lleva a cabo directamente en la máquina de prueba, por lo que en el caso de Baikal-T1 esto es terriblemente largo, así como la duración de la mayoría de las pruebas. Excluimos algunas pruebas excluidas de la suite: aquellas que no se compilan o que se realizan indecentemente durante mucho tiempo incluso en PC "adultas". El primer problema, en teoría, puede manejarse manualmente, personalizando los parámetros de compilación. Pero, de nuevo, no teníamos esa tarea y, de cualquier manera, es poco probable que los resultados de la prueba alcancen los valores máximos posibles.



Todos los resultados de las pruebas están disponibles en este enlace . Estrictamente hablando, todos esos son más bien una reserva para el futuro, ya que en este momento no tenemos nada que comparar. Más adelante podremos ver cuánto mejor (o no) se vuelven los resultados después de arreglar la compilación y la optimización. Para los curiosos, solo podemos mencionar algunas configuraciones de puntos de referencia coincidentes aleatoriamente de los procesadores chinos Loongson Godson 3A3000 (4 núcleos a 1,5 Hz, L2-caché 1 MB, L3-caché 8 MB, 28 nm, 30 W). Ambas CPU son similares en la nueva arquitectura y los problemas de optimización de software para esta arquitectura. Hasta ahora, los chinos están por delante con un gran margen en términos absolutos, pero en términos del núcleo, MHz y consumo, los resultados son poco menos ambiguos.



Conclusión


Baikal-T1 es notable como el producto moderno que los desarrolladores rusos pudieron implementar por un equipo relativamente pequeño dentro de un tiempo aceptado por la industria. Tiene un precio razonable (en comparación con otros procesadores rusos) y está disponible en el mercado. Pero su éxito (o fracaso) realmente puede evaluarse solo después de un año o dos; todo depende de quién y en qué volúmenes utilizará este SoC en sus productos. En este momento, solo unos pocos productos finales se anuncian públicamente: https://baik.al/sdelano. Todos estos son ejemplos típicos de las áreas de aplicación de Baikal-T1, también nos gustaría ver más de las soluciones NAS / SAN, IoT y SDR. Sin embargo, ya no se trata de hardware. La CPU en sí es realmente buena, especialmente cuando se evalúa su rendimiento relativo, en lugar de absoluto. Pero todavía hay muchos problemas de software y asperezas. Hablando específicamente sobre la placa BFK3.1, tiene una documentación bastante débil. A nivel mundial, la pregunta es esta: ¿quién equipará el software para esta arquitectura? ¿Quién desarrollará las herramientas que hacen que este proceso sea lo más fácil posible? ¿Habrá una comunidad suficientemente fuerte de desarrolladores de software? Por ejemplo, el soporte para la virtualización de hardware, que se mencionó en la descripción de la CPU, apareció solo en el verano del año pasado, con el lanzamiento del kernel de Linux 4.12. Y, en general, nos preguntamos qué sucederá junto a la arquitectura MIPS. Hace cinco años, la elección de esta arquitectura particular para nuevos productos era muy razonable. Y ahora? Es la pregunta ...

Source: https://habr.com/ru/post/440888/


All Articles