内容要旨 | | マイクロプロセッサは1971年に発表された4004の誕生以来,デバイス技術の進歩とアーキテクチャの進歩により発展を続けてきた.デバイス技術に関してはムーアの法則として知られるように,3年間でチップに集積するトランジスタ数が4倍になるというペースが続いており,これらのハードウェア資源を利用してVLIW方式,スーパーパイプライン方式,スーパースカラ方式などのプロセッサが開発されている. プロセッサ市場に視点を移すと,スーパースカラ方式が高性能プロセッサ・アーキテクチャの主流となっている.スーパースカラ方式は,従来のスカラプロセッサとのコード互換性を維持しながら,分岐予測を用いた投機実行やアウトオブオーダ実行といったアーキテクチャの改良により,命令レベルの並列性を抽出し,サイクル当たりの処理命令数を増加させることで性能を向上させている.また,2次キャッシュがチップ上に実装されるようになってきており,プロセッサの処理能力に対するデータ供給システムの処理能力不足を緩和しており,この点もプロセッサの性能向上に寄与している. このように,順調に性能を向上させてきたスーパースカラ方式だが,次のような問題点が指摘されている. ・分岐予測に成功すれば制御依存関係による性能低下を排除できるが,予測ミスが発生した場合には正しい制御流の再投入が必要となり,投機的に処理した命令を破棄しなければならない.分岐予測の精度は95%程度に向上しているが,残りの約5%の分岐予測ミスによりプロセッサ内の命令列が分断され,並列性を抽出するためのウィンドウを拡大することによる十分な利得が得られない. ・ロード命令の実行を開始するためには,先行してフェッチされたストア命令のメモリ参照アドレスが計算されている必要があり,データ依存関係を持たないストア命令であっても,そのアドレス計算が終了するまで,ロード命令の実行を遅らせる必要がある.この制約を曖昧なメモリ依存関係と呼び,並列性の抽出を制限する要因となっている. 前者の制御依存関係の解消を目指して,条件付実行を用いた分岐命令の削除や,分岐成立と不成立の両方のパスにおいて投機的に処理を進める複数パス実行の可能性が議論されている,また,後者の曖昧なメモリ依存関係の解消を目指して,ストアセットを用いた依存関係予測が提案されている.これらの予測手法を用いて,制御依存関係と曖昧なメモリ依存関係の多くを解消できるとすれば,真のデータ依存関係が命令レベル並列性を制限する大きな要因となる.従来,真のデータ依存関係を解消することは困難と考えられていたが,近年,真のデータ依存関係を解消する技術として,値予測を用いた投機処理の手法が提案された.これは,実際に計算をおこなってデータ値を得る代わりに,生成されるデータの値を予測することで処理を進めておくという投機処理技術である. チップに集積するトランジスタ数の急激な増加が追い風となり,これらの投機技術の利用は性能向上のための現実的な選択肢となっている.本研究では,既存のRISCプロセッサとのコード互換性を維持しながら,命令レベル並列性10をもたらす投機技術の確立を目的とする.この高い命令レベル並列性を達成するために,制御依存関係を解消する複数パス実行,曖昧なメモリ依存関係を解消する依存関係予測,真のデータ依存関係を解消する値予測の手法を議論し,以下の知見を得た. 一つ目の投機技術として複数パス実行を議論した.従来からおこなわれている単一パスの実行は分岐の結果(分岐成立または不成立)を予測し,予測先の命令を投機的に実行する.一方,Eager Executionとして知られる全パスの実行では,多くの分岐命令を跨いで投機的に実行するに従って,爆発的にパスの数が増加してしまう.このため,現実的なハードウェア量を考慮した場合には,プロセッサが利用できるパスの数を考慮して,パスを複製する分岐命令を選択するパス割付け戦略の性能が必要となる.提案されている幾つかのパス割付け戦略を比較検討した上で,各手法の利点を組み合わせるJRS-PM方式を提案した.シミュレーションによる評価により,命令レベル並列性,各パイプライン・ステージで処理される命令トラフィック,データキャッシュのヒット率を測定し,利用できるパスの数を16に設定した場合に59%の分岐ミスペナルティを削減できることがわかった.この時,各パイプラインステージで処理される命令数の増加は,単一パス実行の数倍に抑えられることを確認した.これらの評価により複数パス実行の可能性が一部確認された. 二つ目の投機技術として,曖昧なメモリ依存関係を解消する依存関係予測を議論した.まず,曖昧なメモリ依存関係がプロセッサ性能に与える影響を測定し,曖昧なメモリ依存関係を解消することで13%から18%の性能向上を達成できることを示した.これまでに提案されているストアセットを用いた依存関係予測は,実行中のストア命令にデータ依存関係を持たないロード命令を予測する.しかし,32%のロード命令は実行中のストア命令にデータ依存関係を持ち,ストアセットだけでは曖昧なメモリ依存関係の78%しか解消することはできない.このため,ロード命令が実行中のストア命令にデータ依存関係を持つ場合に,複数のストア命令から,データ依存関係を持つストア命令を特定するストア特定予測を提案した.シミュレーションによる評価により,ストアセットを用いた予測手法と,ストア特定予測を同時に利用することで,予測ミスの回数を抑えつつ,85%の曖昧なメモリ依存関係を解消できることが判明した. 三つ目の投機技術として,真のデータ依存関係を解消する値予測を議論した.これまでの研究では,予測する命令の前回の演算結果を今回の予測値として利用するLast-value予測や,過去の2回の演算結果の差分と前回の演算結果の和を予測値とするストライド値予測が検討されてきたが,これらの予測機構には予測ミスの回数が多いという欠点が存在する.この欠点の解消を目指した2レベル・ストライド値予測を提案した.2レベル・ストライド値予測では,ストライド値予測でミスした際のグローバルな条件分岐命令の履歴を保存し,同様のミスの発生を抑えることで,予測ミスの削減と正しく予測できる割合の向上を目指す.シミュレーションにより提案手法を評価し,予測をおこなう閾値を8に設定した場合に,最も高い14%の性能向上を確認した.この時,全実行命令の34%の命令の演算結果を正しく予測できることが判明した. 提案した3つの高レベル投機技術は,制御依存関係,曖昧なメモリ依存関係,真のデータ依存関係,という異なる依存関係を解消する.これらの高レベル投機技術はそれぞれを単体で利用できるが,複数の技術を同時に利用することで,プロセッサ性能の更なる向上が可能となる,本研究では,これらの高レベル投機技術の融合手法を議論した.シミュレーションによる評価により,複数の高レベル投機技術を同時に利用することで,より高い命令レベル並列性の利用が可能となることを示した. |