Tests indépendants du Baïkal-T1 - le premier SoC russe de 28 nm - et de la carte d'évaluation BFK 3.1

Le journaliste technique Igor Oskolkov de 3DNews.ru a récemment testé la version accessible au public de la carte d'évaluation ou, comme l'appelle le vendeur, le complexe logiciel-matériel du développeur, sous le nom de code BFK 3.1 avec le SoC russe Baikal-T1 basé sur le MIPS Architecture du guerrier P5600. Voici la traduction anglaise de son texte, qui a été publié pour la première fois en russe par servernews.ru .

Pour commencer, nous devons souligner que BFK 3.1 est un complexe logiciel-matériel de développeur (nous continuerons à l'appeler une carte) et non la base de la construction de produits finaux. Personne sain d'esprit n'utilisera cette carte pour construire un système. Premièrement, un tel système sera excessivement cher. Deuxièmement, une telle idée n'a pas de sens. Cette carte est nécessaire pour développer et déboguer des logiciels et pour évaluer les performances du processeur et sa compatibilité avec d'autres équipements. Il est incorrect de comparer le BFK 3.1 avec des micro-ordinateurs à carte unique comme Raspberry Pi ou Cubieboard, bien qu'il soit formellement très proche d'eux.



Des cartes de développement similaires sont proposées par d'autres fournisseurs de processeurs. Selon leur type et leur équipement embarqué, les prix de ces cartes peuvent varier de plusieurs centaines à plusieurs milliers de dollars américains. Ce qui est important avec la carte BFK 3.1, c'est que c'est la première carte avec le SoC Baikal-T1, qui est disponible pratiquement pour tout le monde, et non limitée à un cercle restreint d'individus et d'organisations, comme c'était le cas auparavant avec les processeurs russes. . Cela coûte une fortune - 650 USD - c'est cher, mais le vendeur ne peut pas offrir un prix inférieur, compte tenu du volume relativement faible de cette production de planches.

Ce que les clients obtiennent après l'enregistrement du produit, c'est l'accès à la bibliothèque de documentation technique à accès limité et la conception de la carte de circuit imprimé au format Altium Designer. Cela accélérera et simplifiera considérablement le processus de création de ses propres solutions matérielles et logicielles basées sur les cartes BFK 3.1 et les SoC Baikal-T1.

La carte elle-même est équipée d'un processeur avec un cerclage de base. Presque toutes les interfaces du processeur ont des sorties vers la carte, seul un port 10 GbE ne l'a pas. La carte elle-même mesure 229 × 191 mm (FlexATX). Il possède deux ports SATA-3 (contrôleur version 3.1), un emplacement SO-DIMM pour le module de mémoire DDR3-1600, deux ports Gigabit Ethernet RJ-45, un connecteur USB 2.0 Type A, deux ports USB Mini-B nécessaires pour le débogage , un connecteur PCI-E 3.0 x4. Il existe également un GPIO 40 broches (son contrôleur principal est 32 bits).





Pour l'alimentation, il faut tout module ATX 2.0 de 200 watts ou plus. Cette valeur est clairement donnée avec une énorme marge, même en tenant compte de la consommation des périphériques PCI-E et SATA. La carte a des boutons séparés "on / off" et "power reset". Le démarrage de la carte est extrêmement simple: installez le module de mémoire, connectez le bloc d'alimentation, connectez le PC au port mini-USB supérieur, exécutez votre émulateur de terminal préféré avec prise en charge des ports COM ( vous aurez peut-être besoin d'un pilote pour le pont lui-même - utilisez ce lien ). Eh bien, c'est tout, appuyez sur le bouton "on" et sélectionnez l'élément souhaité dans le menu de démarrage.





La carte possède deux modules de mémoire NOR: 16 Mo et 32 ​​Mo. Le premier est amorçable, il contient le firmware lui-même. Ici, tout est standard: U-Boot + noyau Linux + image BusyBox minimale. Le démarrage à partir du réseau sur un serveur NFS ou TFTP est possible. Pour les systèmes embarqués, ce sera suffisant. Dans de tels cas, le produit final est une carte relativement compacte avec RAM et ROM déjà soudées du volume requis et un environnement logiciel préprogrammé et optimisé pour une gamme spécifique de tâches. À titre d'exemple, on peut penser aux routeurs SOHO.



La deuxième option pour utiliser cette carte est le lancement d'un système d'exploitation à part entière. C'est ce que nous ferons pour les tests. Le vendeur propose une version légèrement modifiée de Debian 9 avec un noyau du SDK. Veuillez noter qu'ils ne remontent pas eux-mêmes tous les logiciels. Des référentiels prêts à l'emploi de branches mipsel Debian sont utilisés, il n'y a donc aucune optimisation pour ce processeur particulier. Cependant, il existe également des assemblages Astra Linux Special Edition pour les appareils Tavolga Terminal 2BT1 avec le même SoC Baikal-T1. Mais, hélas, ils ne sont pas ouvertement disponibles. En outre, la prise en charge d'Alt Linux et de Buildroot est attendue et il est possible d'exécuter OpenWRT / LEDE.



Pour démarrer le système d'exploitation Debian, il faut prendre les images du noyau, le firmware et le ramdisk du SDK. Le SDK lui-même comprend également des outils auxiliaires pour la compilation croisée, des scripts pour créer une image ROM et une machine virtuelle préparée pour QEMU, où vous pouvez pré-déboguer vos programmes. L'expérience avec Debian 9 sur BFK 3.1 n'est toujours pas parfaitement fluide: après l'installation, il faudra creuser dans les paramètres et installer des logiciels, mais il n'y a pas de problèmes particuliers avec cela. Il est dommage qu'il n'y ait pas encore de documentation complète pour cette carte: il faut le découvrir par essais et erreurs ou demander directement au vendeur.



Afin d'exécuter les tests, la carte a été connectée à un ancien selon les normes d'aujourd'hui Kingston SSDNow V pour le système d'exploitation et le module de mémoire Samsung DDR3L-1600 de 4 Go. C'est suffisant pour se familiariser avec les capacités SoC. Il y a encore une nuance - en raison des caractéristiques du contrôleur, toute la mémoire du module SO-DIMM n'est pas visible. Un autre point important concerne les versions de base des programmes de test à partir du code source: tout a été fait directement sur BFK 3.1. Le cas échéant, les clés du compilateur sont spécifiées.



Il faut dire que le processus de construction n'est pas toujours indolore. Quelque part, nous avons dû creuser dans les paramètres d'optimisation afin d'obtenir un meilleur résultat. Quelque chose allait bien, mais une fois exécuté, il a échoué ou n'a pas fonctionné correctement. Parfois, il y avait un sentiment général que le fournisseur ne soupçonnait pas l'existence d'autres plates-formes que x86. Et cela ne s'applique pas seulement aux logiciels. En particulier, en PCI-E, les GPU modernes ne fonctionneront probablement pas, car, selon le fournisseur, presque tous nécessitent la présence d'UEFI / BIOS x86. En outre, il peut y avoir des problèmes avec les périphériques qui utilisent, par exemple, un pont PCI PCI-E.


Caractéristiques du SoC Baikal-T1

Passons brièvement en revue le processeur lui-même pour commencer. Baikal-T1 possède deux cœurs 32 bits basés sur l'architecture P5600 Warrior (MIPS32 version 5) avec prise en charge matérielle de la virtualisation. Chaque cœur a reçu un cache L1 de 64 Ko pour les données et les instructions. Les deux cœurs ont un cache L2 commun de 1 Mo. De plus, chaque cœur possède son propre FPU prenant en charge SIMD 128 bits. Tous les cœurs, L2 et FPU fonctionnent à la même fréquence de 1,2 GHz. Le processeur est capable d'effectuer jusqu'à quatre opérations entières, jusqu'à deux opérations sur des nombres à virgule flottante double précision ou quatre simples précision par cycle d'horloge. Cela lui donne une performance théorique maximale de 4,8 GFlops FP64 (2 cœurs 1,2 GHz × 2 FP64) ou 9,6 GFlops FP32. Cependant, sur un plan pratique, pour ouvrir le potentiel SoC (comme les gens aiment poster dans les commentaires), une optimisation manuelle du code et du compilateur, qui "connaît" FPU / SIMD, les fonctionnalités sont nécessaires.



En réalité, par exemple, une version non optimisée de Linpack, compilée par le GCC ouvert, produit un résultat bien inférieur aux attentes. Une telle situation est tout à fait normale pour les architectures nouvelles ou spécifiques (comme Elbrus). Cela doit être pris en compte lors de l'évaluation des résultats ci-dessous. Un autre point important de préoccupation est les vulnérabilités notoires de Meltdown et Spectre. Les blocs de calcul dans MIPS32r5 sont superscalaires et capables d'effectuer une exécution d'instruction extraordinaire, mais il n'est clairement pas question de spéculation profonde. Le fournisseur principal a émis un avertissement concernant la présence possible de Spectre (et non de Meltdown) dans les cœurs «propres» P5600 / P6600. Selon le vendeur, dans le cas du Baïkal-T1, le code officiel de vérification de la vulnérabilité ne produit pas de résultat, mais il est trop tôt pour affirmer avec une certitude absolue que le SoC n'est pas affecté par la vulnérabilité. Le vendeur prévoit d'organiser un hackathon pour revérifier la sécurité du SoC.



Les cœurs du SoC communiquent via le bus AXI avec le reste des composants. Toutes les interfaces haut débit ont un support DMA. Le contrôleur de mémoire monocanal lui-même prend en charge DDR3-1600 avec ECC. La capacité CPU maximale prise en charge de la RAM est de 8 Go. Il y a une autre nuance - le contrôleur de mémoire a un bus de données de 32 bits et 8 bits d'ECC et prend en charge le travail avec des puces de mémoire d'une largeur de 8 à 32 bits. Pour les produits finis avec des modules appropriés déjà soudés, cela ne pose aucun problème, mais la carte ne verra que la moitié du volume déclaré avec les SO-DIMM conventionnels, car ils "regardent" généralement vers l'extérieur avec une interface 64 bits. Et sa vitesse, évidemment, sera inférieure - jusqu'à 6,4 Go / s.

L'intérieur du SoC peut être admiré à ce lien .

Le SoC nécessite une tension de 0,95 V pour l'alimentation et la consommation électrique déclarée ne dépasse pas 5 watts. Pendant les tests, le CPU a chauffé jusqu'à 60 avec un petit plus de degrés Celsius. Un refroidissement actif n'est pas nécessaire, mais dans le cas fermé, un radiateur ne sera pas superflu. La fréquence des cœurs est ajustée dynamiquement dans la plage de 200 à 1500 MHz, mais cela nécessite la prise en charge du système d'exploitation, jusqu'à présent dans la version Debian actuelle, la fréquence peut être définie au démarrage du système. Dans tous les cas, pendant le fonctionnement à faible charge, un cœur peut s'arrêter automatiquement. Au prix de 65 USD, le Baïkal-T1 est fabriqué chez TSMC 28 nm fab.

Coremark

Passons maintenant directement aux benchmarks. Le premier de la file d'attente - CoreMark - est une référence spécialisée, utilisée pour évaluer les performances des processeurs et du SoC pour les systèmes embarqués. Pour parler franchement, c'est avec l'annonce d'un nouveau record CoreMark qu'Imagination Technologies a commencé à raconter l'histoire des avantages du noyau MIPS P5600 Warrior. La vérité est qu'à cette époque, il s'agissait d'un seul cœur de simulation FPGA fonctionnant à 20 MHz. Ensuite, il s'agissait du record de la valeur CoreMark mégahertz par cœur: 5,61, mais en réalité, il vaut la peine de compter sur la valeur d'environ 5. Le fournisseur principal a même souligné la plus grande efficacité du P5600 par rapport aux processeurs Intel de bureau . Officiellement, le Baïkal-T1 est le leader en termes de mégahertz et de mégahertz par cœur. En pratique, pour atteindre des performances absolues, le vendeur utilise des méthodes extensives, augmentant les fréquences et le nombre de cœurs.



Hélas, la base de résultats CoreMark n'est pas remplie très soigneusement, nous avons donc dû sélectionner manuellement des tests pour les puces dual-core avec des caractéristiques de fréquence proches de celles du Baïkal-T1 et également une indication explicite que le test avait utilisé deux flux. Pour comparaison, nous avons intentionnellement inclus un échantillon à quatre cœurs. En général, on peut classer les résultats de référence selon plusieurs critères. Cependant, il produit immédiatement de nombreuses nuances: premièrement, les cœurs IP ARM et MIPS sont concédés sous licence à des sociétés tierces, de sorte que la mise en œuvre de la même conception peut varier considérablement; d'autre part, beaucoup dépend de l'optimisation du code logiciel, de ses builds et de son runtime.

Pour notre test de base, nous avons utilisé GCC 6.3 avec les options suivantes: -O3 -DMULTITHREAD = 2 -DUSE_PTHREAD -funroll-all-loops -fgcse-sm - fgcse-las -finline-limit = 1000 -mhard-float -mtune = p5600 . Les tests du fournisseur ont également inclus l'environnement commercial Sourcery CodeBench. Dans les tableaux ci-après, les désignations suivantes sont acceptées: «test officiel» - pour les résultats affichés sur le site Web du vendeur; «Precomp» - pour exécuter des fichiers de référence binaires fournis par le vendeur de CPU; "W / opt." - nos propres builds à partir du code open source avec les clés indiquées; "Opt." - compilation croisée avec SDK et utilitaires commerciaux par les «recettes» du vendeur. L'optimisation manuelle permet d'obtenir de meilleures performances, ce qui est très clairement visible dans le tableau des résultats. Cependant, nous n'avons pas besoin de trier les clés et de creuser dans le code, alors que les développeurs de logiciels du Baïkal-T1 doivent définitivement y faire face régulièrement.

Benchmarks classiques

A partir du même document, on peut choisir les résultats des benchmarks classiques "old school". Le test Stream pour la bande passante mémoire a été compilé pour un thread avec les clés suivantes: -mtune = p5600 -O2 -funroll-all-loops. Son résultat représente environ la moitié de la vitesse théorique de la RAM.


Tout ce qui précède concernant CoreMark s'applique à Dhrystone2 (qui traite de l'informatique entière), qui a été compilé dans la base avec un minimum de clés: -O3 -funroll-all-loops -mtune = p5600. Hélas, comme dans les exemples ci-dessus, la base de mesures n'est pas un exemple de précision. A titre de comparaison, certains résultats ont été pris pour les calculs 32 bits avec indication explicite des optimisations. Malheureusement, ils ne publient pas de modèles de processeur spécifiques ou au moins des générations. De plus, la question est compliquée par la présence de TurboBoost ou similaire à court terme (et ce test est juste un court) augmentation de la fréquence de base du processeur, ce qui lubrifie l'image globale. Encore une fois, la situation se répète dans le test avec CoreMark - en termes de mégahertz, les performances du P5600 ne sont pas mauvaises.



Mais d'autres processeurs modernes augmentent les performances soit en augmentant la fréquence, en prenant en charge les instructions 64 bits, mais aussi par le nombre de cœurs tous en même temps. Les résultats de Whetstone sont généralement les mêmes, seule la différence entre l'augmentation des flux et l'utilisation d'instructions vectorielles est encore plus frappante. Oh oui, pour construire tout cela, nous avons dû ajuster légèrement le code en supprimant les appels non essentiels aux vérifications d'assemblage x86 et d'extensions x86, qui ne sont nécessaires que pour l'identification du processeur.



Pour une vérification rapide des adaptateurs Gigabit Ethernet, nous avons utilisé l'utilitaire iperf 3.1.3, qui a démontré que pour les connexions unidirectionnelles, la vitesse était de 940 Mb / s, mais en duplex, hélas, la vitesse était de 1,2 Gb / s. En expliquant ce fait, le fait remarquer, qu'un petit réglage au niveau du logiciel est nécessaire pour obtenir des performances complètes.

Phoronix Test Suite

Nous savons que cette idée sent la folie, car PTS (https://www.phoronix-test-suite.com/) n'est généralement pas conçu pour de tels systèmes. La construction a lieu directement sur la machine de test, donc dans le cas du Baikal-T1, cela est tout simplement atrocement long, ainsi que la durée de la plupart des tests. Nous avons exclu certains tests exclus de la suite: ceux à ne pas compiler, ou à effectuer indécemment pendant longtemps même sur des PC «adultes». Le premier problème, en théorie, peut être traité manuellement, en personnalisant les paramètres de construction. Mais encore une fois, nous n'avons pas eu une telle tâche et de toute façon les résultats des tests sont peu susceptibles d'atteindre les valeurs maximales possibles.



Tous les résultats des tests sont disponibles sur ce lien . Strictement parlant, tout cela est plutôt une réserve pour l'avenir, car pour le moment nous n'avons rien à comparer. Plus tard, nous pourrons voir à quel point les résultats s'améliorent (ou non) après avoir corrigé la construction et l'optimisation. Pour les curieux, nous ne pouvons mentionner que quelques configurations de références aléatoires coïncidentes de processeurs chinois Loongson Godson 3A3000 (4 cœurs à 1,5 Hz, cache L2 1 Mo, cache L3 8 Mo, 28 nm, 30 W). Les deux processeurs sont similaires en termes de nouvelle architecture et de problèmes d'optimisation logicielle pour cette architecture. Jusqu'à présent, les Chinois sont en avance avec une grande marge en termes absolus, mais en termes de cœur, de MHz et de consommation, les résultats sont un peu moins clairs.



Conclusion


Le Baïkal-T1 est remarquable en tant que produit moderne, les développeurs russes ont pu le mettre en œuvre par une équipe relativement petite dans un délai accepté par l'industrie. Il est à un prix raisonnable (par rapport à d'autres processeurs russes) et disponible sur le marché. Mais son succès (ou son échec) ne peut vraiment être évalué qu'après un an ou deux - tout dépend de qui et dans quels volumes utilisera ce SoC dans ses produits. À l'heure actuelle, seuls quelques produits finaux sont annoncés publiquement - https://baik.al/sdelano. Tous ces exemples sont typiques des domaines d'application du Baïkal-T1, nous aimerions également voir plus de solutions NAS / SAN, IoT et SDR. Cependant, il ne s'agit plus de matériel. Le CPU lui-même est vraiment bon, surtout lors de l'évaluation de ses performances relatives plutôt qu'absolues. Mais il y a encore beaucoup de problèmes logiciels et de rugosités. En parlant spécifiquement de la carte BFK3.1, sa documentation est assez faible. Globalement, la question est la suivante: qui va utiliser le logiciel pour cette architecture? Qui développera les outils qui rendront ce processus aussi simple que possible? Y aura-t-il une communauté suffisamment forte de développeurs de logiciels? Par exemple, la prise en charge de la virtualisation matérielle, mentionnée dans la description du processeur, n'est apparue qu'à l'été de l'année dernière, avec la sortie du noyau Linux 4.12. Et en général, nous nous demandons ce qui se passera à côté de l'architecture MIPS. Il y a cinq ans, le choix de cette architecture particulière pour les nouveaux produits était très raisonnable. Et maintenant? C'est la question ...

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


All Articles