Microsoft has shared bits and pieces of how it is adding new features to its development tools to better support parallel processing. But the next release of Windows client and server also are going to incorporate changes designed to improve their parallel-processing support.
While Microsoft execs and those who've managed to get their hands on early builds of Windows 7 have focused largely on user-interface tweaks in Windows 7, there will be some under-the-covers changes, too. Microsoft officials have said on the record that deep-level changes between Windows Vista and Windows 7 will be kept to a minimum, in order to insure application and driver compatibility. Yet Microsoft officials acknowledge that Win32, the core of Windows, is not suited for asynchronous, concurrent computing.
Microsoft is taking the first steps toward remedying this limitation with Windows 7 and its joined-at-the-hip sibling, Windows 7 Server (the product currently known as Windows Server 2008 R2). In the longer term, as I've blogged previously, the game plan is to find a way to exorcise Win32 from Windows and replace it with managed code -- preferably a set of programming interfaces that are better tailored to handle parallel-processing tasks across many processors. (That's where the incubation projects codenamed RedHawk, MinSafe and Midori all come in. But don't expect to see the fruits of any of these projects appear in Windows until Windows 8, at the earliest.)
At the upcoming Microsoft Professional Developers Conference in late October, Microsoft execs are slated to discuss "the key architectural changes Microsoft is making to Windows to enable the efficient execution of parallel software," according to a session description on the PDC Web site.
I asked Microsoft for more specifics as to what's changing in Windows 7 with regard to parallel-processing support. A spokeswoman said "Microsoft is not commenting on this level of detail regarding Windows 7 yet."
I got a few hints about what's on the drawing board, however, from Craig Mundie, Microsoft's Chief Research and Strategy Officer.
"Win32 was never designed for highly concurrent, asynchronous processing," said Mundie during a recent interview I had with him last week at the Emerging Technology Conference in Cambridge, Mass.
"Parallelism requires adjustments at every level of the stack," Mundie acknowledged. It involves "the repartioning of different tasks to different layers....So look for a rebalancing of roles and runtimes. We need to formalize that in the operating system. Expect thei first pieces in the next generation of Windows."
As one example of one Windows feature that needs this kind of rebalancing, Mundie cited the user-mode scheduling model. The existing Windows scheduler has "too much overhead," Mundie said. He noted that Microsoft has introduced a new trial model as part of its Robotics Development Kit runtime. Microsoft's robotics toolkit includes new concurrency and coordination (CCR) and decentralized software services (DSS) runtimes that are optimized for distributed/multicore computing.
According to Wikipedia, Microsoft already made some initial modifications to the scheduler in Vista:
"Windows NT-based operating systems use a multilevel feedback queue. 32 priority levels are defined, 0 through to 31, with priorities 0 through 15 being "normal" priorities and priorities 16 through 31 being soft realtime priorities, requiring privileges to assign....The scheduler was modified in Windows Vista to use the cycle counter register of modern processors to keep track of exactly how many CPU cycles a thread has executed, rather than just using an interval-timer interrupt routine."
While Windows today can handle machines with a few cores, it's not designed to exploit machines with 8, 16 or 32+ cores. I'm doubtful Microsoft will make too many tweaks to the lower-level operating system layers with Windows 7 and Windows Server 2008 R2 in order to keep user disruption to a minimum. But the early seeds designed to make Windows a better parallel/asynchronous-processing platform are being sown, starting in 2009.
Any guesses on what Microsoft might do in the Windows 7/Windows Server 2008 R2 timeframe to improve Windows' parallel-processing abilities?