Der Tech-Journalist Igor Oskolkov von
3DNews.ru hat kürzlich die öffentlich verfügbare Version des Evaluierungsboards oder, wie der Anbieter es nennt, den Entwickler-Software-Hardware-Komplex unter dem Codenamen BFK 3.1 mit dem russischen SoC Baikal-T1 auf Basis des MIPS getestet P5600 Kriegerarchitektur. Hier geht die englische Übersetzung seines Textes, der
zuerst von servernews.ru in russischer Sprache veröffentlicht wurde .
Zunächst sollten wir betonen, dass BFK 3.1 ein Entwickler-Software-Hardware-Komplex ist (wir werden ihn weiterhin als Board bezeichnen) und nicht die Grundlage für die Erstellung von Endprodukten. Kein vernünftiger Mensch wird dieses Board verwenden, um ein System aufzubauen. Erstens wird ein solches System unangemessen teuer sein. Zweitens ist eine solche Idee ziemlich bedeutungslos. Diese Karte wird benötigt, um Software zu entwickeln und zu debuggen sowie die Prozessorleistung und ihre Kompatibilität mit anderen Geräten zu bewerten. Es ist falsch, BFK 3.1 mit Single-Board-Mikrocomputern wie Raspberry Pi oder Cubieboard zu vergleichen, obwohl es formal sehr nahe daran liegt.

Ähnliche Entwicklungsplatinen werden von anderen Prozessorherstellern angeboten. Je nach Typ und eingebetteter Ausstattung können die Preise für solche Boards zwischen Hunderten und Tausenden von US-Dollar variieren. Was beim BFK 3.1-Board wichtig ist, ist, dass es das erste Board mit Baikal-T1 SoC ist, das praktisch jedem zur Verfügung steht und nicht auf einen engen Kreis von Einzelpersonen und Organisationen beschränkt ist, wie es früher bei den russischen Prozessoren der Fall war . Es kostet ein ziemliches Vermögen - 650 USD - es ist teuer, aber der Verkäufer kann angesichts des relativ geringen Volumens dieser Plattenproduktion keinen niedrigeren Preis anbieten.
Nach der Registrierung des Produkts erhalten die Kunden Zugriff auf die technische Dokumentationsbibliothek mit beschränktem Zugriff und das Leiterplattendesign im Altium Designer-Format. Dies wird den Prozess der Erstellung eigener Hardware- und Softwarelösungen auf der Basis von BFK 3.1-Karten und Baikal-T1-SoCs erheblich beschleunigen und vereinfachen.
Das Board selbst ist mit einem Prozessor mit einem einfachen Umreifungsband ausgestattet. Fast alle Prozessorschnittstellen haben Ausgänge auf der Karte, nur ein 10-GbE-Port nicht. Das Board selbst misst 229 × 191 mm (FlexATX). Es verfügt über zwei SATA-3-Anschlüsse (Controller-Version 3.1), einen SO-DIMM-Steckplatz für das DDR3-1600-Speichermodul, zwei Gigabit-Ethernet-RJ-45-Anschlüsse, einen USB 2.0-Typ-A-Anschluss und zwei zum Debuggen erforderliche Mini-B-USB-Anschlüsse , ein PCI-E 3.0 x4-Anschluss. Es gibt auch einen 40-poligen GPIO (sein Hauptcontroller ist 32-Bit).


Für die Stromversorgung benötigt man ein ATX 2.0-Modul mit 200 Watt oder mehr. Dieser Wert wird eindeutig mit einem großen Spielraum angegeben, selbst unter Berücksichtigung des Verbrauchs von PCI-E- und SATA-Geräten. Die Karte verfügt über separate Tasten "Ein / Aus" und "Power Reset". Das Starten der Karte ist äußerst einfach: Installieren Sie das Speichermodul, schließen Sie das Netzteil an, verbinden Sie den PC mit dem oberen Mini-USB-Anschluss, führen Sie Ihren bevorzugten Terminalemulator mit Unterstützung für COM-Anschlüsse aus (
möglicherweise benötigen Sie einen Treiber für die Bridge selbst - verwenden Sie dieser Link ). Nun, das war's, drücken Sie die "Ein" -Taste und wählen Sie das gewünschte Element im Startmenü.


Die Karte verfügt über zwei NOR-Speichermodule: 16 MB und 32 MB. Der erste ist bootfähig, er enthält die Firmware selbst. Hier ist alles Standard: U-Boot + Linux-Kernel + minimales BusyBox-Image. Das Booten vom Netzwerk über einen NFS- oder TFTP-Server ist möglich. Für eingebettete Systeme wird es ausreichen. In solchen Fällen ist das Endprodukt eine relativ kompakte Platine mit bereits geschweißtem RAM und ROM des erforderlichen Volumens und einer vorprogrammierten und optimierten Softwareumgebung für einen bestimmten Aufgabenbereich. Als Beispiel kann man sich SOHO-Router vorstellen.

Die zweite Option, für die dieses Board verwendet werden kann, ist der Start eines vollwertigen Betriebssystems. Das machen wir für die Tests. Der
Anbieter bietet eine leicht modifizierte Version von Debian 9 mit einem Kernel aus dem SDK an. Bitte beachten Sie, dass sie nicht alle Software selbst wieder zusammenbauen. Es werden vorgefertigte Repositorys von Debian-Mipsel-Zweigen verwendet, daher gibt es keine Optimierungen für diesen bestimmten Prozessor. Es gibt jedoch auch Astra Linux Special Edition-Baugruppen für Tavolga Terminal 2BT1-Geräte mit demselben Baikal-T1-SoC. Aber sie sind leider nicht offen verfügbar. Außerdem wird die Unterstützung für Alt Linux und Buildroot erwartet und es besteht die Möglichkeit, OpenWRT / LEDE auszuführen.

Um das Debian-Betriebssystem zu starten, müssen die Kernel-Images, die Firmware und die Ramdisk aus dem SDK entnommen werden. Das SDK selbst enthält außerdem zusätzliche Tools für die Cross-Kompilierung, Skripte zum Erstellen eines ROM-Images und eine vorbereitete VM für QEMU, mit der Sie Ihre Programme vorab debuggen können. Die Erfahrung mit Debian 9 unter BFK 3.1 ist immer noch nicht perfekt: Nach der Installation muss man sich in die Einstellungen vertiefen und Software installieren, aber es gibt keine besonderen Probleme damit. Schade, dass es für dieses Board noch keine vollständige Dokumentation gibt: Man muss es durch Ausprobieren herausfinden oder den Anbieter direkt fragen.

Um die Tests durchzuführen, verband das Board ein nach heutigen Maßstäben altes Kingston SSDNow V für das Betriebssystem und das 4 GB Samsung DDR3L-1600 Speichermodul. Dies reicht aus, um sich mit den SoC-Funktionen vertraut zu machen. Es gab noch eine Nuance - aufgrund der Funktionen des Controllers ist nicht der gesamte Speicher des SO-DIMM-Moduls sichtbar. Ein weiterer wichtiger Punkt befasst sich mit den grundlegenden Builds von Testprogrammen aus dem Quellcode: Alles wurde direkt in BFK 3.1 ausgeführt. Bei Bedarf werden die Compilerschlüssel angegeben.

Wir müssen sagen, dass der Build-Prozess nicht immer schmerzlos ist. Irgendwo mussten wir uns mit den Optimierungsparametern befassen, um ein besseres Ergebnis zu erzielen. Etwas lief gut, aber als es ausgeführt wurde, schlug es fehl oder funktionierte nicht richtig. Zuweilen gab es das allgemeine Gefühl, dass der Anbieter die Existenz anderer als x86-Plattformen nicht vermutete. Dies gilt nicht nur für Software. Insbesondere in PCI-E funktionieren moderne GPUs höchstwahrscheinlich nicht, da laut Hersteller fast alle von ihnen das Vorhandensein von UEFI / BIOS x86 erfordern. Es kann auch Probleme mit Geräten geben, die beispielsweise eine PCI-PCI-E-Brücke verwenden.
Baikal-T1 SoC-EigenschaftenLassen Sie uns zunächst kurz den Prozessor selbst überprüfen. Baikal-T1 verfügt über zwei 32-Bit-Kerne, die auf der P5600 Warrior-Architektur (MIPS32 Release 5) basieren und Hardwareunterstützung für die Virtualisierung bieten. Jeder Kern erhielt einen 64 KB L1-Cache für Daten und Anweisungen. Beide Kerne haben einen gemeinsamen 1 MB L2-Cache. Außerdem verfügt jeder Kern über eine eigene FPU, die 128-Bit-SIMD unterstützt. Alle Kerne, L2 und FPU, arbeiten mit derselben Frequenz von 1,2 GHz. Der Prozessor kann bis zu vier ganzzahlige Operationen ausführen, bis zu zwei Operationen mit Gleitkommazahlen mit doppelter Genauigkeit oder vier einfache Genauigkeit pro Taktzyklus. Dies ergibt eine theoretische Spitzenleistung von 4,8 GFlops FP64 (2 Kerne 1,2 GHz × 2 FP64) oder 9,6 GFlops FP32. Auf praktischer Ebene sind jedoch die Funktionen erforderlich, um das SoC-Potenzial zu erschließen (wie die Leute gerne in Kommentaren posten), eine manuelle Optimierung des Codes und des Compilers, der über FPU / SIMD „Bescheid weiß“.

In der Realität beispielsweise liefert eine nicht optimierte Version von Linpack, die vom offenen GCC kompiliert wurde, ein weitaus geringeres Ergebnis als erwartet. Eine solche Situation ist für neue oder spezifische (wie Elbrus) Architekturen ganz normal. Dies sollte bei der Bewertung der unten angegebenen Ergebnisse berücksichtigt werden. Ein weiterer wichtiger Punkt für Bedenken sind die berüchtigten Meltdown- und Spectre-Schwachstellen. Die Rechenblöcke in MIPS32r5 sind superskalar und können außergewöhnliche Befehle ausführen, aber von tiefer Spekulation ist eindeutig keine Rede. Der Hauptanbieter
warnte vor dem möglichen Vorhandensein von Spectre (nicht Meltdown) in den „sauberen“ P5600 / P6600-Kernen. Laut Angaben des Anbieters führt der offizielle Schwachstellenüberprüfungscode im Fall von Baikal-T1 nicht zu einem Ergebnis, aber es ist zu früh, um mit absoluter Sicherheit festzustellen, dass der SoC nicht von der Schwachstelle betroffen ist. Der Anbieter plant, einen Hackathon zu organisieren, um die SoC-Sicherheit zu überprüfen.

Die SoC-Kerne kommunizieren über den AXI-Bus mit den übrigen Komponenten. Alle Hochgeschwindigkeitsschnittstellen unterstützen DMA. Der Einkanal-Speichercontroller selbst unterstützt DDR3-1600 mit ECC. Die maximal unterstützte CPU-Kapazität des RAM beträgt 8 GB. Es gibt noch eine weitere Nuance: Der Speichercontroller verfügt über einen Datenbus mit 32 Bit und 8 Bit ECC und unterstützt die Arbeit mit Speicherchips mit einer Breite von 8 bis 32 Bit. Für fertige Produkte mit bereits gelöteten geeigneten Modulen stellt dies keine Probleme dar, aber die Karte sieht nur die Hälfte des deklarierten Volumens mit den herkömmlichen SO-DIMMs, da sie normalerweise mit einer 64-Bit-Schnittstelle nach außen „schauen“. Und die Geschwindigkeit wird offensichtlich niedriger sein - bis zu 6,4 GB / s.
Die Innenseiten des SoC können
unter diesem Link bewundert werden .
Der SoC benötigt eine Spannung von 0,95 V für die Stromversorgung und der behauptete Stromverbrauch beträgt nicht mehr als 5 Watt. Während der Tests erwärmte sich die CPU mit einem kleinen Plus von Celsius auf 60 Grad. Eine aktive Kühlung ist nicht erforderlich, im geschlossenen Fall ist ein Kühler jedoch nicht überflüssig. Die Frequenz der Kerne wird dynamisch im Bereich von 200 bis 1500 MHz angepasst, dies erfordert jedoch Betriebssystemunterstützung. Bisher kann die Frequenz im aktuellen Debian-Build beim Systemstart eingestellt werden. In jedem Fall kann während des Niedriglastbetriebs ein Kern automatisch heruntergefahren werden. Preis bei 65 USD Baikal-T1 wird bei TSMC 28-nm-Fabrik hergestellt.
CoremarkGehen wir nun direkt zu den Benchmarks. Der erste in der Warteschlange - CoreMark - ist ein spezialisierter Benchmark, mit dem die Leistung von Prozessoren und SoC für eingebettete Systeme bewertet wird. Um es klar zu sagen: Mit der Ankündigung eines neuen CoreMark-Datensatzes begann Imagination Technologies, die Geschichte über die Vorteile des MIPS P5600 Warrior-Kerns zu erzählen. Die Wahrheit ist, dass es zu dieser Zeit ein einzelner FPGA-Simulationskern war, der mit 20 MHz lief. Dann ging es um den Rekord im Megahertz-CoreMark-Wert pro Kern: 5,61, aber in Wirklichkeit lohnt es sich, mit dem Wert von etwa 5 zu rechnen. Der Kernanbieter wies sogar auf die höhere Effizienz des P5600 im Vergleich zu den Desktop-Intel-CPUs hin . Formal ist Baikal-T1 führend in Bezug auf Megahertz und Megahertz pro Kern. In der Praxis verwendet der Anbieter umfangreiche Methoden, um die absolute Leistung zu erzielen und die Frequenzen und die Anzahl der Kerne zu erhöhen.

Leider wird die CoreMark-Ergebnisbasis nicht sehr sorgfältig ausgefüllt, sodass wir manuell Tests für Dual-Core-Chips mit Frequenzeigenschaften auswählen mussten, die denen von Baikal-T1 nahe kommen, und auch einen expliziten Hinweis darauf, dass für den Test zwei Streams verwendet wurden. Zum Vergleich haben wir absichtlich eine Vierkernprobe aufgenommen. Im Allgemeinen kann man Benchmark-Ergebnisse nach mehreren Kriterien einstufen. Es werden jedoch sofort viele Nuancen erzeugt: Erstens werden ARM- und MIPS-IP-Cores an Drittunternehmen lizenziert, sodass die Implementierung des gleichen Designs erheblich variieren kann. Zweitens hängt vieles von der Optimierung des Software-Codes, seiner Builds und seiner Laufzeit ab.
Für unseren Basistest haben wir GCC 6.3 mit den folgenden Optionen verwendet: -O3 -DMULTITHREAD = 2 -DUSE_PTHREAD -funroll-all-Schleifen -fgcse-sm - fgcse-las-finline-limit = 1000 -mhard-float -mtune = p5600 . Zu den
Tests des Anbieters gehörte auch die kommerzielle Umgebung von Sourcery CodeBench. Im Folgenden werden in den Tabellen die folgenden Bezeichnungen akzeptiert: „offizieller Test“ - für die auf der Website des Anbieters veröffentlichten Ergebnisse; "Precomp" - zum Ausführen von binären Benchmark-Dateien, die vom CPU-Hersteller bereitgestellt werden; "W / opt." - unsere eigenen Builds aus dem Open Source Code mit den angegebenen Schlüsseln; "Opt." - Cross-Compilation mit SDK und kommerziellen Dienstprogrammen durch die "Rezepte" des Anbieters. Durch manuelle Optimierung kann eine bessere Leistung erzielt werden, was in der Ergebnistabelle sehr deutlich sichtbar ist. Wir müssen jedoch nicht die Schlüssel sortieren und in den Code eintauchen, wohingegen Baikal-T1-Softwareentwickler sich definitiv regelmäßig damit befassen müssen.
Klassische BenchmarksAus
demselben Dokument können die Ergebnisse der klassischen Benchmarks der "alten Schule" ausgewählt werden. Der Stream-Test für die Speicherbandbreite wurde für einen Thread mit den folgenden Schlüsseln kompiliert: -mtune = p5600 -O2 -funroll-all-loops. Das Ergebnis macht etwa die Hälfte der theoretischen RAM-Geschwindigkeit aus.

Alles, was oben über CoreMark gesagt wurde, gilt für Dhrystone2 (das sich mit Integer-Computing befasst), das in der Basis mit einem Minimum an Schlüsseln kompiliert wurde: -O3 -funroll-all-loops -mtune = p5600. Leider ist wie in den obigen Beispielen die Messbasis kein Beispiel für Genauigkeit. Zum Vergleich wurden einige Ergebnisse für 32-Bit-Berechnungen mit expliziten Hinweisen auf Optimierungen herangezogen. Leider veröffentlichen sie keine spezifischen CPU-Modelle oder zumindest Generationen. Darüber hinaus wird die Angelegenheit durch das Vorhandensein von TurboBoost oder einer ähnlichen kurzfristigen (und dieser Test ist nur ein kurzer) Erhöhung der Grundfrequenz des Prozessors erschwert, wodurch das Gesamtbild geschmiert wird. Auch hier wiederholt sich die Situation im Test mit CoreMark - in Bezug auf Megahertz ist die Leistung des P5600 nicht schlecht.

Andere moderne CPUs erhöhen jedoch die Leistung, indem sie entweder die Frequenz erhöhen, 64-Bit-Befehle unterstützen oder gleichzeitig die Anzahl der Kerne erhöhen. Die Whetstone-Ergebnisse sind größtenteils gleich, nur der Unterschied zwischen der Zunahme der Flüsse und der Verwendung von Vektoranweisungen ist noch auffälliger. Oh ja, um all dieses Zeug zu erstellen, mussten wir den Code leicht anpassen, indem wir nicht wesentliche Aufrufe der x86-Assembly- und x86-Extensionsprüfungen entfernten, die nur für die CPU-Identifizierung benötigt werden.

Für eine schnelle Überprüfung der Gigabit-Ethernet-Adapter verwendeten wir das Dienstprogramm iperf 3.1.3, das zeigte, dass für Einwegverbindungen die Geschwindigkeit die erforderlichen 940 Mbit / s beträgt, im Duplex-Modus jedoch leider 1,2 Gbit / s. Bei der Erklärung dieser Tatsache wird darauf hingewiesen, dass eine kleine Abstimmung auf Softwareebene erforderlich ist, um die volle Leistung zu erzielen.
Phoronix Test SuiteWir wissen, dass diese Idee nach Wahnsinn riecht, da PTS (https://www.phoronix-test-suite.com/) im Allgemeinen nicht für solche Systeme entwickelt wurde. Der Aufbau findet direkt auf der Testmaschine statt, so dass dies im Fall von Baikal-T1 nur unerträglich lang ist, ebenso wie die Dauer der meisten Tests. Wir haben einige Tests ausgeschlossen, die von der Suite ausgeschlossen wurden: solche, die nicht kompiliert werden konnten oder selbst auf „erwachsenen“ PCs lange Zeit unanständig durchgeführt wurden. Das erste Problem kann theoretisch manuell gelöst werden, indem die Build-Parameter angepasst werden. Aber auch hier hatten wir keine solche Aufgabe und so oder so ist es unwahrscheinlich, dass die Testergebnisse die maximal möglichen Werte erreichen.

Alle Testergebnisse sind unter diesem
Link verfügbar. Genau genommen sind all diese eher eine Reserve für die Zukunft, da wir im Moment nichts zu vergleichen haben. Später werden wir sehen können, wie viel besser (oder nicht) die Ergebnisse nach der Korrektur des Builds und der Optimierung werden. Für Neugierige kann man nur einige zufällig zufällige Benchmark-Konfigurationen der chinesischen Prozessoren Loongson Godson 3A3000 erwähnen (4 Kerne bei 1,5 Hz, L2-Cache 1 MB, L3-Cache 8 MB, 28 nm, 30 W). Beide CPUs ähneln sich in neuen Architektur- und Softwareoptimierungsproblemen für diese Architektur. Bisher haben die Chinesen in absoluten Zahlen einen großen Vorsprung, aber in Bezug auf Kern, MHz und Verbrauch sind die Ergebnisse etwas weniger eindeutig.

Fazit
Baikal-T1 ist als modernes Produkt bemerkenswert, das die russischen Entwickler von einem relativ kleinen Team innerhalb einer branchenüblichen Zeit implementieren konnten. Es ist preiswert (im Vergleich zu anderen russischen Prozessoren) und auf dem Markt erhältlich. Aber sein Erfolg (oder Misserfolg) kann wirklich erst nach ein oder zwei Jahren bewertet werden - alles hängt davon ab, wer und in welchen Mengen diesen SoC in ihren Produkten verwenden wird. Derzeit werden nur einige Endprodukte öffentlich angekündigt - https://baik.al/sdelano. All dies sind typische Beispiele für die Anwendungsbereiche von Baikal-T1. Wir würden auch gerne mehr von den NAS / SAN-, IoT- und SDR-Lösungen sehen. Es geht jedoch nicht mehr um Hardware. Die CPU selbst ist wirklich gut, insbesondere wenn die relative und nicht die absolute Leistung bewertet wird. Es gibt jedoch immer noch viele Softwareprobleme und Rauheiten. Speziell über das BFK3.1-Board gesprochen, hat es eine ziemlich schwache Dokumentation. Weltweit lautet die Frage: Wer wird die Software für diese Architektur bearbeiten? Wer wird die Tools entwickeln, die diesen Prozess so einfach wie möglich machen? Wird es eine ausreichend starke Community von Softwareentwicklern geben? Beispielsweise wurde die in der CPU-Beschreibung erwähnte Unterstützung für Hardwarevirtualisierung erst im Sommer letzten Jahres mit der Veröffentlichung des Linux-Kernels 4.12 veröffentlicht. Und im Allgemeinen fragen wir uns, was neben der MIPS-Architektur passieren wird. Vor fünf Jahren war die Wahl dieser speziellen Architektur für neue Produkte sehr vernünftig. Und jetzt? Es ist die Frage ...