Opinions

How Full Windows 10 running on ARM CPU will affect computing future

So it finally happened! I have been predicting x86 emulation on ARM CPU ever since Intel stopped product development for Atom for mobile SoC.


@WinHEC 2016, Microsoft showed Windows 10 running on ARM

A few major things happened over the year to make this happen.

  1. Windows 10 Mobile Continuum
  2. Intel ending development of Atom SoC
  3. Qualcomm adding virtualisation support for SnapDragon SoC
  4. Various bridges for developers to easily port their apps to Windows 10
  5. Windows 10 Common Core (or why there’s no 64bit mobile Windows 10)
  6. Some special sauce from the brains @Xamarin
  7. Microsoft letting go of the last vestiges of Nokia

Let’s look at this point by point.

First point. Windows 10 Mobile Continuum feature has always been this dream of making your smartphone act more like a PC when connected to a large display + keyboard/mouse. However, people quickly notice far too many icons don’t work because the developer hasn’t written their app in Universal Windows Platform (UWP) format or their mobile app isn’t optimised for a larger display yet.

Rather than waiting for mobile developers to get around to adding UWP support, why not ask PC developers to scale their apps down? And at the same time, support legacy Windows program through the Desktop to UWP bridge so it’s possible for Windows 10 to run these UWP on ARM64 SoC.

Second point. (This is my speculation.) Intel has made a terrible mistake in ending Atom SoC development. They pushed Microsoft to seek an alternate SoC and they are the probably the reason Qualcomm added virtualisation support. I don’t remember Google/Android asking for x86 capability.

Third Point. Despite how fast Snapdragon (SD) SoCs are, the Atom X7 can keep up with it easily & in fact outperform it, albeit using slightly more power. The reason is every core of Atom can process SIMD (DSP) SSE instructions which gives it an advantage in terms of mathematical calculations. The letdown of Atom is in the GPU. Unlike Qualcomm, Intel obviously doesn’t want to put a flagship class GPU to compete with their Core CPU.

Recently, Qualcomm announced DSP & Virtualisation support for their next-gen SD835 SoC with an even faster GPU. This allows Microsoft to enable many of the desktop class features that required DSP to accelerate their functions. Many of Windows 10 Mobile functions like its User Shell & Cellular functions will be integrated into full Desktop Windows 10 as shown in the video. Finally, full Windows 10 can compete with IOS & Android for Tablets.

Fourth point. Microsoft is a software company at its core. Their oldest and strongest products are their OS and Visual Studio development environment. It comes as no surprise they can create conversion tools to directly take other platform codes and make it work on theirs. It’s also no surprise when you consider the fact that Windows NT (which Windows 10 is based on) was created to run on multiple CPU architectures.

Fifth point. For the longest time, Windows Phone fans had been wondering why Microsoft refused to create a 64-bit version of Windows 10 Mobile. I have always argued that mobile platforms don’t need 64-bit at all because no single mobile app will ever use 4GB of memory. Now we know the reason is because Microsoft has been concentrating in making full Windows 10 even more mobile.

We already know that Windows 10 shares the same kernel & some of the hardware stacks between PC, Xbox, Mobile, Hololens and IoT. However, what most people don’t realise is Microsoft has been breaking their Service Stacks into smaller and smaller pieces with every new revision of Windows 10.

Just look at your Services manager in Computer Management, there’re more and more Services running in the background. However, RAM usage hardly increase. The reason is to allow more services to be compartmentalised so Microsoft developers can pick the services relevant to that particular platform and reuse as much code as possible. This isn’t possible if the services are large and monolithic in nature.

My prediction is, instead of emulation, Windows 10 will run natively in ARM64 mode. Not surprising since Surface RT IS running an ARM version of Windows 8. This means all (desktop) Windows 10 services AND first-party apps will run at full speed since they’re compiled for ARM64.

All UWP apps can run in either native ARM or virtualised x86 mode depending on the developer. Also not surprising because when you run a 32-bit program in 64-bit Windows, Windows will launch the program in Windows on Windows 64-bit mode (WoW64). So now, instead of apps running in an x64 sandbox, it’s a Windows app running in an ARM64 sandbox.

Sixth point. I bet the brilliant minds at Xamarin had been cross-pollinating with the minds at Visual Studio to create the most powerful x86/x64/ARM cross-compiling toolkit possible! I’m guessing these are the people convincing Qualcomm to add virtualisation support for the latest SD. The power of software!!!

Seventh point. I’m guessing former Microsoft staff of formerly Nokia mobile division still have a static mindset about the future of mobile and smartphones. It’s probably good they’re let go to work on other worthwhile projects like the new Nokia-branded smartphones ODM by the China firm that bought over from Microsoft, or SailFish for the Russian bloc.

However, we also know that certain key ex-Nokian went to work at Microsoft Research. I wouldn’t be surprised if these are expert in camera and cellular tech.

The future. This part is my speculation about Microsoft’s strategy moving forward.

If Intel had continue to invest in Atom SoC, we’ll probably have the mythical “Surface Phone” by now that can run UWP & Legacy programs through Continuum.

Qualcomm seem to have fill that gap but I’m still skeptical over the emulation performance. However, if the Adobe Photoshop presented by Terry Myerson in the video is running in emulation mode and the video wasn’t edited, then I’m cautiously optimistic. The “Surface Phone” can now get back on track but don’t expect it to ship until end of 2017.

This is also the first time desktop Windows 10 gain cellular radio stack and mobile-context specific features related to voice calls and sms. The Skype Preview app is already hinting at the direction Windows 10 is taking so it’s more proof of mobile features added to Windows 10, rather than more desktop features added to Windows 10 mobile. Microsoft is moving in the opposite direction as IOS & Android.

With a Cellular stack built into Windows 10, Windows will finally become a full fledge mobile OS. With ARM’s more simple RISC architecture, power management should be easier to manage and Windows 10 should have much better standby time. Intel Atom (Enhanced SpeedStep) has great running time but the standby time still lacks far behind Qualcomm’s Snapdragon high/low-power cores. It’ll be interesting to note how Windows 10 handles the ‘big.LITTLE’ Kryo 28x Cores.

Windows 10 Continuum will also have a combined dual-shell or a morphable shell (called CShell) that switches interface depending on the screen (not device) context. Maybe now we’ll finally have a Landscape mobile Start Screen, and of course, multi-screen is naturally supported. It better support dock-able Windows for larger 5-7″ screens too!

Ultimately, the “Surface Mobile” can be your only computing devices. So what kind of a device is this Surface Mobile? Well I think it’ll be running a SD835 clocked at 1.9Ghz on battery, and 2.45Ghz when plugged into the Microsoft Display Dock. It should have 4GB of RAM and has a 5.5″ – 6″ display to allow adequate space for heat spreading. A 1440P display is good enough, a 4K display will be a waste of battery and GPU cycles. Now, Windows 10 requires a lot of space, so 64GB of eMMC 5.1 Storage is required.

Where does that leave Intel or even AMD? Well, Intel has abandoned Atom because they have probably figured out how to make a Core series based SoC hit the 2W TDP but their 10nm fab is having yield issues, which is why CannonLake is postponed. AMD has also announced new APU that can step through the clock at 25Mhz increments thus providing more aggressive power management but being fab on a 28nm process, I reckon power consumption will be higher than KabyLake.

What this means is, Intel is trying to make their Core m CPU fit into a mobile environment so the CPU wouldn’t fry your smartphone. And AMD new Ryzen CPU isn’t ready for mobile.

Qualcomm just released information on their latest Snapdragon 835 SoC.

Based on the information released, SD835 supports new 3D audio processing and enhanced camera image processor. It looks like a future Microsoft Hololens 2 could be powered by the SD835! The Surface 4 could also be based on a SD835!

In the meantime, you can check up my past predictions which has come true below.

How Windows Phone 8 & Windows 8 can share software

OEMs can’t do it, so Microsoft DID IT!

Samsung losing patent case is Good for consumers!

Update 03 Feb 2017: Updated with the product codenames for future Windows features I have corrected predicted, like CSHELL and clearer explanation of CPU terminology.

Advertisements
Opinions

How Windows Phone 8 & Windows 8 can share software

Overview

Microsoft just generated a huge amount of buzz in the press & developer community when Microsoft’s Paul Thurrott confirmed a leak that Windows Phone 8 (WP8) codename “Apollo” will use Windows 8 kernel.

This is a big deal, bigger than what most people realise, because it means that Microsoft can have a standard integrated development environment (IDE) to target Windows 8 (for Intel x86/64 – Wintel), Windows on Arm (WoA) & WP8 (now a WoA)!

So when a developer wrote an app for Windows 8, he can automatically target both Wintel, WoA & with some tweaks for screen dimension, WP8!

What’s the big deal anyway?

Let’s me start by saying I’ve been a software developer for many years since C++ & Visual Basic 6. Unlike many developers these days, I’m what was called a system programmer, meaning I do low-level, machine interface stuff, including Assembler on embedded systems. I stopped coding professionally 8 years ago but I still do some projects here & there. So I’m aware of the going on in the development of Wintel, WP7 world.

Software is created by writing code in a language not unlike English. In order for the code to be recognised, you need the other party to also speak the same language.

Unfortunately, Intel Core i7 or nVidia Tegra-3 or Qualcomm Snapdragon CPU doesn’t speak English, so you need an intermediary. A translator that converts the code into machine language which is just a bunch of ones & zeros. This is the job of the compiler.

There are 2 ways to accomplish this. You can compile code directly into machine language or you can send your code into a translator that converts these code in realtime into machine language.

The advantage of the first approach is speed. The problem is you need to rewrite (port) code from one platform to another.

The second is the interpreter approach. A middleman will translate the code during software running time into machine code for the CPU to execute, hence the term, “runtime”.

The advantage is the ease of porting code from one platform to another. It still takes efforts & time to customise for the environment but at least there are less mundane chore to do/debug. The major problem is speed because the middleman also uses CPU resource. Multicore CPU mask some of the time but there’s still lag.

SO, where does Windows 8 fit into all these CPU discussion anyway?

Windows 8 is an Operating System. It’s job is to manage resources in CPU, memory, storage, network, graphics, user input, etc. The part that manage the hardware is called the kernel, which is itself a special software. The part that you see on the screen is the GUI, which is also software. All the apps that you use must interact with the kernel & GUI.

IIRC, the kernel of Windows Phone 7 is based on Windows CE, which is itself a branch of Windows 95 or earlier. It’s a very mature & stable kernel but doesn’t support multi-core CPU or pre-emptive multi-threading which is why multi-tasking on PocketPC/Windows Mobile always seem to hang or slow the phone with no way to recover but a soft reset. Surprisingly, Android 2/3 seem to share the same problems! But is mitigated somewhat by having multicore CPU.

Windows Phone 7 bypass this limitation by following Apple’s iOS when it was initially launched. No app is allowed to run in the background, except for a few that strictly follows certain parameters. Task switching was minimum, restricted to 5 open screens, not 5 open apps. This severely limited many enterprise apps which required ongoing background processing.

Now unlike Apple, which keeps its iOS & Mac-OS separately. Microsoft seems to want to consolidate their OS as early as 2003 with the MinWin initiative. Windows 7 is based on the Windows NT kernel, which was super robust but very monolithic in that all the services were integrated into the kernel, making it big & hard to debug or extend. Performance was good though because all the services exist in the same memory space.

The problem was, every time a new service is needed, like IPv6, Microsoft had to change the kernel without affecting other components. The complexity gets too much to handle even for a software house as big as Microsoft. The only way was to compartmentalized the kernel. Performance suffered a bit but can be recovered when developers optimise the individual components that were separated from the kernel.

This initiative culminated in Windows 8 using just 600+MB of memory footprint compared to Windows 7 800+MB in a TabletPC configuration. The kernel itself is only tens of MB! Small enough to fit in the future 256MB of RAM on a Windows Phone 7.5.x upgrade called “Tango”.

For WoA, the memory footprint will probably be similar to Wintel because Windows Desktop will also appear in WoA. However, as mentioned, for any developer who needs speed in their desktop apps like Microsoft Office, they will have to port their code & recompile the entire app to work in WoA Desktop environment. Which is why Microsoft was very secretive about whether legacy Windows Apps can run on WoA. My answer is, No. (Unless MS includes VirtualPC on WoA.)

It’s very clear to me that since Microsoft wrote the compiler in Visual Studio IDE & can port the entire Windows to ARM, it’s no problem for them to port MS Office as well! However, legacy apps compiled for Intel CPU will not work on WoA. Developers need to port their code.

The good news is, the new Visual Studio will probably support compiling to both Intel x86/64 & ARM all in the same IDE! Devs may need to set certain parameters but they do not need to invest in another IDE or train/hire new developers. Visual Studio will handle the differences in platform like it handles the difference in Intel & AMD CPU.

This is excellent news for Enterprise customers because it simplifies managing their business by providing a single platform that can run on Intel PCs in the office & WoA laptops/tablets for their mobile workforce. Intel CPU is much more powerful but ARM CPU uses much less power so having Windows on both platform solves a dilemma that has dogged the industry for more than 10 years. This is the reason why the iPad is so successful because even though Bill Gates envisioned a tablet future, it was Steve Jobs who realised the vision!

However, Steve had to compromise on functionality on the iPad because Mac-OS wasn’t optimised for low-memory/CPU computing. On top of that, Mac-OS was compiled for Intel CPU & it will take them time to find a good compiler to recompile for ARM, plus all the engineering needed to port the OS.

What about WP8?

Most of the 60,000 apps on WP7 are written in Silverlight & XNA. Both are interpreted code which requires a Runtime. This Runtime is also an integral of Windows 8.

Now that we know WP8 Apollo uses the NT kernel, it automatically means that WP8 supports multicore CPU, full pre-emptive multi-threading, multi-GPU & multi-displays on-top of the other regular stuff you find on iPhones & Android phones.

Since Microsoft has to compile Silverlight/XNA to work on WoA & Windows Phone is actually an ARM computer with a small screen, it means that there is NO difference between WoA Silverlight/XNA & Silverlight/XNA on Windows Phone as well! Do I even need to mention Silverlight/XNA is already in Windows 8 for x86/64?

Ultimately, this means that developers can use Visual Studio to compile speedy Native apps like MS Office for Wintel, WoA & WP8. If the situation doesn’t require speed, they can more easily program in Silverlight/XNA & enjoy low power consumption for Wintel, WoA & WP8 as well. The only major work is to change the interface to fit the screen & that’s it!

Conclusion

Microsoft has announced a range of screen size for the next version of Windows 8/WP8 & the reason is very simple.

All Windows machines will share a common interface & work the same. After adjustment for screen size, Silverlight developers can also easily target WP8 & Windows 8.

Native App developers can also easily target Wintel or WoA allowing the new platforms to gain huge number of apps in a short time. Having tons of apps drive adoption which is what ensures the survival of the platform.

I can’t wait! 8)