RISCプロセサを超並列にした日立のSR2001/2201とCP-PACS

1996年6月にNWTに代わってTop500の1位になったのは、東京大学に納入された日立の「SR2201」である。そして1996年11月には、筑波大学/日立の「CP-PACS」がTop500の1位になった。

量子色力学(Quantum Chromo Dynamics)の専用計算マシン「QCD-PAX」を作った実績を持つ筑波大は、1992年から文部省(当時)の予算を獲得し、超並列スパコンの開発に取り組んでおり、メーカー側の開発パートナーとして日立を選択した。

そして、スパコンのCPUは、当時は日立が担いでいたPA-RISCアーキテクチャをベースに、ベクトル演算を支援するハードウェアを付け加える「HARP-1 CPU」を独自に開発した。1994年6月に発表された日立の「SR2001」は、90MHzクロックのHARP-1プロセサを8個~128個使用するスパコンであり、最大128個のHARP-1ノードを3次元クロスバネットワークで接続するというシステムであった。

HARP-1E CPUは疑似ベクトル演算機構で1演算/クロックを実現

筑波大学と日立は、本格スパコン「SR2201」の開発にあたり、HARP-1 CPUのクロックを上げ、疑似ベクトル演算機構を付けるという大きなエンハンスを行った「HARP-1E CPU」を開発した。

ベクトルを1演算/クロックで処理するためには、毎サイクル、演算器にオペランドを供給し、演算結果を格納する必要がある。ベクタ計算機は、高速にアクセスできるベクタレジスタを持ち、これを実現しているが、HARP-1Eプロセサは専用のベクタレジスタはもっていない。

SR2201はメモリ上で連続したアドレスに格納されているベクタの場合は、1次データキャッシュから直接、非連続なアドレスに格納されたベクタの場合は、それを連続したレジスタファイルに格納し直して演算器に供給することによって、これを実現した。

結果としてベクタデータを毎サイクルアクセスできるようにしており、RISCの演算器はベクタ演算器のように1演算/クロックで計算ができる構造になっていた。なお、HARP-1Eプロセサはこのように動作する2個の浮動小数点演算器を持っていたので、プロセサチップは毎サイクル2演算を実行することができた。

ただし、PA-RISCアーキテクチャではレジスタの数は32個であり、ベクタを格納するには容量が不足である。このため、HARP-1Eプロセサでは、次の図のように、g個のグローバルレジスタと32-g個のローカルレジスタをRISCが直接使用できるレジスタとした。そして、ローカルレジスタはSPARC RISCのようにスライドウインドウとして、多数(128個)のレジスタを持つ物理レジスタへのマッピングを変えてアクセスするという方法を取っていた。 このようにマッピング変更メカニズムを持つことにより、多数のレジスタを持たせることを可能にし、レジスタファイルにベクタを格納させていた。

また、HARP-1EはPreload/Poststoreという命令を持ち、先行ウインドウへのロードや後続ウインドウからのストアを行うことができ、演算器のレーテンシを隠してベクタプロセサのような効率の良い処理を可能としている。なお、SPARCプロセサのレジスタウィンドウはスライド量が一定であったが、HARP-1Eはスライド量を指定することができる可変のスライドとすることができるようになっていた。

筑波大/日立はこのアーキテクチャを「Pseudo Vector Processor based on Sliding Window(PVP-SW)」と呼んでいた。

  • SR2201

    SR2201のスライドウィンドウ機構。物理レジスタは128個備えていた (出典:筑波大学)

(次回は5月8日に掲載します)

2020年4月30日追記:記事初出時、HARP-1 CPUで疑似ベクトル演算機構で1演算/クロックを実現できる構造を採用していたと記述しておりましたが、疑似ベクトル演算機構はHARP-1のバージョンアップ版である「HARP-1E」からの搭載となるため、本文の一部をそれに併せて修正させていただきました。ご迷惑をおかけした読者の皆様、ならびに関係各位に深くお詫び申し上げます。