27
Out-of-Order ラ・プ FPGA 18 2 13 50379

Out-of-Orderスーパスカラ・プロセッサの FPGA...に搭載することもできる、OpenRISC [10] のようなオープンソースで配布されているものも存在す

  • Upload
    others

  • View
    1

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Out-of-Orderスーパスカラ・プロセッサの FPGA...に搭載することもできる、OpenRISC [10] のようなオープンソースで配布されているものも存在す

卒業論文

Out-of-Orderスーパスカラ・プロセッサのFPGA への実装

平成18年 2月 13日提出

指導教員坂井修一教授五島正裕助教授

電子情報工学科

50379杉本健

Page 2: Out-of-Orderスーパスカラ・プロセッサの FPGA...に搭載することもできる、OpenRISC [10] のようなオープンソースで配布されているものも存在す

概要

FPGA に実装された out-of-orderスーパスカラプロセッサは非常に有用であるにも関わらず、こ

れまで実装されたことはなかった。そこで本研究では、 FPGA上に out-of-orderスーパスカラプロ

セッサの設計及び実装を行った。その過程で、SRAMのポート数が FPGAに out-of-orderスーパス

カラプロセッサを実装するのを妨げる最大の原因であることがわかった。その為、必要なメモリの

ポート数がなるべく少なくなるように設計を行い、 SRAMのポート数を増やすための方策を取り

入れた。 Altera 社製の FPGA である Stratix シリーズ上で設計及び実装を行った結果、 50MHz

以上の周波数で動作する out-of-orderスーパスカラプロセッサを実装することに成功した。

1

Page 3: Out-of-Orderスーパスカラ・プロセッサの FPGA...に搭載することもできる、OpenRISC [10] のようなオープンソースで配布されているものも存在す

目次

第 1章 はじめに 3

1.1 背景 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3

1.2 構成 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4

第 2章 実装上の問題点 5

2.1 ASICと FPGAの違い . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5

2.2 SRAMのポート数の制限 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6

2.3 SRAMのポート数対策 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7

第 3章 構成 10

3.1 way数 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10

3.2 命令セット . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10

3.3 全体構成 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10

3.4 演算器構成 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14

第 4章 評価 17

4.1 実装環境 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17

4.2 動作確認 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17

4.3 性能評価 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17

4.3.1 IPC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17

4.3.2 最大動作周波数およびハードウェア量 . . . . . . . . . . . . . . . . . . . . 17

4.3.3 消費電力 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19

4.3.4 比較 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21

第 5章 関連研究 22

5.1 NIOSIIプロセッサ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22

5.2 SCOORE. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22

第 6章 おわりに 23

6.1 まとめ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23

6.2 今後の課題 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23

2

Page 4: Out-of-Orderスーパスカラ・プロセッサの FPGA...に搭載することもできる、OpenRISC [10] のようなオープンソースで配布されているものも存在す

第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

Page 5: Out-of-Orderスーパスカラ・プロセッサの FPGA...に搭載することもできる、OpenRISC [10] のようなオープンソースで配布されているものも存在す

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章では、実装した out-

of-orderスーパスカラプロセッサの評価を行いその結果を示す。第5章では、関連研究としてその

他のソフトプロセッサの例を挙げる。最後に第6章で、まとめと今後の課題を述べる。

4

Page 6: Out-of-Orderスーパスカラ・プロセッサの FPGA...に搭載することもできる、OpenRISC [10] のようなオープンソースで配布されているものも存在す

第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

Page 7: Out-of-Orderスーパスカラ・プロセッサの FPGA...に搭載することもできる、OpenRISC [10] のようなオープンソースで配布されているものも存在す

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 R10000Register File read port 7write port 3Register Map Table read port 16write port 4図 2.1: out-of-orderスーパスカラプロセッサで必要な SRAMのポート数の例

選択可能なポート数の種類Cyclone, Stratix (Altera社) 1 read/write port2 read/write port1 read 1 write portSpartan, Virtex (Xilinx社) 1 read/write port2 read/write port図 2.2: FPGAに搭載されている SRAMで選択可能なポート数の例

必要なポート数を持ったメモリを実現するために、単純にロジックを使用して SRAMと同様の

動作を行うモジュールを作成するということが考えられる。この構成を図 2.3に示す。フリップフ

ロップが最小記憶単位として使用され、合計で bit幅*word数分確保される。リードポートは word

数個の値から1つの値を選び出すマルチプレクサを bit数個並べることにより実現され、ライト

ポートは word数幅の値2つから片方を選ぶセレクターを bit幅の個数だけ並べることにより実現

される。

一般にマルチプレクサやセレクターの実現には多くのハードウェアを必要とする。そのため、ロ

6

Page 8: Out-of-Orderスーパスカラ・プロセッサの FPGA...に搭載することもできる、OpenRISC [10] のようなオープンソースで配布されているものも存在す

read address

bit数*word数分のフリップフロップ

デコーダ

read datawrite addressデコーダ

write data×word数でライトポート1つに相当 ×bit数でリードポート1つに相当

図 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

Page 9: Out-of-Orderスーパスカラ・プロセッサの FPGA...に搭載することもできる、OpenRISC [10] のようなオープンソースで配布されているものも存在す

図 2.4:ロジックを使用した場合 (左)と搭載されている SRAMを使用した場合 (右)の面積の比較

           背景色以外の部分が使用されている領域を示している

べきである。そこで、 SRAMのポート数を増やすために、以下に述べるような方法を用いた。

同じ大きさの SRAM を2つ利用することによりリードポート数を増やす

同じ大きさの SRAMを2つ用意することにより、リードポートの数を2倍に増やすことができ

る。この様子を、図 2.5に示す。

2つの SRAMに対して、ライト動作に関しては同様の処理を行い、リード動作に関しては別々

の動作を行っている。この方法により、リードポート数を2倍に増やすことができるが、必要な

SRAMの量が2倍になってしまうのが欠点である。write addressread address read dataSRAM1write addressread address read dataSRAM2

write address read address1read address2

図 2.5:リードポートを2倍にする方法

8

Page 10: Out-of-Orderスーパスカラ・プロセッサの FPGA...に搭載することもできる、OpenRISC [10] のようなオープンソースで配布されているものも存在す

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

Page 11: Out-of-Orderスーパスカラ・プロセッサの FPGA...に搭載することもできる、OpenRISC [10] のようなオープンソースで配布されているものも存在す

第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

Page 12: Out-of-Orderスーパスカラ・プロセッサの FPGA...に搭載することもできる、OpenRISC [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

Page 13: Out-of-Orderスーパスカラ・プロセッサの FPGA...に搭載することもできる、OpenRISC [10] のようなオープンソースで配布されているものも存在す

Icache

predictior

BTBPC PC+4

LSQueue

Reservation

Station

Future

FileReOrder

Buffer

Register

File

dispatch

Dcache

decode

図 3.1:リオーダバッファ系

12

Page 14: Out-of-Orderスーパスカラ・プロセッサの FPGA...に搭載することもできる、OpenRISC [10] のようなオープンソースで配布されているものも存在す

Icache

predictior

BTB

PC

PC+4

LSQueue

Instruction

Queue

ActiveList

Register

File

dispatch

Free List

Register

Map

Table

rename

Dcache

decode

図 3.2:レジスタリネーミング系

13

Page 15: Out-of-Orderスーパスカラ・プロセッサの FPGA...に搭載することもできる、OpenRISC [10] のようなオープンソースで配布されているものも存在す

メモリが大量に必要とされることの方が、影響が大きいと考えられる。また、 FPGAにおいては、

どの場所にどのようなリソースが搭載されているのかあらかじめ定まっているので、そもそもレイ

アウト上不利である。そのため、レイアウト上有利になるように、レジスタグネーミング系で実装

を行うことに意味はない。これより、リオーダバッファ系の方が、 FPGAにマッチするといえる。

3.4 演算器構成

商用の out-of-orderスーパスカラプロセッサの way数は4一般的に4である。その、4-way out-

of-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

Page 16: Out-of-Orderスーパスカラ・プロセッサの FPGA...に搭載することもできる、OpenRISC [10] のようなオープンソースで配布されているものも存在す

MemoryQueue IntegerQueue

Cache CalculationResult図 3.3:整数演算命令キューとメモリアドレス計算命令キューを完全に分離した演算器構成

Cache Cache

Cluster1 Cluster2Reservation Station

CalculationResult図 3.4:クラスタ化による演算器構成

15

Page 17: Out-of-Orderスーパスカラ・プロセッサの FPGA...に搭載することもできる、OpenRISC [10] のようなオープンソースで配布されているものも存在す

発行可能となっている。この構成を取れば、構成を複雑化せずに十分な発行幅を確保することがで

きる。2つの命令キューを統合して1つの ALU を整数演算とメモリアドレス計算で共用するよう

な構成にすることは、当然可能である。そのような構成にした場合、図 3.5の構成と比べて得られ

る利点は、ALU がひとつ少なくなること、命令キューのエントリが効率的に使用できるようにな

ることの2つである。とはいえ、ALU を構成するために必要なハードウェア量は非常に少ないの

で、ALU が少なくなることに対するメリットはほとんどない。さらに、構成が複雑化して必要な

ハードウェア量は増加し、性能に影響を与える可能性がある。そのため、構成としては、図 3.5の

ものが最適であるといえる。

IntegerQueue

CalculationResultCache

MemoryQueue

図 3.5:実装したプロセッサの演算器構成

16

Page 18: Out-of-Orderスーパスカラ・プロセッサの FPGA...に搭載することもできる、OpenRISC [10] のようなオープンソースで配布されているものも存在す

第4章 評価

4.1 実装環境

verilog HDL を用いて、 Altera 社の FPGAである Stratix [5] EP1S80F1020C7上に out-of-

orderスーパスカラプロセッサの実装を行った。コンパイラは 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

Page 19: Out-of-Orderスーパスカラ・プロセッサの FPGA...に搭載することもできる、OpenRISC [10] のようなオープンソースで配布されているものも存在す

Cache LatencyCache Bytes

BTB size

hit:1miss:20L1:4Kbyte

0.5KbyteInstruction window size integer:16memory:8float:8Issue width integer:2memory:1float:2

図 4.1:パラメータ設定

00.511.522.53

2-way in-order2-way out-of-order

図 4.2: IPCの比較

18

Page 20: Out-of-Orderスーパスカラ・プロセッサの FPGA...に搭載することもできる、OpenRISC [10] のようなオープンソースで配布されているものも存在す

た、必要ハードウェア量を QuartusII6.1のシンセサイザを用いて得た。NIOSIIについては、NIOSII

のリファレンス [3] より値を得た。図 4.3にそれぞれにおける最大動作周波数およびハードウェア

量を示す。 Out-of-orderTotal Logic Elements In-orderMax Frequency 11,49051.62(MHz) 50.04(MHz)23,432 NiosIIf

135(MHz)1,650図 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

Page 21: Out-of-Orderスーパスカラ・プロセッサの FPGA...に搭載することもできる、OpenRISC [10] のようなオープンソースで配布されているものも存在す

0

500

1000

1500

2000

2500

0 10 20 30 40 50

Po

we

r(m

W)

frequency(MHz)

Total

Core Dynamic Power

Core Static Power

I/O

図 4.4: 2-way in-orderスーパスカラプロセッサの消費電力

0

500

1000

1500

2000

2500

3000

0 10 20 30 40 50

Power(mW)

frequency(MHz)

Total

Core Dynamic Power

Core Static Power

I/O

図 4.5: 2-way out-of-orderスーパスカラプロセッサの消費電力

20

Page 22: Out-of-Orderスーパスカラ・プロセッサの FPGA...に搭載することもできる、OpenRISC [10] のようなオープンソースで配布されているものも存在す

4.3.4 比較

以上の結果から、IPC*最大動作周波数で最大性能の相対比を、ハードウェア量/IPCで1命令を

終了させるために必要な、動的に消費される電力の相対比を求めることができる。その結果を図

4.6に示す。ただし、NIOSIIf の値を 1として相対値で表わしている。Out-of-orderIn-order NiosIIfMax Performance 0.475 0.64 1Dynamic 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

Page 23: Out-of-Orderスーパスカラ・プロセッサの FPGA...に搭載することもできる、OpenRISC [10] のようなオープンソースで配布されているものも存在す

第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

Page 24: Out-of-Orderスーパスカラ・プロセッサの FPGA...に搭載することもできる、OpenRISC [10] のようなオープンソースで配布されているものも存在す

第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

Page 25: Out-of-Orderスーパスカラ・プロセッサの FPGA...に搭載することもできる、OpenRISC [10] のようなオープンソースで配布されているものも存在す

謝辞

本研究を進めるにあたり、多くの方々にお世話になりました。

坂井修一教授にはご多忙であるにも関わらず、相談会などを通じて様々なご指導をいただきま

した。

五島正裕助教授、入江英嗣博士には、初めの研究テーマの決定から研究の進め方、さらには論文

の添削まで、本研究におけるほぼ全ての面において相談に乗って頂き、御指導頂きました。お二人

がいなかったら本論文が完成することはなかったと思います。ありがとうございます。

清水一人氏、栗田弘之氏、勝沼聡氏には、ミーティングを通じて刺激を与えていただくと共に、

論文の添削でお世話になりました。

ルォンディンフォン氏には、相談会を通じて、研究に対する助言をいただきました。

塩谷亮太氏、亘理靖展氏、渡辺憲一氏、一林宏憲氏、廣瀬健一郎氏、ドゥブトゥピエール氏に

は、実験環境の設備など、研究の過程で様々な手助けをしていただきました。

事務補佐員の八木原晴水さん、月村美和さん、北原杏さんには研究を行う上での事務などでお世

話になりました。

その他にも、坂井・五島研究室の皆様には研究や論文執筆、研究室での生活のサポートなど様々

な面でご協力いただき、大変お世話になりました。心より感謝しております。

24

Page 26: Out-of-Orderスーパスカラ・プロセッサの FPGA...に搭載することもできる、OpenRISC [10] のようなオープンソースで配布されているものも存在す

参考文献

[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/n2cpunii5v1.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. InWorkshop on Architectural Re-

search Prototyping (WARP), held in conjunction with ISCA-33, June 2006.

[8] Glenn Hinton, Dave Sager, Mike Upton, Darrell Boggs, Doug Carmean, Alan Kyker,Patrice Rous-

sel. 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/openrisc1200.

[11] R.E.Kessler. THE ALPHA 21264 MICROPROCESSOR.IEEE Micro, Vol. 19, No. 2, pp. 24–36,

Mar. 1999.

25

Page 27: Out-of-Orderスーパスカラ・プロセッサの FPGA...に搭載することもできる、OpenRISC [10] のようなオープンソースで配布されているものも存在す

[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