Technisch sind diese Multicore-Prozessoren heute keine Herausforderung mehr; die Problematik liegt vielmehr im System-Design und in der Software-Entwicklung. Es existiert eine beachtliche Code-Basis an sequenziellem Code und eine genauso große Manpower, um diesen Code zu erstellen und zu warten. Die allermeisten Software-Designer schreiben sequenziellen Code und denken sequenziell. Benutzerfreundliche Software-Entwicklungswerkzeuge für parallelen Code gibt es bisher nur ansatzweise. Darüber hinaus ergeben sich Skalierungsprobleme, denn nachdem der Code auf ein Multicore-System portiert wurde, ist er nicht mehr ohne weiteres auf einem Single-Core-System lauffähig. Das wird aber in aller Regel angestrebt, denn Niedrigpreisvarianten vertragen sich nicht gut mit einem Multicore-Baustein.
Um diese Skalierung vom Niedrigpreis- bis zum Premiumsegment zu erleichtern, hat Renesas in der RH850G3M-Architektur Hardware-unterstützte und echte Hardware-Virtualisierung implementiert. Hardware-unterstützte Virtualisierung verfügt über eine zusätzliche Privilegierungsebene, die vom sogenannten Hypervisor genutzt wird. Der Hypervisor ist eine Betriebs-Software, die einzelne Threads weitgehend voneinander kapselt, ihnen die notwendigen Betriebsmittel zuweist und Betriebsgrenzen setzt.
Bei der Hardware-Virtualisierung handelt es sich um eine Single-Core-CPU, bei der aber die Registersätze mehrfach vorhanden sind. Mit dem Takt der CPU werden diese Registersätze zyklisch per Hardware an die Ausführungseinheit angekoppelt. So werden die einzelnen Threads jeweils in ihrem eigenen Hardware-Kontext abgearbeitet, ohne dass ein Software-Scheduler notwendig wäre. Eine Scheduling-Tabelle bestimmt dabei, welcher Thread die Ausführungseinheit überhaupt und, wenn ja, wie lange benutzen darf. Auch wenn es bei dieser Architektur nur eine einzige Ausführungseinheit gibt, sieht es doch vom Standpunkt der Software so aus, als hätte jeder Thread seine eigene CPU. Somit stellt die Virtualisierung die Skalierung eines Multicore-Systems nach unten sicher.
Falls ein Hardware-Thread einem fatalen Fehler zum Opfer fällt, hat das keine Auswirkung auf den Rest des Systems. Alle anderen Threads laufen unbeeinflusst weiter. Der betroffene Thread kann nicht auf einen Speicher zugreifen, der nicht explizit für ihn freigegeben ist, und selbst das Überschreiben all seiner eigenen Registerinhalte bleibt auf diesen einen Thread beschränkt. Es ist die Aufgabe des Hypervisors, diesen Fehler zu erkennen und die notwendigen Maßnahmen zu ergreifen.
Die Virtualisierung trägt erheblich zur Erhaltung der Systemintegrität bei. Virtualisierung entkoppelt die einzelnen Threads voneinander, so dass die Fehlfunktion eines Threads keine Auswirkungen auf das restliche System hat.