12-21-2016 08:27 AM
53 123
tools
  1. a5cent's Avatar
    Reading, decoding and translating of x86 into ARM is likely to need the use of many CPU registers to make it within reasonable performance levels. ARM64 bit has more registers at hand, therefore one of the defining characteristics of support of x86 emulation is a 64bit processor.
    Okay, I think I see where our misunderstanding stems from. In a nutshell, you think the critical factor, in terms of emulating x86 on ARM, are the number of registers a CPU has. In that context you repeatedly referred to 64 bit CPUs, when what you actually meant was the ARMv8 ISA, particularly the part that specifies the requirement for more registers. Having more registers and having wider registers are just two different things that aren't necessarily related. That's what threw me off.

    ARM could theoretically also design an ARMv7.5 ISA which supports more registers than ARMv7, but remains a 32 bit architecture. That would likely also provide everything required to emulate x86 on ARM in the way you envision it. We will no doubt see many revisions of the ARMv8 architecture, some of which will also specify the requirement for more registers, long before we see a shift to 128 bit CPU architectures. That is a more realistic example of how the number of registers specified by an ISA can change without bi'tedness of the CPU architecture being affected. You munched all that together which made it hard to understand what you were getting at.

    Anyway, I still completely disagree with your assessment. We could start arguing technical details, but I don't think that is even necessary. If the number of registers was the primary factor, then MS' x86 emulation on ARM would work on any newer ARM CPU! All ARMv8 compliant CPUs must have the exact same number of registers! If that number was the primary factor, then there would be absolutely no reason to limit this emulation capability to very specific ARMv8 chips (specifically Qualcomm Snapdragons), but MS has made it very clear that it is limited in that way! I think that is already almost as good as proof (not 100%, but close) that this requires at least some hardware support beyond what is specified by ARMv8.

    I suspect WOW64 is simply the software interface that allows us to exploit those additional hardware capabilities. This last part is my own personal speculation. Everything prior to that is not speculative.
    Last edited by a5cent; 12-21-2016 at 07:11 AM.
    12-21-2016 05:58 AM
  2. EuroKnuter's Avatar
    My hat is off to both a5cent and Kogling for having this discussion in front of me (us). Often I feel like I want my 5 minutes back when reading through threads - not this time. I have learned more / been given food for thought in this conversation than most other threads I've read in the last 2 weeks combined. *bow*

    Again, my thanks to you both for well thought out discussion in a civil and pleasant format. Kudos!
    12-21-2016 08:17 AM
  3. Kogling's Avatar
    Okay, I think I see where our misunderstanding stems from. In a nutshell, you think the critical factor, in terms of emulating x86 on ARM, are the number of registers a CPU has
    Registers are just a simple example, but they are certainly very useful for such a task.

    ARM could theoretically also design an ARMv7.5 ISA which supports more registers
    Most definitely, which is what I also said. But generally manufacturers are down the road of 64bits when they have a large amount of registers. By the time you need x registers, you probably need 4+GB memory so.. yeah.

    . If the number of registers was the primary factor, then MS' x86 emulation on ARM would work on any newer ARM CPU
    In theory you can emulate generally anything, but performance can take a rather big hit when done via software. Registers are great because memory hits can be massive.

    They would also be reading data but converting it to code, so there's likely some big memory related costs here. Not sure how ARM is on that point. MS do this with C# so am sure they are quite capable at doing realistic emulation on an instruction set.

    But no one else is offering x86 support on ARM, and they are working in partnership with Qualcomm /Snapdragon to get PCs going with ARM chips, not that other ARMs couldn't?. That's nothing more than a partnership in terms of supply, not an alteration of die design. Maybe Microsoft got some say in how they wanted certain things, or certain performance targets to make emulation more feasible, but I'm not inclined to believe there's a dedicated x86 bit of transistor magic going on in there.

    They are not inclined to make it work for any other ARM manufacturer chip even if the capability is there. Supporting hardware for every scenario doesn't seem to be Microsofts intentions with the "mobile" market. Take continuum. If software runs too slowly for your PC, you either dont use it, buy a better programmed one or upgrade right?

    But with MS, they are specifically denying "mobile software" they deem as not "running at an acceptable performance level". I dont see how this is any different to them refusing to enable continuum on older phones, or putting W10 on older devices like the Nokia 2520.

    Its the same thing with IoT. Windows run on raspberry pi, yet we have the edison from intel that runs x86 and there's no window IoT build for it (last time i checked) and that's just because intel just need to make the drivers for it and.. wont.

    Snapdragon does not sell exclusively to Microsoft, the 820 and no doubt 835 will be on phones for android too, and I don't think their clients with 80% market share will be too happy that a 2% market share company is getting exclusive hardware feature access (phone market anyway, which I know isn't exactly the same as the ARM pc side of things.)

    I also just don't see what the problem of software emulation is. We've only just recently started seeing affordable, mainstream devices with decent speeds, screen sizes, external display support and high RAM. It really wouldn't be that great of an investment to make x86 apps run on a toaster. Now is not the case.

    edit: and by all accounts x86 apps on ARM is already available for linux:
    https://eltechs.com/product/exagear-desktop/
    Last edited by Kogling; 12-21-2016 at 11:04 AM.
    12-21-2016 08:27 AM
53 123

Similar Threads

  1. when i click on link in browser pop up spyware comes up. How can i fix this?
    By Windows Central Question in forum Ask a Question
    Replies: 4
    Last Post: 12-12-2016, 12:05 AM
  2. Replies: 1
    Last Post: 12-11-2016, 09:38 AM
  3. Why Can't I Move Groove Music Onto A SD Card?
    By Windows Central Question in forum Ask a Question
    Replies: 1
    Last Post: 12-10-2016, 11:33 PM
  4. Can't Enable Cortana on Band 2 Running Insider Fast Ring on 950XL
    By RicketyTiger in forum Microsoft Band & Band 2
    Replies: 1
    Last Post: 12-10-2016, 11:59 AM
  5. Can not answer calls in my 2013 Taurus anymore using Synch
    By Windows Central Question in forum Ask a Question
    Replies: 0
    Last Post: 12-10-2016, 09:59 AM
LINK TO POST COPIED TO CLIPBOARD