Originally posted by Linuxxx
View Post
Originally posted by Quackdoc
View Post
Please note qemu and box86 are still using dynamic translation as in at runtime. If you look at Microsoft x86 on arm it uses a mix of static translation and dynamic translation with its caching that able to lift to 50% performance at worst to having a second run at worst performance at around 80% of native again.
The reality is that special hardware instructions can help but they are not required to get somewhere near decent performance here. So valve does not need to move into fabrication here because default instruction set of arm is workable for this and same with risc-v really. Of course to make it profitable for valve we have to see more arm/risc-v chips being made that have quite high performance so a 20% to 50% performance lose running dynamic emulation is not a problem.
Some parties are starting to work on static recompliers for x86 to arm or risc-v these give good as native performance but you can guess anything with copy protection or anti-cheat absolutely hates this because the converted binaries no longer validate what makes this route mostly not useful to valve it is useful for those with internal old custom enterprise applications.
Its really simple to miss that multi parties have done the Cisc-> Risc emulation over time how to-do this and get decent results has become more well known and used. Please note most of the improvement methods turn out to be generic like only emulate the application not the complete system, use native platform libraries and cache dynamic translation as these help for Cisc->Risc, Risc->Cisc and Cisc->Cisc but these also turn out to be quite a pain to implement. Early on there was though to be major problem causing special issues for Cisc->Risc but its turn out not to be the case major issues are fairly much the same every time you have to deal with a non native instruction set. Yes there is some issues with Cisc-> some other instruction set due to the dynamic length of instructions that common in Cisc instruction sets but that not as big of problem as it first appeared and is quite well solved these days. Hooking between binary translated and host native there is quite a few things that can be screwed up there this is one of the hardest problems particularly when there is a bit difference like 32 bit to 64 bit. So the major problems with getting decent performance with emulation was not where they first appeared. Supporting old x86 windows binaries does lead to the 32 bit program on the 64 bit host with arm processors going forwards. Yes 32 bit program on 64 bit host only os is a problem you have with mac os and some linux distributions on x86_64 because no 32 bit runtime is provided so not a unique to Cisc-Risc problem.
Comment