Verwenden von Computersimulatoren. Morgens weich, abends bügeln

Nachdem wir hier und hier herausgefunden haben, was Computersimulatoren sind und was sie sind, ist es Zeit, darüber zu sprechen, wie sie verwendet werden. Und ich beginne mit dem vielleicht interessantesten Anwendungsbereich - ich werde darüber sprechen, wie professionelle Programmierer Simulatoren in der Softwareentwicklung verwenden, um Software für Hardware zu schreiben und zu debuggen, die es noch nicht einmal gibt.



Bild



Es geht darum, Modelle der nicht einfachsten Geräte zu verwenden, wie beispielsweise SoC (System on Chip) oder Leiterplatten mit vielen integrierten Geräten an Bord. Bei der Entwicklung dieser Geräte selbst können zwei Stufen unterschieden werden. Die Hardware wird zuerst entwickelt. Dies ist ein langsamer Prozess - es kann ein Jahr oder länger dauern.



Nachdem die erste Revision des physischen Geräts angezeigt und grundlegende Überprüfungen durchgeführt wurden, wird das Gerät an die Softwareentwickler übertragen. Ab diesem Moment beginnt die zweite Phase - die Entwicklung von Software für das Gerät. Dies können Firmware, BIOS, BSP / CSP (Board and CPU Support Package) für verschiedene Betriebssysteme sowie Treiber sein.



Bild

Übrigens werden bei der Entwicklung von Chips, die oft als "Silizium" bezeichnet werden, diese Phasen als "Vorsilizium" und "Nachsilizium" oder einfach als "Silikon" bezeichnet.



Theoretisch ist Softwareentwicklung möglich, bevor ein physisches Gerät erscheint. In der Praxis tun dies jedoch so wenige. Die Entwicklung ohne die Möglichkeit von Zwischenstarts und Debugging, und genau dafür ist das Gerät erforderlich, ist eine sehr undankbare Aufgabe. Ich habe nur wenige solcher Masochisten getroffen. Jeder wartet auf "Hardware", aber es wird, wie ich oben geschrieben habe, erst in einem Jahr erscheinen.



Außerdem gibt es ein weiteres Problem mit der Hardware. Die erste Überarbeitung wird in limitierter Auflage herausgegeben und Stück für Stück verteilt. Einfach gesagt, es gibt nicht genug Boards und Chips für alle. Es gibt Warteschlangen, Konflikte, es kommt zum Angriff. Und wenn Sie versehentlich ein Gerät gebrannt haben, was sehr einfach ist, wird die gesamte Entwicklung gestoppt, bis ein anderes Gerät gefunden wird. Oft wird es nicht gefunden, es ist notwendig, ein neues zu produzieren und dann auf die Lieferung zu warten. Dies verlangsamt den Prozess erheblich.



Und dann helfen Simulatoren Softwareentwicklern!



Die Erstellung eines virtuellen Gerätemodells beginnt gleichzeitig mit dem Entwurf des physischen Geräts. Da die Erstellung und Veröffentlichung eines Modells jedoch viel einfacher ist, erscheinen die ersten Versionen solcher Modelle herkömmlicherweise nicht in einem Jahr, sondern viel früher. Mit solchen Modellen können Softwareentwickler ihre Aufgaben sofort starten, ohne auf "Hardware" warten zu müssen.



Ja, es wird nicht alle Funktionen geben, aber Programmierer in den ersten Phasen benötigen nicht alle Funktionen. Bis zur Herstellung des Geräts müssen Teams aus Hardwarearchitekten, Modellierern und Softwareentwicklern klare und konsistente Pläne haben, die widerspiegeln, welche spezifischen Funktionen in welcher Phase ausgeführt werden sollten. Bei jeder Iteration und mit jeder Phase wächst das virtuelle Modell mit zusätzlichen Funktionen, die wiederum von Softwareentwicklern verwendet werden, um einen Treiber zu schreiben oder Firmware für diese bestimmte Funktionalität zu erstellen.



Bild

Bei diesem Ansatz verwenden Modell- und Softwareentwickler gemeinsame Spezifikationen. Indem sie Software auf einem Modell ausführen, überprüfen sie im Wesentlichen die Arbeit des anderen.



Ein zusätzliches Plus ist die Validierung der "Hardware", obwohl die Hardware selbst noch nicht einmal vorhanden ist. Es klingt auf den ersten Blick überraschend, aber hier geht es um Architekturfehler im Design des Geräts, von denen einige beim Ausführen von Software auf einem Modell erkannt werden können. Und das ist sehr cool, da es möglich ist, diese Fehler in der Hardware zu beheben, bevor sie veröffentlicht wird. Andernfalls würden diese Fehler dazu führen, dass die nächsten Revisionen erneut veröffentlicht werden müssen, und dies ist ein ziemlich teures Vergnügen.



Wir hatten einen Fall, in dem 10 Blöcke zur Verarbeitung des eingehenden Datenstroms in einem komplexen Gerät implementiert waren und die Steuer- und Verwaltungsregister es uns ermöglichten, nur mit der Hälfte davon zu arbeiten. Dies wurde in der vorherigen Version des Geräts implementiert, und die Architekten haben einfach vergessen, diesen Teil zu erweitern. Als wir das Modell erstellten und das andere Team den Treiber schrieb und ausführte, stellte sich schnell heraus, dass nicht alle erweiterten Funktionen verfügbar waren. Die Architektur und Spezifikationen wurden rechtzeitig vor der Erstellung des physischen Prototyps des Geräts korrigiert.



Große Gerätehersteller können ein ganzes Ökosystem unterstützen, das auf ihren Produkten basiert. Dieses Ökosystem umfasst viele andere Unternehmen, einschließlich solcher, die Software für diese Geräte herstellen. Dies können beispielsweise BIOS-Hersteller sein, die sogenannten IBV (Independent BIOS Vendors), von denen die bekanntesten AMI, Insyde, Phoenix sind. Solche Unternehmen erhalten auch Modelle vom Hardwarehersteller und beginnen mit der Entwicklung, bevor das physische Gerät erscheint. Für Intel-Plattformen wird beispielsweise der Simics-Simulator verwendet. Weitere Informationen finden Sie im Artikel Ökosystempartner verschieben sich mit Intel nach links , um die Markteinführungszeit zu verkürzen .



Das Erstellen von Modellen erfordert natürlich zusätzliche Kosten. Die Höhe der Kosten hängt natürlich von der Art der Modelle ab (funktional, pro Zyklus usw.), aber im Allgemeinen kann davon ausgegangen werden, dass die Kosten für die Erstellung eines Modells ungefähr den Kosten für das Schreiben von Software für das Gerät entsprechen. Nicht alle Unternehmen sind bereit, diesen Preis für eine frühere Version zu zahlen, weshalb dieser Ansatz in großen Unternehmen üblich ist. Dafür verfügen sie über ausreichende Budgets, und eine frühere Markteinführung eines Produkts erhöht ihr Einkommen erheblich. Obwohl in letzter Zeit ein Trend zu einer breiteren Verwendung von Simulatoren für die Softwareentwicklung und in kleinen Unternehmen zu beobachten ist.



Um die Kosten zu senken, implementiert das Modell häufig nicht alle möglichen Funktionen, sondern nur das Minimum, das für bestimmte Szenarien der Verwendung des Geräts erforderlich ist. Wenn beispielsweise nicht geplant ist, dass ein Netzwerkgerät in VLANs verwendet wird, sondern nur die Firmware aktualisiert und über TFTP heruntergeladen wird, muss keine Logik mit VLAN-Tags implementiert werden, aber die Funktionalität für Szenarien des Gerätestarts über das Netzwerk und Firmware-Updates muss vollständig implementiert werden Volumen.



Was ist das Endergebnis?



Wenn wir davon ausgehen, dass die Entwicklungszeit von Hardware und Software ungefähr gleich ist (siehe Abbildung oben), kann die Verwendung von Modellen die Zeit bis zur Vermarktung eines Produkts erheblich verkürzen (sogenanntes TTM - Time To Market). , da die Entwicklung von "Hardware" und Software parallel und nicht sequentiell erfolgt. Hierfür wird häufig der Begriff Shift Left verwendet, der aus dem Bereich des Testens stammt und das Testen so früh wie möglich bedeutete. Der gleiche Begriff gilt für die Softwareentwicklung, die sich in der Timeline nach links zu verschieben scheint, wenn sie auf dem Simulator ausgeführt wird.



Bis zur ersten Überarbeitung des Geräts muss nur noch die Funktionalität der Software auf realer Hardware überprüft werden. Im Idealfall sollten Fehler und Korrekturen nicht signifikant sein, und diese Phase führt nicht zu großen Verzögerungen, da der Code bereits für das Modell geschrieben und debuggt wurde.



Dieser Ansatz ist nicht "kostenlos", sondern erfordert ein zusätzliches Budget und ein Team von Programmierern. Sie müssen also genau wissen, wie viel sich diese Kosten in dem einen oder anderen Fall auszahlen.



Dies ist nicht der einzige Anwendungsfall für Simulatoren. In den folgenden Artikeln werde ich über Architekturforschung und die Schaffung komplexer Umgebungen sprechen. Wechsle nicht.



All Articles