CP-PACS の PVP-SW 方 式 誕 生 のいきさつ 中 澤 喜 三 郎 筑 波 大 学 電 子 情 報 工 学 系 ( 当 時 ) CP-PACS の 思 い 出 話 について 何 か 書 くようにという 御 依 頼 ですので,こ こには, 筆 者 が 関 係 した 極 くざっくばらんなエピソードを 披 露 させて 頂 く. 分 散 メモリ 型 超 並 列 機 である CP-PACS システムの 大 きな 特 徴 として, node CPU に PVP-SW (pseudo vector processor based on slide windowed registers) 方 式 と 称 するアーキテクチャを 導 入 し, 擬 似 的 に microprocessor であっても vector processor 並 みの 高 性 能 を 実 現 し たこと node processor の 相 互 結 合 ネットワークに cost performance の 良 い hyper crossbar network を 使 用 したこと を 揚 げることができる. ここでは,CP-PACS の 独 自 の 方 式 であり, 本 開 発 を 通 じて 新 たに 考 案 された PVP-SW 方 式 が 誕 生 した 経 緯 を 書 き 留 めておくこととしたい. CP-PACS プロジェクトのスタート 時 に, 計 算 機 工 学 分 野 のメンバーも 参 画 することになったが,その 際 に, 筆 者 らが 意 識 していたのは,ある 応 用 の ための 専 用 機 ではなく, 一 般 の 科 学 技 術 計 算 にも 充 分 能 力 を 発 揮 するも のを 狙 いたい,そしてその 時 点 で 充 分 確 立 した 技 術 と 云 えるものではなか った 超 並 列 計 算 機 の 分 野 の 技 術 の 前 進 を 図 りたい,cost performance 的 にも 充 分 一 般 に 導 入 可 能 なものを 狙 いたいと 言 うことであった. しかし 限 られた 予 算 面 からも, 大 学 がもつ 開 発 力 からも, 世 の 中 一 般 製 品 化 されているものと 基 本 的 なところで 上 位 互 換 性 を 保 てるものである 必 要 があり,おのずから 一 般 の computer 技 術 の 発 展 の 方 向 に 合 致 したも のでなければならないことも 強 く 意 識 していた. 一 方,CP-PACS に 先 行 した QCD-PAX での 経 験 から,QCD 計 算 の グループでは CP-PACS では 相 当 高 性 能 なマシンの 開 発 が 期 待 されて 24
いた. そこで, 確 か 1991 年 の 夏, 予 算 が 付 きそうな 感 触 が 得 られた 時 点 で, 初 歩 的 なシステムの 構 成 と,QCD 計 算 の 核 になる 部 分 の 性 能 予 測 を 募 っ たところ, 最 初 に 某 会 社 から 提 案 のあったものではその 性 能 は 期 待 されて いたものとは 大 きな 隔 たりのある 低 いものであった. 幸 か 不 幸 か,この 不 満 足 な 性 能 がわかった 日 の 夜 は,プロジェクトのメン バーによる 夏 休 み 直 前 の 暑 気 払 いのコンパ をやる 日 であったが, 会 が 進 むほどに,この 性 能 不 足 のせいで 皆 の 気 分 は 沈 み 込 み, 暗 黒 の 暑 気 払 い として 記 憶 に 残 る 日 となってしまった. そこで,これではいけないと, 筆 者 も 夏 休 み 中, 性 能 が 出 ない 理 由 を 自 宅 で 熱 心 に 考 えることになった. 提 案 されていたシステムでは node CPU は; 基 本 の 命 令 set architecture は HP 社 の HP RISC architecture で あるものの, node CPU は 2 命 令 同 時 issue の super scalar RISC microprocessor で,clock 周 波 数 もその 時 点 での 先 端 な 150 MHz, であった. pipeline 化 された 演 算 器 も 浮 動 小 数 点 とは 別 々に 固 定 小 数 点 用 も 独 立 に 用 意 されていて, Multiply and Add 命 令 も 備 わっていて, cache memory も 通 常 のワークステーション 向 けのものに 比 し 大 幅 に 強 化 を 予 定 されていた. ということで, 一 応, 先 端 的 な 汎 用 の microprocessor であった. しかし,QCD 計 算 の 核 の 部 分 での 性 能 予 測 の 結 果 は 理 論 的 に 期 待 される peak の 300MFLOPS はおろか,その 20~30 % 位 の 性 能 しか 出 て いないものであった. そして, 性 能 が 出 ない 理 由 を 検 討 したところ, 最 大 の 原 因 は,QCD 計 算 が 必 要 とするような 大 規 模 なデータに 対 する 計 算 の 場 合 には,cache miss が 頻 発 して, 主 記 憶 より cache memory への 転 送 に 伴 う cache miss penalty が 主 要 原 因 であることに 思 い 至 った. つまり, 命 令 の 発 行, 演 算 器 の pipeline 動 作 は 充 分 休 み 無 く peak 性 25
能 が 出 るように 用 意 してあったとしても, 演 算 器 に 供 給 してやるべきデータ が 間 に 合 わなければ 充 分 な 性 能 が 出 る 筈 がないわけである. 実 は, 筆 者 はこれと 似 たような 困 難 を 嘗 て 経 験 したことがあった. 日 立, NEC, UNIVAC などで, 汎 用 の main frame computer の 付 加 機 構 として, 内 臓 型 の vector 処 理 機 構 ( integrated array processor IAP と 云 う), micro program を 工 夫 して vector 処 理 を 恰 も vector processor のように 処 理 しようという 機 構 のことで, 演 算 器 pipeline を 整 備 して 遊 ばせないよう にして cost の 高 い vector register を 備 えることなしに, 経 済 的 に vector 処 理 性 能 を 稼 ごうという 機 構 を 導 入 したのである.しかし,この 試 みは 結 局 あまり 成 功 しなかった. 一 方, 筆 者 らも 手 がけたことがある vector supercomputer の 場 合 を 考 えてみると,vector supercomputer では cache memory は 存 在 せず,それ に 代 わるものとしてかなり 大 容 量 の vector register(vr) が 用 意 されていて, 主 記 憶 と VR の 間 には load/store のための pipeline が 複 数 用 意 され, 演 算 器 が 必 要 とするデータは 予 め VR に 用 意 しておいて,データは 主 記 憶 とは 比 較 にならないほど 高 速 の VR から 遅 滞 無 く 途 切 れることなく 演 算 器 へ 供 給 されるようにすることで, 演 算 器 の pipeline 能 力 をフルに 利 用 でき るようにしている. つ ま り, 通 常 の supercomputer で は, cache memory よ り 高 速 な register を 充 分 な 個 数 用 意 し,しかもこの register と 主 記 憶 の 間 に 強 力 な pipeline を 用 意 して, 比 較 的 低 速 な 主 記 憶 access latency に 因 る penalty を 避 けるために,register を 指 定 しての 先 行 load(pre-fetch), と, 置 いてきぼり store(post-store) の 命 令 機 能 が 用 意 され, 主 記 憶 の 遅 さが 表 面 に 現 れないようにしているのである. 言 い 換 えれば 演 算 器 へのデー タ 供 給 能 力 に 大 きな 差 があるところに scalar processor と vector processor では 決 定 的 な 差 があることに 思 い 至 った. 問 題 が 発 生 する 原 因 がほぼ 明 らかになったので,これを 解 決 するには scalar processor といえども, 主 記 憶 との 間 に 何 らかの pre-fetch, post-store 手 段 を 設 けるべきで,そのためには 主 記 憶 との 間 でデータの やり 取 りをするための pre-fetch data buffer register をある 程 度 の 本 数 用 26
意 しなければならないという 考 えに 至 った. しかし,floating point register など program から 直 接 指 定 できる 通 常 の register の 個 数 を 単 純 に 増 やすことは,ベースとなる processor の 命 令 format,ひいては 命 令 set architecture に 重 大 な 変 更 を 要 すること になり, 直 ぐには 採 用 できないものであることも 明 らかであった. 結 局, pre-fetch data buffer を 導 入 する 必 要 性 は 明 らかになったものの, 導 入 方 法 に 関 しては 成 案 なしに 夏 休 みを 終 わってしまった. 夏 休 み 明 けに 大 学 に 戻 って, 筆 者 の 研 究 室 で 中 村 宏 講 師, 大 学 院 修 士 1 年 の 位 守 弘 充 君 の 3 人 で, 休 み 中 に 筆 者 が 考 えた 上 記 のような 所 ま での 説 明 をし,まだ 解 決 策 に 達 していない 旨 の 話 をし, 議 論 をした. そして, 議 論 を 終 わって 一 応 解 散 となり, 筆 者 が 自 室 に 引 き 上 げて 帰 っ た 直 後 に, 中 村 講 師 が 筆 者 の 自 室 に 来 て, 先 生, 位 守 君 が register の 本 数 を 増 やせば 良 いというのなら,SUN MICRO の SPARC のような register window なんて 云 う 方 法 も 考 えられる のでは と 云 っていますが,これでは 駄 目 ですよね. と 告 げたのです. それを 聞 いて, 筆 者 も そうだな. と 最 初 は 生 返 事 をしていたが, 中 村 講 師 が 部 屋 を 出 た 直 後 に, 待 てよ.これは 上 手 くいくかも 知 れない! と 急 に 思 いついた. そこで, 直 ぐに floating point register の 数 を 拡 張 して,register window 的 な 構 造 を 導 入 し, 別 途 pre-load, post-store 命 令 を 設 け, 主 記 憶 を 擬 似 的 な pipeline memory としておく ことで,base processor とは architecture 的 に 上 位 互 換 性 を 保 って 拡 張 したことになり, 一 応 の 解 決 策 となる PVP-RW (pseudo vector processor based on register window ) 方 式 の 仕 様 書 を 書 き 上 げた. ここでは,register window の 構 造 (global area, overlap area, local area などの register の 個 数 )は 殆 ど 固 定 的 なものであった.それでも, application program の 中 の Do-loop 部 分 を loop unrolling で modulo scheduling 手 法 で 擬 似 vector 化 して 扱 えば,vector processor 並 みの 性 能 が 発 揮 できる 方 式 であった. 27
この 時 点 ではまだ,この 機 能 を 活 かして 性 能 を 稼 ぐには, 最 悪 の 場 合 application program はユーザの hand coding に 頼 るのも 止 むを 得 まいと 思 っていた. しかし,ユーザが 機 械 語 のレベルでプログラムを hand coding しなけれ ばならないのでは, 如 何 にもお 粗 末 であるので, 早 速,compiler の 権 威 で ある 中 田 育 男 教 授 に PVP-RW の 案 を 纏 めたものを 見 せて,その 妥 当 性 と compiler support の 可 能 性 について 相 談 をした. 中 田 教 授 は,この 方 式 には 大 方 において 賛 意 を 表 してくれたが, PVP-RW では register window の window size も,offset の 採 り 方 もハー ドウェアで 固 定 的 であって,あまり 自 由 度 の 無 いものであったのだが,これ らを program で 任 意 に 指 定 できるようにして 一 般 性 を 持 たせるようにすれ ば compiler support も 可 能 になると 思 われるので,そうしたらどうかという 更 なる 改 良 案 の 示 唆 をいただいた. そうして 纏 め 上 げたのが, 任 意 の 場 所 へ window をスライドして 持 ってい く こ と が 出 来 る PVP-SW (pseudo vector processor based on slide windowed register ) 方 式 である. 研 究 室 の 何 人 かの 学 生 さんには,この PVP-SW 方 式 で modulo scheduling 方 式 がうまく 行 くかどうかを 検 討 してもらい, 一 方, 中 田 研 究 室, 山 下 研 究 室 の 方 々には compiler support についてよく 検 討 していただい た. 結 局,このようにして 誕 生 してきた PVP-SW 方 式 は, 丁 度 新 たに 一 般 向 けの MPU を 設 計 しようという 日 立 製 作 所 の 開 発 フェーズと 時 期 が 合 致 し,その MPU の 中 に 実 現 され,software のサポートも 日 立 によって 行 わ れ,CP-PACS の 高 性 能 実 現 の 強 力 な 武 器 になったのである. PVP-SW 方 式 は, 後 になって 考 えてみると, 結 局 のところ,その 後 現 れ た 高 度 pipeline 制 御 を 実 現 した MPU での hardware で 有 力 な 技 術 とな った register renaming 技 術 を 複 雑 な hardware の 制 御 機 構 を 設 ける 必 要 なしに software で assist した 非 常 にスマートな 方 式 であったわけで,その 後 に 現 れた IBM の Power architecture や,Itanium architecture にも, 類 似 の 機 構 が 導 入 されていることをみると, 暗 黒 の 暑 気 払 い を 契 機 として 28
誕 生 したとはいえ, 一 般 的 な computer architecture の 発 展 の 方 向 に 沿 っ た 方 式 を 編 み 出 し 得 たものと 考 えている. 29