- 10-02-2012, 08:50 AM #1
I'm not that into computers so feel free to correct my misconceptions.
Why can't MS make WinRT and WP run normal programs, and by normal i mean the everyday programs you have on your computer. I think the common name for these are x86. So considering the specs in today's phones and tablets the performance of the device wouldn't be a problem, right? And screen size doesn't really affect how the OS runs since screen sizes already vary a lot on normal PCs.
So imagine this for Win 9: No more WinRT and WP, it's Win 9 for all. You can install the same programs on all devices. Obviously some programs will run better on PC or are specifically made for phones but its up to make the decision to install it. The GUI can vary but its the same OS.
So now, my scholars on computers, please tell me why this isn't done already and do you think it will come? If not why?
10-02-2012, 09:09 AM #2
- 260 Posts
Becuase the processors are not the same - programs that run on phones tend to run on ARM cpu's which are completely different to x86 (PC) cpu's. It is to do with how they handle the instruction set, it is no small task to recode either at the moment...
Hardware would have to be standardized a whole lot more before this is a possibility
10-02-2012, 09:12 AM #3
- 391 Posts
RT and WP run on ARM architecture which runs on different instruction sets from the x86 processors from Intel and AMD.
ARM processors are generally more power efficient compared to the x86 counterparts, and Intel just joined the mobile space with its offerings which aren't widely used yet. So its a battle between ARM and x86 actually.
Also, I will note that MS is hedging its bets with RT and Win8 with the whole Windows Store. Its strategy will adapt to the winner of ARM vs x86 war.
- 10-02-2012, 09:35 AM #5
Last I read, the fastest ARM DC is only capable of competing with the slowest SC Atom.
RISC vs CISC. People need to read up on the differences to know why you cannot yet have a desktop capable computer in your pocket.
Simple explanation. ARM is basically linear on each core. Meaning if it computes an error it starts over. x86 is able to do multiple computations at the same time. So if one pipeline computes an error it is not used and one of the other pipeline's computations is used. To do multitasking ARM needed more cores. To do multitasking x86 can still do it on a SC, hence low power atoms are still used in HTPC computers and things like nettops and stuff.
10-02-2012, 09:36 AM #6
- 51 Posts
However, you CAN create a framework that people build around that supports both architectures. That is what Microsoft has done with WinRT (Not to be confused with Windows RT). A developer can write a WinRT program, and it will work on both architectures.
Currently we have three distinct types of programs:
1. "Classic" x86 programs which can be installed on Windows 8 and will run in the desktop mode.
2. WinRT apps which are downloaded from the Windows Store and can run on both Windows 8 (x86 machines) and Windows RT (ARM machines).
3. Windows Phone apps, which are VERY close (code-wise) to WinRT apps, but not quite the same.
I believe that in the future (Windows 9) we're going to see #s 2 and 3 merge, and Windows Phone 9 (Though at that point, the "Phone" moniker may be dropped) will be able to run WinRT apps. Then developers will be able to write an app once, and it'll be able to run across all platforms (Laptops, desktops, tablets, phones, toasters, etc)
- 10-02-2012, 10:09 AM #7
However, going the other way (running an ARM program on an x86 processor) is both doable and practical. The emulator in the Android SDK does this, and Intel's Android phones do this as well. The Android SDK does it using an interpreter, so it's slow, but the Intel system uses a compiler. The idea is to treat the ARM version as source code and compile it to x86. It sounds exotic but it's not really any different than what the JIT compiler is doing. If your ARM->x86 compiler is good (and Intel's is) then the resulting programs will be comparable in efficiency to the original ARM version. There is a server up in the Google Play server farm that takes the ARM programs as they are uploaded by the developers, and translates them to x86, so that when an x86 phone buys the program from the store it is sent the x86 version. Microsoft is doing something similar in Win8 (and probably WP8 as well), both with native programs and with the .NET programs - they are compiled to the native architectures for the supported devices, and your phone or tablet downloads the optimized native code version. This improves power consumption since the phone doesn't need to run a JIT compiler, and improves code quality since the servers can do a much more aggressive job of optimization, which further improves both performance (both runtime and startup time) and power consumption of the device.
Back to the OP's question, however, running X86 on ARM is not practical the way ARM on x86 is. But even if we get windows phones with the Intel Medfield x86, it still won't be practical to run desktop apps on our phones, for a number of very difficult-to-solve reasons. The difference in screen size is too large. Most desktop apps assume a mouse, and touchcreens don't emulate mice very well. The difference in CPU speed is too great - a 1ghz Medfield is a tiny fraction of the speed of a 1ghz i5. The difference in memory speed is too great. And even if you could solve the screen and mouse issues, the speed issues can't be solved without toting around a pound or two of battery.
After looking at these problems, Microsoft realized that in order to run the same applications on both the desktop and tablet (and maybe someday phone), these applications would have to be written very differently, and the OS would have to change drastically to support this. Hence WinRT, a special subsystem in Windows 8 that is extremely efficient, efficient enough to run on a very low-power, low-speed, small-screen device, built around touch sensitivity from the ground up, but still powerful enough to do useful applications on a laptop or desktop machine. Personally I think they failed on the latter point, but serious apps can still use Win32, and hopefully Microsoft beefs up WinRT in Win 9.
Last edited by mparker; 10-02-2012 at 10:15 AM.
10-02-2012, 10:19 AM #8So imagine this for Win 9: No more WinRT and WP, it's Win 9 for all.
- 884 Posts
Whilst it did have its fans (and still does), in many peoples eyes it was an abomination, and the fact the iPhone decimated its sales extremely quickly shows its not a popular idea.
- 10-02-2012, 10:43 AM #9
OK thanks for all the great replies. Basically it won't be possible for quite a while mainly because phones and tablets doesn't have the capacity needed. And that 1Ghz in a phone and 1Ghz in a computer is two completely different things is news for me so thanks for the enlightenment.
- 10-04-2012, 01:55 AM #10
- 10-04-2012, 09:42 AM #12
If the physical hardware can efficiently emulate the virtual hardware using whatever tricks are available, then emulation *is* a perfectly reasonable answer. Back to the question at hand, Intel has demonstrated that x86 can emulate ARM in a speed and power efficient manner. However, it has not yet been demonstrated that ARM can emulate x86 in a speed and power efficient manner.