6章 海外調査報告

6.1 ISCA−2000調査報告

6.1.1 背景

 2000年6月10日より14日まで、カナダのバンクーバで開催されたIEEE Computer Society-TCCAACM-SIGARCH 主催の国際会議The 27th Annual International Symposium on Computer Architecture (ISCA-2000) に出席し、計算機アーキテクチャに関する調査をおこなった。ISCAは、今年で27回目を迎え、計算機アーキテクチャの分野では、最も実績のある国際会議の一つになっている。

ISCA-2000では、1件のキーノート講演、1件のパネル、29件の一般講演(投稿件数166、採択率17%)が準備され、参加者は444人、日本人の参加者は13人という状況であった。本報告では、一般講演の中から興味深かった6つの発表内容を紹介する。

6.1.2 調査内容

(1)  Multiple-Banked Register File Architecture

プロセッサの同時発行命令数と先見能力の増加により、多くのレジスタをもち、多くのボート数を備えるレジスタファイルが必要とされている。この要求を満たすために、レジスタファイルの構成が大規模となり、レジスタファイルへのアクセス時間がクリティカルパスの一つとなってきている。このような背景の中、本論文では、レジスタファイルのポート数とレジスタ数の増加という要求を満たしつつ、シングルサイクルでアクセスできるレジスタファイルの構成を目指すレジスタファイルキャッシュを提案評価している。

6.1.1 レジスタファイルキャッシュの構成

レジスタファイルキャッシュの構成を図6.1.1(b)に示す。データキャッシュなどの階層化されたメモリ構造の概念をレジスタファイルに採り入れたものと考えればよい。図6.1.1(a) に示す単一レベルのマルチバンク化はDEC Alpha21264 の実装に例があるが、提案手法のレジスタファイルキャッシュは容量が小さいが高速な上位の階層と、容量が大きいがアクセスに複数のサイクルを必要とする下位の階層の複数階層によりレジスタファイルを構成する。レジスタファイルにキャッシュと同様の概念を導入したことで、低レベルのデータを上位のレベルに転送するプリフェッチの戦略が性能を左右する要素となる。論文中ではプリフェッチのための幾つかの戦略を議論している。

 レジスタファイルキャッシュを実装し一般的な構成と動作周波数を比較検討したところ、一般的なシングルサイクルのレジスタファイルは191MHzで動作し、2サイクルにパイプライン化したレジスタファイルは383MHz、一方のレジスタファイルキャッシュは後者に匹敵する382MHzで動作することが明らかになっている。検討したレジスタファイルキャッシュでは、上位の階層のレジスタ数が16、下位の階層のレジスタ数が128という構成を想定している。ここで得られた動作周波数を考慮してプロセッサの性能を測定した結果、パイプライン化されていないシングルバンクのレジスタファイルを用いた場合と比較し、レジスタファイルキャッシュの採用により90%程度の性能向上を達成できるという結果が報告されている。

本研究へのコメント: 多くの物理レジスタの確保、多くのポート数の提供,アクセス時間の低減が、高性能プロセッサのレジスタファイルに求められている。従来は単純な構成を採用していたレジスタファイルに関しても,キャッシュのように複数階層の構成が必要とされている。キャッシュの構成が複雑化しているように、今後,高い命令レベル並列性を利用するプロセッサにおけるレジスタファイルの複雑化は避けられないのではないか。

(2)  On the Value Locality of Store Instructions

 ある機械命令が過去に生成した演算結果(データ値)と、今回生成するデータ値との関連を value locality とよび、プロセッサ性能に与える影響の大きいロード命令の演算結果を予測するデータ値予測の手法が議論されている。一方、ストア命令のvalue locality に関してはこれまで議論されていなかった。本論文では、ストア命令の value locality に注目して、その性質と利用法を議論している。

6.1.2 サイレントストアの実行比率

 論文では、ストアするデータ値とその直前のメモリの内容が等しく、その実行によってシステムの状態に影響を与えないストア命令をサイレントストアと名付け、その実行割合を測定している。全実行ストア命令に対するサイレントストアの割合を測定した結果を図6.1.2に示す。このグラフから、全実行ストア命令の20%から62%がサイレントストアであることがわかる。

 図6.1.2に示した予備評価の結果より、サイレントストアを排除することによるシングルプロセッサの性能向上の可能性を議論している。サイレントストアはNOP命令と同様にシステム状態に影響を与えない命令であり、これを実行前に識別することができればハードウェア資源を不必要な命令に割り当てることなく、資源を有効に活用できる可能性がある。このようなサイレントストアの検出と無駄な実行を省略する現実的な手法として、当該ストア命令に先行する全てのストア命令のアドレスが機知であるときに、メモリからデータをロードし、ロードした値と当該ストアがストアする値が等しかった場合に、サイレントストアとしてリタイアをおこなわないという手法を提案し、これにより、プロセッサの性能を6.3%向上できることが報告されている。

 論文では、サイレンスストアの概念を用いて、マルチプロセッサシステムにおけるフォールスシェアリングの新しい定義を与えている。ここでは正確な定義ではなくそのアイデアを示す。従来はメモリアドレスのみを考慮してフォールスシェアリングを定義していたのに対して、データの値を考慮するサイレントストアの概念を用いることで、キャッシュのあるブロックがストアにより上書きされ、従来の定義ではフォールスシェアリングと判断された場合でも、そのストアがサイレントストアであればフォールスシェアリングに含める必要がないという発想で、フォールスシェアリングを捕らえることを提案している。

本研究へのコメント: ストア命令のデータ値の局所性に関する様々な事柄がまとまっていて興味深い。新しい概念の定義とその可能性の検討が本論文の主題であり、評価結果は初期的な構成のものである。今後、提案された概念を利用する洗練された手法の検討や、より詳細な評価が必要と考えられる。

(3)  Completion Time Multiple Branch Prediction for Enhancing Trace Cache Performance

 近年の高性能プロセッサはサイクル当たりにフェッチする命令数が4命令程度に増加し、今後は8命令程度への拡張が検討されている。汎用の整数演算プログラムにおける分岐命令の実行頻度を見ると5命令に1つが分岐命令であり、サイクル当たりに1個の分岐予測だけでは十分な命令をフェッチすることが困難となってきている。このような背景の中、木構造を利用してサイクル当たり複数回の分岐予測をおこなうマルチ分岐予測を提案評価している。

従来から使われている一般的な分岐予測と3つの分岐予測を同時におこなうマルチ分岐予測の様子を図6.1.3に示す。通常の分岐予測では、分岐成立あるいは不成立という1ビットの値を出力するが、3つの分岐方向を同時に予測するマルチ分岐予測では8通りのパスから一つを選択する3ビットの予測となる。

6.1.3 分岐予測 (a) とマルチ分岐予測 (b)

 

6.1.4 TMPの構成

 論文では新しいマルチ分岐予測として、Tree-Based Multiple Branch Predictor (TMP) を提案している。TMPの構成を図6.1.4に示す。この図では、分岐成立、不成立、不成立というパスを経て基本ブロックB0に到達し、この時点で後続のパスを予測する様子が示されている。TMPは当該基本ブロックの分岐命令のアドレスB0 と、そこに至るグローバルな履歴を用いてテーブル Tree-PHT のインデックスを生成し、そこに格納されている予測ビット TTNT(Tは分岐成立、Nは分岐不成立を表す。) により、後続の分岐結果を予測する。Tree-PHT には、当該基本ブロックから始まるコントロールフローの情報が木構造として格納されており、分岐結果によりこの木構造の情報を更新する。

情報更新の様子を図6.1.5に示す。今、それぞれのノードには2ビットの飽和型カウンタが割り振られているとする。図6.1.5では、ある状態の予測パスが NTNT だった場合に、分岐予測結果 TNNN を受けて情報を更新した結果、次の予測は TNTT となる様子が示されている。

6.1.5 Tree-PHT における木構造の更新

 TMPを構成する分岐予測の方式やパラメタを変化させた評価の結果、Tree-PHTのエントリ数を2K、全体のメモリ量72KB の時に、1ブロックの予測成功率96%、2ブロックの予測成功率93%、3ブロックの予測成功率87%、4ブロックの予測成功率82%と同時に予測する基本ブロックの数を増やしたとしても、高い予測成功率を達成できることが示されている。

本研究へのコメント: サイクル当たり複数の分岐命令の分岐先を予測するために3レベルの予測機構が提案されている。命令レベル並列性の利用が向上することで、分岐予測に関しても新しい仕組みが必要とされている。提案手法にあるように、ハードウェアの複雑さは増加するが、着実な性能向上が得られているのも事実である。

(4)  Trace Preconstruction

 高バンド幅と低レイテンシの命令供給を目指してトレースキャッシュが提案されている。トレースキャッシュは、動的な命令の流れ(トレース)を連続する物理メモリに格納するキャッシュであり、同様のトレースをフェッチする場合に、バッファからの連続的な命令供給を可能とする。しかし、トレースキャッシュにおける容量あるいは競合ミスによる命令供給の効率低下は避けられない。このような背景の中、本論文ではプリフェッチと同様の手法を用いたトレースキャッシュの性能改善を目指している。

6.1.6 トレースキャッシュにおけるスローパス

 図6.1.6にトレースキャッシュと一般的な命令キャッシュの関係を示す。トレースキャッシュに存在するトレースの実行している間は、図6.1.6の下側に示した高速なパスを利用できるが、トレースキャッシュにミスした場合には上側の遅いパスを用いて命令を供給とトレースの生成をおこなう必要がある。本論文では、下側のトレースキャッシュにヒットしている間は、上の低速の部分が何も仕事をしていないことに注目し、将来、必要そうなトレースを事前に生成することで性能向上を狙ったものである。

 論文では、将来利用しそうな命令列の開始点を検出する発見的な手法を提案し、トレースを事前に構築しておく手法による性能向上率を測定している。評価結果から、30%から80%のトレースキャッシュのミスを削減でき、プロセッサ性能では提案手法により3%から10%の性能向上が得られたと報告されている。

 本研究へのコメント:仕事がなく遊んでいる機能ユニットに有効な仕事をさせるという発想は単純だが、これにより性能向上を得ることはそう簡単ではない。本論文では、将来実行されるであろう命令を、関数呼び出しと、ループのバックエッジに注目して検出しており、これらの発見的手法による予測成功が、そこそこの性能向上につながっていると考えられる。

(5)A Fully Associative Software-Managed Cache Design

プロセッサとメモリの間の性能差が広がっており、極端な場合には、キャッシュのミスにより1000命令に匹敵するレイテンシが発生するといった状況が生じつつある。一方で、Alpha 21364 に見られるようにオンチップのSRAMキャッシュはメガバイトを超えており、このような巨大なキャッシュの利用法についての再考が必要となっている。このような背景の中、本論文では、フルアソシアティブの構成を持ち、ソフトウェアにより管理される現実的なキャッシュシステムを提案評価している。

6.1.7 Indirect Index Cache (IIC) の構成

 提案されているキャッシュIndirect Index Cache(IIC) の構成を図6.1.7に示す。参照アドレスからインデックスを生成し、そのインデックスを用いてプライマリハッシュテーブルを参照する。この中に、該当するタグが存在する場合には、プライマリハッシュテーブルのヒットとなる。プライマリハッシュテーブルにミスした場合には、セカンダリの記憶領域を参照する。ここで、従来のキャッシュと異なる点は、プライマリとセカンダリの記憶領域にデータは格納されず、図6.1.7右に示したデータアレイへのインデックスが格納されている点である。

 IICにヒットした場合にはハードウェアによりブロックの参照ビットが更新される。一方、IICにミスした場合には、ソフトウェアにより頻繁に参照されないブロックを検出し、必要とされているブロックと置き換える。このために、4つの優先度付きのバッファを用いた置き換えアルゴリズムを提案しているが詳細は省略する。 

 評価結果から、従来の4ウェイのセットアソシアティブのLRUキャッシュと比較して、IICにより8から85%の参照ミスを削減できたと報告されている。

 本研究へのコメント: 大規模なオンチップの2次キャッシュの利用方式を再考し、ソフトウェアにより制御できるキャッシュを提案している。プロセッサとメモリとの性能のギャップが広がりつつある現在、高性能プロセッサのためのメモリ構成の根本的な部分での再検討が必要となっている。

(6)Piranha: A Scalable Architecture Based on Single Chip Multiprocessing

  命令レベル並列性を抽出する複雑なプロセッサは、開発のコストが高く設計の期間も長いことが多い。一方で、トランザクション処理においては、利用できる命令レベル並列性は少ないが、スレッドレベルやプロセスレベルの豊富な並列性があり、無理に命令レベルの並列性を抽出する必要はない。このような状況と半導体技術の進歩を考慮すると、チップマルチプロセッサという選択肢が魅力的となっている。この論文で紹介されている Piranhaチップは、Compaq の研究プロトタイプであり、少人数の設計チーム、適度なコスト、短い設計期間で汎用高性能プロセッサを凌ぐ性能の達成を目的としている。

6.1.8 シングルチップのPiranha処理ノード

Piranhaチップの構成を図6.1.8に示す。シングル発行、インオーダ実行、のシンプルなプロセッサ(500MHz動作)を8つチップ上に集積する。データベース処理を用いた詳細な評価よりPiranhaチップと、高性能なアウトオブオーダ実行プロセッサの性能が比較されている。この評価結果を図6.1.9に示す。この図ではOLTP,DSSという2つのアプリケーションにおいて、シングルプロセッサのPiranha(P1), インオーダプロセッサ(INO)、4ウェイのアウトオブオーダプロセッサ(OOO)、8プロセッサを集積したPiranhaチップ(P8)の結果が比較されている。この結果から、Piranhaチップで高い性能を達成できることがわかる。

本研究へのコメント: 今回の評価は低い予算と短い開発期間のプロトタイプを前提としており、コストと開発期間をかければ更なる性能向上が期待できる。特にトランザクション処理におけるチップマルチプロセッサの有効性が明らかに示されている。

6.1.9 シングルチップのPiranhaとアウトオブオーダ実行プロセッサとの性能

6.1.3 全体的なコメント

27回目を迎えるISCAは、例年通り、非常に興味深いアイデアや報告に溢れていた。

近年のプロセッサの話題では、Transmeta社のcrusoeチップに見られる動的な実行コードの変換技術や、1GHzを超える動作周波数のプロセッサの実用化など、その発展には目を見張るものがある。ISCAの発表においても、命令ウィンドウ、レジスタファイル、キャッシュ、分岐予測、データ値予測といった要素技術における発表がおこなわれ、計算機アーキテクチャを取り巻く状況の変化から、プロセッサの要素技術に関しても大きく変化していく可能性があることを実感できた。

並列計算機やマルチプロセッサの話題では、内部でクロスバスイッチを採用し、バンド幅を大幅に向上させた Compaq ES40 の詳細な評価結果が報告された。また、トランザクション処理における高いスループットを目指したチップマルチプロセッサのプロトタイプ Piranhaチップ が報告された。Piranhaチップは、複数のシンプルなプロセッサをシングルチップに集積し、開発コストを抑えながら汎用の高性能プロセッサを越える性能を達成できることを示しており、今後のプロセッサ開発に大きな影響を与えると考えられる。