Microsoft officials have been talking up, as of late, the need for some fundamental changes in software design and development to accommodate the shift to many cores on client systems. There are several Microsoft Research projects focusing on various aspects of the many-core challenge. The newest and seemingly most far-reaching of these is MS-ManiC.
According to a new page on the Microsoft Research site, the MS-ManiC (Memory Systems for Many Cores) project
"is focused on designing scalable memory system architectures for future many-core processors. The memory system is not only one of the major performance bottlenecks in chip multiprocessors, but its design can lead to serious energy inefficiency, unpredictability, and security holes. Our goal is to design a scalable and balanced memory system using a holistic hardware/software approach. We are interested in designing high-performance, energy-efficient, and secure memory system that at the same time provides quality of service to applications utilizing it."
Sounds ambitious. What form would such a memory system take and when might it move from research to a product group? No word. In fact, there's very little information (yet) on the MS-ManiC site, other than a link to a newly published whitepaper, "Memory Performance Attacks: Denial of Memory Service in Multi-Core Systems," (which is part of the proceedings of the 16th USENIX Security Symposium from August 2007).
The two Microsoft researchers who wrote the whitepaper seem to be affiliated with MS-ManiC: Thomas Moscibroda, a member of Microsoft's Distributed Systems and Security Research Group, and Onur Mutlu, a member of the Systems and Networking Research Group.
There's another Microsoft Research project in the massively parallel/distributed computing arena on which I've been keeping tabs: Microsoft Dryad. Dryad is Microsoft's head-to-head competitor with Google's MapReduce technology. According to the Research site, Dryad is:
"an infrastructure which allows a programmer to use the resources of a computer cluster or a data center for running data-parallel programs. A Dryad programmer can use thousands of machines, each of them with multiple processors or cores, without knowing anything about concurrent programming.... This system is currently deployed in a live production system as part of one of Microsoft's AdCenter log processing pipelines."
I hadn't perused the Dryad home page for a while, but there's quite a bit of info there now, including an architectural diagram of how Dryad fits into the Windows clustering architecture. There's also some new info on DryadLINQ, which "generates Dryad computations from the LINQ Language-Integrated Query extensions to C#."
I'll be curious to see how, when and if MS-ManiC and Dryad move from research initiatives to commercial status....