Microsoftは並列処理のサポートを向上させるために、開発ツールにどのように新機能を追加していくかについて多少の断片を明かしている。しかしWindowsクライアントとサーバの次期リリースでもまた、並列処理サポートを向上させることを意図した変更が盛り込まれる予定だ。
Microsoft幹部とWindows 7の初期ビルドを体験することができた人々は、Windows 7のユーザーインターフェースに大いに注目していたが、ほかにも隠れた変更があるようだ。Microsoft関係者は、公表を前提として、Windows VistaとWindows 7との間では深いレベルでの変更を最小限に抑え、アプリケーションとドライバの互換性を保証すると述べていた。しかしMicrosoft関係者は、WindowsのコアであるWin32は、非同期の並列コンピューティングには適していないことを認めている。
Microsoftは、このようなWindows 7およびそれと一心同体の兄弟であるWindows 7 Server(現在はWindows Server 2008 R2として知られる製品)の制限の修復に向けた第1のステップをとっている。長期的には、以前に筆者がブログで述べたとおり、この作戦はWindowsからWin32を取り除き、マネッジドコードで置き換える方法を探すというものである――できれば多数のプロセッサにおよぶ並列処理タスクを処理できるように調整されたプログラミングインターフェースの一式である。(ここでコード名「RedHawk」「MinSafe」「Midori」といったインキュベーションプロジェクトの出番となる。しかしこれらのプロジェクトの成果がWindowsでみられるのは、早くても「Windows 8」以降にしか期待できない。)
来たる10月終わりのMicrosoft Professional Developers Conference(PDC)では、Microsoft幹部は「並列ソフトウェアの効率的な実行を可能とするためにMicrosoftがWindowsに加える主要な構造的変更」について話す予定であると、PDCウェブサイトではセッションについて説明している。
筆者はMicrosoftに対し、並列処理サポートに関してWindows 7では何が変わるのかについて、もっと詳しい内容を求めた。広報担当者は「MicrosoftはWindows 7について、このレベルの詳細についてはまだコメントしない」と述べている。
しかし筆者はMicrosoftの最高研究戦略責任者を務めるCraig Mundie氏から、何が構想に入っているのかについて、いくつかのヒントを得た。
「Win32は決して高度な並列、非同期処理のためには設計されていない」とMundie氏は先週マサチューセッツ州、ケンブリッジで開催されたEmerging Technology Conferenceでの筆者による取材のなかで述べていた。
「並列処理にはスタックの全レベルにおいて調整が必要とされる」とMundie氏は認めた。これには次を伴うという。「異なるタスクを異なるレイヤーに再パーティションすること…。そして役割とランタイムのリバランシングを探すこと。それをオペレーティングシステムのなかで形式化する必要がある。これらの最初の作品は次世代のWindowsで期待してほしい。」
Mundie氏はこのような類のリバランシングが必要とされるWindows機能の一例として、ユーザーモードのスケジューリングモデルを取り上げた。この既存のWindowsスケジューラは「オーバーヘッドが多すぎる」とMundie氏は言う。同氏は、MicrosoftがRobotics Development Kitランタイムの一部として新しいトライアルモデルを導入したことを指摘した。Microsoftのロボティクスツールキットには、分散型/マルチコアコンピューティングに最適化された新しい並列協調ランタイム(CCR:concurrency and coordination runtime(CCR)および分散ソフトウェアサービス(DSS:decentralized software services)ランタイムが含まれている。
Wikipediaによると、MicrosoftはすでにVistaのスケジューラに何らかの最初の変更を加えている:
「Windows NTベースのオペレーティングシステムでは、多段フィードバックキューが利用されている。0から31までの32のプライオリティレベルが定義されており、0から15のプライオリティは「ノーマル」なプライオリティであり、16から31のプライオリティはソフトなリアルタイムプライオリティとなり、特権を割り当てる必要がある…。Windows Vistaではスケジューラが、単にインターバルタイマ割り込みルーティンを使うのではなく、1スレッドあたりいくつのCPUサイクルが実行されたかを正確に追跡できるように、最新のプロセッサのサイクルカウンタレジスタを利用するように修正された。」
Windowsは今日でも2、3のコアのマシンを処理できるが、8、16、または32以上のコアのマシンを使うようには設計されていない。MicrosoftがWindows 7やWindows Server 2008 R2のレベルのオペレーティングシステムレイヤーの低レベルで、ユーザーの中断を最小限に抑えるためにあまりに多くの調整を加えるというのは疑わしい。しかしWindowsをより優れた並列/非同期プロセッシングプラットフォームとするための最初の種は2009年から蒔かれ始める。
MicrosoftがWindows 7やWindows Server 2008 R2の時間枠内で、Windowsの並列処理能力を向上させるために何をするか、心当たりはありませんか?
この記事は海外CNET Networks発のニュースをシーネットネットワークスジャパン編集部が日本向けに編集したものです。海外CNET Networksの記事へ