Comments
Description
Transcript
Out-of-Order スーパスカラ・プロセッサの FPGA への
卒業論文 Out-of-Order スーパスカラ・プロセッサの FPGA への実装 平成 18 年 2 月 13 日提出 指導教員 坂井修一 教授 五島正裕 助教授 電子情報工学科 50379 杉本 健 概要 FPGA に実装された out-of-order スーパスカラプロセッサは非常に有用であるにも関わらず、こ れまで実装されたことはなかった。そこで本研究では、 FPGA 上に out-of-order スーパスカラプロ セッサの設計及び実装を行った。その過程で、 SRAM のポート数が FPGA に out-of-order スーパス カラプロセッサを実装するのを妨げる最大の原因であることがわかった。その為、必要なメモリの ポート数がなるべく少なくなるように設計を行い、 SRAM のポート数を増やすための方策を取り 入れた。 Altera 社製の FPGA である Stratix シリーズ上で設計及び実装を行った結果、 50MHz 以上の周波数で動作する out-of-order スーパスカラプロセッサを実装することに成功した。 1 目次 第 1 章 はじめに 1.1 1.2 背景 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 構成 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 第 2 章 実装上の問題点 2.1 2.2 2.3 ASIC と FPGA の違い . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . SRAM のポート数の制限 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . SRAM のポート数対策 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 第 3 章 構成 3 3 4 5 5 6 7 . . . . 10 10 10 10 14 4.1 実装環境 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 17 4.2 4.3 動作確認 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.1 3.2 3.3 3.4 way 数 . . . 命令セット 全体構成 . . 演算器構成 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 第 4 章 評価 性能評価 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.3.1 IPC 4.3.2 4.3.3 4.3.4 最大動作周波数およびハードウェア量 . . . . . . . . . . . . . . . . . . . . 消費電力 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 比較 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 第 5 章 関連研究 5.1 5.2 NIOSII プロセッサ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . SCOORE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 第 6 章 おわりに 6.1 6.2 17 17 17 17 19 21 22 22 22 まとめ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 23 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 今後の課題 2 第 1 章 はじめに 1.1 背景 近年のプロセッサの研究において、性能評価のためにシミュレーションがよく行われる。しかし、 シミュレータは「プロセッサそのもの」ではなく、あくまで、「プロセッサのような動作をする抽 象的なもの」である。そのため、シミュレーションを行う際には、次のような問題が付きまとう。 1. ある手法が、実際のプロセッサで実装するのは非常に難しいがシミュレータ上で実装するの は簡単である、という場合は非常に多い。そのため、シミュレーションを行うだけでは、そ の手法が現実的に実装可能であるかどうか判断することは難しい。 2. シミュレーションによって、手法自体の正当性を示すことはできない。そのため、手法は正 しいものと仮定して、シミュレーションによる評価が行われている場合が多く存在する。 これらの問題を解決するために、実際にプロセッサを回路として実装し、検証を行うという方法 が考えられる。このアプローチをとるためには、どのような方法を用いてプロセッサを回路として 実装するのが妥当であるのか、考える必要がある。 回路を作成するための手法として、一般的に、 ASIC (Application Specified Integrated Circuit) と FPGA (Field Programmable Gate Array) の2種類が存在する。 ASIC とは特定用途向けの集積回路の総称である。別名、カスタムチップなどとも呼ばれる。そ れぞれの回路個別に専用のマスクパターンを用意して回路作成が行われる。マスクパターンとは、 回路図の形状が描かれたパターンのことで、これを用いてシリコン上に回路が描かれる。このマス クパターンは非常に高価なものである。そのため、少量生産ではコストが非常に高くなると共に、 失敗した場合はマスクパターンを作り直す必要があるため、やり直しのコストは非常に高い。ま た、設計が難しいと共に、開発から市場流通までの期間が非常に長い。しかし、設計を自由に行う ことができ、実装次第で高い性能を引き出すことができる。また、1種類の回路に対して必要なマ スクパターンは1つだけなので、同じ回路を大量に製造する場合には回路1つあたりの原価は低下 する。 FPGA とは製造後にユーザー側で内部の回路を自由に設計・変更することができる集積回路で ある。ユーザー側で何度でも自由に簡単に回路を書き換えることができるため、失敗してもコス トはかからない。また、マスクなどを個別に管理する必要がない。さらに、設計終了後すぐにディ バイス上に実装を行うことができるため、開発後すぐに市場に流通させることができる。ただし、 FPGA の動作速度は、 ASIC のそれと比べると大きく低下する。以前は、回路は大抵 ASIC を用い て作成されてきたが、最近 FPGA の性能が大きく向上してきたため、 ASIC でなく FPGA を用い て実装された回路を搭載した製品も多く出回るようになってきた。 ASIC と FPGA のこれらの特徴を考え合わせると、 FPGA を用いて実際に回路を作成すること が、シミュレーションを行う上での問題を解決する1つの方法と考えられる。このアプローチを取 るためには、 FPGA 上にプロセッサを実装する必要がある。 3 FPGA 上に実装されたプロセッサのことをソフトプロセッサと呼ぶ。ソフトプロセッサには、例 えば、NiosII [2] などの商用のプロセッサや、ソフトプロセッサとして使用することも、 ASIC 上 に搭載することもできる、OpenRISC [10] のようなオープンソースで配布されているものも存在す る。しかし、このようなソフトプロセッサとして使用可能なプロセッサコアは、ほとんどすべてが in-order スカラプロセッサである。それに対して、現在のアーキテクチャの研究でベースモデルと なるプロセッサは、 out-of-order スーパスカラプロセッサである。そのため、シミュレーション上 の問題解決のためには、 FPGA 上に新たに out-of-order スーパスカラプロセッサを実装する必要性 がある。現在、唯一の FPGA 上の out-of-order スーパスカラプロセッサと呼べるものは SCOORE [7] であるが、これも現在実装中であり、正しく動作する段階まで達していない。 このように、 FPGA 上に out-of-order スーパスカラプロセッサを実装する価値は高いと考えられ るのに対して、現在、そのようなソフトプロセッサは存在しない。そこで本研究では、 FPGA 上 に out-of-order スーパスカラプロセッサの実装を行うことを目的とした。 1.2 構成 本稿の構成は以下の通りである。第2章では FPGA 上に out-of-order スーパスカラプロセッサ を実装する際の問題点について述べ、第3章では第2章で述べた問題点を踏まえて、どのように out-of-order スーパスカラプロセッサの構成を行ったかについて述べる。第4章では、実装した outof-order スーパスカラプロセッサの評価を行いその結果を示す。第5章では、関連研究としてその 他のソフトプロセッサの例を挙げる。最後に第6章で、まとめと今後の課題を述べる。 4 第 2 章 実装上の問題点 ASIC と FPGA は、集積回路開発の手法であるという点では同一であるが、いかにして回路を実 現するのかという点で大きく異なる。そのため、 ASIC と FPGA それぞれで実装される回路の間 には、多くの差異が存在する。 out-of-order スーパスカラプロセッサは、常に ASIC 上に実装されており、 FPGA 上に実装され ることはなかった。そのため、 ASIC と FPGA との差異が、 FPGA 上に out-of-order スーパスカラ プロセッサを実装する際の妨げになる。 そこで本節では、 FPGA に out-of-order スーパスカラプロセッサを実装する際の問題点について 述べる。まず問題の根源に存在する ASIC と FPGA との差異について述べ、そして、 SRAM のポー ト数が大きな問題となることを述べる。最後に、 SRAM のポート数を増やす為の方法を述べる。 2.1 ASIC と FPGA の違い ASIC と FPGA の、 out-of-order スーパスカラプロセッサを実装する上で重要となる違いとして、 使用できるリソースの種類と配線遅延の大きさの二つをあげることができる。 使用できるリソースの種類の差異 ASIC では、 SRAM や PLL(Phase-locked loop) などのリソースを、自由な種類のものを、自由に、 自由なパラメータで使用することができる。しかし、 FPGA では、あらかじめ FPGA 上に搭載さ れているリソースしか使用することができない。最近の FPGA 上に搭載されているリソースとし ては、ロジック、 SRAM 、PLL、DLL(Delay-locked loop)、DSP(Degital Signal Processor) などがあ げられるが、 FPGA ではこれら以外のリソースはもちろん、搭載されているリソースを使用する 場合にもパラメータは限定され、搭載されている以上の数のリソースを使用することはできない。 配線遅延の大きさの差異 FPGA は ASIC に比べて遅延が大きく動作速度が遅いが、その中でも配線遅延が非常に大きい。 そのため、配線遅延の影響を受けやすいモジュールは、性能に深刻な影響を与えうる。 ASIC で あってももちろんであるが、ハードウェア量が大きなモジュールは FPGA と相性が悪い。例えば、 この後述べるようなロジックを使用して作成されたメモリはハードウェア量が大きい為、配線遅延 の影響を大きく受ける。 5 2.2 SRAM のポート数の制限 FPGA 上に out-of-order スーパスカラプロセッサを実装する際の一番の問題となるのは、 SRAM のポート数の問題である。 out-of-order スーパスカラプロセッサは多くのポート数を持った SRAM を必要とする。必要なポート数の例として、 4-way out-of-order スーパスカラプロセッサである MIPS R10000 [6] のレジスタファイルと RMT(Register Map Table) のポート数を図 2.1 に示す。 ASIC であれば、メモリのポート数はある程度自由に設定することができる。しかし、 FPGA では、メ モリのポート数はあらかじめ搭載されている SRAM のポート数に制限される。 SRAM の面積は、 ポート数の二乗に比例し、ポート数が多いほど遅延も大きくなる。通常、 SRAM のポート数はそ れほど必要でないということを考えると、 FPGA 上に多ポートの SRAM を搭載することは非効率 である。そのため、 FPGA に搭載されている SRAM のポート数は、それほど多くない。 FPGA に 搭載されている SRAM で選択可能なポート数の例を図 2.2 に示す。Altera 社と Xilinx 社は FPGA のベンダー、 Cyclone と Stratix は Altera 社の FPGA の製品名、 Spartan と Virtex は Xilinx 社の FPGA の製品名である。図 2.1 と図 2.2 を比較すれば分かるように、搭載されている SRAM を単純 に用いるだけでは、必要なポート数を確保することができない。 MIPS R10000 Register File Register Map Table read port 7 write port 3 read port 16 write port 4 図 2.1: out-of-order スーパスカラプロセッサで必要な SRAM のポート数の例 選択可能なポート数の種類 1 read/write port 2 read/write port 1 read 1 write port 1 read/write port 2 read/write port Cyclone, Stratix (Altera社) Spartan, Virtex (Xilinx社) 図 2.2: FPGA に搭載されている SRAM で選択可能なポート数の例 必要なポート数を持ったメモリを実現するために、単純にロジックを使用して SRAM と同様の 動作を行うモジュールを作成するということが考えられる。この構成を図 2.3 に示す。フリップフ ロップが最小記憶単位として使用され、合計で bit 幅*word 数分確保される。リードポートは word 数個の値から1つの値を選び出すマルチプレクサを bit 数個並べることにより実現され、ライト ポートは word 数幅の値2つから片方を選ぶセレクターを bit 幅の個数だけ並べることにより実現 される。 一般にマルチプレクサやセレクターの実現には多くのハードウェアを必要とする。そのため、ロ 6 bit 数*word数分のフリップフロップ write data ×word数で ライトポート 1つに相当 read data ×bit数で リードポート 1つに相当 デコーダ write address read address デコーダ 図 2.3: ロジックによるメモリの構成 ジックで図 2.3 のようなメモリを作成することは、搭載されている SRAM を使用するよりも、非 常に多くのハードウェアを要する。また、多入力のマルチプレクサは遅延が大きい。さらに、多く のハードウェアを要するため、配線遅延の影響も大きくなる。前節で述べたように、 FPGA にお ける配線遅延の大きさは非常に大きいため、これにより最大動作周波数は相当に制限されてしま う。このように、ロジックでメモリを作成すると、搭載されている SRAM を使用する場合と比べ てハードウェア量が大きく遅延の大きいモジュールが出来上がってしまうこととなる。 どの程度の違いが現れるのか調べるために、リードポート1、ライトポート1、bit 幅 32、word 数 32 のメモリを SRAM とロジックそれぞれで作成を行った。それぞれにおいて、 FPGA 上で要し た面積を図 2.4 示す。背景色と異なっている部分が、 FPGA 上で使用されている場所である。また それぞれの最大動作周波数は、ロジックで構成した場合が 154.37(MHz)、搭載されている SRAM で構成した場合が 222.27(MHz) となった。このように、 SRAM をロジックを用いて構成すると、 ハードウェア量が増加し性能が低下する。 以上より、メモリの用途にはできる限り搭載されている SRAM を使用すべきであるといえる。 しかし、先に述べたように、 out-of-order スーパスカラプロセッサで必要とされるメモリのポート 数は非常に多いので、ロジックを使用してメモリを構成せざるを得ない部分が多々存在する。ま た、CAM も out-of-order スーパスカラプロセッサを構成するために必要とされるが、 FPGA 上に CAM が搭載されていない限り、 CAM もロジックで構成するしかない。このように、 FPGA に out-of-order スーパスカラプロセッサで必要な多ポートのメモリを実装するのは難しい。 2.3 SRAM のポート数対策 前節で述べたように、 out-of-order スーパスカラプロセッサを FPGA 上に実装するためにはあら かじめ搭載されている SRAM ではポート数が足りないが、できる限り搭載された SRAM を使用す 7 図 2.4: ロジックを使用した場合 (左) と搭載されている SRAM を使用した場合 (右) の面積の比較 背景色以外の部分が使用されている領域を示している べきである。そこで、 SRAM のポート数を増やすために、以下に述べるような方法を用いた。 同じ大きさの SRAM を2つ利用することによりリードポート数を増やす 同じ大きさの SRAM を2つ用意することにより、リードポートの数を2倍に増やすことができ る。この様子を、図 2.5 に示す。 2つの SRAM に対して、ライト動作に関しては同様の処理を行い、リード動作に関しては別々 の動作を行っている。この方法により、リードポート数を2倍に増やすことができるが、必要な SRAM の量が2倍になってしまうのが欠点である。 write address read address1 write address read address read data SRAM1 read address2 write address read address read data SRAM2 図 2.5: リードポートを2倍にする方法 8 2倍のクロックで動かす SRAM のモジュールを外部のモジュールと比べて2倍の周波数で動かすことにより、ポート数 が2倍になったかのように見せることができる。この方法では、ハードウェア量を増やすことなく ポート数を増やすことができるが、同時に次の3つの問題が発生する。 1. SRAM を外部の2倍の周波数で動かすわけであるから、 SRAM 自体の動作がクリティカル パスになる可能性が生じる。しかし、ロジックでメモリを構成した場合は、 SRAM で構成し た場合の半分強の周波数でしか駆動することができないことなどを考えると、問題として顕 在化しない可能性が高い。 2. SRAM を駆動するための2倍速のクロックエッジの一致したクロックを生成しなければなら ない。これは、 PLL を使用することにより達成することができる。昨今の FPGA には、少 なくとも数個の PLL が搭載されているため特に問題とはならないが、この用途のために PLL がひとつ占有されてしまうことになる。 3. メモリモジュールへのの入力信号がクリティカルパスになる可能性がある。 SRAM が2倍 の動作周波数で動作するということは、 SRAM に書き込むもしくは読み出すためのメモリ アドレスもしくはデータの中の半数は、半クロックで SRAM まで到達しなければならない ことを意味する。このため、 SRAM への入力線でタイミング的に他の物の余裕のないパス が存在することになる。この問題は、パイプライン化を施すことによって、メモリアクセス のレイテンシを大きくすれば回避することは可能である。しかし、 out-of-order スーパスカ ラプロセッサでメモリアクセスのレイテンシが大きくなるということは、性能にクリティカ ルに響く可能性が高いと共に、メモリとして使い物にならなくなる状況も考えられる。 以上の2つの方法を組み合わせると、リードポート4つ、ライトポート2つのレジスタファイル を、2 リード/ライトポートを持つ SRAM を用いて構成することができる。そのためには、レジ スタファイル自体の大きさの2倍の SRAM を用意して、 SRAM を外部の2倍の周波数で動かし、 そして、外部の周波数に対して前半でレジスタファイルへの書き込みを行い、後半でレジスタファ イルからの読み出しを行うようにすればよい。そのままでは、レジスタファイルへ書き込むデータ と書き込むアドレスを設定するためのパスはタイミング的に余裕がないので、レジスタファイルの モジュール内において、外部に同期したクロックでそれらの値を一度フリップフロップに受け、次 のクロックで書き込みを行うようにする。そのため、レジスタファイルへ値が書き込まれるまでの レイテンシが1クロック大きくなってしまう。しかし、今回は後に述べるようにリオーダバッファ 系で out-of-order スーパスカラプロセッサを構成しており、その構成においてはレジスタファイル への書き込みのレイテンシが1クロック大きくなることは問題にならない。 9 第 3 章 構成 本節では前節で述べた問題点を踏まえつつ、どのように out-of-order スーパスカラプロセッサの 構成を行ったかについて述べる。 3.1 way 数 前節で述べたように、 FPGA に out-of-order スーパスカラプロセッサを実装する際の一番の問題 は、 SRAM のポート数にある。 out-of-order スーパスカラプロセッサにおいて、必要なメモリの ポート数は、way 数が増えるほど増加する。そこで、今回は実装する out-of-order スーパスカラプ ロセッサの way 数は 2 とした。 3.2 命令セット 命令セットとして、Alpha21264[11, 12] 命令セットのサブセットを用いた。 3.3 全体構成 Out-of-order スーパスカラプロセッサの構成方法には、大きく分けて、リザベーションステーショ ンとリオーダバッファを併用する方式と物理レジスタに対するリネーミングによる方式の2つが存 在する。ここでは前者をリオーダバッファ系、後者をレジスタリネーミング系と呼ぶこととする。 リオーダバッファ系 リオーダバッファ系の構成を図 3.1 に示す。 リオーダバッファ系では、レジスタ番号それぞれに対してタグを割り当てる。タグは、プロセッ サ内で現在使用されていない値がフリーリストより割り当てられる。タグを割り当てた後は、レジ スタ番号の識別はすべてタグを介して行う。リザベーションステーションにディスパッチをする前 に、ソースレジスタのレジスタ番号に対応するタグを知る必要があるので、通常ディスパッチ前、 すなわちフロントエンドにおいてレジスタファイルから値を読み出し、その値をリザベーション ステーションに書き込む。レジスタファイルへの書き込みはバックエンドで行うため、フロントエ ンドとバックエンドが分離されない。また、実行ステージからリザベーションステーションにフォ ワーディングパスを設ける必要性が生じ、データパスの構成が複雑になる。これらの理由により、 チップレイアウト上の制限が非常に厳しい。しかし、命令発行後にレジスタファイルより値を読み 出すレジスタファイル系と比べて、発行レイテンシを半分程度にすることができる。 10 レジスタリネーミング系 レジスタリネーミング系の構成を図 3.2 に示す。 レジスタリネーミング系では、まずフロントエンドにおいて RMT(Register Map Table) を用いて 論理レジスタ番号から物理レジスタ番号へのマッピングを行う。その後は、レジスタ番号の識別 はすべて割り当てられた物理レジスタ番号によっておこなう。バックエンドにおいては、レジスタ ファイルへのアクセスはすべて物理レジスタ番号を用いて行われるので、フロントエンドの時点 でレジスタファイルにアクセスする必要はない。そのため、フロントエンドとバックエンドをディ スパッチステージを切り目に、分離することができる。また、データパスもリオーダバッファ系の それより、単純化される。結果、チップレイアウト上有利になる。しかし、命令発行後にレジスタ ファイルより値を読み出すので、発行レイテンシが大きくなるという欠点は存在する。また、RMT のチェックポインティングを作成する、例外時に RMT のロールバックを行う、などの別途作業が 必要となる。Alpha 21264 [11, 12] 、 MIPS R10000 [6] 、 Pentium 4 [8] 、 などの近年における商用 プロセッサは、すべてレジスタリネーミング系に基づいて実装が行われている。 今回は、 out-of-order スーパスカラプロセッサをリオーダバッファ系で作成した。それは次のよ うな理由があげられる。 1. RMT のポート数 out-of-order スーパスカラプロセッサでは、多くのポート数をもった SRAM が必要とされる が、その中でも特に、 RMT で必要なポート数は多い。 FPGA において、メモリのポート数 は非常に貴重である。そのため、 RMT を FPGA 上に実装することは、大変な不利益をこう むることとなる。 2. チェックポインティングの難しさ RMT を使用する場合、チェックポインティングを必要に応じで作成できるようにすることが 必要である。しかし、 FPGA 上でチェックポインティングを作成することは非常に難しい。 RMT においてチェックポインティングを作成するために必要なことは、 RMT の内容をすべ て別の SRAM にコピーすることである。この作業は、非常に重い。そのため、通常は、チェッ クポインティングを作成するのが簡単になるような、特殊な構造をもった SRAM を用いる。 しかし、当然のことであるが、 FPGA にそのような特殊な構造をもったメモリは搭載されて いない。そのため、 FPGA でチェックポインティングを実装するのは非常に難しく、実装で きたとしても非常に重い処理になり、性能低下の原因になってしまう。 3. 例外処理の複雑性 レジスタリネーミング系においては、例外が検知された場合、Active List をたどって RMT を 復元するという作業が必要である。この作業も非常に重い。それに対してリオーダバッファ 系では、例外時の処理は分岐予測ミスの場合と同様に、パイプラインをフラッシュするだけ でよい。例外の発生確率は非常に低いので、例外処理の重さが性能に大きく響いてくるとい うことはないが、 RMT 周りの処理がさらに重くなり、性能に響いてくると予想される。 もちろん、リオーダバッファ系によって out-of-order スーパスカラプロセッサを構成することに よりデータパスが複雑化してしまうという不利益は被る。しかし、 FPGA においてはデータパスが 複雑化しすることよりも、 FPGA にもともと存在する SRAM 上にうまく実装することができない 11 PC PC+4 BTB Icache predictior decode dispatch Reservation Station Future File LSQueue Register File Dcache 図 3.1: リオーダバッファ系 12 ReOrder Buffer PC PC+4 BTB Icache predictior decode rename dispatch Register Map Table Instruction Queue Register File Free List Active List LSQueue 図 3.2: レジスタリネーミング系 13 Dcache メモリが大量に必要とされることの方が、影響が大きいと考えられる。また、 FPGA においては、 どの場所にどのようなリソースが搭載されているのかあらかじめ定まっているので、そもそもレイ アウト上不利である。そのため、レイアウト上有利になるように、レジスタグネーミング系で実装 を行うことに意味はない。これより、リオーダバッファ系の方が、 FPGA にマッチするといえる。 3.4 演算器構成 商用の out-of-order スーパスカラプロセッサの way 数は4一般的に4である。その、4-way outof-order スーパスカラプロセッサの命令キュー周りの演算器構成として最も理想的なものは、命令 キューを1つにまとめて命令キューより毎サイクル4つの命令を発行することができる構成である。 しかしこのような構成は、毎サイクル4つの命令を発行するのは厳しい、4つの ALU の間ではバイ パスが間に合わない可能性がある、などの理由により現実的でない。そのため、4-way out-of-order スーパスカラプロセッサの演算器構成は次の2つのどちらかの構成をとるのが普通である。 整数演算命令キューとメモリアドレス計算命令キューを完全に分離する構成 まず1つ目に、整数演算命令キューとメモリアドレス計算命令キューを完全に分離する構成が あげられる。この構成を図 3.3 に示す。このような演算器構成をもつプロセッサとして、例えば、 MIPS R10000 プロセッサ [6] がある。 この構成においては、整数演算命令キューとメモリアドレス計算命令キューを完全に分離して、 それぞれから毎サイクル最大2命令発効できるようになっている。このように演算器を構成する と、全体の構成が単純化され、設計が簡単になる。しかし、メモリ系命令は全体の3割弱しか含ま れないのに対して、整数演算命令は全体の5割程度存在しすることを考えると、メモリ系命令と整 数演算命令両方に専用の ALU を2つずつ割り当てるのは不自然である。そのため、整数演算命令 キューに未発効の命令が溜まり、性能に悪影響を与えることが考えうる。 2つにクラスタ分けを行う構成 2つ目に、実行コアを2つにクラスタ分けする構成があげられる。この構成を図 3.4 に示す。こ のような演算器構成をもつプロセッサとして、例えば、 Alpha 21264 プロセッサ [11, 12] がある。 この構成においては、リザベーションステーションにディスパッチを行う前に、ステアリングと 呼ばれる2つのクラスタどちらに命令をディスパッチするかを決めるステージを用意する。クラス タそれぞれは個別にリザベーションステーションを持つ。そして、各クラスタのリザベーションス テーションから、毎サイクル最大整数演算命令2つもしくは整数演算命令1つとアドレス計算命令 1つを発行することができる。このような構成は、 3.3 の構成と比べるとロジックが複雑化する。 その代り、整数演算命令とメモリアドレス計算命令とでリザベーションステーションからの発行幅 の共有が可能となり、 3.3 の構成よりも性能が向上する。 これらの構成を踏まえると、2-way out-of-order スーパスカラプロセッサの演算器周りの構成を、 図 3.5 に示すもののようにするのが妥当と考えられる。 整数演算用の命令キューとメモリアドレス計算用の命令キューは完全に分離され、整数演算用の 命令キューからは毎サイクル2命令、メモリアドレス計算用の命令キューからは毎サイクル1命令 14 Memory Queue Integer Queue Cache Calculation Result 図 3.3: 整数演算命令キューとメモリアドレス計算命令キューを完全に分離した演算器構成 Reservation Station Cluster1 Cache Cluster2 Calculation Result Cache 図 3.4: クラスタ化による演算器構成 15 発行可能となっている。この構成を取れば、構成を複雑化せずに十分な発行幅を確保することがで きる。2つの命令キューを統合して1つの ALU を整数演算とメモリアドレス計算で共用するよう な構成にすることは、当然可能である。そのような構成にした場合、図 3.5 の構成と比べて得られ る利点は、ALU がひとつ少なくなること、命令キューのエントリが効率的に使用できるようにな ることの2つである。とはいえ、ALU を構成するために必要なハードウェア量は非常に少ないの で、ALU が少なくなることに対するメリットはほとんどない。さらに、構成が複雑化して必要な ハードウェア量は増加し、性能に影響を与える可能性がある。そのため、構成としては、図 3.5 の ものが最適であるといえる。 Memory Integer Queue Queue Calculation Result Cache 図 3.5: 実装したプロセッサの演算器構成 16 第 4 章 評価 4.1 実装環境 verilog HDL を用いて、 Altera 社の FPGA である Stratix [5] EP1S80F1020C7 上に out-oforder スーパスカラプロセッサの実装を行った。コンパイラは Altera 社の QuartusII6.1 [4] を用い、 MentorGraphics 社の ModelSim Altera Edition [9] を用いて、テストベンチを用いたシミュレーショ ンを行うと共に、デバッグを行った。 4.2 動作確認 簡単なテストプログラムを作成し、ハンドアセンブルを行った。そしてそのプログラムに従って 正しく動作を行っているかどうかを、計算結果を 7seg LED に出力することにより確認した。その 結果、正しく動作を行っていることが、確認できた。2-way out-of-order スーパスカラプロセッサ のプログラムコードは全体で、約 6000 行(テスト用のコード・自動生成のコードを含めて約 10000 行)であった。 4.3 性能評価 実装した 2-way out-of-order スーパスカラプロセッサの最大動作周波数、ハードウェア量および消 費電力の測定を行った。比較のために、2-way in-order スーパスカラプロセッサに相当するものを作 成し、同様の評価を行った。その上で、現存するソフトプロセッサ NIOSIIf [2] との比較を行った。 4.3.1 IPC 比較を行うに先立ち、2-way out-of-order スーパスカラプロセッサと 2-way in-order スーパスカ ラプロセッサ、そしてスカラプロセッサの IPC を比較するために、シミュレータ「鬼斬」を用いて シミュレーションを行った。「鬼斬」は、本研究室で開発された、プロセッサの性能測定を行うた めのシミュレータである。使用したパラメータを図 4.1 に示す。結果は図 4.2 のようになった。た だし、スカラプロセッサの IPC を1として、正規化を行っている。 2-way in-order スーパスカラプロセッサはスカラプロセッサと比べて 24.1%の性能向上が、 2-way out-of-order スーパスカラプロセッサ は 72.7%の性能向上が見られた。 4.3.2 最大動作周波数およびハードウェア量 実装した 2-way out-of-order スーパスカラプロセッサと 2-way in-order スーパスカラプロセッサに ついて、最大動作周波数を、 QuartusII6.1 付属の TimeQuest Timing Analyzer を用いて算出し、ま 17 Cache Bytes Cache Latency Instruction window size Issue width BTB size L1:4Kbyte hit:1 miss:20 integer:16 memory:8 float:8 integer:2 memory:1 float:2 0.5Kbyte 図 4.1: パラメータ設定 3 2.5 2 1.5 2-way in-order 2-way out-of-order 1 0.5 0 図 4.2: IPC の比較 18 た、必要ハードウェア量を QuartusII6.1 のシンセサイザを用いて得た。NIOSII については、NIOSII のリファレンス [3] より値を得た。図 4.3 にそれぞれにおける最大動作周波数およびハードウェア 量を示す。 In-order Out-of-order NiosIIf Total Logic Elements 11,490 23,432 1,650 Max Frequency 51.62(MHz) 50.04(MHz) 135(MHz) 図 4.3: 動作周波数およびハードウェア量の比較 なお、ハードウェア量は、必要な LE(Logic Element) 数を用いて表わされている。LE とは4入 力のルックアップテーブルと1つのフリップフロップから構成される、 Stratix のリソースの最小 単位である。 最大動作周波数は in-order スーパスカラプロセッサと out-of-order スーパスカラプロセッサでほ とんど差はない。これは、in-order スーパスカラプロセッサと out-of-order スーパスカラプロセッサ での共通部である、フロントエンドに比較的重い処理があることによる。それに対して、NIOSIIf の最大動作周波数は out-of-order スーパスカラプロセッサの 2.5 倍程度速いものであった。 ハードウェア量は、 out-of-order スーパスカラプロセッサは in-order スーパスカラプロセッサの 約2倍、NIOSIIf の約 15 倍であった。 out-of-order スーパスカラプロセッサはハードウェア量に関 して不利であることがわかる。調べたところ、 out-of-order スーパスカラプロセッサで使用された ハードウェア量の7割以上がロジックで作成されたメモリのために消費されていた。 4.3.3 消費電力 QuartusII6.1 付属の PowerPlay Power Analyzer を用いて、2-way out-of-order スーパスカラプロ セッサと 2-way in-order スーパスカラプロセッサについて消費電力の測定を行った。周波数を変 化させて測定を行った結果、2-way in-order スーパスカラプロセッサについては次の図 4.4、2-way out-of-order スーパスカラプロセッサについては次の図 4.5 のような結果が得られた。 これより、 • I/O によって消費される電力と動的に消費される電力は動作周波数に比例する。 • 静的に消費される電力は、動作周波数によらず一定である。また、その値は非常に大きい。 ということがわかる。 また、 out-of-order スーパスカラプロセッサで動的に消費されている電力は、 in-order スーパス カラプロセッサで動的に消費されている電力の2倍程度であることと、 out-of-order スーパスカラ プロセッサは in-order スーパスカラプロセッサの2倍のハードウェア量が必要なことを考えると、 動的に消費される電力はハードウェア量に比例するということもわかる。 19 2500 Power(mW) 2000 1500 Total Core Dynamic Power 1000 Core Static Power 500 I/O 0 0 10 20 30 40 50 frequency(MHz) 図 4.4: 2-way in-order スーパスカラプロセッサの消費電力 3000 Power(mW) 2500 2000 Total 1500 Core Dynamic Power 1000 Core Static Power I/O 500 0 0 10 20 30 40 50 frequency(MHz) 図 4.5: 2-way out-of-order スーパスカラプロセッサの消費電力 20 4.3.4 比較 以上の結果から、IPC*最大動作周波数で最大性能の相対比を、ハードウェア量/IPC で1命令を 終了させるために必要な、動的に消費される電力の相対比を求めることができる。その結果を図 4.6 に示す。ただし、NIOSIIf の値を 1 として相対値で表わしている。 In-order Out-of-order NiosIIf Max Performance 0.475 0.64 1 Dynamic Power/ IPC 5.61 8.22 1 図 4.6: 最大性能および電力あたりのパフォーマンスの比較 これより、今回実装した 2-way out-of-order スーパスカラプロセッサは最大性能は NIOSIIf の 65%で、性能あたりの電力消費量は NIOSIIf の 8.2 倍程度であることがわかる。 out-of-order スー パスカラプロセッサは、メモリ周りで必要なハードウェア量が多いため、消費電力が上昇すると共 に最大動作周波数が低下し、単純なスカラプロセッサと比べて最大性能、消費電力ともに劣ってし まっている。ただし、電力消費量に関しては、図 4.4、図 4.5 に示すように静的に消費される電力 が大部分を占める。そのため、同じ性能が出せるだけの周波数でそれぞれを駆動した時の実際の消 費電力比はもっと小さくなるものと考えられる。 また、 FPGA 上に実装した 2-way in-order スーパスカラプロセッサと比較すると、 FPGA 上に 実装した 2-way out-of-order スーパスカラプロセッサの方が最大性能は高いが、電力効率は悪いと いうことがわかった。 21 第 5 章 関連研究 FPGA 上に実装されたソフトプロセッサのには様々な種類が存在する。 5.1 NIOSII プロセッサ ソフトプロセッサの中で有名なものに、評価の節において比較するために用いた、NIOSII [2] プ ロセッサがある。これは、 Altera 社が販売する、商用プロセッサである。性能とハードウェア量 の違いによる、NIOSIIe、NIOSIIs、NIOSIIf の3種類が存在する。それぞれ、パイプライン化され ているか否か、分岐予測器を搭載するか否かなどといった点で異なっている。しかし、スカラプロ セッサであるという点では、3種類ともに共通である。命令セットとしては MIPS-I に似たものを 用いている。NIOSII 最大の特徴は、付属のツールである SOPC Builder を用いて、NIOSII 自身を ある程度カスタマイズすることができることにある。たとえば、命令セットをある程度自由に変更 することができる。さらに、NIOSII 用の命令コードを Eclipse を用いて開発・作成することができ る。評価の項目でみたように、NIOSII シリーズの中でも最高性能を持つ NIOSIIf プロセッサの性 能はかなり高い。このように、NIOSII は高性能で、実際の開発で非常に使い勝手のよいソフトプ ロセッサである。しかし、あくまで単純なスカラプロセッサであるので、プロセッサ自身の研究目 的に用いるには限界がある。 5.2 SCOORE ソフトプロセッサの中で、本研究以外に唯一 out-of-order スーパスカラプロセッサになってい るものに、SCOORE [7] がある。これは、カルフォルニア大学で現在行われている、 FPGA 上に out-of-order スーパスカラプロセッサを実装するプロジェクトである。特徴としては、 • SPARC [1] に基づくアーキテクチャ • 4-way out-of-order スーパスカラプロセッサ • クラスタ型プロセッサ といったことがあげられる。目標として、 FPGA 上での動作速度を 125MHz としている。10 人以 上の人員を割いて大がかりに行われているプロジェクトであるが、未だ、完成に至っていない。 22 第 6 章 おわりに 6.1 まとめ 本研究では、 FPGA 上に out-of-order スーパスカラプロセッサを実装することを試み、実装を完 了させることができた。本稿では、 FPGA への out-of-order スーパスカラプロセッサを実装する際 に問題となるのが SRAM のポート数にあることを示し、その上でどのように out-of-order スーパ スカラプロセッサの構成をおこなったかについて述べた。実装した out-of-order スーパスカラプロ セッサを既存のソフトプロセッサである NIOSIIf と性能比較を行ったところ、最大性能は 65%で、 性能あたりの電力消費量は NIOSIIf の 8.2 倍程度であることがわかった。 6.2 今後の課題 冒頭でも述べたように、今回作成した FPGA 上に実装された out-of-order スーパスカラプロセッ サは、プロセッサの研究におけるシミュレーションの問題を回避する一手段として使用できるとい う点で、非常に重要である。そこで今後は、シミュレーションを行うだけでは十分とは言えない研 究に、今回実装した out-of-order スーパスカラプロセッサを使用することを主に考えている。 現在は、特にプロセッサにおけるエラー対策の技術の検証のために使用することを考えている。 エラーの検出および回復を行う手法は、シミュレーションによっては検証を行うことができない技 術である。しかし、 FPGA 上に実際に実装することにより、手法の妥当性を示せると共に、IPC や 消費電力がどの程度変化するのかといったことも正確に測定することができる。 23 謝辞 本研究を進めるにあたり、多くの方々にお世話になりました。 坂井修一教授にはご多忙であるにも関わらず、相談会などを通じて様々なご指導をいただきま した。 五島正裕助教授、入江英嗣博士には、初めの研究テーマの決定から研究の進め方、さらには論文 の添削まで、本研究におけるほぼ全ての面において相談に乗って頂き、御指導頂きました。お二人 がいなかったら本論文が完成することはなかったと思います。ありがとうございます。 清水一人氏、栗田弘之氏、勝沼聡氏には、ミーティングを通じて刺激を与えていただくと共に、 論文の添削でお世話になりました。 ルォンディンフォン氏には、相談会を通じて、研究に対する助言をいただきました。 塩谷亮太氏、亘理靖展氏、渡辺憲一氏、一林宏憲氏、廣瀬健一郎氏、ドゥブトゥ ピエール氏に は、実験環境の設備など、研究の過程で様々な手助けをしていただきました。 事務補佐員の八木原晴水さん、月村美和さん、北原杏さんには研究を行う上での事務などでお世 話になりました。 その他にも、坂井・五島研究室の皆様には研究や論文執筆、研究室での生活のサポートなど様々 な面でご協力いただき、大変お世話になりました。心より感謝しております。 24 参考文献 [1] Raymond Heald, Kathirgamar Aingaran, Chaim Amir, Michael Ang, Michael Boland, Pankaj Dixit, Gary Gouldsberry, Dale Greenley, Joel Grinberg, Jason Hart, Tim Horel, Wen-Jay Hsu, James Kaku, Chin Kim, Song Kim, Fabian Klass, Hang Kwan, Gary Lauterbach, Roger Lo, Hugh McIntyre, Anup Mehta, David Murata, Sophie Nguyen, Yet-Ping Pai, Subeer Patel, Ken Shin, Kenway Tam, Sai Vishwanthaiah, John Wu, Gin Yee, and Eileen You . A Third-Generation SPARC V9 64-b Microprocessor. IEEE JOURNAL OF SOLID-STATE CIRCUITS, Vol. 35, No. 11, pp. 1526–1538, 2000. [2] Altera. NIOSII Processor http://www.altera.com/products/ip/processors/nios2/ni2-index.html. [3] Altera. NIOSII Processor Reference Handbook http://www.altera.co.jp/literature/hb/nios2/n2cpu nii5v1.pdf. [4] Altera. QuartusII software http://www.altera.co.jp/products/software/products/quartus2/qts-index.html. [5] Altera. Stratix device http://www.altera.co.jp/products/devices/stratix/stx-index.jsp. [6] Kenneth C.Yeager. THE MIPS R10000 SUPERSCALAR MICROPROCESSOR. IEEE Micro, Vol. 16, No. 2, pp. 28–41, Apr. 1996. [7] Francisco J. Mesa-Martinez, Abhishek Sharma, Andrew W. Hill, Carlos A. Cabrera, Cyrus Bazeghi, Hari Kolakaleti, Joseph Nayfach, Keertika Singh, Kevin S. Halle, Matthew D. Fischler, Melisa Nunez, Sangeetha Nair, Suraj Narender Kurapati, Wael Ali Ashmawi, and Jose Renau. SCOORE: Santa Cruz Out-of-Order RISC Engine, FPGA Design Issues. In Workshop on Architectural Research Prototyping (WARP), held in conjunction with ISCA-33, June 2006. [8] Glenn Hinton, Dave Sager, Mike Upton, Darrell Boggs, Doug Carmean, Alan Kyker,Patrice Roussel. The Microarchitecture of the Pentium 4 Processor. Intel Technology Journal Q1, pp. 1–13, 2001. [9] MentorGraphics. ModelSim-Altera Edition http://www.altera.co.jp/products/software/products/model/eda-ms.html. [10] OPENCORES. OPENRISC http://www.opencores.org/projects.cgi/web/or1k/openrisc 1200. [11] R.E.Kessler. THE ALPHA 21264 MICROPROCESSOR. IEEE Micro, Vol. 19, No. 2, pp. 24–36, Mar. 1999. 25 [12] E.J.McLellan R.E.Kessler and D.A.Webb. The Alpha 21264 Microprocessor architecture. In Int.Conf.on Computer Design: VLSI in Computers and Processors, pp. 90–95, Oct. 1998. 26