卒業論文 デザインパターンを用いたマルチ ALU プロセッサの設計

卒業論文
デザインパターンを用いたマルチ ALU プロセッサの設計
氏
名:境 直樹
学籍番号:2260070044-1
指導教員:山崎 勝弘 教授
提 出 日:2010 年 2 月 17 日
立命館大学
理工学部
電子情報デザイン学科
内容梗概
本論文では、ハード/ソフト協調学習システムとそのシステムの中のデザインパターンを
用いて、ハードウェアとソフトウェアの両方の知識を得ることを目的とし、デザインパタ
ーンを用いて効率よく Verilog-HDL によるマルチ ALU プロセッサを設計した。
本研究では、ハード/ソフト協調学習システムとデザインパターンを用いて実際にプロセ
ッサを設計し、デザインパターンがプロセッサ設計において、有効であるかと、マルチ ALU
プロセッサの性能の評価することを目的としている。
i
目次
1.
はじめに ........................................................................................................................ 1
2.
マルチ ALU プロセッサ(MAP)のアーキテクチャ ........................................................ 3
2.1
ハード/ソフト協調学習システム ............................................................................. 3
2.2
MAP の設計思想 ...................................................................................................... 3
2.3
命令セットアーキテクチャ ...................................................................................... 4
3.
デザインパターンを用いた MAP の設計 .................................................................... 8
3.1
デザインパターンを用いた設計............................................................................... 8
3.2
命令の実行と制御 .................................................................................................. 10
3.3
モジュール設計と単体動作検証............................................................................. 20
3.4
シミュレーションによる全体動作検証.................................................................. 23
4.
5.
考察 ............................................................................................................................ 25
4.1
MAP の検討 ........................................................................................................... 25
4.2
デザインパターンの評価 ....................................................................................... 26
おわりに ..................................................................................................................... 27
謝辞 ....................................................................................................................................... 28
参考文献 ............................................................................................................................... 29
ii
図目次
図 1:ハードソフト協調学習システムの学習体系 ........................................................ 4
図 2:MAP のデータパス .............................................................................................. 5
図 3:MAP の命令形式 .................................................................................................. 6
図 4:デザインパターンを用いたプロセッサ設計 ........................................................ 8
図 5: 2ALU の MAP データパス.............................................................................. 10
図 6:R 形式_論理演算命令の実行過程 ......................................................................11
図 7:R 形式_シフト命令の実行過程......................................................................... 12
図 8:R 形式_復帰命令の実行過程 ............................................................................ 13
図 9:I 形式の実行過程................................................................................................ 14
図 10:L 形式_分岐命令の実行過程 .......................................................................... 15
図 11:L 形式_ロード命令の実行過程 ....................................................................... 16
図 12:L 形式_ストア命令の実行過程 ....................................................................... 17
図 13:L 形式_jump and link 命令の実行過程 ......................................................... 18
図 14:J 形式_ジャンプ命令の実行過程.................................................................... 19
図 15:CU 外部仕様 .................................................................................................... 20
図 16:CU の Verilog-HDL 記述例 ............................................................................. 21
図 17:テストベンチの記述例 ..................................................................................... 22
図 18:ModelSim による CU のシミュレーション .................................................... 23
表目次
表 1:命令フィールドの意味 ......................................................................................... 6
表 2:MAP 命令セット一覧........................................................................................... 6
表 3:通常プログラム検証結果 ................................................................................... 23
表 4:プログラム別による実行クロックサイクル数の比較 ........................................ 25
表 5:本研究を通しての学習時間 ................................................................................ 26
iii
1 はじめに
近年の急速な半導体製造時術の発展により、LSI の小型化や軽量化、高速化それに低消費
電力化が可能となっている。身近なものでは、携帯電話、自動車、テレビ、ゲーム機など
に挙げられる組み込み機器は、いずれもハードウェアとソフトウェアから構成されている。
それらの機器に対しての要求される仕様は大規模かつ複雑になり、小型化や低消費電力化
も進んでいる。さらには、製品のライフサイクルは縮小し、開発期間の短縮化も求められ
ている。そのことによって、ハード/ソフト協調設計が開発期間短縮に大きく影響を及ぼす。
近年の LSI 開発技術はハードウェアとソフトウェアに密接な関係があり、ハードとソフト
の両方の知識を習得するためにも、早期の教育をする必要がある。このように、高集積シ
ステム LSI 技術の進化の中、性能は多様化しており、ハードとソフト両方の知識を持ち、
さらにプロセッサにおける命令セットとマイクロアーキテクチャの知識が必要不可欠であ
る。
以上の背景から、大学の教育でもハードウェアとソフトウェアの関係を意識した学習が
必要となってくる。そこで本研究室では、ハード/ソフト協調学習システムを考案し、開発
を進めてきた[5]~[14]。ハード/ソフト協調学習システムとは、プロセッサを通してハード
とソフトの両方の学習を進めていくことを目的としたシステムである。このシステムを用
いて最初に設計されたプロセッサがMONI[5]である。MONIをこのシステムの教育用プロ
セッサにし、学習した人が設計していったのがSOAR[8]でありSARIS[13]である。さらに、
近年プロセッサ設計によく利用されるARMプロセッサの利点を取り入れたARMライクプ
ロセッサ[11]の設計もしてきた。このハード/ソフト協調学習システムは学習者からの評価
を行うことによって、システムを向上させていくものである。今回、新たにデザインパタ
ーンがシステムに加わる[14]。デザインパターンの主な利点は時間効率のよい設計である。
システムの内容に新たにデザインパターンを取り組むことによって、これから学習してい
く、もしくは設計していく人の設計速度の短縮を図る。今までハード/ソフト協調学習シス
テムを利用して設計したプロセッサを再利用し、新たに別のプロセッサ設計するときに似
たような命令形式のデータパスを参考にスムーズに設計を行い、デザインパターンを取り
いれることによって効率的に設計していこうという取り組みである。
本研究では、ハード/ソフト協調学習システムを用いて、複数のALUによる並列処理可能
なマルチALUプロセッサ(MAP)の設計を行い、FPGAボード上での動作検証と評価を行う
ことを目的とする。MAPは名前のとおり、4つのALUを有し、128ビットの命令で制御する。
設計にはVLIW(Very Long Instruction Word)方式を用いる。依存関係にない複数の演算を
一つの命令としてまとめて同時に実行するものである。それぞれの命令は依存関係を持た
ず、同時実行される命令の数は常に一定に保たれている。規定の数に命令の数が達しない
場合はNOP命令で埋められる。この方式を用いたプロセッサを実際に設計することにより
プロセッサアーキテクチャを理解し、設計したプロセッサをHDLシミュレータにより検証、
1
FPGAボード上で動作を確認する。MAPの設計に際して、デザインパターンを用いて設計
時間の短縮をはかる。
本研究の目的はデザインパターンを評価することによって、デザインパターンの改善、
または今後のハード/ソフト協調学習システム拡張について検討していくことである。また、
MAPの設計を行い今まで設計されたプロセッサとの性能の比較を行う。
本論文では、第2章で今回設計するMAPプロセッサついての概要と構成と命令セットアー
キテクチャの詳細を説明する。第3章では実際にデザインパターンを用いたMAPプロセッサ
設計と設計したプロセッサの動作検証について説明する。そして、第4章では考察を行い、
設計したMAPプロセッサの評価とデザインパターンの評価について述べる。
2
2 マルチ ALU プロセッサ(MAP)のアーキテクチャ
2.1
ハード/ソフト協調学習システム
ハード/ソフト協調学習システム[5]~[15]とは、プロセッサを通してハードウェアとソフト
ウェアの両方の知識を学習していく為に考案されたシステムである。 ソフトウェアを学習
する面では、アーキテクチャが可変な命令セットシミュレータ(MONI 仮想シミュレータ)
を用いてプロセッサのアーキテクチャの仕組みの理解し、アセンブリ言語で書かれたプロ
グラムを評価する。MONI とは、本研究室で MIPS[1]のサブセットとして定義した教育用
マイクロプロセッサである。ハードウェアを学習する面では、シミュレータで理解したプ
ロセッサの知識を基に、HDL によるプロセッサ設計を行う。そして学習者が設計したプロ
セッサを検証、評価することによってプロセッサ設計能力を習得する。次に、ハードウェ
ア学習の際に使用するプロセッサ設計支援ツールについて説明する。命令セット定義ツー
ル、汎用アセンブラ、汎用シミュレータにより、命令セットを独自に定義することができ
る。またプロセッサモニタとプロセッサデバッガは、学習者が設計したプロセッサを FPGA
ボード上で検証する際に使用する。これらのプロセッサ設計支援ツールを使用し、ハード
とソフトの両方の学習を進めていくことがこのシステムの目的である。
図1に、ハード/ソフト協調学習システムについての学習体系を示す。ソフトウェア学習の
流れは、学習者自身が用意したアセンブリプログラムをMONI仮想シミュレータ上でシミュ
レーションを行う。MONI仮想シミュレータでは、アーキテクチャを単一サイクル、マルチ
サイクル、パイプライン、スーパースカラの4つが選択可能である。プログラムの命令を
実行すると、その命令に対するプロデッサのデータパスが確認できるので、これにより学
習者はアセンブリプログラミング技術とMONIプロセッサの構造や動作の学習を行うこと
ができる。次に、プロセッサ設計支援ツールの命令セット定義ツールを用いて、学習者の
考案した命令セットを定義し、その出力ファイルを用いて汎用アセンブラと汎用シミュレ
ータを使用する。また汎用アセンブラの出力ファイルは、ハードウェア学習でのプロセッ
サ検証の際に使用する。学習者がこの3つのプロセッサ設計支援ツールを使用することに
より、プロセッサにおける命令セットアーキテクチャを学習することができる。ハードウ
ェア学習の流れは、実際にHDLを用いてMONIプロセッサの設計、またはオリジナルプロ
セッサの設計を行う。次に、設計したプロセッサをHDLシミュレータによりシミュレーシ
ョン検証を行い、それからFPGAボード上に実装し、評価する。FPGAボード上で検証する
際、設計したプロセッサをプロセッサデバッガと接続し、プロセッサモニタを用いてデー
タを送受信することで検証を行う。動作検証にはソフトウェア学習で作成したプログラム
を使用する。このようにしてプロセッサ設計能力の習得、またハードウェア特有の性質で
ある遅延や設計規模などを考慮したプロセッサの設計手法を学習することができ4
る。以上の流れから、ソフトウェアとハードウェアの学習を行う。
3
図 1:ハードソフト協調学習システムの学習体系
2.2
MAP の設計方針
MAP では MONI プロセッサと MIPS プロセッサを参考として構成している。
MAP を設計しようとした経緯は、ハード/ソフト協調学習システムにおいて、複数 ALU
をもつプロセッサの設計が今までされていなかった。また、複数 ALU を用いることによっ
て単純に性能の向上が見られるかを知りたかったためである。
MAP には以下のような特徴がある。
①4ALU による並列処理。
②1ALU を 32 ビットで制御し、全体命令長は 128 ビット
③4 つの命令形式で全 37 命令
④レジスタファイルは 32 個で、全 ALU で共有
図 2 に MAP のブロック図を示す
構成している各部の役割は以下の党利である。
・ PC(プログラムカウンタ):次に実行するメモリのアドレスを保持するレジスタ。
・ IM(命令メモリ):実行する命令を保持するメモリ
・ RF(レジスタファイル):演算結果を保持し、オペランドに用いるレジスタ。
4
・ ALU(演算機):算術論理演算を行う回路。
・ DM(データメモリ):プロセッサで演算するための入力データを保持するメモリ。
・ MUX(マルチプレクサ):各マルチプレクサは命令ごとによって複数入力されたデータ
から出力するデータを選び出力する回路。
・ CU(コントロールユニット):命令ごとによって違うデータパスを管理し、各種レジス
タ、メモリ及びすべての動作をコントロールするところ。
図 2:MAP のデータパス
2.3
命令セットアーキテクチャ
MAP には、Jump 形式(J 形式)
、Register 形式(R 形式)、Immediate 形式(I 形式)、
Long 形式(L 形式)の 4 つの命令形式を用意した。J 形式には無条件分岐命令の JUMP、
プログラム終了命令となる HALT を定義している。R 形式にはレジスタ間の演算を行う命
令を定義している。I 形式にはレジスタ値と即値演算を行う命令を定義している。L 形式に
は条件分岐命令とメモリ・レジスタへのデータ転送命令を定義している。L 形式と J 形式で
は DM へのアクセスと PC に JUMP する範囲を多く取ることにより、従来のプロセッサに
はできなかった大規模な計算を行うことができる。
5
図 3 に MAP の命令形式を示す。
図 3:MAP の命令形式
基本的には 1ALU を 32 ビットで動作させる。Op で命令を R 形式、I 形式、L 形式、J
形式と判断する。また R 形式においては、フィールド Fn で命令を詳細に識別しているた
め、Op1 つに対して 64 種類まで拡張が行える。L 形式と J 形式では、プログラムカウンタ
やデータメモリにアクセスするフィールドを広く確保するために 64 ビットの長さをもって
いる。表 1 に各フィールドの意味を、表 2 に命令セット一覧を示す。
表 1:命令フィールドの意味
表 2:MAP 命令セット一覧
R
命令
Op
Rs/Rt/Rd
Shamt
NOP
000000
ADD
000001
Rs
Rt
Rd
SUB
000001
Rs
Rt
Rd
Fn
動作
000000
no action
X
000000
Rd = Rs+Rt
X
000001
Rd = Rs-Rt
XXXX
6
I
L
J
AND
000001
Rs
Rt
Rd
X
000010
Rd = Rs&Rt
OR
000001
Rs
Rt
Rd
X
000011
Rd = Rs|Rt
XOR
000001
Rs
Rt
Rd
X
000100
Rd = Rs^Rt
NOT
000001
Rs
X
Rd
X
000101
Rd = !(Rs)
SLT
000010
Rs
Rt
Rd
X
000000
(if Rs < Rt) rd = 1
SGT
000010
Rs
Rt
Rd
X
000001
(if Rs > Rt) rd = 1
SLE
000010
Rs
Rt
Rd
X
000010
(if Rs ≦ Rt) rd = 1
SGE
000010
Rs
Rt
Rd
X
000011
(if Rs ≧ Rt) rd = 1
SEQ
000010
Rs
Rt
Rd
X
000100
(if Rs = Rt) rd = 1
SNE
000010
Rs
Rt
Rd
X
000101
(if Rs ≠ Rt) rd = 1
SLL
000011
Rs
X
Rd
Shamt
000000
Rd = Rs << Rs
SRL
000011
Rs
X
Rd
Shamt
000001
Rd = Rs >> Rs
SRA
000011
Rs
X
Rd
Shamt
000010
Rd = Rs >>> Rs
JR
000100
Rs
000000
PC = Rs
ADDI
001000
Rs
Rd
imm
Rd = Rs+imm
SUBI
001001
Rs
Rd
imm
Rd = Rs-imm
ANDI
001010
Rs
Rd
imm
Rd = Rs&imm
ORI
001011
Rs
Rd
imm
Rd = Rs|imm
XORI
001100
Rs
Rd
imm
Rd = Rs^imm
SLTI
001101
Rs
Rd
imm
(if Rs < imm) rd = 1
SGTI
001110
Rs
Rd
imm
(if Rs > imm) rd = 1
SLEI
001111
Rs
Rd
imm
(if Rs ≦ imm) rd = 1
SGEI
010000
Rs
Rd
imm
(if Rs ≧ imm) rd = 1
SEQI
010001
Rs
Rd
imm
(if Rs = imm) rd = 1
SNEI
010010
Rs
Rd
imm
(if Rs ≠ imm) rd = 1
LDHI
010011
Rs
Rd
imm
Rd = {imm,Rs[15:0]}
LDLI
010100
Rs
Rd
imm
Rd = {Rs[31:16],imm}
BEQZ
100000
Rs
imm+32bit
(if Rs = 0) PC = imm
BNEZ
100001
Rs
imm+32bit
(if Rs ≠ 0) PC = imm
LD
100010
Rd
imm+32bit
Rd = DM[imm]
ST
100011
Rs
imm+32bit
DM[imm] = Rs
JAL
100100
Rd
imm+32bit
PC = imm:Rd = PC+1
JUMP
111110
imm+32bit
PC = imm
HALT
111111
imm+32bit
exit
X
7
3 デザインパターンを用いた MAP の設計
3.1 デザインパターンを用いた設計
3.1.1 デザインパターン
プロセッサ設計に用いるデザインパターン[14]は、過去のプロセッサ設計データを仕様,
実装に限らず、分類した構成要素を用いてプロセッサの学習,設計を補助する。過去の設
計を再利用することで、学生の負担を軽減でき、より高度なプロセッサの設計、学習に時
間を充てることができる。
デザインパターンは MONI シミュレータと併用して各種プロセッサの動作理解を補助す
る。制御はプロセッサの性能を大きく左右する部分であり、信号をどのように割り当てれ
ばよいか学習する必要がある。しかし、アセンブリ言語によるプログラミングやデバッグ
は大きな負担になる。また、プログラムの動作はループ構造になっている部分が多くあり,
各種アーキテクチャによるデータの格納、例外処理など個々の命令の制御と機能ユニット
の動作が理解できればよい。そこで、デザインパターンではプロセッサの動作を理解する
のに必要な命令をあらかじめ提供していく。それにより、命令ごとに制御信号がどのよう
に変化するのかをアニメーションを用いて最低限の命令動作を把握することで理解できる.
過去のプロセッサ設計データを設計見本の形で利用することで、そのプロセッサが持つ
長所と短所が理解できる。従って,設計するプロセッサの特徴と改善点や効率化のポイン
トを早い段階で把握できるため、同じ時間の中でも仕様の策定を効率的に進め、より高度
なアーキテクチャを採用できるなど内容を充実できるようになる。
デザインパターンの構成と、それを用いたプロセッサ設計の手順を図 4 に示す。
図 4:デザインパターンを用いたプロセッサ設計
8
本研究で提案するデザインパターンは、学習者がオリジナルプロセッサの新規設計をす
るときに、ほしい情報のキーワードを入力し、デザインパターンのデータベースから検索
する。そして、類似したパターンが存在すれば学習者へ提供する。
デザインパターンでは主に、初めてプロセッサを設計する人やより高度なアーキテクチ
ャを搭載したプロセッサを設計する人それぞれが望む活用しやすい設計資産のデザインパ
ターンへの分割案を提案していく。デザインパターンは過去の設計データから仕様と実装
を再利用可能な要素ごとに分類することで、設計見本として有効的に使うことができ、設
計と学習両面をサポートして、効率よく学習できるシステムを目指しているものである。
各設計段階において,学習者は求めるキーワードでデザインパターンに検索をかけてキ
ーワードに類似したパターンがある場合に取り出せる.
新規設計を始めるときは,各種プロセッサアーキテクチャのアニメーションによる細か
な回路動作の観察が行えるため,アーキテクチャ学習にかかる時間を短縮できる.また,
アーキテクチャ,命令セットやデータパスからプロセッサの長所と短所を把握でき,効率
化のポイントや改善点を発見しやすくなるのでプロセッサの仕様イメージをより明確にで
き,仕様策定にかかる時間を効率的に短縮できる.
次に設計では,デザインパターン上にある単一機能モジュール,命令形式ごとなどに分
類された IP を用いることができる.ハードウェア設計の設計見本として用いるとプログラ
ミング能力の向上と抱えている設計問題の解決策を探すことが可能である.また,設計の
再利用では利用したい IP を選択してプロセッサの仕様にあったインターフェースの修正を
行い、搭載することで 1 から機能を設計する必要がなくなり、設計期間の短縮ができる。
最後に検証では、オリジナルプロセッサと過去のプロセッサの性能比較と検証が行える
ため、実際に設計したプロセッサが他のプロセッサと比べたときにどの程度の性能を持つ
か、また、特徴として挙げたポイントがきちんと設計できているか確認できる。検証の終
わったプロセッサをデザインパターンと比較して再利用可能なものがあれば,次の学習を
サポートする設計見本として構成要素に分類し、デザインパターンへ登録する。
3.1.2
デザインパターンを用いた設計
デザインパターンを取り入れて設計をしていく。2.2 の設計方針に基づいたシングルサイ
クルの MAP を設計した。プロセッサは、4ALU による並列処理ではなく 2ALU による並
列処理であり、命令幅は 64 ビットの仕様で設計していく。2ALU による設計の理由として
は、ALU を一度に 4 つに増やすのではなく、1 から 2 と増やしたことによる命令効率を検
討する。また、2ALU で一度設計することによって判明される問題点や改善点を見つける
ことにより、4ALU での設計において改善をしていくのが主な目的である。
デザインパターンを用いて設計を行っていく。新規設計となる MAP の類似設計パターン
をデザインパターンから取り出すが、複数 ALU を制御したプロセッサはデザインパターン
9
になかった。そのため、MONI の命令セットアーキテクチャとデータパス、ソースコード
を参考にさせてもらい、設計の短縮化を図る。
機能の追加と削除であるが、MONI の命令セットアーキテクチャにおいては 1ALU16 ビ
ットで制御していたが、MAP では 1ALU32 ビットに変更し、また 2ALU なので 64 ビット
で制御する。MONI にはスタック機能が入っていたがこれを除く。代わりに、JAL 命令と
JR 命令を取り入れることによって同じような機能を持たせる。ALU が 2 つに追加するこ
とが最大の特徴であり、RF が全 ALU で共有されるように設定する。これらの機能が増え
るにつれて、CU の制御も増やす。また、インターフェースの幅も命令セットアーキテクチ
ャに合わせて増やしていく。
HDL 設計ではすでに設計された MONI のソースコードを参考にさせてもらう。特に命令
セットアーキテクチャを参考にすることにより、ALU 設計が容易になる。また、データパ
スも参考にすることにより、全体設計イメージをしやすくなる。
以上のような流れで設計を行う。
3.2
命令の実行と制御
図 5 に、シングルサイクル MAP(2ALU)のデータパスを示す。
図 5: 2ALU の MAP データパス
MAP 設計において、命令形式別によるデータパスを図に示しながら以下に説明する。デ
10
ータが通る部分は実線で、R 形式と比較してデータが通るようになった部分は赤い実線で配
線している。データが通らない部分は破線で配線し、命令で使用しないモジュール部は灰
色で塗りつぶしてある。
(1) R 形式
レジスタ同士による演算を行い、1ALU32 ビットで動作する。
(a)論理演算命令 (ADD,SUB,AND,OR,XOR,NOT,SLT,SGT,SLE,SGE,SEQ,SNE,)
レジスタ同士による論理演算と比較を行う。
図 6:R 形式_論理演算命令の実行過程
R 形式の論理演算命令では、IM から CU に Op と Fn のデータを送る。また演算データ
のアドレス Rs と Rt、演算結果を格納するアドレス Rd を RF に出力する。ALU は、CU か
ら演算命令の種類を受け取り、Rs データと Rt データの演算を行い出力する。その後 MUX
を通り、Rd で指定したアドレスに演算結果を格納する。PC 値は PC の出力とつながって
いるアドレス加算機によって1加算され、次のクロックで次の命令が実行される。
11
(b)シフト命令 (SLL,SRL,SRA)
レジスタの値を Shamt に応じてシフト演算を行う。
図 7:R 形式_シフト命令の実行過程
R 形式のシフト命令では、IM から CU に Op と Fn のデータを送る。論理演算命令とは
違うところは、演算データのアドレス Rs、演算結果を格納するアドレス Rd を RF に出力
し、シフト量を表している Shamt を、MUX を通して ALU に入力させるところである。
ALU は、CU から演算命令の種類を受け取り、Rs データと Shamt データを、シフト演算
を行い出力する。その後 MUX を通り、Rd で指定したアドレスに演算結果を格納する。PC
値は(1)と同様である。
12
(c)復帰命令 (JR)
JAL(jump and link)命令の復帰命令を行う
図 8:R 形式_復帰命令の実行過程
R 形式の復帰命令は、ほかの R 形式とは異なり上位 32 ビットでのみ使用する。IM から
受け取った命令の識別を行い、CU に Op と Fn のデータを送る。また、演算データのアド
レス Rs を RF に出力する。この Rs は(8)の JAL 命令でレジスタに格納された PC データで
あり、そのデータを PC に戻すものである。
13
(2) I 形式
レジスタと即値による演算および比較を行う
図 9:I 形式の実行過程
I 形式では、R 形式とは異なり IM から CU に op のデータのみ送る。また演算データの
アドレス Rs 演算結果を格納するアドレス Rd を RF に出力し、もう一方の演算データとな
る即値は MUX を通して ALU に出力する。ALU は、CU から演算命令の種類を受け取り、
Rs と即値データの演算を行い出力する。その後 MUX を通り、Rd で指定したアドレスに演
算結果を格納する。PC 値は R 形式と同様である。
14
(3) L 形式
1 命令を 64 ビットで制御。PC や DM へのアクセス
(a)分岐命令 (BEQZ,BNEZ)
レジスタの値の比較し、PC にアドレスデータの出力を行う。
図 10:L 形式_分岐命令の実行過程
R 形式との違いは、64 ビットで 1 命令を制御している点である。L 形式の分岐命令では、
IM から CU に op のデータを送る。
また条件判定するデータのアドレス Rs を RF に出力し、
分岐先のアドレス計算を行うデータとなる即値を出力する。ALU は、Rs のデータを判定し、
分岐するかしないかのデータを出力する。MUX において ALU で出力されたデータをもと
に PC 値に分岐先アドレスを出力し PC に入力される。
15
(b)ロード命令 (LD)
DM に格納されているデータを ALU で演算できるように RF に格納する。
図 11:L 形式_ロード命令の実行過程
ほかの命令との違いは DM から出力された値が RF に格納されることである。LD 命令で
は、IM から命令を受け取り、DM からのデータを格納する場所となるアドレス Rd を RF
に出力し、DM のデータを参照するアドレスとなる即値を出力する。指定されたアドレスか
ら出力したデータを Rd に入力する。また、PC 値は R 形式と同様である。
16
(c)ストア命令 (ST)
RF に格納されているデータを DM に格納する。
図 12:L 形式_ストア命令の実行過程
データを RF から DM に格納している。ST 命令では、IM から命令を受け取り、DM へ
imm が指定するアドレスに Rs が指定する RF の内容を格納する。また、PC 値は R 形式と
同様である。
17
(d)jump and link 命令
(JAL)
主に関数呼び出しに使用される。元の命令に戻るときは JR 命令を使用する。
図 13:L 形式_jump and link 命令の実行過程
ほかの命令との違いは RF に PC の値を格納と並行して PC にアドレスを出力する。jump
and link 命令では、IM から受け取った命令の識別を行い、CU に op のデータを送る。ま
た PC の値を格納するアドレス Rd を RF に出力し、ジャンプ先となる即値を、MUX を通
して PC に出力する。それと同時にアドレス加算機によって1加算された PC の値を、MUX
を通して Rd に格納する。
18
(4)J 形式 ジャンプ命令(JUMP)
無条件にアドレスへジャンプを行う。
図 14:J 形式_ジャンプ命令の実行過程
JUMP 命令では、IM から命令を受け取り、次の PC 値となるアドレスを即値として PC
に入力する。他の命令との違いは、条件なく PC に出力されることである。
(5)その他 (NOP、HALT)
NOP は no operation(何もしない)を意味し、文字どおり何も動作を起こさない。R 形
式や I 形式を実行する際にデータ依存による並列動作を行えない場合に使用する。プログ
ラム終了命令の HALT は CU が IM から Op を受け取り、各モジュールに停止信号を送
る。実行過程は他の命令の実行過程の図を参照し、省略する。
19
3.3
モジュール設計と単体動作検証
3.3.1 モジュール設計
3.2 で述べた命令の実行フェーズの動作を満たすためのハードウェア記述言語によるモ
ジュールの設計を行った。
設計を行う上で、3.1 で説明したデザインパターンを用いて設計する。
今回は、MONI プロセッサの命令セットと、データパスを参考にし、MAP に合うデータ
パスを構成した。また、MIPS プロセッサの命令形式も参考にすることにより、32 ビット
の命令制御の理解を早めた。ALU を増やすことで動作が複雑化したが、VLIW 方式を用い
ることにより、簡単に制御ができるようになる。そのため、実際の設計で R 形式の論理演
算とシフト演算及び I 形式のデータパスは、ビット数が増えただけなのでそのまま組み込む
ことができた。また、L 形式と J 形式では 64 ビットで命令を制御するが、CU による制御
と MUX の量を増やすことで MONI と同じようなデータパスで設計を行えた。JAL 命令と
JR 命令はデザインパターンには組み込まれていないため、CU の制御とデータパスを増や
すことで設計をする。
設計の例として CU の大まかな構成を説明する。図 15 に CU の外部仕様を示す。
図 15:CU 外部仕様
入力信号 I_CU_OP0、I_CU_FN0、I_CU_OP1、I_CU_FN1 が入ってくる。これは IM
から送られてくるデータで、I_CU_OP0、I_CU_OP1 には演算を指定する Op が流れる。ま
た、I_CU_FN0、I_CU_FN1 には R 形式の命令を詳細に識別する Fn が流れる。それの組
み合わせによってそれぞれの命令のデータパスを制御する。
出力信号について説明する。CU_PC_CE は CU から PC に送る信号であり、HALT 命令
の時に PC を止める信号を送る。CU_RF_WE0、CU_RF_WE1 は RF への書き込み信号で
20
あり、命令によって信号が変わる。CU_ALU_OPE0、CU_ALU_FN0、CU_ALU_OPE1、
CU_ALU_FN1 は ALU に送る信号であり、ALU0、ALU1 で演算する動作を決める信号を
送る。CU_DM_WE は CU から DM に送る信号で、DM に ST 命令時のみ DM にデータを
書きこむ信号である。CU_MX1~CU_MX7 は CU から 7 つある MUX に流れる信号であ
り、命令に応じて MUX の複数ある入力から 1 または 2 本のデータを出力するための信号
である。
Verilog-HDL によって記述した CU のソースの一部を図 16 に示す。
図 16:CU の Verilog-HDL 記述例
入力信号により出力する信号を決定している。今回の設計では、動作に問題が無い制御
に関しては継続的代入文 assign を用いて制御を簡潔にしている。
3.3.2 テストベンチによるモジュールの動作検証
モジュールの設計後、仕様どおりの動作を行うかどうかシミュレーションツールによる
検証を行なう。その際、テスト対象のモジュールに対してどのようなタイミングで入力信
21
号を与えるかを記述し、出力を観測するテストベンチが必要である。図 17 に、CU に対す
るテストベンチの記述例を示す。
図 17:テストベンチの記述例
今回のテストでは、命令形式別の代表的命令と特殊な命令の合計 12 命令が CU に入力さ
れ た 際 、 信 号 が 正 し く出 力 さ れ て い る か を 調べ る 。 テ ス ト ベ ン チ の記 述 後 、 Model
Technology 社の ModelSim というシミュレーションツールにより、波形による動作の確認
を行なう。ModelSim を使用すると図 18 のような波形図が現れる。
22
図 18:ModelSim による CU のシミュレーション
デ ー タ は 全 体 の 波 形 が 見 え る よ う に 16 進 数 で 表 示 し て あ る 。 入 力 信 号 で あ る
I_CU_OPE0、I_CU_OPE1、I_CU_FN0、 I_CU_FN0 から命令動作を読み取ることで、
出力信号が各モジュールにどのような信号を送っているかの変化を確認できる。また、縦
の列の信号を読み取ることでテストの命令に応じた信号が出力されるか確認できる。シミ
ュレーションを重ねながらモジュールをデバッグすることにより、モジュールの論理設計
が行われる。
3.4
シミュレーションによる全体動作検証
MAP の Verilog-HDL 記述後、
ModelSim によって MAP 全体のシミュレーションを行い、
MAP の全体動作検証及びデバッグを行なう。各モジュール全体の入出力の配線をつなぐ
Top モジュールを作成し、テストを行うことによって全体がプロセッサとして動作している
かを確認する。データメモリの値の入出値と処理にかかったクロックサイクル数を表 3 に
示す。
表 3:通常プログラム検証結果
23
テストでは、検証プログラムとして N までの和と符号付き乗算のプログラムを実行する。
データメモリには 0 番地に 000A16、1 番地に 000516 の値を入れてそれぞれのプログラムを
実行した。N までの和では、データメモリの 0 番地を N の値とし、総和を求めてデータメ
モリ 1 番地に結果を返す。実行結果として 003716 = 5510 の正しい結果が得られた。符号付
き乗算プログラムでは A×B=X とした場合、データメモリの 0 番地 1 番地を A, B を入力と
し、2 番地に積 X を返す。データメモリの値の入出値と処理にかかったクロックサイクル
数を表 3 に示す。
24
4 考察
4.1 MAP の検討
4.1.1 MAP のアセンブリプログラムの検証
デザインパターンを用いて 2ALU の MAP を設計した。これと MONI プロセッサと性能
を比較する。表 4 にプログラムの実行クロックサイクル数の比較を示す。
表 4:プログラム別による実行クロックサイクル数の比較
符号付き
2 次方程式の
2×2 の行列
乗算
解の根
乗算
55
33
171
204
34
22
123
77
プロセッサ\プログラム
N までの和
MONI
MAP
ALU が 2 つあるので目標としては MONI の実行クロックサイクル数の 1/2 になることで
ある。比較することによって判明したことは、N までの和、符号付き乗算、2 次方程式の解
の根では命令の短縮には成功しているが、命令同士による依存関係により短縮が図れない
部分がある。また、2×2 の行列乗算では、目標としている値より短い実行クロックサイク
ル時間でプログラムを実行している。これは MONI と MAP のレジスタ数の違いが大きく
関係している。MONI ではレジスタ数が 8 に対して、MAP では 32 である。そのため、MONI
ではレジスタ数の確保のために LD と ST の命令が多くなる。これにより、2×2 の行列乗
算では MAP の実行クロックサイクルが MONI よりも目標以上に高速化されているといえ
る。
4.1.2
MAP の検討課題
今回設計して検討、改善する余地がある点が判明した。一点目としては、DM にアクセス
するときは直接 DM のアドレスにアクセスしていた。この部分をレジスタ間接にすること
により、プログラムの汎用性を高めることができる。二点目はプロセッサのアドレス方式
を現状の語アドレス方式にするかバイトアドレス方式にするかである。三点目としては、
命令セットアーキテクチャの見直しである。4ALU 制御にした場合の命令セットはより複
雑になり、また命令形式の見直しも必要である。四点目としては、ALU によるチェーン機
能の追加である。チェーン機能により、命令同士による依存関係が緩和され、実行クロッ
クサイクルが減尐すると推測される。五点目としては、4ALU での設計となると 128 ビッ
トの命令データを書く必要があり、プログラム 1 つにしても膨大な時間がかかる。そのた
め、アセンブリから機械語へのアセンブラが必要になってくる。最後に FPGA ボード実装
についてである。現状のハード/ソフト協調学習システムでは、MAP は FPGA ボードに実
装できない。そのため、新たなボード環境を整える必要がある。
25
4.2
デザインパターンの評価
本研究で、デザインパターンを用いてシングルサイクルの MAP を設計した。デザインパ
ターンから過去に設計された MONI プロセッサの命令セットとデータパスおよびソースコ
ードを参考にして設計した。表 5 に MAP 設計におけるハードウェアとソフトウェアの学習
時間を示す。
表 5:本研究を通しての学習時間
MAP の回路規模は今までのプロセッサとは異なり大規模である。しかし、デザインパタ
ーンを用いたことによりハードウェア学習時間は合計 60 時間で学習できた。これはソース
コードを再利用することによって、設計時間の短縮が図ると判断できた。また、シミュレ
ータ検証においては、過去のテストデータを参考にすることで時間の短縮ができたと判断
した。一方で、ソフトウェア学習には合計 100 時間もかかった。これは、MAP に用いた
VLIW 方式の特徴で、プログラミングに時間がかかる。また、命令語長が今までのものと
比べ長いため、MONI の命令セットを参考にして命令セット設計を行っても、設計時間の
比重が大きくなってしまった。そのためソフトウェア設計においてはデザインパターンが
有効に活用されたかが判断しづらい。
以上により、本研究でのデザインパターンの評価としては、ハードウェア学習において
かなり有効に作用されると判断でき、ソフトウェア学習においては参考となるプロセッサ
がないため判断できない。今後デザインパターンを用いてプロセッサ設計を行う際には、
マルチプロセッサや、パイプライン、スーパースカラ、VLIW などのさまざまなパターン
をデザインパターンに組み込んでおく必要がある。
26
5 おわりに
本論文では、本研究室で開発を進めているハード/ソフト協調学習システム並びに、今回
新たに取り入れたデザインパターンを用いて、シングルサイクルの MAP を設計した。設計
した MAP を、HDL シミュレータで検証を行った。本研究を通して、デザインパターンの
効率性と複数 ALU による演算および ALU によるレジスタの共有とその制御の仕組みにつ
いて学習を行えた。 今後の課題としては、4ALU による設計並びに命令セットアーキテク
チャの再検討である。また、ALU 同士によるチェーン機能を追加した設計を行うことがあ
げられる。ソフトウェア面では仮想シミュレータ環境があるとより効果的に理解度を高め
ることができるため、仮想シミュレータ環境の開発を進めることがあげられる。これらに
加えて、FPGA ボードも進化しているので、新たな FPGA ボード上への実装環境を整える
ことがあげられる。
27
謝辞
本研究の機会を与えて下さり、貴重な助言、ご指導を頂きました山崎勝弘教授に深く感
謝いたします。 また, 本研究に関して様々な相談に乗って頂き、貴重なご意見を頂きまし
た、高性能計算研究室の皆様に深く感謝いたします。
28
参考文献
参考文献
[1] David A.Patterson, john L.Hennessy 著,成田光彰 訳:コンピュータの構成と設計
(上)(下),日経 BP 社,1999.
[2] 小林優:入門 Verilog-HDL 記述,CQ 出版,2001.
[3] 並木英明,前田智美,宮尾正大:実用入門ディジタル回路と Verilog-HDL,技術評論社,
1996.
[4]坂井修一 著,コンピュータアーキテクチャ,電子情報通信学会、コロナ社,2004.
[5] 池田修久:ハードウェア記述言語による単一サイクル/パイプラインマイクロプロセッ
サの設計,立命館大学理工学部情報学科卒業論文,2002.
[6] 大八木睦:ハード/ソフト・コラーニングシステム上でのアーキテクチャ選択可能なプ
ロセッサシミュレータの設計と試作,立命館大学大学院理工学研究科,修士論文,2004.
[7] 古川達久: マルチサイクル・パイプライン方式による教育用マイクロプロセッサの設
計と検証,立命館大学理工学部卒業論文,2003
[8] 難波翔一朗: FPGA ボード上での単一サイクルマイクロプロセッサの設計と検証、
立命館大学理工学部情報学科卒業論文、2005
[9] 西田範行:ハード/ソフト協調学習のための汎用シミュレータの設計、立命館大学理
工学部情報学科卒業論文、2006.
[10] 志水建太:ハード/ソフト協調学習システム上でのプロセッサ設計とプロセッサデバッ
ガによる検証、立命館大学理工学部情報学科卒業論文、2007.
[11] 榎本雄太:ARMライクプロセッサの設計とFPGAボードへの実装の検討、立命館大学
理工学部情報学科卒業論文、2007.
[12] 志水 建太:プロセッサ設計教育のための命令セット・スーパースカラシミュ
レータの試作と評価、立命館大学理工学研究科修士論文、2009
[13] 井手 純一:ハード/ソフト協調学習システム を用いたプロセッサ設計と評価、立命館
大学理工学部情報学科卒業論文、2008
[14] PISHVA JOHN CYRUS P:ハード/ソフト協調学習システムを用いた 割込みプロセッ
サの設計、立命館大学理工学部情報学科卒業論文、2010
[15] 安倍 厚志:各種プロセッサアーキテクチャの設計に基づいたデザインパターンの検討、
立命館大学理工学研究科修士論文,2011
29