Slashdot Mirror


Next Generation of Windows To Run On ARM Chip

Hugh Pickens writes "Sharon Chan reports in the Seattle Times that at the Consumer Electronics Show in Las Vegas, Microsoft showed the next generation of Windows running natively on an ARM chip design, commonly used in the mobile computing world, indicating a schism with Intel, the chip maker Microsoft has worked with closely with throughout the history of Windows and the PC. The Microsoft demonstration showed Word, PowerPoint and high definition video running on a prototype ARM chipset made by Texas Instruments, Nvidia. 'It's part of our plans for the next generation of Windows,' says Steve Sinofsky, president of Windows division. 'That's all under the hood.' According to a report in the WSJ, the long-running alliance between Microsoft and Intel is coming to a day of reckoning as sales of tablets, smartphones and televisions using rival technologies take off, pushing the two technology giants to go their separate ways. The rise of smartphones and more recently, tablets, has strained the relationship as Intel's chips haven't been able to match the low power consumption of chips based on designs licensed from ARM. Intel has also thumbed its nose at Microsoft by collaborating with Microsoft archrival Google on the Chrome OS, Google's operating system that will compete with Windows in the netbook computer market. 'I think it's a deep fracture,' says venture capitalist Jean-Louis Gassee regarding relations between Microsoft and Intel."

18 of 307 comments (clear)

  1. Wow by Anonymous Coward · · Score: 5, Funny

    I knew it was getting fucking cold in here.

    --Satan

  2. But but but but but.... by Nursie · · Score: 5, Insightful

    What about the huge catalogue of win32 applications?

    If I was to believe the anti-linux trolling of the last decade or so, that's the major reason people won't ever, ever switch!

    On a more serious note, I know .Net stuff stands a good chance of working fine, but there's a hell of a lot of windows stuff people use that isn't .Net and I can't see a translation engine or emulation working that great on ARM stuff.

    1. Re:But but but but but.... by Nursie · · Score: 4, Interesting

      Having a cross compiler would probably be a necessity.

      ARM is pretty quick these days, but has nowhere near the power of the multicore 64-bit chips coming out of AMD and Intel at the moment.

      Also there's the branding to think about. Sure windows ran/runs on a few architectures already, but if it *does* come down to x86/win32 apps not working on ARM machines and vice-versa, won't MS have a bit of a public education battle? Will the general public get confused by windows apps that are for one hardware variant and not another? Or will MS mandate fat binaries if you want Windows 8 certification or something?

      Many questions...

    2. Re:But but but but but.... by Savage-Rabbit · · Score: 4, Informative

      I've been wondering the same thing. What about SDK's? Will there be a separate version of Visual Studio strictly for ARM? I know Visual Studio is mostly targeted towards .NET, but for native apps, will you be able to compile ARM code on the x86?

      Visual studio it self is a userland app and as such should run on Windows for ARM with few problems. I'm not sure what MSVS is written in, if it's a native app there will be an ARM version much as there was a PPC and x86 version of Xcode when Apple switched to x86, if MSVS is a .NET app you should get a build once run anywhere App like Eclipse is except Eclipse is truly cross platform while .Net apps are truly cross platform only on Windows flavors. If MS does a proper job porting it, the ARM toolkit for Windows should be every bit as powerful as the Windows x86 toolkit. Win 32 applications on the other hand might be a problem but then again Apple did a pretty decent jop at running PPC applications on x86 machines with Rosetta, I ran pretty heavy PPC applications under Rosetta with no major problems, so I don't see why Microsoft could not do something in a similar vein.

      --
      Only to idiots, are orders laws.
      -- Henning von Tresckow
    3. Re:But but but but but.... by raddan · · Score: 4, Insightful

      Microsoft might be viewing this much the way Apple views iOS: it doesn't matter. Mobile devices, especially touchscreen devices, are different enough from their hardwired brethren that people may not seek to run the original software. Add to the fact that most technology companies are seeking to push software "to the cloud" (and indeed, Microsoft already has a cloud version of Office), this may become less and less of an issue.

      I personally think that Microsoft needs to make the break to stay competitive. Continuing to support legacy software is extremely painful for both Microsoft and for their customers. I used to work for a company that was heavily invested in legacy Microsoft technologies. You know those dastardly tactics that Microsoft uses to lock you in to their product? Well, it keeps you from using new Microsoft technology as well. Loss-aversion may be irrational, but, well, you try arguing that you need to switch to new tech to a CTO who has sunk millions into software that requires ActiveX on IE6. That, my friends, is why IE6 is still around. But I'm mildly amused at the irony that Microsoft's own proficiency in the lock-in game is hurting them now.

    4. Re:But but but but but.... by TheRaven64 · · Score: 4, Informative

      Not true. Different languages expose different abstract models to the programmer. A Smalltalk-family language like Java typically exposes a model where memory is only allocated in objects and instance variables in objects are only accessed by their name. In contrast, most Algol-family languages like C expose a lower-level model where memory can be allocated as untyped buffers and then cast to the required type.

      The differences in CPU architectures are typically things like alignment requirements (can it load and store values that aren't word-aligned?), endian (which order are bytes), and so on. In C, there are a few things that you can do on x86 that will cause problems on other architectures. One is silently increasing alignment requirements:

      char *foo = malloc(12);
      int *bar = (int*)(foo+1);
      // in another function
      int wibble = bar[1];

      A compiler will typically make this work for you if it sees the assignment to bar, but if it doesn't then it will assume that bar is aligned on a word boundary. If the target architecture doesn't support unaligned loads, then the last line will break things (you may get a trap, or you may just get the wrong result, depending on the architecture). Modern ARM chips will trap to the kernel for this kind of problem, so the kernel can emulate the load, but this is a couple of orders of magnitude slower. There is no way of expressing this code in a language like Java, so the problem doesn't arise.

      Another issue comes from endian assumptions. Consider this code:

      int64_t foo;
      // Set foo to something
      int32_t bar = *(int32_t*)&foo;

      This will correctly give you the low 32 bits of foo in bar on a little-endian platform. On a big-endian platform, it will give you the high 32 bits. Most of the time you wouldn't do something this simple, but you might when reading data from a stream of some kind. It's bad practice, but that doesn't mean it's not done. Fortunately, ARM is little endian too, so this isn't an issue porting from x86 to ARM - it caused a lot of problems porting from x86 to PowerPC and SPARC though, especially in code that dumped binary data to files, read it back, and found it in the wrong byte order.

      And, of course, there are size issues. In C, the different primitive types all have architecture-dependent sizes. Some people make assumptions about them. For example, it's usually safe to assume that long is big enough to store a void*. Unfortunately, it's not true in win64 (although it is in every other platform I've seen), so code that makes this assumption breaks in 64-bit Windows versions (Itanium and x86-64).

      --
      I am TheRaven on Soylent News
    5. Re:But but but but but.... by 0123456 · · Score: 4, Insightful

      This is just sloppy programming. Let me go out on a limb and say any decent programmer wouldn't do this.

      And how many Windows programs, particularly those whose original development started a decade or more back, were completely written by 'decent programmers'?

      I've seen all of these problems in code that companies I've worked for had to make portable to 64-bit CPUs and other-endian CPUs.

    6. Re:But but but but but.... by bmajik · · Score: 4, Informative

      Visual studio is a mixed mode app. The basic shell and environment is native code. But there are many managed components that are loaded into it. Previous to VS2010, the code editing experience was native, but I beleive it is now WPF based and as such is also managed.

      A tool for developers as you might expect is highly componentized and extensible, and plugins can be written in either native or managed code.

      VS has had cross compiling features for at least 10 years, and that's the number i picked because that's how long i've looked at it. VC 6.0 had th Windows CE toolkit, used for authoring windows CE apps for all the procs that CE supported. Modern VS installs ask you if you want to install the Itanium cross-compilation tools. When you install the Windows phone 7 SDK you get a different cross compiler and binary emulation environment.

      Cross compiling, multi-targeting, etc is nothing new for MS. They've been supporting more architectures in more products than Apple, Google, or anyone else for years.

      --
      My opinions are my own, and do not necessarily represent those of my employer.
  3. I smell Vapourware... by advocate_one · · Score: 5, Interesting
    Microsoft are pre-announcing something to try to stop customers and OEMs from moving over to ARM based kit now... they've got a long history of pre-announcing stuff that will be available soon... They did it with DOS 5 to stop people from jumping to DR-DOS 5 which had lots of features DOS 4 didn't have

    on 2nd May 1990 MS-DOS product manager Mark Chestnut said: "On the PR side, we have begun an 'aggressive leak' campaign for MS-DOS 5.0. The goal is to build an anticipation for MS-DOS 5.0 and diffuse potential excitement/momentum from the DR DOS 5.0 announcement. At this point, we are telling the press that a major new release from Microsoft is coming this year which will provide significant memory relief and other important features."

    --
    Donald 'Duck' Dunn: We had a band powerful enough to turn goat piss into gasoline.
  4. Windows on ARM by ledow · · Score: 5, Interesting

    Windows on ARM? That doesn't matter.

    Office on ARM is a million times more important - for a start, that suggests you can open your documents on another new platform without having to worry about export filters and binary compatibility. But hey, I'm afraid OpenOffice and suchlike beat you to it.

    The problem with Windows on ARM is that no currently existing Windows program will run on it. It's a new architecture without binary compatibility, like Windows CE was. Sure you can port things over but you can do that anyway and few have bothered. Things like the NET framework are "supposed" to be cross-platform but you can be assured than anything vital that you have to use and that you have no control over development of (e.g. business apps) requires an x86 binary at some point, or isn't supported on ARM. So even your programs that are written in NET need to be ported (which usually means it'll never happen).

    Telling people that Windows now runs on ARM is misleading - they will think that everything from Half-Life 2 to Sage should work on it without touching anything. What you mean is that there is now an official OS for ARM that looks and works a bit like Windows. Like Windows CE was. But then, what ARM? There are hundreds of ARM variations and not all of them can be catered to, so you're back to it only working on select platforms that have been especially designed for it - like, erm, Windows CE was. Can I join a domain and run my existing business apps? No? Then it's actually just the Windows *GUI* that's consistent across platforms, not the OS.

    Even if the next-gen of Windows 8 can be almost identical on PC or other devices, you're then into the problem that it's not the OS that matters (and that pretty much *does* have to be changed for every hardware variation) but the applications. And "Windows on ARM" will make people think they can install Steam on it and just run everything. That's not the case and never will be.

    Windows on ARM is a response to Android, to try to pretend to be as cross-platform. Same as OpenXML was a response to ODF, to try to pretend to be platform-independent. In reality, the headline will grab eyes and then the reality will disappoint. But in the meantime, you've sold a "portable Windows" license to some mobile-carrier who has to repeatedly explain that "desktop Windows" isn't the same as "mobile Windows".

    It's just Windows CE. Remember trying to explain to people that Pocket Word wasn't the same as desktop Word? Same thing over again.

    1. Re:Windows on ARM by 0123456 · · Score: 4, Insightful

      Surprise, you can't run your Linux binary blob compiled for x86 on ARM... same goes for Windows..

      Except all those Linux applications are recompiled for ARM by the distro developers, whereas every single Windows application has to be recompiled by its own developers, and then you have to buy it again.

      If you can't run your old Windows applications on this new 'Windows', why would you buy it? Joe Sixpack is going to buy a 'Windows' ARM machine, take it home, and then wonder why his old Word CD won't install.

  5. Re:Nvidia cpu by mwvdlee · · Score: 4, Insightful

    Imagine placing your mobile phone in the docking station on top of your TV and it instantly being transformed in a full-blown desktop-capable PC functionally similar to an average PC of today.

    --
    Slashdot social media options: AIM, ICQ, Yahoo, Jabber and Mobile Text. Why no MySpace?
  6. Re:Here's where .Net is a Big Win for MS by dingen · · Score: 4, Funny

    Just a recompile should take Adobe about a year though.

    --
    Pretty good is actually pretty bad.
  7. Re:Nvidia cpu by ArcherB · · Score: 4, Informative

    Last one to market?

    Can you name any other operating system that works on both x86 and ARM procs out of the box, with no modification or intervention necessary on the user end?

    Linux. Well, that's the only one I can think of.

    --
    There is no "I disagree" mod for a reason. Flamebait, Troll, and Overrated are not substitutes.
  8. Re:Nvidia cpu by TheRaven64 · · Score: 4, Informative

    OS X, Linux, FreeBSD, and NetBSD. Not sure about OpenBSD - they did have an unmaintained port to some older ARM chips, which was discontinued, but I think they've got a newer one.

    All of these have both ARM and x86 versions that work out of the box. Debian, for example, has complete software repositories for ARM so you can typically install the same software on ARM as on x86, and you have exactly the same user environment on both (well, except that the Linux kernel sucks at providing portable abstractions, so things like power management are very different on both). Apple supports OS X on both platforms, although their ARM port ships with UIKit instead of AppKit and doesn't include autozone, Carbon, Rosetta, or any of the legacy APIs.

    Actually, now that I think about it, Windows CE shipped an x86 version (as well as ARM, PowerPC, and MIPS) for a while. Not sure if anyone used it, but it worked out of the box, at least as much as it did on any other architecture...

    --
    I am TheRaven on Soylent News
  9. Re:Another one by TheRaven64 · · Score: 4, Informative

    RISC was better 20 years ago because CISC chips were using close to 50% of the die area for complex decoders. RISC chips could use 5%, giving them vastly more space to cram on ALUs and so on. Then the transistor budget increased, but the decoder complexity stayed pretty constant. 50% became 25%, then 10%, and now the increased space on RISC chips is pretty much irrelevant and the space-saving in instruction cache offsets it.

    Then people started caring about power consumption, and it turned out that the decoder (or, in the case of x86, the micro-op decoder, which is basically a RISC decoder after the CISC decoder) was about the only bit of the chip that couldn't be turned off while the CPU was doing anything. You can power down the FPU, the vector unit, and any of the other execution units that aren't relevant to the in-flight instructions, but you can't power down the decoder[1]. ARM does very well here. It achieves good instruction density with the 16-bit Thumb / Thumb2 instruction sets, but it can power down the ARM decoder when running Thumb code or power down the Thumb decoder when running ARM code, so the extra decoder complexity doesn't come with an increased power requirement.

    [1] Xeons actually do power down the decoder when running cached micro-ops, but they need to keep the micro-op decoder powered, and this has a similar power requirement to a RISC decoder.

    --
    I am TheRaven on Soylent News
  10. Re:Nvidia cpu by TheRaven64 · · Score: 4, Informative

    It's also worth remembering that the x86 version of NT is itself a port. The NT actually comes from Intel's NT architecture, which eventually became the i860. The next target was MIPS, and then x86. It was intentionally not written on x86 to prevent any architecture-specific assumptions creeping into the codebase.

    The Alpha version of Windows NT came with a thing called FX32!, which ran emulated x86 apps. It was pretty horrible, because the Windows codebase is full of endian assumptions (the Alpha version did lots of byte order swapping in the background) and emulator technology was not very advanced back then so the emulator needed a fast Alpha to run at a decent speed. It also ran in some weird pretending-to-be-32-bit mode, although they fixed that when eventually doing the win64 version for Itanium.

    --
    I am TheRaven on Soylent News
  11. Re:Another one by bluefoxlucid · · Score: 4, Interesting

    Yeah, the other issue is that ARM code is "bigger" but somehow a 900MHz ARM outruns a 1500MHz x86... hmm, why so much faster? The answer turns out to involve small decisions and branches, which on x86 et al involve load-compare-branch (mov %eax ... cmp %eax ... jne), whereas on ARM you have compare-prefix (mov %r1 ... cmp %r1 ... SUBGT, SUBLT, MOVEQ, BNE, etc) that don't take an extra cycle, i.e. MOVGT takes 1 cycle and MOV takes 1 cycle.

    This means a lot of simple code compiles to simple instructions, whereas on x86 you have a huge amount of branching to do. A lot of 'if' and 'select' statements can be reorganized to just do one comparison and then drop through a bunch of instructions that are prefixed for simple cases.

    This kind of thing reduces the performance penalty of not having a branch predictor--that's right, ARM performs as well as it does with no branch prediction. ARM has a huge number of registers (something like 16 with identical general purpose use and access times, vs x86 4 GPRs), lack of support for mis-aligned memory access (simple, fast data access paths), and a few cherry-picked things like a built-in barrel shifter in any arithmetic instruction (you can i.e. add numbers with shift left/right as part of the instruction). Also most instructions run in 1 cycle--even really crazy ones like conditional-arithmetic-shift (i.e. SUBGT Ra, Ri, Rj, LSL #2)-- whereas stuff like x86 runs an average of 2-3 clock cycles per instruction, with some very long. That means that a 2.5GHz x86 is about as fast as a 1GHz ARM.

    ARM is a large amount of compensation for not implementing complex features. They look hard and say, "Well... this is a general good performance feature..." and do that; whereas CISC is like, "Here's a special case we should do... and oh, branch prediction would let us try to speed up branches... and we could add instructions for manipulating ASCIIZ strinsg..." RISC is more like, "Well, let's try to do everything in 1 cycle... let's prefix instructions so that we can avoid branching... let's add a ton of registers... let's not make a slow decoder... let's restrict memory access to avoid performance hits in cache misses..."