Random thoughts.
Feb. 11th, 2008 09:41 amWriting yet another emulator of one old system on top of one of modern VMs running on top of emulator of embedded processor. The speed of an emulator is similar to ARM5 200MHz.
Emulated machine:
Freq=3.5MHz, CPI=~7 thus need to process 500k instructions/second.
Platform only allows processing 300k switches per second using jump table optimization, necessary overhead (actually executing instructions, updating screen etc) makes it down to 50k. After careful optimizations I made it to 200k. Further optimization is pointless, I need to rework the algorithm and/or architecture.
Binary translation won't work because platform does not allow self modifying code.
HLE won't work as an average application does not use platform API from ROM very ofter or in tight loops.
I devote few hours on weekends to this project, so will publish live performance updates here.
Emulated machine:
Freq=3.5MHz, CPI=~7 thus need to process 500k instructions/second.
Platform only allows processing 300k switches per second using jump table optimization, necessary overhead (actually executing instructions, updating screen etc) makes it down to 50k. After careful optimizations I made it to 200k. Further optimization is pointless, I need to rework the algorithm and/or architecture.
Binary translation won't work because platform does not allow self modifying code.
HLE won't work as an average application does not use platform API from ROM very ofter or in tight loops.
I devote few hours on weekends to this project, so will publish live performance updates here.