今年のCESの基調講演でMicrosoftは次世代のWindowsをARMプロセッサにも対応させることを発表した。その影響はいろいろとあるだろうが、ここでは、ここに至る道を考えてみたい。

デモが行われたARM版Windows。Qualcom、TI、NVIDIAの各社の開発ボード上でWindowsを動作させた。

ARMバイナリのOfficeを動かすデモも行われた。Microsoftは、ARM版Windowsに対してもOfficeを提供する予定があるという。

元々複数CPUアーキテクチャに対応していたWindows NT

現在のWindows 7などに使われているカーネルは、Windows NT由来のもので、NT 5.0がWindows 2000として登場し、Windows XPで従来のWindows 95系のカーネルを置き換えた。

そのWindows NTは、移植性の高いオペレーティングシステムとして最初Intelの860プロセッサ(IntelのRISCプロセッサ。これはのちに960となりIOプロセッサなどに利用される)用に開発が進められた。というのは、それまでのMicrosoftのオペレーティングシステムは、ハードウェア依存部分が分離されておらず、個別に移植が必要だったからである。当初は、Microsoftだけが移植でき、そのためにOEMビジネスが成立したのだが、多数のハードウェアメーカーが参入してくると、移植作業が膨大になり、これがビジネス拡大の足かせにもなっていた。このため、Microsoftは、移植が簡単になるように、全体を高級言語で記述した次世代オペレーティングシステムの開発に着手したのである。

また、当時、いわゆるUnixワークステーションが流行しており、主流のプロセッサはRISCだった。Intelは、これに対抗するため、860を開発したが、実際にワークステーションに採用するところがほとんどなかった。

Microsoftも、ワークステーションがDTPやCADなどのハイエンド分野で利用され、PCよりも高性能であり、ハイエンド領域では、当時のWindows 3.x系ではどうしようもなかった。

また、Windowsの上位版として考えていたOS/2は、IBMとの関係からMicrosoft的には手を引きつつあり、Windowsの上をカバーするというわけにもいかなかった。

その中ででできたのが元DECでVMSの開発を行ったデビット・カトラーによる新しいオペレーティングシステムの開発である。これは「New Technology」と呼ばれ、これが「NT」の名称の元になった。

その後、旧コンパックが、ARCと呼ばれるプロジェクトを立ち上げる(以前のWindowsにあったBoot.intファイルで使われていたArcパスに名前が残っている)。これは、MIPSチップを使った低価格のワークステーションで、そのオペレーティングシステムにはNTが使われる予定だった。

結局、NTは、正式発表の前の時点で、i386とMIPSにも対応することが決まり、プロジェクトは混乱を極めたという。

Windows NTは、その後、他のRISCチップにも対応することになる。移植性の高いOSとして高級言語を使って記述するという基本的なアイディアは、Unixが実現し、実績のあるものだった。逆にいうと、この移植性の高さが数多くのワークステーションを生んだ理由ともいえる。

NTは、AlphaやPowerといったプロセッサにも対応し、一時は、DECなども自社ハードウェアに搭載して製品化を行った。

しかし、Windows NTは、オープンソースではないため、各社がそれぞれメンテナンスを行うというわけにはいかず、基本的な部分はMicrosoft内部のみ行われ、このために開発リソースが不足。一時は、メーカー各社に開発技術者の投入を依頼したものの、結局、x86系以外はあきらめることになった。

そういうわけで、現在のWindowsは、他のプロセッサに移植する基本的な条件は備えていた。しかし、実際には、パフォーマンスを上げるために、デバイスドライバをカーネル側に戻す(NTはマイクロカーネル構造で当初デバイスドライバはカーネル外のユーザーモードで動作するように作ってあった)など、かなり内部が混乱した状態にあった。

これをすっきりさせたのがWindows Vistaと7である。Windows Vistaでは、基本的な部分が整備され、下位互換性などの整理を行った。

次のWindows 7では、起動に必要な部分をmini-Windowsとして定義、これに必要なファイルなどを追加して製品を作ることで、全体を整理した。これで、再び他のプロセッサに移植する準備が整ったのだといえるたろう。

そして、今回、ようやくNTカーネルは、複数のCPUプラットフォームへ戻ってきた。