Um den Anforderungen heutiger Systeme hinsichtlich der Architektur und Implementierung gerecht zu werden, sind bei der Entwicklung die folgenden wichtigsten Punkte zu berücksichtigen:
Schriftliche Spezifikationen umfassen Tausende von Seiten, und es dauert Monate, diese zu schreiben. Die hierzu notwendige Methode ist langwierig, ungenau und fehleranfällig. Außerdem sind schriftliche Spezifikationsdokumente unzureichend, wenn es darum geht, die Anforderungen für komplexe Entwicklungen mit kurzen Designzyklen eindeutig zu formulieren und zu kommunizieren.
Eine Lösung ist die Verwendung eines Virtuellen Systemprototypen (VSP), also eines funktions- und zyklengenauen Softwaremodells des Systems. Um vernünftiges Arbeiten mit einem VSP zu ermöglichen, muss die Simulationsgeschwindigkeit des gesamten Systems im MIPS-Bereich liegen. Das hat dann aber zur Folge, dass die einzelnen Komponenten, aus denen das Simulationsmodell besteht, auch schnell sein müssen. Das trifft besonders auf die im System verwendeten Prozessoren oder „Cores“ zu, die zyklengenau und schnell simulieren müssen. Eine VSP-basierte Simulation mit einem einzelnen Prozessor jedenfalls kann Simulationsgeschwindigkeiten zwischen 20 und 200 MIPS erreichen. Systeme mit mehreren Prozessoren, die gemeinsame Speicherstrukturen verwenden, und mehreren Busebenen indes können – je nach Konfiguration – mit Durchsatzraten von10 bis 100 MIPS pro Prozessor simuliert werden. Es ist selbstredend, dass es von Vorteil ist, wenn man nur ein (Prozessor-)Modell benötigt, das sowohl schnell als auch zyklengenau ist. Damit erspart man sich das lästige Verwalten vieler Modelle mit unterschiedlichen Genauigkeiten, und man muss die Modelle im VSP nicht austauschen. Zudem erspart man sich den Aufwand, die funktionale Korrektheit der Modelle auf den unterschiedlichen Abstraktionsebenen zu überprüfen.
Das eben beschriebene Maß an Genauigkeit und Performance bedeutet, dass der Entwickler mit Hilfe von VSPs sehr schnell Architekturentscheidungen treffen kann. Wichtig dabei ist, dass sich die Systeme taktgenau verhalten und schnell simulieren, um die Systemarchitektur mit realen Datenmengen und Softwarelasten – z.B. Betriebssystemen, Applikationen etc. – zu „füttern“. Nur dann kann der Systemarchitekt auch die richtige Entscheidung treffen und die Hard- und Software schon von Anfang an aufeinander abstimmen.