Your cart is currently empty!
Arm realtime nagebootst op X86
Fujitsu Laboratories heeft op de Date-conferentie een processoremulator onthuld die tegelijkertijd snel en cyclus-accuraat is, een combinatie die moeilijk ligt. Met de emulator kunnen Arm-processoren op daadwerkelijke snelheid nagebootst worden op X86-CPU‘s. De vinding komt van pas bij het ontwikkelen van embedded systemen, waar vaak zeer trage cyclus-accurate simulatoren worden ingezet om het timing-gedrag van de software te finetunen zonder dat de target-processor beschikbaar is.
Het werk is gebaseerd op Qemu, een opensource processoremulator die code voor een brede reeks doelprocessoren met redelijke prestaties op een eveneens brede reeks doelprocessoren kan uitvoeren. De instructies voor de host-processor worden tijdens het draaien just-in-time vertaald naar instructies voor de doelprocessor. Doordat dat steeds per blok gaat en de vertaalde blokken in een cache worden opgeslagen, hoeven er relatief weinig vertaalslagen gemaakt te worden en bereikt de emulator een acceptabele snelheid.
Met een dergelijke JIT-aanpak komen de snelheid en de timing van onderdelen ten opzichte van elkaar echter niet overeen met het runtime gedrag op een daadwerkelijke processor. Dat is een belangrijke hobbel bij de ontwikkeling van embedded software. De Fujitsu-ingenieurs voegen echter componenten toe aan de emulator om het timing-gedrag te benaderen. De originele software wordt van te voren statisch geanalyseerd om het timing-gedrag te bepalen van de machinecode. Tijdens de uitvoering draait een proces mee om de nodige tijdvertragingen te injecteren in de uitvoer (de X86-processor is veel sneller dan de geëmuleerde Arm-CPU). Een extra proces schaaft deze timing bij als de voorspelling er naast zat.