![]() |
Microsoft Research is dedicated to conducting both basic and applied research in computer science and software engineering. |
Microsoft Reseachの研究者からHelios: Heterogeneous Multiprocessing with Satellite Kernels [PDF]というホワイトペーパが公開された。Heliosと呼ばれる、異なるアーキテクチャや異なる特性をもったCPUに対して透過的に利用できるOSを設計して実装したという内容のもので、Windowsへの適用の可能性も示唆されているなど興味深い内容となっている。
これまでのPCにおけるコンピューティングは対称性の強い、かつ、キャッシュに強く結びついたアーキテクチャになっていた。性能を発揮するにはこうしたアーキテクチャに適した設計と実装が必要だった。これが最近のPCでは対称性を失いつつある。代表的なものはGPUとNICだ。どちらもプログラマブルなデバイスに変わりつつあり、高性能なベクタ処理を実現したり、高速ネットワーク通信を実施するには、こうしたプログラマブルデバイスの能力を使う必要がでてきている。
現在主流のOSは、デバイスドライバを経由してこうしたプログラマブルデバイスを活用している。たとえばLinuxやFreeBSDではネットワークスタックの処理の一部をNICのH/W機能に委託するオフロードを実施して高速ネットワーク通信を実現している。こうした取り組みではそれ専用に開発を行う必要があり、汎用的には扱えない。特権モードで動作するプログラムは専門の処理に特化して複雑になりがちという問題もある。
Heliosは、PCに設置されたプログラマブルデバイスのように、アーキテクチャも処理特性も違うコンピューティングデバイスに対して、透過的に扱えるOSを提供しようという取り組みのもの。同じくMicrosoft Researchで開発されてきたマイクロカーネルベースのSingularityをベースに開発されている。HeliosにはSatelliteカーネルと呼ばれるマイクロカーネルが用意されており、それぞれがスケジューラ、メモリマネージャ、ネームスペースマネージャ、カーネル間コミュニケーションコードをもっている。処理を実施するデバイスごとにSatelliteカーネルが起動され、OSドライバやFSなどのサービスはプロセスとして動作する。デバイスごとにSatelliteカーネルを起動することでH/Wレイヤを抽象化し、そこで動作するアプリケーションに単一のAPIを提供しているところが簡素化のポイントなっている。
コンパイルには2段階の手順がとられている。まず最初のコンパイルで中間形式へビルドし、実行する対象デバイスがわかったら、今度は中間形式から対象アーキテクチャのインストラクションセットへコンパイルを実施する。ホワイトペーパではIntel XScaleプログラマブルデバイスPCI Express I/OカードとキャッシュコヒーレントなNUMAアーキテクチャの組み合わせでHelios (XScale Sattelite Kernel + NUMA Satellite Kernel)を動作させ、いくつかのアプリケーションのパフォーマンス向上を確認したと報告がある。
GPUに対応したSatteliteカーネルの開発は今後の課題、NUMA Sattelite間のCPUやメモリを移動する架け渡しについても今後の課題と説明がある。また、この実験では限定的なアプリケーションについてのみ調査が実施されたものであるため、将来的にはWindowsなどより一般的なOSでSatteliteカーネルを実現する方法へ取り組んでいくという説明がある。