PR
図:既存のプロセサ・アーキテクチャに4種類の回路(影付きの部分)を追加することで「投機処理」型のマルチスレッド実行機能を備えたマルチコア・プロセサを実現する。
図:既存のプロセサ・アーキテクチャに4種類の回路(影付きの部分)を追加することで「投機処理」型のマルチスレッド実行機能を備えたマルチコア・プロセサを実現する。
[画像のクリックで拡大表示]
写真:FPGAで実現したPinotのプロトタイプ。
写真:FPGAで実現したPinotのプロトタイプ。
[画像のクリックで拡大表示]

 NECは,既存のアプリケーション・プログラムを自動変換して並列化し,マルチコア・プロセサ上で実行する技術を開発した(発表資料)。既存プログラムを実行形式(バイナリ)のまま自動変換して並列化するツールと,新たに開発したマルチコア・プロセサで構成する。

 今回開発したマルチコア・プロセサは「Pinot」と呼ぶ。特徴は,既存のプロセサ・アーキテクチャに「投機処理」と呼ぶマルチスレッド実行のためのハードウエアを追加したこと。これにより,既存の単一プロセサに対して互換性のあるマルチコア・プロセサを実現する。具体的には,スレッドの生成と,生成したスレッドを取り消す処理の両方を効率化し,スレッド実行の「やり直し」のコストを下げることで実現する。

既存プロセサに4種類の回路と3種類の命令を追加

 既存のプロセサ・アーキテクチャに4種類の回路を追加することで,1つのPE(プロセサ・エレメント)を実現する。複数のPEがレジスタ・ファイルを経由して通信し,一方向のリング状にデータを転送する仕組みである。

 拡張する回路は,(1)並列化命令用のデコーダ,(2)スレッド制御回路,(3)スレッド間転送機能を備えたレジスタ・ファイル,(4)「バージョニング・キャッシュ」と呼ぶデータ・キャッシュである(図を参照, The 38th Annual IEEE/ACM International Symposium on Microarchitecture, 2005 発表資料から引用)。

 並列化機能を利用するため,既存の命令セットに加えて,次の3種類の命令を追加する。新規スレッドを生成する「fork」,スレッド間のデータ・フローを管理する「propagete」,スレッド生成を取り消す「cancel」である。

 今回開発した並列化ツールは,既存のプログラムを実行形式のまま変換して並列化する。プログラムの制御構造を解析し,並列実行可能な要素を抽出してfork命令を適用する。人手を介さずに既存プログラムの並列化を実現できる点に特徴がある。

 シミュレーションにより,各種ベンチマーク・プログラムでの性能向上を確認している。「4プロセサ・エレメントの場合で,人手による並列化では性能が1.95倍になるところを,自動並列化により2.83倍に高速化した」としている。プロセサの設計は,Verilogにより記述した。現在,FPGAによりプロトタイプを実装した段階である。