Microsoft Finally Documents the Limitations of Windows 10 on ARM (thurrott.com) 121
For over a year we've been treated to the fantasy that Windows 10 on ARM was the same as Windows 10 on x86. But it's a bit more nuanced than that. Paul Thurrott: 64-bit apps will not work. Yes, Windows 10 on ARM can run Windows desktop applications. But it can only run 32-bit (x86) desktop applications, not 64-bit (x64) applications. (The documentation doesn't note this, but support for x64 apps is planned for a future release.)
Certain classes of apps will not run. Utilities that modify the Windows user interface -- like shell extensions, input method editors (IMEs), assistive technologies, and cloud storage apps -- will not work in Windows 10 on ARM.
It cannot use x86 drivers. While Windows 10 on ARM can run x86 Windows applications, it cannot utilize x86 drivers. Instead, it will require native ARM64 drivers instead. This means that hardware support will be much more limited than is the case with mainstream Windows 10 versions. In other words, it will likely work much like Windows 10 S does today.
No Hyper-V.
Older games and graphics apps may not work. Windows 10 on ARM supports DirectX 9, DirectX 10, DirectX 11, and DirectX 12, but apps/games that target older versions will not work. Apps that require hardware-accelerated OpenGL will also not work.
Certain classes of apps will not run. Utilities that modify the Windows user interface -- like shell extensions, input method editors (IMEs), assistive technologies, and cloud storage apps -- will not work in Windows 10 on ARM.
It cannot use x86 drivers. While Windows 10 on ARM can run x86 Windows applications, it cannot utilize x86 drivers. Instead, it will require native ARM64 drivers instead. This means that hardware support will be much more limited than is the case with mainstream Windows 10 versions. In other words, it will likely work much like Windows 10 S does today.
No Hyper-V.
Older games and graphics apps may not work. Windows 10 on ARM supports DirectX 9, DirectX 10, DirectX 11, and DirectX 12, but apps/games that target older versions will not work. Apps that require hardware-accelerated OpenGL will also not work.
Re: (Score:1, Insightful)
I imagine the inability of third party cloud storage apps is a "flaw" that won't be fixed any time soon. Sorry Dropbox and google Drive, you're out.
Re:To do list (Score:5, Insightful)
I imagine the inability of third party cloud storage apps is a "flaw" that won't be fixed any time soon. Sorry Dropbox and google Drive, you're out.
No, no, no. It's a technical limitation of emulation, not some kind of insidious plan to block out competition.
Windows 10 on ARM supports shell extensions just fine -- the vendors have to recompile their applications is all. Nothing Mac OS developers didn't go through during the PPC -> Intel transition twelve years ago.
Literally anyone who's written shell extensions for Windows Explorer before will already understand the problem: shell extensions are loaded into the same process as Windows Explorer itself. Loading x86 code into a process that's running native ARM code just isn't going to work.... lots of issues that are pretty much impossible to work around, like calling conventions, endianness, memory layout, ASLR implementation.... all sorts of fun things. How would you even get an x86 emulator to pick and choose when to kick in? Based on memory ranges of loaded DLLs? No way -- you don't want that kind of voodoo horseshit going on in your apps, especially Windows Explorer, whose extensibility model is already pretty rickety as it is.
Re:To do list (Score:5, Funny)
Are you sure? They've explicitly mentioned that classes of apps won't work at all, not that they'd need a recompile.
That is just the usual Slashdot shithole editors. selectively quoting, even the article clearly states they just need a recompile.
Re: (Score:2)
Are you sure? They've explicitly mentioned that classes of apps won't work at all, not that they'd need a recompile.
That is just the usual Slashdot shithole editors. selectively quoting, even the article clearly states they just need a recompile.
...or just one in particular... msmash. I guess even slashdot has an agenda these days. You can't escape it in the news.
Re: (Score:2)
Re: (Score:2)
Nothing Mac OS developers didn't go through during the PPC -> Intel transition twelve years ago. [...] How would you even get an x86 emulator to pick and choose when to kick in?
Actually, Apple dealt with this years ago during the 68K/PPC transition. Yes, you could load 68K code into a running PPC application and have it emulate it (mostly because nobody wanted to touch the File Manager which was hand-optimized 68K assembler, as I understand it).
Though the answer to the question was you told it what the code was pointing at (i.e., 68K or PPC).
Re: (Score:3)
Mixed Mode Manager was beautiful in a perverse way. The killer was that classic MacOS was tied to the 68k interrupt model - right up to MacOS 9 they were still dispatching interrupts through the 68k emulator. In early versions of System 7 for PowerPC you couldn't run native PowerPC code at interrupt time at all - anything that could be called from an interrupt handler had to run in the 68k emulator (this limitation was solved relatively quickly).
You had this structure called a Universal Procedure Pointer
Re: (Score:2)
Loading x86 code into a process that's running native ARM code just isn't going to work
I would be shocked if they weren't doing this, because that's how modern high-performance application emulators work: you compile all of the system libraries as native code and insert shims for communicating between them. ARM and x86 are both little endian, so that difficulty goes away. I'd be surprised if struct layouts were different between Windows/ARM and Windows/x86. Calling conventions need translating when you go to and from emulation, but that's trivial.
That said, I expect that most of the thi
Re: (Score:3)
Last time I did ARM they could be driven in either little-endian or big-endian mode based on flags in the AIRCR register.
That's there for a specific customer who wants to keep networking code originally written for big-endian MIPS and never ported to a little-endian machine in existence and other people are strongly discouraged from using it. As I recall, you can disable SETEND in EL0 (so you trap and can detect that the user has done it and switch back on interrupt if they have). This isn't an issue for emulated x86 code, because it will be running in little-endian mode on a machine that is intended to run in little-endian
Re: (Score:2)
We are also talking about light weight convertibles or laptops with long battery life and cellular. When it comes to gaming and virtual machines I'm not surprised it has limited support some of which is hardware dependent.
Re: (Score:2)
I wouldn't say there are any particular unexpected showstoppers in that list.
Hyper-V would need to be replace the underlying hypervisor to support ARM guests. It's not an emulator (?) so would never support running x86 VMs in any case.
OpenGL will only use whatever level MS and Qualcomm have bothered to support in their driver. Given it's an Android smartphone chipset, Open GL ES and Vulkan are likely better supported.
x86-64 would be a nice to have but the idea is to get developers releasing arm64 binaries,
Re: (Score:2)
x86-64 would be a nice to have but the idea is to get developers releasing arm64 binaries, not rely on emulation indefinitely.
I suspect that they're hoping, given the slow adoption of Win64, that anything that's been released as a Win64 app is under active development and so easy to get working on ARM. The emulator is intended for legacy things where no one has the source code (or, at least, the people that do have no incentive to support an ARM build).
Re: (Score:2)
Even if you consider single core applications peak computing power, the benchmarks show that AMD64 isn't more than 20% faster than ARM64.
The real issue are, as always, preexisting closed software ecosystems. An ARM linux box is perfectly viable.
Yawn (Score:1)
'Sounds like a crippled version of Windows (probably some S-like version) on a chip best employed in toasters.
Re: (Score:2, Funny)
crippled version of Windows
Seems redundant.
Re: (Score:2)
this list is referring to ARM, not the Pentium 4 sir.
Re: (Score:1, Troll)
No idea why this was modded into obscurity, because it's right on the money. Who cares about Windows on ARM? Ok, maybe ARM isn't exactly something I'd only relegate to my toaster, but I can't think of a single ARM device I'd want Windows on. We have successfully stuck Microsoft in its own little chroot jail - it has a niche as a necessary evil for the desktop (and by that I mean laptop desktop), but everything else Microsoft has tried to do has failed miserably for the reason that consumers are for the mo
Re: (Score:2)
The issue is the public expectations. The same people that blame linux for not running their <token program>, will blame windows for the same thing.
Somehow, people don't expect their mobile phones be able to do the same as their PCs. The apple phenomenon is seems to suggest that people really don't need their <token programgt;.
Re: Yawn (Score:2)
Pointless (Score:1)
A complicated, overly-limited mess. Another win for Redmond!
Not really (Score:2)
If those are the only limitations, 99,999% of all legacy Windows software will work on ARM.
Re: (Score:2)
The lack of Open GL hurts quite a bit, depending on what you will do.
Re: Not really (Score:2)
Impossible! (Score:3, Insightful)
The ARM port can't run x86 drivers?
Say it isn't so!
That Slashdot has completely hit rock bottom...
Re: (Score:2)
Re: (Score:3)
Re: (Score:2)
Re: (Score:2)
Re:Impossible! (Score:5, Informative)
There is no technical reason, why thou could not just emulate the drivers too.
Suppose you've got some x86 code in running on an ARM in kernel mode. It will expect everything it sees to have the x86 structure alignment. E.g. if it does an mov eax, [ebx+n] and that is translated into LD R0, [R1,#n] then you'd best hope that the structure R1 points to has the exact same thing at offset n in ARM windows that it does on x86 windows.
There are going to be some weird corner cases where that won't be the case, and then you've got kernel mode corruption. Actually if the ARM is running a 64 bit kernel and the driver is x86, that's guaranteed to be the case and you need to thunk all the structures. However I think even if you have x64 code being emulated on ARM64 there are going to weird corner cases where the layout of a kernel mode structure is going to be different.
Another issue is alignment. x86 and x64 code handles misaligned pointers transparently, though occasionally at a enormous performance hit if they span a page boundary. ARM code does not. In user mode that's no problem - you get an alignment fault, the kernel fixes it up and you go on you way, with a performance hit.
However NT kernels are architected so that you can't have page faults when you're running a raised IRQL, because if you're doing that you hold a spinlock. The page fault handler needs to acquire a whole bunch of spinlocks when it fetches a page and allowing to run at a raised IRQL risks a deadlock and a frozen system. So an NT based OS will BSOD with IRQL_NOT_THAN_LESS_OR_EQUAL in this case - what that means is that IRQL is not <= PASSIVE_MODE.
But suppose you have some x86 kernel mode code at a raised IRQL doing an unaligned pointer access. The emulator runs it and it faults. And in NT that fault is instant death. Sure you could hack the kernel so that it first tries to do an alignment fixup. However you've introduced a load of complexity to a design that was pitiless and pure initially - if kernel mode code causes a page fault at raised IRQL then it dies instantly and the solution is for users to track down the company, for the company to track down the developer and for the developer to fix his shitty code.
Actually another option would be for the emulator to check for misalignment and handle it in by avoiding the fault. This would probably work, but there's an overhead you'd need to pay on every pointer access, even the aligned ones, where you'd need to check the low order bits to make sure enough of them were zero to make it aligned before you dereferenced it.
In practice this limitation prevents one from running any game with copy protection.
Copy protection drivers are a bit like anti virus software anyway. What they're doing is grovelling around in undocumented structures and doing rootkit type shenanigans. And the idea that you're going to try to run a copy protection meant for x86 or x64 on a completely different processor architecture is a fool's errand first place. The whole point of them is to try to work out if there's something a bit hinky going on. Nothing is more hinky than running kernel mode code on the wrong CPU architecture with a bunch of hacks that tries to hide the differences and doesn't completely manage it.
Re: (Score:2)
It will expect everything it sees to have the x86 structure alignment
The structure alignment rules for anything that's not a packed structure are likely to be the same for both. You may have some issues with stack frame layouts, but that's a separate issue.
x86 and x64 code handles misaligned pointers transparently, though occasionally at a enormous performance hit if they span a page boundary. ARM code does not
That isn't true for any ARM core released in the last 10 years, possibly the last 15 years.
However NT kernels are architected so that you can't have page faults when you're running a raised IRQL, because if you're doing that you hold a spinlock
That's far more important: you don't want to be trapping out to an emulator in an interrupt context. You also probably don't want to stick the emulator in the kernel in the first place, because that's a nice big attack surface for
Re: (Score:2)
Hmm, I see what you mean about unaligned pointers and ARM. Support was added in ARMv6 and it's still there in ARMv8 AArch64 mode
AArch64
https://www.realworldtech.com/... [realworldtech.com]
ARMv6
http://infocenter.arm.com/help... [arm.com]
Frankly if I were Microsoft and someone suggested adding support for non native kernel mode code I'd say "What an excellent idea. Why not suggest it to Dave Cutler, right now!". And then that would be last you'd see of them.
Re: (Score:2)
The structure alignment rules for anything that's not a packed structure are likely to be the same for both
I found this for Android - long long is aligned to 8 bytes on ARM but 4 bytes on x86
https://software.intel.com/en-... [intel.com]
Microsoft compilers have an option to align. It seems like /Zp8 is the default
https://msdn.microsoft.com/en-... [microsoft.com]
What that means is that anything up to 8 bytes will be naturally aligned
And if you look here it confirms it
https://msdn.microsoft.com/en-... [microsoft.com]
I still think there'd be some corner case where the layout in memory of a structure would be different. Bitfields for example, though Windows us
Re: (Score:2)
Next bombshell will be PowerPC distribution of Debian is not binary-compatible with x86 distribution.
Re: (Score:2)
No Hyper-V? (Score:2)
Well darn. I was hoping to run VirtualBox on it so it could run Windows programs.
Re: (Score:2)
That's nice (Score:1)
But when can I get an ARM-based desktop anyway? I already have a toaster.
Seems fair enough. (Score:2)
Looks like they've put their work in really.
Lack of x64 is an issue, but I do wonder how you'd have any chance of running drivers for a whole different processor in any meaningful way. Even multiple quite old versions of DirectX.
Re: (Score:2)
With MS Office, at least, I believe it’s Microsoft’s guidance even on x86 to use the 32-bit version unless you have a specific need for 64-bit. So it’s not like there’s a functional difference in that use case.
64 Bit Support is Unlikely (Score:4, Interesting)
Re: (Score:1)
uh what? you most definitely can patent an ISA. The only reason that Intel was able to implement AMD64 is they already had a cross-license in place.
Patenting interfaces (Score:2)
Wasn't there a big court case recently when Oracle tried to sue Google over the Java API.
That was copyright. Patents expire after 20 years, so the 64bit issues should be coming to a head real soon. (It is from time of filing, not time of release in a product.)
Re: (Score:2)
You can't patent or copyright an ISA. Most of their patents would cover hardware implementations of various features.
Intel claim patents on SIMD instruction sets and say that those preclude anyone who doesn't have a license executing those instructions even in emulator
https://newsroom.intel.com/edi... [intel.com]
Intel carefully protects its x86 innovations, and we do not widely license others to use them. Over the past 30 years, Intel has vigilantly enforced its intellectual property rights against infringement by third-party microprocessors. One of the earliest examples, was Intel's enforcement of its seminal "Crawford '338 Patent." In the early days of our microprocessor business, Intel needed to enforce its patent rights against various companies including United Microelectronics Corporation, Advanced Micro Devices, Cyrix Corporation, Chips and Technologies, Via Technologies, and, most recently, Transmeta Corporation. Enforcement actions have been unnecessary in recent years because other companies have respected Intel's intellectual property rights.
However, there have been reports that some companies may try to emulate Intel's proprietary x86 ISA without Intel's authorization. Emulation is not a new technology, and Transmeta was notably the last company to claim to have produced a compatible x86 processor using emulation ("code morphing") techniques. Intel enforced patents relating to SIMD instruction set enhancements against Transmeta's x86 implementation even though it used emulation. In any event, Transmeta was not commercially successful, and it exited the microprocessor business 10 years ago.
Only time will tell if new attempts to emulate Intel's x86 ISA will meet a different fate. Intel welcomes lawful competition, and we are confident that Intel's microprocessors, which have been specifically optimized to implement Intel's x86 ISA for almost four decades, will deliver amazing experiences, consistency across applications, and a full breadth of consumer offerings, full manageability and IT integration for the enterprise. However, we do not welcome unlawful infringement of our patents, and we fully expect other companies to continue to respect Intel's intellectual property rights. Strong intellectual property protections make it possible for Intel to continue to invest the enormous resources required to advance Intel's dynamic x86 ISA, and Intel will maintain its vigilance to protect its innovations and investments.
The graph above shows that SSE and later is still covered by extant patents. SSE is actually part of the x64 architecture - you need to execute SSE instructions to have floating point, and floating point is not optional. The x64 ABI actually requires SSE. I.e. to emulate x64 instructions you need a licence for the SSE patent
Re: (Score:2)
Re: (Score:3)
If you were Acer and you had a prototype Windows on ARM device and you knew the performance was going to suck would you risk being party to a lawsuit where Intel sued Qualcomm and Microsoft for violating one of their 400 patents that was analogous to the one MIPS sued Lexra over?
Or would you think "Yeah, I think we'll pass on Windows on ARM".
I think that's what Intel is going for.
Or maybe they want to make sure that Microsoft agree not to emulate any instructions recent enough to be patented. I.e. the 486 i
Re: (Score:2)
Microsoft already has several of their own x86 emulators. There was the old Microsoft Virtual PC app, then the server edition after that, plus their Azure stuff.
Re: (Score:2)
Bochs x86_64 emulation works on an IBM POWER host.
Re: (Score:2)
Re: (Score:2)
A+ for the history lesson!
Re: (Score:2)
They are lucky that the 386 and older are not patented, that the only reason 32 bit support is possible. The patents start at MMX.
I think they would be expired. "In the United States, for utility patents filed on or after June 8, 1995, the term of the patent is 20 years from the earliest filing date of the application on which the patent was granted" and from I can tell MMX was 1997. The x86-64 specification was published in August 2000 and makes use of SSE2 instructions. So there's at most 2.5 years left of any patents, it's approaching that time where Microsoft can secure the bulk of that IP from AMD, launch a product, probably get
Re: (Score:2)
Intel have a handy graph of when each SIMD instruction set was patented here
https://newsroom.intel.com/edi... [intel.com]
MMX is 1996
SSE is 1999
SSE2 is 2001
SSE3 is 2004
and so on
The original x64 specification made support for SSE and SSE2 [wikipedia.org] mandatory, but of course some applications might require later versions.
It's pretty clear that Intel are saying that if you write an emulator to run patented SIMD instructions on non Intel hardware and don't have a patent license, they may sue.
x64 is a nice pragmatically designed extens
Re: (Score:1)
Re: (Score:2)
It's not 'a patent'. The Intel graph shows loads of patents on each instruction set - 1600 over 13 instruction set extensions or about 123 average for each one.
They claim around 400 patents for MMX, SSE and SSE2, though most of these are for SSE and SSE2.
And Intel's claim is that if executing an instruction uses a patented process it doesn't matter if you execute it in hardware or translate the instruction and execute that - you still need a patent license or you will be sued.
Re: (Score:2)
And Intel's claim is that if executing an instruction uses a patented process it doesn't matter if you execute it in hardware or translate the instruction and execute that - you still need a patent license or you will be sued.
There is some awful case law from a MIPS lawsuit that lends some weight to this. MIPS patented a pair of instructions to do unaligned loads and stores more efficiently than doing a shift-and-mask. A competitor created a MIPS-compatible CPU that trapped on these instructions and emulated them in software. MIPS claimed that this violated their patent and, in a shocking lack of judgement, the court agreed with them.
Re: (Score:2)
Yeah. Lexra got screwed
http://probell.com/lexra/ [probell.com]
Though you can not patent an instruction set, you can patent machines and methods that are necessary to implement a particular unusual instruction that is part of the instruction set. That legally blocks competitors from creating a fully compatible clone of your processor. There are four instructions in the MIPS-I instruction set that were protected by one US patent, 4,814,976. These instructions, lwl, lwr, swl, and swr are known as the unaligned load and store instructions. These instructions are useful in systems in which memory is scarce. In such systems, it is often useful to pack 16-bit or 32-bit data values in to memory in such a way that they are aligned to arbitrary byte boundaries, and not necessarily to natural 16-bit half-word or 32-bit word boundaries. Accessing such unaligned variables requires at least two bus clock cycles, whereas accesses to aligned data can be performed in a single cycle. Most assembly programmers and compilers for modern systems align data to their natural address boundaries in order to gain the system bus performance benefit of aligned loads and stores, and so they never use the lwl, lwr, swl, and swr instructions.
Prudent high tech companies study their competitors' patent portfolios, and Lexra was no exception. Lexra was well aware of the patent on unaligned loads and stores that was owned by MIPS Computers Systems, then by Silicon Graphics, and later by MIPS Technologies. To avoid infringing, Lexra chose not to implement unaligned loads and stores in its processor design.
When MIPS filed its S-1 IPO prospectus form in 1998 it sued Lexra for copyright infringement. The suit was settled after a few months with Lexra agreeing not to use MIPS trademarks without attribution and to state in its documentation and in its public statements that it implemented "the MIPS-I instruction set except for unaligned loads and stores". MIPS Technologies agreed to the settlement, apparently acknowledging that Lexra did not execute unaligned loads and stores.
If a Lexra processor encountered an unaligned load or store instruction in a program then it did the same thing that it would do for any other invalid opcode, it took a reserved instruction exception. In the second lawsuit between MIPS Technologies and Lexra, filed November 1999, MIPS Technologies claimed that because exception handler software could be written to emulate the function of unaligned load and store hardware, using many other instructions, Lexra's processors infringed the patent. Upon learning of this broad interpretation of the patent, Lexra requested that the US Patent and Trademark office (USPTO) reexamine whether the patent was novel when granted. Almost every microprocessor ever designed can emulate the functionality of unaligned loads and stores in software. MIPS Technologies did not invent that. By any reasonable interpretation of the MIPS Technologies' patent, Lexra did not infringe. In mid-2001 Lexra received a preliminary ruling from the USPTO that key claims in the unaligned load and store patent were invalid because of prior art in an IBM CISC patent. However, MIPS Technologies appealed the USPTO ruling and, in the mean time, won a favorably broad interpretation of the language of the patent from a judge. That forced Lexra into a settlement that included dropping the reexamination request before MIPS Technologies might have lost its appeal.
It was never determined that processors that execute the MIPS-I instruction set, but treat unaligned loads and stores as reserved instructions, infringed the '976 patent. The patent expired on December 23, 2006 at which point it became legal for anybody to implement the complete MIPS-I instruction set, including unaligned loads and stores.
Extremetech mused on the case and came up with the tech industry analyst equivalent of 'it's a game of two halves mate. It could go either way'.
https://www.extremetech.com/co... [extremetech.com]
The short answer is, we don't know. The long answer is, it'll depend on exactly what kind of patents Intel has on its own SIMD extensions. If it holds patents that specifies how to emulate SSE/SSE2, rather than just the instruction sets themselves, Microsoft and Qualcomm could well be found to violate them. Then again, this also wouldn't be the first time Intel slammed down its foot in a tough-talk display that ultimately came to naught. When AMD announced it would spin off GlobalFoundries, Intel initially argued that the deal might run afoul of its own agreements with AMD regarding the use of that company's x86 license. In the end, nothing came of those claims, and GF was spun off while continuing to manufacture x86 chips for AMD.
On the other hand they don't need to win in court to win in business, rather in the way that football hooligans don't need their team to win on the pitch to beat seven shades of shit out of the opposing fans in the terraces, or in a sidestreet on the way back to the train station.
But look at things from Intel's perspective: Its tactics in the early 1990s and mid-2000s substantially limited AMD's addressable market share. It may have paid a whopping $1.4 billion fine to the EU to settle antitrust claims, but that's peanuts compared with the threat Athlon 64 might have represented to Prescott and Smithfield. And Intel isn't wrong when it talks about the myriad other companies that used to hold x86 licenses (or tried to emulate the ISA), but withered on the vine after their attempts to compete with Santa Clara failed.
The problem is this: System OEMs like Dell, HP, and Asus aren't in the business of taking chances. When your net margin on hardware is in the 2-4 percent range, you can't afford bravery. Imagine a hypothetical future in which HP shipped a Qualcomm Snapdragon 835 that could run x86 code via emulation, only to be named as a party to a hypothetical lawsuit in which Intel sues Qualcomm and Microsoft for their emulation system. Unless one of its two partners agrees to indemnify it, there's no way HP would risk a serious lawsuit over the topic.
Asus, Dell, Acer - all of these companies are likely to see the situation similarly. The specter of these kinds of lawsuits has always loomed large over the computer industry. I wouldn't blame them for Transmeta's problems; Transmeta's code-morphing approach and Efficeon architecture were initially innovative, but performance wasn't strong and Intel quickly moved to address its own power weaknesses through the Pentium M and the development of technologies like SpeedStep.
On the other hand, Intel's threats of lawsuits over VIA Technologies' lack of a P4 bus license were the direct cause of the collapse of VIA's P4 motherboard market share. VIA's DDR P4 chipset was a fast and affordable option when the P4 was stuck between either SDR RAM (which badly crippled the CPU) and extremely expensive RDRAM. Intel wouldn't launch its own DDR chipset for the P4 for more than a year after VIA launched its own. But lawsuit threats and licensing disagreements ensured VIA's addressable market was minimal.
ARM64 drivers but can't support 64 bit application (Score:1)
I don't think any of this is a surprise (Score:3)
So, with different hardware, anything that relies on non-ARM hardware drivers can't. Seems logical.
Also, since it's windows10, and not windows7, older graphics requires aren't there.
Again, seems logical. I'm guessing that the windows user interface has been re-built, and probably lacks a whole lot of backwards compatibility. Given that ARM devices are likely performance restricted by comparison, it's no surprise to me that there's little or no access to any ARM-specialized user interfaces (i.e. all of them). Not really disappointing, but a limitation for sure.
64-bit apps is obviously a momentary restriction -- it won't last long. That's simply proof that the project began before wide-spread 64-bit ARM adoption. It'll follow suit in short order.
HyperV, I'm sure, is similarly a few generations ahead of the windows ARM project. I'd bet that adoption of windows on ARM will dictate whether or not HyperV gets brought in at all. And reasonably so.
Re: (Score:2)
I've been evaluating Windows 10 IoT Core, their current Windows-on-ARM offering that is replacing Windows CE. It's total crap, like Windows CE before it.
Microsoft can't make good operating systems for ARM and non-desktop platforms. I don't know why, they just can't. You download the test Win 10 IoT image for Raspberry Pi and it doesn't have a soft keyboard installed, or any demo apps, or any way to actually evaluate it without huge effort. Microsoft are just terrible at this.
So I'm not expecting Windows 10
Re: (Score:2)
Windows on ARM wasn't meant to be parallel to x86 (Score:5, Insightful)
Windows on ARM was Microsoft's hedge against the latter scenario. If Intel imploded, it wouldn't take their Windows franchise with it. The possibility of losing their biggest software platform to ARM also put enormous pressure on Intel to reduce the power consumption of the CPUs. Which they did, and as a result current Intel quad core laptops have just a 15W TDP and can run circles around ARM devices.
Microsoft never intended to sell Windows for x86 and Windows for ARM beside each other. It was an either/or hedge based on performance per Watt, and x86 won out. The only reason it's resurfacing again is because laptop prices have been dropping. You can get a decent baseline model for less than $500 now, which used to be a good sale price for an about-to-be-discontinued model a few years ago. As the price drops, something has to give. Most of the hardware has already been pared down to razor-thin margins. The only two remaining pieces of fat left in modern laptop prices are:
Microsoft isn't gonna give up the OS slice of that pie, so they're gonna wave around Windows on ARM in a threatening manner to see if they can pressure Intel into giving up some of their slice of the pie.
So basically Windows RT (Score:1)
Been there, dumped that...
Just use Linux (Score:1)
If these are the limitations you are willing to accept then you might as well just use Linux with WINE. It'll run more applications than this garbage.
Re: (Score:2)
Nope https://dl.winehq.org/wine-bui... [winehq.org]
No (Score:5, Insightful)
For over a year we've been treated to the fantasy that Windows 10 on ARM was the same as Windows 10 on x86.
No one thought that. Microsoft has been very clear from the outset what Windows 10 on ARM offers.
64-bit apps will not work.
Incorrect. 64-bit ARM applications will work, of course. And Microsoft has always said the initial target for x86 emulation was 32-bit applications. That was announced in 2016 [anandtech.com].
It cannot use x86 drivers.
Of course it can't. Why would anyone think it would?
Not surprising really (Score:4, Insightful)
Back in the days NT run on Risc it was able to run x86 code, but only 16 bit x86 code. That's because the emulator was in the Windows On Windows (WOW) layer. Back then WOW was a way to run 16 bit code on a 32 bit OS. On an x86 chip it run the node natively. On Risc it used an emulator, which Microsoft had licensed from Insignia Solutions.
So on a MIPS R4000 machine you ended up with this
1) You could run Win16 and Dos x86 applications because those run in the WOW layer or in NTVDM, the NT virtual Dos machine
2) You couldn't run Win32 x86 binaries, you needed native MIPS ones
3) You couldn't run x86 drivers, you needed native MIPS ones
The R4000 was 64 bit capable but NT never run in 64 bit mode on it. Though it did on Alpha for while until that was discontinued. 64 bit mode lives on now for x64, ARM64 and maybe Itanium if you ask MS very nicely.
Now move forward to 64 bit Windows 10. The kernel is 64 bit code. WOW is used to run 32 bit binaries. On x64 it runs 32 bit code x86 code natively. On ARM it uses an emulator. So an ARM64 machine you end up with this
1) You can run Win32 applications because those run in the WOW layer. There's no NTVDM or support for 16 bit code in 64 bit Windows because that would need WOWOW - Windows on Windows on Windows.
2) You can't run Win64 x64 binaries, you need native ARM64 ones
3) You can't run 32 bit drivers, you need native ARM64 ones
Ironically given how wonderfully quirky ARM32's instruction set was and how Steve Furber reckoned that 'MIPS was clean but the cleanness lead to poor code density which hurt them they competed with us in the embedded world', (I'm paraphrasing a bit, the interview is here [youtube.com]).ARM64 is much more similar to MIPS than it is to ARM32. I.e. no conditional execution, load/store multiple, no free shift with every instruction and no Thumb mode with two byte instructions. RIP Sophie Wilson's wonderfully devious instruction set. Still I can see why they did it - something stripped down like MIPS or ARM64 must be a lot easier to implement as out of order superscalar design than ARM32.
So the situation with WIndows on ARM is better than Windows RT on 32 bit ARM of course - that had no x86 emulator and actually blocked Win32 ARM binaries from running unless they were signed by Microsoft. This was part of Microsoft's evil plan to move people from Win32 to Windows Store applications.
What I think will be more of an issue for Windows 10 ARM is performance. A Snapdragon 835 is comparable to an Atom natively but emulation will add some overhead - some benchmarks imply a lot.
E.g. a Snapdragon 835 running x86 code gets a mere 818 single core score on Geekbench
https://www.windowslatest.com/... [windowslatest.com]
That's about half the native performance which around comparable with an Atom. I.e. great for phone but terrible compared to an i5.
https://www.slashgear.com/asus... [slashgear.com]
Intel have threatened Microsoft and Qualcomm with a lawsuit if they convert SIMD instructions from SSE or AVX to NEON. So you could run 32 bit Photoshop but the emulator can't support any SIMD instruction set. And you're running on a chip which is more like an Atom than an i5/i7. That's going to suck. You can't run x64 binaries, even though most software is x64 now.
It'll run something like 7zip or Firefox OK, and those will probably have a native ARM64 binaries too, but if you try to run the x86 version of Photoshop on it the experience will be dreadful.
Outside of Microsoft everyone ignored the non x86 platforms for NT. There's a fair chance that apart from open source stuff people will ignore Windows on ARM too. It's hard to see Adobe spending much engineering time getting Photoshop to run well on Windows on ARM.
Re: (Score:2)
The only 64bit versions of windows for alpha were development versions that were never released publicly (although it would be interesting if they did release them, just for historical curiosity).
Although alpha was a 64bit chip, it used backwards compatibility flags in the compiler to get it to appear as a 32bit cpu for nt.
It could however run 32bit x86 code through emulation... The emulation wasn't all that fast, but alphas were much faster than x86 cpus available at the time so even after the emulation ov
Re: Not surprising really (Score:3)
NT on Alpha could run 32 bit x86 code because Dec wrote a very clever emulator called FX!32.
That hooked into NT's process spawning when you tried to run a non native binary and run the code via Dec's FX!32. However it also did profiling. Once it knew which parts of the x86 binary were executed most frequently it would JIT them to native Alpha code.
At one point the platform which could execute x86 code was an Alpha running it via FX!32's JIT.
Re: (Score:2)
You are wrong. I used the Alpha version at my university's computer lab in the mid-90s.
Re: (Score:2)
The 32 bit port of NT for Alpha was released but the 64 bit one was internal only - they used Alphas until they got Itaniums
https://technet.microsoft.com/... [microsoft.com]
A colleague of mine rescued an Alpha AXP machine from a dusty closet. Upon booting up the system, he discovered that it was running a 64-bit version of Windows from early 2000. How is that possible?"
I happened to have one of these machines in my office then. In its prime, this machine was a force to be reckoned with. It was about the size of a small refrigerator and generated about as much noise as a vacuum cleaner. It contained four-count 'em, four!-Alpha AXP processors, each running at a mind-boggling 400 MHz. It had one gigabyte of RAM and thirteen gigabytes of hard drive space, striped over a dozen fast SCSI drives. This may sound puny today, but back in the 1990s, these Alpha AXP machines were the envy of the block and made you the popular kid at the lunch table.
In 1999, when Compaq announced it would no longer support Windows on the Alpha AXP, a lot of Alpha AXP systems were suddenly left sitting around Microsoft with no official duties. Some of these machines, however, were pressed into a variety of unofficial duties. I used my Alpha AXP system to index the entire Windows source code. You can imagine how convenient it can be for a programmer to be able to identify all callers of a function in just a few seconds or to locate the source code for a function or dialog box that shows up in a debug trace.
But even for the simple task of indexing the Windows source code, the Alpha AXP was soon overshadowed by x86-class machines. These were cheaper and faster, they offered more hard disk space, and they had more memory. So for this reason, my machine soon joined its forgotten brethren. It was assumed that the end of support for the Alpha AXP was the end of these machines, but then they were given an opportunity to go out in a blaze of glory, breathing their last breaths in service of the next generation.
The 64-bit Windows project was already well under way, and of the 64-bit processors under consideration, only the Alpha AXP was actually available in physical form. The Intel Itanium was still under development and ran only in a simulator, and the AMD64 architecture hadn't even been invented yet. As a result, 64-bit Windows was initially developed on the Alpha AXP.
When Compaq announced that they would no longer support Windows on the Alpha AXP, all these Alpha AXP machines that previously had been used for 32-bit Windows 2000 development and testing got repurposed and began serving a secret life as test machines for a 64-bit operating system that will never ship in that form. The Alpha AXP was merely a proof-of-concept platform.
The Alpha AXP machines served that role well, giving the 64-bit Windows team real hardware to work with instead of having to run the operating system on an Itanium simulator. (You can imagine how slow that was.) Sure, the Alpha AXP wasn't the final target hardware, but it was a big help. And when physical Itanium CPUs began showing up, the niche filled by the Alpha AXPs vanished, and they were once again retired into dusty closets.
Re: (Score:2)
I used the Alpha port of NT, including FX!32 emulation for x86, at my university's lab. It was never popular, but it was available outside of MS.
Limited Kudos. (Score:3)
https://docs.microsoft.com/en-... [microsoft.com]
Now all they need to do is rename it (Score:2)
Now all they need to do is rename it - how about Windows RT?
What's the point? (Score:1)
Re: (Score:3)
Re: (Score:2)
Huh? The Windows NT kernel was originally brought up on the Intel i860 (RISC processor) and then ported to x86, to make sure that it was portable and didn't include any x86isms outside of the HAL. They've been maintaining ports to other architectures internally since then to ensure that it keeps this property.
If you read Tanenbaum's Modern Operating Systems, you'll see a good comparison of the NT kernel to a couple of UNIX systems and it comes off pretty well in the comparison.