MicroBlaze プロセッサ リファレンス ガイド (UG984)

MicroBlaze プ ロ セ ッ サ
リ フ ァ レンス ガイ ド
UG984(v2015.1)
(v2015.2)
(v2015.3)
2015
615月
24
UG984
2015
年 4年
月9
日 30
日
本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。資
料によっては英語版の更新に対応していないものがあります。日本語版は参考用としてご使用の上、最新情
報につきましては、必ず最新英語版をご参照ください。
改訂履歴
次の表に、 こ の文書の改訂履歴を示
し ます。
2015/06/24
2015/09/30
: Vivado Design Suite
2015.2 リリース。内容の変更なし。
2015.3
日付
バージ ョ ン
改訂内容
2013/03/20
2013.1
初版。 UG081 を元に記述
2013/06/19
2013.2
Vivado 2013.2 リ リ ース用に更新
2013/10/02
2013.3
Vivado 2013.3 リ リ ース用に更新
2013/12/18
2013.4
Vivado 2013.4 リ リ ース用に更新
2014/04/02
2014.1
Vivado 2014.1 リ リ ース用に更新
•
•
•
•
•
•
•
2014/10/01
2014.3
Vivado 2014.3 リ リ ース用に更新
•
•
•
2015/04/15
2015.1
PVR の MicroBlaze リ リ ース バージ ョ ン コ ー ド に v9.3 を追加
ス タ ッ ク 保護レ ジ ス タ の使用 と 動作について明記
LMB 命令お よ びデー タ バ ス例外の説明を訂正
v9.3 の新機能であ る 拡張デバ ッ グ機能の説明を含め る (パフ ォ ーマ ン ス 監視、 プ ロ グ
ラ ム ト レース、 非侵入型プ ロ フ ァ イ リ ン グ)
v9.3 の新機能であ る リ セ ッ ト モー ド 信号の定義を含め る
AXI4-Stream TLAST 信号の処理方法を明記
UltraScale を追加、 2014.1 用にパフ ォーマ ン スお よ び リ ソ ース使用率を ア ッ プデー ト
表 2-1 の PCMPEQ お よ び PCMPNE の説明を訂正
PVR の MicroBlaze リ リ ース バージ ョ ン コ ー ド に v9.4 を追加
v9.4 の新機能であ る 外部プ ロ グ ラ ム ト レース の説明を含め る
Vivado 2015.1 リ リ ース用に更新
•
•
•
•
•
•
•
•
•
•
v9.5 の新機能であ る 16 ワ ー ド キ ャ ッ シ ュ の説明を含め る
PVR の MicroBlaze リ リ ース バージ ョ ン コ ー ド に v9.5 を追加
サポー ト さ れ る デンデ ィ ア ンお よ びパ ラ メ ー タ ー C_ENDIANNESS の説明を訂正
命令お よ びデー タ キ ャ ッ シ ュ の未処理読み出 し の説明を訂正
FPGA コ ン フ ィ ギ ュ レーシ ョ ン メ モ リ 保護についての参照 [参照 10] を ア ッ プデー ト
表 3-12 の ロ ッ ク ス テ ッ プ比較のバ ス イ ンデ ッ ク ス範囲の定期を訂正
IDIV 命令で変更 さ れ る レ ジ ス タ を明記
MFS 命令の PVR アセ ンブ ラ ニーモニ ッ ク を訂正
2015.1 用にパフ ォ ーマ ン スお よ び リ ソ ース使用率を ア ッ プデー ト
ト レーニ ン グ リ ソ ース に参考資料を追加
MicroBlaze プ ロ セ ッ サ リ フ ァ レ ン ス ガ イ ド (UG081)
UG984 (v2015.1) 2015 年 4 月 15 日
UG984
(v2015.2) 2015 年 96 月 30
(v2015.3)
24 日
japan.xilinx.com
2
目次
第 1 章 : 概要
内容 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
第 2 章 : MicroBlaze アーキテ ク チ ャ
概要 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
デー タ タ イ プ と エンデ ィ ア ン設定 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
命令 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
レ ジ ス タ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
パ イ プ ラ イ ン アーキ テ ク チ ャ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
メ モ リ アーキ テ ク チ ャ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
特権命令 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
仮想 メ モ リ 管理 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
リ セ ッ ト 、 割 り 込み、 例外、 お よ びブ レー ク . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
命令キ ャ ッ シ ュ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
デー タ キ ャ ッ シ ュ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
浮動小数点ユニ ッ ト (FPU) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
ス ト リ ーム リ ン ク イ ン タ ーフ ェ イ ス . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73
デバ ッ グお よ び ト レース . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73
フ ォール ト ト レ ラ ン ス . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91
ロ ッ ク ス テ ッ プ操作 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97
コ ヒ ーレ ン シ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99
第 3 章 : MicroBlaze 信号イ ン タ ー フ ェ イ スの説明
概要 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
MicroBlaze の I/O 概要 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
AXI4 お よ び ACE イ ン タ ーフ ェ イ ス について . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
ロ ーカル メ モ リ バス (LMB) イ ン タ ーフ ェ イ ス について . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
ロ ッ ク ス テ ッ プ イ ン タ ーフ ェ イ ス について . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
デバ ッ グ イ ン タ ーフ ェ イ ス について . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
ト レース イ ン タ ーフ ェ イ ス について . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
MicroBlaze コ アの コ ン フ ィ ギ ュ レーシ ョ ン . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
102
103
112
116
124
129
131
134
第 4 章 : MicroBlaze ア プ リ ケーシ ョ ン バイ ナ リ イ ン タ ー フ ェ イ ス
デー タ 型 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
レ ジ ス タ の使用規則 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
ス タ ッ ク 規則 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
メ モ リ モデル . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
割 り 込み、 ブ レー ク 、 例外処理 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
144
144
146
148
149
第 5 章 : MicroBlaze 命令セ ッ ト アーキテ ク チ ャ
記号の説明 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151
MicroBlaze プ ロ セ ッ サ リ フ ァ レ ン ス ガ イ ド
UG984 (v2015.1) 2015 年 4 月 15 日
UG984
(v2015.2) 2015 年 96 月 30
(v2015.3)
24 日
japan.xilinx.com
3
フ ォーマ ッ ト . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153
命令 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153
付録 A : パフ ォ ーマ ン スおよび リ ソ ース使用率
パフ ォーマ ン ス . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 252
リ ソ ース使用量 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 252
付録 B : その他の リ ソ ースおよび法的通知
ザ イ リ ン ク ス リ ソ ース . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
ソ リ ュ ーシ ョ ン セ ン タ ー . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
参考資料 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
ト レーニ ン グ リ ソ ース . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
お読み く だ さ い : 重要な法的通知 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
MicroBlaze プ ロ セ ッ サ リ フ ァ レ ン ス ガ イ ド
UG984 (v2015.1) 2015 年 4 月 15 日
UG984
(v2015.2) 2015 年 96 月 30
(v2015.3)
24 日
japan.xilinx.com
257
257
257
258
259
4
第 1 章
概要
本書は、 Vivado リ リ ース に含まれ る 32 ビ ッ ト の ソ フ ト プ ロ セ ッ サ、 MicroBlaze™ に関す る 資料で、 MicroBlaze ハー
ド ウ ェ ア アーキ テ ク チ ャ の リ フ ァ レ ン ス ガ イ ド です。
内容
こ のガ イ ド は、 次の各章で構成 さ れてい ます。
•
第 2 章 「MicroBlaze アーキ テ ク チ ャ 」 では、 MicroBlaze の機能の概要をは じ め、 ビ ッ グ エンデ ィ ア ンお よ び リ ト
ル エンデ ィ ア ンのビ ッ ト 反転フ ォーマ ッ ト 、 32 ビ ッ ト の汎用レ ジ ス タ 、 キ ャ ッ シ ュ ソ フ ト ウ ェ ア サポー ト 、 お
よ び高速シ ンプ レ ッ ク ス リ ン ク イ ン タ ーフ ェ イ ス な ど の機能 も 説明 し ます。
•
第 3 章 「MicroBlaze 信号 イ ン タ ーフ ェ イ ス の説明」 では、 MicroBlaze を接続す る ために使用可能な信号 イ ン タ ー
フ ェ イ ス の種類を説明 し ます。
•
第 4 章 「MicroBlaze アプ リ ケーシ ョ ン バ イ ナ リ イ ン タ ーフ ェ イ ス」 では、 MicroBlaze 用にアセ ンブ リ 言語で ソ
フ ト ウ ェ ア を開発す る のに重要な、 アプ リ ケーシ ョ ン バ イ ナ リ イ ン タ ーフ ェ イ ス を説明 し ます。
•
第 5 章 「MicroBlaze 命令セ ッ ト アーキテ ク チ ャ 」 では、 MicroBlaze の命令セ ッ ト アーキ テ ク チ ャ のシ ン ボル、
フ ォーマ ッ ト 、 お よ び命令について説明 し ます。
•
付録 A 「パフ ォーマ ン スお よ び リ ソ ース使用率」 では、 各 コ ン フ ィ ギ ュ レーシ ョ ンの最大周波数お よ び リ ソ ース
使用率を説明 し ます。
•
付録 B 「その他の リ ソ ースお よ び法的通知」 には、 さ ま ざ ま な資料お よ びその他の リ ソ ースへの リ ン ク があ り ま
す。
MicroBlaze プ ロ セ ッ サ リ フ ァ レ ン ス ガ イ ド
UG984 (v2015.1) 2015 年 4 月 15 日
UG984
(v2015.2) 2015 年 96 月 30
(v2015.3)
24 日
japan.xilinx.com
5
第 2 章
MicroBlaze アーキテ ク チ ャ
こ の章では、MicroBlaze™ の機能の概要 と 、ビ ッ グ エンデ ィ ア ン ま たは リ ト ル エンデ ィ ア ンのビ ッ ト 反転フ ォーマ ッ
ト 、 32 ビ ッ ト 汎用レ ジ ス タ 、 仮想 メ モ リ 管理、 キ ャ ッ シ ュ ソ フ ト ウ ェ ア サポー ト 、 AXI4-Stream イ ン タ ーフ ェ イ ス
な ど、 こ のアーキ テ ク チ ャ の詳細について説明 し ます。
概要
MicroBlaze™ エンベデ ッ ド プ ロ セ ッ サは、 ザ イ リ ン ク ス フ ィ ール ド プ ロ グ ラ マブル ゲー ト ア レ イ (FPGA) の イ ンプ
リ メ ン テーシ ョ ン用に最適化 さ れた RISC (Reduced Instruction Set Computer) コ アです。図 2-1 は、MicroBlaze コ アの機
能ブ ロ ッ ク デザ イ ンです。
命令側
バス イ ン タ ー フ ェ イ ス
デー タ 側
バス イ ン タ ー フ ェ イ ス
メ モ リ 管理ユニ ッ ト (MMU)
M_AXI_IC
M_ACE_IC
ITLB
UTLB
特殊
用途
レジス タ
分岐
タ ーゲ ッ ト
キャ ッ シュ
M_AXI_IP
ILMB
M_ACE_DC
シフ ト
バレル シ フ ト
乗算器
M_AXI_DP
除算器
FPU
バス
IF
D キャ ッ シュ
I キャ ッ シュ
ALU
プ ログラム
カウン タ ー
M_AXI_DC
DTLB
バス
IF
命令
バッ フ ァー
DLMB
命令
デコード
レ ジ ス タ フ ァ イル
32 X 32b
M0_AXIS..
M15_AXIS
S0_AXIS..
S15_AXIS
オプ シ ョ ンの MicroBlaze 機能
図 2‐1 : MicroBlaze コ アのブ ロ ッ ク図
機能
MicroBlaze ソ フ ト コ ア プ ロ セ ッ サは細か く コ ン フ ィ ギ ュ レーシ ョ ン を設定で き る ため、 デザ イ ンに必要な特定の機
能セ ッ ト を選択で き ます。
MicroBlaze プ ロ セ ッ サ リ フ ァ レ ン ス ガ イ ド
UG984 (v2015.1) 2015 年 4 月 15 日
UG984
(v2015.2) 2015 年 96 月 30
(v2015.3)
24 日
japan.xilinx.com
6
第 2 章 : MicroBlaze アーキテ ク チ ャ
プ ロ セ ッ サの固定機能セ ッ ト には、 次の よ う な も のがあ り ます。
•
32 個の 32 ビ ッ ト 汎用レ ジ ス タ
•
オペ ラ ン ド 3 つ と ア ド レ ス指定モー ド 2 つを含む 32 ビ ッ ト 命令ワ ー ド
•
32 ビ ッ ト のア ド レ ス バス
•
単一発行のパ イ プ ラ イ ン
こ れ ら の固定機能のほか、 MicroBlaze プ ロ セ ッ サには追加機能を選択 し て有効にで き る パ ラ メ ー タ ー値があ り ます。
古いバージ ョ ン (サポー ト さ れな く な っ た も の) の MicroBlaze の場合は、 本書で説明す る オプシ ョ ン の機能の一部だ
けがサポー ト さ れます。 最新バージ ョ ンの MicroBlaze (v9.5) では、 すべてのオプシ ョ ンがサポー ト さ れます。
新 し いデザ イ ンには最新バージ ョ ンの MicroBlaze を使用す る よ う に し て く だ さ い。
7 ページの表 2-1には、 MicroBlaze のバージ ョ ン別に、 コ ン フ ィ ギ ュ レーシ ョ ン可能な機能が ま と め ら れてい ます。
表 2‐1 : コ ン フ ィ ギ ュ レーシ ョ ン可能な機能 (MicroBlaze バージ ョ ン別)
MicroBlaze バージ ョ ン
機能
v9.0
v9.1
v9.2
v9.3
v9.4
v9.5
サポー ト 終了
サポー ト 終了
サポー ト 終了
サポー ト 終了
サポー ト 終了
推奨
3/5
3/5
3/5
3/5
3/5
3/5
ロ ーカル メ モ リ バ ス (LMB) デー タ 側 イ
ン タ ーフ ェ イ ス
オプシ ョ ン
オプシ ョ ン
オプシ ョ ン
オプシ ョ ン
オプシ ョ ン
オプシ ョ ン
ロ ーカル メ モ リ バ ス (LMB) 命令側 イ ン
タ ーフ ェ イ ス
オプシ ョ ン
オプシ ョ ン
オプシ ョ ン
オプシ ョ ン
オプシ ョ ン
オプシ ョ ン
ハー ド ウ ェ ア バレル シ フ タ ー
オプシ ョ ン
オプシ ョ ン
オプシ ョ ン
オプシ ョ ン
オプシ ョ ン
オプシ ョ ン
ハー ド ウ ェ ア除算器
オプシ ョ ン
オプシ ョ ン
オプシ ョ ン
オプシ ョ ン
オプシ ョ ン
オプシ ョ ン
ハー ド ウ ェ アのデバ ッ グ ロ ジ ッ ク
オプシ ョ ン
オプシ ョ ン
オプシ ョ ン
オプシ ョ ン
オプシ ョ ン
オプシ ョ ン
0-15 AXI
0-15 AXI
0-15 AXI
0-15 AXI
0-15 AXI
0-15 AXI
オプシ ョ ン
オプシ ョ ン
オプシ ョ ン
オプシ ョ ン
オプシ ョ ン
オプシ ョ ン
4、 8
4、 8
4、 8
4、 8
4、 8
4、 8、 16
ハー ド ウ ェ ア例外サポー ト
オプシ ョ ン
オプシ ョ ン
オプシ ョ ン
オプシ ョ ン
オプシ ョ ン
オプシ ョ ン
パ タ ーン比較命令
オプシ ョ ン
オプシ ョ ン
オプシ ョ ン
オプシ ョ ン
オプシ ョ ン
オプシ ョ ン
浮動小数点ユニ ッ ト (FPU)
オプシ ョ ン
オプシ ョ ン
オプシ ョ ン
オプシ ョ ン
オプシ ョ ン
オプシ ョ ン
ハー ド ウ ェ ア乗算器のデ ィ ス エーブル1
オプシ ョ ン
オプシ ョ ン
オプシ ョ ン
オプシ ョ ン
オプシ ョ ン
オプシ ョ ン
○
○
○
○
○
○
プ ロ セ ッ サ バージ ョ ン レ ジ ス タ (PVR)
オプシ ョ ン
オプシ ョ ン
オプシ ョ ン
オプシ ョ ン
オプシ ョ ン
オプシ ョ ン
エ リ ア ま たは ス ピー ド の最適化
オプシ ョ ン
オプシ ョ ン
オプシ ョ ン
オプシ ョ ン
オプシ ョ ン
オプシ ョ ン
ハー ド ウ ェ ア乗算器 64 ビ ッ ト 結果
オプシ ョ ン
オプシ ョ ン
オプシ ョ ン
オプシ ョ ン
オプシ ョ ン
オプシ ョ ン
LUT キ ャ ッ シ ュ メ モ リ
オプシ ョ ン
オプシ ョ ン
オプシ ョ ン
オプシ ョ ン
オプシ ョ ン
オプシ ョ ン
浮動小数点変換お よ び平方根命令
オプシ ョ ン
オプシ ョ ン
オプシ ョ ン
オプシ ョ ン
オプシ ョ ン
オプシ ョ ン
メ モ リ 管理ユニ ッ ト (MMU)
オプシ ョ ン
オプシ ョ ン
オプシ ョ ン
オプシ ョ ン
オプシ ョ ン
オプシ ョ ン
拡張ス ト リ ーム命令
オプシ ョ ン
オプシ ョ ン
オプシ ョ ン
オプシ ョ ン
オプシ ョ ン
オプシ ョ ン
すべての I キ ャ ッ シ ュ メ モ リ ア ク セ ス に
キ ャ ッ シ ュ イ ン タ ーフ ェ イ ス を使用
オプシ ョ ン
オプシ ョ ン
オプシ ョ ン
オプシ ョ ン
オプシ ョ ン
オプシ ョ ン
すべて の D キ ャ ッ シ ュ メ モ リ ア ク セ ス
にキ ャ ッ シ ュ イ ン タ ーフ ェ イ ス を使用
オプシ ョ ン
オプシ ョ ン
オプシ ョ ン
オプシ ョ ン
オプシ ョ ン
オプシ ョ ン
バージ ョ ン ス テー タ ス
プ ロ セ ッ サのパ イ プ ラ イ ンの深 さ
ス ト リ ーム リ ン ク イ ン タ ーフ ェ イ ス
マシン ステータ ス セ ッ ト およびク リ ア命令
キ ャ ッ シ ュ ラ イ ン ワー ド 長
ハー ド ウ ェ ア デバ ッ グの読み出 し 可能な
ESR お よ び EAR
MicroBlaze プ ロ セ ッ サ リ フ ァ レ ン ス ガ イ ド
UG984 (v2015.1) 2015 年 4 月 15 日
UG984
(v2015.2) 2015 年 96 月 30
(v2015.3)
24 日
japan.xilinx.com
7
第 2 章 : MicroBlaze アーキテ ク チ ャ
表 2‐1 : コ ン フ ィ ギ ュ レーシ ョ ン可能な機能 (MicroBlaze バージ ョ ン別)
MicroBlaze バージ ョ ン
機能
v9.0
v9.1
v9.2
v9.3
v9.4
v9.5
D キ ャ ッ シュのラ イ ト バッ ク キャ ッ シュ
ポ リ シーを使用
オプシ ョ ン
オプシ ョ ン
オプシ ョ ン
オプシ ョ ン
オプシ ョ ン
オプシ ョ ン
分岐先キ ャ ッ シ ュ (BTC)
オプシ ョ ン
オプシ ョ ン
オプシ ョ ン
オプシ ョ ン
オプシ ョ ン
オプシ ョ ン
I キ ャ ッ シ ュ 用ス ト リ ーム
オプシ ョ ン
オプシ ョ ン
オプシ ョ ン
オプシ ョ ン
オプシ ョ ン
オプシ ョ ン
I キ ャ ッ シ ュ 用ビ ク テ ィ ム処理
オプシ ョ ン
オプシ ョ ン
オプシ ョ ン
オプシ ョ ン
オプシ ョ ン
オプシ ョ ン
D キ ャ ッ シ ュ 用ビ ク テ ィ ム処理
オプシ ョ ン
オプシ ョ ン
オプシ ョ ン
オプシ ョ ン
オプシ ョ ン
オプシ ョ ン
AXI4 (M_AXI_DP) デー タ 側 イ ン タ ーフ ェ
イス
オプシ ョ ン
オプシ ョ ン
オプシ ョ ン
オプシ ョ ン
オプシ ョ ン
オプシ ョ ン
AXI4 (M_AXI_IP) 命令側イ ン ターフ ェ イ ス
オプシ ョ ン
オプシ ョ ン
オプシ ョ ン
オプシ ョ ン
オプシ ョ ン
オプシ ョ ン
D キ ャ ッ シ ュ 用 AXI4 (M_AXI_DC) プ ロ
ト コル
オプシ ョ ン
オプシ ョ ン
オプシ ョ ン
オプシ ョ ン
オプシ ョ ン
オプシ ョ ン
I キ ャ ッ シ ュ 用 AXI4 (M_AXI_IC) プ ロ ト
コル
オプシ ョ ン
オプシ ョ ン
オプシ ョ ン
オプシ ョ ン
オプシ ョ ン
オプシ ョ ン
ス ト リ ーム ア ク セ ス用 AXI4 プ ロ ト コ ル
オプシ ョ ン
オプシ ョ ン
オプシ ョ ン
オプシ ョ ン
オプシ ョ ン
オプシ ョ ン
フ ォ ール ト ト レ ラ ン ス
オプシ ョ ン
オプシ ョ ン
オプシ ョ ン
オプシ ョ ン
オプシ ョ ン
オプシ ョ ン
キ ャ ッ シ ュ タ グ用に分散 RAM を使用
オプシ ョ ン
オプシ ョ ン
オプシ ョ ン
オプシ ョ ン
オプシ ョ ン
オプシ ョ ン
コ ン フ ィ ギ ャ ラ ブル キ ャ ッ シ ュ デー タ 幅
オプシ ョ ン
オプシ ョ ン
オプシ ョ ン
オプシ ョ ン
オプシ ョ ン
オプシ ョ ン
前ゼ ロ のカ ウ ン ト 命令
オプシ ョ ン
オプシ ョ ン
オプシ ョ ン
オプシ ョ ン
オプシ ョ ン
オプシ ョ ン
○
○
○
○
○
○
ス タ ッ ク オーバーフ ロ ーお よ びア ン ダー
フ ロ ーの検出
オプシ ョ ン
オプシ ョ ン
オプシ ョ ン
オプシ ョ ン
オプシ ョ ン
オプシ ョ ン
ユーザー モー ド の ス ト リ ーム命令
オプシ ョ ン
オプシ ョ ン
オプシ ョ ン
オプシ ョ ン
オプシ ョ ン
オプシ ョ ン
ロ ッ ク ス テ ッ プ サポー ト
オプシ ョ ン
オプシ ョ ン
オプシ ョ ン
オプシ ョ ン
オプシ ョ ン
オプシ ョ ン
FPGA プ リ ミ テ ィ ブの コ ン フ ィ ギ ュ レ ー
シ ョ ン設定
オプシ ョ ン
オプシ ョ ン
オプシ ョ ン
オプシ ョ ン
オプシ ョ ン
オプシ ョ ン
低レ イ テ ン シ割 り 込みモー ド
オプシ ョ ン
オプシ ョ ン
オプシ ョ ン
オプシ ョ ン
オプシ ョ ン
オプシ ョ ン
ス ワ ッ プ命令
オプシ ョ ン
オプシ ョ ン
オプシ ョ ン
オプシ ョ ン
オプシ ョ ン
オプシ ョ ン
○
○
○
○
○
○
配置換え可能なベース ベ ク タ ー
オプシ ョ ン
オプシ ョ ン
オプシ ョ ン
オプシ ョ ン
オプシ ョ ン
オプシ ョ ン
D キ ャ ッ シ ュ 用 ACE (M_ACE_DC) プ ロ
ト コル
オプシ ョ ン
オプシ ョ ン
オプシ ョ ン
オプシ ョ ン
オプシ ョ ン
オプシ ョ ン
I キ ャ ッ シ ュ 用 ACE (M_ACE_IC) プ ロ ト
コル
オプシ ョ ン
オプシ ョ ン
オプシ ョ ン
オプシ ョ ン
オプシ ョ ン
オプシ ョ ン
拡張デバ ッ グ : パフ ォ ーマ ン ス監視、プ ロ
グ ラ ム ト レース、 非侵入型プ ロ フ ァ イ リ
ング
オプシ ョ ン
オプシ ョ ン
オプシ ョ ン
リ セ ッ ト モー ド : ス リ ープに入 る 、 ま た
は リ セ ッ ト でデバ ッ グ停止
オプシ ョ ン
オプシ ョ ン
オプシ ョ ン
オプシ ョ ン
オプシ ョ ン
メ モ リ バ リ ア命令
ス リ ープ モー ド お よ びス リ ープ命令
拡張デバ ッ グ : 外部プ ロ グ ラ ム ト レース
1. DSP48E プ リ ミ テ ィ ブを節約す る ために使用
MicroBlaze プ ロ セ ッ サ リ フ ァ レ ン ス ガ イ ド
UG984 (v2015.1) 2015 年 4 月 15 日
UG984
(v2015.2) 2015 年 96 月 30
(v2015.3)
24 日
japan.xilinx.com
8
第 2 章 : MicroBlaze アーキテ ク チ ャ
デー タ タ イ プ と エ ンデ ィ ア ン設定
MicroBlaze では、 設定に よ り 、 デー タ 表現に ビ ッ グ エ ンデ ィ ア ン ま たは リ ト ル エ ンデ ィ ア ン が使用 さ れ ます。 パ ラ
メ ー タ ー C_ENDIANNESS は 1 ( リ ト ル エンデ ィ ア ン) に固定 さ れてい ます。
MicroBlaze の場合、 ハー ド ウ ェ ア サポー ト さ れてい る デー タ タ イ プは、 ワー ド 、 ハーフ ワー ド 、 お よ びバ イ ト です。
反転 ロ ー ド お よ び反転 ス ト ア命令の LHUR、 LWR、 SHR、 SWR を使用す る と 、 表のバ イ ト 反転順序に示す よ う に、
デー タ 内のバ イ ト が反転 さ れます。
各デー タ タ イ プのビ ッ ト お よ びバ イ ト 構成は次の表に ま と め ら れてい ます。
表 2‐2 : ワー ド デー タ タ イ プ
ビ ッ グ エンデ ィ ア ン バ イ ト ア ド レ ス
n
n+1
n+2
n+3
ビ ッ グ エンデ ィ ア ン上位/下位バ イ ト
最上位バ イ ト
ビ ッ グ エンデ ィ ア ン バ イ ト 順序
n
n+1
n+2
n+3
ビ ッ グ エンデ ィ ア ン バ イ ト 反転順序
n+3
n+2
n+1
n
リ ト ル エンデ ィ ア ン バ イ ト ア ド レ ス
n+3
n+2
n+1
n
リ ト ル エンデ ィ ア ン上位/下位バ イ ト
最上位バ イ ト
リ ト ル エンデ ィ ア ン バ イ ト 順序
n+3
n+2
n+1
n
リ ト ル エンデ ィ ア ン バ イ ト 反転順序
n
n+1
n+2
n+3
ビ ッ ト ラ ベル
0
31
上位ビ ッ ト /下位ビ ッ ト
最上位ビ ッ ト
最下位ビ ッ ト
最下位バ イ ト
最下位バ イ ト
表 2‐3 : ハー フ ワー ド デー タ タ イ プ
ビ ッ グ エンデ ィ ア ン バ イ ト ア ド レ ス
n
n+1
ビ ッ グ エンデ ィ ア ン上位/下位バ イ ト
最上位バ イ ト
最下位バ イ ト
ビ ッ グ エンデ ィ ア ン バ イ ト 順序
n
n+1
ビ ッ グ エンデ ィ ア ン バ イ ト 反転順序
n+1
n
リ ト ル エンデ ィ ア ン バ イ ト ア ド レ ス
n+1
n
リ ト ル エンデ ィ ア ン上位/下位バ イ ト
最上位バ イ ト
最下位バ イ ト
リ ト ル エンデ ィ ア ン バ イ ト 順序
n+1
n
リ ト ル エンデ ィ ア ン バ イ ト 反転順序
n
n+1
ビ ッ ト ラ ベル
0
15
上位ビ ッ ト /下位ビ ッ ト
最上位ビ ッ ト
最下位ビ ッ ト
表 2‐4 : バイ ト デー タ タ イ プ
バイ ト ア ド レ ス
n
ビ ッ ト ラ ベル
0
7
上位ビ ッ ト /下位ビ ッ ト
最上位ビ ッ ト
最下位ビ ッ ト
MicroBlaze プ ロ セ ッ サ リ フ ァ レ ン ス ガ イ ド
UG984 (v2015.1) 2015 年 4 月 15 日
UG984
(v2015.2) 2015 年 96 月 30
(v2015.3)
24 日
japan.xilinx.com
9
第 2 章 : MicroBlaze アーキテ ク チ ャ
命令
命令のま と め
MicroBlaze 命令はすべて 32 ビ ッ ト で、 タ イ プ A ま たは タ イ プ B と し て定義 さ れてい ます。 タ イ プ A 命令には、 ソ ー
ス レ ジ ス タ オペ ラ ン ド が最高で 2 つ、 ソ ース レ ジ ス タ オペ ラ ン ド が 1 つあ り ます。 タ イ プ B 命令には 1 つの ソ ース
レ ジ ス タ お よ び 16 ビ ッ ト の即値オペ ラ ン ド があ り ます (即値命令で タ イ プ B 命令を先行 さ せて、32ビ ッ ト に拡張可能
)。 タ イ プ B 命令にはシ ン グル デス テ ィ ネーシ ョ ン レ ジ ス タ オペ ラ ン ド が 1 つあ り ます。 命令には、 演算、 論理、 分
岐、 ロ ー ド / ス ト ア、 お よ び特殊、 と い う カ テ ゴ リ があ り ます。 表 2-6 には MicroBlaze 命令セ ッ ト が リ ス ト さ れてい
ます。 こ れ ら の命令の詳細については、 第 5 章 「MicroBlaze 命令セ ッ ト アーキ テ ク チ ャ 」 を参照 し て く だ さ い。 表 2-5
には、 各命令のセマ ン テ ィ ク ス で使用 さ れ る 命令セ ッ ト 用語が説明 さ れてい ます。
表 2‐5 : 命令セ ッ ト の用語
シ ンボル
説明
Ra
R0 - R31、 汎用レ ジ ス タ 、 ソ ース オペ ラ ン ド a
Rb
R0 - R31、 汎用レ ジ ス タ 、 ソ ース オペ ラ ン ド b
Rd
R0 - R31、 汎用レ ジ ス タ 、 デス テ ィ ネーシ ョ ン オペ ラ ン ド
SPR[x]
特殊用途レ ジ ス タ 番号 x
MSR
マシ ン ス テー タ ス レ ジ ス タ = SPR[1]
ESR
例外ス テー タ ス レ ジ ス タ = SPR[5]
EAR
例外ア ド レ ス レ ジ ス タ = SPR[3]
FSR
浮動小数点ユニ ッ ト ス テー タ ス レ ジ ス タ = SPR[7]
PVRx
プ ロ セ ッ サ バージ ョ ン レ ジ ス タ 、 x はレ ジ ス タ番号 = SPR[8192 + x]
BTR
分岐先レ ジ ス タ = SPR[11]
PC
実行段 プ ロ グ ラ ム カ ウ ン タ ー = SPR[0]
x[y]
レ ジ ス タ x のビ ッ ト y
x[y:z]
レ ジ ス タ x のビ ッ ト 範囲 y か ら z
x
レ ジ ス タ x のビ ッ ト 反転値
Imm
16 ビ ッ ト の即値
Immx
x ビ ッ ト の即値
FSLx
4 ビ ッ ト AXI4-Stream ポー ト の指定 (x はポー ト 番号)
C
キ ャ リ ーフ ラ グ、 MSR[29]
Sa
特殊用途レ ジ ス タ 、 ソ ース オペ ラ ン ド
Sd
特殊用途レ ジ ス タ 、 デス テ ィ ネーシ ョ ン オペ ラ ン ド
s(x)
符号拡張引数x を 32ビ ッ ト 値にす る
*Addr
ロ ケーシ ョ ンAddr での メ モ リ 内容 (デー タ サ イ ズは揃っ てい る )
:=
割 り 当て演算子
=
同等比較
!=
不等比較
>
大な り
MicroBlaze プ ロ セ ッ サ リ フ ァ レ ン ス ガ イ ド
UG984 (v2015.1) 2015 年 4 月 15 日
UG984 (v2015.3)
(v2015.2) 2015 年 96 月 30
24 日
japan.xilinx.com
10
第 2 章 : MicroBlaze アーキテ ク チ ャ
表 2‐5 : 命令セ ッ ト の用語 (続き)
シ ンボル
説明
>=
それ以上
<
小な り
<=
それ以下
+
加算
*
乗算
/
除算
>> x
x ビ ッ ト 右シ フ ト
<< x
x ビ ッ ト 左シ フ ト
and
論理 AND
or
論理 OR
xor
論理排他的 OR
op1 if cond else op2
条件 cond が真な ら ば、 op1 を実行 し 、 それ以外は op2 を実行
&
連結。 た と えば、 「0000100 & Imm7」 は固定フ ィ ール ド 「0000100」 と 7 ビ ッ ト 即値の連結です。
signed
符号付 き の整数デー タ タ イ プで実行す る 演算。 すべての演算は、 指定がない限 り 、 符号付 き ワー ド
オペ ラ ン ド で実行 さ れます。
unsigned
符号な し の整数デー タ タ イ プで実行す る 演算
float
浮動小数点のデー タ タ イ プで実行す る 演算
clz(r)
前ゼ ロ のカ ウ ン ト
表 2‐6 : MicroBlaze 命令セ ッ ト のま と め
タ イ プ A
0‐5
6‐10
11‐15
タ イ プ B
0‐5
6‐10
11‐15
ADD Rd,Ra,Rb
000000
Rd
Ra
Rb
00000000000
Rd := Rb + Ra
RSUB Rd,Ra,Rb
000001
Rd
Ra
Rb
00000000000
Rd := Rb + Ra + 1
ADDC Rd,Ra,Rb
000010
Rd
Ra
Rb
00000000000
Rd := Rb + Ra + C
RSUBC Rd,Ra,Rb
000011
Rd
Ra
Rb
00000000000
Rd := Rb + Ra + C
ADDK Rd,Ra,Rb
000100
Rd
Ra
Rb
00000000000
Rd := Rb + Ra
RSUBK Rd,Ra,Rb
000101
Rd
Ra
Rb
00000000000
Rd := Rb + Ra + 1
CMP Rd,Ra,Rb
000101
Rd
Ra
Rb
00000000001
Rd := Rb + Ra + 1
Rd[0] := 0 if (Rb >= Ra) else 
Rd[0] := 1
CMPU Rd,Ra,Rb
000101
Rd
Ra
Rb
00000000011
Rd := Rb + Ra + 1 (unsigned)
Rd[0] := 0 if (Rb >= Ra, unsigned) else
Rd[0] := 1
ADDKC Rd,Ra,Rb
000110
Rd
Ra
Rb
00000000000
Rd := Rb + Ra + C
RSUBKC Rd,Ra,Rb
000111
Rd
Ra
Rb
00000000000
Rd := Rb + Ra + C
ADDI Rd,Ra,Imm
001000
Rd
Ra
Imm
Rd := s(Imm) + Ra
RSUBI Rd,Ra,Imm
001001
Rd
Ra
Imm
Rd := s(Imm) + Ra + 1
MicroBlaze プ ロ セ ッ サ リ フ ァ レ ン ス ガ イ ド
UG984 (v2015.1) 2015 年 4 月 15 日
UG984 (v2015.3)
(v2015.2) 2015 年 96 月 30
24 日
16‐20
21‐31
セマ ン テ ィ ク ス
16‐31
japan.xilinx.com
11
第 2 章 : MicroBlaze アーキテ ク チ ャ
表 2‐6 : MicroBlaze 命令セ ッ ト のま と め (続き)
タ イ プ A
0‐5
6‐10
11‐15
タ イ プ B
0‐5
6‐10
11‐15
16‐31
ADDIC Rd,Ra,Imm
001010
Rd
Ra
Imm
Rd := s(Imm) + Ra + C
RSUBIC Rd,Ra,Imm
001011
Rd
Ra
Imm
Rd := s(Imm) + Ra + C
ADDIK Rd,Ra,Imm
001100
Rd
Ra
Imm
Rd := s(Imm) + Ra
RSUBIK Rd,Ra,Imm
001101
Rd
Ra
Imm
Rd := s(Imm) + Ra + 1
ADDIKC Rd,Ra,Imm
001110
Rd
Ra
Imm
Rd := s(Imm) + Ra + C
RSUBIKC Rd,Ra,Imm
001111
Rd
Ra
Imm
Rd := s(Imm) + Ra + C
MUL Rd,Ra,Rb
010000
Rd
Ra
Rb
MULH Rd,Ra,Rb
010000
Rd
Ra
Rb
00000000001
Rd := (Ra * Rb) >> 32 (signed)
MULHU Rd,Ra,Rb
010000
Rd
Ra
Rb
00000000011
Rd := (Ra * Rb) >> 32 (unsigned)
MULHSU Rd,Ra,Rb
010000
Rd
Ra
Rb
00000000010
Rd := (Ra, signed * Rb, unsigned) >> 32 (signed)
BSRL Rd,Ra,Rb
010001
Rd
Ra
Rb
00000000000
Rd := 0 & (Ra >> Rb)
BSRA Rd,Ra,Rb
010001
Rd
Ra
Rb
01000000000
Rd := s(Ra >> Rb)
BSLL Rd,Ra,Rb
010001
Rd
Ra
Rb
10000000000
Rd := (Ra << Rb) & 0
IDIV Rd,Ra,Rb
010010
Rd
Ra
Rb
00000000000
Rd := Rb/Ra
IDIVU Rd,Ra,Rb
010010
Rd
Ra
Rb
00000000010
Rd := Rb/Ra, unsigned
TNEAGETD Rd,Rb
010011
Rd
00000
Rb
0N0TAE
00000
Rd := FSL Rb[28:31] (data read)
MSR[FSL] := 1 if (FSL_S_Control = 1)
MSR[C] := not FSL_S_Exists if N = 1
TNAPUTD Ra,Rb
010011
00000
Ra
Rb
0N0TA0
00000
FSL Rb[28:31] := Ra (data write)
MSR[C] := FSL_M_Full if N = 1
TNECAGETD Rd,Rb
010011
Rd
00000
Rb
0N1TAE
00000
Rd := FSL Rb[28:31] (control read)
MSR[FSL] := 1 if (FSL_S_Control = 0)
MSR[C] := not FSL_S_Exists if N = 1
TNCAPUTD Ra,Rb
010011
00000
Ra
Rb
0N1TA0
00000
FSL Rb[28:31] := Ra (control write)
MSR[C] := FSL_M_Full if N = 1
FADD Rd,Ra,Rb
010110
Rd
Ra
Rb
00000000000
Rd := Rb+Ra, float1
FRSUB Rd,Ra,Rb
010110
Rd
Ra
Rb
00010000000
Rd := Rb-Ra, float1
FMUL Rd,Ra,Rb
010110
Rd
Ra
Rb
00100000000
Rd := Rb*Ra, float1
FDIV Rd,Ra,Rb
010110
Rd
Ra
Rb
00110000000
Rd := Rb/Ra, float1
FCMP.UN Rd,Ra,Rb
010110
Rd
Ra
Rb
01000000000
Rd := 1 if (Rb = NaN or Ra = NaN, float1) else 
Rd := 0
FCMP.LT Rd,Ra,Rb
010110
Rd
Ra
Rb
01000010000
Rd := 1 if (Rb < Ra, float1) else 
Rd := 0
FCMP.EQ Rd,Ra,Rb
010110
Rd
Ra
Rb
01000100000
Rd := 1 if (Rb = Ra, float1) else 
Rd := 0
FCMP.LE Rd,Ra,Rb
010110
Rd
Ra
Rb
01000110000
Rd := 1 if (Rb <= Ra, float1) else 
Rd := 0
FCMP.GT Rd,Ra,Rb
010110
Rd
Ra
Rb
01001000000
Rd := 1 if (Rb > Ra, float1) else 
Rd := 0
MicroBlaze プ ロ セ ッ サ リ フ ァ レ ン ス ガ イ ド
UG984 (v2015.1) 2015 年 4 月 15 日
UG984 (v2015.3)
(v2015.2) 2015 年 96 月 30
24 日
16‐20
21‐31
00000000000
japan.xilinx.com
セマ ン テ ィ ク ス
Rd := Ra * Rb
12
第 2 章 : MicroBlaze アーキテ ク チ ャ
表 2‐6 : MicroBlaze 命令セ ッ ト のま と め (続き)
タ イ プ A
0‐5
6‐10
11‐15
タ イ プ B
0‐5
6‐10
11‐15
FCMP.NE Rd,Ra,Rb
010110
Rd
Ra
Rb
01001010000
Rd := 1 if (Rb != Ra, float1) else 
Rd := 0
FCMP.GE Rd,Ra,Rb
010110
Rd
Ra
Rb
01001100000
Rd := 1 if (Rb >= Ra, float1) else 
Rd := 0
FLT Rd,Ra
010110
Rd
Ra
0
01010000000
Rd := float (Ra)1
FINT Rd,Ra
010110
Rd
Ra
0
01100000000
Rd := int (Ra)1
FSQRT Rd,Ra
010110
Rd
Ra
0
01110000000
Rd := sqrt (Ra)1
MULI Rd,Ra,Imm
011000
Rd
Ra
Imm
BSRLI Rd,Ra,Imm
011001
Rd
Ra
00000000000 & Imm5
Rd : = 0 & (Ra >> Imm5)
BSRAI Rd,Ra,Imm
011001
Rd
Ra
00000010000 & Imm5
Rd := s(Ra >> Imm5)
BSLLI Rd,Ra,Imm
011001
Rd
Ra
00000100000 & Imm5
Rd := (Ra << Imm5) & 0
TNEAGET Rd,FSLx
011011
Rd
00000
0N0TAE000000 & FSLx
Rd := FSLx (data read, blocking if N = 0)
MSR[FSL] := 1 if (FSLx_S_Control = 1)
MSR[C] := not FSLx_S_Exists if N = 1
TNAPUT Ra,FSLx
011011
00000
Ra
1N0TA0000000 & FSLx
FSLx := Ra (data write, blocking if N = 0)
MSR[C] := FSLx_M_Full if N = 1
TNECAGET Rd,FSLx
011011
Rd
00000
0N1TAE000000 & FSLx
Rd := FSLx (control read, blocking if N = 0)
MSR[FSL] := 1 if (FSLx_S_Control = 0)
MSR[C] := not FSLx_S_Exists if N = 1
TNCAPUT Ra,FSLx
011011
00000
Ra
1N1TA0000000 & FSLx
FSLx := Ra (control write, blocking if N = 0)
MSR[C] := FSLx_M_Full if N = 1
OR Rd,Ra,Rb
100000
Rd
Ra
Rb
00000000000
Rd := Ra or Rb
PCMPBF Rd,Ra,Rb
100000
Rd
Ra
Rb
10000000000
Rd := 1 if (Rb[0:7] = Ra[0:7]) else
Rd := 2 if (Rb[8:15] = Ra[8:15]) else
Rd := 3 if (Rb[16:23] = Ra[16:23]) else
Rd := 4 if (Rb[24:31] = Ra[24:31]) else
Rd := 0
AND Rd,Ra,Rb
100001
Rd
Ra
Rb
00000000000
Rd := Ra and Rb
XOR Rd,Ra,Rb
100010
Rd
Ra
Rb
00000000000
Rd := Ra xor Rb
PCMPEQ Rd,Ra,Rb
100010
Rd
Ra
Rb
10000000000
Rd := 1 if (Rb = Ra) else
Rd := 0
ANDN Rd,Ra,Rb
100011
Rd
Ra
Rb
00000000000
Rd := Ra and Rb
PCMPNE Rd,Ra,Rb
100011
Rd
Ra
Rb
10000000000
Rd := 1 if (Rb != Ra) else
Rd := 0
SRA Rd,Ra
100100
Rd
Ra
0000000000000001
Rd := s(Ra >> 1)
C := Ra[31]
SRC Rd,Ra
100100
Rd
Ra
0000000000100001
Rd := C & (Ra >> 1)
C := Ra[31]
SRL Rd,Ra
100100
Rd
Ra
0000000001000001
Rd := 0 & (Ra >> 1) 
C := Ra[31]
SEXT8 Rd,Ra
100100
Rd
Ra
0000000001100000
Rd := s(Ra[24:31])
MicroBlaze プ ロ セ ッ サ リ フ ァ レ ン ス ガ イ ド
UG984 (v2015.1) 2015 年 4 月 15 日
UG984 (v2015.3)
(v2015.2) 2015 年 96 月 30
24 日
16‐20
21‐31
セマ ン テ ィ ク ス
16‐31
japan.xilinx.com
Rd := Ra * s(Imm)
13
第 2 章 : MicroBlaze アーキテ ク チ ャ
表 2‐6 : MicroBlaze 命令セ ッ ト のま と め (続き)
タ イ プ A
0‐5
6‐10
11‐15
タ イ プ B
0‐5
6‐10
11‐15
16‐31
SEXT16 Rd,Ra
100100
Rd
Ra
0000000001100001
Rd := s(Ra[16:31])
CLZ Rd, Ra
100100
Rd
Ra
0000000011100000
Rd = clz(Ra)
SWAPB Rd, Ra
100100
Rd
Ra
0000000111100000
Rd = (Ra)[24:31, 16:23, 8:15, 0:7]
SWAPH Rd, Ra
100100
Rd
Ra
0000000111100010
Rd = (Ra)[16:31, 0:15]
WIC Ra,Rb
100100
00000
Ra
Rb
00001101000
ICache_Line[Ra >> 4].Tag := 0 if
(C_ICACHE_LINE_LEN = 4)
ICache_Line[Ra >> 5].Tag := 0 if
(C_ICACHE_LINE_LEN = 8)
ICache_Line[Ra >> 6].Tag := 0 if
(C_ICACHE_LINE_LEN = 16)
WDC Ra,Rb
100100
00000
Ra
Rb
00001100100
キ ャ ッ シ ュ ラ イ ンは ク リ ア、 格納 さ れた
デー タ を破棄。
DCache_Line[Ra >> 4].Tag := 0 if
(C_DCACHE_LINE_LEN = 4)
DCache_Line[Ra >> 5].Tag := 0 if
(C_DCACHE_LINE_LEN = 8)
DCache_Line[Ra >> 6].Tag := 0 if
(C_DCACHE_LINE_LEN = 16)
WDC.FLUSH Ra,Rb
100100
00000
Ra
Rb
00001110100
キ ャ ッ シ ュ ラ イ ンはフ ラ ッ シ ュ 、 格納 さ れ
たデー タ を メ モ リ に書き 込んでか ら 、 ク リ
ア。 C_DCACHE_USE_WRITEBACK = 1 の
と き 使用。
WDC.CLEAR Ra,Rb
100100
00000
Ra
Rb
00001110110
一致 し た ア ド レ ス のキ ャ ッ シ ュ ラ イ ンは ク
リ ア、 格 納 さ れ た デ ー タ を 破 棄。
C_DCACHE_USE_WRITEBACK = 1 の と き
使用。
MTS Sd,Ra
100101
00000
Ra
MicroBlaze プ ロ セ ッ サ リ フ ァ レ ン ス ガ イ ド
UG984 (v2015.1) 2015 年 4 月 15 日
UG984 (v2015.3)
(v2015.2) 2015 年 96 月 30
24 日
16‐20
21‐31
11 & Sd
japan.xilinx.com
セマ ン テ ィ ク ス
SPR[Sd] := Ra
· SPR[0x0001] は MSR
· SPR[0x0007] は FSR
· SPR[0x0800] は SLR
· SPR[0x0802] は SHR
· SPR[0x1000] は PID
· SPR[0x1001] は ZPR
· SPR[0x1002] は TLBX
· SPR[0x1003] は TLBLO
· SPR[0x1004] は TLBHI
· SPR[0x1005] は TLBSX
14
第 2 章 : MicroBlaze アーキテ ク チ ャ
表 2‐6 : MicroBlaze 命令セ ッ ト のま と め (続き)
タ イ プ A
0‐5
6‐10
11‐15
タ イ プ B
0‐5
6‐10
11‐15
16‐31
MFS Rd,Sa
100101
Rd
00000
10 & Sa
MSRCLR Rd,Imm
100101
Rd
00001
00 & Imm14
Rd := MSR
MSR := MSR and Imm14
MSRSET Rd,Imm
100101
Rd
00000
00 & Imm14
Rd := MSR
MSR := MSR or Imm14
BR Rb
100110
00000
00000
Rb
00000000000
PC := PC + Rb
BRD Rb
100110
00000
10000
Rb
00000000000
PC := PC + Rb
BRLD Rd,Rb
100110
Rd
10100
Rb
00000000000
PC := PC + Rb
Rd := PC
BRA Rb
100110
00000
01000
Rb
00000000000
PC := Rb
BRAD Rb
100110
00000
11000
Rb
00000000000
PC := Rb
BRALD Rd,Rb
100110
Rd
11100
Rb
00000000000
PC := Rb
Rd := PC
BRK Rd,Rb
100110
Rd
01100
Rb
00000000000
PC := Rb
Rd := PC
MSR[BIP] := 1
BEQ Ra,Rb
100111
00000
Ra
Rb
00000000000
PC := PC + Rb if Ra = 0
BNE Ra,Rb
100111
00001
Ra
Rb
00000000000
PC := PC + Rb if Ra != 0
BLT Ra,Rb
100111
00010
Ra
Rb
00000000000
PC := PC + Rb if Ra < 0
BLE Ra,Rb
100111
00011
Ra
Rb
00000000000
PC := PC + Rb if Ra <= 0
BGT Ra,Rb
100111
00100
Ra
Rb
00000000000
PC := PC + Rb if Ra > 0
BGE Ra,Rb
100111
00101
Ra
Rb
00000000000
PC := PC + Rb if Ra >= 0
BEQD Ra,Rb
100111
10000
Ra
Rb
00000000000
PC := PC + Rb if Ra = 0
BNED Ra,Rb
100111
10001
Ra
Rb
00000000000
PC := PC + Rb if Ra != 0
BLTD Ra,Rb
100111
10010
Ra
Rb
00000000000
PC := PC + Rb if Ra < 0
BLED Ra,Rb
100111
10011
Ra
Rb
00000000000
PC := PC + Rb if Ra <= 0
MicroBlaze プ ロ セ ッ サ リ フ ァ レ ン ス ガ イ ド
UG984 (v2015.1) 2015 年 4 月 15 日
UG984 (v2015.3)
(v2015.2) 2015 年 96 月 30
24 日
16‐20
21‐31
japan.xilinx.com
セマ ン テ ィ ク ス
Rd := SPR[Sa]
· SPR[0x0000] は PC
· SPR[0x0001] は MSR
· SPR[0x0003] は EAR
· SPR[0x0005] は ESR
· SPR[0x0007] は FSR
· SPR[0x000B] は BTR
· SPR[0x000D] は EDR
· SPR[0x0800] は SLR
· SPR[0x0802] は SHR
· SPR[0x1000] は PID
· SPR[0x1001] は ZPR
· SPR[0x1002] は TLBX
· SPR[0x1003] は TLBLO
· SPR[0x1004] は TLBHI
· SPR[0x2000 to 0x200B] は PVR[0 to 12]
15
第 2 章 : MicroBlaze アーキテ ク チ ャ
表 2‐6 : MicroBlaze 命令セ ッ ト のま と め (続き)
タ イ プ A
0‐5
6‐10
11‐15
タ イ プ B
0‐5
6‐10
11‐15
BGTD Ra,Rb
100111
10100
Ra
Rb
00000000000
PC := PC + Rb if Ra > 0
BGED Ra,Rb
100111
10101
Ra
Rb
00000000000
PC := PC + Rb if Ra >= 0
ORI Rd,Ra,Imm
101000
Rd
Ra
Imm
Rd := Ra or s(Imm)
ANDI Rd,Ra,Imm
101001
Rd
Ra
Imm
Rd := Ra and s(Imm)
XORI Rd,Ra,Imm
101010
Rd
Ra
Imm
Rd := Ra xor s(Imm)
ANDNI Rd,Ra,Imm
101011
Rd
Ra
Imm
Rd := Ra and s(Imm)
IMM Imm
101100
00000
00000
Imm
Imm[0:15] := Imm
RTSD Ra,Imm
101101
10000
Ra
Imm
PC := Ra + s(Imm)
RTID Ra,Imm
101101
10001
Ra
Imm
PC := Ra + s(Imm)
MSR[IE] := 1
RTBD Ra,Imm
101101
10010
Ra
Imm
PC := Ra + s(Imm)
MSR[BIP] := 0
RTED Ra,Imm
101101
10100
Ra
Imm
PC := Ra + s(Imm)
MSR[EE] := 1, MSR[EIP] := 0
ESR := 0
BRI Imm
101110
00000
00000
Imm
PC := PC + s(Imm)
MBAR Imm
101110
Imm
00010
0000000000000100
BRID Imm
101110
00000
10000
Imm
PC := PC + s(Imm)
BRLID Rd,Imm
101110
Rd
10100
Imm
PC := PC + s(Imm)
Rd := PC
BRAI Imm
101110
00000
01000
Imm
PC := s(Imm)
BRAID Imm
101110
00000
11000
Imm
PC := s(Imm)
BRALID Rd,Imm
101110
Rd
11100
Imm
PC := s(Imm)
Rd := PC
BRKI Rd,Imm
101110
Rd
01100
Imm
PC := s(Imm)
Rd := PC
MSR[BIP] := 1
BEQI Ra,Imm
101111
00000
Ra
Imm
PC := PC + s(Imm) if Ra = 0
BNEI Ra,Imm
101111
00001
Ra
Imm
PC := PC + s(Imm) if Ra != 0
BLTI Ra,Imm
101111
00010
Ra
Imm
PC := PC + s(Imm) if Ra < 0
BLEI Ra,Imm
101111
00011
Ra
Imm
PC := PC + s(Imm) if Ra <= 0
BGTI Ra,Imm
101111
00100
Ra
Imm
PC := PC + s(Imm) if Ra > 0
BGEI Ra,Imm
101111
00101
Ra
Imm
PC := PC + s(Imm) if Ra >= 0
BEQID Ra,Imm
101111
10000
Ra
Imm
PC := PC + s(Imm) if Ra = 0
BNEID Ra,Imm
101111
10001
Ra
Imm
PC := PC + s(Imm) if Ra != 0
BLTID Ra,Imm
101111
10010
Ra
Imm
PC := PC + s(Imm) if Ra < 0
BLEID Ra,Imm
101111
10011
Ra
Imm
PC := PC + s(Imm) if Ra <= 0
BGTID Ra,Imm
101111
10100
Ra
Imm
PC := PC + s(Imm) if Ra > 0
MicroBlaze プ ロ セ ッ サ リ フ ァ レ ン ス ガ イ ド
UG984 (v2015.1) 2015 年 4 月 15 日
UG984 (v2015.3)
(v2015.2) 2015 年 96 月 30
24 日
16‐20
21‐31
セマ ン テ ィ ク ス
16‐31
japan.xilinx.com
PC := PC + 4、 メ モ リ ア ク セ ス を待機
16
第 2 章 : MicroBlaze アーキテ ク チ ャ
表 2‐6 : MicroBlaze 命令セ ッ ト のま と め (続き)
タ イ プ A
0‐5
6‐10
11‐15
16‐20
21‐31
タ イ プ B
0‐5
6‐10
11‐15
16‐31
BGEID Ra,Imm
101111
10101
Ra
Imm
LBU Rd,Ra,Rb
LBUR Rd,Ra,Rb
110000
Rd
Ra
Rb
00000000000
01000000000
Addr := Ra + Rb
Rd[0:23] := 0
Rd[24:31] := *Addr[0:7]
LHU Rd,Ra,Rb
LHUR Rd,Ra,Rb
110001
Rd
Ra
Rb
00000000000
01000000000
Addr := Ra + Rb
Rd[0:15] := 0
Rd[16:31] := *Addr[0:15]
LW Rd,Ra,Rb
LWR Rd,Ra,Rb
110010
Rd
Ra
Rb
00000000000
01000000000
Addr := Ra + Rb
Rd := *Addr
LWX Rd,Ra,Rb
110010
Rd
Ra
Rb
10000000000
Addr := Ra + Rb
Rd := *Addr
Reservation := 1
SB Rd,Ra,Rb
SBR Rd,Ra,Rb
110100
Rd
Ra
Rb
00000000000
01000000000
Addr := Ra + Rb
*Addr[0:8] := Rd[24:31]
SH Rd,Ra,Rb
SHR Rd,Ra,Rb
110101
Rd
Ra
Rb
00000000000
01000000000
Addr := Ra + Rb
*Addr[0:16] := Rd[16:31]
SW Rd,Ra,Rb
SWR Rd,Ra,Rb
110110
Rd
Ra
Rb
00000000000
01000000000
Addr := Ra + Rb
*Addr := Rd
SWX Rd,Ra,Rb
110110
Rd
Ra
Rb
10000000000
Addr := Ra + Rb
*Addr := Rd if Reservation = 1
Reservation := 0
LBUI Rd,Ra,Imm
111000
Rd
Ra
Imm
Addr := Ra + s(Imm)
Rd[0:23] := 0
Rd[24:31] := *Addr[0:7]
LHUI Rd,Ra,Imm
111001
Rd
Ra
Imm
Addr := Ra + s(Imm)
Rd[0:15] := 0
Rd[16:31] := *Addr[0:15]
LWI Rd,Ra,Imm
111010
Rd
Ra
Imm
Addr := Ra + s(Imm)
Rd := *Addr
SBI Rd,Ra,Imm
111100
Rd
Ra
Imm
Addr := Ra + s(Imm)
*Addr[0:7] := Rd[24:31]
SHI Rd,Ra,Imm
111101
Rd
Ra
Imm
Addr := Ra + s(Imm)
*Addr[0:15] := Rd[16:31]
SWI Rd,Ra,Imm
111110
Rd
Ra
Imm
Addr := Ra + s(Imm)
*Addr := Rd
セマ ン テ ィ ク ス
PC := PC + s(Imm) if Ra >= 0
1. 浮動小数点演算には多 く の コ ーナー ケース が関与 し てい る ため、 標準動作のみを説明 し てい ます。 こ の動作の詳細については、 第 5 章
「MicroBlaze 命令セ ッ ト アーキ テ ク チ ャ 」 を参照 し て く だ さ い。
セマ フ ォ同期化
LWX お よ び SWX 命令は、 テ ス ト と セ ッ ト 、 比較 と ス ワ ッ プ、 メ モ リ 交換、 フ ェ ッ チ と 追加な ど、 共通セマ フ ォ操作
を イ ンプ リ メ ン ト す る ために使用 さ れます。 ま た、 ス ピ ン ロ ッ ク を イ ンプ リ メ ン ト す る のに も 使用 さ れます。
MicroBlaze プ ロ セ ッ サ リ フ ァ レ ン ス ガ イ ド
UG984 (v2015.1) 2015 年 4 月 15 日
UG984
(v2015.2) 2015 年 96 月 30
(v2015.3)
24 日
japan.xilinx.com
17
第 2 章 : MicroBlaze アーキテ ク チ ャ
こ れ ら の命令は、 通常、 シ ス テ ム プ ロ グ ラ ム に よ っ て使用 さ れ、 適宜アプ リ ケーシ ョ ン プ ロ グ ラ ムに よ っ て呼び出
さ れます。 一般的には、 プ ロ グ ラ ムは、 メ モ リ か ら セマ フ ォ を ロ ー ド す る のに LWX を使用 し 、 予約が設定 さ れます
(プ ロ セ ッ サは予約を内部で維持)。 プ ロ グ ラ ムは、 セマ フ ォ値に基づいて結果を計算 し 、 SWX 命令を使用 し て、 同 じ
メ モ リ ロ ケーシ ョ ンにその結果を条件付き で ス ト ア し ます。 こ の条件付 き ス ト アは、 その前の LWX 命令に よ っ て設
定 さ れた予約に基づいて、 実行 さ れ ます。 ス ト ア実行時に予約が存在す る 場合は、 ス ト アが実行 さ れ、 MSR[C] は 0
に ク リ アにな り ます。 ス ト ア実行時に予約が存在 し ない場合は、 ス ト アが実行 さ れ、 MSR[C] は 1 にセ ッ ト さ れます。
ス ト アが問題な く 実行 さ れ る と 、 セマ フ ォ の ロ ー ド か ら セマ フ ォ の ス ト ア ま で、 順番に命令が、 ほかの命令を差 し 挟
む こ と な く 、 実行 さ れます。 ほかのデバ イ ス が、 読み出 し か ら ア ッ プデー ト ま でのセマ フ ォ ロ ケーシ ョ ン を変更す る
こ と はあ り ま せん。 こ の操作中、 ほかのデバ イ ス は こ のセマ フ ォ ロ ケーシ ョ ン か ら 読み出 し を実行で き ます。 セマ
フ ォ 操作が正 し く 実行には、 LWX 命令を SWX 命令 と ペアに し 、 その両方が同 じ ア ド レ ス を指定す る 必要があ り ま
す。 MicroBlaze での予約単位は ワ ー ド です。 両方の命令に対 し 、 ア ド レ ス は ワ ー ド ア ラ イ ン し てい る 必要があ り ま
す。 ア ラ イ ン さ れていない例外は、 こ れ ら の命令に対 し ては生成 さ れません。
条件付 き ス ト アは、 ス ト ア ア ド レ ス が、 予約を設定 し た ロ ー ド ア ド レ ス に一致 し ていな く て も 、 予約が存在 し てい
る と 常に実行 さ れます。
1 回につ き 、 1 予約のみが維持 さ れ ます。 予約に関連付け ら れてい る ア ド レ ス は、 後続の LWX 命令を実行す る こ と
で、 変更で き ます。 こ の条件付 き ス ト アは、 その前の LWX 命令に よ っ て設定 さ れた予約に基づいて、 実行 さ れます。
LWX で設定 さ れた ア ド レ ス に一致す る か ど う かに関わ ら ず、 プ ロ セ ッ サで保持 さ れてい る 予約は、 SWX 命令を実行
す る と 常に ク リ アにな り ます。
リ セ ッ ト 、 割 り 込み、 例外、 ブ レー ク (BRK お よ び BRKI 命令を含む) はすべて予約を ク リ ア し ます。
LWX お よ び SWX 命令の使用に関す る 一般ガ イ ド ラ イ ンは、 次の よ う にな っ てい ます。
•
LWX お よ び SWX 命令はペアに し 、 同 じ ア ド レ ス を使用する よ う に し ます。
•
LWX と ペアにな っ ていない SWX 命令で、 任意ア ド レ ス に割 り 当て ら れてい る も のは、 プ ロ セ ッ サで保持 さ れて
い る 予約を ク リ アす る のに使用 し ます。
•
条件付 き シーケ ン ス は LWX 命令か ら 始ま り ます。 その後に、 メ モ リ ア ク セ ス が続 く か、 ま たは ロ ー ド さ れた値
に基づいた計算が続 き ます。 シーケ ン ス は SWX 命令で終わ り ます。 一般的には、 SWX 命令にエ ラ ーがあ る と 、
分岐は LWX に戻っ て、 繰 り 返 し 命令が実行 さ れます。
•
LWX に よ っ て ロ ー ド さ れた値がゼ ロ でなければ、一部の同期化プ リ ミ テ ィ ブ を実行する と き 、その LWX は SWX
と ペアに し な く て も よ い場合があ り ます。 次は、 テ ス ト ア ン ド セ ッ ト の イ ンプ リ メ ン テーシ ョ ン例です。
loop: lwx
r5,r3,r0
bnei
r5,next
addik r5,r5,1
swx
r5,r3,r0
addic r5,r0,0
bnei
r5,loop
next:
•
load and reserve
branch if not equal to zero
increment value
try to store non-zero value
check reservation
loop if reservation lost
パフ ォーマ ン ス は、 目的の値を返す こ と がで き ない LWX 命令でのループ を最小限にする こ と で、 改善で き ます。
ま た、 初期値チ ェ ッ ク をす る 普通の ロ ー ド 命令を使用す る こ と で、 パフ ォ ーマ ン ス を改善す る こ と も で き ます。
次は、 ス ピ ン ロ ッ ク の イ ンプ リ メ ン テーシ ョ ン例です。
loop: lw
r5,r3,r0
bnei
r5,loop
lwx
r5,r3,r0
bnei
r5,loop
addik r5,r5,1
swx
r5,r3,r0
addic r5,r0,0
bnei
r5,loop
•
;
;
;
;
;
;
;
;
;
;
;
;
;
;
load the word
loop back if word not equal to 0
try reserving again
likely that no branch is needed
increment value
try to store non-zero value
check reservation
loop if reservation lost
LWX/SWX 命令ペアでのループ を最小限にす る と 、 前進する 可能性が高 く な り ます。 古い値は、 ス ト ア を実行す
る 前にテ ス ト す る 必要があ り ます。 順番が逆の場合 (ス ト アの後に ロ ー ド を実行)、 実行 さ れ る SWX 命令の数が
多 く な り 、 LWX と SWX と の間で、 予約が失われ る 可能性が高 く な り ます。
MicroBlaze プ ロ セ ッ サ リ フ ァ レ ン ス ガ イ ド
UG984 (v2015.1) 2015 年 4 月 15 日
UG984 (v2015.3)
(v2015.2) 2015 年 96 月 30
24 日
japan.xilinx.com
18
第 2 章 : MicroBlaze アーキテ ク チ ャ
自己変更 コ ー ド
自己変更 コ ー ド を使用す る 場合は、 変更 さ れた命令を実行する のにフ ェ ッ チする 前に、 メ モ リ にその命令が書 き 込ま
れてい る こ と を ソ フ ト ウ ェ アで確認す る 必要があ り ます。 次の点に注意す る 必要があ り ます。
•
変更 さ れ る 命令が、 変更前に既に、 次の場所に フ ェ ッ チ さ れてい る 可能性があ る 。
命令プ リ フ ェ ッ チバ ッ フ ァ ー
¨
命令キ ャ ッ シ ュ ( イ ネーブルにな っ てい る 場合)
¨
ス ト リ ーム バ ッ フ ァ ー (命令キ ャ ッ シ ュ ス ト リ ーム バ ッ フ ァ ーが使用 さ れてい る 場合)
¨
命令キ ャ ッ シ ュ 。 その後、 ビ ク テ ィ ム バ ッ フ ァ ーが使用 さ れてい る 場合はそ こ に保存 さ れ る 。
¨
古い未変更の コ ー ド ではな く 、 変更 さ れた コ ー ド が常に実行 さ れてい る こ と を確認する には、 ソ フ ト ウ ェ アは こ
れ ら のすべてのケース を処理す る 必要があ り ます。
•
変更 し たい命令が 1 つ以上分岐で、 分岐先キ ャ ッ シ ュ が使用 さ れてい る 場合は、 分岐先ア ド レ ス がキ ャ ッ シ ュ さ
れてい る 可能性があ り ます。
キ ャ ッ シ ュ さ れた分岐先ア ド レ ス の使用を避け る には、 変更 さ れた コ ー ド を実行する 前に、 分岐先キ ャ ッ シ ュ が
ク リ アにな っ てい る こ と を ソ フ ト ウ ェ アで確認す る 必要があ り ます。
•
変更 さ れた命令は、 実行前に メ モ リ に書 き 込まれていない可能性があ り ます。
¨
¨
¨
変更 さ れた命令は メ モ リ に書 き 込まれ る 手前で、イ ン タ ーコ ネ ク ト ま たは メ モ リ コ ン ト ロ ー ラ ーの一時的な
ス ト レージにあ る 可能性があ り ます。
ラ イ ト バ ッ ク キ ャ ッ シ ュ が使用 さ れてい る 場合は、 変更 さ れた命令はデー タ キ ャ ッ シ ュ に格納 さ れてい る
可能性があ り ます。
ラ イ ト バ ッ ク キ ャ ッ シ ュ お よ びビ ク テ ィ ム バ ッ フ ァ ーが使用 さ れてい る 場合は、 変更 さ れた命令はビ ク
テ ィ ム バ ッ フ ァ ーに格納 さ れてい る 可能性があ り ます。
プ ロ セ ッ サが フ ェ ッ チす る 前に、 変更 さ れた命令が メ モ リ に書 き 込まれてい る こ と を ソ フ ト ウ ェ アで確認す る 必
要があ り ます。
次の注釈付 き コ ー ド は、上記の問題のそれぞれが ど の よ う に解決 さ れ る か を示 し てい ます。こ の コ ー ド は、命令キ ャ ッ
シ ュ お よ び ラ イ ト バ ッ ク デー タ キ ャ ッ シ ュ の両方が使用 さ れてい る こ と を前提に し てい ます。 使用 さ れていない場
合は、 その部分の命令は省 く こ と がで き ます。
次の コ ー ド 例は、 変更 さ れた命令を格納 し ます。
swi
r5,r6,0 ;
;
wdc.flush r6,r0
;
mbar
1
;
wic
r7,r0
;
;
mbar
2
;
r5 = new instruction
r6 = physical instruction address
flush write-back data cache line
ensure new instruction is written to memory
invalidate line, empty stream & victim buffers
r7 = virtual instruction address
empty prefetch buffer, clear branch target cache
MMU 仮想モー ド が使用 さ れていない限 り 、 上記の物理お よ び仮想ア ド レ ス は同 じ です。 MMU が イ ネーブルにな っ
てい る 場合は、 WIC お よ び WDC は特権命令であ る ため、 コ ー ド シーケ ン ス を リ アル モー ド で実行す る 必要があ り
ます。 上記の コ ー ド シーケ ン ス の後の最初の命令はプ リ フ ェ ッ チ さ れてい る 可能性があ る ため、 変更 し ないで く だ さ
い。
レ ジス タ
MicroBlaze には、 直交性のあ る 命令セ ッ ト アーキ テ ク チ ャ があ り 、 選定 さ れてい る オプシ ョ ン に よ っ て異な り ます
が、 32 個の 32 ビ ッ ト の汎用レ ジ ス タ と 、 18 個の 32 ビ ッ ト の特殊レ ジ ス タ があ り ます。
MicroBlaze プ ロ セ ッ サ リ フ ァ レ ン ス ガ イ ド
UG984 (v2015.1) 2015 年 4 月 15 日
UG984 (v2015.3)
(v2015.2) 2015 年 96 月 30
24 日
japan.xilinx.com
19
第 2 章 : MicroBlaze アーキテ ク チ ャ
汎用レ ジ ス タ
32 個の 32 ビ ッ ト の汎用レ ジ ス タ には、 R0 か ら R31 ま での番号が付いてい ます。 レ ジ ス タ フ ァ イ ルは、 ビ ッ ト ス ト
リ ーム ダ ウ ン ロ ー ド で リ セ ッ ト さ れます ( リ セ ッ ト 値は 0x00000000)。 図 2-2 は汎用レ ジ ス タ を表 し てお り 、 表 2-7 に
は、 各レ ジ ス タ お よ びレ ジ ス タ リ セ ッ ト 値 (あれば) が ま と め ら れてい ます。
注記 : レ ジ ス タ フ ァ イ ルは、 外部 リ セ ッ ト 入力であ る 、
Reset お よ び Debug_Rst では リ セ ッ ト さ れません。



R0-R31
図 2‐2 : R0‐R31
表 2‐7 : 汎用レ ジ ス タ (R0‐R31) ビッ ト
名前
説明
リセッ ト値
0x00000000
0:31
R0
常に値はゼ ロ にな り ます。 R0 に書 き 込まれた値は破棄 さ れます。
0:31
R1 か ら R13 ま で
32 ビ ッ ト 汎用レ ジ ス タ
-
0:31
R14
割 り 込み用に戻 り ア ド レ ス を格納す る ために使用 さ れ る 32 ビ ッ
ト レジス タ
-
0:31
R15
32 ビ ッ ト 汎用レ ジ ス タ 。 ユーザー ベ ク タ ー用の戻 り ア ド レ ス を
格納す る ために推奨。
-
0:31
R16
ブ レー ク 用に戻 り ア ド レ ス を格納す る ために使用 さ れ る 32 ビ ッ
ト レジス タ
-
0:31
R17
MicroBlaze がハー ド ウ ェ ア例外 を サポー ト す る よ う に コ ン フ ィ
ギ ュ レー ト さ れてい る 場合は、 こ の レ ジ ス タ には、 命令のア ド レ
ス が ロ ー ド さ れ、 その命令の後にハー ド ウ ェ ア例外が発生 し ま
す。 ただ し 、 BTR を使用する 遅延ス ロ ッ ト の例外を除き ます 
( 「分岐先レ ジ ス タ (BTR)」 を参照)。 ハー ド ウ ェ ア例外を サポー
ト する よ う に コ ン フ ィ ギ ュ レー ト さ れていない場合は、 レ ジ ス タ
は汎用レ ジ ス タ です。
-
0:31
R18 か ら R31 ま で
R18 か ら R31 ま では 32 ビ ッ ト の汎用レ ジ ス タ です。
-
汎用レ ジ ス タ を使用す る 場合の ソ フ ト ウ ェ アに関 し ては、 表 4-2 を参照 し て く だ さ い。
特殊用途レ ジ ス タ
プ ログ ラ ム カ ウ ン タ ー (PC)
プ ロ グ ラ ム カ ウ ン タ ー (PC) は実行命令の 32 ビ ッ ト ア ド レ ス です。 こ れは、 MFS 命令で読み出 し で き ますが、 MTS
命令で書 き 込む こ と はで き ません。 MFS 命令で使用 さ れ る 場合は、 PC レ ジ ス タ は Sa = 0x0000 で指定 さ れ ます。 PC
は図 2-3 で図説 さ れ、 表 2-8 には、 その詳細お よ び リ セ ッ ト 値が ま と め ら れてい ます。
MicroBlaze プ ロ セ ッ サ リ フ ァ レ ン ス ガ イ ド
UG984 (v2015.1) 2015 年 4 月 15 日
UG984
(v2015.2) 2015 年 96 月 30
(v2015.3)
24 日
japan.xilinx.com
20
第 2 章 : MicroBlaze アーキテ ク チ ャ



PC
図 2‐3 : PC
表 2‐8 : プ ログ ラ ム カ ウン タ ー (PC) ビッ ト
0:31
名前
PC
説明
リセッ ト値
プロ グ ラ ム カ ウ ン ター
実行命令のア ド レ ス、 つま り mfs r2 0 は、 mfs 命令自体のア ド レ ス を R2 に
格納 し ます。
0x00000000
マ シ ン ス テー タ ス レ ジス タ (MSR)
マシ ン ス テー タ ス レ ジ ス タ には、 プ ロ セ ッ サの制御ビ ッ ト お よ びス テー タ ス ビ ッ ト が含まれてい ます。 こ れは MFS
命令で読み出す こ と がで き ま す。 MSR を読み出す と き 、 ビ ッ ト 29 は ビ ッ ト 0 にキ ャ リ ー コ ピー と し て複製 さ れ ま
す。 MSR への書 き 込みは、 MTS 命令を使用 し て、 ま たは専用 MSRSET お よ び MSRCLR 命令を使用 し て行 う こ と が
で き ます。
MSRSET ま たは MSRCLR を使用 し て MSR に書 き 込む場合、 キ ャ リ ー ビ ッ ト はす ぐ に適用 さ れ、 残 り の ビ ッ ト は 1
ク ロ ッ ク サ イ ク ル後に使用 さ れます。 MTS を使用 し て書き 込む場合は、 すべてのビ ッ ト が 1 ク ロ ッ ク サ イ ク ル後に
使用で き る よ う にな り ます。 ビ ッ ト 0 に書 き 込まれた値はすべて破棄 さ れます。
MTS ま たは MFS 命令で使用 さ れ る 場合は、 MSR は Sx = 0x0001 と い う 設定で指定 さ れます。 MSR レ ジ ス タ は 図 2-4
で図説 さ れ、 表 2-9 には、 ビ ッ ト の説明お よ び リ セ ッ ト 値が ま と め ら れてい ます。




予約
   

 


     












VMS VM UMS UM PVR EIP EE DCE DZO ICE FSL BIP


C
IE RES

図 2‐4 : MSR
表 2‐9 : マシ ン ス テー タ ス レ ジ ス タ (MSR) ビッ ト
名前
0
CC
1:16
予約
17
VMS
説明
リセッ ト値
演算キ ャ リ ー コ ピー
演算キ ャ リ ーの コ ピー (ビ ッ ト 29)。 CC はビ ッ ト C と 常に同 じ です。
0
仮想保護モー ド 保存
MMU で コ ン フ ィ ギ ュ レー ト し た場合にのみ使用可能。 
(C_USE_MMU > 1 お よ び C_AREA_OPTIMIZED = 0 の場合)
読み出 し /書 き 込み
0
MicroBlaze プ ロ セ ッ サ リ フ ァ レ ン ス ガ イ ド
UG984 (v2015.1) 2015 年 4 月 15 日
UG984 (v2015.3)
(v2015.2) 2015 年 96 月 30
24 日
japan.xilinx.com
21
第 2 章 : MicroBlaze アーキテ ク チ ャ
表 2‐9 : マシ ン ス テー タ ス レ ジ ス タ (MSR) (続き)
説明
リセッ ト値
18
ビッ ト
VM
名前
仮想保護モー ド
0 = C_USE_MMU = 3 (仮想) で、 MMU ア ド レ ス変換お よ びア ク セ ス保護が
デ ィ ス エーブル。C_USE_MMU = 2 (保護) で、ア ク セ ス保護はデ ィ ス エーブル。
1 = C_USE_MMU = 3 (仮想)で、 MMU ア ド レ ス変換お よ びア ク セ ス保護が イ
ネーブル。 C_USE_MMU = 2 (保護) で、 ア ク セ ス保護は イ ネーブル。
MMU で コ ン フ ィ ギ ュ レー ト し た場合にのみ使用可能。 
(C_USE_MMU > 1 お よ び C_AREA_OPTIMIZED = 0 の場合)
読み出 し /書 き 込み
0
19
UMS
ユーザー モー ド 保存
MMU で コ ン フ ィ ギ ュ レー ト し た場合にのみ使用可能。 
(C_USE_MMU > 0 お よ び C_AREA_OPTIMIZED = 0 の場合)
読み出 し /書 き 込み
0
20
UM
ユーザー モー ド
0 = 特権モー ド 、 すべての命令が使用で き る 。
1 = ユーザー モー ド 、 一部の命令が使用で き ない。
MMU で コ ン フ ィ ギ ュ レー ト し た場合にのみ使用可能。 
(C_USE_MMU > 0 お よ び C_AREA_OPTIMIZED = 0 の場合)
読み出 し /書 き 込み
0
21
PVR
プ ロ セ ッ サ バージ ョ ン レ ジ ス タ が存在する 。
0 = プ ロ セ ッ サ バージ ョ ン レ ジ ス タ な し
1 = プ ロ セ ッ サ バージ ョ ン レ ジ ス タ あ り
読み出 し 専用
22
EIP
処理中例外
0 = 処理中ハー ド ウ ェ ア例外な し
1 = 処理中ハー ド ウ ェ ア例外あ り
例外サポー ト を有効に し て コ ン フ ィ ギ ュ レ ー ト し てい る 場合
(C_*_EXCEPTION ま たは C_USE_MMU > 0) にのみ使用可能
読み出 し /書 き 込み
0
23
EE
例外 イ ネーブル
0 = ハー ド ウ ェ ア例外をデ ィ ス エーブル1
1 = ハー ド ウ ェ ア例外を イ ネーブル
0
パラ メ ーター
C_PVR に基
づく。
例外サポー ト を有効に し て コ ン フ ィ ギ ュ レ ー ト し てい る 場合
(C_*_EXCEPTION ま たは C_USE_MMU > 0) にのみ使用可能
読み出 し /書 き 込み
24
DCE
デー タ キ ャ ッ シ ュ イ ネーブル
0 = デー タ キ ャ ッ シ ュ をデ ィ ス エーブル
1 = デー タ キ ャ ッ シ ュ を イ ネーブル
0
デー タ キ ャ ッ シ ュ を 使用す る よ う に コ ン フ ィ ギ ュ レ ー ト し て い る 場合
(C_USE_DCACHE = 1) にのみ使用可能
読み出 し /書 き 込み
MicroBlaze プ ロ セ ッ サ リ フ ァ レ ン ス ガ イ ド
UG984 (v2015.1) 2015 年 4 月 15 日
UG984 (v2015.3)
(v2015.2) 2015 年 96 月 30
24 日
japan.xilinx.com
22
第 2 章 : MicroBlaze アーキテ ク チ ャ
表 2‐9 : マシ ン ス テー タ ス レ ジ ス タ (MSR) (続き)
ビッ ト
25
名前
DZO
説明
ま たは除算オーバーフ ロ ー2
ゼ ロ 除算、
0 = ゼ ロ 除算、 ま たは除算オーバーフ ロ ーが発生 し ていない
1 = ゼ ロ 除算、 ま たは除算オーバーフ ロ ーが発生
リセッ ト値
0
ハー ド ウ ェ ア 除算器 を 使用す る よ う に コ ン フ ィ ギ ュ レ ー ト し て い る 場合
(C_USE_DIV = 1) にのみ使用可能
読み出 し /書 き 込み
26
ICE
命令キ ャ ッ シ ュ イ ネーブル
0 = 命令キ ャ ッ シ ュ をデ ィ ス エーブル
1 = 命令キ ャ ッ シ ュ を イ ネーブル
0
命令 キ ャ ッ シ ュ を 使用す る よ う に コ ン フ ィ ギ ュ レ ー ト し て い る 場合
(C_USE_ICACHE = 1) にのみ使用可能
読み出 し /書 き 込み
27
FSL
AXI4-Stream エ ラ ー
0 = get ま たは getd にエ ラ ーな し
1 = get ま たは getd の制御 タ イ プが一致 し ない
こ の ビ ッ ト は ス テ ィ ッ キー ビ ッ ト で、 た と えば、 制御ビ ッ ト が一致 し ない場
合に get ま たは getd 命令で設定 さ れます。 こ れを ク リ アにする には、 mts ま
たは msrclr 命令を使用す る 必要があ り ます。
0
ス ト リ ー ム リ ン ク を 使用す る よ う に コ ン フ ィ ギ ュ レ ー ト し て い る 場合
(C_FSL_LINKS > 0) にのみ使用可能
読み出 し /書 き 込み
28
BIP
処理中ブ レー ク
0 = 処理中ブ レー ク な し
1 = 処理中ブ レー ク あ り
ブ レ ー ク ソ ー ス は ソ フ ト ウ ェ ア ブ レ ー ク 命令、 ま た は Ext_Brk ま た は
Ext_NM_Brk ピ ンか ら のハー ド ウ ェ ア ブ レー ク にな る 。
読み出 し /書 き 込み
0
29
C
演算キ ャ リ ー
0 = 繰 り 上げな し (繰 り 下げ)
1 = 繰 り 上げあ り (繰 り 下げな し )
読み出 し /書 き 込み
0
30
IE
割 り 込み イ ネーブル
0 = 割 り 込みをデ ィ ス エーブル
1 = 割 り 込みを イ ネーブル
読み出 し /書 き 込み
0
31
-
予約
0
1. MMU 例外 (デー タ ス ト レージ例外、 命令ス ト レージ例外、 デー タ TLB ミ ス例外、 命令 TLB ミ ス例外) はデ ィ ス エーブルにで き
ません。 ま た こ の ビ ッ ト の影響を受け ません。
2. こ の ビ ッ ト は、 整数をゼ ロ で割 る 場合、 ま たは除算オーバーフ ロ ー シ グナ リ ン グにのみ使用 さ れます。 FSR には浮動小数点の
同等の も のがあ り ま す。 例外処理がで き る よ う に コ ン フ ィ ギ ュ レー ト さ れてい る か ど う かにかかわ ら ず、 DZO ビ ッ ト はゼ ロ 除
算、 ま たは除算オーバーフ ロ ー コ ンデ ィ シ ョ ン を フ ラ グ し ます。
例外ア ド レ ス レ ジ ス タ (EAR)
例外ア ド レ ス レ ジ ス タ は、 次の例外を引き 起 こ すフルの ロ ー ド /ス ト ア ア ド レ ス を格納 し ます。
MicroBlaze プ ロ セ ッ サ リ フ ァ レ ン ス ガ イ ド
UG984 (v2015.1) 2015 年 4 月 15 日
UG984 (v2015.3)
(v2015.2) 2015 年 96 月 30
24 日
japan.xilinx.com
23
第 2 章 : MicroBlaze アーキテ ク チ ャ
•
ア ラ イ ン さ れていないア ク セ ス例外、 つま り ア ラ イ ン さ れていないア ク セ ス ア ド レ ス
•
エ ラ ーの起 き てい る AXI4 デー タ ア ク セ ス ア ド レ ス を指定す る M_AXI_DP 例外
•
ア ク セ ス のあ っ た (仮想) 実効ア ド レ ス を指定す る デー タ ス ト レージ例外
•
読み出 し のあ っ た (仮想) 実効ア ド レ ス を指定す る 命令ス ト レージ例外
•
ア ク セ ス のあ っ た (仮想) 実効ア ド レ ス を指定す る デー タ TLB ミ ス例外
•
読み出 し のあ っ た (仮想) 実効ア ド レ ス を指定す る 命令 TLB ミ ス例外
ほかのすべて の例外の場合は、 こ の レ ジ ス タ の内容は未定義です。 MFS 命令で読み出 さ れ る 場合は、 EAR は Sa =
0x0003 で指定 さ れます。 EAR レ ジ ス タ は 図 2-5 で図説 さ れ、 表 2-10 にはビ ッ ト の説明 と リ セ ッ ト 値が ま と め ら れて
い ます。



EAR
図 2‐5 : EAR
表 2‐10 : 例外ア ド レ ス レ ジ ス タ (EAR) ビッ ト
0:31
名前
EAR
説明
リセッ ト値
0x00000000
例外ア ド レ ス レ ジ ス タ
例外ス テー タ ス レ ジ ス タ (ESR)
例外ス テー タ ス レ ジ ス タ には、 プ ロ セ ッ サの ス テー タ ス ビ ッ ト が含まれてい ます。 MFS 命令で読み出 さ れ る 場合は、
ESR は Sa = 0x0005 で指定 さ れます。 ESR レ ジ ス タ は図 2-6 で図説 さ れ、 表 2-11 にはビ ッ ト の説明お よ び リ セ ッ ト 値
が、 表 2-12 には例外別ス テー タ ス (ESS) が ま と め ら れてい ます。


予約
 
20




DS
ESS
EC
図 2‐6 : ESR
表 2‐11 : 例外ス テー タ ス レ ジ ス タ (ESR) ビッ ト
名前
0:18
予約
19
DS
説明
遅延ス ロ ッ ト 例外
0 = 遅延ス ロ ッ ト 命令で引 き 起 こ さ れていない
1 = 遅延ス ロ ッ ト 命令で引 き 起 こ さ れてい る
読み出 し 専用
MicroBlaze プ ロ セ ッ サ リ フ ァ レ ン ス ガ イ ド
UG984 (v2015.1) 2015 年 4 月 15 日
UG984 (v2015.3)
(v2015.2) 2015 年 96 月 30
24 日
japan.xilinx.com
リセッ ト値
0
24
第 2 章 : MicroBlaze アーキテ ク チ ャ
表 2‐11 : 例外ス テー タ ス レ ジ ス タ (ESR) (続き)
ビッ ト
名前
説明
リセッ ト値
20:26
ESS
例外別ス テー タ ス
表 2-12 を参照
読み出 し 専用
27:31
EC
例外原因
00000 = ス ト リ ーム例外
00001 = ア ラ イ ン さ れていないデー タ ア ク セ ス例外
00010 = 無効なオペコ ー ド 例外
00011 = 命令バ ス エ ラ ー例外
00100 = デー タ バ ス エ ラ ー例外
00101 = 除算例外
00110 = 浮動小数点ユニ ッ ト 例外
00111 = 特権命令例外
00111 = ス タ ッ ク 保護違反例外
10000 = デー タ ス ト レージ例外
10001 = 命令ス ト レージ例外
10010 = デー タ TLB ミ ス例外
10011 = 命令 TLB ミ ス例外
読み出 し 専用
表 2-12 を参照
0
表 2‐12 : 例外別ス テー タ ス (ESS) 例外原因
ビッ ト
名前
説明
リセッ ト値
20
W
ワー ド ア ク セ ス例外
0 = ア ラ イ ン し ていないハーフ ワー ド ア ク セ ス
1 = ア ラ イ ン し ていない ワー ド ア ク セ ス
0
21
S
ス ト ア ア ク セ ス例外
0 = ア ラ イ ン し ていない ロ ー ド ア ク セ ス
1 = ア ラ イ ン し ていない ス ト ア ア ク セ ス
0
22:26
Rx
ソ ース/デス テ ィ ネーシ ョ ン レ ジ ス タ
ア ラ イ ン し ていないア ク セ ス で ソ ース (ス ト ア) ま たは
デス テ ィ ネーシ ョ ン ( ロ ー ド ) と し て使用 さ れ る 汎用レ
ジス タ
0
無効な命令
20:26
予約
命令バ ス 
エラー
20
ECC
21:26
予約
20
ECC
21:26
予約
20
DEC
21:26
予約
0
浮動小数点ユ
ニッ ト
20:26
予約
0
特権命令
20:26
予約
0
ス タ ッ ク 保護
違反
20:26
予約
0
アラ インして
いないデー タ
ア ク セス
デー タ 
バス エ ラー
除算
MicroBlaze プ ロ セ ッ サ リ フ ァ レ ン ス ガ イ ド
UG984 (v2015.1) 2015 年 4 月 15 日
UG984
(v2015.2) 2015 年 96 月 30
(v2015.3)
24 日
0
ILMB の訂正可能エ ラ ー ま たは訂正不可能なエ ラ ーに
よ る 例外
0
0
DLMB の訂正可能エ ラ ーま たは訂正不可能なエ ラ ーに
よ る 例外
0
0
除算 - 除算エ ラ ー原因
0 = ゼ ロ 除算
1 = 除算オーバーフ ロ ー
japan.xilinx.com
0
25
第 2 章 : MicroBlaze アーキテ ク チ ャ
表 2‐12 : 例外別ス テー タ ス (ESS) (続き)
例外原因
ス ト リ ーム
デー タ 
ス ト レージ
命令
ス ト レージ
デー タ 
TLB ミ ス
命令 
TLB ミ ス
ビッ ト
名前
説明
リセッ ト値
20:22
予約
23:26
FSL
0
例外を引 き 起 こ し た AXI4-Stream イ ンデ ッ ク ス
0
20
DIZ
デー タ ス ト レージ - ゾーン保護
0 = 発生 し なか っ た
1 = 発生 し た
0
21
S
デー タ ス ト レージ - ス ト ア命令
0 = 発生 し なか っ た
1 = 発生 し た
0
22:26
予約
20
DIZ
21:26
予約
0
20
予約
0
21
S
22:26
予約
0
20:26
予約
0
0
命令ス ト レージ - ゾーン保護
0 = 発生 し なか っ た
1 = 発生 し た
デー タ TLB ミ ス - ス ト ア命令
0 = 発生 し なか っ た
1 = 発生 し た
0
0
分岐先レ ジ ス タ (BTR)
MicroBlaze プ ロ セ ッ サが例外を使用す る よ う に コ ン フ ィ ギ ュ レー ト さ れてい る 場合にのみ、 分岐先レ ジ ス タ は存在 し
ます。 こ の レ ジ ス タ は、 MSR[EIP] = 0 の と き に実行 さ れたすべての遅延ス ロ ッ ト の分岐命令の分岐先ア ド レ ス を格納
し ます。 例外が遅延ス ロ ッ ト の命令に よ っ て引き 起 こ さ れた場合 (つま り ESR[DS]=1)、 例外ハン ド ラ ーは、 R17 に格
納 さ れてい る 標準例外戻 り ア ド レ ス ではな く 、 BTR に格納 さ れてい る ア ド レ ス に実行を戻す必要があ り ます。 MFS
命令で読み出 さ れ る 場合は、 BTR は Sa = 0x000B で指定 さ れます。 BTR レ ジ ス タ は 図 2-7 で図説 さ れ、 表 2-13 には
ビ ッ ト の説明 と リ セ ッ ト 値が ま と め ら れてい ます。



BTR
図 2‐7 : BTR
表 2‐13 : 分岐先レ ジ ス タ (BTR) ビッ ト
0:31
名前
BTR
説明
リセッ ト値
遅延 ス ロ ッ ト の例外に よ っ て引 き 起 こ さ れた例外か ら 戻 る と き に、 0x00000000
ハン ド ラ ーに よ り 使用 さ れ る 分岐先ア ド レ ス
読み出 し 専用
浮動小数点ス テー タ ス レ ジ ス タ (FSR)
浮動小数点ス テー タ ス レ ジ ス タ には、 浮動小数点ユニ ッ ト の ス テー タ ス ビ ッ ト が含まれてい ます。 こ れは、 MFS 命
令で読み出 し で き 、 MTS 命令で書 き 込みで き ま す。 読み出 し ま たは書 き 込みが実行 さ れ る 場合は、 こ の レ ジ ス タ は
MicroBlaze プ ロ セ ッ サ リ フ ァ レ ン ス ガ イ ド
UG984 (v2015.1) 2015 年 4 月 15 日
UG984
(v2015.2) 2015 年 96 月 30
(v2015.3)
24 日
japan.xilinx.com
26
第 2 章 : MicroBlaze アーキテ ク チ ャ
Sa = 0x0007 で指定 さ れ ます。 こ の レ ジ ス タ の ビ ッ ト は ス テ ィ ッ キーで、 浮動小数点命令は、 レ ジ ス タ の ビ ッ ト し か
セ ッ ト で き ません。 MTS 命令を使用 し ない と 、 レ ジ ス タ を ク リ アにで き ません。 FSR レ ジ ス タ は 図 2-8 で図説 さ れ、
表 2-14 には、 ビ ッ ト の説明お よ び リ セ ッ ト 値が ま と め ら れてい ます。
    






IO DZ OF UF DO
予約
図 2‐8 : FSR
表 2‐14 : 浮動小数点ス テー タ ス レ ジ ス タ (FSR) ビッ ト
名前
説明
リセッ ト値
0:26
予約
27
IO
無効の操作
0
28
DZ
ゼ ロ 除算
0
29
OF
オーバーフ ロ ー
0
30
UF
ア ン ダーフ ロ ー
0
31
DO
非正規オペ ラ ン ド エ ラ ー
0
未定義
例外デー タ レ ジ ス タ (EDR)
例外デー タ レ ジ ス タ は、 ス ト リ ーム例外を引き 起 こ し た AXI4-Stream リ ン ク で読み出 さ れたデー タ を格納 し ます。
ほかのすべて の例外の場合は、 こ の レ ジ ス タ の内容は未定義です。 MFS 命令で読み出 さ れ る 場合は、 EDR は Sa =
0x000D で指定 さ れます。 EDR レ ジ ス タ は 図 2-9 で図説 さ れ、 表 2-15 には、 ビ ッ ト の説明お よ び リ セ ッ ト 値が ま と め
ら れてい ます。
注記 : C_FSL_LINKS が 0 よ り 大 き く 、 C_FSL_EXCEPTION が 1 に設定 さ れてい る 場合にのみ、 こ の レ ジ ス タ は イ
ンプ リ メ ン ト さ れます。



EDR
図 2‐9 : EDR
表 2‐15 : 例外デー タ レ ジ ス タ (EDR) ビッ ト
0:31
名前
EDR
説明
リセッ ト値
0x00000000
例外デー タ レ ジ ス タ
ス タ ッ ク ロウ レ ジ ス タ (SLR)
ス タ ッ ク ロ ウ レ ジ ス タ は、 ス タ ッ ク オーバーフ ロ ーを検出す る ための ス タ ッ ク の最低値を格納 し ます。 rA と し て ス
タ ッ ク ポ イ ン タ ー (レ ジ ス タ R1) を使用す る ロ ー ド ま たは ス ト ア命令のア ド レ ス が、 ス タ ッ ク ロ ウ レ ジ ス タ よ り 小
さ い と 、 ス タ ッ ク オーバーフ ロ ーが発生 し 、 MSR で例外が イ ネーブルにな っ てい る 場合は、 ス タ ッ ク 保護違反例外
にな り ます。
MFS 命令で読み出 さ れ る 場合は、 SLR は Sa = 0x0800 で指定 さ れます。 SLR レ ジ ス タ は 図 2-10 で図説 さ れ、 表 2-16
には、 ビ ッ ト の説明お よ び リ セ ッ ト 値が ま と め ら れてい ます。
MicroBlaze プ ロ セ ッ サ リ フ ァ レ ン ス ガ イ ド
UG984 (v2015.1) 2015 年 4 月 15 日
UG984
(v2015.2) 2015 年 96 月 30
(v2015.3)
24 日
japan.xilinx.com
27
第 2 章 : MicroBlaze アーキテ ク チ ャ
注記 : パ ラ メ ー タ ー C_USE_STACK_PROTECTION が 1 に設定 さ れていて ス タ ッ ク 保護が イ ネーブルにな っ てい る
場合にのみ、 こ の レ ジ ス タ は イ ンプ リ メ ン ト さ れます。 ス タ ッ ク 保護が イ ンプ リ メ ン ト さ れていない場合は、 こ の レ
ジ ス タ への書 き 込みには効力はあ り ません。
注記 : MMU が イ ネーブルの場合 (C_USE_MMU > 0)、 ス タ ッ ク 保護は使用で き ません。 UTLB の代わ り に、 MMU ペー
ジ ベース の メ モ リ を使用 し て保護 さ れます。



SLR
図 2‐10 : SLR
表 2‐16 : ス タ ッ ク ロウ レ ジ ス タ (SLR) ビッ ト
0:31
名前
SLR
説明
リセッ ト値
0x00000000
ス タ ッ ク ロ ウ レジス タ
ス タ ッ ク ハイ レ ジ ス タ (SHR)
ス タ ッ ク ハ イ レ ジ ス タ は、 ス タ ッ ク ア ン ダーフ ロ ーを検出す る ための ス タ ッ ク の最高値を格納 し ます。 rA と し て ス
タ ッ ク ポ イ ン タ ー (レ ジ ス タ R1) を使用す る ロ ー ド ま たは ス ト ア命令のア ド レ ス が、 ス タ ッ ク ハ イ レ ジ ス タ よ り 大
き い と 、 ス タ ッ ク ア ン ダーフ ロ ーが発生 し 、 MSR で例外が イ ネーブルにな っ てい る 場合は、 ス タ ッ ク 保護違反例外
にな り ます。
MFS 命令で読み出 さ れ る 場合は、 SHR は Sa = 0x0802 で指定 さ れます。 SHR レ ジ ス タ は 図 2-11 で図説 さ れ、 表 2-17
には、 ビ ッ ト の説明お よ び リ セ ッ ト 値が ま と め ら れてい ます。
注記 : パ ラ メ ー タ ー C_USE_STACK_PROTECTION が 1 に設定 さ れていて ス タ ッ ク 保護が イ ネーブルにな っ てい る
場合にのみ、 こ の レ ジ ス タ は イ ンプ リ メ ン ト さ れます。 ス タ ッ ク 保護が イ ンプ リ メ ン ト さ れていない場合は、 こ の レ
ジ ス タ への書 き 込みには効力はあ り ません。
注記 : MMU が イ ネーブルの場合 (C_USE_MMU > 0)、 ス タ ッ ク 保護は使用で き ません。 UTLB の代わ り に、 MMU ペー
ジ ベース の メ モ リ を使用 し て保護 さ れます。



SHR
図 2‐11 : SHR
表 2‐17 : ス タ ッ ク ハイ レ ジ ス タ (SHR) ビッ ト
0:31
名前
SHR
説明
リセッ ト値
0xFFFFFFFF
ス タ ッ ク ハイ レジス タ
プ ロ セス ID レ ジ ス タ (PID)
プ ロ セ ス ID レ ジ ス タ は、 MMU ア ド レ ス変換中の ソ フ ト ウ ェ ア プ ロ セ スの特定に使用 さ れます。 こ れは、 MicroBlaze の
C_USE_MMU コ ン フ ィ ギ ュ レーシ ョ ン オプシ ョ ン で制御 さ れ ます。 C_USE_MMU が 1 よ り 大 き く (ユーザー モー ド )、
C_AREA_OPTIMIZED が 0 に設定 さ れてい る場合にのみ、 こ のレ ジ ス タ は イ ンプ リ メ ン ト さ れます。 MFS および MTS
MicroBlaze プ ロ セ ッ サ リ フ ァ レ ン ス ガ イ ド
UG984 (v2015.1) 2015 年 4 月 15 日
UG984 (v2015.3)
(v2015.2) 2015 年 96 月 30
24 日
japan.xilinx.com
28
第 2 章 : MicroBlaze アーキテ ク チ ャ
命令でア ク セ ス さ れる場合は、 PID は Sa = 0x1000 で指定さ れます。 こ のレ ジ ス タ には、 メ モ リ 管理特殊レ ジ ス タ のパ ラ
メ ーター C_MMU_TLB_ACCESS の設定に従っ てア ク セ スで き ます。
PID は TLB エン ト リ にア ク セ スす る と き に も 使用 さ れます。
•
TLBHI (変換ル ッ ク アサ イ ド バ ッ フ ァ ー ハ イ ) を書 き 込む と 、 PID の値は、 TLB エン ト リ の TID フ ィ ール ド に格
納 さ れます。
•
TLBHI お よ び MSR[UM] の読み出 し がセ ッ ト さ れていない場合は、 TID フ ィ ール ド の値は PID に格納 さ れます。
PID レ ジ ス タ は 図 2-12 で図説 さ れ、 表 2-18 には、 ビ ッ ト の説明お よ び リ セ ッ ト 値が ま と め ら れてい ます。




予約
PID
図 2‐12 : PID
表 2‐18 : プ ロ セス ID レ ジ ス タ (PID) ビッ ト
名前
0:23
予約
24:31
PID
説明
リセッ ト値
MMU ア ド レ ス変換中の ソ フ ト ウ ェ ア プ ロ セ ス を特定す る のに使用 さ
れます。
読み出 し /書 き 込み
0x00
ゾーン保護レ ジ ス タ (ZPR)
ゾーン保護 レ ジ ス タ は、 TLB エ ン ト リ で定義 さ れてい る MMU メ モ リ 保護を上書 き す る ために使用 さ れ ま す。 こ れ
は、 MicroBlaze の C_USE_MMU コ ン フ ィ ギ ュ レーシ ョ ン オプシ ョ ン で制御 さ れ ます。 C_USE_MMU が 1 よ り も 大 き
く (ユーザー モー ド )、 C_AREA_OPTIMIZED が 0 に設定 さ れていて、 さ ら に指定 さ れてい る メ モ リ 保護ゾーンの数
が 0 よ り も 大 き い (C_MMU_ZONES > 0) 場合にのみ、 こ の レ ジ ス タ は イ ンプ リ メ ン ト さ れます。 イ ンプ リ メ ン ト さ れ
る レ ジ ス タ ビ ッ ト は、 指定 さ れてい る メ モ リ 保護ゾーンの数 (C_MMU_ZONES) に左右 さ れます。 MFS お よ び MTS 命
令でア ク セ ス さ れ る 場合は、 ZPR は Sa = 0x1001 で指定 さ れます。 こ の レ ジ ス タ には、 メ モ リ 管理特殊レ ジ ス タ のパ
ラ メ ー タ ー C_MMU_TLB_ACCESS の設定に従っ て ア ク セ ス で き ます。 ZPR レ ジ ス タ は 図 2-13 で図説 さ れ、 表 2-19
には、 ビ ッ ト の説明お よ び リ セ ッ ト 値が ま と め ら れてい ます。
0
2
4
6
8
10
12
14
16
18
20
22
24
26
28
30
































図 2‐13 : ZPR
MicroBlaze プ ロ セ ッ サ リ フ ァ レ ン ス ガ イ ド
UG984 (v2015.1) 2015 年 4 月 15 日
UG984 (v2015.3)
(v2015.2) 2015 年 96 月 30
24 日
japan.xilinx.com
29
第 2 章 : MicroBlaze アーキテ ク チ ャ
表 2‐19 : ゾーン保護レ ジ ス タ (ZPR) ビッ ト
0:1
2:3
...
30:31
名前
ZP0
ZP1
...
ZP15
説明
リセッ ト値
ゾーン保護
ユーザー モー ド (MSR[UM] = 1) :
00 = TLB エン ト リ で V を上書 き 。 ページへのア ク セ ス は不可。
01 = 上書 き な し 。 TLB エン ト リ の V、 WR、 EX を使用。
10 = 上書 き な し 。 TLB エン ト リ の V、 WR、 EX を使用。
11 = TLB エン ト リ で WR お よ び EX を上書き 。書 き 込み可能お よ び実行可能
の権限でページにア ク セ ス。
特権モー ド (MSR[UM] = 0) :
00 = 上書 き な し 。 TLB エン ト リ の V、 WR、 EX を使用。
01 = 上書 き な し 。 TLB エン ト リ の V、 WR、 EX を使用。
10 = TLB エン ト リ で WR お よ び EX を上書 き 。書 き 込み可能お よ び実行可能
の権限でページにア ク セ ス。
11 = TLB エン ト リ で WR お よ び EX を上書き 。書 き 込み可能お よ び実行可能
の権限でページにア ク セ ス。
読み出 し /書 き 込み
0x00000000
変換ル ッ ク アサイ ド バ ッ フ ァ ー ロ ウ レ ジス タ (TLBLO)
変換ル ッ ク アサ イ ド バ ッ フ ァ ー ロ ウ レ ジ ス タ は、 MMU の統合変換ル ッ ク アサ イ ド バ ッ フ ァ ー (UTLB) エ ン ト リ に
ア ク セ スす る ために使用 さ れ ます。 こ れは、 MicroBlaze の C_USE_MMU コ ン フ ィ ギ ュ レーシ ョ ン オプシ ョ ン で制御
さ れます。 C_USE_MMU が 1 よ り 大き く (ユーザー モー ド )、 C_AREA_OPTIMIZED が 0 に設定 さ れてい る 場合にの
み、 こ の レ ジ ス タ は イ ンプ リ メ ン ト さ れます。MFS お よ び MTS 命令でア ク セ ス さ れ る 場合は、TLBLO は Sa = 0x1003
で指定 さ れ ます。 TLBLO を読み出 し ま たは書 き 込みす る と き は、 TLBX レ ジ ス タ で イ ンデ ッ ク ス化 さ れた UTLB エ
ン ト リ にア ク セ ス し ます。 こ の レ ジ ス タ は、 メ モ リ 管理特殊レ ジ ス タ のパ ラ メ ー タ ー C_MMU_TLB_ACCESS の設定
に従っ て、 読み出 し 可能です。
UTLB は ビ ッ ト ス ト リ ー ム ダ ウ ン ロ ー ド で リ セ ッ ト さ れ ま す ( すべ て の TLBLO エ ン ト リ の リ セ ッ ト 値 は
0x00000000)。
注記 : UTLB は、 外部 リ セ ッ ト 入力であ る Reset お よ び Debug_Rst では リ セ ッ ト さ れません。 つま り 、 デー タ の陳
腐化を避け る ため、 リ セ ッ ト 後 UTLB 全体を初期化す る 必要があ り ます。
TLBLO レ ジ ス タ は 図 2-14 で図説 さ れ、 表 2-20 には、 ビ ッ ト の説明お よ び リ セ ッ ト 値が ま と め ら れてい ます。
0
22 23 24


RPN

EX WR
28 29 30
31





ZSEL
W
I
M G
図 2‐14 : TLBLO
MicroBlaze プ ロ セ ッ サ リ フ ァ レ ン ス ガ イ ド
UG984 (v2015.1) 2015 年 4 月 15 日
UG984 (v2015.3)
(v2015.2) 2015 年 96 月 30
24 日
japan.xilinx.com
30
第 2 章 : MicroBlaze アーキテ ク チ ャ
表 2‐20 : 変換ル ッ ク アサイ ド バ ッ フ ァ ー ロウ レ ジ ス タ (TLBLO) ビッ ト
名前
説明
リセッ ト値
0:21
RPN
実ページ番号ま たは物理ページ番号
TLB ヒ ッ ト が発生す る と 、 こ の フ ィ ール ド は TLB エン ト リ か ら 読み出 さ れ、
物理ア ド レ ス を作成す る ために使用 さ れ ます。 SIZE フ ィ ール ド の値に よ り
ますが、RPN ビ ッ ト の一部は物理ア ド レ ス では使用 さ れません。 ソ フ ト ウ ェ
アは、 こ の フ ィ ール ド の未使用 ビ ッ ト を ゼ ロ に ク リ ア にす る 必要が あ り ま
す。
C_USE_MMU=3 (仮想) の場合のみ定義 さ れます。
読み出 し /書 き 込み
0x000000
22
EX
実行フ ァ イ ル
ビ ッ ト が 1 にセ ッ ト さ れてい る 場合、ページには実行可能コ ー ド が含まれて
いて、 ページか ら 命令を フ ェ ッ チで き ます。 ビ ッ ト が 0 に ク リ ア さ れてい る
場合は、 命令はページか ら フ ェ ッ チで き ません。 ク リ ア EX ビ ッ ト でページ
か ら 命令を フ ェ ッ チ し よ う と する と 、 命令ス ト レージ例外が発生 し ます。
読み出 し /書 き 込み
0
23
WR
書 き 込み可能
ビ ッ ト が 1 にセ ッ ト さ れてい る 場合、 ページは書き 込み可能で、 ス ト ア命令
をページ内のア ド レ ス でデー タ を格納する のに使用で き ます。
ビ ッ ト が 0 に ク リ ア さ れてい る 場合は、 ページは読み出 し 専用 (書き 込み不
可) です。 ク リ ア WR ビ ッ ト でページにデー タ を格納 し よ う と する と 、 デー
タ ス ト レージ例外が発生 し ます。
読み出 し /書 き 込み
0
24:27
ZSEL
ゾーン選択
こ の フ ィ ール ド は、 ゾーン保護レ ジ ス タ (ZPR) の Z0 か ら Z15 ま での 16 個
の ゾーンか ら 1 つ選択 し ます。 
た と えば、 ZSEL 0x5 の場合、 ゾーン フ ィ ール ド Z5 が選択 さ れます。 選択
さ れた ZPR フ ィ ール ド は、 TLB エン ト リ の EX お よ び WR フ ィ ール ド に よ
り 指定 さ れてい る ア ク セ ス保護を変更する のに使用 さ れます。 ま た、 TLB V
(有効) フ ィ ール ド を上書 き す る こ と に よ り 、ページへのア ク セ ス を防ぐ のに
も 使用 さ れます。
読み出 し /書 き 込み
0x0
28
W
ラ イ ト スルー
パ ラ メ ー タ ー C_DCACHE_USE_WRITEBACK が 1 に設定 さ れてい る 場合、
こ の ビ ッ ト がキ ャ ッ シ ン グ ポ リ シーを制御 し ます。 こ れが 1 に設定 さ れて
い る 場合 ラ イ ト ス ルー ポ リ シーが選択 さ れ、 それ以外の場合は ラ イ ト バ ッ
ク ポ リ シーが選択 さ れます。
C_DCACHE_USE_WRITEBACK が 0 に ク リ アに さ れてい る と 、 こ のビ ッ ト
は 1 に固定 さ れ、 ラ イ ト スルーは常に使用 さ れます。
読み出 し /書 き 込み
0/1
29
I
キ ャ ッ シ ン グの禁止
ビ ッ ト が 1 にセ ッ ト さ れてい る 場合は、ページへのア ク セ ス はキ ャ ッ シ ュ さ
れません (キ ャ ッ シ ン グの禁止)
ビ ッ ト が 0 に ク リ ア さ れてい る 場合は、ページへのア ク セ ス はキ ャ ッ シ ュ 可
能です。
読み出 し /書 き 込み
0
MicroBlaze プ ロ セ ッ サ リ フ ァ レ ン ス ガ イ ド
UG984 (v2015.1) 2015 年 4 月 15 日
UG984 (v2015.3)
(v2015.2) 2015 年 96 月 30
24 日
japan.xilinx.com
31
第 2 章 : MicroBlaze アーキテ ク チ ャ
表 2‐20 : 変換ル ッ ク アサイ ド バ ッ フ ァ ー ロウ レ ジ ス タ (TLBLO) (続き)
説明
リセッ ト値
30
ビッ ト
M
名前
メ モ リ コ ヒ ーレ ン ト
メ モ リ コ ヒ ー レ ン シは MicroBlaze には イ ン プ リ メ ン ト さ れていないため、
こ の ビ ッ ト は 0 に固定 さ れてい ます。
読み出 し 専用
0
31
G
ガー ド
ビ ッ ト が 1 にセ ッ ト さ れてい る 場合、 投機的ページ ア ク セ ス は許可 さ れ ま
せん ( メ モ リ がガー ド さ れてい る )。
ビ ッ ト が 0 に ク リ ア さ れてい る 場合、 投機的ページ ア ク セ ス は許可 さ れ ま
す。
G 属性は、 メ モ リ マ ッ プ さ れた I/O を不正な命令ア ク セ ス か ら 保護する ため
に使用で き ます。
読み出 し /書 き 込み
0
変換ル ッ ク アサイ ド バ ッ フ ァ ー ハイ レ ジス タ (TLBHI)
変換ル ッ ク アサ イ ド バ ッ フ ァ ー ハ イ レ ジ ス タ は、 MMU の統合変換ル ッ ク アサ イ ド バ ッ フ ァ ー (UTLB) エ ン ト リ に
ア ク セ スす る ために使用 さ れます。 こ れは、 MicroBlaze の C_USE_MMU コ ン フ ィ ギ ュ レーシ ョ ン オプシ ョ ン で制御
さ れ ます。 C_USE_MMU が 1 よ り 大 き く (ユーザー モー ド )、 C_AREA_OPTIMIZED が 0 に設定 さ れてい る 場合に
のみ、こ の レ ジ ス タ は イ ンプ リ メ ン ト さ れます。MFS お よ び MTS 命令でア ク セ ス さ れ る 場合は、TLBHI は Sa = 0x1003
で指定 さ れます。 TLBHI を読み出 し ま たは書き 込みする と き は、 TLBX レ ジ ス タ で イ ンデ ッ ク ス化 さ れた UTLB エン
ト リ にア ク セ ス し ます。 こ の レ ジ ス タ は、 メ モ リ 管理特殊レ ジ ス タ のパ ラ メ ー タ ー C_MMU_TLB_ACCESS の設定に
従っ て、 読み出 し 可能です。
PID は TLB エン ト リ にア ク セ スす る と き に も 使用 さ れます。
•
TLBHI を書き 込む と 、 PID の値は、 TLB エン ト リ の TID フ ィ ール ド に格納 さ れます。
•
TLBHI お よ び MSR[UM] の読み出 し がセ ッ ト さ れていない場合は、 TID フ ィ ール ド の値は PID に格納 さ れます。
UTLB は ビ ッ ト ス ト リ ー ム ダ ウ ン ロ ー ド で リ セ ッ ト さ れ ま す ( すべ て の TLBHI エ ン ト リ の リ セ ッ ト 値 は
0x00000000)。
注記 : UTLB は、 外部 リ セ ッ ト 入力 Reset お よ び Debug_Rst に よ っ て リ セ ッ ト さ れません。
TLBHI レ ジ ス タ は 図 2-15 で図説 さ れ、 表 2-21 には、 ビ ッ ト の説明お よ び リ セ ッ ト 値が ま と め ら れてい ます。
0
22
25 26 27 28




TAG
SIZE
V
E U0

31

予約
図 2‐15 : TLBHI
MicroBlaze プ ロ セ ッ サ リ フ ァ レ ン ス ガ イ ド
UG984 (v2015.1) 2015 年 4 月 15 日
UG984 (v2015.3)
(v2015.2) 2015 年 96 月 30
24 日
japan.xilinx.com
32
第 2 章 : MicroBlaze アーキテ ク チ ャ
表 2‐21 : 変換ル ッ ク アサイ ド バ ッ フ ァ ー ハイ レ ジ ス タ (TLBHI) ビッ ト
名前
説明
リセッ ト値
0:21
TAG
TLB エン ト リ タ グ
SIZE フ ィ ール ド の制御の下、仮想 メ モ リ ア ド レ ス のページ番号の部分 と 比
較 さ れます。
読み出 し /書 き 込み
0x000000
22:24
SIZE
サイズ
ページ サ イ ズ を指定 し ます。 SIZE フ ィ ール ド は、 TAG フ ィ ール ド を仮想
メ モ リ ア ド レ ス のページ番号部分 と 比較する と き に使用 さ れ る ビ ッ ト 範囲
を制御 し ます。 こ の フ ィ ール ド で定義 さ れ る ページ サ イ ズは表 2-37 に リ ス
ト さ れてい ます。
読み出 し /書 き 込み
000
25
V
有効
こ のビ ッ ト が 1 にセ ッ ト さ れてい る 場合、 TLB エン ト リ は有効で、 ページ
変換エン ト リ が含まれてい ます。
0 に ク リ ア さ れてい る 場合は、 TLB エン ト リ は無効です。
読み出 し /書 き 込み
0
26
E
エンデ ィ ア ン
こ の ビ ッ ト が 1 にセ ッ ト さ れて い る 場合、 ページは ビ ッ グ エ ンデ ィ ア ン
ページ と し て ア ク セ ス さ れます。
0 に ク リ ア さ れてい る 場合、 ページは リ ト ル エンデ ィ ア ン ページ と し て ア
ク セ ス さ れます。
E ビ ッ ト はデー タ 読み出 し ま たはデー タ 書 き 込みア ク セ ス にのみ影響 し ま
す。 命令ア ク セ ス には影響 し ません。
E ビ ッ ト は、 C_USE_REORDER_INSTR が 1 に設定 さ れてい る 場合にのみ イ
ンプ リ メ ン ト さ れ、 それ以外の場合は 0 に固定 さ れます。
読み出 し /書 き 込み
0
27
U0
ユーザー定義
MicroBlaze にはユーザー定義の ス ト レージ属性がないため、 こ の ビ ッ ト は
0 に固定 さ れてい ます。
読み出 し 専用
0
28:31
予約
変換ル ッ ク アサイ ド バ ッ フ ァ ー イ ンデ ッ ク ス レ ジ ス タ (TLBX)
変換ル ッ ク アサ イ ド バ ッ フ ァ ー イ ンデ ッ ク ス レ ジ ス タ は、 TLBLO お よ び TLBHI レ ジ ス タ にア ク セ スす る と き 、 統
合変換ル ッ ク アサ イ ド バ ッ フ ァ ー (UTLB) への イ ンデ ッ ク ス と し て使用 さ れます。こ れは、MicroBlaze の C_USE_MMU
コ ン フ ィ ギ ュ レ ー シ ョ ン オ プ シ ョ ン で 制御 さ れ ま す。 C_USE_MMU が 1 よ り 大 き く ( ユ ー ザ ー モ ー ド )、
C_AREA_OPTIMIZED が 0 に設定 さ れてい る 場合にのみ、こ の レ ジ ス タ は イ ンプ リ メ ン ト さ れます。MFS お よ び MTS
命令でア ク セ ス さ れ る 場合は、 TLBX は Sa = 0x1002 で指定 さ れます。 TLBX レ ジ ス タ は 図 2-16 で図説 さ れ、 表 2-22
には、 ビ ッ ト の説明お よ び リ セ ッ ト 値が ま と め ら れてい ます。


ミス




予約
イ ンデ ッ ク ス
図 2‐16 : TLBX
MicroBlaze プ ロ セ ッ サ リ フ ァ レ ン ス ガ イ ド
UG984 (v2015.1) 2015 年 4 月 15 日
UG984 (v2015.3)
(v2015.2) 2015 年 96 月 30
24 日
japan.xilinx.com
33
第 2 章 : MicroBlaze アーキテ ク チ ャ
表 2‐22 : 変換ル ッ ク アサイ ド バ ッ フ ァ ー イ ンデ ッ ク ス レ ジ ス タ (TLBX) ビッ ト
名前
0
MISS
1:25
予約
26:31
INDEX
説明
リセッ ト値
TLB ミ ス
TLBSX レ ジ ス タ が仮想ア ド レ ス で書 き 込ま れ、 その仮想ア ド レ ス が TLB
エン ト リ にあ る 場合、 こ の ビ ッ ト は 0 に ク リ アにな り ます。 
仮想ア ド レ ス が検出 さ れない場合は、ビ ッ ト は 1 にセ ッ ト さ れます。TLBX
レ ジ ス タ 自体が書き 込まれ る と 、 ビ ッ ト も ク リ アにない ます。
読み出 し 専用
メ モ リ 管理特殊 レ ジ ス タ の パ ラ メ ー タ ーが C_MMU_TLB_ACCESS > 0
(MINIMAL) の場合、 読み出 し 可能です。
0
TLB イ ンデ ッ ク ス
TLBLO お よ び TLBHI レ ジ ス タ に よ っ て ア ク セ ス さ れ る 変換ル ッ ク アサ イ
ド バ ッ フ ァ ー エ ン ト リ を イ ンデ ッ ク ス化す る のに こ の フ ィ ール ド は使用
さ れ ま す。 TLBSX レ ジ ス タ が仮想ア ド レ ス で書 き 込 ま れ、 その仮想ア ド
レ ス が対応す る TLB エ ン ト リ に あ る 場合、 こ の フ ィ ール ド は TLB イ ン
デ ッ ク ス でア ッ プデー ト さ れます。
読み出 し /書 き 込み
メ モ リ 管理特殊 レ ジ ス タ の パ ラ メ ー タ ーが C_MMU_TLB_ACCESS > 0
(MINIMAL) の場合、 読み出 し お よ び書き 込み可能です。
000000
変換ル ッ ク アサイ ド バ ッ フ ァ ー検索イ ンデ ッ ク ス レ ジ ス タ (TLBSX)
変換ル ッ ク アサ イ ド バ ッ フ ァ ー検索 イ ンデ ッ ク ス レ ジ ス タ は、 統合変換ル ッ ク アサ イ ド バ ッ フ ァ ー (UTLB) で仮想
ページ番号を検索す る ために使用 さ れ ます。 こ れは、 MicroBlaze の C_USE_MMU コ ン フ ィ ギ ュ レーシ ョ ン オプシ ョ
ンで制御 さ れます。 C_USE_MMU が 1 よ り 大き く (ユーザー モー ド )、 C_AREA_OPTIMIZED が 0 に設定 さ れてい る
場合にのみ、 こ の レ ジ ス タ は イ ンプ リ メ ン ト さ れます。 MTS 命令で書 き 込まれ る 場合は、 TLBSX は Sa = 0x1005 で指
定 さ れ ます。 TLBSX レ ジ ス タ は 図 2-17 で図説 さ れ、 表 2-23 には、 ビ ッ ト の説明お よ び リ セ ッ ト 値が ま と め ら れて
い ます。





VPN
予約
図 2‐17 : TLBSX
MicroBlaze プ ロ セ ッ サ リ フ ァ レ ン ス ガ イ ド
UG984 (v2015.1) 2015 年 4 月 15 日
UG984 (v2015.3)
(v2015.2) 2015 年 96 月 30
24 日
japan.xilinx.com
34
第 2 章 : MicroBlaze アーキテ ク チ ャ
表 2‐23 : 変換ル ッ ク アサイ ド バ ッ フ ァ ー検索イ ンデ ッ ク ス レ ジ ス タ (TLBSX) ビッ ト
名前
0:21
VPN
22:31
予約
説明
リセッ ト値
仮想ページ番号
こ の フ ィ ール ド は、 仮想 メ モ リ ア ド レ ス のページ番号部分を表 し ま す。 V
ビ ッ ト が 1 にセ ッ ト さ れてい る 変換ル ッ ク アサ イ ド バ ッ フ ァ ー エン ト リ の
それぞれで、 SIZE フ ィ ール ド の制御の下、 仮想 メ モ リ ア ド レ ス のページ番
号部分 と 、 こ の フ ィ ール ド が比較 さ れます。
仮想ページ番号が検出 さ れ る と 、 TLBX レ ジ ス タ は TLB エ ン ト リ の イ ン
デ ッ ク ス で書 き 込まれ、 TLBX の MISS ビ ッ ト は 0 に ク リ アにな り ます。 仮
想ページ番号が ど の TLB エン ト リ に も 検出 さ れない場合、 TLBX レ ジ ス タ
の MISS ビ ッ ト は 1 にセ ッ ト さ れます。
書 き 込み専用
プ ロ セ ッ サ バージ ョ ン レ ジ ス タ (PVR)
プ ロ セ ッ サ バージ ョ ン レ ジ ス タ は、 MicroBlaze の C_PVR コ ン フ ィ ギ ュ レーシ ョ ン オプシ ョ ンで制御 さ れます。
•
C_PVR が 0 (None) に設定 さ れてい る と 、 プ ロ セ ッ サは PVR を イ ンプ リ メ ン ト せず、 MSR[PVR]=0 です。
•
C_PVR が 1 (Basic) に設定 さ れてい る と 、 MicroBlaze は最初の レ ジ ス タ PVR0 のみを イ ンプ リ メ ン ト し 、 C_PVR
が 2 (Full) に設定 さ れてい る と 、 PVR レ ジ ス タ は 13 個すべて (PVR0 か ら PVR12 ま で) イ ンプ リ メ ン ト さ れます。
MFS 命令で読み出 さ れ る 場合、 PVR は Sa = 0x200x で指定 さ れ ます。 こ の場合 x には 0x0 か ら 0xB ま での レ ジ ス タ
番号が入 り ます。
ビ ッ ト の説明お よ び値は、 表 2-24 か ら 表 2-35 ま でに ま と め ら れてい ます。
表 2‐24 : プ ロ セ ッ サ バージ ョ ン レ ジ ス タ 0 (PVR0) ビッ ト
名前
説明
値
0
CFG
PVR イ ンプ リ メ ン テーシ ョ ン :
0 = Basic、 1 = Full
パ ラ メ ー タ ー C_PVR に基づ く 。
1
BS
バレル シ フ タ ーを使用
C_USE_BARREL
2
DIV
除算器を使用
C_USE_DIV
3
MUL
ハー ド ウ ェ ア乗算器を使用
C_USE_HW_MUL > 0 (None)
4
FPU
FPU を使用
C_USE_FPU > 0 (None)
5
EXC
任意 タ イ プの例外を使用
C_*_EXCEPTION に基づ く 。
C_USE_MMU > 0 (None) の場合 も 設定
される
6
ICU
命令キ ャ ッ シ ュ を使用
C_USE_ICACHE
7
DCU
デー タ キ ャ ッ シ ュ を使用
C_USE_DCACHE
8
MMU
MMU を使用
C_USE_MMU > 0 (None)
9
BTC
分岐先キ ャ ッ シ ュ を使用
C_USE_BRANCH_TARGET_CACHE
10
ENDI
選択 さ れ る エンデ ィ ア ン
常に1 = リ ト ル エンデ ィ ア ン
C_ENDIANNESS
11
FT
フ ォール ト ト レ ラ ン ス機能を イ ンプ リ メ ン ト
C_FAULT_TOLERANT
12
SPROT
ス タ ッ ク 保護を使用
C_USE_STACK_PROTECTION
13
REORD
再順序付け命令を イ ンプ リ メ ン ト
C_USE_REORDER_INSTR
14:15
予約
16:23
MBV
0
MicroBlaze リ リ ース バージ ョ ン コ ー ド
MicroBlaze プ ロ セ ッ サ リ フ ァ レ ン ス ガ イ ド
UG984 (v2015.1) 2015 年 4 月 15 日
UG984 (v2015.3)
(v2015.2) 2015 年 96 月 30
24 日
japan.xilinx.com
リ リ ース別
35
第 2 章 : MicroBlaze アーキテ ク チ ャ
表 2‐24 : プ ロ セ ッ サ バージ ョ ン レ ジ ス タ 0 (PVR0) (続き)
ビッ ト
名前
説明
0x19 = v8.40.b
0x1B = v9.0
0x1D = v9.1
0x1F = v9.2
24:31
USR1
値
0x20 = v9.3
0x21 = v9.4
0x22 = v9.5
C_PVR_USER1
ユーザー コ ン フ ィ ギ ュ レー ト さ れた値 1
表 2‐25 : プ ロ セ ッ サ バージ ョ ン レ ジ ス タ 1 (PVR1) ビッ ト
0:31
名前
USR2
説明
ユーザー コ ン フ ィ ギ ュ レー ト さ れた値 2
値
C_PVR_USER2
表 2‐26 : プ ロ セ ッ サ バージ ョ ン レ ジ ス タ 2 (PVR2) ビッ ト
名前
説明
値
0
DAXI
デー タ 側の使用 さ れてい る AXI4 ま たは ACE
C_D_AXI
1
DLMB
デー タ 側の使用 さ れてい る LMB
C_D_LMB
2
IAXI
命令側の使用 さ れてい る AXI4 ま たは ACE
C_I_AXI
3
ILMB
命令側の使用 さ れてい る LMB
C_I_LMB
4
IRQEDGE
割 り 込みはエ ッ ジで ト リ ガー
C_INTERRUPT_IS_EDGE
5
IRQPOS
割 り 込みエ ッ ジは正
C_EDGE_IS_POSITIVE
6
CEEXC
LMB メ モ リ の ECC 訂正可能エ ラ ーに対 し 、 バ
ス例外を生成
C_ECC_USE_CE_EXCEPTION
7:8
予約
0
9
予約
1
10
ACE
ACE イ ン タ ー コ ネ ク ト を使用
11
AXI4DP
デー タ ペ リ フ ェ ラ ル AXI イ ン タ ーフ ェ イ ス は、 C_M_AXI_DP_EXCLUSIVE_ACCESS
AXI4 プ ロ ト コ ル を 使用 (排他的ア ク セ ス のサ
ポー ト あ り )
12
FSL
拡張 AXI4-Stream 命令を使用
C_USE_EXTENDED_FSL_INSTR
13
FSLEXC
AXI4-Stream 制御ビ ッ ト 不一致に対 し 例外を生
成
C_FSL_EXCEPTION
14
MSR
msrset お よ び msrclr 命令を使用
C_USE_MSR_INSTR
15
PCMP
パ タ ーン比較お よ び CLZ 命令を使用
C_USE_PCMP_INSTR
16
AREA
低い命令 ス ループ ッ ト で エ リ ア を 最適化す る
ための イ ンプ リ メ ン テーシ ョ ン を選択
C_AREA_OPTIMIZED
17
BS
バレル シ フ タ ーを使用
C_USE_BARREL
18
DIV
除算器を使用
C_USE_DIV
19
MUL
ハー ド ウ ェ ア乗算器を使用
C_USE_HW_MUL > 0 (None)
20
FPU
FPU を使用
C_USE_FPU > 0 (None)
21
MUL64
64 ビ ッ ト ハー ド ウ ェ ア乗算器を使用
C_USE_HW_MUL = 2 (Mul64)
MicroBlaze プ ロ セ ッ サ リ フ ァ レ ン ス ガ イ ド
UG984 (v2015.1) 2015 年 4 月 15 日
UG984 (v2015.3)
(v2015.2) 2015 年 96 月 30
24 日
japan.xilinx.com
C_INTERCONNECT = 3 (ACE)
36
第 2 章 : MicroBlaze アーキテ ク チ ャ
表 2‐26 : プ ロ セ ッ サ バージ ョ ン レ ジ ス タ 2 (PVR2) (続き)
ビッ ト
名前
説明
値
22
FPU2
浮動小数点変換お よ び平方根命令を使用
C_USE_FPU = 2 (Extended)
23
IMPEXC
LMB メ モ リ の ECC 訂正可能エ ラ ーに対 し 、 曖
昧例外を許可
C_IMPRECISE_EXCEPTIONS
24
予約
25
OP0EXC
0x0 の無効なオペコ ー ド に対 し 例外を生成
C_OPCODE_0x0_ILLEGAL
26
UNEXC
ア ラ イ ン さ れて い な いデー タ ア ク セ ス に対 し
例外を生成
C_UNALIGNED_EXCEPTIONS
27
OPEXC
任意の無効なオペコ ー ド に対 し 例外を生成
C_ILL_OPCODE_EXCEPTION
28
AXIDEXC
M_AXI_D エ ラ ーに対 し 例外を生成
C_M_AXI_D_BUS_EXCEPTION
29
AXIIEXC
M_AXI_I エ ラ ーに対 し 例外を生成
C_M_AXI_I_BUS_EXCEPTION
30
DIVEXC
ゼ ロ 除算 ま た は除算オーバー フ ロ ーに対 し 例
外を生成
C_DIV_ZERO_EXCEPTION
31
FPUEXC
FPU か ら の例外を生成
C_FPU_EXCEPTION
0
表 2‐27 : プ ロ セ ッ サ バージ ョ ン レ ジ ス タ 3 (PVR3) ビッ ト
名前
説明
0
DEBUG
1
EXT_DEBU 拡張デバ ッ グ ロ ジ ッ ク を使用
G
2
予約
3:6
PCBRK
7:9
予約
10:12
RDADDR
13:15
予約
16:18
WRADDR
19
予約
20:24
FSL
25:28
予約
29:31
BTC_SIZE
デバ ッ グ ロ ジ ッ ク を使用
値
C_DEBUG_ENABLED > 0
C_DEBUG_ENABLED = 2 (Extended)
PC ブ レー ク ポ イ ン ト の数
C_NUMBER_OF_PC_BRK
読み出 し ア ド レ ス ブ レー ク ポ イ ン ト の数
C_NUMBER_OF_RD_ADDR_BRK
書 き 込みア ド レ ス ブ レー ク ポ イ ン ト の数
C_NUMBER_OF_WR_ADDR_BRK
0
AXI4-Stream リ ン ク の数
C_FSL_LINKS
分岐先キ ャ ッ シ ュ サ イ ズ
C_BRANCH_TARGET_CACHE_SIZE
MicroBlaze プ ロ セ ッ サ リ フ ァ レ ン ス ガ イ ド
UG984 (v2015.1) 2015 年 4 月 15 日
UG984
(v2015.2) 2015 年 96 月 30
(v2015.3)
24 日
japan.xilinx.com
37
第 2 章 : MicroBlaze アーキテ ク チ ャ
表 2‐28 : プ ロ セ ッ サ バージ ョ ン レ ジ ス タ 4 (PVR4) ビッ ト
名前
説明
値
0
ICU
命令キ ャ ッ シ ュ を使用
C_USE_ICACHE
1:5
ICTS
命令キ ャ ッ シ ュ タ グ サ イ ズ
C_ADDR_TAG_BITS
6
予約
7
ICW
命令キ ャ ッ シ ュ 書 き 込みを許可
C_ALLOW_ICACHE_WR
8:10
ICLL
2 を底 と す る 対数の命令キ ャ ッ シ ュ ラ イ ンの長 さ
log2(C_ICACHE_LINE_LEN)
11:15
ICBS
2 を底 と す る 対数の命令キ ャ ッ シ ュ バ イ ト サ イ ズ
log2(C_CACHE_BYTE_SIZE)
16
IAU
命令キ ャ ッ シ ュ が、 キ ャ ッ シ ュ 可能範囲内のすべ
ての メ モ リ ア ク セ ス に対 し て使用 さ れ る
C_ICACHE_ALWAYS_USED
17:18
予約
19:21
ICV
命令キ ャ ッ シ ュ ビ ク テ ィ ム
0-3 : C_ICACHE_VICTIMS = 0,2,4,8
22:23
ICS
命令キ ャ ッ シ ュ ス ト リ ーム
C_ICACHE_STREAMS
24
IFTL
命令キ ャ ッ シ ュ タ グは分散 RAM を使用
C_ICACHE_FORCE_TAG_LUTRAM
25
ICDW
命令キ ャ ッ シ ュ デー タ 幅
C_ICACHE_DATA_WIDTH > 0
26:31
予約
1
0
0
表 2‐29 : プ ロ セ ッ サ バージ ョ ン レ ジ ス タ 5 (PVR5) ビッ ト
名前
説明
値
0
DCU
デー タ キ ャ ッ シ ュ を使用
C_USE_DCACHE
1:5
DCTS
デー タ キ ャ ッ シ ュ タ グ サ イ ズ
C_DCACHE_ADDR_TAG
6
予約
7
DCW
デー タ キ ャ ッ シ ュ 書 き 込みを許可
C_ALLOW_DCACHE_WR
8:10
DCLL
2 を底 と す る 対数のデー タ キ ャ ッ シ ュ ラ イ ンの長
さ
log2(C_DCACHE_LINE_LEN)
11:15
DCBS
2 を底 と す る 対数のデー タ キ ャ ッ シ ュ バ イ ト サ
イズ
log2(C_DCACHE_BYTE_SIZE)
16
DAU
デー タ キ ャ ッ シ ュ が、 キ ャ ッ シ ュ 可能範囲内のす
べての メ モ リ ア ク セ ス に対 し て使用 さ れ る
C_DCACHE_ALWAYS_USED
17
DWB
デー タ キ ャ ッ シ ュ ポ リ シーは ラ イ ト バ ッ ク
C_DCACHE_USE_WRITEBACK
18
予約
19:21
DCV
22:23
予約
24
DFTL
デー タ キ ャ ッ シ ュ タ グは分散 RAM を使用
C_DCACHE_FORCE_TAG_LUTRAM
25
DCDW
デー タ キ ャ ッ シ ュ デー タ 幅
C_DCACHE_DATA_WIDTH > 0
1
0
デー タ キ ャ ッ シ ュ ビ ク テ ィ ム
0-3 : C_DCACHE_VICTIMS = 0,2,4,8
0
MicroBlaze プ ロ セ ッ サ リ フ ァ レ ン ス ガ イ ド
UG984 (v2015.1) 2015 年 4 月 15 日
UG984 (v2015.3)
(v2015.2) 2015 年 96 月 30
24 日
japan.xilinx.com
38
第 2 章 : MicroBlaze アーキテ ク チ ャ
表 2‐29 : プ ロ セ ッ サ バージ ョ ン レ ジ ス タ 5 (PVR5) (続き)
ビッ ト
名前
26
AXI4DC
27:31
予約
説明
値
デー タ キ ャ ッ シ ュ AXI イ ン タ ーフ ェ イ ス は、AXI4 C_M_AXI_DC_EXCLUSIVE_ACCESS
プ ロ ト コ ル を使用 (排他的ア ク セ ス のサポー ト あ
り)
0
表 2‐30 : プ ロ セ ッ サ バージ ョ ン レ ジ ス タ 6 (PVR6) ビッ ト
0:31
名前
ICBA
説明
命令キ ャ ッ シ ュ ベース ア ド レ ス
値
C_ICACHE_BASEADDR
表 2‐31 : プ ロ セ ッ サ バージ ョ ン レ ジ ス タ 7 (PVR7) ビッ ト
0:31
名前
ICHA
説明
命令キ ャ ッ シ ュ ハ イ ア ド レ ス
値
C_ICACHE_HIGHADDR
表 2‐32 : プ ロ セ ッ サ バージ ョ ン レ ジ ス タ 8 (PVR8) ビッ ト
0:31
名前
DCBA
説明
デー タ キ ャ ッ シ ュ ベース ア ド レ ス
値
C_DCACHE_BASEADDR
表 2‐33 : プ ロ セ ッ サ バージ ョ ン レ ジ ス タ 9 (PVR9) ビッ ト
0:31
名前
DCHA
説明
デー タ キ ャ ッ シ ュ ハ イ ア ド レ ス
値
C_DCACHE_HIGHADDR
表 2‐34 : プ ロ セ ッ サ バージ ョ ン レ ジ ス タ 10 (PVR10) ビッ ト
0:7
8:31
名前
ARCH
説明
タ ーゲ ッ ト アーキ テ ク チ ャ :
0xF
0x10
0x11
=
=
=
0x12
=
0x13
0x14
=
=
パ ラ メ ー タ ー C_FAMILY で定義
Virtex-7、 防衛グ レー ド Virtex-7 Q
Kintex™-7、 防衛グ レー ド Kintex-7 Q
Artix™-7、 オー ト モーテ ィ ブ Artix-7、 防
衛グ レー ド Artix-7 Q
Zynq™-7000、 オ ー ト モ ー テ ィ ブ Zynq7000
防衛グ レー ド Zynq-7000 Q
UltraScale™ Virtex
UltraScale Kintex
0
予約
MicroBlaze プ ロ セ ッ サ リ フ ァ レ ン ス ガ イ ド
UG984 (v2015.1) 2015 年 4 月 15 日
UG984 (v2015.3)
(v2015.2) 2015 年 96 月 30
24 日
値
japan.xilinx.com
39
第 2 章 : MicroBlaze アーキテ ク チ ャ
表 2‐35 : プ ロ セ ッ サ バージ ョ ン レ ジ ス タ 11 (PVR11) ビッ ト
0:1
名前
MMU
説明
値
C_USE_MMU
MMU を使用 :
0 = なし
1 = ユーザー モー ド
2 = 保護
3 = 仮想
2:4
ITLB
命令シ ャ ド ウ TLB サ イ ズ
log2(C_MMU_ITLB_SIZE)
5:7
DTLB
デー タ シ ャ ド ウ TLB サ イ ズ
log2(C_MMU_DTLB_SIZE)
8:9
TLBACC
TLB レ ジ ス タ ア ク セ ス :
C_MMU_TLB_ACCESS
0 = 最小
1 = 読み出 し
2 = 書き 込み
3 = フル
10:14
ZONES
メ モ リ 保護ゾーンの数
C_MMU_ZONES
15
PRIVINS
特権命令 :
0 = フル保護
1 = ス ト リ ーム命令を許可
C_MMU_PRIVILEGED_INSTR
16:16
予約
将来使用す る ために予約
0
17:31
RSTMSR
MSR の リ セ ッ ト 値
C_RESET_MSR
表 2‐36 : プ ロ セ ッ サ バージ ョ ン レ ジ ス タ 12 (PVR12) ビッ ト
0:31
名前
VECTORS
説明
MicroBlaze ベ ク タ ーの位置
MicroBlaze プ ロ セ ッ サ リ フ ァ レ ン ス ガ イ ド
UG984 (v2015.1) 2015 年 4 月 15 日
UG984 (v2015.3)
(v2015.2) 2015 年 96 月 30
24 日
japan.xilinx.com
値
C_BASE_VECTORS
40
第 2 章 : MicroBlaze アーキテ ク チ ャ
パイ プ ラ イ ン アーキテ ク チ ャ
MicroBlaze 命令実行はパ イ プ ラ イ ン処理 さ れてい ます。 ほ と ん ど の命令の場合、 各段が完了する のに 1 ク ロ ッ ク サ イ
ク ルかか り ます。 つま り 、 特定の命令が完了す る のに必要な ク ロ ッ ク サ イ ク ル数は、 パ イ プ ラ イ ンの段数 と 等 し く な
り 、 各サ イ ク ルで命令が 1 つ完了 し ます。 実行段で完了する のに複数の ク ロ ッ ク サ イ ク ルが必要にな る 命令 も い く つ
かあ り ます。 こ の場合は、 パ イ プ ラ イ ン を ス ト ール さ せます。
遅い メ モ リ か ら 実行す る 場合、 命令フ ェ ッ チには複数サ イ ク ルかか る こ と があ り ます。 こ の追加レ イ テ ン シは、 パ イ
プ ラ イ ンの効率に直接影響 し ます。 MicroBlaze は、 その よ う なマルチサ イ ク ル命令 メ モ リ レ イ テ ン シの影響を抑え る
命令プ リ フ ェ ッ チ バ ッ フ ァ ーを イ ンプ リ メ ン ト し ます。実行段でマルチサ イ ク ル命令に よ っ てパ イ プ ラ イ ンが ス ト ー
ル し てい る 間、 プ リ フ ェ ッ チ バ ッ フ ァ ーは順次命令を ロ ー ド し 続け ます。 パ イ プ ラ イ ンが実行を再開する と 、 命令 メ
モ リ ア ク セ ス が完了する のを待たずに、 フ ェ ッ チ段はプ リ フ ェ ッ チ バ ッ フ ァ ーか ら 直接新 し い命令を ロ ー ド し ます。
実行中に命令が変更 さ れ る 場合 (自己変更コ ー ド な ど)、 変更 さ れた命令が実行 さ れ る 前に、 古い未変更の命令が含ま
れていない よ う にす る ため、 プ リ フ ェ ッ チ バ ッ フ ァ ーを空にす る 必要があ り ます。 BRI 4 な ど、 同期分岐命令を使用
す る こ と も 可能ですが、 MBAR 命令を使用する こ と を推奨 し ます。
3 段パイ プ ラ イ ン
C_AREA_OPTIMIZED が 1 に設定 さ れてい る 場合、 ハー ド ウ ェ ア コ ス ト を最小限に抑え る ため、 パ イ プ ラ イ ンは、
フ ェ ッ チ、 デ コ ー ド 、 実行の 3 段に分け ら れます。
命令 1
サイ クル
1
サイ クル
2
サイ クル
3
フェ ッチ
デコー ド
実行
フェ ッチ
命令 2
サイ クル
4
サイ クル
5
サイ クル
6
デコ ー ド
実行
実行
実行
フェ ッチ
デコー ド
ス ト ール
ス ト ール
命令 3
サイ クル
7
実行
5 段パイ プ ラ イ ン
C_AREA_OPTIMIZED が 0 に設定 さ れてい る 場合、 パ フ ォ ーマ ン ス を最大にす る ため、 パ イ プ ラ イ ンは、 フ ェ ッ チ
(IF)、 デ コ ー ド (OF)、 実行 (EX)、 ア ク セ ス メ モ リ (MEM)、 お よ び ラ イ ト バ ッ ク (WB). の 5 段に分け ら れます。
命令 1
命令 2
サイ
クル 1
サイ
クル 2
サイ ク
ル3
サイ
クル 4
サイ
クル 5
IF
OF
EX
MEM
WB
IF
OF
EX
IF
OF
命令 3
サイ
クル 6
サイ
クル 7
サイ
クル 8
MEM
MEM
MEM
WB
EX
ス
トー
ル
ス
トー
ル
MEM
サイ
クル 9
WB
分岐
通常、 フ ェ ッ チお よ びデ コ ー ド 段の命令は (プ リ フ ェ ッ チ バ ッ フ ァ ー も )、 分岐 し てい る 分岐を実行す る と き に、 フ
ラ ッ シ ュ さ れます。 フ ラ ッ シ ュ 後、 フ ェ ッ チ パ イ プ ラ イ ン段は、 算出 さ れた分岐ア ド レ ス か ら の新 し い命令で リ ロ ー
ド さ れます。 MicroBlaze で分岐 し てい る 分岐は実行に 3 ク ロ ッ ク サ イ ク ル要 し ます。 その う ち 2 サ イ ク ルは、 パ イ プ
ラ イ ン を再度埋め る のに必要です。 こ の レ イ テ ン シ オーバーヘ ッ ド を抑え る ため、 MicroBlaze は遅延ス ロ ッ ト のあ る
分岐をサポー ト し ます。
MicroBlaze プ ロ セ ッ サ リ フ ァ レ ン ス ガ イ ド
UG984 (v2015.1) 2015 年 4 月 15 日
UG984 (v2015.3)
(v2015.2) 2015 年 96 月 30
24 日
japan.xilinx.com
41
第 2 章 : MicroBlaze アーキテ ク チ ャ
遅延ス ロ ッ ト
分岐 し てい る 遅延ス ロ ッ ト のあ る 分岐を実行す る 場合は、MicroBlaze の フ ェ ッ チ パ イ プ ラ イ ン段のみが フ ラ ッ シ ュ さ
れ、 デ コ ー ド 段の命令 (分岐遅延ス ロ ッ ト ) を完了で き る よ う にな り ます。 こ のテ ク ニ ッ ク に よ り 、 分岐ペナルテ ィ を
2 ク ロ ッ ク サ イ ク ルか ら 1 ク ロ ッ ク サ イ ク ルに低減す る こ と がで き ます。 遅延ス ロ ッ ト のあ る 分岐命令には、 命令
ニーモニ ッ ク に D が付いてい ま す。 た と えば、 BNE 命令は後に続 く 命令 (遅延 ス ロ ッ ト がない) を実行 し ませんが、
BNED は、 制御が分岐位置に送 ら れ る 前に、 次の命令を実行 し ます。
遅延 ス ロ ッ ト には、 IMM、 分岐、 ま たはブ レー ク の命令が含 ま れていてはいけ ま せん。 割 り 込みお よ び外部ハー ド
ウ ェ ア ブ レー ク は、 遅延ス ロ ッ ト の分岐が完了する ま で先送 り さ れます。
リ カバ リ 可能な例外を引 き 起 こ す可能性のあ る 命令 (ア ラ イ ン さ れていない ワ ー ド やハーフ ワ ー ド の ロ ー ド お よ びス
ト ア) は遅延ス ロ ッ ト で処理 さ れます。 遅延ス ロ ッ ト で例外が発生す る し ESR[DS] ビ ッ ト がセ ッ ト さ れ る と 、 例外ハ
ン ド ラ ーがその実行を分岐先に戻 さ なければな り ません (特殊レ ジ ス タ BTR に格納)。 ESR[DS] ビ ッ ト がセ ッ ト さ れ
てい る 場合、 レ ジ ス タ R17 は無効です (そ う でない場合は、 例外を引 き 起 こ す命令の後に続いてア ド レ ス が含まれま
す)。
分岐先キ ャ ッ シ ュ
分岐パフ ォーマ ン ス を向上 さ せ る ため、 MicroBlaze には、 分岐予測機能のあ る 分岐先キ ャ ッ シ ュ (BTC) があ り ます。
こ の BTC が イ ネーブルにな っ てい る と 、 正 し く 予測 さ れた直近の分岐ま たは戻 り 命令にはオーバーヘ ッ ド が発生 し
ません。
BTC は、 命令が初めて処理 さ れた と き 、 直近の分岐お よ び戻 り 命令の タ ーゲ ッ ト ア ド レ ス を保存 し ます。 次にその
命令が処理 さ れ る と き は、 通常、 分岐先キ ャ ッ シ ュ にそのア ド レ ス が格納 さ れていて、 その分岐が分岐す る 場合は、
命令フ ェ ッ チ プ ロ グ ラ ム カ ウ ン タ ーがその格納 さ れてい る タ ーゲ ッ ト ア ド レ ス に変わ り ます。 条件な し 分岐お よ び
戻 り 命令は常に分岐 し ますが、 条件付 き 分岐は、 分岐すべ き でない も のを分岐 さ せて し ま う のを避け る ため、 分岐予
測を使用 し ます。
メ モ リ バ リ ア (MBAR 0) ま たは同期分岐 (BRI 4) が実行 さ れ る と 、BTC は ク リ アにな り ます。た と え分岐 し ていて も 、
分岐命令のす ぐ後に メ モ リ バ リ ア ま たは同期分岐が続 く と き に も 、 BTC は ク リ アにな り ます。 間違っ て BTC を ク リ
アにす る のを避け る ため、 分岐命令のす ぐ後に メ モ リ バ リ ア ま たは同期分岐を配置 し ないで く だ さ い。
分岐予測で間違っ て予測 さ れて し ま う ケース には、 次の よ う な 3 つのケース があ り ます。
•
分岐 し てはいけないはずの条件付 き 分岐が、 実際に分岐 し てい る 。
•
分岐 し てい る べ き 条件付 き 分岐が分岐 し ていない。
•
戻 り 命令の タ ーゲ ッ ト ア ド レ ス が間違っ てい る ( こ れは コ ー ド の別の位置か ら 読み出 さ れた関数か ら 戻 る と き
に発生す る 可能性があ り ます)。
こ う し た ケース のすべては、 分岐ま たは戻 り 命令が実行段に達 し た と き に検出お よ び訂正 さ れ、 分岐予測ビ ッ ト ま た
は タ ーゲ ッ ト ア ド レ ス は、 実際の命令の動作を反映 さ せ る ため、 BTC でア ッ プデー ト さ れ ま す。 こ の訂正は、 2 ク
ロ ッ ク サ イ ク ルのペナルテ ィ にな り ます。
BTC のサ イ ズ は、 C_BRANCH_TARGET_CACHE_SIZE で選択で き ま す。 デ フ ォ ル ト の推奨設定には、 1 ブ ロ ッ ク
RAM が使用 さ れ、 こ れで 512 エン ト リ にな り ます。 64 以下のエン ト リ を選択する 場合は、 BTC の イ ンプ リ メ ン ト に
分散 RAM が使用 さ れます。 それ以外の場合はブ ロ ッ ク RAM が使用 さ れます。
BTC がブ ロ ッ ク RAM を使用 し 、 C_FAULT_TOLERANT が 1 に設定 さ れてい る 場合は、 ブ ロ ッ ク RAM はパ リ テ ィ で
保護 さ れます。 パ リ テ ィ エ ラ ーが発生 し た場合は、 分岐は予測 さ れません。 こ のケース でエ ラ ーを重ね る のを避け る
には、 同期分岐で定期的に BTC を ク リ アにす る 必要があ り ます。
分岐先キ ャ ッ シ ュ は C_USE_BRANCH_TARGET_CACHE が 1、 C_AREA_OPTIMIZED が 0 に設定 さ れてい る と き に
使用で き ます。
MicroBlaze プ ロ セ ッ サ リ フ ァ レ ン ス ガ イ ド
UG984 (v2015.1) 2015 年 4 月 15 日
UG984 (v2015.3)
(v2015.2) 2015 年 96 月 30
24 日
japan.xilinx.com
42
第 2 章 : MicroBlaze アーキテ ク チ ャ
メ モ リ アーキテ ク チ ャ
MicroBlaze は、 命令お よ びデー タ のア ク セ ス がそれぞれ別のア ド レ ス空間で行われ る ハーバー ド メ モ リ アーキ テ ク
チ ャ で イ ンプ リ メ ン ト さ れてい ます。各ア ド レ ス空間は 32 ビ ッ ト です (つま り 、命令 と デー タ メ モ リ それぞれに 4GB
ま で処理す る と い う こ と です)。命令お よ びデー タ メ モ リ の範囲は、両方を同 じ 物理 メ モ リ にマ ッ ピ ン グ し てオーバー
ラ ッ プ さ せ る こ と がで き ます。 後者は ソ フ ト ウ ェ ア デバ ッ グに便利です。
MicroBlaze の命令お よ びデー タ イ ン タ ーフ ェ イ ス はど ち ら も 、 幅はデフ ォ ル ト 32 ビ ッ ト で、 ど のエンデ ィ ア ンが設
定 さ れてい る かに よ っ て異な り ますが、 ビ ッ グ エンデ ィ ア ン、 リ ト ル エ ンデ ィ ア ン、 ビ ッ ト 反転フ ォーマ ッ ト を使
用 し ます。 MicroBlaze は、 デー タ メ モ リ へのア ク セ ス に ワー ド 、 ハーフ ワ ー ド 、 バ イ ト をサポー ト し ます。
ア ラ イ ン さ れていない例外をサポー ト す る よ う プ ロ セ ッ サが コ ン フ ィ ギ ュ レー ト さ れていない限 り 、デー タ ア ク セ ス
はア ラ イ ン さ れてい る 必要があ り ます (ワ ー ド ア ク セ ス な ら ワー ド の境界で、 ハーフ ワー ド な ら ハーフ ワー ド の境界
でア ラ イ ン さ れてい る 必要があ る )。 命令ア ク セ ス はすべて ワー ド でア ラ イ ン さ れてい る 必要があ り ます。
MicroBlaze は、 命令プ リ フ ェ ッ チ バ ッ フ ァ ーお よ び ( イ ネーブルにな っ ていれば) 命令キ ャ ッ シ ュ ス ト リ ーム を使用
し て、 パフ ォーマ ン ス を向上 さ せ る ため、 命令をプ リ フ ェ ッ チ し ます。 物理 メ モ リ の終わ り を越え て メ モ リ が命令を
プ リ フ ェ ッ チす る と 、 命令バ ス エ ラ ーやプ ロ セ ッ サ ス ト ールが発生す る 可能性が あ る た め、 そ う い う 命令 を プ リ
フ ェ ッ チす る のを防 ぐ ため、 物理 メ モ リ の終わ り に近い位置に命令を配置 し ない よ う にす る 必要があ り ます。 命令プ
リ フ ェ ッ チ バ ッ フ ァ ーには 16 バ イ ト のマージ ンが必要で、 命令キ ャ ッ シ ュ ス ト リ ーム を使用する と 、 さ ら に 2 つの
キ ャ ッ シ ュ ラ イ ン (32、 64、 ま たは 128 バ イ ト ) が追加 さ れます。
MicroBlaze は、 I/O へのデー タ ア ク セ ス と メ モ リ へのデー タ ア ク セ ス を分け ません ( メ モ リ マ ッ プ さ れた I/O を使用
)。 メ モ リ ア ク セ ス には最高 3 つの イ ン タ ーフ ェ イ ス があ り ます。
•
ロ ーカル メ モ リ バ ス (LMB)
•
ペ リ フ ェ ラ ル ア ク セ ス用の AXI4 (Advanced eXtensible Interface)
•
キ ャ ッ シ ュ ア ク セ ス用の AXI4 ま たは AXI4 コ ヒ ーレ ン シ拡張 (ACE)
LMB メ モ リ ア ド レ ス範囲は、 AXI4 の範囲 と オーバー ラ ッ プ さ せ る こ と はで き ません。
C_ENDIANNESS パ ラ メ ー タ ーは常に リ ト ル エンデ ィ ア ンに設定 さ れてい ます。
ロ ーカル メ モ リ (LMB) へのア ク セ スお よ びキ ャ ッ シ ュ 読み出 し ヒ ッ ト に対 し 、 MicroBlaze には 1 サ イ ク ル レ イ テ ン
シがあ り ます。 例外は、 C_AREA_OPTIMIZED が 1 で、 デー タ 側のア ク セ スお よ びデー タ キ ャ ッ シ ュ 読み出 し ヒ ッ
ト に 2 ク ロ ッ ク サ イ ク ル必要な場合、 ま た C_FAULT_TOLERANT が 1 に設定 さ れていて、 LMB へのバ イ ト 書 き 込
みお よ びハーフ ワー ド 書 き 込みに 2 ク ロ ッ ク サ イ ク ル必要な場合です。
デー タ キ ャ ッ シ ュ 書 き 込みレ イ テ ン シは、 C_DCACHE_USE_WRITEBACK に左右 さ れます。
C_DCACHE_USE_WRITEBACK が 1 に設定 さ れてい る 場合、 書き 込みレ イ テ ン シは通常 1 サ イ ク ルです (キ ャ ッ シ ュ
が メ モ リ にア ク セ スす る 場合はレ イ テ ン シは増え る )。 C_DCACHE_USE_WRITEBACK が 0 に設定 さ れてい る 場合、
書 き 込みレ イ テ ン シは通常 2 サ イ ク ルです ( メ モ リ コ ン ト ロ ー ラ ーのポ ス テ ッ ド 書 き 込みバ ッ フ ァ ーがいっぱいの場
合はレ イ テ ン シは増え る )。
MicroBlaze の命令お よ びデー タ のキ ャ ッ シ ュ は、4、8、 ま たは 16 ワ ー ド のキ ャ ッ シ ュ ラ イ ン を使用す る よ う コ ン フ ィ
ギ ュ レー ト で き ます。 長いキ ャ ッ シ ュ ラ イ ン を使用す る 場合、 よ り 多 く のバ イ ト がフ ェ ッ チ さ れ、 一般的には順次ア
ク セ ス パ タ ーン で ソ フ ト ウ ェ アのパフ ォーマ ン ス を向上 さ せます。 し か し 、 よ り ラ ン ダ ム な ア ク セ ス パ タ ーンの ソ
フ ト ウ ェ アだ と 、 パフ ォーマ ン ス は落ち る 可能性があ り ます。 利用可能な キ ャ ッ シ ュ ラ イ ン数が少ないため、 キ ャ ッ
シ ュ ヒ ッ ト 率が低 く な る ため、 パフ ォーマ ン ス が低下 し ます。
さ ま ざ ま な メ モ リ イ ン タ ーフ ェ イ ス の詳細については、 第 3 章 「MicroBlaze 信号 イ ン タ ーフ ェ イ ス の説明」 を参照 し
て く だ さ い。
MicroBlaze プ ロ セ ッ サ リ フ ァ レ ン ス ガ イ ド
UG984 (v2015.1) 2015 年 4 月 15 日
UG984 (v2015.3)
(v2015.2) 2015 年 96 月 30
24 日
japan.xilinx.com
43
第 2 章 : MicroBlaze アーキテ ク チ ャ
特権命令
次の MicroBlaze 命令は特権命令です。
•
GET、 GETD、 PUT、 PUTD (明示的に許可 さ れてい る 場合を除 く )
•
WIC、 WDC
•
MTS
•
MSRCLR、 MSRSET (C ビ ッ ト のみが影響を受け る 場合を除 く )
•
BRK
•
RTID、 RTBD、 RTED
•
BRKI (物理ア ド レ ス C_BASE_VECTORS + 0x8 ま たは C_BASE_VECTORS + 0x18 にジ ャ ンプす る 場合を除 く )
•
SLEEP
ユーザー モー ド で こ れ ら の命令を実行 し よ う と する と 、 特権命令例外が発生 し ます。
パ ラ メ ー タ ー C_MMU_PRIVILEGED_INSTR を 1 に設定 し てい る 場合、 命令 GET、 GETD、 PUT、 お よ び PUTD は特
権命令 と はみな さ れず、 ユーザー モー ド で実行す る こ と がで き ます。 し か し 、 そ う す る と アプ リ ケーシ ョ ンが互いに
干渉 し 合 う こ と にな っ て し ま う ので、 パフ ォーマ ン ス上の理由で ど う し て も 必要でない限 り は、 こ の設定に し ないで
く だ さ い。
ユーザー モー ド お よ び仮想モー ド か ら 離れ る には、 次の 6 つの方法があ り ます。
1.
ハー ド ウ ェ ア生成 さ れた リ セ ッ ト (デバ ッ グ リ セ ッ ト を含む)
2.
ハー ド ウ ェ ア例外
3.
マ ス ク で き ないブ レー ク ま たはハー ド ウ ェ ア ブ レー ク
4.
割 り 込み
5.
ユーザー ベ ク タ ー例外を実行す る ため 「BRALID Re,C_BASE_VECTORS + 0x8」 を実行
6.
ソ フ ト ウ ェ ア ブ レー ク 命令 BRKI
C_BASE_VECTORS + 0x18 にジ ャ ンプ
を実行 し て、 物理ア ド レ ス
C_BASE_VECTORS
+
0x8
ま たは
ハー ド ウ ェ ア生成 さ れた リ セ ッ ト を除 き 、 上記のすべての方法で、 ユーザー モー ド お よ び仮想モー ド ス テー タ ス は、
MSR UMS お よ び VMS ビ ッ ト に保存 さ れます。
ア プ リ ケ ー シ ョ ン ( ユ ー ザ ー モ ー ド ) プ ロ グ ラ ム は、 BRALID ま た は BRKI 命令 を 使用 し て、 物理 ア ド レ ス
C_BASE_VECTORS + 0x8 にジ ャ ンプ し て、 シ ス テ ム サービ ス ルーチン (特権モー ド プ ロ グ ラ ム) へ制御を移行 さ せ
ます。 こ の命令を実行す る と 、 シ ス テ ム コ ール例外が発生 し ます。 例外ハン ド ラ ーは、 ど のシ ス テ ム サービ ス ルー
チン を呼び出すか を判断 し 、 そのサービ ス を呼び出すための権限が呼び出 し を し てい る アプ リ ケーシ ョ ンにあ る か ど
う か確認 し ます。 権限が認め ら れた場合は、 例外ハン ド ラ ーは、 アプ リ ケーシ ョ ン プ ロ グ ラ ムの代わ り に、 シ ス テ ム
サービ ス ルーチンへの実際のプ ロ シージ ャ コ ールを実行 し ます。
シ ス テ ム サービ ス ルーチンの実行環境を設定す る には、 プ ロ ロ ーグ命令を実行す る 必要があ り ます。 こ れ ら の命令
は、 通常、 プ ロ シージ ャ 情報の (ア ク テ ィ ベーシ ョ ン レ コ ー ド ) の保持、 ポ イ ン タ ーのア ッ プデー ト お よ び初期化、 揮
発性レ ジ ス タ (シ ス テ ム サービ ス ルーチンが使用する レ ジ ス タ ) の保存を行 う ス ト レージ を作成 し ます。 実行可能な
モジ ュ ールを作成す る と き 、 リ ン カーでプ ロ ロ ーグ コ ー ド を挿入す る か、 ま たは、 シ ス テ ム コ ール割 り 込みハン ド
ラ ーかシ ス テ ム ラ イ ブ ラ リ ルーチンのど ち ら かに ス タ ブ コ ー ド と し てプ ロ ロ ーグ コ ー ド を含め る こ と がで き ます。
シ ス テ ム サービ ス ルーチンか ら の リ タ ーンは、前出のプ ロ セ ス の逆にな り ます。エ ピ ロ ーグ コ ー ド は、ア ク テ ィ ベー
シ ョ ン レ コ ー ド を逆に し て割 り 当て を解放 し 、 ポ イ ン タ ーを元に戻 し 、 揮発性レ ジ ス タ を元に戻 し ます。 割 り 込みハ
ン ド ラ ーは、 アプ リ ケーシ ョ ンに戻 る ために例外命令 (RTED) か ら の リ タ ーン を実行 し ます。
MicroBlaze プ ロ セ ッ サ リ フ ァ レ ン ス ガ イ ド
UG984 (v2015.1) 2015 年 4 月 15 日
UG984 (v2015.3)
(v2015.2) 2015 年 96 月 30
24 日
japan.xilinx.com
44
第 2 章 : MicroBlaze アーキテ ク チ ャ
仮想 メ モ リ 管理
MicroBlaze で実行 し てい る プ ロ グ ラ ムは、 フ ラ ッ ト な 4GB ア ド レ ス空間にア ク セ スす る ため、 実効ア ド レ ス を使用
し ます。 プ ロ セ ッ サは こ のア ド レ ス空間を、 ど の変換モー ド が指定 さ れてい る かに よ り 、 次のいずれかの方法で解釈
し ます。
•
リ アル モー ド の場合、 実効ア ド レ ス は物理 メ モ リ に直接ア ク セ スする ために使用 さ れます。
•
仮想モー ド の場合、 プ ロ セ ッ サの仮想 メ モ リ 管理ハー ド ウ ェ アに よ り 、 実効ア ド レ スは物理ア ド レ スへ変換 さ れ
ます。
仮想モー ド の場合、 シ ス テ ム ソ フ ト ウ ェ アは、 物理ア ド レ ス空間の任意の位置にプ ロ グ ラ ムお よ びデー タ を移動 さ せ
る こ と がで き ま す。 ア ク テ ィ ブなプ ロ グ ラ ムお よ びデー タ に空間が必要にな る と 、 シ ス テ ム ソ フ ト ウ ェ アが非ア ク
テ ィ ブなプ ロ グ ラ ムお よ びデー タ を物理 メ モ リ か ら 移 し ます。
こ の位置換えに よ り 、 実際にシ ス テ ムに イ ンプ リ メ ン ト さ れてい る よ り も 多 く の メ モ リ が存在 し てい る よ う にプ ロ グ
ラ ムには見え ます。 シ ス テ ムにあ る 物理 メ モ リ 量の制限内で、 プ ロ グ ラ ム を う ま く 実行す る こ と がで き る よ う にな り
ます。 ど の物理 メ モ リ ア ド レ ス がほかの ソ フ ト ウ ェ ア プ ロ セ スやハー ド ウ ェ ア デバ イ ス に割 り 当て ら れてい る か を
プ ロ グ ラ マーが知っ てお く 必要はあ り ません。 プ ロ グ ラ ムに見え てい る ア ド レ ス は、 プ ロ セ ッ サに よ り 、 適切な物理
ア ド レ ス に変換 さ れます。
仮想モー ド だ と 、 メ モ リ 保護を さ ら に制御す る こ と がで き ます。 1KB 程度の メ モ リ のブ ロ ッ ク は、 個別に不正ア ク セ
ス か ら 保護す る こ と がで き ま す。 メ モ リ の保護 と 位置換えに よ り 、 シ ス テ ム ソ フ ト ウ ェ アでマルチ タ ス ク 機能を サ
ポー ト す る こ と がで き ます。 複数のプ ロ グ ラ ムは同時実行 し てい る か、 ま たはほぼ同時に近い状態で実行 し てい る よ
う に見え ます。
MicroBlaze では、 C_USE_MMU が 3 (仮想)、 C_AREA_OPTIMIZED が 0 に設定 さ れてい る と き に、 メ モ リ 管理ユニ ッ
ト (MMU) に よ っ て、 仮想モー ド が イ ン プ リ メ ン ト さ れ ます。 MMU は、 実効ア ド レ ス を物理ア ド レ ス にマ ッ ピ ン グ
し 、 メ モ リ 保護をサポー ト し ます。 こ れ ら の機能を使用す る こ と に よ り 、 シ ス テ ム ソ フ ト ウ ェ アはデマ ン ド ページ
の仮想 メ モ リ お よ びほかの メ モ リ 管理機能を イ ンプ リ メ ン ト す る こ と がで き ます。
MicroBlaze の MMU の イ ンプ リ メ ン ト は PowerPC™ 405 をベース に し てい ます。詳細は、『PowerPC プ ロ セ ッ サ リ フ ァ
レ ン ス ガ イ ド 』 (UG011) を参照 し て く だ さ い。
MMU の機能は次の よ う に ま と め ら れます。
•
実効ア ド レ ス を物理ア ド レ ス に変換
•
ア ド レ ス変換中にページ レベルのア ク セ ス を コ ン ト ロ ール
•
ゾーン を使用 し た、 追加仮想モー ド 保護を提供
•
命令/ア ド レ ス、 デー タ /ア ド レ ス の変換お よ び保護を個別に コ ン ト ロ ール
•
1kB、 4kB、 64kB、 1MB、 4MB、 16MB の 8 つのページ サ イ ズ をサポー ト 。 ページ サ イ ズの ど の組み合わせで も
シ ス テ ム ソ フ ト ウ ェ アで使用で き ます。
•
ページ置 き 換え ス ト ラ テジ を ソ フ ト ウ ェ アで コ ン ト ロ ール
リ アル モー ド
プ ロ セ ッ サが メ モ リ を フ ェ ッ チ し 、 ロ ー ド ま たは ス ト ア命令でデー タ にア ク セ スす る と き 、 プ ロ セ ッ サは メ モ リ を参
照 し ます。 プ ロ セ ッ サで計算 さ れ る 32 ビ ッ ト の実効ア ド レ ス を使用 し て、 プ ロ グ ラ ムは メ モ リ ロ ケーシ ョ ン を参照
し ます。 リ アル モー ド が イ ネーブルにな っ てい る 場合、 物理ア ド レ ス は実効ア ド レ ス と 同 じ にな り 、 プ ロ セ ッ サはそ
れを使用 し て、 物理 メ モ リ にア ク セ ス し ます。 プ ロ セ ッ サ リ セ ッ ト の後、 プ ロ セ ッ サは リ アル モー ド で動作 し ます。
リ アル モー ド は、 MSR の VM ビ ッ ト を ク リ アに し て、 イ ネーブルにす る こ と も で き ます。
物理 メ モ リ のデー タ ア ク セ ス ( ロ ー ド お よ びス ト ア) は、 実効ア ド レ ス を使用 し て リ アル モー ド で実行 さ れます。 リ
アル モー ド では、 シ ス テ ム ソ フ ト ウ ェ アで仮想ア ド レ ス変換はで き ませんが、 C_USE_MMU > 1 (ユーザー モー ド ) お
よ び C_AREA_OPTIMIZED = 0 の と き に、 フ ル メ モ リ ア ク セ ス保護は イ ン プ リ メ ン ト さ れて使用可能にな り ま す。
MicroBlaze プ ロ セ ッ サ リ フ ァ レ ン ス ガ イ ド
UG984 (v2015.1) 2015 年 4 月 15 日
UG984 (v2015.3)
(v2015.2) 2015 年 96 月 30
24 日
japan.xilinx.com
45
第 2 章 : MicroBlaze アーキテ ク チ ャ
リ アル モー ド の メ モ リ マネージ ャ ーの イ ンプ リ メ ン テーシ ョ ンは、 仮想モー ド の も の よ り も 簡単です。 リ アル モー
ド は、 ア ク セ ス保護が必要で、 仮想ア ド レ ス変換は不要な と き 、 簡単なエンベデ ッ ド 環境での メ モ リ 管理の ソ リ ュ ー
シ ョ ン と し て適切です。
仮想モー ド
仮想モー ド では、 図 2-18 で説明 さ れてい る プ ロ セ ス を使用 し 、 プ ロ セ ッ サが実効ア ド レ ス を物理ア ド レ ス に変換 し
ます。 仮想モー ド は、 MSR の VM ビ ッ ト を セ ッ ト し て、 イ ネーブルにす る こ と がで き ます。

0
24
31
Process ID Register
PID
n
0
Effective Page Number
0
8
PID
31
32-Bit Effective Address
Offset
n+8
Effective Page Number
39
40-Bit Virtual Address
Offset
Translation Look-Aside
Buffer (TLB) Look-Up
0
n
Real Page Number
31
Offset
32-Bit Physical Address
UG011_37_021302
図 2‐18 : 仮想モー ド のア ド レ ス変換
図 2-18 にあ る 各ア ド レ ス には、 ページ番号フ ィ ール ド と オ フ セ ッ ト フ ィ ール ド があ り ます。 ページ番号は、 MMU に
よ っ て変換 さ れた ア ド レ ス部分です。 オ フ セ ッ ト は、 ページへのバ イ ト オ フ セ ッ ト で、MMU で変換 さ れてい ません。
仮想ア ド レ ス には、 プ ロ セ ス ID (PID) と 呼ばれ る 追加フ ィ ール ド があ り ます。 こ れは PID レ ジ ス タ か ら の情報です 
(プ ロ セ ス ID レ ジ ス タ の詳細は29を参照)。 PID と 実効ページ番号 (EPN) の組み合わせは、 仮想ページ番号 (VPN) と
呼ばれます。 値 n は、 表 2-37 にあ る よ う に、 ページ サ イ ズに よ っ て決め ら れます。
シ ス テ ム ソ フ ト ウ ェ アはページ変換テーブルを管理する のですが、 こ のテーブルには、 各仮想ページ を物理ページに
変換す る ために使用 さ れ る エン ト リ が含まれてい ます。 ページ変換エン ト リ で定義 さ れ る ページ サ イ ズで、 ページ番
号お よ びオ フ セ ッ ト フ ィ ール ド のサ イ ズが決ま り ます。 た と えば、 4kB のページ サ イ ズが使用 さ れ る 場合、 ページ
番号フ ィ ール ド は 20 ビ ッ ト で、 オ フ セ ッ ト フ ィ ール ド は 12 ビ ッ ト にな り ます。 こ の場合の VPN は 28 ビ ッ ト です。
その後、 最 も 頻繁に使用 さ れ る ページ変換が、 変換ル ッ ク アサ イ ド バ ッ フ ァ ー (TLB) に格納 さ れ ます。 仮想ア ド レ
ス を変換す る と き 、 MMU は、 一致す る VPN (PID お よ び EPN) をページ変換エン ト リ の中か ら 検索 し ます。 テーブル
のすべてのエ ン ト リ を検索す る のではな く 、 プ ロ セ ッ サ TLB に含ま れてい る エ ン ト リ のみを確認 し ます。 一致す る
VPN のあ る ページ変換エン ト リ が検出 さ れ る と 、 対応す る 物理ページ番号がそのエン ト リ か ら 読み出 さ れ、 オ フ セ ッ
ト と 組み合わせて 32 ビ ッ ト の物理ア ド レ ス に変換 し ます。 こ の物理ア ド レ ス はプ ロ セ ッ サが メ モ リ を参照す る と き
に使用 さ れます。
シ ス テ ム ソ フ ト ウ ェ アは、 PID を使用 し て、 プ ロ セ ッ サ上で実行 し てい る ソ フ ト ウ ェ ア プ ロ セ ス ( タ ス ク 、 サブルー
チン、 ス レ ッ ド ) を特定す る こ と がで き ます。 個々に コ ンパ イ ル さ れてい る プ ロ セ ス は、 互いにオーバー ラ ッ プす る
実効ア ド レ ス領域で動作す る 可能性があ り ます。 こ のオーバー ラ ッ プは、 マルチ タ ス ク 機能がサポー ト さ れてい る 場
MicroBlaze プ ロ セ ッ サ リ フ ァ レ ン ス ガ イ ド
UG984 (v2015.1) 2015 年 4 月 15 日
UG984 (v2015.3)
(v2015.2) 2015 年 96 月 30
24 日
japan.xilinx.com
46
第 2 章 : MicroBlaze アーキテ ク チ ャ
合は、 シ ス テ ム ソ フ ト ウ ェ アで解決す る 必要があ り ます。 PID を各プ ロ セ ス に割 り 当て る こ と で、 シ ス テ ム ソ フ ト
ウ ェ アは、 各プ ロ セ ス を仮想ア ド レ ス空間の 1 領域に移動 さ せて、 オーバー ラ ッ プ を解決す る こ と がで き ます。 仮想
ア ド レ ス空間マ ッ ピ ン グは、 各プ ロ セ ス を物理ア ド レ ス空間に個別に変換 さ せ る こ と がで き ます。
ページ変換テーブル
ページ変換テーブルは、 ソ フ ト ウ ェ ア で定義お よ び管理 さ れ る 、 ページ変換情報を含んだデー タ 構造です。 エ ンベ
デ ッ ド シ ス テ ム アプ リ ケーシ ョ ン を タ ーゲ ッ ト に し た アーキ テ ク チ ャ 上の ト レー ド オ フ と し て、 ソ フ ト ウ ェ ア管理
のページ変換が必要にな り ます。 エ ンベデ ッ ド シ ス テ ムには、 厳 し く 管理 さ れた環境 と 、 アプ リ ケーシ ョ ン ソ フ ト
ウ ェ ア を細か く 定義 し たセ ッ ト があ る こ と が多 く 、 そ う い う 環境では、 次の よ う な方法で、 各エンベデ ッ ド シ ス テ ム
用に仮想 メ モ リ 管理を最適化す る こ と がで き ます。
•
ページ変換エン ト リ をすばや く 検索で き る よ う に、 ページ テーブル検索 (テーブル ウ ォー ク と も 言われ る ) の速
度を最大限にす る ため、 ページ変換テーブルを構成す る こ と がで き ます。 最 も 一般的なプ ロ セ ッ サは、 イ ンデ ッ
ク ス テーブル (ページ テーブル サ イ ズが大 き く 、 簡単な検索方法) か、 ハ ッ シ ュ テーブル (ページ テーブル サ イ
ズが小 さ く 、 複雑な検索方法) の ど ち ら か を イ ンプ リ メ ン ト し ます。 ソ フ ト ウ ェ アでテーブルを辿 る こ と で、 特
定のエンベデ ッ ド シ ス テ ムに合わせ、 ど んな組み合わせでテーブルで も 構成で き ます。 ページ テーブル サ イ ズ
お よ びア ク セ ス時間の両方を最適化で き ます。
•
アプ リ ケーシ ョ ン モジ ュ ール、 デバ イ ス ド ラ イ バー、 シ ス テ ム サービ ス ルーチン、 お よ びデー タ に対 し 、 ペー
ジ を個別に使用す る こ と がで き ます。 個別にページ サ イ ズ を選択する こ と で、 フ ラ グ メ ン テーシ ョ ン (未使用の
メ モ リ ) を低減 し て、 シ ス テ ム ソ フ ト ウ ェ ア が効率 よ く メ モ リ を使用す る こ と がで き ま す。 た と えば、 大 き な
デー タ 構造な ら 16MB のページに、 小 さ な I/O デバ イ ス ド ラ イ バーな ら 1KB ページに割 り 当て る こ と がで き ま
す。
•
ページ変換が見つか ら ないケース を最小限に抑え る ため、 ページ置き 換え を調節する こ と がで き ます。 こ の後の
セ ク シ ョ ン で説明す る よ う に、 最 も 頻繁に使用 さ れ る ページ変換は、 変換ル ッ ク アサ イ ド バ ッ フ ァ ー (TLB) に
格納 さ れ ます。 ど の変換が TLB に格納 さ れ、 新 し い変換が必要な場合、 ど の変換が置 き 換え ら れ る か を判断す
る のは ソ フ ト ウ ェ アです。 ページ変換エ ン ト リ は常に TLB に格納 さ れた り 、 TLB か ら 移動 さ せた り と 、 転送 さ
れてい ます。 その ス ラ ッ シ ン グ を避け る ため、 置き 換え ス ト ラ テジ を設定する こ と がで き ます。 ま た、 置 き 換え
ス ト ラ テジは、 ク リ テ ィ カルなページ変換を置 き 換え ら れ る のを防ぐ ために、 設定す る こ と も で き ます。 こ れは
ページ ロ ッ キ ン グ と も 呼ばれ る プ ロ セ ス です。
統合 さ れた 64 エン ト リ の TLB は、 ソ フ ト ウ ェ アに よ り 管理 さ れ、 MMU でア ク セ ス で き る 命令お よ びデー タ のペー
ジ変換エン ト リ のサブセ ッ ト を キ ャ ッ シ ュ し ます。 シ ス テ ム メ モ リ のページ変換テーブルか ら エン ト リ を読み出 し 、
TLB にそれ を格納す る のは ソ フ ト ウ ェ アです。 次のセ ク シ ョ ン では、 統合 TLB を詳 し く 説明 し ま す。 内部的には、
C_MMU_ITLB_SIZE と C_MMU_DTLB_SIZE でそれぞれにサ イ ズ を を コ ン フ ィ ギ ュ レー ト し た命令お よ びデー タ の
シ ャ ド ウ TLB も 含まれてい ます。
こ れ ら のシ ャ ド ウ TLB は、 プ ロ セ ッ サですべて管理 さ れ ( ソ フ ト ウ ェ アには透過的)、 統合 TLB と のア ク セ ス衝突を
最小限に抑え る ために使用 さ れます。
変換ル ッ ク アサイ ド バ ッ フ ァ ー
変換ル ッ ク アサ イ ド バ ッ フ ァ ー (TLB) は、MicroBlaze が仮想モー ド で実行 し ていて、 メ モ リ 保護お よ びス ト レージ制
御が行われてい る と き のア ド レ ス変換のために、 MMU に よ っ て使用 さ れます。 TLB 内の各エン ト リ には、 仮想ペー
ジ (PID お よ び実効ページ番号) を特定 し 、 物理ページに変換 し 、 ページの保護特性を決め、 ページに関連付け ら れて
い る ス ト レージ属性を指定す る ために必要な情報が含まれてい ます。
MicroBlaze の TLB は物理的に次の 3 つの TLB と し て イ ンプ リ メ ン ト さ れてい ます。
•
統合 TLB (UTLB) : 64 個のエン ト リ が含まれていて、 擬似連想型です。 命令ページお よ びデー タ ページの変換は
ど の UTLB に も 格納で き ます。 UTLB の初期化お よ び管理は、 ソ フ ト ウ ェ アに よ っ て完全に行われます。
•
命令シ ャ ド ウ TLB (ITLB) : 命令ページ変換エン ト リ が含まれていて、 完全連想型です。 ITLB に格納 さ れ る ペー
ジ変換エン ト リ は、 UTLB か ら 最近ア ク セ ス さ れた命令ページ変換です。 ITLB は、 命令変換 と UTLB ア ッ プデー
ト 操作 と の間の衝突を最小限に抑え る のに使用 さ れます。 I TLB の初期化お よ び管理は、 ハー ド ウ ェ アに よ っ て
完全に行われ、 ソ フ ト ウ ェ アには透過的です。
MicroBlaze プ ロ セ ッ サ リ フ ァ レ ン ス ガ イ ド
UG984 (v2015.1) 2015 年 4 月 15 日
UG984 (v2015.3)
(v2015.2) 2015 年 96 月 30
24 日
japan.xilinx.com
47
第 2 章 : MicroBlaze アーキテ ク チ ャ
•
デー タ シ ャ ド ウ TLB (DTLB) : デー タ ページ変換エン ト リ が含まれていて、 完全連想型です。 DTLB に格納 さ れ
るページ変換エン ト リ は、UTLB か ら 最近ア ク セ ス さ れたデー タ ページ変換です。DTLB は、デー タ 変換 と UTLB
ア ッ プデー ト 操作 と の間の衝突を最小限に抑え る のに使用 さ れます。 DTLB の初期化お よ び管理は、 ハー ド ウ ェ
アに よ っ て完全に行われ、 ソ フ ト ウ ェ アには透過的です。
図 2-19 は TLB の変換フ ロ ーを表 し てい ます。
I サイ ド の
D サイ ド の
効ア ド レ ス
実効ア ド レ ス
変換デ ィ ス エ ー ブル
(MSR[VM]=0)
変換 イ ネー ブル
変換 イ ネー ブル
(MSR[VM]=1)
変換な し
ル ッ ク ア ッ プ実行
ル ッ ク ア ッ プ実行
ITLB ヒ ッ ト
(MSR[VM]=0)
DTLB
ITLB
変換な し
変換デ ィ ス エ ー ブル
(MSR[VM]=1)
ITLB ミ ス
DTLB ミ ス
DTLB ヒ ッ ト
UTLB
実際ア ド レ スの抽出
(ITLB か ら )
実際ア ド レ スの抽出
(DTLB か ら )
ル ッ ク ア ッ プ実行
UTLB ヒ ッ ト
UTLB ミ ス
I キャ ッ シュ
I キャ ッ シュ
ま たは D キ ャ ッ シ ュ
ア ク セ スの継続
ア ク セ スの継続
実際ア ド レ スの抽出
I サ イ ド の TLB ミ ス
(UTLB か ら )
ま たは
D サ イ ド の TLB ミ ス
例外
ア ド レスを
ITLB へ変換
ア ド レスを
DTLB へ変換
図 2‐19 : TLB ア ド レ ス変換フ ロー
MicroBlaze プ ロ セ ッ サ リ フ ァ レ ン ス ガ イ ド
UG984 (v2015.1) 2015 年 4 月 15 日
UG984 (v2015.3)
(v2015.2) 2015 年 96 月 30
24 日
japan.xilinx.com
48
第 2 章 : MicroBlaze アーキテ ク チ ャ
TLB エ ン ト リ フ ォ ーマ ッ ト
図 2-20 は TLB エン ト リ の フ ォーマ ッ ト を示 し てい ます。 各 TLB エン ト リ は 68 ビ ッ ト で、 TLBLO (デー タ エン ト リ
と も 言われ る) お よ び TLBHI ( タ グ エン ト リ と も 言われ る ) と い う 2 部か ら 構成 さ れてい ます。
TLBLO
0

RPN
22
23 24


28
29 30 31




EX WR
ZSEL
W
I
M G

22
25 26 27 28
TLBHI
0




TAG
SIZE
V
E U0
35


TID
図 2‐20 : TLB エ ン ト リ フ ォ ーマ ッ ト
TLB エン ト リ の内容は、 31 ページの表 2-20 お よ び33 ページの表 2-21 で説明 さ れてい ます。
TLB エン ト リ 内のフ ィ ール ド は次の よ う に分類 さ れてい ます。
•
仮想ページの識別 (TAG、 SIZE、 V、 TID) : ページ変換エン ト リ を特定 し ます。 変換プ ロ セ ス中に仮想ページ番号
と 比較 さ れます。
•
物理ページの識別 (RPN、 SIZE) : 物理 メ モ リ の変換 さ れたページ を特定 し ます。
•
ア ク セ ス制御 (EX、 WR、 ZSEL) : ページで許可 さ れ る ア ク セ ス タ イ プを指定 し 、 不正ア ク セ ス か ら ページ を保護
す る のに使用 さ れます。
•
ス ト レージ属性 (W、 I、 M、 G、 E、 U0) : デー タ キ ャ ッ シ ュ のキ ャ ッ シ ン グ ポ リ シー ( ラ イ ト バ ッ ク や ラ イ ト ス
ルー )、 ページがキ ャ ッ シ ュ 可能か ど う か、 バ イ ト の順序付け (エンデ ィ ア ンの設定) な ど の ス ト レージ制御属性
を指定 し ます。
表 2-37 は TLB エン ト リ の SIZE フ ィ ール ド と 、 変換 さ れたページ サ イ ズ と の関係を示 し てい ます。 ま た、 こ の表で
は、 タ グ比較に ど のア ド レ ス ビ ッ ト が関与す る か、 ど のア ド レ ス ビ ッ ト がページ オ フ セ ッ ト と し て使用 さ れ る か、
物理ページ番号の ど のビ ッ ト が物理ア ド レ ス で使用 さ れ る か、ど の よ う にページ サ イ ズに よ っ て決ま る かが説明 さ れ
てい ます。
表 2‐37 : ページ変換ビ ッ ト 範囲 (ページ サイ ズ別) SIZE
(TLBHI フ ィ ール ド )
タ グ比較
ビ ッ ト 範囲
ページ オ フ セ ッ ト
物理ページ番号
RPN ビ ッ ト (0 に
ク リ ア)
1KB
000
TAG[0:21] - Address[0:21]
Address[22:31]
RPN[0:21]
-
4KB
001
TAG[0:19] - Address[0:19]
Address[20:31]
RPN[0:19]
20:21
16KB
010
TAG[0:17] - Address[0:17]
Address[18:31]
RPN[0:17]
18:21
64KB
011
TAG[0:15] - Address[0:15]
Address[16:31]
RPN[0:15]
16:21
256 KB
100
TAG[0:13] - Address[0:13]
Address[14:31]
RPN[0:13]
14:21
1MB
101
TAG[0:11] - Address[0:11]
Address[12:31]
RPN[0:11]
12:21
4MB
110
TAG[0:9] - Address[0:9]
Address[10:31]
RPN[0:9]
10:21
16MB
111
TAG[0:7] - Address[0:7]
Address[8:31]
RPN[0:7]
8:21
ページ
サイ ズ
MicroBlaze プ ロ セ ッ サ リ フ ァ レ ン ス ガ イ ド
UG984 (v2015.1) 2015 年 4 月 15 日
UG984 (v2015.3)
(v2015.2) 2015 年 96 月 30
24 日
japan.xilinx.com
49
第 2 章 : MicroBlaze アーキテ ク チ ャ
TLB ア ク セス
MMU が仮想ア ド レ ス (PID と 実効ア ド レ ス の組み合わせ) を物理ア ド レ ス に変換す る 場合、 まず、 ページ変換エン ト
リ を検索す る ため、 該当す る シ ャ ド ウ TLB を確認 し ます。 エ ン ト リ が見つかれば、 物理 メ モ リ へア ク セ スす る ため
にそれが使用 さ れ ます。 エ ン ト リ が見つか ら な ければ、 MMU は今度は UTLB を確認 し ま す。 シ ャ ド ウ TLB ミ ス が
あ っ て UTLB にア ク セ スす る 必要があ る と 、 その都度遅延が発生 し ます。 こ の ミ ス レ イ テ ン シは 2 か ら 32 サ イ ク ル
の範囲にな り ます。DTLB と ITLB の両方が UTLB に同時にア ク セ スする 場合、DTLB のほ う が ITLB よ り も 優先 さ れ
ます。
51 ページの図 2-21は、 シ ャ ド ウ TLB の 1 つま たは UTLB のページ変換エン ト リ を確認する と き の、 MMU の論理プ
ロ セ ス を示 し てい ます。 TLB の有効エン ト リ はすべてチ ェ ッ ク さ れます。
TLB エン ト リ で次の条件がすべて満た さ れ る と 、 TLB ビ ッ ト にな り ます。
•
エン ト リ が有効であ る
•
エン ト リ の TAG フ ィ ール ド が実効ア ド レ ス EPN と 一致す る (エン ト リ の SIZE フ ィ ール ド の制御の下)
•
エン ト リ の TID が PID と 一致す る
上記の条件のいずれかが満た さ れていない と 、 TLB ミ ス にな り ます。 TLB ミ ス が発生する と 、 次の よ う な例外が発生
し ます。
TID の値が 0x00 だ と 、 TID と PID の比較が MMU で無視 さ れ、 TAG お よ び EA[EPN] のみが比較 さ れます。 TID=0x00
の TLB エン ト リ は、プ ロ セ ス に依存 し ない変換を表 し てい ます。すべてのプ ロ セ ス がグ ロ ーバルにア ク セ スす る ペー
ジには、 TID に 0x00 を割 り 当て る 必要があ り ます。 PID の値が 0x00 の場合、 ど のページに も ア ク セ ス で き る プ ロ セ
ス は特定 さ れません。 PID=0x00 の場合、 TID=0x00 の と き にのみページ変換 ヒ ッ ト が発生 し ます。 EA[EPN] と PID の
1 組み合わせに一致す る エン ト リ が複数あ る TLB を ソ フ ト ウ ェ アが ロ ー ド する こ と は可能です。 し か し 、 こ れはプ ロ
グ ラ ミ ン グ エ ラ ー と 見な さ れ、 動作が未定義にな り ます。
ヒ ッ ト が発生す る と 、 MMU は対応す る TLB エン ト リ か ら RPN フ ィ ール ド を読み出 し ます。 SIZE フ ィ ール ド の値に
よ り ますが、 こ の フ ィ ール ド の一部ま たはすべてのビ ッ ト が使用 さ れます (表 2-37 参照)。 た と えば、 SIZE フ ィ ール
ド が 256KB のページ サ イ ズ を指定す る 場合、RPN[0:13] は物理ページ番号を表 し 、物理ア ド レ ス を形成す る のに使用
さ れます。 TLB エン ト リ を初期化す る と き は、 RPN[14:21] は使用 さ れず、 ソ フ ト ウ ェ アは こ れ ら のビ ッ ト を 0 に ク リ
アにす る 必要があ り ます。 物理ア ド レ ス の残 り の部分は EA のページ オ フ セ ッ ト 部分か ら 取 ら れ ます。 ページ サ イ
ズが 256KB の場合、 実効ア ド レ ス の ビ ッ ト 14:31 と RPN[0:13] を連結 さ せて、 32 ビ ッ ト の物理ア ド レ ス は形成 さ れ
ます。
物理 メ モ リ にア ク セ スす る 前に、 MMU は TLB エ ン ト リ ア ク セ ス制御フ ィ ール ド を確認 し ます。 こ れ ら の フ ィ ール
ド は、 現在実行中のプ ロ グ ラ ムが リ ク エ ス ト さ れた メ モ リ ア ク セ ス を実行で き る か ど う か を示 し ます。
ア ク セ ス が許可 さ れた場合、MMU はページにア ク セ スする 方法を決定する ため、ス ト レージ属性フ ィ ール ド をチ ェ ッ
ク し ます。 ス ト レージ属性フ ィ ール ド は、 メ モ リ ア ク セ ス のキ ャ ッ シ ン グ ポ リ シーを指定 し ます。
TLB ア ク セス エ ラ ー
TLB ア ク セ ス エ ラ ーがあ る と 、 例外が発生 し ます。 そ う す る と 、 エ ラ ーを引 き 起 こ し た命令の実行が割 り 込まれ、 エ
ラ ーを解決す る ため、 割 り 込みハン ド ラ ーに コ ン ト ロ ールが渡 さ れます。 TLB ア ク セ ス は次の 2 つの理由か ら エ ラ ー
にな る 可能性があ り ます。
•
一致す る TLB エン ト リ が見つか ら ず、 TLB ミ ス にな る
•
一致す る TLB エン ト リ が見つか っ たが、 ス ト レージ属性ま たはゾーン保護に よ り ページへア ク セ ス で き ない
割 り 込みが発生す る と 、 プ ロ セ ッ サは、 MSR[VM] を 0 に ク リ アに し て、 リ アル モー ド にな り ます。 リ アル モー ド で
は、 MMU で実行 さ れ る すべてのア ド レ ス変換お よ び メ モ リ 保護チ ェ ッ ク がデ ィ ス エーブルにな り ます。 シ ス テ ム ソ
フ ト ウ ェ アがページ変換エ ン ト リ で UTLB を初期化 し た後、 MicroBlaze の UTLB は、 通常、 リ アル モー ド で実行 し
てい る 割 り 込みハン ド ラ ーを使用 し て管理 さ れます。
MicroBlaze プ ロ セ ッ サ リ フ ァ レ ン ス ガ イ ド
UG984 (v2015.1) 2015 年 4 月 15 日
UG984 (v2015.3)
(v2015.2) 2015 年 96 月 30
24 日
japan.xilinx.com
50
第 2 章 : MicroBlaze アーキテ ク チ ャ
図 2-21 は、 TLB エン ト リ を検索す る 一般プ ロ セ ス を示 し てい ます。
No
TLBHI[V]=1
TLB-Entry Miss
Yes
TLBHI[TID]=0x00
Yes
No
Compare
TLBHI[TID] with PID
No Match
TLB-Entry Miss
Match
Compare
TLBHI[TAG] with EA[EPN]
using TLBHI[SIZE]
No Match
TLB-Entry Miss
Match (TLB Hit)
Check Access
Not Allowed
Access Violation
Allowed
Data Reference
Instruction Fetch
Check for
Guarded Storage
Guarded
Storage Violation
Not Guarded
Read TLBLO[RPN]
using TLBHI[SIZE]
Generate Physical Address
from TLBLO[RPN] and Offset
Extract Offset from EA
using TLBHI[SIZE]
UG011_41_033101
図 2‐21 : TLB エ ン ト リ の検索プ ロ セス
次のセ ク シ ョ ンでは、 TLB ア ク セ ス エ ラ ーが原因で例外が発生す る 条件を説明 し ます。
デー タ ス ト レージ例外
仮想モー ド が イ ネーブルの場合 (MSR[VM]=1)、 次のいずれかの理由でページへの ア ク セ ス が許可 さ れない と き に、
デー タ ス ト レージ例外が発生 し ます。
•
•
ユーザー モー ド か ら
¨
ページへのア ク セ ス を妨げ る ゾーン フ ィ ール ド を TLB エン ト リ が指定 し ます (ZPR[Zn]=00)。 こ れは ロ ー ド
お よ びス ト ア命令に適用 し ます。
¨
特に指定がなければゾーン フ ィ ール ド (ZPR[Zn]‚ 11) で上書 き さ れ る 、読み出 し 専用ページ (TLBLO[WR]=0)
を TLB エン ト リ が指定 し ます。 こ れは ス ト ア命令に適用 し ます。
特権モー ド か ら
¨
特に指定がなければゾーン フ ィ ール ド (ZPR[Zn]‚ 10 お よ び ZPR[Zn]‚ 11) で上書き さ れ る 、読み出 し 専用ペー
ジ (TLBLO[WR]=0) を TLB エン ト リ が指定 し ます。 こ れは ス ト ア命令に適用 し ます。
MicroBlaze プ ロ セ ッ サ リ フ ァ レ ン ス ガ イ ド
UG984 (v2015.1) 2015 年 4 月 15 日
UG984
(v2015.2) 2015 年 96 月 30
(v2015.3)
24 日
japan.xilinx.com
51
第 2 章 : MicroBlaze アーキテ ク チ ャ
命令ス ト レージ例外
仮想モー ド が イ ネーブルの場合 (MSR[VM]=1)、次のいずれかの理由でページへのア ク セ ス が許可 さ れない と き に、命
令ス ト レージ例外が発生 し ます。
•
•
ユーザー モー ド か ら
¨
ページへのア ク セ ス を妨げ る ゾーン フ ィ ール ド を TLB エン ト リ が指定 し ます (ZPR[Zn]=00)。
¨
特に指定がなければゾーン フ ィ ール ド (ZPR[Zn]‚ 11) で上書 き さ れ る 、 実行可能でないページ
(TLBLO[EX]=0) を TLB エン ト リ が指定 し ます。
¨
TLB エン ト リ が保護 さ れた ス ト レージ ページ (TLBLO[G]=1) を指定 し ます。
特権モー ド か ら
¨
特に指定がなければゾーン フ ィ ール ド (ZPR[Zn]‚ 10 お よ び ZPR[Zn]‚ 11) で上書き さ れ る 、 実行可能でない
ページ (TLBLO[EX]=0) を TLB エン ト リ が指定 し ます。
¨
TLB エン ト リ が保護 さ れた ス ト レージ ページ (TLBLO[G]=1) を指定 し ます。
デー タ TLB ミ ス例外
仮想モー ド が イ ネーブルの場合 (MSR[VM]=1)、 有効で一致する TLB エン ト リ が、 TLB (シ ャ ド ウお よ び UTLB) で見
つか ら ない と 、 デー タ TLB ミ ス例外が発生 し ます。 任意の ロ ー ド ま たは ス ト ア命令がデー タ TLB ミ ス例外を引 き 起
こ す可能性があ り ます。
命令 TLB ミ ス例外
仮想モー ド が イ ネーブルの場合 (MSR[VM]=1)、 有効で一致する TLB エン ト リ が、 TLB (シ ャ ド ウお よ び UTLB) で見
つか ら ない と 、 命令 TLB ミ ス例外が発生 し ます。 任意の命令フ ェ ッ チで命令 TLB ミ ス例外を引 き 起 こ す可能性があ
り ます。
ア ク セス保護
不正ア ク セ ス か ら 慎重に扱 う べ き メ モ リ ロ ケーシ ョ ン を保護す る ため、 シ ス テ ム ソ フ ト ウ ェ アはア ク セ ス保護を使
用 し ます。 シ ス テ ム ソ フ ト ウ ェ アは、 ユーザー モー ド で も 特権モー ド で も 、 メ モ リ ア ク セ ス に制限を加え る こ と が
で き ます。 制限は、 読み出 し 、 書 き 込み、 お よ び命令フ ェ ッ チに設け る こ と が可能です。 仮想保護モー ド が イ ネーブ
ルにな っ てい る と 、 ア ク セ ス保護を使用で き ます。
ア ク セ ス制御は、 命令フ ェ ッ チ、 デー タ ロ ー ド 、 お よ びデー タ 格納に適用 さ れます。 仮想ページの TLB エン ト リ が、
ページに許可 さ れてい る ア ク セ ス タ イ プ を指定 し ます。 ま た、 TLB エ ン ト リ に よ っ て指定 さ れ る ア ク セ ス制御を上
書 き す る のに使用 さ れ る ゾーン保護レ ジ ス タ にあ る ゾーン保護フ ィ ール ド も 、 TLB エン ト リ が指定 し ます。
TLB ア ク セス保護制御
各 TLB エン ト リ は次の 3 タ イ プのア ク セ ス を制御 し ます。
•
プ ロ セ ス : 各プ ロ セ ス にプ ロ セ ス ID (PID) を割 り 当て る こ と に よ り 、 プ ロ セ ス を不正ア ク セ ス か ら 保護 し ます。
シ ス テ ム ソ フ ト ウ ェ アがユーザー モー ド アプ リ ケーシ ョ ン を開始す る と 、 そのアプ リ ケーシ ョ ンの PID が PID
レ ジ ス タ に読み込 ま れ ま す。 ア プ リ ケーシ ョ ン が実行す る と 、 その PID に一致す る 変換ル ッ ク ア サ イ ド バ ッ
フ ァ ー ハ イ (TLBHI) の TID フ ィ ール ド のあ る TLB エン ト リ のみを使用 し て、 メ モ リ ア ド レ ス を変換 し ます。 こ
れに よ り 、 シ ス テ ム ソ フ ト ウ ェ アが、 仮想 メ モ リ の特定エ リ アにアプ リ ケーシ ョ ンのア ク セ ス を制限す る こ と が
で き ます。 
TID=0x00 の TLB エン ト リ は、 プ ロ セ ス に依存 し ない変換を表 し てい ます。 すべてのプ ロ セ ス がグ ロ ーバルにア
ク セ スす る ページには、 TID に 0x00 を割 り 当て る 必要があ り ます。
•
実行 : 実行可能に指定 さ れてい る 仮想ページ (TLBLO[EX]=1) か ら 命令が フ ェ ッ チ さ れ る 場合のみ、プ ロ セ ッ サは
命令を実行 し ます。 TLBLO[EX] を 0 に ク リ アにす る と 、 ページか ら フ ェ ッ チ さ れた命令は実行 さ れな く な り 、 命
令ス ト レージ割 り 込み (ISI) は発生 し ません。 ISI は命令が フ ェ ッ チ さ れた と き には発生 し ませんが、 命令が実行
MicroBlaze プ ロ セ ッ サ リ フ ァ レ ン ス ガ イ ド
UG984 (v2015.1) 2015 年 4 月 15 日
UG984 (v2015.3)
(v2015.2) 2015 年 96 月 30
24 日
japan.xilinx.com
52
第 2 章 : MicroBlaze アーキテ ク チ ャ
さ れた と き に発生 し ます。 こ れに よ り 、 後で破棄 さ れ る (実行 さ れ る のではな く ) 投機的に フ ェ ッ チ さ れた命令が
ISI を引 き 起 こ すのを防ぐ こ と がで き ます。
ゾーン保護レ ジ ス タ は実行保護を上書 き す る こ と がで き ます。
•
読み出 し /書 き 込み : デー タ は書 き 込み可能に指定 さ れてい る 仮想ページ (TLBLO[WR]=1) にのみ書 き 込まれま
す。 TLBLO[WR] を 0 に ク リ アにす る と 、 ページは読み出 し 専用にな り ます。 読み出 し 専用ページに書 き 込みを
実行 し よ う と す る と 、 デー タ ス ト レージ割 り 込み (DSI) が発生 し ます。 
ゾーン保護レ ジ ス タ は書 き 込み保護を上書 き す る こ と がで き ます。
TLB エン ト リ を使用 し て、 プ ロ グ ラ ムに よ る ページの読み出 し を防ぐ こ と はで き ません。 仮想モー ド では、 ゾーン保
護を使用 し て、 ページが読み出 さ れない よ う に し ます。 まず、 ア ク セ ス で き ないゾーン を定義 し (ZPR[Zn] = 00)、 そ
れを使用 し て TLB エン ト リ ア ク セ ス保護を上書き し ます。 ユーザー モー ド で実行 し てい る プ ロ グ ラ ムのみをページ
を読み出 さ ない よ う にす る こ と がで き ます。 特権モー ド のプ ロ グ ラ ムには常にページへの読み出 し ア ク セ ス があ り ま
す。
ゾーン保護
ゾーン保護は、 TLB エン ト リ に指定 さ れてい る ア ク セ ス保護を上書き する のに使用 さ れます。 ゾーンは、 共通のア ク
セ ス保護が設定 さ れてい る 仮想ページ を任意に ま と めた も のです。 ゾーンには、 いろいろ なページ サ イ ズ を組み合わ
せて指定 し 、 任意ページ数含め る こ と がで き ます。 ゾーンには、 近接す る ページ を含め る 必要はあ り ません。
ゾーン保護レ ジ ス タ (ZPR) は 32 ビ ッ ト の レ ジ ス タ で、 16 個あ る ゾーンのそれぞれに適用 さ れ る 保護上書 き タ イ プ を
指定す る のに使用 さ れ ま す。 ゾーン の保護上書 き は、 2 ビ ッ ト フ ィ ール ド と し て ZPR にエ ン コ ー ド さ れ ます。 TLB
エン ト リ の 4 ビ ッ ト ゾーン選択フ ィ ール ド (TLBLO[ZSEL]) は、 ZPR (Z0–Z15) の 16 個あ る ゾーン フ ィ ール ド の 1 つ
を選択 し ます。 た と えば、 ゾーン Z5 は、 ZSEL = 0101 の と き に選択 さ れます。
ZPR の 1 ゾーン を変更す る と 、 そのゾーンのすべてのページに保護上書 き が適用 さ れます。 ZPR を使用 し ないで、 保
護を変更す る 場合は、 そのゾーン内の各ページ変換エン ト リ を個別に変更す る 必要があ り ます。
イ ンプ リ メ ン ト さ れていないゾーン (C_MMU_ZONES < 16) は、 ゾーン フ ィ ール ド が 11 個含まれてい る も の と し て処
理 さ れます。
UTLB 管理
UTLB は、 プ ロ セ ッ サの MMU と メ モ リ 管理 ソ フ ト ウ ェ ア と の イ ン タ ーフ ェ イ ス の役割を果た し ます。 シ ス テ ム ソ フ
ト ウ ェ アが UTLB を管理 し 、 仮想ア ド レ ス を物理ア ド レ ス に変換す る 方法を MMU に伝え ま す。 変換で き なか っ た
り 、 ア ク セ ス違反が原因で問題が発生す る と 、 MMU は、 例外を使用 し てシ ス テ ム ソ フ ト ウ ェ アに問題が起 き た こ と
を伝え ます。 MMU が メ モ リ 変換を継続実行で き る よ う に、 こ れ ら の問題を修正する ための割 り 込みハン ド ラ ーを提
供す る のはシ ス テ ム ソ フ ト ウ ェ アの役目です。
ソ フ ト ウ ェ アは、 MFS お よ び MTS 命令を使用 し て、 UTLB エン ト リ を それぞれ読み出 し 、 あ る いは書 き 込み し ます。
こ れ ら の命令は、 UTLB の 64 個のエ ン ト リ の 1 つに対応す る 、 TLBX レ ジ ス タ イ ンデ ッ ク ス (0 か ら 63 ま で付番 さ
れてい る ) を使用 し ます。 タ グ と デー タ の部分は別々に読み出 さ れ、 ま た書 き 込まれ る ため、 ソ フ ト ウ ェ アは、 エン
ト リ へ完全にア ク セ スす る のに、 MFS 命令を 2 つ、 ま たは MTS 命令を 2 つ実行する 必要があ り ます。 TLBSX レ ジ ス
タ を使用 し て特定の変換を見つけ出すため、UTLB が検索 さ れます。TLBSX は実効ア ド レ ス を使用 し て変換を見つけ
出 し 、 対応す る UTLB イ ンデ ッ ク ス を TLBX レ ジ ス タ に ロ ー ド し ます。
TLB エ ン ト リ の タ グ部分の有効ビ ッ ト (TLBHI[V]) を ク リ アにす る MTS 命令を使用 し て、 個々の UTLB エ ン ト リ を
無効化 し ます。
C_FAULT_TOLERANT が 1 に設定 さ れてい る 場合は、 UTLB のブ ロ ッ ク RAM はパ リ テ ィ に よ り 保護 さ れます。 パ リ
テ ィ エ ラ ーが発生 し た場合は、 TLB ミ ス例外が発生 し ます。 こ のケース でエ ラ ーが累積する のを避け る ため、 UTLB
の各エン ト リ は定期的に無効化にす る 必要があ り ます。
MicroBlaze プ ロ セ ッ サ リ フ ァ レ ン ス ガ イ ド
UG984 (v2015.1) 2015 年 4 月 15 日
UG984
(v2015.2) 2015 年 96 月 30
(v2015.3)
24 日
japan.xilinx.com
53
第 2 章 : MicroBlaze アーキテ ク チ ャ
ページ ア ク セスおよびページ変更の記録
仮想 メ モ リ の ソ フ ト ウ ェ ア管理にはい く つか問題があ り ます。
•
仮想 メ モ リ 環境では、 ソ フ ト ウ ェ アお よ びデー タ が使用する メ モ リ 量が、 物理的に利用可能な メ モ リ 容量を超え
て し ま う こ と が よ く あ り ます。 そ こ で、 ソ フ ト ウ ェ アやデー タ ページが使用 さ れていない場合は、 ハー ド ド ラ
イ ブな ど、 外部物理 メ モ リ にその一部を格納 し てお く 必要があ り ます。 理想的には、 頻繁に使用 さ れ る ページ を
物理 メ モ リ に残 し 、 あ ま り 使用 さ れないページ を ど こ か別の場所に格納 し てお き ます。
•
物理 メ モ リ のページ を、 新 し いページ を読み込むために ど こ かに移動 さ せ る 場合は、 移動 さ せる (古い) ページが
変更 さ れていないか ど う か知っ てお く こ と が重要です。 変更 さ れてい る 場合は、 新 し いページ を読み込む前に、
古いページ を保存 し てお く 必要が あ り ま す。 古いページが変更 さ れていない場合は、 それ を保存せずに新 し い
ページ を読み込む こ と がで き ます。
•
UTLB に格納 さ れ る ページ変換の数は限 ら れてい ます。 こ こ に格納で き ない変換はページ変換テーブルに格納す
る 必要があ り ます。 変換が UTLB にない場合 ( ミ ス な ど の理由で)、 シ ス テ ム ソ フ ト ウ ェ アは、 ど の UTLB エン
ト リ を破棄す る か決めて、 その変換が見つか る よ う に別の変換を読み込む必要があ り ます。 その場合は、 頻繁に
使用 さ れ る 変換ではな く 、 あ ま り 使用 さ れない変換を別の場所に移動 さ せ る こ と が望ま し く な り ます。
上記の問題を効率 よ く 解決す る には、 ページ ア ク セ スお よ びページ変換を記録 し てお く 必要があ り ます。 MicroBlaze
の場合、 ハー ド ウ ェ アではページ ア ク セ ス と ページ変更を記録 し ません。 代わ り に、 シ ス テ ム ソ フ ト ウ ェ アが TLB
ミ ス例外 と デー タ ス ト レージ例外を使用 し て、 こ の情報を収集 し ます。 収集 さ れた情報は、 ページ変換テーブルに関
連付け ら れてい る デー タ 構造に格納で き ます。
ページ ア ク セ ス情報は、 ど のページ を物理 メ モ リ に置いてお く か、 物理 メ モ リ 空間が必要にな っ た と き に ど のページ
を移動 さ せ る か を決め る ために使用 さ れます。 シ ス テ ム ソ フ ト ウ ェ アは、 TLB エン ト リ の有効ビ ッ ト (TLBHI[V]) を
使用 し て、 ページ ア ク セ ス を監視 し ます。 こ の場合、 ページにア ク セ ス がない こ と を示すため、 ページ変換を無効に
初期化す る 必要があ り ます (TLBHI[V]=0)。 最初にページにア ク セ ス し よ う と する と 、 TLB ミ ス例外が発生 し ますが、
こ れは、 UTLB エン ト リ が無効にな っ てい る か、 ま たはページ変換が UTLB にないか ら です。 UTLB ミ ス ハン ド ラ ー
は、 有効な変換 (TLBHI[V]=1) で UTLB を ア ッ プデー ト し ます。 セ ッ ト さ れた有効ビ ッ ト は、 ページお よ びその変換
がア ク セ ス さ れた こ と を記録 し ます。 ま た、 TLB ミ ス ハン ド ラ ー も 、 ページ変換エ ン ト リ に関連付け ら れてい る 別
のデー タ 構造に こ の情報を記録で き ます。
ページ変更情報は、 古いページ を新 し いページで上書 き で き る か ど う か、 ま たは古いページ を まずハー ド デ ィ ス ク に
格納す る 必要があ る か ど う か を示すために使用 さ れ ます。 シ ス テ ム ソ フ ト ウ ェ アは、 TLB エ ン ト リ の書 き 込み保護
ビ ッ ト (TLBLO[WR]) を使用 し て、 ページ変更を監視 し ます。 こ の場合、 ページが変更 さ れていない こ と を示すため、
ページ変換を読み出 し 専用に初期化す る 必要があ り ます (TLBLO[WR]=0)。 ページに既にア ク セ ス があ り 、 上記の よ
う に有効 と 指定 さ れてい る と 仮定 し て、 最初にページにデー タ を書 き 込 も う と す る と 、 デー タ ス ト レージ例外が発生
し ます。 ソ フ ト ウ ェ アにページへの書 き 込み権限があ る 場合、 デー タ ス ト レージ ハン ド ラ ーは、 そのページ を書 き
込み可能に設定 し (TLBLO[WR]=1)、 戻 り ます。 セ ッ ト さ れた書 き 込み保護ビ ッ ト は、 ページが変更 さ れた記録にな
り ます。 ま た、 デー タ ス ト レージ ハン ド ラ ー も 、 ページ変換エン ト リ に関連付け ら れてい る 別のデー タ 構造に こ の
情報を記録で き ます。
仮想モー ド に最初に入っ た と き 、 新 し いプ ロ セ ス を開始 し た と き に、 ページ変更を記録 し てお く と 便利です。
MicroBlaze プ ロ セ ッ サ リ フ ァ レ ン ス ガ イ ド
UG984 (v2015.1) 2015 年 4 月 15 日
UG984 (v2015.3)
(v2015.2) 2015 年 96 月 30
24 日
japan.xilinx.com
54
第 2 章 : MicroBlaze アーキテ ク チ ャ
リ セ ッ ト 、 割 り 込み、 例外、 およびブ レー ク
MicroBlaze は、 リ セ ッ ト 、 割 り 込み、 ユーザー例外、 ブ レー ク 、 お よ びハー ド ウ ェ ア例外をサポー ト し ます。 次のセ
ク シ ョ ンでは、 こ れ ら の イ ベン ト それぞれに関連付け ら れてい る 実行フ ロ ーを説明 し ます。
こ れ ら の イ ベン ト の優先順位は高い も のか ら 次の よ う にな っ てい ます。
1.
2.
3.
4.
5.
6.
リ セッ ト
ハー ド ウ ェ ア例外
マ ス ク 可能でないブ レー ク
ブ レー ク
割 り 込み
ユーザー ベ ク タ ー (例外)
表 2-38 は、 関連付け ら れてい る ベ ク タ ーの メ モ リ ア ド レ ス ロ ケーシ ョ ンお よ び戻 り ア ド レ ス のハー ド ウ ェ アの レ ジ
ス タ フ ァ イ ル ロ ケーシ ョ ン を定義 し てい ます。 各ベ ク タ ーはア ド レ ス を 2 つ割 り 当てて、 フル ア ド レ ス範囲での分
岐を可能に し ます (IMM の後に BRAI 命令を続け る 必要があ り ます)。 通常、 ベ ク タ ーはア ド レ ス 0x00000000 で始ま
り ますが、 パ ラ メ ー タ ー C_BASE_VECTORS を使用 し て、 ベ ク タ ーを メ モ リ の任意の位置に移動 さ せ る こ と がで き
ます。
0x28 か ら 0x4F ま では、 今後の ソ フ ト ウ ェ ア サポー ト のため、 ザ イ リ ン ク ス に よ っ て予約 さ れてい ます。 ユーザー ア
プ リ ケーシ ョ ンに こ の範囲内のア ド レ ス を割 り 当て る と 、 今後の SDK ソ フ ト ウ ェ ア サポー ト で競合が起 き る 可能性
が高 く な り ます。
表 2‐38 : ベ ク タ ーおよび戻 り ア ド レ ス レ ジ ス タ フ ァ イルのロ ケーシ ョ ン
ベ ク タ ー ア ド レ ス
レ ジ ス タ フ ァ イル
戻り ア ド レス
リ セッ ト
C_BASE_VECTORS + 0x00000000 - C_BASE_VECTORS +
0x00000004
-
ユーザー ベ ク タ ー (例外)
C_BASE_VECTORS + 0x00000008 - C_BASE_VECTORS +
0x0000000C
Rx
割 り 込み1
C_BASE_VECTORS + 0x00000010 - C_BASE_VECTORS +
0x00000014
R14
C_BASE_VECTORS + 0x00000018 - C_BASE_VECTORS +
0x0000001C
R16
ハー ド ウ ェ ア例外
C_BASE_VECTORS + 0x00000020 - C_BASE_VECTORS +
0x00000024
R17 ま たは BTR
今後の サ ポー ト の た め ザ イ リ ン
ク ス に よ り 予約
C_BASE_VECTORS + 0x00000028 - C_BASE_VECTORS +
0x0000004F
-
イ ベン ト
ブ レー ク : マ ス ク 可能でない
ハー ド ウ ェ ア
ブ レー ク : ハー ド ウ ェ ア
ブ レー ク : ソ フ ト ウ ェ ア
1. 低レ イ テ ン シ割 り 込みモー ド の場合、 ベ ク タ ー ア ド レ ス は割 り 込み コ ン ト ロ ー ラ ーに よ り 提供 さ れます。
セマ フ ォ や ス ピ ン ロ ッ ク な ど、 相互排他機能を イ ン プ リ メ ン ト す る ため LWX と SWX 命令 と 一緒にす る と 、 こ れ ら
の イ ベン ト はすべて予約ビ ッ ト を ク リ アに し ます。
リセッ ト
Reset ま たは Debug_Rst (1) が発生す る と 、 MicroBlaze はパ イ プ ラ イ ン を フ ラ ッ シ ュ し 、 リ セ ッ ト ベ ク タ ー (ア ド
レ ス 0x0) か ら 命令を フ ェ ッ チ し 始め ます。両方の外部 リ セ ッ ト 信号がア ク テ ィ ブ High で、最低 16 サ イ ク ル間アサー
ト す る 必要があ り ます。
MicroBlaze プ ロ セ ッ サ リ フ ァ レ ン ス ガ イ ド
UG984 (v2015.1) 2015 年 4 月 15 日
UG984
(v2015.2) 2015 年 96 月 30
(v2015.3)
24 日
japan.xilinx.com
55
第 2 章 : MicroBlaze アーキテ ク チ ャ
等価擬似 コ ー ド
PC  C_BASE_VECTORS + 0x00000000
MSR  C_RESET_MSR (第 3 章の 「MicroBlaze コ アの コ ン フ ィ ギ ュ レーシ ョ ン」 を参照)
EAR  0; ESR  0; FSR  0
PID  0; ZPR  0; TLBX  0
Reservation  0
ハー ド ウ ェ ア例外
無効の命令、 命令お よ びデー タ バ ス エ ラ ー、 ア ラ イ ン さ れていないア ク セ ス と いっ た内部エ ラ ー コ ンデ ィ シ ョ ン を
捕捉す る よ う 、 MicroBlaze を コ ン フ ィ ギ ュ レー ト する こ と がで き ます。 除算例外は、 プ ロ セ ッ サがハー ド ウ ェ ア除算
器で コ ン フ ィ ギ ュ レー ト さ れてい る (C_USE_DIV=1) 場合にのみ、 イ ネーブルにで き ます。 ハー ド ウ ェ ア浮動小数点
ユニ ッ ト で コ ン フ ィ ギ ュ レー ト さ れてい る (C_USE_FPU>0) 場合は、 ア ン ダーフ ロ ー、 オーバーフ ロ ー、 浮動小数点
のゼ ロ 除算、 無効操作、 非正規化オペ ラ ン ド エ ラ ー と い っ た浮動小数点の例外 も 捕捉で き ます。
ハー ド ウ ェ アの メ モ リ 管理ユニ ッ ト で コ ン フ ィ ギ ュ レー ト さ れてい る 場合は、 無効な命令例外、 デー タ ス ト レージ例
外、 命令ス ト レージ例外、 デー タ TLB ミ ス例外、 例外 TLB ミ ス例外 と いっ た メ モ リ 管理の例外 も 捕捉で き ます。
ハー ド ウ ェ ア例外が起 き る と 、 MicroBlaze はパ イ プ ラ イ ン を フ ラ ッ シ ュ し 、 ハー ド ウ ェ ア例外ベ ク タ ー (ア ド レ ス
C_BASE_VECTORS + 0x20) に分岐 し ます。 例外サ イ ク ルの実行ス テージの命令は実行 さ れません。
ま た、 例外は次の方法で汎用レ ジ ス タ R17 を ア ッ プデー ト し ます。
•
MMU 例外の場合 (デー タ ス ト レージ例外、 命令ス ト レージ例外、 デー タ TLB ミ ス例外、 命令 TLB ミ ス例外)、
リ タ ーン にな る と 例外を発生 さ せ る 命令を再実行す る ために レ ジ ス タ R17 に適切なプ ロ グ ラ ム カ ウ ン タ ー値が
ロ ー ド さ れ ます。 その前に IMM 命令があ る 場合は、 その命令に戻 る よ う 値が調節 さ れ ます。 例外が分岐遅延ス
ロ ッ ト の命令に よ っ て引 き 起 こ さ れ る 場合、 その分岐命令に戻 る よ う に値が調節 さ れます (その前に IMM 命令が
あ る 場合はそのための調節 も 含めて)。
•
その他の例外の場合は、 例外が分岐遅延ス ロ ッ ト の命令に よ っ て引き 起 こ さ れていない限 り 、 後に続 く 命令のプ
ロ グ ラ ム カ ウ ン タ ー値で、 レ ジ ス タ R17 は ロ ー ド さ れ ます。 例外が分岐遅延ス ロ ッ ト の命令に よ っ て引 き 起 こ
さ れてい る 場合は、 ESR[DS] ビ ッ ト がセ ッ ト さ れ ます。 こ の場合、 例外ハン ド ラ ーは BTR に格納 さ れてい る 分
岐先ア ド レ ス か ら 実行を再開す る 必要があ り ます。
MSR の EE お よ び EIP ビ ッ ト は、 RTED 命令を実行する と き に自動的に戻 さ れます。
MSR の VM お よ び UM ビ ッ ト は、 RTED、 RTBD、 お よ び RTID 命令を実行す る と き に、 自動的に VMS お よ び UMS
か ら 戻 さ れます。
例外の優先順位
複数の例外が同時に発生す る 場合は、 優先順位の高い も のか ら 低い も のへ と 、 次の順序で処理 さ れます。
•
命令バ ス例外
•
命令 TLB ミ ス例外
•
命令ス ト レージ例外
•
無効なオペ コ ー ド 例外
•
特権命令例外ま たは ス タ ッ ク 保護違反例外
•
デー タ TLB ミ ス例外
•
デー タ ス ト レージ例外
•
ア ラ イ ン さ れていない例外
1. リ セ ッ ト 入力は、 MDM を介 し てデバ ッ ガーで制御 さ れます。
MicroBlaze プ ロ セ ッ サ リ フ ァ レ ン ス ガ イ ド
UG984 (v2015.1) 2015 年 4 月 15 日
UG984
(v2015.2) 2015 年 96 月 30
(v2015.3)
24 日
japan.xilinx.com
56
第 2 章 : MicroBlaze アーキテ ク チ ャ
•
デー タ バ ス例外
•
除算例外
•
FPU 例外
•
ス ト リ ーム例外
例外の原因
•
ス ト リ ーム例外
制御ビ ッ ト が一致 し ていない と き に、 e ビ ッ ト が 1 にセ ッ ト さ れてい る get ま たは getd を実行す る と 、 AXI4Stream 例外が発生 し ます。
•
命令バ ス例外
メ モ リ か ら デー タ を読み出す と き のエ ラ ーに よ り 、 命令バ ス例外が発生 し ます。
¨
¨
¨
•
命令ペ リ フ ェ ラ ル AXI4 イ ン タ ーフ ェ イ ス (M_AXI_IP) は、 M_AXI_IP_RRESP でのエ ラ ー応答が原因で発
生 し ます。
命令キ ャ ッ シ ュ ペ リ フ ェ ラ ル AXI4 イ ン タ ーフ ェ イ ス (M_AXI_IC) は、 M_AXI_IC_RRESP でのエ ラ ー応答
が原因で発生 し ます。 こ の例外は、 C_ICACHE_ALWAYS_USED が 1 に設定 さ れていて、 キ ャ ッ シ ュ がオ フ
にな っ てい る と き 、ま たは MMU 抑止キ ャ ッ シ ン グ ビ ッ ト がア ド レ ス に対 し て設定 さ れてい る 場合にのみ発
生 し ます。 それ以外のケース では応答は無視 さ れます。
命令側の ロ ーカル メ モ リ (ILMB) は、 IUE 信号に示 さ れてい る よ う に、 LMB メ モ リ で訂正不可能なエ ラ ー
が発生 し た と き 、 ま たは ICE 信号に示 さ れてい る よ う に、 C_ECC_USE_CE_EXCEPTION が 1 に設定 さ れ
ていて、 LMB メ モ リ で訂正可能なエ ラ ーが発生 し た と き にのみ、 命令バ ス例外を引き 起 こ し ます。
無効なオペ コ ー ド 例外
無効の メ ジ ャ ー オペ コ ー ド で命令を実行する と (命令のビ ッ ト 0 か ら 5 ま で)、無効なオペ コ ー ド 例外が発生 し ま
す。 命令の ビ ッ ト 6 か ら 31 はチ ェ ッ ク さ れ ません。 オプシ ョ ンのプ ロ セ ッ サ命令が イ ネーブルにな っ ていない
場合は、 無効な命令 と し て検出 さ れ ま す。 ま た、 オプシ ョ ン機能 C_OPCODE_0x0_ILLEGAL が イ ネーブルに
な っ てい る 場合、 命令が 0x00000000 に等 し い と 、 無効なオペ コ ー ド 例外が発生 し ます。
•
デー タ バ ス例外
メ モ リ か ら デー タ を読み出す と き 、 ま たはデー タ を メ モ リ に書 き 込む と き のエ ラ ーに よ り 、 デー タ バ ス例外が発
生 し ます。
¨
デー タ ペ リ フ ェ ラ ル AXI4 イ ン タ ーフ ェ イ ス (M_AXI_DP) は、 M_AXI_DP_RRESP ま たは
M_AXI_DP_BRESP でのエ ラ ー応答が原因で発生 し ます。
¨
デー タ キ ャ ッ シ ュ AXI4 イ ン タ ーフ ェ イ ス (M_AXI_DC) 例外は次の も のが原因で発生 し ます。
-
M_AXI_DC_RRESP ま たは M_AXI_DC_BRESP のエ ラ ー応答
-
LWX を使用 し た排他的ア ク セ ス の場合は、 M_AXI_DC_RRESP の OKAY 応答
こ の例外は、C_DCACHE_ALWAYS_USED が 1 に設定 さ れていて、キ ャ ッ シ ュ がオ フ にな っ てい る と き 、LWX
ま たは SWX がを使用 し て排他的ア ク セ ス が行われてい る と き 、 ま たは MMU 抑止キ ャ ッ シ ン グ ビ ッ ト がア
ド レ ス に対 し てセ ッ ト さ れてい る 場合にのみ発生 し ます。 それ以外のケース では応答は無視 さ れます。
¨
•
デー タ 側の ロ ーカル メ モ リ (DLMB) は、 DUE 信号に示 さ れてい る よ う に、 LMB メ モ リ で訂正不可能なエ
ラ ーが発生 し た と き 、 ま たは DCE 信号に示 さ れてい る よ う に、 C_ECC_USE_CE_EXCEPTION が 1 に設定
さ れていて、 LMB メ モ リ で訂正可能なエ ラ ーが発生 し た と き にのみ、 デー タ バ ス 例外を引 き 起 こ し ま す。
すべての読み出 し ア ク セ ス、 バ イ ト お よ びハーフバ イ ト の書き 込みア ク セ ス に対 し 、 エ ラ ーが発生す る 可能
性があ り ます。
ア ラ イ ン さ れていない例外
デー タ バ スへのア ド レ ス にビ ッ ト 30 ま たは 31 が設定 さ れてい る ワー ド ア ク セ ス、 ま たはビ ッ ト 31 が設定 さ れ
てい る ハーフ ワー ド ア ク セ ス に よ っ て、 ア ラ イ ン さ れていない例外が発生 し ます。
MicroBlaze プ ロ セ ッ サ リ フ ァ レ ン ス ガ イ ド
UG984 (v2015.1) 2015 年 4 月 15 日
UG984 (v2015.3)
(v2015.2) 2015 年 96 月 30
24 日
japan.xilinx.com
57
第 2 章 : MicroBlaze アーキテ ク チ ャ
•
除算例外
除数が 0 の整数除算 (idiv ま たは idivu) に よ っ て、 ま たはオーバーフ ロ ーが発生する 符号付き 整数除算 (idiv) 
(-2147483648 / -1) に よ っ て、 除算例外が発生 し ます。
•
FPU 例外
ア ン ダーフ ロ ー、 オーバーフ ロ ー、 ゼ ロ 除算、 無効な操作、 ま たは浮動小数点の命令で起 き る 非正規オペ ラ ン ド
に よ っ て、 FPU 例外は発生 し ます。
•
¨
結果が非正規化数の場合ア ン ダーフ ロ ーが発生 し ます。
¨
結果が非数の場合 (NaN) オーバーフ ロ ーが発生 し ます。
¨
rB が無限大でない と き に、 fdiv の rA オペ ラ ン ド がゼ ロ にな っ てい る と 、 ゼ ロ 除算例外が発生 し ます。
¨
NaN オペ ラ ン ド を使用す る か、 ま たは無効の無限大やゼ ロ オペ ラ ン ド の組み合わせに よ っ て、 無効な操作
が発生 し ます。
特権命令例外
ユーザー モー ド で特権命令を実行 し よ う と する と 、 特権命令例外が発生 し ます。
•
ス タ ッ ク 保護違反例外
特殊な ス タ ッ ク ロ ウ お よ び ス タ ッ ク ハ イ の レ ジ ス タ で定義 さ れてい る ス タ ッ ク 境界の外側にあ る ア ド レ ス で、
rA に ス タ ッ ク ポ イ ン タ ー (レ ジ ス タ R1) を使用 し た ロ ー ド ま たは ス ト ア命令を実行す る と 、ス タ ッ ク 保護違反例
外が発生 し 、 ス タ ッ ク オーバーフ ロ ーま たは ス タ ッ ク ア ン ダーフ ロ ーが発生 し ます。
•
デー タ ス ト レージ例外
メ モ リ 保護違反にな る メ モ リ のデー タ にア ク セ ス し よ う と す る と 、 デー タ ス ト レージ例外が発生 し ます。
•
命令ス ト レージ例外
メ モ リ 保護違反にな る メ モ リ の命令にア ク セ ス し よ う と す る と 、 命令ス ト レージ例外が発生 し ます。
•
デー タ TLB ミ ス例外
有効な変換ル ッ ク アサ イ ド バ ッ フ ァ ー エン ト リ がな く 、仮想保護モー ド が イ ネーブルにな っ てい る と き に、デー
タ にア ク セ ス し よ う と す る と 、 デー タ TLB ミ ス例外が発生 し ます。
•
命令 TLB ミ ス例外
有効な変換ル ッ ク アサ イ ド バ ッ フ ァ ー エ ン ト リ がな く 、 仮想保護モー ド が イ ネーブルにな っ てい る と き に、 命
令にア ク セ ス し よ う と す る と 、 命令 TLB ミ ス例外が発生 し ます。
C_FAULT_TOLERANT が 1 に設定 さ れ、 例外が発生中の と き に (MSR[EIP] がセ ッ ト さ れ、 MSR[EE] が ク リ アにな っ
てい る な ど)、 命令バ ス例外、 無効なオペ コ ー ド 例外、 ま たはデー タ バ ス例外が発生 し た場合は、 パ イ プ ラ イ ンが停
止 し 、 外部信号 MB_Error がセ ッ ト さ れます。
不明瞭な例外
通常、 MicroBlaze の例外はすべて明瞭です。 つま り 、 例外を引 き 起 こ す命令の後のパ イ プ ラ イ ンにあ る 命令はすべて
無効化 さ れていて、 影響がない と い う こ と です。
C_IMPRECISE_EXCEPTIONS が 1 (ECC) に設定 さ れてい る と 、 LMB メ モ リ の ECC エ ラ ーに よ っ て発生す る 命令バ
ス例外ま たはデー タ バ ス例外は不明瞭です。 つま り 、 パ イ プ ラ イ ン にあ る 後続の メ モ リ ア ク セ ス命令が実行 さ れ る
可能性があ る と い う こ と です。 こ の動作が許容で き る 場合は、 こ のパ ラ メ ー タ ーを 1 に設定す る と 、 最大周波数を向
上 さ せ る こ と がで き ます。
MicroBlaze プ ロ セ ッ サ リ フ ァ レ ン ス ガ イ ド
UG984 (v2015.1) 2015 年 4 月 15 日
UG984 (v2015.3)
(v2015.2) 2015 年 96 月 30
24 日
japan.xilinx.com
58
第 2 章 : MicroBlaze アーキテ ク チ ャ
等価擬似 コ ー ド
ESR[DS]  exception in delay slot
if ESR[DS] then
BTR  branch target PC
if MMU exception then
if branch preceded by IMM then
r17  PC - 8
else
r17  PC - 4
else
r17  invalid value
else if MMU exception then
if instruction preceded by IMM then
r17  PC - 4
else
r17  PC
else
r17  PC + 4
PC  C_BASE_VECTORS + 0x00000020
MSR[EE]  0, MSR[EIP] 1
MSR[UMS]  MSR[UM], MSR[UM]  0, MSR[VMS]  MSR[VM], MSR[VM]  0
ESR[EC]  exception specific value
ESR[ESS]  exception specific value
EAR  exception specific value
FSR  exception specific value
Reservation  0
ブ レー ク
ブ レー ク には次の 2 種類があ り ます。
•
ハー ド ウ ェ ア (外部) ブ レー ク
•
ソ フ ト ウ ェ ア (内部) ブ レー ク
ハー ド ウ ェ ア ブ レー ク
ハー ド ウ ェ ア ブ レー ク は、 外部信号 (すなわち Ext_BRK お よ び Ext_NM_BRK 入力ポー ト ) を アサー ト す る こ と に
よ っ て実行 さ れます。 ブ レー ク が実行 さ れ る と 、 実行段の命令は完了 し ますが、 デ コ ー ド 段の命令は、 ブ レー ク ベ ク
タ ーへの分岐に置 き 換え ら れます (ア ド レ ス C_BASE_VECTORS + 0x18)。 ブ レー ク の戻 り ア ド レ ス (ブ レー ク 時のデ
コ ー ド 段にあ る 命令に関連付け ら れてい る PC) は、 汎用レ ジ ス タ R16 に自動的に ロ ー ド さ れます。 ま た、 MicroBlaze
は処理中ブ レー ク (BIP) フ ラ グ を マシ ン ス テー タ ス レ ジ ス タ (MSR) に設定 し ます。
標準のハー ド ウ ェ アブ レー ク (すなわち Ext_BRK 入力ポー ト ) は、 MSR[BIP] お よ び MSR[EIP] が 0 に設定 さ れてい
る (つま り 処理中のブ レー ク や命令がない) と き にのみ処理 さ れます。処理中ブ レー ク フ ラ グは割 り 込みをデ ィ ス エー
ブルに し ます。 マ ス ク 可能でないブ レー ク (すなわち Ext_NM_BRK 入力ポー ト ) は常にすぐ に処理 さ れます。
MSR の BIP ビ ッ ト は、 RTBD 命令が実行 さ れ る と 、 自動的に ク リ アにな り ます。
Ext_BRK 信号は、 ブ レー ク が発生す る ま でアサー ト に し 、 RTBD 命令が実行 さ れ る 前にデ ィ アサー ト にす る 必要が
あ り ます。 Ext_NM_BRK 信号は、 1 ク ロ ッ ク サ イ ク ルのみアサー ト する 必要があ り ます。
MicroBlaze プ ロ セ ッ サ リ フ ァ レ ン ス ガ イ ド
UG984 (v2015.1) 2015 年 4 月 15 日
UG984
(v2015.2) 2015 年 96 月 30
(v2015.3)
24 日
japan.xilinx.com
59
第 2 章 : MicroBlaze アーキテ ク チ ャ
ソ フ ト ウ ェ ア ブ レー ク
ソ フ ト ウ ェ ア ブ レー ク を実行す る には、 brk お よ び brki 命令を使用 し ます。 ソ フ ト ウ ェ ア ブ レー ク の詳細は、 第 5 章
「MicroBlaze 命令セ ッ ト アーキ テ ク チ ャ 」 を参照 し て く だ さ い。
特殊な ケース と し て、 C_USE_DEBUG がセ ッ ト さ れていて、 「brki rD, 0x18」 が実行 さ れ る 場合、 ソ フ ト ウ ェ アブ レー
ク ポ イ ン ト は、 C_BASE_VECTORS の値にかかわ ら ず、 XMD (Xilinx Microprocessor Debugger) な ど のデバ ッ グ ツール
に通知 さ れます。
レ イテンシ
MicroBlaze がブ レー ク 発生時か ら ブ レー ク サービ ス ルーチンに入る ま でにかか る 時間は、 現在実行段にあ る 命令 と 、
ブ レー ク ベ ク タ ーを格納す る メ モ リ ま での レ イ テ ン シに左右 さ れます。
等価擬似 コ ー ド
r16  PC
PC  C_BASE_VECTORS + 0x00000018
MSR[BIP]  1
MSR[UMS]  MSR[UM], MSR[UM]  0, MSR[VMS]  MSR[VM], MSR[VM]  0
Reservation  0
割 り 込み
MicroBlaze は外部割 り 込み ソ ース を 1 つサポー ト し ます (Interrupt 入力ポー ト に接続 さ れてい る )。 マシ ン ス テー タ ス
レ ジ ス タ (MSR) の割 り 込み イ ネーブル (IE) ビ ッ ト が 1 に設定 さ れてい る 場合にのみ、 プ ロ セ ッ サは割 り 込みに反応
し ます。 割 り 込みが発生す る と 、 実行段の命令は完了 し ますが、 デ コ ー ド 段の命令は、 割 り 込みベ ク タ ーへの分岐に
置 き 換え ら れます。 こ のア ド レ ス は、 C_BASE_VECTORS + 0x10 か、 低レ イ テ ン シ割 り 込みモー ド の場合は、 割 り 込
み コ ン ト ロ ー ラ ーで決め ら れ る ア ド レ ス にな り ます。
割 り 込みの戻 り ア ド レ ス (割 り 込み時のデコ ー ド 段にあ る 命令に関連付け ら れてい る PC) は、 汎用レ ジ ス タ R14 に自
動的に ロ ー ド さ れます。 さ ら に、 プ ロ セ ッ サは、 MSR の IE ビ ッ ト を ク リ アに し て、 今後の割 り 込みをデ ィ ス エーブ
ルに し ます。 RTID 命令が実行 さ れ る と 、 IE ビ ッ ト は自動的に再びセ ッ ト さ れます。
MSR の処理中ブ レー ク (BIP) ま たは処理中例外 (EIP) が 1 にセ ッ ト さ れてい る と 、 プ ロ セ ッ サは割 り 込みを無視 し
ます。
パ ラ メ ー タ ー C_INTERRUPT_IS_EDGE を使用する と 、外部割込みはレベル セ ン シテ ィ ブ ま たはエ ッ ジ セ ン シテ ィ
ブに設定 さ れます。
•
レベル セ ン シテ ィ ブの割 り 込みを使用する 場合、MicroBlaze が割 り 込みを処理 し て割 り 込みベ ク タ ーにジ ャ ンプ
す る ま で、 Interrupt 入力はセ ッ ト さ れた状態を維持す る 必要があ り ます。 ソ フ ト ウ ェ アは、 割 り 込みハン ド ラ ー
か ら 戻 る 前に割 り 込みを ク リ アにす る 必要があ り ます。 ク リ アにな っ ていない と 、 割 り 込みハン ド ラ ーか ら 戻っ
た と き に割 り 込みが イ ネーブルな る と すぐ に、 ま た割 り 込みが処理 さ れます。
•
エ ッ ジ セ ン シテ ィ ブの割 り 込みを使用する 場合、 MicroBlaze は Interrupt 入力エ ッ ジ を検出 し て ラ ッ チ し ます。 つ
ま り 、 入力は 1 ク ロ ッ ク サ イ ク ルだけアサー ト す る 必要があ り ます。 割 り 込み入力はアサー ト し た ま ま にで き ま
すが、 新 し い割 り 込みが検出で き る よ う にす る には、 その前に最低 1 ク ロ ッ ク サ イ ク ル間デ ィ アサー ト し てお く
必要が あ り ま す。 エ ッ ジ セ ン シ テ ィ ブの割 り 込みの ラ ッ チは、 MSR の IE ビ ッ ト と は独立 し て行われ ま す。 IE
ビ ッ ト が 0 の と き に割 り 込みが発生 し た場合は、 IE ビ ッ ト が 1 にな っ た と き にすぐ に実行 さ れます。
低レ イ テ ン シ割 り 込みモー ド
Interrupt_Address 入力ポー ト を介 し て、 各割 り 込みに対 し 、 割 り 込み コ ン ト ロ ー ラ ーが直接割 り 込みベ ク タ ーを供給
す る こ と がで き る 、 低レ イ テ ン シ モー ド が利用で き ます。
MicroBlaze プ ロ セ ッ サ リ フ ァ レ ン ス ガ イ ド
UG984 (v2015.1) 2015 年 4 月 15 日
UG984 (v2015.3)
(v2015.2) 2015 年 96 月 30
24 日
japan.xilinx.com
60
第 2 章 : MicroBlaze アーキテ ク チ ャ
割 り 込みシ ス テ ム を初期化す る と き 、 それぞれの高速割 り 込みハン ド ラ ーのア ド レ ス を割 り 込み コ ン ト ロ ー ラ ーに渡
す必要があ り ます。 特定の割 り 込みが発生する と 、 こ の割 り 込みア ド レ スは割 り 込み コ ン ト ロ ー ラ ーに よ っ て提供 さ
れ、 MicroBlaze はハン ド ラ ー コ ー ド に直接ジ ャ ンプす る こ と がで き ます。
こ のモー ド な ら 、 MicroBlaze は割 り 込み コ ン ト ロ ー ラ ーへ、 適切な割 り 込み肯定応答を直接送信す る こ と も で き ます
(Interrupt_Ack 出力ポー ト を介す) が、 ソ ース で レベル セ ン シテ ィ ブの割 り 込みを肯定応答す る のは、 やは り 割 り 込み
サービ ス ルーチンの役目です。
こ の情報に よ り 、 割 り 込み コ ン ト ロ ー ラ ーは、 レベル セ ン シ テ ィ ブの割 り 込み と エ ッ ジ ト リ ガーの割 り 込みの両方
に対 し て、 適切に割 り 込みを肯定応答で き ます。
割 り 込み処理 イ ベン ト を割 り 込み コ ン ト ロ ー ラ ーに通知す る には、 Interrupt_Ack を次の よ う に設定 し ます。
•
01 : MicroBlaze が割 り 込みハン ド ラ ー コー ド にジ ャ ンプす る
•
10 : RTID 命令が割 り 込みか ら 戻 る よ う に実行 さ れ る
•
11 : MSR[IE] が 0 か ら 1 へ と 変更 さ れ る 。 つま り 割 り 込みが再び イ ネーブルにな る 。
Interrupt_Ack 出力ポー ト は、 1 ク ロ ッ ク サ イ ク ル間ア ク テ ィ ブにな り 、 それか ら 00 に リ セ ッ ト さ れます。
レ イテンシ
MicroBlaze が割 り 込み発生時か ら 割 り 込みサービ ス ルーチ ン (ISR) に入 る ま でにかか る 時間は、 プ ロ セ ッ サの コ ン
フ ィ ギ ュ レ ー シ ョ ン と 、 割 り 込みベ ク タ ー を 格納す る メ モ リ コ ン ト ロ ー ラ ー の レ イ テ ン シ に 左右 さ れ ま す。
MicroBlaze にハー ド ウ ェ ア ド ラ イ バーが コ ン フ ィ ギ ュ レー ト さ れてい る 場合は、除算命令の実行中に割 り 込みが発生
す る と き 、 レ イ テ ン シが最大にな り ます。
低レ イ テ ン シ割 り 込みモー ド では、 各割 り 込みの割 り 込みベ ク タ ーが割 り 込み コ ン ト ロ ー ラ ーに よ り 直接供給 さ れ る
ので、 ISR に入 る 時間が大幅に短縮 さ れます。 高速割 り 込みには コ ンパ イ ラ サポー ト があ る ので、 共通 ISR の必要は
ま っ た く あ り ません。 代わ り に、 個々の割 り 込みの ISR は直接読み出 さ れ、 コ ンパ イ ラ は ISR で使用 さ れ る レ ジ ス タ
の保存 と 復元を行い ます。
等価擬似 コ ー ド
r14  PC
if C_USE_INTERRUPT = 2
PC  Interrupt_Address
Interrupt_Ack   01
else
PC  C_BASE_VECTORS + 0x00000010
MSR[IE]  0
MSR[UMS]  MSR[UM], MSR[UM]  0, MSR[VMS]  MSR[VM], MSR[VM]  0
Reservation  0
ユーザー ベ ク タ ー (例外)
ユーザー例外ベ ク タ ーはア ド レ ス 0x8 にあ り ます。 ユーザー例外は、 ソ フ ト ウ ェ ア フ ロ ーに 「BRALID Rx,0x8」 命令
を挿入す る と 発生 し ま す。 Rx は任意の汎用レ ジ ス タ を指定で き ま すが、 ユーザー例外戻 り ア ド レ ス の格納には R15
を使用 し 、 ユーザー例外ハン ド ラ ーか ら 戻 る には RTSD 命令を使用す る こ と を推奨 し ます。
擬似 コ ー ド
rx  PC
PC  C_BASE_VECTORS + 0x00000008
MSR[UMS]  MSR[UM], MSR[UM]  0, MSR[VMS]  MSR[VM], MSR[VM]  0
Reservation  0
MicroBlaze プ ロ セ ッ サ リ フ ァ レ ン ス ガ イ ド
UG984 (v2015.1) 2015 年 4 月 15 日
UG984 (v2015.3)
(v2015.2) 2015 年 96 月 30
24 日
japan.xilinx.com
61
第 2 章 : MicroBlaze アーキテ ク チ ャ
命令キ ャ ッ シ ュ
概要
MicoBlaze にオプシ ョ ンで命令キ ャ ッ シ ュ を使用す る と 、LMB ア ド レ ス範囲外にあ る コ ー ド を実行す る 際のパフ ォー
マ ン ス を改善で き ます。
命令キ ャ ッ シ ュ の機能は、 次の と お り です。
•
直接マ ッ プ (一方向のア ソ シエ イ テ ィ ブ)
•
選択可能な キ ャ ッ シ ュ 可能な メ モ リ ア ド レ ス範囲
•
コ ン フ ィ ギ ュ レーシ ョ ン可能な キ ャ ッ シ ュ お よ び タ グ サ イ ズ
•
AXI4 イ ン タ ーフ ェ イ ス でのキ ャ ッ シ ン グ (M_AXI_IC)
•
4、 8、 ま たは 16 ワ ー ド のキ ャ ッ シ ュ ラ イ ン を使用す る オプシ ョ ン
•
MSR のビ ッ ト を使用 し て キ ャ ッ シ ュ のオン/オ フ を制御
•
オプシ ョ ンの WIC 命令で命令キ ャ ッ シ ュ ラ イ ン を無効化
•
オプシ ョ ンの ス ト リ ーム バ ッ フ ァ ーで命令をプ リ フ ェ ッ チ し てパフ ォーマ ン ス を改善
•
オプシ ョ ンのビ ク テ ィ ム キ ャ ッ シ ュ で追い出 さ れた キ ャ ッ シ ュ ラ イ ン デー タ を保存 し てパフ ォーマ ン ス を改善
•
オプシ ョ ンのパ リ テ ィ 保護で、 ブ ロ ッ ク RAM ビ ッ ト エ ラ ーが検出 さ れた場合にキ ャ ッ シ ュ ラ イ ン を無効化
•
オプシ ョ ンでデー タ 幅を 32 ビ ッ ト にす る か、 キ ャ ッ シ ュ ラ イ ン全体にす る か、 ま たは 512 ビ ッ ト にす る か選択
一般的な命令キ ャ ッ シ ュの機能
命令キ ャ ッ シ ュ が使用 さ れ る 場合、 メ モ リ ア ド レ ス空間は、 キ ャ ッ シ ュ 可能なセグ メ ン ト と キ ャ ッ シ ュ 不可能なセグ
メ ン ト に分け ら れます。 キ ャ ッ シ ュ 可能なセグ メ ン ト は、 C_ICACHE_BASEADDR お よ び C_ICACHE_HIGHADDR と
い う 2 つのパ ラ メ ー タ ーで決め ら れます。 こ の範囲内のア ド レ ス はすべて、 キ ャ ッ シ ュ 可能な ア ド レ ス セグ メ ン ト に
対応 し ます。 その他のア ド レ ス はみな キ ャ ッ シ ュ 不可能なセグ メ ン ト です。
キ ャ ッ シ ュ 可能なセグ メ ン ト サ イ ズは 2N であ る 必要があ り ます。 こ の と き N は正の整数です。
C_ICACHE_BASEADDR お よ び C_ICACHE_HIGHADDR で指定 さ れ る 範囲は、 2 のべ き 乗 (= 2N) で、
C_ICACHE_BASEADDR の N 個の最下位ビ ッ ト はゼ ロ であ る 必要があ り ます。
キ ャ ッ シ ュ 可能な命令ア ド レ ス は、 キ ャ ッ シ ュ ア ド レ ス と タ グ ア ド レ ス の 2 つの部分で構成 さ れてい ます。
MicroBlaze 命令キ ャ ッ シ ュ は、 64 バ イ ト か ら 64kB ま での範囲で コ ン フ ィ ギ ュ レー ト で き ます。 こ れは、 6 か ら 16
ビ ッ ト ま でのキ ャ ッ シ ュ ア ド レ ス に対応 し てい ます。 キ ャ ッ シ ュ ア ド レ ス と 合わせた タ グ ア ド レ ス は、 キ ャ ッ シ ュ
可能な メ モ リ の フル ア ド レ ス と 一致 し てい る 必要があ り ます。 2kB 未満のキ ャ ッ シ ュ サ イ ズ を選択する 場合、 タ グ
RAM と 命令 RAM を イ ンプ リ メ ン ト す る のに、 分散 RAM が使用 さ れます。 パ ラ メ ー タ ー
C_ICACHE_FORCE_TAG_LUTRAM が 1 に設定 さ れてい る 場合は、タ グ RAM を イ ンプ リ メ ン ト す る のに分散 RAM
が常に使用 さ れます。 こ のパ ラ メ ー タ ーは、 4 ワー ド のキ ャ ッ シ ュ ラ イ ンの場合は 8kB 以下、 8 ワ ー ド のキ ャ ッ シ ュ
ラ イ ンの場合は 16kB 以下、16 ワ ー ド のキ ャ ッ シ ュ ラ イ ンの場合は 32kB 以下のキ ャ ッ シ ュ サ イ ズでのみ使用で き ま
す。
た と えば、 C_ICACHE_BASEADDR= 0x00300000、 C_ICACHE_HIGHADDR=0x0030ffff、
C_CACHE_BYTE_SIZE=4096、 C_ICACHE_LINE_LEN=8、 お よ び C_ICACHE_FORCE_TAG_LUTRAM=0 で コ ン
フ ィ ギ ュ レー ト さ れてい る MicroBlaze では、 64kB のキ ャ ッ シ ュ 可能 メ モ リ はバ イ ト ア ド レ ス の 16 ビ ッ ト を、 4kB
のキ ャ ッ シ ュ はバ イ ト ア ド レ ス の 12 ビ ッ ト のを使用する ので、 ア ド レ ス の タ グ幅は 16-12=4 ビ ッ ト にな り ます。 こ
の コ ン フ ィ ギ ュ レーシ ョ ンに必要なブ ロ ッ ク RAM プ リ ミ テ ィ ブの総数は、 1024 の命令ワ ー ド を格納する のに
RAMB16 を 2 つ、 128 のキ ャ ッ シ ュ ラ イ ン エン ト リ に RAMB16 を 1 つで、 それぞれ、 4 ビ ッ ト の タ グ、 8 ワー ド の
有効ビ ッ ト 、 1 ラ イ ン有効ビ ッ ト で構成 さ れてい ます。 合計で 3 つの RAMB16 プ リ ミ テ ィ ブにな り ます。
MicroBlaze プ ロ セ ッ サ リ フ ァ レ ン ス ガ イ ド
UG984 (v2015.1) 2015 年 4 月 15 日
UG984
(v2015.2) 2015 年 96 月 30
(v2015.3)
24 日
japan.xilinx.com
62
第 2 章 : MicroBlaze アーキテ ク チ ャ
63 ページの図 2-22 は、 命令キ ャ ッ シ ュ の構成を示 し てい ます。
命令ア ド レ ス ビ ッ ト
0
タグ ア ド レス
ラ イン ア ド レス
ワー ド ア ド レ ス
タグ
RAM
3031
- -
キャ ッ シュ ア ド レス
タグ
キャ ッ シュ ヒ ッ ト
=
有効 ( ワー ド と ラ イ ン )
命令
キ ャ ッ シ ュ命令デー タ
RAM
図 2‐22 : 命令キ ャ ッ シ ュの構成
命令キ ャ ッ シ ュ操作
フ ェ ッ チ さ れ る ど の命令に対 し て も 、 命令ア ド レ ス がキ ャ ッ シ ュ 可能なセグ メ ン ト にあ る か ど う か を命令キ ャ ッ シ ュ
が検出 し ます。 ア ド レ ス がキ ャ ッ シ ュ で き ない場合、 キ ャ ッ シ ュ コ ン ト ロ ー ラ ーは命令を無視 し 、 M_AXI_IP ま たは
LMB に リ ク エ ス ト を完了 さ せます。 ア ド レ ス がキ ャ ッ シ ュ で き る 場合は、 リ ク エ ス ト さ れた ア ド レ ス が現在キ ャ ッ
シ ュ さ れてい る こ と をチ ェ ッ ク す る ため、 タ グ メ モ リ でル ッ ク ア ッ プが実行 さ れ ます。 ワ ー ド お よ び ラ イ ン の有効
ビ ッ ト がセ ッ ト さ れていて、 タ グ ア ド レ ス が命令ア ド レ ス の タ グ セグ メ ン ト と 一致 し ていれば、 ル ッ ク ア ッ プは成
功です。 キ ャ ッ シ ュ ミ ス の場合、 キ ャ ッ シ ュ コ ン ト ロ ー ラ ーは命令 AXI4 イ ン タ ーフ ェ イ ス (M_AXI_IC) を介 し て新
し い命令を リ ク エ ス ト し 、 メ モ リ コ ン ト ロ ー ラ ーが関連付け ら れてい る キ ャ ッ シ ュ ラ イ ン を返すま で待機 し ます。
C_ICACHE_DATA_WIDTH はバ ス デー タ 幅を指定 し ますが、 32 ビ ッ ト 、 キ ャ ッ シ ュ ラ イ ン全体 (128、 256、 ま たは
512)、 ま たは 512 ビ ッ ト を選択 し ます。
C_FAULT_TOLERANT が 1 に設定 さ れてい る 場合、 タ グ ま たは命令ブ ロ ッ ク RAM でパ リ テ ィ エ ラ ーが検出 さ れ る
と 、 キ ャ ッ シ ュ ミ ス も 発生 し ます。
命令キ ャ ッ シ ュ は、 32 ビ ッ ト のデー タ 幅が選択 さ れてい る 場合、 AXI4 イ ン タ ーフ ェ イ ス に対 し バース ト ア ク セ ス を
実行 し ますが、 それ以外の場合はシ ン グル ア ク セ ス にな り ます。
ス ト リ ーム バ ッ フ ァ ー
C_ICACHE_STREAMS を 1 に設定 し て ス ト リ ーム バ ッ フ ァ ーを イ ネーブルに し てい る 場合、 ス ト リ ーム バ ッ フ ァ ー
がい っぱいにな る ま で、 最後に リ ク エ ス ト さ れた ア ド レ ス に続いて、 順次、 前 も っ て投機的にキ ャ ッ シ ュ ラ イ ン が
フ ェ ッ チ さ れます。 ス ト リ ーム バ ッ フ ァ ーはキ ャ ッ シ ュ ラ イ ン を 2 つま で保持で き ます。 その後、 ス ト リ ーム バ ッ
フ ァ ーに よ り プ リ フ ェ ッ チ さ れた キ ャ ッ シ ュ ラ イ ンか ら 、プ ロ セ ッ サが命令を リ ク エ ス ト す る と ( リ ニ ア コ ー ド で起
き る )、 命令はす ぐ に使用可能にな り ます。
ス ト リ ーム バ ッ フ ァ ーを イ ネーブルにす る と 、プ ロ セ ッ サが メ モ リ か ら 命令を フ ェ ッ チす る のにかか る 時間が短 く な
る ため、 パフ ォーマ ン ス が改善 さ れ る こ と が よ く あ り ます。
C_ICACHE_DATA_WIDTH は、 各 ク ロ ッ ク サ イ ク ルで ス ト リ ーム バ ッ フ ァ ーか ら 転送 さ れ る デー タ 量を指定 し ます
(32 ビ ッ ト ま たはキ ャ ッ シ ュ ラ イ ン全体の ど ち ら か を指定)。
MicroBlaze プ ロ セ ッ サ リ フ ァ レ ン ス ガ イ ド
UG984 (v2015.1) 2015 年 4 月 15 日
UG984 (v2015.3)
(v2015.2) 2015 年 96 月 30
24 日
japan.xilinx.com
63
第 2 章 : MicroBlaze アーキテ ク チ ャ
命令キ ャ ッ シ ュ ス ト リ ーム バ ッ フ ァ ーを使用で き る よ う にす る には、 エ リ ア最適化を イ ネーブルに し ないで く だ さ
い。
ビ ク テ ィ ム キ ャ ッ シ ュ
C_ICACHE_VICTIMS を 2、 4、 ま たは 8 に設定す る と 、 ビ ク テ ィ ム キ ャ ッ シ ュ は イ ネーブルにな り ます。 こ のパ ラ
メ ー タ ーは ビ ク テ ィ ム キ ャ ッ シ ュ に格納で き る キ ャ ッ シ ュ ラ イ ン の数を定義 し ま す。 キ ャ ッ シ ュ ラ イ ン が キ ャ ッ
シ ュ か ら 追い出 さ れ る と 、 常にビ ク テ ィ ム キ ャ ッ シ ュ に格納 さ れます。 最近の ラ イ ン を格納 し てお く と 、 プ ロ セ ッ サ
がそれを リ ク エ ス ト し た場合、 よ り 高速に フ ェ ッ チで き る ので、 パ フ ォ ーマ ン ス が改善 し ま す。 ビ ク テ ィ ム キ ャ ッ
シ ュ が使用 さ れない場合、 追い出 さ れた キ ャ ッ シ ュ ラ イ ンは、 必要にな っ た と き に、 も う 1 度 メ モ リ か ら 読み出す必
要があ り ます。
C_ICACHE_DATA_WIDTH は、 各 ク ロ ッ ク サ イ ク ルで、 ビ ク テ ィ ム キ ャ ッ シ ュ か ら 、 ま たはビ ク テ ィ ム キ ャ ッ シ ュ
へ転送 さ れ る デー タ 量を指定 し ます (32 ビ ッ ト ま たはキ ャ ッ シ ュ ラ イ ン全体の ど ち ら かを指定)。
ビ ク テ ィ ム キ ャ ッ シ ュ を使用で き る よ う にする には、 エ リ ア最適化を イ ネーブルに し ないで く だ さ い。
命令キ ャ ッ シ ュ ソ フ ト ウ ェ ア サポー ト
MSR ビ ッ ト
MSR の ICE ビ ッ ト を使用 し 、 ソ フ ト ウ ェ ア制御でキ ャ ッ シ ュ を イ ネーブルお よ びデ ィ ス エーブルにで き ます。
キ ャ ッ シ ュ がデ ィ ス エーブルの場合は、 デ フ ォ ル ト で、 キ ャ ッ シ ュ の内容は保持 さ れ ま す。 キ ャ ッ シ ュ ラ イ ン は、
WIC 命令を使用す る か、 MicroBlaze のハー ド ウ ェ ア デバ ッ グ ロ ジ ッ ク を使用 し て、 無効化する こ と がで き ます。
WIC 命令
オプシ ョ ンの WIC 命令 (C_ALLOW_ICACHE_WR=1) は、 アプ リ ケーシ ョ ンか ら 命令キ ャ ッ シ ュ のキ ャ ッ シ ュ ラ イ ン
を無効化す る のに使用 し ます。 詳細は、 第 5 章 「MicroBlaze 命令セ ッ ト アーキ テ ク チ ャ 」 を参照 し て く だ さ い。
WIC 命令をパ リ テ ィ 保護 と 一緒に使用す る と 、 エ ラ ーを累積す る のを避け る ため、 定期的にキ ャ ッ シ ュ のエン ト リ を
無効化す る こ と がで き ます。
MicroBlaze プ ロ セ ッ サ リ フ ァ レ ン ス ガ イ ド
UG984 (v2015.1) 2015 年 4 月 15 日
UG984 (v2015.3)
(v2015.2) 2015 年 96 月 30
24 日
japan.xilinx.com
64
第 2 章 : MicroBlaze アーキテ ク チ ャ
デー タ キ ャ ッ シ ュ
概要
MicroBlaze では、 パ フ ォ ーマ ン ス向上のため、 オプシ ョ ン のデー タ キ ャ ッ シ ュ を使用す る こ と がで き ます。 キ ャ ッ
シ ュ さ れた メ モ リ の範囲には、 LMB ア ド レ ス範囲内のア ド レ ス を含めないで く だ さ い。 デー タ キ ャ ッ シ ュ の機能は、
次の と お り です。
•
直接マ ッ プ (1 ウ ェ イ ア ソ シエ イ テ ィ ブ)
•
ラ イ ト スルーま たは ラ イ ト バ ッ ク
•
ユーザー選択可能な キ ャ ッ シ ュ 可能な メ モ リ ア ド レ ス範囲
•
コ ン フ ィ ギ ュ レーシ ョ ン可能な キ ャ ッ シ ュ サ イ ズお よ び タ グ サ イ ズ
•
AXI4 イ ン タ ーフ ェ イ ス でのキ ャ ッ シ ン グ (M_AXI_IC)
•
4、 8、 ま たは 16 ワ ー ド のキ ャ ッ シ ュ ラ イ ン を使用す る オプシ ョ ン
•
MSR のビ ッ ト を使用 し て キ ャ ッ シ ュ のオン/オ フ を制御
•
デー タ キ ャ ッ シ ュ ラ イ ン を無効化ま たはフ ラ ッ シ ュ す る ためのオプシ ョ ンの WDC 命令
•
オプシ ョ ンのビ ク テ ィ ム キ ャ ッ シ ュ ( ラ イ ト バ ッ ク ) で追い出 さ れた キ ャ ッ シ ュ ラ イ ン デー タ を保存 し てパ
フ ォーマ ン ス を改善
•
ラ イ ト スルー キ ャ ッ シ ュ のオプシ ョ ンのパ リ テ ィ 保護で、 ブ ロ ッ ク RAM ビ ッ ト エ ラ ーが検出 さ れた場合に
キ ャ ッ シ ュ ラ イ ン を無効化
•
オプシ ョ ンでデー タ 幅を 32 ビ ッ ト にす る か、 キ ャ ッ シ ュ ラ イ ン全体にす る か、 ま たは 512 ビ ッ ト にす る か選択
一般的なデー タ キ ャ ッ シ ュの機能
デー タ キ ャ ッ シ ュ が使用 さ れ る 場合、 メ モ リ ア ド レ ス空間は、 キ ャ ッ シ ュ 可能なセグ メ ン ト と キ ャ ッ シ ュ 不可能な
セグ メ ン ト に分かれます。 キ ャ ッ シ ュ 可能なセグ メ ン ト は、 C_DCACHE_BASEADDR お よ び
C_DCACHE_HIGHADDR と い う 2 つのパ ラ メ ー タ ーで決め ら れます。 こ の範囲内のア ド レ ス はすべて、 キ ャ ッ シ ュ
可能なア ド レ ス空間に対応 し ます。 その他のア ド レ ス はみな キ ャ ッ シ ュ 不可能なセグ メ ン ト です。
キ ャ ッ シ ュ 可能なセグ メ ン ト サ イ ズは 2N であ る 必要があ り ます。 こ の と き N は正の整数です。
C_DCACHE_BASEADDR お よ び C_DCACHE_HIGHADDR で指定 さ れ る 範囲は、 2 のべ き 乗 (= 2N) で、
C_DCACHE_BASEADDR の N 個の最下位ビ ッ ト はゼ ロ であ る 必要があ り ます。
図 2-23 はデー タ キ ャ ッ シ ュ の構成を示 し てい ます。
MicroBlaze プ ロ セ ッ サ リ フ ァ レ ン ス ガ イ ド
UG984 (v2015.1) 2015 年 4 月 15 日
UG984 (v2015.3)
(v2015.2) 2015 年 96 月 30
24 日
japan.xilinx.com
65
第 2 章 : MicroBlaze アーキテ ク チ ャ
デー タ ア ド レ ス ビ ッ ト
0
タグ ア ド レス
タグ
ア ド レス
RAM
タグ
キ ャ ッ シ ュ ワー ド ア ド レ ス
=
有効
3031
- -
キャ ッ シュ ヒ ッ ト
ロー ド 命令
デー タ
ア ド レス
キ ャ ッ シ ュ デー タ
RAM
図 2‐23 : デー タ キ ャ ッ シ ュの構成
キ ャ ッ シ ュ 可能 な デー タ ア ド レ ス は、 キ ャ ッ シ ュ ア ド レ ス と タ グ ア ド レ ス の 2 つの部分で構成 さ れ て い ま す。
MicroBlaze デー タ キ ャ ッ シ ュ は、 64 バ イ ト か ら 64kB ま での範囲で コ ン フ ィ ギ ュ レー ト で き ます。 こ れは、 6 か ら 16
ビ ッ ト ま でのキ ャ ッ シ ュ ア ド レ ス に対応 し てい ます。 キ ャ ッ シ ュ ア ド レ ス と 合わせた タ グ ア ド レ ス は、 キ ャ ッ シ ュ
可能な メ モ リ の フル ア ド レ ス と 一致 し てい る 必要があ り ます。 2kB 未満のキ ャ ッ シ ュ サ イ ズ を選択す る 場合は、 タ
グ RAM お よ び デ ー タ RAM を イ ン プ リ メ ン ト す る の に 分散 RAM が 使 用 さ れ ま す が、 例 外 が あ っ て、
C_AREA_OPTIMIZED が設定 さ れていて、C_DCACHE_USE_WRITEBACK が設定 さ れていない場合は、デー タ RAM
には常にブ ロ ッ ク RAM が使用 さ れます。パ ラ メ ー タ ー C_DCACHE_FORCE_TAG_LUTRAM が 1 に設定 さ れてい る 場
合は、 タ グ RAM を イ ンプ リ メ ン ト す る のに分散 RAM が常に使用 さ れます。 こ のパ ラ メ ー タ ーは、 4 ワー ド のキ ャ ッ
シ ュ ラ イ ンの場合は 8kB 以下、 8 ワー ド のキ ャ ッ シ ュ ラ イ ンの場合は 16kB 以下、 16 ワー ド のキ ャ ッ シ ュ ラ イ ンの
場合は 32kB 以下のキ ャ ッ シ ュ サ イ ズでのみ使用で き ます。
た と えば、 C_DCACHE_BASEADDR=0x00400000、 C_DCACHE_HIGHADDR=0x00403fff、
C_DCACHE_BYTE_SIZE=2048、 C_DCACHE_LINE_LEN=4、 お よ び C_DCACHE_FORCE_TAG_LUTRAM=0 で コ
ン フ ィ ギ ュ レー ト さ れてい る MicroBlaze では、 16 kB のキ ャ ッ シ ュ 可能 メ モ リ はバ イ ト ア ド レ ス の 14 ビ ッ ト を、 2
kB のキ ャ ッ シ ュ はバ イ ト ア ド レ ス の 11 ビ ッ ト を使用す る ので、 ア ド レ ス の タ グ幅は 14-11=3 ビ ッ ト にな り ます。 こ
の コ ン フ ィ ギ ュ レーシ ョ ンに必要なブ ロ ッ ク RAM プ リ ミ テ ィ ブの総数は、 512 のデー タ ワー ド を格納す る のに
RAMB16 を 1 つ、 128 のキ ャ ッ シ ュ ラ イ ン エン ト リ に RAMB16 を 1 つで、 それぞれ、 3 ビ ッ ト の タ グ、 4 ワー ド の
有効ビ ッ ト 、 1 ラ イ ン有効ビ ッ ト で構成 さ れてい ます。 合計で 2 つの RAMB16 プ リ ミ テ ィ ブにな り ます。
デー タ キ ャ ッ シ ュ操作
MicroBlaze のデー タ キ ャ ッ シ ュ で使用 さ れ る キ ャ ッ シ ン グ ポ リ シー ( ラ イ ト バ ッ ク ま たは ラ イ ト スルー ) は、
C_DCACHE_USE_WRITEBACK で決ま り ます。 こ のパ ラ メ ー タ ーが設定 さ れてい る と 、 ラ イ ト バ ッ ク プ ロ ト コ ルが
イ ンプ リ メ ン ト さ れ、 ま た、 設定 さ れていなければ、 ラ イ ト スルーが イ ンプ リ メ ン ト さ れます。 し か し 、 MMU を使
用 し て コ ン フ ィ ギ ュ レー ト さ れてい る 場合 (C_USE_MMU > 1、 C_AREA_OPTIMIZED = 0、
C_DCACHE_USE_WRITEBACK = 1) は、仮想モー ド のキ ャ ッ シ ン グ ポ リ シーは TLB エン ト リ の W ス ト レージ属性で
決ま り ます。 リ アル モー ド の場合は ラ イ ト バ ッ ク が使用 さ れます。
ラ イ ト バ ッ ク プ ロ ト コ ルの場合、 キ ャ ッ シ ュ 可能な範囲にあ る ア ド レ ス に ス ト ア命令があ る と 、 キ ャ ッ シ ュ さ れた
デー タ が常にア ッ プデー ト さ れ ま す。 タ ーゲ ッ ト ア ド レ ス ワ ー ド がキ ャ ッ シ ュ にな く (すなわち ア ク セ ス はキ ャ ッ
シ ュ ミ ス)、キ ャ ッ シ ュ の ロ ケーシ ョ ンに ま だ メ モ リ に書き 込まれていないデー タ が含まれてい る (キ ャ ッ シ ュ ロ ケー
シ ョ ンがダーテ ィ ) 場合、新 し いデー タ でキ ャ ッ シ ュ がア ッ プデー ト さ れ る 前に、古いデー タ がデー タ AXI4 イ ン タ ー
フ ェ イ ス (M_AXI_DC) を介 し て外部 メ モ リ に書 き 込ま れます。 1 ワー ド のみを書 き 込む必要があ る 場合は、 1 ワー ド
書 き 込みが使用 さ れ、そ う でなければバース ト 書 き 込みが使用 さ れます。バ イ ト ま たはハーフバ イ ト の ス ト アの場合、
キ ャ ッ シ ュ ミ ス があ る と 、 まずア ド レ ス がデー タ AXI4 イ ン タ ーフ ェ イ ス を介 し て リ ク エ ス ト さ れ、 ワ ー ド ス ト アは
キ ャ ッ シ ュ だけ を ア ッ プデー ト し ます。
MicroBlaze プ ロ セ ッ サ リ フ ァ レ ン ス ガ イ ド
UG984 (v2015.1) 2015 年 4 月 15 日
UG984 (v2015.3)
(v2015.2) 2015 年 96 月 30
24 日
japan.xilinx.com
66
第 2 章 : MicroBlaze アーキテ ク チ ャ
ラ イ ト ス ルー プ ロ ト コ ルの場合、 キ ャ ッ シ ュ 可能な範囲にあ る ア ド レ スへの ス ト ア命令は、 等価のバ イ ト 、 ハーフ
ワー ド 、 ワー ド の書き 込みをデー タ AXI4 イ ン タ ーフ ェ イ ス を外部 メ モ リ に対 し て生成 し ます。 タ ーゲ ッ ト ア ド レ ス
ワー ド がキ ャ ッ シ ュ にあ る 場合 (つま り 書 き 込みがキ ャ ッ シ ュ ヒ ッ ト )、書 き 込み も キ ャ ッ シ ュ さ れたデー タ を ア ッ プ
デー ト し ます。 書 き 込みキ ャ ッ シ ュ ミ ス は、 関連付け ら れた キ ャ ッ シ ュ ラ イ ン を キ ャ ッ シ ュ には ロ ー ド し ません。
キ ャ ッ シ ュ が イ ネーブルにな っ てい る も の と し て、 リ ク エ ス ト さ れたデー タ が現在キ ャ ッ シ ュ さ れてい る か ど う か を
判断す る ためのチ ェ ッ ク が、 キ ャ ッ シ ュ 可能範囲にあ る ア ド レ ス か ら の ロ ー ド 命令に よ っ て実行 さ れ ま す。 キ ャ ッ
シ ュ さ れていれば (すなわち キ ャ ッ シ ュ ヒ ッ ト )、 リ ク エ ス ト さ れたデー タ はキ ャ ッ シ ュ か ら 読み出 さ れます。 キ ャ ッ
シ ュ さ れていなければ (すなわち キ ャ ッ シ ュ ミ ス)、 バース ト 読み出 し を使用 し てデー タ AXI4 イ ン タ ーフ ェ イ ス を介
し て ア ド レ ス が リ ク エ ス ト さ れ、 リ ク エ ス ト さ れた ア ド レ ス に関連付け ら れてい る キ ャ ッ シ ュ ラ イ ン が外部 メ モ リ
コ ン ト ロ ー ラ ーか ら 返 さ れ る ま で、 プ ロ セ ッ サのパ イ プ ラ イ ンは ス ト ール し ます。
C_DCACHE_DATA_WIDTH はバ ス デー タ 幅を指定 し ますが、 32 ビ ッ ト 、 キ ャ ッ シ ュ ラ イ ン全体 (128、 256、 ま たは
512)、 ま たは 512 ビ ッ ト を選択 し ます。
C_FAULT_TOLERANT が 1 に設定 さ れ、 ラ イ ト スルー プ ロ ト コ ルが使用 さ れてい る 場合、 タ グ ま たはデー タ ブ ロ ッ
ク RAM でパ リ テ ィ エ ラ ーが検出 さ れ る と 、 キ ャ ッ シ ュ ミ ス も 発生 し ます。
デー タ キ ャ ッ シ ュ AXI4 イ ン タ ーフ ェ イ ス で処理 さ れ る ア ク セ ス タ イ プはすべて、 表 2-39 に ま と め ら れてい ます。
表 2‐39 : デー タ キ ャ ッ シ ュ イ ン タ ー フ ェ イ ス ア ク セス
ポ リ シー
ラ イ ト スルー
ラ イ ト バッ ク
ス テー ト
方向
ア ク セス タ イ プ
キャ ッ
シュはイ
ネーブル
読み出 し
32 ビ ッ ト イ ン タ ーフ ェ イ ス の非排他的ア ク セ ス お よ
び ACE が イ ネーブルにな っ てい る 排他的な ア ク セ ス
の場合はバース ト 、 それ以外の場合はシ ン グル ア ク セ
ス
書 き 込み
シ ン グル ア ク セ ス
キャ ッ
シュは
ディ ス
エーブル
読み出 し
ACE が イ ネーブルに な っ て い る 32 ビ ッ ト イ ン タ ー
フ ェ イ ス の排他的な ア ク セ ス の場合はバース ト 、 それ
以外の場合はシ ン グル ア ク セ ス
書 き 込み
シ ン グル ア ク セ ス
キャ ッ
シュはイ
ネーブル
読み出 し
32 ビ ッ ト イ ン タ ーフ ェ イ ス の場合はバー ス ト 、 それ
以外の場合はシ ン グル ア ク セ ス
書 き 込み
複数の有効ワー ド があ る 32 ビ ッ ト イ ン タ ーフ ェ イ ス
のキ ャ ッ シ ュ ラ イ ンの場合はバース ト 、 それ以外はシ
ン グル ア ク セ ス
キャ ッ
シュは
ディ ス
エーブル
読み出 し
32 ビ ッ ト イ ン タ ーフ ェ イ ス の非排他的ア ク セ ス の場
合はバース ト で目的のデー タ 以外はすべて破棄、 それ
以外の場合はシ ン グル ア ク セ ス
書 き 込み
シ ン グル ア ク セ ス
ビ ク テ ィ ム キ ャ ッ シ ュ
C_DCACHE_VICTIMS を 2、 4、 ま たは 8 に設定す る と 、 ビ ク テ ィ ム キ ャ ッ シ ュ は イ ネーブルにな り ます。 こ のパ ラ
メ ー タ ーは ビ ク テ ィ ム キ ャ ッ シ ュ に格納で き る キ ャ ッ シ ュ ラ イ ン の数 を 定義 し ま す。 キ ャ ッ シ ュ ラ イ ン 全体が
キ ャ ッ シ ュ か ら 追い出 さ れ る と 、 常にビ ク テ ィ ム キ ャ ッ シ ュ に格納 さ れます。 最近の ラ イ ン を格納 し てお く と 、 プ ロ
セ ッ サがそれを リ ク エ ス ト し た場合、 よ り 高速に フ ェ ッ チで き る ので、 パ フ ォ ーマ ン ス が改善 し ま す。 ビ ク テ ィ ム
キ ャ ッ シ ュ が使用 さ れない場合、 追い出 さ れた キ ャ ッ シ ュ ラ イ ンは、 必要にな っ た と き に、 も う 1 度 メ モ リ か ら 読み
出す必要があ り ます。
AXI4 イ ン タ ーフ ェ イ ス の場合、 C_DCACHE_DATA_WIDTH は、 各 ク ロ ッ ク サ イ ク ルで、 ビ ク テ ィ ム キ ャ ッ シ ュ か
ら 、 ま たはビ ク テ ィ ム キ ャ ッ シ ュ へ転送 さ れ る デー タ 量を指定 し ます (32 ビ ッ ト ま たはキ ャ ッ シ ュ ラ イ ン全体の ど
ち ら か を指定)。
MicroBlaze プ ロ セ ッ サ リ フ ァ レ ン ス ガ イ ド
UG984 (v2015.1) 2015 年 4 月 15 日
UG984 (v2015.3)
(v2015.2) 2015 年 96 月 30
24 日
japan.xilinx.com
67
第 2 章 : MicroBlaze アーキテ ク チ ャ
ビ ク テ ィ ム キ ャ ッ シ ュ を使用で き る よ う にする には、 ラ イ ト バ ッ ク を必ず イ ネーブルに し 、 エ リ ア最適化を イ ネーブ
ルに し ないで く だ さ い。
デー タ キ ャ ッ シ ュ ソ フ ト ウ ェ ア サポー ト
MSR ビ ッ ト
キ ャ ッ シ ュ を イ ネーブルにす る か ど う かは、 MSR の DCE ビ ッ ト で制御 し ます。 キ ャ ッ シ ュ をデ ィ ス エーブルにす る
場合は、 M_AXI_DP を介 し て リ ー ド バ ッ ク をする 前に、 キ ャ ッ シ ュ 可能な範囲内の こ れま での書き 込みすべてが、 外
部 メ モ リ で完了 し てい る こ と を ユーザーが確認す る 必要があ り ます。 こ れには、 まずキ ャ ッ シ ュ を オ フ にす る 直前に
セマ フ ォ に書 き 込みを し てか ら 、 書 き 込みが完了す る ま でループでポー リ ン グ し ます。
キ ャ ッ シ ュ がデ ィ ス エーブルの場合は、 デキ ャ ッ シ ュ の内容は保持 さ れます。
WDC 命令
オプシ ョ ンの WDC 命令 (C_ALLOW_DCACHE_WR=1) は、 アプ リ ケーシ ョ ンか ら デー タ キ ャ ッ シ ュ のキ ャ ッ シ ュ ラ
イ ン を無効化ま たはフ ラ ッ シ ュ す る のに使用 し ます。 詳細は、 第 5 章 「MicroBlaze 命令セ ッ ト アーキ テ ク チ ャ 」 を参
照 し て く だ さ い。
WDC 命令をパ リ テ ィ 保護 と 一緒に使用す る と 、 エ ラ ーを累積す る の を避け る ため、 定期的にキ ャ ッ シ ュ のエン ト リ
を無効化す る こ と がで き ます。
MicroBlaze プ ロ セ ッ サ リ フ ァ レ ン ス ガ イ ド
UG984 (v2015.1) 2015 年 4 月 15 日
UG984 (v2015.3)
(v2015.2) 2015 年 96 月 30
24 日
japan.xilinx.com
68
第 2 章 : MicroBlaze アーキテ ク チ ャ
浮動小数点ユニ ッ ト (FPU)
概要
MicroBlaze の浮動小数点ユニ ッ ト は、 IEEE 754-1985 standard に基づいてい ます。
•
無限大、 非数 (NaN) お よ び 0 も 含めて、 IEEE 754 の単精度浮動小数点フ ォーマ ッ ト を使用
•
加算、 減算、 乗算、 除算、 比較、 変換、 平方根の命令をサポー ト
•
近似値に丸め る モー ド を イ ンプ リ メ ン ト
•
ア ン ダーフ ロ ー、 オーバーフ ロ ー、 ゼ ロ 除算、 無効な操作に対 し 、 ス テ ィ ッ キース テー タ ス ビ ッ ト を生成
パフ ォーマ ン ス を向上 さ せ る 場合は、 規格外で次の よ う な簡素化が行われてい ます。
•
非正規化 (1) オペ ラ ン ド がサポー ト さ れてい ません。 非正規化数のハー ド ウ ェ ア浮動小数点演算は、 quiet NaN を
返 し 、 ス テ ィ ッ キーな非正規化オペ ラ ン ド エ ラ ー ビ ッ ト を FSR にセ ッ ト し ます。 詳細は26 ページの 「浮動小数
点ス テー タ ス レ ジ ス タ (FSR)」 を参照 し て く だ さ い。
•
非正規数の結果は、 符号付 き の 0 と し て格納 さ れ、 FSR にア ン ダーフ ロ ー ビ ッ ト を セ ッ ト し ます。 こ の方法は、
一般的にゼ ロ に フ ラ ッ シ ュ (FTZ) と 呼ばれます。
•
quiet NaN での操作は、 NaN オペ ラ ン ド の 1つではな く 、 fixed NaN (0xFFC00000) を返 し ます。
•
浮動小数点演算の結果発生す る オーバーフ ロ ーは常に符号付 き の ¥ を返 し ます。
フ ォ ーマ ッ ト
IEEE 754 の単精度浮動小数点数は、 次の 3 つの フ ィ ール ド か ら 構成 さ れてい ます。
1.
符号部 : 1 ビ ッ ト
2.
指数部 : バ イ ヤ ス し た 8 ビ ッ ト
3.
仮数部 : 23 ビ ッ ト
図 2-24 に定義 さ れてい る よ う に、 こ れ ら の フ ィ ール ド は 32 ビ ッ ト ワー ド に格納 さ れます。




符号
部



指数部
仮数部
図 2‐24 : IEEE 754 単精度フ ォ ーマ ッ ト
MicroBlaze での浮動小数点数の値 v は次の よ う に解釈 さ れます。
1.
指数 = 255 で 仮数 <> 0 な ら ば、 符号ビ ッ ト に関係な く v= NaN にな り ます。
2.
指数 = 255 で 仮数 = 0 な ら ば、 v= (-1)符号 * ¥ にな り ます。
3.
0 < 指数 < 255 な ら ば、 v = (-1)符号 * 2(指数-127) * (1. 仮数) にな り ます。
4.
指数 = 0 で 仮数 <> 0 な ら ば、 v = (-1)符号 * 2-126 * (0. 仮数) にな り ます。
5.
指数 = 0 で 仮数 = 0 な ら ば、 v= (-1)sign * * 0 にな り ます。
1. 全精度で表現で き ない 0 の近似値は、 ( 1.17549*10-38 > n > 0 ) ま たは ( 0 > n > -1.17549 * 10-38 ) の範囲内の任意数 n です。
MicroBlaze プ ロ セ ッ サ リ フ ァ レ ン ス ガ イ ド
UG984 (v2015.1) 2015 年 4 月 15 日
UG984 (v2015.3)
(v2015.2) 2015 年 96 月 30
24 日
japan.xilinx.com
69
第 2 章 : MicroBlaze アーキテ ク チ ャ
実際には、 3 お よ び 5 のみが有用で、 後の も のはエ ラ ーか、 32 ビ ッ ト フ ォーマ ッ ト の全精度では表現で き な く な っ た
数値を表 し てい ます。
丸め
MicroBlaze の FPU は、 IEEE 754 で指定 さ れてい る デフ ォ ル ト の丸めモー ド 「近似値へ丸め」 のみを イ ン プ リ メ ン ト
し ます。 定義上、 任意の浮動小数点数の演算結果は、 単精度の近似値を無限大に返 し ます。 2 つの近似値が ど ち ら も
同 じ 近 さ であ る 場合、 最下位ビ ッ ト 0 のあ る ほ う が返 さ れます。
演算
MicroBlaze の FPU 演算はすべて、 専用の浮動小数点レ ジ ス タ フ ァ イ ルではな く 、 プ ロ セ ッ サの汎用レ ジ ス タ を使用
し ます。 詳細は、 「汎用レ ジ ス タ 」 を参照 し て く だ さ い。
算術演算
FPU は次の浮動小数点数演算を イ ンプ リ メ ン ト し ます。
•
加算、 fadd
•
減算、 fsub
•
乗算、 fmul
•
減算、 fdiv
•
平方根、 fsqrt (C_USE_FPU = 2, EXTENDED の場合に使用可能)
比較
FPU は次の浮動小数点数比較を イ ンプ リ メ ン ト し ます。
•
小な り 比較、 fcmp.lt
•
相当比較、 fcmp.eq
•
以下の比較、 fcmp.le
•
大な り 比較、 fcmp.gt
•
不等比較、 fcmp.ne
•
以上の比較、 fcmp.ge
•
不順比較、 fcmp.un (NaN に対 し 使用)
変換
FPU は次の変換を イ ンプ リ メ ン ト し ます (C_USE_FPU = 2, EXTENDED の場合に使用可能)。
•
符号付 き 整数を浮動小数点数に変換、 flt
•
浮動小数点数を符号付 き 整数に変換、 fint
例外
浮動小数点ユニ ッ ト は、 MicroBlaze の一般的なハー ド ウ ェ ア例外 メ カ ニズ ム を使用 し ます。 イ ネーブルにな っ てい る
場合は、 ア ン ダーフ ロ ー、 オーバーフ ロ ー、 ゼ ロ 除算、 無効な操作 と い っ たすべての IEEE 規格の コ ンデ ィ シ ョ ン、
お よ び MicroBlaze の例外であ る 非正規化オペ ラ ン ド エ ラ ーに対 し て、 例外が投げ ら れます。
浮動小数点の例外は、 デス テ ィ ネーシ ョ ン レ ジ ス タ (Rd) への書 き 込みを抑止 し ます。 こ のため、 浮動小数点例外ハ
ン ド ラ ーが、 破損 し ていない レ ジ ス タ フ ァ イ ルで操作で き ます。
MicroBlaze プ ロ セ ッ サ リ フ ァ レ ン ス ガ イ ド
UG984 (v2015.1) 2015 年 4 月 15 日
UG984 (v2015.3)
(v2015.2) 2015 年 96 月 30
24 日
japan.xilinx.com
70
第 2 章 : MicroBlaze アーキテ ク チ ャ
ソ フ ト ウ ェ ア サポー ト
GCC をベース に し た、 SDK コ ンパ イ ラ シ ス テ ムでは、 MicroBlaze API に準拠 し た浮動小数点ユニ ッ ト がサポー ト さ
れてい ます。 SDK を使用す る 場合、 シ ス テ ムにあ る FPU の種類に基づいて、 GCC コ マ ン ド ラ イ ンに コ ンパ イ ラ フ
ラ グが自動的に追加 さ れます。
倍精度演算はすべて ソ フ ト ウ ェ アでエ ミ ュ レー ト さ れます。 xil_printf() は浮動小数点数の出力をサポー ト し ないので
注意が必要です。 標準 C ラ イ ブ ラ リ の printf() お よ び関連関数は、 浮動小数点数の出力をサポー ト し てい ますが、 プ
ロ グ ラ ムの コ ー ド サ イ ズが大 き く な り ます。
ラ イ ブ ラ リ およびバイ ナ リ の互換性
SDK コ ンパ イ ラ シ ス テ ムには、 ソ フ ト ウ ェ アの浮動小数点 C ラ イ ン タ イ ム ラ イ ブ ラ リ のみが含まれてい ます。 ハー
ド ウ ェ アの FPU を利用す る には、 こ れ ら の ラ イ ブ ラ リ を適切な コ ンパ イ ラ オプシ ョ ン を使用 し て再 コ ンパ イ ルす る
必要があ り ます。
異な る コ ンパ イ ルが使用 さ れてい る 場合は常に、 ビル ド 全体で FPU コ ンパ イ ラ フ ラ グが一貫 し てい る こ と を必ず確
認 し て く だ さ い。
演算子レ イ テ ン シ
FPU でサポー ト さ れてい る さ ま ざ ま な演算の レ イ テ ン シは、 第 5 章 「MicroBlaze 命令セ ッ ト アーキ テ ク チ ャ 」 に ま
と め ら れてい ます。 FPU 命令はパ イ プ ラ イ ン化 さ れていないため、 1 回に 1 つの演算 し か実行で き ません。
C 言語プ ロ グ ラ ミ ング
下位のアセ ンブ リ 言語のプ ロ グ ラ ミ ン グ を使用せずに、 FPU の機能を最大限に活用す る には、 ソ ース コ ー ド が C コ
ンパ イ ラ に ど の よ う に処理 さ れ る のか を考え る こ と が重要です。 同 じ アルゴ リ ズ ムで も 表現方法は複数あ っ て、 記述
の し かたに よ っ ては効率の よ いアルゴ リ ズ ムにな る こ と が よ く あ り ます。
即値定数
C の浮動小数点定数はデフ ォ ル ト で倍精度です。 単精度の FPU を使用す る 場合は、 注意 し て コ ー ド を記述 し ない と 、
ネ イ テ ィ ブの単精度命令ではな く 、 倍精度の ソ フ ト ウ ェ ア エ ミ ュ レーシ ョ ン ルーチンが使用 さ れ る こ と があ り ます。
こ れを避け る には、 演算式で即値定数に単精度値を明示的に指定 し ます (キ ャ ス ト ま たは接尾辞を使用)。
例:
float x = 0.0;
...
x += (float)1.0; /* float addition */
x += 1.0F;
/* alternative to above */
x += 1.0;
/* warning - uses double addition! */
-fsingle-precision-constants と い う コ ンパ イ ラ フ ラ グ を使用 し て、 GNU C コ ンパ イ ラ ですべての浮動小数点定数を単精
度 と し て処理す る よ う に指定す る こ と がで き ます (ANSI C 規格 と は異な る )。
不必要なキ ャ ス ト の回避
C_USE_FPU が 2 に設定 さ れてい る 場合 (拡張)、浮動小数点 と 整数の変換は FPU に よ り ハー ド ウ ェ アでサポー ト さ れ
てい ますが、 で き る 限 り その変換は避けて く だ さ い。
次の例は悪い例で、 浮動小数点を使用 し て 1 か ら 10 の整数の平方根の和を計算 し てい ます。
MicroBlaze プ ロ セ ッ サ リ フ ァ レ ン ス ガ イ ド
UG984 (v2015.1) 2015 年 4 月 15 日
UG984
(v2015.2) 2015 年 96 月 30
(v2015.3)
24 日
japan.xilinx.com
71
第 2 章 : MicroBlaze アーキテ ク チ ャ
float sum, t;
int i;
sum = 0.0f;
for (i = 1; i <= 10; i++) {
t = (float)i;
sum += t * t;
}
上記の コ ー ド では、 各ループ反復で、 整数か ら 浮動小数点数へのキ ャ ス ト が必要にな り ます。 こ れは次の よ う に書 き
換え る こ と がで き ます。
float sum, t;
int i;
t = sum = 0.0f;
for(i = 1; i <= 10; i++) {
t += 1.0f;
sum += t * t;
}
上記の 2 つの コ ー ド の抜粋は、 場合に よ っ ては異な る 結果を出力す る 可能性があ る ので (非常に大 き な t が出力 さ れ
る な ど)、 通常、 こ の最適化は コ ンパ イ ラ では実行 さ れません。
平方根ラ ン タ イ ム ラ イ ブ ラ リ 関数
標準 C ラ ン タ イ ム数学 ラ イ ブ ラ リ 関数は、 倍精度演算を使用 し て計算を行い ます。 平方根関数 (sqrt()) への単精度の
FPU コ ールを使用す る 場合、 FPU 命令ではな く 、 非効率的なエ ミ ュ レーシ ョ ン ルーチンが代わ り に使用 さ れます。
#include <math.h>
...
float x=-1.0F;
...
x = sqrt(x); /* uses double precision */
こ こ では、 コ ンパ イ ラ か ら 警告 メ ッ セージが表示 さ れ る のを避け る ため、 math.h ヘ ッ ダーが含まれてい ます。
単精度のデー タ 型で使用す る と 、 結果は倍精度へキ ャ ス ト さ れ、 ラ ン タ イ ム ラ イ ブ ラ リ (FPU を使用 し ない) が呼び
出 さ れ、 浮動小数点への切 り 捨てが実行 さ れます。
解決方法 と し ては、 非 ANSI 関数 sqrtf() を代わ り に使用 し ます。 こ れは、 単精度を使用 し て演算を行い、 FPU を使用
し て実行す る こ と が可能です。 次はその例です。
#include <math.h>
...
float x=-1.0F;
...
x = sqrtf(x); /* uses single precision */
こ の コ ー ド を コ ンパ イ ルす る 場合は、 コ ンパ イ ラ フ ラ グ -fno-math-errno (-mhard-float and -mxl-float-sqrt に加えて) を必
ず使用 し 、 errno 変数を ア ッ プデー ト し て、 エ ラ ー コ ンデ ィ シ ョ ン を処理す る ための不必要な コ ー ド を コ ンパ イ ラ が
生成 し ない よ う に し て く だ さ い。
MicroBlaze プ ロ セ ッ サ リ フ ァ レ ン ス ガ イ ド
UG984 (v2015.1) 2015 年 4 月 15 日
UG984 (v2015.3)
(v2015.2) 2015 年 96 月 30
24 日
japan.xilinx.com
72
第 2 章 : MicroBlaze アーキテ ク チ ャ
ス ト リ ーム リ ン ク イ ン タ ー フ ェ イ ス
MicroBlaze は、 最大 16 個の AXI4-Stream イ ン タ ーフ ェ イ ス を使用 し て コ ン フ ィ ギ ュ レー ト で き 、 各 イ ン タ ーフ ェ イ
ス には入力ポー ト と 出力ポー ト が 1 つずつあ り ます。 チ ャ ネルは専用の単一方向のポ イ ン ト ツー ポ イ ン ト のデー タ
ス ト リ ー ミ ン グ イ ン タ ーフ ェ イ ス です。
AXI4-Stream イ ン タ ーフ ェ イ ス の詳細については、 『AMBA 4 AXI4-Stream Protocol Specification, Version 1.0』 
(ARM IHI 0051A) を参照 し て く だ さ い。
MicroBlaze の イ ン タ ーフ ェ イ スは 32 ビ ッ ト 幅です。 別の 1 ビ ッ ト が送/受信 さ れた ワー ド が制御 タ イ プなのかデー タ
タ イ プなのか を示 し ます。 MicroBlaze ISA の get 命令は、 ポー ト か ら 汎用レ ジ ス タ ま で情報を伝送す る のに使用 さ れ
ます。put 命令はその逆方向にデー タ を伝送する のに使用 さ れます。両方の命令に、 ブ ロ ッ キ ン グ デー タ 、 ノ ンブ ロ ッ
キ ン グ デー タ 、 ブ ロ ッ キ ン グ制御、 ノ ン ブ ロ ッ キ ン グ制御 と い う 4 つの タ イ プがあ り ます。 get お よ び put 命令の詳
細については、 第 5 章 「MicroBlaze 命令セ ッ ト アーキ テ ク チ ャ 」 を参照 し て く だ さ い。
ハー ド ウ ェ ア ア ク セ ラ レーシ ョ ン
プ ロ セ ッ サ パ イ プ ラ イ ンへの低レ イ テ ン シ専用 イ ン タ ーフ ェ イ ス を各 リ ン ク が提供 し てい ます。 し たがっ て、 カ ス タ
ム のハー ド ウ ェ ア ア ク セ ラ レ ー タ を 使用 し た プ ロ セ ッ サ実行ユ ニ ッ ト を 拡張す る の に理想的です。 簡単な 例 を
図 2-25 に示 し ます。 こ の コ ー ド は、 使用 リ ン ク を示すため RFSLx を使用 し てい ます。
コー ド例
リンク x
// Configure fx
カ ス タ ム ハー ド ウ ェ ア
ア ク セ ラ レー タ
cput Rc,RFSLx
MicroBlaze
// Store operands
レジス タ
フ ァ イル
put Ra, RFSLx // op 1
Op1Reg
Op2Reg
ConfigReg
fx
put Rb, RFSLx // op 2
// Load result
ResultReg
リンク x
get Rt, RFSLx
図 2‐25 : ス ト リ ーム リ ン ク (ハー ド ウ ェ ア ア ク セ ラ レー ト さ れた関数 fx を使用)
こ の方法は、 カ ス タ ム命令で ISA を拡張する のに似てい ますが、 プ ロ セ ッ サのパ イ プ ラ イ ンの全体的な ス ピー ド を カ
ス タ ム関数に依存 さ せない と い う 利点があ り ます。 ま た、 こ の タ イ プの機能拡張な ら ば、 ソ フ ト ウ ェ ア ツール チ ェー
ンへの追加要件 も あ り ません。
デバ ッ グおよび ト レース
デバ ッ グの概要
MicroBlaze に は、 一般的 に BDM ま た は バ ッ ク グ ラ ン ド デバ ッ グ モ ー ド デバ ッ ガ ー と 呼ばれ る 、 XMD (Xilinx
Microprocessor Debug ) な ど の JTAG ベース の ソ フ ト ウ ェ ア デバ ッ グ ツールをサポー ト す る ため、 デバ ッ グ イ ン タ ー
MicroBlaze プ ロ セ ッ サ リ フ ァ レ ン ス ガ イ ド
UG984 (v2015.1) 2015 年 4 月 15 日
UG984
(v2015.2) 2015 年 96 月 30
(v2015.3)
24 日
japan.xilinx.com
73
第 2 章 : MicroBlaze アーキテ ク チ ャ
フ ェ イ ス があ り ま す。 デバ ッ グ イ ン タ ーフ ェ イ ス は、 ザ イ リ ン ク ス FPGA の JTAG ポー ト と イ ン タ ーフ ェ イ スす る
MDM (Microprocessor Debug Module) コ アに接続す る ために設計 さ れてい ます。 マルチプ ロ セ ッ サ デバ ッ グ を イ ネー
ブルにす る ため、 1 つの MDM に複数の MicroBlaze イ ン ス タ ン ス を接続す る こ と がで き ます。
デバ ッ グ レ ジ ス タ には、 JTAG デバ ッ グ イ ン タ ーフ ェ イ ス を介 し て ア ク セ ス し ま す。 こ れ ら の レ ジ ス タ は、 ソ フ ト
ウ ェ アがユーザー ア ク セ ス可能なデバ ッ グ レ ジ ス タ にア ク セ ス で き る よ う MDM が コ ン フ ィ ギ ュ レー ト さ れていな
い限 り 、 プ ロ セ ッ サで実行 さ れてい る ソ フ ト ウ ェ アには直接は見え ません。
MDM の機能については、 『MicroBlaze Debug Module (MDM) 製品ガ イ ド 』 (PG115) を参照 し て く だ さ い。
C_DEBUG_ENABLED を 1 (基本) に設定 し て イ ネーブルにな る 基本デバ ッ グ機能には次の も のがあ り ます。
•
ハー ド ウ ェ ア ブ レー ク ポ イ ン ト お よ びウ ォ ッ チポ イ ン ト の数、 無制限の ソ フ ト ウ ェ ア プ レー ク ポ イ ン ト の数を
設定可能
•
外部プ ロ セ ッ サ制御に よ り 、 デバ ッ グ ツールの停止、 リ セ ッ ト 、 MicroBlaze のシ ン グル ス テ ッ プ を設定可能
•
メ モ リ 、 汎用レ ジ ス タ 、 特殊レ ジ ス タ か ら の読み出 し お よ び書 き 込み (但 し 、 EAR、 EDR、 ESR、 BTR、 お よ び
PVR0 か ら PVR12 ま では読み出 し 専用)
•
複数のプ ロ セ ッ サをサポー ト
C_DEBUG_ENABLED を 2 (拡張) に設定 し て イ ネーブルにな る 拡張デバ ッ グ機能には次の も のがあ り ます。
•
パフ ォーマ ン ス監視 イ ベン ト お よ びレ イ テ ン シ カ ウ ン タ ーの数を設定可能
•
プ ロ グ ラ ム ト レース
°
エンベデ ッ ド プ ロ グ ラ ム ト レース ( ト レース バ ッ フ ァ ー サ イ ズは設定可能)
°
MDM で接続 さ れてい る 複数プ ロ セ ッ サに対 し 外部プ ロ グ ラ ム ト レース
•
設定可能なプ ロ フ ァ イ リ ン グ バ ッ フ ァ ー サ イ ズで非侵入型プ ロ フ ァ イ リ ン グ サポー ト
•
複数のプ ロ セ ッ サ間の ク ロ ス ト リ ガー サポー ト 、 さ ら に MDM に よ り 提供 さ れ る 外部 ク ロ ス ト リ ガーの入力お
よ び出力
パ フ ォ ーマ ン ス監視
MicroBlaze の拡張デバ ッ グ を使用す る 場合は、 パフ ォーマ ン ス監視カ ウ ン タ ーが提供 さ れてお り 、 さ ま ざ ま な イ ベン
ト を カ ウ ン ト し 、 プ ロ グ ラ ム実行中の レ イ テ ン シ を測定す る こ と がで き ます。 イ ベン ト カ ウ ン タ ーお よ びレ イ テ ン シ
カ ウ ン タ ーの数は、 それぞれ、 C_DEBUG_EVENT_COUNTERS お よ び C_DEBUG_LATENCY_COUNTERS で設定で き 、 カ
ウ ン タ ー幅は C_DEBUG_COUNTER_WIDTH で、 32、 48、 ま たは 64 ビ ッ ト に設定で き ます。 デフ ォ ル ト コ ン フ ィ ギ ュ
レーシ ョ ンでは、 カ ウ ン タ ー幅が 32 ビ ッ ト に、 イ ベン ト カ ウ ン タ ーは 5 つ、 レ イ テ ン シ カ ウ ン タ ーは 1 つに設定 さ
れます。
イ ベン ト カ ウ ン タ ーは、 単に、 イ ベン ト が発生 し た回数を カ ウ ン ト し ますが、 レ イ テ ン シ カ ウ ン タ ーは次の情報を
計測 し ます。
•
イ ベン ト が発生 し た回数 (N)
•
イ ベン ト 開始か ら イ ベン ト 終了ま での ク ロ ッ ク サ イ ク ルを カ ウ ン ト し て計測 さ れた各 イ ベン ト レ イ テ ン シの合
計 (ΣL)。 平均レ イ テ ン シ を計算す る のに使用 し ます。
•
各 イ ベン ト レ イ テ ン シの平方の合計 (ΣL2)。 レ イ テ ン シの標準偏差を計算す る のに使用 し ます。
•
すべての イ ベン ト の レ イ テ ン シの最小計測値 (Lmin)
•
すべての イ ベン ト の レ イ テ ン シの最大計測値 (Lmax)
平均レ イ テ ン シ (μ) は次の式で計算 さ れます。
L
 = ‐‐‐‐‐‐‐
N
レ イ テ ン シの標準偏差 (σ) は、 次の式で求め ら れます。
MicroBlaze プ ロ セ ッ サ リ フ ァ レ ン ス ガ イ ド
UG984 (v2015.1) 2015 年 4 月 15 日
UG984 (v2015.3)
(v2015.2) 2015 年 96 月 30
24 日
japan.xilinx.com
74
第 2 章 : MicroBlaze アーキテ ク チ ャ
2
NL 2 –  L 
 = ‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐
N
カ ウ ン ト の開始/停止は、 パフ ォーマ ン ス カ ウ ン タ ー コ マ ン ド レ ジ ス タ ま たは ク ロ ス ト リ ガー イ ベン ト で制御 し ま
す (表 2-61 を参照)。
カ ウ ン タ ーを コ ン フ ィ ギ ュ レー ト し た り 、 読み出 し や書 き 込みを実行す る と き 、 パフ ォ ーマ ン ス カ ウ ン タ ー レ ジ ス
タ を介 し て、 カ ウ ン タ ーに順次ア ク セ ス し てい き ます。 各ア ク セ ス の後、 選択 さ れた カ ウ ン タ ー ア イ テ ムは イ ン ク リ
メ ン ト し ます。
パフ ォーマ ン ス カ ウ ン タ ー コ マ ン ド レ ジ ス タ を介 し て読み出 し をす る ため、 すべてのカ ウ ン タ ーは同時にサンプル
さ れます。 こ れは、 カ ウ ン ト 中ま たはカ ウ ン ト 停止後に行われます。
イ ベ ン ト カ ウ ン タ ーが最大値に達す る と 、 オーバー フ ロ ー ス テー タ ス ビ ッ ト が セ ッ ト さ れ、 外部割 り 込み信号
Dbg_Intr が 1 に設定 さ れます。 パフ ォーマ ン ス カ ウ ン タ ー コ マ ン ド レ ジ ス タ を介 し て カ ウ ン タ ーを ク リ アにす る
と 、 割 り 込み信号は 0 に リ セ ッ ト さ れます。
イ ベン ト カ ウ ン タ ーの 1 つを ク ロ ッ ク サ イ ク ル数を カ ウ ン ト す る ために使用 し 、 こ のカ ウ ン タ ーを、 あ ら か じ め設
定 さ れてい る サンプ リ ン グ間隔が過ぎ る と オーバーフ ロ ーに初期化す る こ と で、パフ ォーマ ン ス カ ウ ン タ ーを定期的
にサンプルす る ために外部割 り 込みを使用で き ます。
使用可能な イ ベン ト は表 2-40 に説明 さ れてお り 、 順番に リ ス ト さ れてい ます。
パフ ォーマ ン ス監視カ ウ ン タ ーを初期化 し て使用す る 手順は、 通常次の よ う にな り ます。
•
イ ベン ト を監視で き る よ う に初期化 し ます。
°
°
パフ ォーマ ン ス コ マ ン ド レ ジ ス タ (表 2-43) を使用 し て、 リ セ ッ ト ビ ッ ト を セ ッ ト し 、 選択 し た カ ウ ン タ ー
を最初のカ ウ ン タ に リ セ ッ ト し ます。
パフ ォーマ ン ス制御レ ジ ス タ を使用 し て、 すべてのカ ウ ン タ ーに対 し 順番に、 目的の イ ベン ト 数を書 き 込み
ます (表 2-42)。 デフ ォ ル ト コ ン フ ィ ギ ュ レーシ ョ ンであれば、 イ ベン ト カ ウ ン タ ーの場合は 5 回、 レ イ テ
ン シの場合は 1 回、 レ ジ ス タ に書 き 込みを実行 し ます。
•
ク リ ア ビ ッ ト お よ び開始ビ ッ ト を セ ッ ト し て、 パフ ォーマ ン ス コ マ ン ド レ ジ ス タ を使用 し て、 すべてのカ ウ ン
タ ーを ク リ アに し 、 監視を開始 し ます。
•
監視 し たいプ ロ グ ラ ム ま たはフ ァ ン ク シ ョ ン を実行 し ます。
•
サンプル ビ ッ ト お よ び停止ビ ッ ト を セ ッ ト し て、 パフ ォーマ ン ス コ マ ン ド レ ジ ス タ を使用 し て、 カ ウ ン タ ーを
サンプル し 、 監視を停止 し ます。
•
すべてのカ ウ ン タ ーか ら 結果を読み出 し ます。
•
°
パフ ォーマ ン ス コ マ ン ド レ ジ ス タ を使用 し て、 リ セ ッ ト ビ ッ ト を セ ッ ト し 、 選択 し た カ ウ ン タ ーを最初の
カ ウ ン タ に リ セ ッ ト し ます。
°
パフ ォーマ ン ス カ ウ ン タ ー ス テー タ ス レ ジ ス タ を使用 し て、 すべてのカ ウ ン タ ーの ス テー タ ス を順番に読
み出 し ます (表 2-44)。デフ ォ ル ト コ ン フ ィ ギ ュ レーシ ョ ンであれば、 イ ベン ト カ ウ ン タ ーの場合は 5 回、 レ
イ テ ン シ カ ウ ン タ ーの場合は 1 回、 レ ジ ス タ を読み出 し ます。 オーバーフ ロ ー ビ ッ ト お よ びフル ビ ッ ト が
セ ッ ト さ れていない こ と をチ ェ ッ ク し 、 結果が有効であ る こ と を確認 し ます。
°
パフ ォーマ ン ス コ マ ン ド レ ジ ス タ を使用 し て、 リ セ ッ ト ビ ッ ト を セ ッ ト し 、 選択 し た カ ウ ン タ ーを最初の
カ ウ ン タ に リ セ ッ ト し ます。
°
パフ ォーマ ン ス カ ウ ン タ ー デー タ 読み出 し レ ジ ス タ を使用 し て、 すべてのカ ウ ン タ ーのカ ウ ン タ ー ア イ テ
ム を順番に読み出 し ま す (表 2-52)。 表 2-53 にあ る よ う に、 デフ ォ ル ト コ ン フ ィ ギ ュ レ ーシ ョ ン で あれば、
イ ベン ト カ ウ ン タ ーの場合は 5 回、 レ イ テ ン シ カ ウ ン タ ーの場合は 4 回、 レ ジ ス タ を読み出 し ます。
計測 さ れた イ ベン ト に よ り ますが、 最終結果を計算 し ます。 た と えば、
°
計測 さ れた レ イ テ ン シの平均レ イ テ ン シお よ び標準偏差を求め る には、 上記の式を使用 し ます。
°
命令ご と の ク ロ ッ ク サ イ ク ル (CPI) は、 E30 / E0 で求め る こ と がで き ます。
°
命令お よ びデー タ キ ャ ッ シ ュ ヒ ッ ト 率は、 E11 / E10 お よ び E47 / E46 で求め る こ と がで き ます。
°
命令キ ャ ッ シ ュ ミ ス レ イ テ ン シは、 (E60(ΣL) - E60(N)) / (E10 - E11) で求め ら れ、 同等の式を使っ て、 デー タ
キ ャ ッ シ ュ 読み出 し お よ び書 き 込みの ミ ス レ イ テ ン シ を求め る こ と がで き ます。
MicroBlaze プ ロ セ ッ サ リ フ ァ レ ン ス ガ イ ド
UG984 (v2015.1) 2015 年 4 月 15 日
UG984 (v2015.3)
(v2015.2) 2015 年 96 月 30
24 日
japan.xilinx.com
75
第 2 章 : MicroBlaze アーキテ ク チ ャ
°
プ ロ グ ラ ムの浮動小数点命令の比率は E29/E0 です。
表 2‐40 : MicroBlaze パ フ ォ ーマ ン ス監視イ ベン ト
イベン
ト
イベ
ント
説明
説明
イ ベン ト カ ウ ン タ ーの イ ベン ト
0
任意の有効命令実行
29
浮動小数点(fadd、 ...、 fsqrt)
1
ロ ー ド ワー ド (lw、 lwi、 lwx) 実行
30
ク ロ ッ ク サ イ ク ル数
2
ロ ー ド ハーフ ワー ド (lhu、 hui) 実行
31
Immediate (imm) 実行
3
ロ ー ド バ イ ト (lbu, lbui) 実行
32
パ タ ーン比較 (pcmpbf、 pcmpeq、 pcmpne)
4
ス ト ア ワー ド (sw、 swi、 swx) 実行
33
符号拡張命令 (sext8、 sext16) 実行
5
ス ト ア ハーフ ワー ド (sh、 shi) 実行
34
命令キ ャ ッ シ ュ 無効化 (wic) 実行
6
ス ト ア バ イ ト (sb、 sbi) 実行
35
デー タ キ ャ ッ シ ュ の無効化 ま たは フ ラ ッ シ ュ (wdc)
実行
7
条件な し 分岐 (br、 bri、 brk、 brki) 実行
36
マシ ン ス テー タ ス命令 (msrset、 msrclr)
8
分岐 し た条件付 き 分岐 (beq、 ...、 bnei) 実行
37
遅延ス ロ ッ ト のあ る 条件な し 分岐を実行
9
分岐 し ていない条件付 き 分岐 (beq、 ...、 bnei) 実行
38
遅延ス ロ ッ ト のあ る 分岐 し た条件付 き 分岐を実行
10
命令キ ャ ッ シ ュ か ら のデー タ 要求
39
遅延 ス ロ ッ ト の あ る 分岐 し ていない条件付 き 分岐を
実行
11
命令キ ャ ッ シ ュ で ヒ ッ ト
40
演算命令が実行 さ れていない遅延ス ロ ッ ト
12
リ ク エ ス ト さ れたデー タ を デー タ キ ャ ッ シ ュ か ら 読
み出 し
41
ロ ー ド 命令 (lbu、 ...、 lwx) 実行
13
デー タ キ ャ ッ シ ュ で読み出 し デー タ ヒ ッ ト
42
ス ト ア命令 (sb、 ...、 swx) 実行
14
Write data request to data cache
43
MMU デー タ ア ク セ ス リ ク エ ス ト
15
デー タ キ ャ ッ シ ュ で書 き 込みデー タ ヒ ッ ト
44
条件付 き 分岐 (beq、 ...、 bnei) 実行
16
Load (lbu, ..., lwx) with r1 as operand executed
45
分岐 (br、 bri、 brk、 brki、 beqm、 ...、 bnei) 実行
17
Store (sb, ..., swx) with r1 as operand executed
46
Read or write data request from/to data cache
18
論理演算 (and、 andn、 or、 xor) 実行
47
読み出 し ま たは書 き 込みデー タ キ ャ ッ シ ュ ヒ ッ ト
19
演算 (add、 idiv、 mul、 rsub) 実行
48
MMU 例外発生
20
乗算 (mul、 mulh、 mulhu、 mulhsu、 muli)
49
MMU 命令側例外発生
21
バレル シ フ タ ー演算 (bsrl、 bsra、 bsll) 実行
50
MMU デー タ 側例外発生
22
シ フ ト 演算 (sra、 src、 srl) 実行
51
パ イ プ ラ イ ンの ス ト ール
23
例外 taken
52
分岐ま たは リ タ ーンの分岐先キ ャ ッ シ ュ ヒ ッ ト
24
割 り 込み発生
53
MMU 命令側ア ク セ ス リ ク エ ス ト
25
オペ ラ ン ド フ ェ ッ チ段 (OF) が原因でパ イ プ ラ イ ン が
ス ト ール
54
MMU 命令 TLB (ITLB) ヒ ッ ト
26
実行段 (EX) が原因でパ イ プ ラ イ ンが ス ト ール
55
MMU デー タ TLB (DTLB) ヒ ッ ト
27
メ モ リ 段 (MEM) が原因でパ イ プ ラ イ ンが ス ト ール
56
MMU 統合 TLB (UTLB) ヒ ッ ト
28
整数除算 (idiv、 idivu) 実行
レ イ テ ン シお よ び イ ベン ト カ ウ ン タ ーの イ ベン ト
57
入力か ら 割 り 込みベ ク タ ーま での割 り 込みレ イ テ ン シ
61
MMU ア ド レ ス ル ッ ク ア ッ プ レ イ テ ン シ
58
メ モ リ 読み出 し のデー タ キ ャ ッ シ ュ レ イ テ ン シ
62
ペ リ フ ェ ラ ル AXI イ ン タ ーフ ェ イ ス デー タ 読み出 し
レ イ テンシ
MicroBlaze プ ロ セ ッ サ リ フ ァ レ ン ス ガ イ ド
UG984 (v2015.1) 2015 年 4 月 15 日
UG984 (v2015.3)
(v2015.2) 2015 年 96 月 30
24 日
japan.xilinx.com
76
第 2 章 : MicroBlaze アーキテ ク チ ャ
表 2‐40 : MicroBlaze パ フ ォ ーマ ン ス監視イ ベン ト
イベン
ト
イベ
ント
説明
59
メ モ リ 書 き 込みのデー タ キ ャ ッ シ ュ レ イ テ ン シ
60
メ モ リ 読み出 し の命令キ ャ ッ シ ュ レ イ テ ン シ
63
説明
ペ リ フ ェ ラ ル AXI イ ン タ ーフ ェ イ ス デー タ 書 き 込み
レ イ テンシ
パフ ォーマ ン ス監視を コ ン フ ィ ギ ュ レー ト お よ び制御 し 、イ ベン ト お よ びレ イ テ ン シ カ ウ ン タ に読み出 し かお よ び書
き 込みを実行す る ために使用 さ れ る デバ ッ グ レ ジ ス タ は、 表 2-41 に リ ス ト さ れてい ます。 こ れ ら の レ ジ ス タ はすべ
て (パフ ォーマ ン ス カ ウ ン タ ー コ マ ン ド レ ジ ス タ を除 く )、 まずすべての イ ベン ト カ ウ ン タ ー用に、 続いて レ イ テ ン
シ カ ウ ン タ ー用に、 読み出 し /書 き 込みを行 う ために繰 り 返 し ア ク セ ス さ れます。
DBG_CTRL 値は、 レ ジ ス タ にア ク セ スする ための MDM デバ ッ グ レ ジ ス タ ア ク セ ス制御レ ジ ス タ で使用 さ れ る 値を
示 し 、 こ の値は、 デバ ッ グ レ ジ ス タ への MDM ソ フ ト ウ ェ ア ア ク セ ス で使用 さ れます。
表 2‐41 : MicroBlaze パ フ ォ ーマ ン ス デバ ッ グ レ ジ ス タ
レジス タ名
サイ ズ (ビ ッ ト )
MDM コマン ド
DBG_CTRL 値
R/W
説明
パ フ ォ ーマ ン ス カ ウ
ン タ ー制御
8
0101 0001
4A207
W
表 2-40 に あ る よ う に、 コ ン フ ィ ギ ュ
レ ー ト さ れた カ ウ ン タ ーそれぞれの イ
ベン ト を選択
パ フ ォ ーマ ン ス カ ウ
ン ター コ マン ド
5
0101 0010
4A404
W
カ ウ ン タ ーの ク リ ア、カ ウ ン タ ーの開始
ま たは停止、カ ウ ン タ ーのサンプルを実
行する コ マ ン ド
パ フ ォ ーマ ン ス カ ウ
ン タ ー ス テー タ ス
2
0101 0011
4A601
R
コ ン フ ィ ギ ュ レ ー ト さ れた パ フ ォ ーマ
ン ス カ ウ ン タ ーそれぞれのサ ン プル さ
れた ス テー タ ス を読み出 し
パ フ ォ ーマ ン ス カ ウ
ン タ ー デー タ 読み出
し
32
0101 0110
4AC1F
R
コ ン フ ィ ギ ュ レ ー ト さ れた パ フ ォ ーマ
ン ス カ ウ ン タ ーそれぞれのサ ン プル さ
れた値を読み出 し
パ フ ォ ーマ ン ス カ ウ
ン タ ー デー タ 書 き 込
み
32
0101 0111
4AE1F
W
コ ン フ ィ ギ ュ レ ー ト さ れた パ フ ォ ーマ
ン ス カ ウ ン タ ーそれぞれの初期値を書
き 込み
パ フ ォ ーマ ン ス カ ウ ン タ ー制御レ ジ ス タ
パフ ォーマ ン ス カ ウ ン タ ー制御レ ジ ス タ (PCCTRLR) は、 コ ン フ ィ ギ ュ レー ト さ れたパフ ォーマ ン ス カ ウ ン タ ーでカ
ウ ン ト さ れ る イ ベン ト を定義す る ために使用 さ れます。 コ ン フ ィ ギ ュ レー ト さ れた カ ウ ン タ ーすべての イ ベン ト を定
義す る には、 各カ ウ ン タ ーに対 し て こ の レ ジ ス タ を繰 り 返 し 書き 込む必要があ り ます。 こ の レ ジ ス タ は書 き 込み専用
レ ジ ス タ です。 読み出 し リ ク エ ス ト を出力 し て も 効力はな く 、 未定義デー タ が読み出 さ れます。
レ ジ ス タ を書 き 込みむたびに、 選択 さ れた カ ウ ン タ ーが イ ン ク リ メ ン ト し ます。 パフ ォ ーマ ン ス カ ウ ン タ ー コ マ ン
ド レ ジ ス タ を使用 し 、 選択 し た カ ウ ン タ ーを最初のカ ウ ン タ ーに再び リ セ ッ ト す る こ と がで き ます。






予約
イ ベン ト
図 2‐26 : パ フ ォ ーマ ン ス カ ウン タ ー制御レ ジ ス タ
MicroBlaze プ ロ セ ッ サ リ フ ァ レ ン ス ガ イ ド
UG984 (v2015.1) 2015 年 4 月 15 日
UG984 (v2015.3)
(v2015.2) 2015 年 96 月 30
24 日
japan.xilinx.com
77
第 2 章 : MicroBlaze アーキテ ク チ ャ
表 2‐42 : パフ ォ ーマ ン ス カ ウン タ ー制御レ ジ ス タ (PCCTRLR) ビッ ト
7:0
名前
イ ベン ト
説明
リセッ ト値
0
パフ ォーマ ン ス カ ウ ン タ ー イ ベン ト (表 2-40 を参照)
パ フ ォ ーマ ン ス カ ウ ン タ ー コ マ ン ド レ ジ ス タ
パフ ォーマ ン ス カ ウ ン タ ー コ マ ン ド レ ジ ス タ (PCCMDR) は、 すべてのカ ウ ン タ ーの ク リ ア、 開始、 停止、 ま たはサ
ンプルを行 う コ マ ン ド を実行す る ために使用 さ れます。 こ の レ ジ ス タ は書き 込み専用レ ジ ス タ です。 読み出 し リ ク エ
ス ト を出力 し て も 効力はな く 、 未定義デー タ が読み出 さ れます。













CLR STA STOP SAM RES
予約
図 2‐27 : パ フ ォ ーマ ン ス カ ウン タ ー コ マ ン ド レ ジス タ
表 2‐43 : パフ ォ ーマ ン ス カ ウン タ ー コ マ ン ド レ ジ ス タ (PCCMDR) ビッ ト
名前
4
クリア
3
説明
リセッ ト値
すべてのカ ウ ン タ ーを 0 に ク リ ア
0
開始
すべての カ ウ ン タ ーの コ ン フ ィ ギ ュ レ ー ト さ れた イ ベン ト を同時に カ ウ ン ト
開始
0
2
停止
すべてのカ ウ ン タ ーのカ ウ ン ト を同時に停止
0
1
サンプル
読み出 し のため、 すべてのカ ウ ン タ ーの ス テー タ スお よ び値を同時にサンプル
0
0
リ セッ ト
パフ ォーマ ン ス カ ウ ン タ ーの コ マ ン ド 、 ス テー タ ス、 読み出 し デー タ 、 書き 込
みデー タ を使用 し て ア ク セ スする ため、 ア ク セ ス さ れた カ ウ ン タ ーを最初の イ
ベン ト カ ウ ン タ ーに リ セ ッ ト
0
パ フ ォ ーマ ン ス カ ウ ン タ ー ス テー タ ス レ ジ ス タ
パフ ォーマ ン ス カ ウ ン タ ー ス テー タ ス レ ジ ス タ (PCSR) は、 カ ウ ン タ ーのサ ン プル さ れた ス テー タ ス を読み出 し ま
す。 コ ン フ ィ ギ ュ レー ト さ れた カ ウ ン タ ーすべての ス テー タ ス を読み出すには、 各カ ウ ン タ ーに対 し て こ の レ ジ ス タ
を繰 り 返 し 読み出す必要があ り ます。 こ の レ ジ ス タ は読み出 し 専用レ ジ ス タ です。 レ ジ ス タ に書 き 込み リ ク エ ス ト を
出 し て も 何 も 起 き ません。
レ ジ ス タ を読み出すたびに、 選択 さ れた カ ウ ン タ ーが イ ン ク リ メ ン ト し ます。 パフ ォ ーマ ン ス カ ウ ン タ ー コ マ ン ド
レ ジ ス タ を使用 し 、 選択 し た カ ウ ン タ ーを最初のカ ウ ン タ ーに再び リ セ ッ ト す る こ と がで き ます。



予約




OF FULL
図 2‐28 : パ フ ォ ーマ ン ス カ ウン タ ー ス テー タ ス レ ジ ス タ
MicroBlaze プ ロ セ ッ サ リ フ ァ レ ン ス ガ イ ド
UG984 (v2015.1) 2015 年 4 月 15 日
UG984 (v2015.3)
(v2015.2) 2015 年 96 月 30
24 日
japan.xilinx.com
78
第 2 章 : MicroBlaze アーキテ ク チ ャ
表 2‐44 : パ フ ォ ーマ ン ス カ ウン タ ー ス テー タ ス レ ジ ス タ (PCSR) ビッ ト
名前
説明
リセッ ト値
1
オーバー
フ ロー
カ ウ ン タ ーが最大値 を 超え て カ ウ ン ト す る と 、 こ の ビ ッ ト がセ ッ ト さ れ ま
す。
0
0
FULL
前の イ ベン ト が完了す る 前に新 し い レ イ テ ン シ カ ウ ン タ ー イ ベン ト が開始
す る と 、 こ の ビ ッ ト がセ ッ ト さ れます。 こ れは計測 さ れた値の正確 さ が落ち
た こ と を示 し ます。
0
パ フ ォ ーマ ン ス カ ウ ン タ ー デー タ 読み出 し レ ジ ス タ
パフ ォ ーマ ン ス カ ウ ン タ ー デー タ 読み出 し レ ジ ス タ (PCDRR) は、 カ ウ ン タ ーのサン プル さ れた値を読み出 し ます。
コ ン フ ィ ギ ュ レ ー ト さ れた カ ウ ン タ ーすべての値を読み出すには、 こ の レ ジ ス タ を繰 り 返 し 読み出す必要があ り ま
す。 こ の レ ジ ス タ は読み出 し 専用レ ジ ス タ です。 レ ジ ス タ に書 き 込み リ ク エ ス ト を出 し て も 何 も 起き ません。
コ ン フ ィ ギ ュ レーシ ョ ンに よ り ますが、カ ウ ン タ ーには 32 ビ ッ ト を超え る ビ ッ ト を格納で き る ため、特定カ ウ ン タ ー
の情報をすべて取 り 出すため、 こ の レ ジ ス タ を繰 り 返 し 読み出す必要があ る 場合があ り ます。 詳細は、 表 2-46 を参
照 し て く だ さ い。



ア イ テム
図 2‐29 : パ フ ォ ーマ ン ス カ ウン タ ー デー タ 読み出 し レ ジ ス タ
表 2‐45 : パ フ ォ ーマ ン ス カ ウン タ ー デー タ 読み出 し レ ジ ス タ (PCDRR) ビッ ト
名前
31:0
ア イ テム
説明
リセッ ト値
0
サンプル さ れた カ ウ ン タ ー値ア イ テ ム
表 2‐46 : パフ ォ ーマ ン ス カ ウン タ ー デー タ ア イ テム
カ ウン タ ー タ イ プ
アイ
テム
説明
C_DEBUG_COUNTER_WIDTH = 32
イ ベン ト 
カ ウ ン ター
1
イ ベン ト が発生 し た回数
レ イ テンシ 
カ ウ ン ター
1
イ ベン ト が発生 し た回数
2
各 イ ベン ト レ イ テ ン シの合計
3
各 イ ベン ト レ イ テ ン シの平方の和
4
31:16
15:0
最小計測レ イ テ ン シ、 16 ビ ッ ト
最大計測レ イ テ ン シ、 16 ビ ッ ト
C_DEBUG_COUNTER_WIDTH = 48
イ ベン ト 
カ ウ ン ター
1
31:16
15:0
2
イ ベン ト が発生 し た回数、 最下位ビ ッ ト 32 ビ ッ ト
MicroBlaze プ ロ セ ッ サ リ フ ァ レ ン ス ガ イ ド
UG984 (v2015.1) 2015 年 4 月 15 日
UG984 (v2015.3)
(v2015.2) 2015 年 96 月 30
24 日
0x0000
イ ベン ト が発生 し た回数、 最上位ビ ッ ト 16 ビ ッ ト
japan.xilinx.com
79
第 2 章 : MicroBlaze アーキテ ク チ ャ
表 2‐46 : パフ ォ ーマ ン ス カ ウン タ ー デー タ ア イ テム (続き)
カ ウン タ ー タ イ プ
レ イ テンシ 
カ ウ ン ター
アイ
テム
説明
1
イ ベン ト が発生 し た回数
2
31:16
15:0
3
各 イ ベン ト レ イ テ ン シの合計、 最下位ビ ッ ト 32 ビ ッ ト
4
31:16
15:0
5
各 イ ベン ト レ イ テ ン シの平方の和、 最下位ビ ッ ト 32 ビ ッ ト
6
最小計測レ イ テ ン シ、 32 ビ ッ ト
7
最大計測レ イ テ ン シ、 32 ビ ッ ト
0x0000
各 イ ベン ト レ イ テ ン シの合計、 最上位ビ ッ ト 16 ビ ッ ト
0x0000
各 イ ベン ト レ イ テ ン シの平方の和、 最上位ビ ッ ト 16 ビ ッ ト
C_DEBUG_COUNTER_WIDTH = 64
イ ベン ト 
カ ウ ン ター
1
イ ベン ト が発生 し た回数、 最上位ビ ッ ト 32 ビ ッ ト
2
イ ベン ト が発生 し た回数、 最下位ビ ッ ト 32 ビ ッ ト
レ イ テンシ 
カ ウ ン ター
1
イ ベン ト が発生 し た回数、 32 ビ ッ ト
2
各 イ ベン ト レ イ テ ン シの合計、 最上位ビ ッ ト 32 ビ ッ ト
3
各 イ ベン ト レ イ テ ン シの合計、 最下位ビ ッ ト 32 ビ ッ ト
4
各 イ ベン ト レ イ テ ン シの平方の和、 最上位ビ ッ ト 32 ビ ッ ト
5
各 イ ベン ト レ イ テ ン シの平方の和、 最下位ビ ッ ト 32 ビ ッ ト
6
最小計測レ イ テ ン シ、 32 ビ ッ ト
7
最大計測レ イ テ ン シ、 32 ビ ッ ト
パ フ ォ ーマ ン ス カ ウ ン タ ー デー タ 書き込みレ ジ ス タ
パ フ ォ ーマ ン ス カ ウ ン タ ー デー タ 書 き 込み レ ジ ス タ (PCDWR) は、 初期値を カ ウ ン タ ーに書 き 込み ます。 コ ン フ ィ
ギ ュ レー ト さ れた カ ウ ン タ ーすべてに書 き 込むには、 こ の レ ジ ス タ に繰 り 返 し 書き 込む必要があ り ます。 こ の レ ジ ス
タ は書 き 込み専用レ ジ ス タ です。 読み出 し リ ク エ ス ト を出力 し て も 効力はな く 、 未定義デー タ が読み出 さ れます。
表 2-46 にあ る よ う に、 コ ン フ ィ ギ ュ レーシ ョ ンに よ り ますが、 カ ウ ン タ ーには 32 ビ ッ ト を超え る ビ ッ ト を格納で き
る ため、 特定カ ウ ン タ ーの情報をすべて ア ッ プデー ト する ため、 こ の レ ジ ス タ に繰 り 返 し 書 き 込む必要があ る 場合が
あ り ます。



ア イ テム
図 2‐30 : パ フ ォ ーマ ン ス カ ウン タ ー デー タ 書き込みレ ジ ス タ
表 2‐47 : パ フ ォ ーマ ン ス カ ウン タ ー デー タ 書き込みレ ジ ス タ (PCDWR) ビッ ト
名前
31:0
ア イ テム
説明
カ ウ ン タ ーに書 き 込むためのカ ウ ン タ ー値ア イ テ ム
MicroBlaze プ ロ セ ッ サ リ フ ァ レ ン ス ガ イ ド
UG984 (v2015.1) 2015 年 4 月 15 日
UG984 (v2015.3)
(v2015.2) 2015 年 96 月 30
24 日
japan.xilinx.com
リセッ ト値
0
80
第 2 章 : MicroBlaze アーキテ ク チ ャ
プ ログ ラ ム ト レース
MicroBlaze の拡張デバ ッ グには、 プ ロ グ ラ ム実行 ト レース を イ ネーブルにす る プ ロ グ ラ ム ト レース機能が含まれ、 エ
ンベデ ッ ド ト レース バ ッ フ ァ ーに情報を格納す る か、 ま たは MDM へ情報を転送 し て、 プ ロ グ ラ ム実行の追跡を可
能に し ます。 MDM は、 C_DEBUG_EXTERNAL_TRACE が設定 さ れてい る と き に使用 さ れ、 外部 イ ン タ ーフ ェ イ ス を介
し て、 複数のプ ロ セ ッ サか ら のプ ロ グ ラ ム ト レース の出力を可能に し ます。
エンベデ ッ ド ト レース バ ッ フ ァ ーのサ イ ズは、 C_DEBUG_TRACE_SIZE を使用 し て、 8KB か ら 128KB の範囲で設定
で き ます。 C_DEBUG_TRACE_SIZE を 0 (None) に設定す る と 、 プ ロ グ ラ ム ト レース はデ ィ ス エーブルにな り ます。
プ ロ グ ラ ム ト レース では、ト レース デー タ 量が圧縮 さ れますが、プ ロ グ ラ ム実行フ ロ ーま たはプ ロ セ ッ サ ソ フ ト ウ ェ
ア ス テー ト 全体を再構築で き ます。 圧縮には主に 3 つの レベルがあ り ます。
•
完全 ト レース
設定 さ れてい る エンベデ ッ ド ト レース バ ッ フ ァ ー サ イ ズに よ り ますが、 512 か ら 8192 ア イ テ ムの範囲で、 144
ビ ッ ト を使用 し て実行 さ れた各命令のサ イ ク ル カ ウ ン ト な ど、 完全 ト レース情報を格納 し ます。
C_DEBUG_EXTERNAL_TRACE が設定 さ れてい る と 、 こ れは使用で き ません。
•
プロ グ ラ ム フ ロー
分岐 し た/分岐 し ていない分岐シーケ ン ス、 間接的な分岐、 割 り 込み、 例外、 ハー ド ウ ェ ア ブ レー ク の新 し いプ
ロ グ ラ ム カ ウ ン タ ーな ど、 プ ロ グ ラ ム フ ロ ーの変化を格納 し ます。
ま た、 リ タ ーン命令がプ ロ グ ラ ム フ ロ ーの再構築を簡素化で き る よ う に、 ま たは分岐 し たすべての分岐が自己変
更 コ ー ド を処理で き る よ う に、 オプシ ョ ンでプ ロ グ ラ ム カ ウ ン タ ーを格納する こ と も 可能です。
メ モ リ か ら 読み出 さ れたデー タ 、 ま たは AXI4-Stream イ ン タ ーフ ェ イ ス か ら フ ェ ッ チ さ れたデー タ は、 オプシ ョ
ンで、 プ ロ セ ッ サ ソ フ ト ウ ェ ア ス テー ト 全体を再構築で き る よ う に格納で き 、 逆方向のシ ン グル ス テ ッ プ機能
を可能に し ます。
•
プ ロ グ ラ ム フ ロ ーお よ びサ イ ク ル カ ウ ン ト
プ ロ グ ラ ム フ ロ ーのみ と 同 じ 情報 と 一緒に、 命令 と 命令 と の間のサ イ ク ル カ ウ ン ト を格納 し 、 プ ロ グ ラ ム実行
時間の再構築 も 可能に し ます。
ト レー ス制御レ ジ ス タ で ト レー ス ポ イ ン ト と し て設定 さ れてい る プ ロ グ ラ ム ブ レー ク ポ イ ン ト ま たは ウ ォ ッ チポ イ
ン ト にあ た る か、 ま たは ク ロ ス ト リ ガー イ ベン ト に よ り 、 ト レース コ マ ン ド レ ジ ス タ を介 し て、 ト レース は開始で
き ます (表 2-61 参照)。
ト レース バ ッ フ ァ ーがいっぱいにな る と 、 ト レース は自動的に停止 し ますが、 ト レース コ マ ン ド レ ジ ス タ ま たは ク
ロ ス ト リ ガー イ ベン ト に よ り 、 停止 さ せ る こ と も 可能です (表 2-61 参照)。
サ イ ク ル カ ウ ン ト は、 完全 ト レース を使用 し てい る 場合は最大 32768 ク ロ ッ ク サ イ ク ル ま でカ ウ ン ト で き 、 プ ロ グ
ラ ム フ ロ ーお よ びサ イ ク ル カ ウ ン ト を使用 し てい る 場合は、 命令 と 命令の間で 8182 サ イ ク ル ま で カ ウ ン ト で き ま
す。 サ イ ク ル カ ウ ン ト が こ の値を超え る と 、 ト レース ス テー タ ス レ ジ ス タ オーバーフ ロ ー ビ ッ ト が 1 にセ ッ ト さ れ
ます。
ト レース バ ッ フ ァ ーがい っぱいにな っ た と き 、 ま たはサ イ ク ル カ ウ ン ト がオーバーフ ロ ーにな っ た と き 、 プ ロ セ ッ
サを停止す る よ う ト レース を設定す る こ と は可能です。 その よ う に設定 し てお く と 、 ト レース バ ッ フ ァ ーを読み出す
のに必要な時間が原因で、 リ アル タ イ ム でないに も かかわ ら ず、 プ ロ グ ラ ム フ ロ ー全体を継続的に ト レース で き ま
す。
ト レース を コ ン フ ィ ギ ュ レー ト お よ び制御 し 、 エ ンベデ ッ ド ト レース バ ッ フ ァ ーを読み出すのに使用 さ れ る デバ ッ
グ レ ジ ス タ は、 表 2-48 に リ ス ト さ れてい ます。
MicroBlaze プ ロ セ ッ サ リ フ ァ レ ン ス ガ イ ド
UG984 (v2015.1) 2015 年 4 月 15 日
UG984 (v2015.3)
(v2015.2) 2015 年 96 月 30
24 日
japan.xilinx.com
81
第 2 章 : MicroBlaze アーキテ ク チ ャ
DBG_CTRL 値は、 レ ジ ス タ にア ク セ スする ための MDM デバ ッ グ レ ジ ス タ ア ク セ ス制御レ ジ ス タ で使用 さ れ る 値を
示 し 、 こ の値は、 デバ ッ グ レ ジ ス タ への MDM ソ フ ト ウ ェ ア ア ク セ ス で使用 さ れます。
表 2‐48 : MicroBlaze プ ログ ラ ム ト レース デバ ッ グ レ ジス タ
サイ ズ (ビ ッ ト )
MDM コ マン ド
DBG_CTRL 値
R/W
説明
ト レース制御
22
0110 0001
4C215
W
ト レース ポ イ ン ト 、 ト レース圧縮レベルを設
定、お よ びオプシ ョ ンで ト レース情報を格納
ト レース コ マ ン ド
4
0110 0010
4C403
W
ト レ ー ス バ ッ フ ァ ーの ク リ ア、 ト レ ー ス の
開始/停止、 お よ び現在のバ ッ フ ァ ー ア イ テ
ム数をサンプルする コ マ ン ド
ト レース 
ス テー タ ス
18
0110 0011
4C611
R
サンプル さ れた ト レース バ ッ フ ァ ー ス テー
タ ス の読み出 し
ト レース デー タ
読み出 し 1
18
0110 0110
4CC11
R
エンベデ ッ ド ト レース バ ッ フ ァ ーか ら 一番
古いア イ テ ム を読み出 し
レジス タ名
1. C_DEBUG_EXTERNAL_TRACE が設定 さ れてい る と 、 こ の レ ジ ス タ は使用で き ません。
ト レース制御レ ジ ス タ
ト レース制御レ ジ ス タ (TCTRLR) は、 ト レース動作を定義す る ために使用 さ れます。 こ の レ ジ ス タ は書 き 込み専用レ
ジ ス タ です。 読み出 し リ ク エ ス ト を出力 し て も 効力はな く 、 未定義デー タ が読み出 さ れます。

 



予約
ト レースポ イ ン ト











レ ベル FH SPC SL SR
図 2‐31 : ト レース制御レ ジス タ
表 2‐49 : ト レース制御レ ジ ス タ (TCTRLR) ビッ ト
名前
説明
リセッ ト値
21:6
ト レース ポ
イン ト
対応す る ブ レー ク ポ イ ン ト ま たは ウ ォ ッ チポ イ ン ト を ト レー ス ポ イ ン ト に
変更
0
5:4
レベル
ト レース圧縮レベル
00 = 完全 ト レース (C_DEBUG_EXTERNAL_TRACE と 一緒には使用で き ない)
01 = プ ロ グ ラ ム フ ロ ー
10 = プ ロ グ ラ ム フ ロ ーお よ びサ イ ク ル カ ウ ン ト
11 = 予約
00
3
フル停止
フ ル ト レ ー ス バ ッ フ ァ ー ま た はサ イ ク ル カ ウ ン ト オーバー フ ロ ーでデ
バ ッ グ停止
0
2
プログラ ム
カ ウ ン ター
(PC) 保存
分岐 し てい る すべての分岐に対 し 新 し いプ ロ グ ラ ム カ ウ ン タ ーを保存
0
1
ロ ー ド 保存
ロ ー ド を保存 し 、 命令新規デー タ 値を取得
0
0
リ タ ーン
保存
戻 り 命令に対 し 新 し いプ ロ グ ラ ム カ ウ ン タ ーを保存
0
MicroBlaze プ ロ セ ッ サ リ フ ァ レ ン ス ガ イ ド
UG984 (v2015.1) 2015 年 4 月 15 日
UG984
(v2015.2) 2015 年 96 月 30
(v2015.3)
24 日
japan.xilinx.com
82
第 2 章 : MicroBlaze アーキテ ク チ ャ
ト レース コ マ ン ド レ ジ ス タ
ト レース コ マ ン ド レ ジ ス タ (TCMDR) は、 ト レース の ク リ ア、 開始、 停止だけでな く 、 ト レース ア イ テ ム数をサン
プルす る ための コ マ ン ド を出力す る のに使用 さ れます。 こ の レ ジ ス タ は書き 込み専用レ ジ ス タ です。 読み出 し リ ク エ
ス ト を出力 し て も 効力はな く 、 未定義デー タ が読み出 さ れます。







   
CLRSTA STOP SAM
予約
図 2‐32 : ト レース コ マ ン ド レ ジ ス タ
表 2‐50 : ト レース コ マ ン ド レ ジ ス タ (TCMDR) ビッ ト
名前
説明
3
クリア
2
リセッ ト値
ト レース ス テー タ ス を ク リ アに し 、 ト レース バ ッ フ ァ ーを空にす る
0
開始
ト レース をすぐ に開始
0
1
停止
ト レース をすぐ に停止
0
0
サンプル
ト レース バ ッ フ ァ ーの現在のア イ テ ム数をサンプル
0
ト レース ス テー タ ス レ ジ ス タ
ト レース ス テー タ ス レ ジ ス タ (TSR) は、 ト レース が開始 し たか ど う かの判断、 サ イ ク ル カ ウ ン ト オーバー フ ロ ーの
チ ェ ッ ク 、 エンベデ ッ ド ト レース バ ッ フ ァ ーでのサンプル さ れた ア イ テ ム数の読み出 し を行 う ために使用 さ れます。
こ の レ ジ ス タ は読み出 し 専用レ ジ ス タ です。 レ ジ ス タ に書 き 込み リ ク エ ス ト を出 し て も 何 も 起き ません。

   



-

STA OF
予約
ア イ テム カ ウ ン ト
図 2‐33 : ト レース ス テー タ ス レ ジ ス タ
表 2‐51 : ト レース ス テー タ ス レ ジ ス タ (TSR) ビッ ト
名前
説明
リセッ ト値
17
開始
ト レ ー ス 開始、 ト レ ー ス が開始す る と き は 1 にセ ッ ト 、 停止 し た と き は 0
にク リ ア
0
16
オーバー
フ ロー
サ イ ク ル カ ウ ン ト オーバーフ ロ ー、 サ イ ク ル カ ウ ン ト オーバーフ ロ ーの
と き は 1 にセ ッ ト 、 ク リ ア コ マ ン ド に よ り 0 に ク リ ア
0
15:0
ア イ テム
カウン ト
ト レース バ ッ フ ァ ー ア イ テ ム カ ウ ン ト をサンプル
0x0000
ト レース デー タ 読み出 し レ ジ ス タ
ト レース デー タ 読み出 し レ ジ ス タ (TDRR) には、 エンベデ ッ ド ト レース バ ッ フ ァ ーか ら 読み出 さ れた一番古いア イ
テ ムが含ま れてい ます。 こ の レ ジ ス タ が読み出 さ れ る と 、 次のア イ レ ムが ト レース バ ッ フ ァ ーか ら 読み出 さ れます。
ト レース ス テー タ ス レ ジ ス タ のア イ テ ム数で示 さ れてい る 、 ト レース バ ッ フ ァ ーで使用可能なア イ テ ム を超え る 数
を読み出す と エ ラ ーにな り ます。 こ の レ ジ ス タ は読み出 し 専用レ ジ ス タ です。 レ ジ ス タ に書 き 込み リ ク エ ス ト を出 し
て も 何 も 起 き ません。
MicroBlaze プ ロ セ ッ サ リ フ ァ レ ン ス ガ イ ド
UG984 (v2015.1) 2015 年 4 月 15 日
UG984 (v2015.3)
(v2015.2) 2015 年 96 月 30
24 日
japan.xilinx.com
83
第 2 章 : MicroBlaze アーキテ ク チ ャ
圧縮レベル と 格納 さ れてい る デー タ に よ り ますが、 ト レース デー タ エン テ ィ テ ィ は 18 ビ ッ ト を超え る ビ ッ ト で構成
さ れてい る 可能性があ る ため、 特定デー タ 絵テ ィ テ ィ の情報をすべて取 り 出すため、 こ の レ ジ ス タ を繰 り 返 し 読み出
す必要があ る 場合があ り ます。 詳細は、 表 2-53 を参照 し て く だ さ い。

 



予約
バ ッ フ ァ ー値
図 2‐34 : ト レース デー タ 読み出 し レ ジス タ
表 2‐52 : ト レース デー タ 読み出 し レ ジス タ (TDRR) ビッ ト
名前
17:0
バッ フ ァー
値
説明
リセッ ト値
0x00000
エンベデ ッ ド ト レース バ ッ フ ァ ー ア イ テ ム
表 2‐53 : ト レース カ ウン タ ー デー タ エ ン テ ィ テ ィ
エンテ ィ テ ィ
完全 ト レース
MicroBlaze プ ロ セ ッ サ リ フ ァ レ ン ス ガ イ ド
UG984 (v2015.1) 2015 年 4 月 15 日
UG984 (v2015.3)
(v2015.2) 2015 年 96 月 30
24 日
項目
ビッ ト
説明
1
17:3
2:0
実行 さ れた命令のサ イ ク ル カ ウ ン ト
マシ ン ス テー タ ス レ ジ ス タ [17:19]
2
17:6
5:1
0
マシ ン ス テー タ ス レ ジ ス タ [20:31]
デス テ ィ ネーシ ョ ン レ ジ ス タ ア ド レ ス (r0 - r31)、書 き 込ま
れてい る 場合は有効
1 にセ ッ ト さ れてい る 場合は、 デス テ ィ ネーシ ョ ン レ ジ ス
タ に書 き 込み
3
17:13
12
11
10
9:6
5:0
例外ス テー タ ス レ ジ ス タ 、 例外があ る 場合は有効
1 にセ ッ ト さ れてい る 場合は例外があ る
1 にセ ッ ト さ れてい る 場合は ロ ー ド 命令でデー タ 読み出 し
1 にセ ッ ト さ れてい る 場合は ス ト ア命令でデー タ 書 き 込み
バ イ ト イ ネーブル、 ス ト ア命令の場合有効
ス ト ア命令の場合は書き 込みデー タ [0:5]、 ま たはその他の
命令の場合はデス テ ィ ネーシ ョ ン レ ジ ス タ デー タ [0:5]
4
17:0
書き 込みデー タ [6:23]、 ま たはデス テ ィ ネーシ ョ ン レ ジ ス
タ デー タ [6:23]
5
17:10
9:0
書き 込みデー タ [24:31]、ま たはデス テ ィ ネーシ ョ ン レ ジ ス
タ デー タ [24:31]
ロ ー ド お よ びス ト ア命令の場合はデー タ ア ド レ ス [0:9]、ま
たは
その他の命令の場合は実行 さ れた命令 [0:9]
6
17:0
デー タ ア ド レ ス [10:27] ま たは実行 さ れた命令 [10:27]
7
17:14
13:0
デー タ ア ド レ ス [28:31] ま たは実行 さ れた命令 [28:31]
プ ラ グ ラ ム カ ウ ン タ ー [0:13]
8
17:0
プ ラ グ ラ ム カ ウ ン タ ー [14:31]
japan.xilinx.com
84
第 2 章 : MicroBlaze アーキテ ク チ ャ
表 2‐53 : ト レース カ ウン タ ー デー タ エ ン テ ィ テ ィ (続き)
エンテ ィ テ ィ
項目
ビッ ト
説明
プ ロ グ ラ ム フ ロ ー : 分岐
1
17:16
15:12
11:0
00 - ア イ テ ムにプ ロ グ ラ ム フ ロ ー分岐が含まれ る
ア イ テ ム (1 - 12) でカ ウ ン ト さ れ る 分岐の数 (N)
左の N ビ ッ ト はプ ロ グ ラ ム フ ロ ーの分岐を表す こ の ビ ッ
ト が 1 の場合、 分岐は分岐 し てお り 、 それ以外の場合は分
岐 し ていない
プロ グ ラ ム フ ロー : プロ グ ラ ム カ ウ
ン ター
1
17:16
15:0
01 - ア イ テ ムにプ ロ グ ラ ム カ ウ ン タ ー値が含まれ る
プ ラ グ ラ ム カ ウ ン タ ー [0:15]
2
17:16
15:0
01 - ア イ テ ムにプ ロ グ ラ ム カ ウ ン タ ー値が含まれ る
プ ラ グ ラ ム カ ウ ン タ ー [16:31]
1
17:16
15:0
10 - ア イ テ ムに読み出 し デー タ が含まれ る
ロ ー ド お よ び get 命令で読み出 さ れたデー タ [0:15]
2
17:16
15:0
10 - ア イ テ ムに読み出 し デー タ が含まれ る
ロ ー ド お よ び get 命令で読み出 さ れたデー タ [15:31]
プ ロ グ ラ ム フ ロ ー (サ イ ク ル カ ウ ン
ト 付き) : 
分岐お よ び短いサ イ ク ル カ ウ ン ト
1
17:16
15:14
13:8
7
6:1
0
00 - ア イ テ ムにプ ロ グ ラ ム フ ロ ー分岐が含まれ る
01、 10 - カ ウ ン ト さ れた (1 - 2) 分岐の数 (N)
前に実行 さ れた命令のサ イ ク ル カ ウ ン ト
1 にセ ッ ト の場合は分岐は分岐 し てお り 、 それ以外の場合
は分岐 し ていない
前に実行 さ れた命令のサ イ ク ル カ ウ ン ト
1 にセ ッ ト の場合は分岐は分岐 し てお り 、 それ以外の場合
は分岐 し ていない
プ ロ グ ラ ム フ ロ ー (サ イ ク ル カ ウ ン
ト 付き) : 
分岐お よ び長いサ イ ク ル カ ウ ン ト
1
17:16
15:14
13:1
0
00 - ア イ テ ムにプ ロ グ ラ ム フ ロ ー分岐が含まれ る
11 - ア イ テ ムに分岐お よ び長いサ イ ク ル カ ウ ン ト が含まれ
る
前に実行 さ れた命令のサ イ ク ル カ ウ ン ト
1 にセ ッ ト の場合は分岐は分岐 し てお り 、 それ以外の場合
は分岐 し ていない
プ ロ グ ラ ム フ ロ ー : 読み出 し デー タ
非侵入型のプ ロ フ ァ イ リ ング
拡張デバ ッ グ では、 プ ロ グ ラ ム実行の統計を格納す る のにプ ロ フ ァ イ リ ン グ バ ッ フ ァ ーを使用す る 、 非侵入型プ ロ
フ ァ イ リ ン グが提供 さ れてい ます。 プ ロ フ ァ イ リ ン グ バ ッ フ ァ ーのサ イ ズは、 C_DEBUG_PROFILE_SIZE を使用 し
て、 4KB か ら 128KB の範囲で設定で き ま す。 C_DEBUG_PROFILE_SIZE を 0 (None) に設定す る と 、 非侵入型プ ロ
フ ァ イ リ ン グはデ ィ ス エーブルにな り ます。
プ ロ フ ァ イ リ ン グ バ ッ フ ァ ーは ビ ン に分かれていて、 各ビ ンは、 あ る ア ド レ ス範囲内で実行 さ れた命令数ま たは ク
ロ ッ ク サ イ ク ル数を カ ウ ン ト し ます。 各ピ ンは、 命令ま たはサ イ ク ルを 236 - 1 = 68719476735 ま でカ ウ ン ト し ます。
プ ロ フ ァ イ リ ン グ ロ ウ ア ド レ ス レ ジ ス タ お よ びプ ロ フ ァ イ リ ン グ ハ イ ア ド レ ス レ ジ ス タ を介 し て定義 さ れ る プ ロ
フ ァ イ ル さ れた ア ド レ ス範囲お よ びバ ッ フ ァ ー サ イ ズに よ っ て、 各ビ ンのア ド レ ス範囲は決ま り ます。
プ ロ フ ァ イ リ ン グの開始/停止は、 プ ロ フ ァ イ リ ン グ制御レ ジ ス タ ま たは ク ロ ス ト リ ガー イ ベン ト で制御 し ます 
(表 2-61 を参照)。
プ ロ フ ァ イ リ ン グ を コ ン フ ィ ギ ュ レー ト お よ び制御 し 、 プ ロ フ ァ イ リ ン グ バ ッ フ ァ ーの読み出 し /書 き 込みに使用 さ
れ る デバ ッ グ レ ジ ス タ は、 表 2-54 に リ ス ト さ れてい ます。
MicroBlaze プ ロ セ ッ サ リ フ ァ レ ン ス ガ イ ド
UG984 (v2015.1) 2015 年 4 月 15 日
UG984 (v2015.3)
(v2015.2) 2015 年 96 月 30
24 日
japan.xilinx.com
85
第 2 章 : MicroBlaze アーキテ ク チ ャ
DBG_CTRL 値は、 レ ジ ス タ にア ク セ スする ための MDM デバ ッ グ レ ジ ス タ ア ク セ ス制御レ ジ ス タ で使用 さ れ る 値を
示 し 、 こ の値は、 デバ ッ グ レ ジ ス タ への MDM ソ フ ト ウ ェ ア ア ク セ ス で使用 さ れます。
表 2‐54 : MicroBlaze プ ロ フ ァ イ リ ング デバ ッ グ レ ジ ス タ
レ ジス タ 名
サイ ズ (ビ ッ MDM コ マ ン
ト)
ド
DBG_CTRL 値
R/W
説明
プロ フ ァ イ リ ング
制御
8
0111 0001
4E207
W
プ ロ フ ァ イ リ ン グ の イ ネ ー ブ ル/デ ィ ス
エーブル、 カ ウ ン ト 方法お よ びビ ンの使用
方法の設定
プロ フ ァ イ リ ング
ロウ アドレス
30
0111 0010
4E41D
W
プ ロ フ ァ イ ル さ れた ア ド レ ス 範囲の低ア
ド レ ス を定義
プロ フ ァ イ リ ング
ハイ ア ド レ ス
30
0111 0011
4E61D
W
プ ロ フ ァ イ ル さ れた ア ド レ ス 範囲の高ア
ド レ ス を定義
W
読み出 し ま た は書 き 込み を す る プ ロ フ ァ
イ リ ン グ バ ッ フ ァ ーのア ド レ ス を設定 (ビ
ン)
プロ フ ァ イ リ ング
バッ フ ァー 
アド レス
9 - 14
0111 0100
9: 4E808
10: 4E809
...
14: 4E80D
プロ フ ァ イ リ ング
デー タ 読み出 し
36
0111 0110
4EC23
R
プ ロ フ ァ イ リ ン グ バ ッ フ ァ ーか ら の読み
出 し デー タ
プロ フ ァ イ リ ング
デー タ 書 き 込み
36
0111 0111
4EE23
W
プ ロ フ ァ イ リ ン グ バ ッ フ ァ ーへの書 き 込
みデー タ
プ ロ フ ァ イ リ ング制御レ ジ ス タ
プ ロ フ ァ イ リ ン グ制御レ ジ ス タ (PCTRLR) は、 プ ロ フ ァ イ リ ン グの イ ネーブル (開始)/デ ィ ス エーブル (停止) のため
に使用 さ れます。 ま た、 実行命令数ま たは実行 ク ロ ッ ク サ イ ク ルのカ ウ ン ト の設定、 お よ びプ ロ フ ァ イ リ ン グ バ ッ
フ ァ ー ビ ンの使用方法の定義に も 使用 さ れます。 こ の レ ジ ス タ は書 き 込み専用レ ジ ス タ です。 読み出 し リ ク エ ス ト を
出力 し て も 効力はな く 、 未定義デー タ が読み出 さ れます。
ビ ン制御値 (B) は、 次の式で求め る こ と がで き ます。
B =
H–L+S4
log 2 ‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐
S4
L はプ ロ フ ァ イ リ ン グ ロ ウ レ ジ ス タ 、 H はプ ロ フ ァ イ リ ン グ ハ イ レ ジ ス タ 、 S は C_DEBUG_PROFILE_SIZE にな り
ます。









ENA DIS CC
予約



ビ ン制御
図 2‐35 : プ ロ フ ァ イ リ ング制御レ ジス タ
表 2‐55 : プ ロ フ ァ イ リ ン グ制御レ ジス タ (PCTRLR) ビッ ト
名前
説明
7
イ ネーブル
プ ロ フ ァ イ リ ン グの イ ネーブル (開始)
0
6
デ ィ ス エー
ブル
プ ロ フ ァ イ リ ン グのデ ィ ス エーブル (停止)
0
MicroBlaze プ ロ セ ッ サ リ フ ァ レ ン ス ガ イ ド
UG984 (v2015.1) 2015 年 4 月 15 日
UG984 (v2015.3)
(v2015.2) 2015 年 96 月 30
24 日
japan.xilinx.com
リセッ ト値
86
第 2 章 : MicroBlaze アーキテ ク チ ャ
表 2‐55 : プ ロ フ ァ イ リ ン グ制御レ ジス タ (PCTRLR) (続き)
ビッ ト
名前
5
サイ クル カ
ウン ト のイ
ネーブル
4:0
ビ ン制御
説明
実行 さ れた命令の ク ロ ッ ク サ イ ク ルを カ ウ ン ト
0 = デ ィ ス エーブル、 実行 さ れた命令のカ ウ ン ト 数
1 = イ ネーブル、 実行 さ れた命令の ク ロ ッ ク サ イ ク ルの数
プ ロ フ ァ イ リ ン グ バ ッ フ ァ ーの各ビ ンでカ ウ ン ト さ れ る ア ド レ ス数
リセッ ト値
0
00000
プ ロ フ ァ イ リ ング ロ ウ ア ド レ ス レ ジ ス タ
プ ロ フ ァ イ リ ン グ ロ ウ ア ド レ ス レ ジ ス タ (PLAR) は、 プ ロ フ ァ イ ル さ れたエ リ アの ロ ウ ワ ー ド ア ド レ ス を定義す る
のに使用 さ れます。 こ の レ ジ ス タ は書 き 込み専用レ ジ ス タ です。 読み出 し リ ク エ ス ト を出力 し て も 効力はな く 、 未定
義デー タ が読み出 さ れます。
 




予約
ロウ ワー ド ア ド レ ス
図 2‐36 : プ ロ フ ァ イ リ ン グ ロウ ア ド レ ス レ ジ ス タ
表 2‐56 : プ ロ フ ァ イ リ ング ロウ ア ド レ ス レ ジス タ (PLAR) ビッ ト
名前
29:0
ロウ
ワー ド
説明
プ ロ フ ァ イ ル さ れたエ リ アの ロ ウ ワー ド ア ド レ ス
リセッ ト値
0
プ ロ フ ァ イ リ ング ハイ ア ド レ ス レ ジ ス タ
プ ロ フ ァ イ リ ン グ ハ イ ア ド レ ス レ ジ ス タ (PHAR) は、プ ロ フ ァ イ ル さ れたエ リ アのハ イ ワ ー ド ア ド レ ス を定義す る
のに使用 さ れます。 こ の レ ジ ス タ は書 き 込み専用レ ジ ス タ です。 読み出 し リ ク エ ス ト を出力 し て も 効力はな く 、 未定
義デー タ が読み出 さ れます。
 




予約
ハイ ワー ド ア ド レ ス
図 2‐37 : プ ロ フ ァ イ リ ング ハイ ア ド レ ス レ ジス タ
表 2‐57 : プ ロ フ ァ イ リ ング ハイ ア ド レ ス レ ジス タ (PHAR) ビッ ト
名前
29:0
ハイ
ワー ド
説明
プ ロ フ ァ イ ル さ れたエ リ アのハ イ ワ ー ド ア ド レ ス
リセッ ト値
0
プ ロ フ ァ イ リ ング バ ッ フ ァ ー ア ド レ ス レ ジ ス タ
プ ロ フ ァ イ リ ン グ バ ッ フ ァ ー ア ド レ ス レ ジ ス タ (PBAR) は、読み出す/書き 込むプ ロ フ ァ イ リ ン グ バ ッ フ ァ ーのビ ン
を定義す る のに使用 さ れます。 C_DEBUG_PROFILE_SIZE の設定に よ り 、 こ の レ ジ ス タ のビ ッ ト 数は変わ り ます。 こ
MicroBlaze プ ロ セ ッ サ リ フ ァ レ ン ス ガ イ ド
UG984 (v2015.1) 2015 年 4 月 15 日
UG984 (v2015.3)
(v2015.2) 2015 年 96 月 30
24 日
japan.xilinx.com
87
第 2 章 : MicroBlaze アーキテ ク チ ャ
の レ ジ ス タ は書 き 込み専用レ ジ ス タ です。 読み出 し リ ク エ ス ト を出力 し て も 効力はな く 、 未定義デー タ が読み出 さ れ
ます。

 



予約
バッ フ ァー ア ド レス
図 2‐38 : プ ロ フ ァ イ リ ン グ バ ッ フ ァ ー ア ド レ ス レ ジ ス タ
表 2‐58 : プ ロ フ ァ イ リ ング バ ッ フ ァ ー ア ド レ ス レ ジ ス タ (PBAR) ビッ ト
名前
説明
リセッ ト値
n-1:0
バッ
フ ァー
アドレス
読み出 し ま たは書 き 込みをする プ ロ フ ァ イ リ ン グ バ ッ フ ァ ーのビ ン。 ビ ッ ト
数 (n) は、4KB バ ッ フ ァ ーの場合は 9、8KB バ ッ フ ァ ーの場合は 10、.... 128KB
バ ッ フ ァ ーの場合は 14。
0
プ ロ フ ァ イ リ ング デー タ 読み出 し レ ジ ス タ
プ ロ フ ァ イ リ ン グ デー タ 読み出 し レ ジ ス タ (PDRR) は、 プ ロ フ ァ イ リ ン グ バ ッ フ ァ ー ア ド レ ス レ ジ ス タ で示 さ れ る
ビ ンの値を読み出 し 、 プ ロ フ ァ イ リ ン グ バ ッ フ ァ ー ア ド レ ス レ ジ ス タ を イ ン ク リ メ ン ト し ます。 こ の レ ジ ス タ は読
み出 し 専用レ ジ ス タ です。 レ ジ ス タ に書 き 込み リ ク エ ス ト を出 し て も 何 も 起 き ません。
レ ジ ス タ をデバ ッ グす る ため MDM ソ フ ト ウ ェ ア ア ク セ ス で こ の レ ジ ス タ を読み出す場合、 2 回連続ア ク セ スす る と
デー タ が読み出 さ れます。



読み出 し デー タ
図 2‐39 : プ ロ フ ァ イ リ ング デー タ 読み出 し レ ジス タ
表 2‐59 : プ ロ フ ァ イ リ ング デー タ 読み出 し レ ジ ス タ (PDRR) ビッ ト
名前
35:0
読み出 し
デー タ
説明
ビ ンで実行 さ れた命令数ま たは実行 さ れた ク ロ ッ ク サ イ ク ル数
リセッ ト値
0
プ ロ フ ァ イ リ ング デー タ 書き込みレ ジ ス タ
プ ロ フ ァ イ リ ン グ デー タ 書 き 込みレ ジ ス タ (PDWR) は、プ ロ フ ァ イ リ ン グ バ ッ フ ァ ー ア ド レ ス レ ジ ス タ で示 さ れ る
ビ ンに新 し い値を書 き 込み、 プ ロ フ ァ イ リ ン グ バ ッ フ ァ ー ア ド レ ス レ ジ ス タ を イ ン ク リ メ ン ト し ます。 こ の レ ジ ス
タ は書 き 込み専用レ ジ ス タ です。 読み出 し リ ク エ ス ト を出力 し て も 効力はな く 、 未定義デー タ が読み出 さ れます。
こ の レ ジ ス タ は、プ ロ フ ァ イ リ ン グ を イ ネーブルする 前にプ ロ フ ァ イ リ ン グ バ ッ フ ァ ーを ク リ アにす る ために使用で
き ます。
MicroBlaze プ ロ セ ッ サ リ フ ァ レ ン ス ガ イ ド
UG984 (v2015.1) 2015 年 4 月 15 日
UG984 (v2015.3)
(v2015.2) 2015 年 96 月 30
24 日
japan.xilinx.com
88
第 2 章 : MicroBlaze アーキテ ク チ ャ
レ ジ ス タ をデバ ッ グす る ため MDM ソ フ ト ウ ェ ア ア ク セ ス で こ の レ ジ ス タ に書 き 込む場合、 2 回連続ア ク セ スす る と
デー タ が書 き 込ま れます。



書き込みデー タ
図 2‐40 : プ ロ フ ァ イ リ ング デー タ 書き込みレ ジス タ
表 2‐60 : プ ロ フ ァ イ リ ング デー タ 書き込みレ ジ ス タ (PDWR) ビッ ト
名前
説明
35:0
書 き 込み
デー タ
リセッ ト値
0
ビ ンに書 き 込むデー タ
ク ロ ス ト リ ガー サポー ト
ク ロ ス ト リ ガーは、 DBG_STOP と MB_Halted の 2 つの信号で指定で き ます。
•
DBG_STOP 入力が 1 に設定 さ れてい る と 、 い く つか命令が出た後に MicroBlaze は停止 し ます。 XMD は、
MicoBlaze の停止 を 検出 し 、 停止の発生 し た 箇所 を 示 し ま す。 こ の信号は、 ChipScope™ ILA (Integrated Logic
Analyzer) の ト リ ガーな ど の外部 イ ベン ト で MicroBlaze プ ロ セ ッ サ を停止 さ せる のに使用で き ます。
•
MicroBlaze が停止す る と き は常に MB_Halted 出力信号は 1 に設定 さ れてい ます。 た と えば、 ブ レー ク ポ イ ン ト
ま たは ウ ォ ッ チポ イ ン ト を通過 し た後、 停止 XMD コ マ ン ド の後、 ま たは DBG_STOP 入力が設定 さ れた と き な
ど です。 こ の出力は MicroBlaze 実行が XMD コ マ ン ド で再開 さ れ る と ク リ アにな り ます。
MB_Halted 信号は、 ChipScope ILA を ト リ ガー し た り 、 DBG_STOP 入力に接続 し てマルチプ ロ セ ッ サ シ ス テ ム
でほかの MicroBlaze コ ア を停止す る のに使用で き ます。
拡張デバ ッ グでは、 ク ロ ス ト リ ガーは MDM と 共に使用する と サポー ト さ れます。 MDM には、 接続 さ れたすべての
プ ロ セ ッ サ間のプ ロ グ ラ マブル ク ロ ス ト リ ガー と 、外部 ト リ ガー入力お よ び出力が含まれます。詳細は、『MicroBlaze
Debug Module (MDM) 製品ガ イ ド 』 (PG115) を参照 し て く だ さ い。
MicroBlaze では最大 8 個の ク ロ ス ト リ ガー ア ク シ ョ ンが処理で き ます。 ク ロ ス ト リ ガー ア ク シ ョ ンは、 デバ ッ グ バ
ス を介 し て接続 さ れてい る 、対応す る MDM の ク ロ ス ト リ ガー出力に よ っ て生成 さ れます。ク ロ ス ト リ ガー ア ク シ ョ
ン それぞれの影響は、 表 2-61 に ま と め ら れてい ます。
MicroBlaze では最大 8 個の ク ロ ス ト リ ガー イ ベン ト が生成で き ます。 ク ロ ス ト リ ガー イ ベン ト は、 デバ ッ グ バ ス を
介 し て接続 さ れてい る 、 その イ ベン ト に対応す る MDM の ク ロ ス ト リ ガー入力に影響 し ます。 ク ロ ス ト リ ガー イ ベ
ン ト は表 2-62 で説明 さ れてい ます。
表 2‐61 : MicroBlaze ク ロ ス ト リ ガー ア ク シ ョ ン
番号
動作
説明
0
デバ ッ グ停止
プ ロ セ ッ サ が実行中の場合 MicroBlaze を 停止 し 、 MB_Halted 出力 を セ ッ ト 。
Dbg_Stop 入力を セ ッ ト し て も 同 じ 効果が得 ら れ る 。
1
実行継続
2
プロ グ ラ ム
ト レース停止
ト レース中の場合はプ ロ グ ラ ム ト レース を停止
3
プロ グ ラ ム
ト レース開始
ト レース が停止 し てい る 場合は、 プ ロ グ ラ ム ト レース を開始
4
パフ ォーマ ン ス監視
停止
MicroBlaze プ ロ セ ッ サ リ フ ァ レ ン ス ガ イ ド
UG984 (v2015.1) 2015 年 4 月 15 日
UG984 (v2015.3)
(v2015.2) 2015 年 96 月 30
24 日
プ ロ セ ッ サが実行中の場合実行を継続 し 、 MB_Halted 出力を ク リ ア
パフ ォーマ ン ス監視中の場合はそれを停止
japan.xilinx.com
89
第 2 章 : MicroBlaze アーキテ ク チ ャ
表 2‐61 : MicroBlaze ク ロ ス ト リ ガー ア ク シ ョ ン
番号
動作
5
説明
パフ ォーマ ン ス監視
開始
パフ ォーマ ン ス監視停止の場合はそれを開始
6
プ ロ フ ァ イ リ ン グの
デ ィ ス エーブル
プ ロ フ ァ イ リ ン グ中の場合はそれをデ ィ ス エーブル
7
プ ロ フ ァ イ リ ン グの
イ ネーブル
プ ロ フ ァ イ リ ン グがデ ィ ス エーブルの場合はそれを イ ネーブルにす る
表 2‐62 : MicroBlaze ク ロ ス ト リ ガー イ ベン ト
番号
イ ベン ト
説明
0
MicroBlaze 停止
MicroBlaze が停止 し てい る と き イ ベン ト を生成。MB_Halted 出力が設定 さ れて
い る と 、 同 じ イ ベン ト にな る 。
1
実行再開
デ バ ッ グ 停 止 か ら プ ロ セ ッ サ が 実 行 を 再 開 す る と き 、 イ ベ ン ト を 生 成。
MB_Halted 出力が ク リ アにな る と 、 同 じ イ ベン ト にな る 。
2
プ ロ グ ラ ム ト レース
停止
プ ロ グ ラ ム ト レース コ マ ン ド レ ジ ス タ に コ マ ン ド を書 き 込む こ と に よ り プ ロ
グ ラ ム ト レース が停止す る と き 、 ト レース バ ッ フ ァ ーがいっぱいの と き 、 ま た
は ク ロ ス ト リ ガー ア ク シ ョ ンに よ り 、 イ ベン ト を生成
3
プ ロ グ ラ ム ト レース
開始
プ ロ グ ラ ム ト レース コ マ ン ド レ ジ ス タ に コ マ ン ド を書 き 込む こ と に よ り プ ロ
グ ラ ム ト レース が開始す る と き 、 ト レース ポ イ ン ト を通過する と き 、 ま たは ク
ロ ス ト リ ガー ア ク シ ョ ンに よ り 、 イ ベン ト を生成
4
パフ ォーマ ン ス監視
停止
パ フ ォ ーマ ン ス カ ウ ン タ ー コ マ ン ド レ ジ ス タ に コ マ ン ド を書 き 込む こ と に よ
り パフ ォーマ ン ス監視が停止する と き 、 ま たは ク ロ ス ト リ ガー ア ク シ ョ ンに よ
り 、 イ ベン ト を生成
5
パフ ォーマ ン ス監視
開始
パ フ ォ ーマ ン ス カ ウ ン タ ー コ マ ン ド レ ジ ス タ に コ マ ン ド を書 き 込む こ と に よ
り パフ ォーマ ン ス監視が開始する と き 、 ま たは ク ロ ス ト リ ガー ア ク シ ョ ンに よ
り 、 イ ベン ト を生成
6
プ ロ フ ァ イ リ ン グの
デ ィ ス エーブル
プ ロ フ ァ イ リ ン グ制御レ ジ ス タ に コ マ ン ド を書 き 込む こ と に よ り プ ロ フ ァ イ リ
ン グが イ ネーブルにな る と き 、 ま たは ク ロ ス ト リ ガー ア ク シ ョ ンに よ り 、 イ ベ
ン ト を生成
7
プ ロ フ ァ イ リ ン グの
イ ネーブル
プ ロ フ ァ イ リ ン グ制御レ ジ ス タ に コ マ ン ド を書 き 込む こ と に よ り プ ロ フ ァ イ リ
ン グがデ ィ ス エーブルにな る と き 、 ま たは ク ロ ス ト リ ガー ア ク シ ョ ン に よ り 、
イ ベン ト を生成
ト レース イ ン タ ー フ ェ イ スの概要
MicroBlaze の ト レース イ ン タ ーフ ェ イ ス は、 パフ ォーマ ン ス の監視お よ び解析のため、 多数の内部ス テー ト 信号を エ
ク ス ポー ト し ます。 ザ イ リ ン ク ス が開発 し た解析コ ア を介 し てのみ、 こ の ト レース イ ン タ ーフ ェ イ ス を使用す る こ と
を推奨 し ます。 今後の MicroBlaze リ リ ース での こ の イ ン タ ーフ ェ イ ス には、 下位互換性がない可能性があ り ます。
エ ク ス ポー ト さ れ る 信号の リ ス ト は、 表 3-14 を参照 し て く だ さ い。
MicroBlaze プ ロ セ ッ サ リ フ ァ レ ン ス ガ イ ド
UG984 (v2015.1) 2015 年 4 月 15 日
UG984 (v2015.3)
(v2015.2) 2015 年 96 月 30
24 日
japan.xilinx.com
90
第 2 章 : MicroBlaze アーキテ ク チ ャ
フ ォ ール ト ト レ ラ ン ス
MicroBlaze に含まれ る フ ォール ト ト レ ラ ン ス機能は、 C_FAULT_TOLERANT を使用 し て イ ネーブルにす る こ と がで
き 、 内部ブ ロ ッ ク RAM にはエ ラ ー検出を提供 し 、 LMB ブ ロ ッ ク RAM ではエ ラ ー検出お よ びエ ラ ー訂正 (ECC) のサ
ポー ト を提供 し ます。 フ ォール ト ト レ ラ ン ス が イ ネーブルにな っ てい る と 、 ブ ロ ッ ク RAM の ソ フ ト エ ラ ーはすべて
検出 さ れ訂正 さ れ る ため、 全体的なエ ラ ー発生率を著 し く 下げ る こ と がで き ます。
ブ ロ ッ ク RAM を保護す る だけでな く 、通常は、FPGA の コ ン フ ィ ギ ュ レーシ ョ ン メ モ リ も 保護す る 必要があ り ます。
こ の ト ピ ッ ク の詳細、 参考資料に関 し ては、 『LogiCore IP Soft Error Mitigation Controller 製品ガ イ ド 』 (PG036) を参照
し て く だ さ い。
コ ン フ ィ ギ ュ レーシ ョ ン
MicroBlaze コ ン フ ィ ギ ュ レーシ ョ ンの使用
[General] ページにあ る MicroBlaze の コ ン フ ィ ギ ュ レーシ ョ ンのダ イ ア ロ グ ボ ッ ク ス で、 フ ォール ト ト レ ラ ン ス は イ
ネーブルにで き ます。
MicroBlaze で フ ォール ト ト レ ラ ン ス を イ ネーブルに し た後、 シ ス テ ムが生成 さ れ る と 、 接続 さ れてい る LMB BRAM
Interface Controller で ECC は自動的に イ ネーブルにな り ます。つま り 、 フ ォール ト ト レ ラ ン スお よ び最小限の ECC サ
ポー ト を有効にす る のに、 ほかには何 も 設定す る 必要がない と い う こ と です。
すべての接続 さ れてい る LMB BRAM Interface Controller の コ ン フ ィ ギ ュ レーシ ョ ン ダ イ ア ロ グ ボ ッ ク ス で、 C_ECC
をデ ィ ス エーブルに し 、 LMB ブ ロ ッ ク RAM を保護 し ない ま ま、 ECC サポー ト を手動で上書 き す る こ と は可能です 
(推奨 さ れてはい ません)。 こ の場合、 フ ォール ト ト レ ラ ン スは イ ネーブルなので、 内部 MicroBalze ブ ロ ッ ク RAM の
保護は有効の ま ま です。
LMB BRAM Interface Controller の使用
先ほ ど説明 し た方法 と は別の方法で、 すべての接続 さ れてい る LMB BRAM Interface Controller の コ ン フ ィ ギ ュ レ ー
シ ョ ン ダ イ ア ロ グ ボ ッ ク ス で、 ECC を イ ネーブルにす る こ と も 可能です。 こ の場合、 シ ス テ ム が生成 さ れ る と き 、
フ ォ ール ト ト レ ラ ン ス は MicroBlaze で自動的に イ ネーブルに な り ま す。 つ ま り 、 ECC サポー ト お よ び MicroBlaze
フ ォール ト ト レ ラ ン ス を有効にす る のに、 ほかには何 も 設定する 必要がない と い う こ と です。
ECC はすべての コ ン ト ロ ー ラ ーで イ ネーブルま たはデ ィ ス エーブルにする 必要があ り 、 こ れは DRC でチ ェ ッ ク さ れ
ます。
MicroBlaze の コ ン フ ィ ギ ュ レーシ ョ ン ダ イ ア ロ グ ボ ッ ク ス で、 C_FAULT_TOLERANT を明示的にデ ィ ス エーブルに
し て、MicroBlaze で フ ォール ト ト レ ラ ン ス サポー ト を手動で上書 き す る こ と は可能です。MicroBlaze でブ ロ ッ ク RAM
が使用 さ れていない限 り 、 こ れは推奨 さ れ ません。 ま た、 訂正不可能な ECC エ ラ ーか ら のバ ス例外を処理す る 必要
はあ り ません。
機能
MicroBlaze の フ ォール ト ト レ ラ ン ス機能の概要を こ こ に説明 し ます。 各機能の詳細は、 次のセ ク シ ョ ン を参照 し て く
だ さ い。
•
命令キ ャ ッ シ ュ 操作
•
デー タ キ ャ ッ シ ュ 操作
•
UTLB 管理
•
分岐 タ ーゲ ッ ト キ ャ ッ シ ュ
•
命令バ ス例外
MicroBlaze プ ロ セ ッ サ リ フ ァ レ ン ス ガ イ ド
UG984 (v2015.1) 2015 年 4 月 15 日
UG984 (v2015.3)
(v2015.2) 2015 年 96 月 30
24 日
japan.xilinx.com
91
第 2 章 : MicroBlaze アーキテ ク チ ャ
•
デー タ バ ス例外
•
例外の原因
MB BRAM Interface Controller v4.0 ま たはそれ以降のバージ ョ ンでは、 LMB ECC イ ンプ リ メ ン テーシ ョ ン を提供 し ま
す。 パフ ォーマ ン スや リ ソ ース使用率な ど の詳細については、 『LogiCORE IP LMB BRAM Interface Controller 製品ガ イ
ド 』 (PG112) を参照 し て く だ さ い。
命令およびデー タ キ ャ ッ シ ュ保護
命令お よ びデー タ キ ャ ッ シ ュ でブ ロ ッ ク RAM を保護する には、 パ リ テ ィ が使用 さ れます。パ リ テ ィ エ ラ ーが検出 さ
れ る と 、 対応す る キ ャ ッ シ ュ ラ イ ンが無効化 さ れます。 こ れに よ り 、 外部 メ モ リ か ら 正 し い値がキ ャ ッ シ ュ に リ ロ ー
ド さ れます。 キ ャ ッ シ ュ ヒ ッ ト が発生する たびにパ リ テ ィ はチ ェ ッ ク さ れます。
こ れは ラ イ ト ス ルーの場合のみ機能す る ため、 フ ォール ト ト レ ラ ン ス が イ ネーブルの と き は、 ラ イ ト バ ッ ク デー タ
キ ャ ッ シ ュ は使用で き ません。 こ れは DRC でチ ェ ッ ク さ れます。
キ ャ ッ シ ュ のブ ロ ッ ク RAM に新 し い値が書き 込まれ る と 、 パ リ テ ィ も 計算 さ れて書き 込まれます。 タ グ用に 1 パ リ
テ ィ ビ ッ ト 、 命令キ ャ ッ シ ュ デー タ 用に 1 パ リ テ ィ ビ ッ ト 、 デー タ キ ャ ッ シ ュ ラ イ ン の各 ワ ー ド 用に 1 パ リ テ ィ
ビ ッ ト が使用 さ れます。
大抵の場合、 フ ォ ール ト ト レ ラ ン ス を有効に し て も 、 スペア ビ ッ ト がパ リ テ ィ 用に使用で き る ため、 必要な キ ャ ッ
シ ュ ブ ロ ッ ク RAM の数が増え る こ と はあ り ません。 フ ォール ト ト レ ラ ン ス を有効にす る 場合、 リ ソ ース使用率の増
加、 特にブ ロ ッ ク RAM の数な どは、 MicroBlaze の コ ン フ ィ ギ ュ レーシ ョ ン ダ イ ア ロ グ ボ ッ ク ス で簡単に確認で き ま
す。
メ モ リ 管理ユニ ッ ト (MMU) 保護
MMU の統合変換ル ッ ク アサ イ ド バ ッ フ ァ ー (UTLB) でブ ロ ッ ク RAM を保護す る には、 パ リ テ ィ が使用 さ れ ま す。
ア ド レ ス変換中にパ リ テ ィ エ ラ ーが検出 さ れ る と 、 TLB ミ ス例外が発生 し 、 ソ フ ト ウ ェ アはエ ン ト リ を リ ロ ー ド す
る こ と にな り ます。
TLBHI お よ び TLBLO レ ジ ス タ を使用 し て新 し い TLB エ ン ト リ を書 き 込む と 、 パ リ テ ィ が計算 さ れ ます。 各エ ン ト
リ で 1 パ リ テ ィ ビ ッ ト が使用 さ れます。
TLBHI お よ び TLBLO レ ジ ス タ を使用 し て UTLB エン ト リ を読み出す と き 、 パ リ テ ィ も チ ェ ッ ク さ れます。 こ の場合
でパ リ テ ィ エ ラ ーが検出 さ れ る と 、 有効ビ ッ ト が ク リ アにな っ て、 エン ト リ は無効にな り ます。
フ ォール ト ト レ ラ ン ス を有効に し て も 、 スペア ビ ッ ト がパ リ テ ィ に使用で き る ため、 MMU のブ ロ ッ ク RAM サ イ ズ
が大 き く な る こ と はあ り ません。
分岐先キ ャ ッ シ ュ保護
分岐先キ ャ ッ シ ュ でブ ロ ッ ク RAM を保護す る には、 パ リ テ ィ が使用 さ れます。 分岐先ア ド レ ス を検索 し てい る と き
にパ リ テ ィ エ ラ ーが検出 さ れ る と 、 ア ド レ ス は無視 さ れ、 標準分岐にな り ます。
分岐先キ ャ ッ シ ュ に新 し いア ド レ ス が書 き 込まれ る と 、 パ リ テ ィ が計算 さ れます。 各ア ド レ ス に 1 パ リ テ ィ ビ ッ ト が
使用 さ れます。
フ ォ ール ト ト レ ラ ン ス を 有効に し て も 、 ス ペア ビ ッ ト がパ リ テ ィ に使用で き る た め、 分岐キ ャ ッ シ ュ のブ ロ ッ ク
RAM サ イ ズが増え る こ と はあ り ません。
例外処理
フ ォ ール ト ト レ ラ ン ス が有効に な っ て い て、 LMB ブ ロ ッ ク RAM で エ ラ ーが発生す る と 、 LMB BRAM Interface
Controller が LMB イ ン タ ーフ ェ イ ス でエ ラ ー信号を生成 し ます。
マシ ン ス テー タ ス レ ジ ス タ で EE ビ ッ ト を セ ッ ト し て、 MicroBlaze で例外を有効にする 場合、 影響を受け る イ ン タ ー
フ ェ イ ス に よ り ますが、 訂正不可能なエ ラ ー信号は、 命令バ ス例外かデー タ バス例外の ど ち ら か を生成 し ます。
MicroBlaze プ ロ セ ッ サ リ フ ァ レ ン ス ガ イ ド
UG984 (v2015.1) 2015 年 4 月 15 日
UG984 (v2015.3)
(v2015.2) 2015 年 96 月 30
24 日
japan.xilinx.com
92
第 2 章 : MicroBlaze アーキテ ク チ ャ
例外処理中にバ ス例外が発生 し た場合は、 MicroBlaze は停止 し 、 外部エ ラ ー信号 MB_Error がセ ッ ト さ れ ます。 こ
の動作に よ り 、 訂正不可能なエ ラ ーに よ り 壊れた命令を実行す る こ と は不可能にな り ます。
ソ フ ト ウ ェ ア サポー ト
ス ク ラ ビ ング
ビ ッ ト エ ラ ーがブ ロ ッ ク RAM に蓄積 さ れない よ う にする ため、定期的に ビ ッ ト エ ラ ーを ス ク ラ ブす る 必要があ り ま
す。
特定の コ ン フ ィ ギ ュ レーシ ョ ンで使用 さ れ る LMB ブ ロ ッ ク RAM 全体お よ び MicroBlaze 内部ブ ロ ッ ク RAM すべて
の ス ク ラ ブ を実行す る ため、 ス タ ン ド ア ロ ン BSP には microblaze_scrub() と い う 関数があ り ます。 こ の関数は、 タ イ
マー割 り 込みルーチンか ら 定期的に呼び出 さ れ る よ う にな っ てい ます。
次はその コ ー ド 例です。
#include
#include
#include
#include
"xparameters.h"
"xtmrctr.h"
"xintc.h"
"mb_interface.h"
#define SCRUB_PERIOD ...
XIntc InterruptController; /* The Interrupt Controller instance */
XTmrCtr TimerCounterInst;/* The Timer Counter instance */
void MicroBlazeScrubHandler(void *CallBackRef, u8 TmrCtrNumber)
{
/* Perform other timer interrupt processing here */
microblaze_scrub();
}
int main (void)
{
int Status;
/*
* Initialize the timer counter so that it's ready to use,
* specify the device ID that is generated in xparameters.h
*/
Status = XTmrCtr_Initialize(&TimerCounterInst, TMRCTR_DEVICE_ID);
if (Status != XST_SUCCESS) {
return XST_FAILURE;
}
/*
* Connect the timer counter to the interrupt subsystem such that
* interrupts can occur.
*/
Status = XIntc_Initialize(&InterruptController, INTC_DEVICE_ID);
if (Status != XST_SUCCESS) {
return XST_FAILURE;
}
/*
* Connect a device driver handler that will be called when an
* interrupt for the device occurs, the device driver handler performs
MicroBlaze プ ロ セ ッ サ リ フ ァ レ ン ス ガ イ ド
UG984 (v2015.1) 2015 年 4 月 15 日
UG984 (v2015.3)
(v2015.2) 2015 年 96 月 30
24 日
japan.xilinx.com
93
第 2 章 : MicroBlaze アーキテ ク チ ャ
* the specific interrupt processing for the device
*/
Status = XIntc_Connect(&InterruptController, TMRCTR_DEVICE_ID,
(XInterruptHandler)XTmrCtr_InterruptHandler,
(void *) &TimerCounterInst);
if (Status != XST_SUCCESS) {
return XST_FAILURE;
}
/*
* Start the interrupt controller such that interrupts are enabled for
* all devices that cause interrupts, specifying real mode so that the
* timer counter can cause interrupts thru the interrupt controller.
*/
Status = XIntc_Start(&InterruptController, XIN_REAL_MODE);
if (Status != XST_SUCCESS) {
return XST_FAILURE;
}
/*
* Setup the handler for the timer counter that will be called from the
* interrupt context when the timer expires, specify a pointer to the
* timer counter driver instance as the callback reference so the
* handler is able to access the instance data
*/
XTmrCtr_SetHandler(&TimerCounterInst, MicroBlazeScrubHandler,
&TimerCounterInst);
/*
* Enable the interrupt of the timer counter so interrupts will occur
* and use auto reload mode such that the timer counter will reload
* itself automatically and continue repeatedly, without this option
* it would expire once only
*/
XTmrCtr_SetOptions(&TimerCounterInst, TIMER_CNTR_0,
XTC_INT_MODE_OPTION | XTC_AUTO_RELOAD_OPTION);
/*
* Set a reset value for the timer counter such that it will expire
* earlier than letting it roll over from 0, the reset value is loaded
* into the timer counter when it is started
*/
XTmrCtr_SetResetValue(TmrCtrInstancePtr,TmrCtrNumber,SCRUB_PERIOD);
/*
* Start the timer counter such that it's incrementing by default,
* then wait for it to timeout a number of times
*/
XTmrCtr_Start(&TimerCounterInst, TIMER_CNTR_0);
...
}
ス ク ラ ブ レー ト の計算方法な ど、 ス ク ラ ブの イ ンプ リ メ ン ト 方法の詳細については、 「ス ク ラ ビ ン グ」 を参照 し て く
だ さ い。
MicroBlaze プ ロ セ ッ サ リ フ ァ レ ン ス ガ イ ド
UG984 (v2015.1) 2015 年 4 月 15 日
UG984 (v2015.3)
(v2015.2) 2015 年 96 月 30
24 日
japan.xilinx.com
94
第 2 章 : MicroBlaze アーキテ ク チ ャ
ブ ロ ッ ク RAM ド ラ イバー
ス タ ン ド ア ロ ンの BSP ブ ロ ッ ク RAM ド ラ イ バーは、LMB BRAM Interface Controller の ECC レ ジ ス タ にア ク セ スす る
ために使用 さ れ、 ま た包括的なセルフ テ ス ト も 提供 し ます。
SDK ザ イ リ ン ク ス C プ ロ ジ ェ ク ト の 「ペ リ フ ェ ラ ル テ ス ト 」 を イ ンプ リ メ ン ト す る と 、 シ ス テ ムの 各 LMB BRAM
Interface Controller の ブ ロ ッ ク RAM セ ル フ テ ス ト を 含む セ ル フ テ ス ト 例が生成 さ れ ま す。 LMB BRAM Interface
Controller で ど の ECC 機能が有効にな っ てい る かに よ り ますが、 こ の コ ー ド は、 ECC 機能のすべてのテ ス ト を実行 し
ます。
セ ル フ テ ス ト 例 は、 ス タ ン ド ア ロ ン BSP ブ ロ ッ ク RAM ド ラ イ バ ー の ソ ー ス
microblaze_0/libsrc/bram_v3_03_a/src/xbram_selftest.c と い う サブデ ィ レ ク ト リ にあ り ます。
コ ー ド に あ り 、 通常 は、
ス ク ラ ビ ング
ス ク ラ ビ ング方法
ス ク ラ ビ ン グは、 ブ ロ ッ ク RAM の タ イ プご と に特化 し た方法で行われます。
•
命令お よ びデー タ キ ャ ッ シ ュ : キ ャ ッ シ ュ のすべての ラ イ ンは、 WIC お よ び WDC 命令を それぞれ使用 し て、 周
期的に無効化 さ れます。 こ れに よ り 、 外部 メ モ リ か ら キ ャ ッ シ ュ ラ イ ンがキ ャ ッ シ ュ に リ ロ ー ド さ れます。
•
メ モ リ 管理ユニ ッ ト (MMU) 保護 : UTLB のすべてのエン ト リ は、 有効ビ ッ ト を ク リ アに し て、 TLBHI レ ジ ス タ
を書 き 込む こ と に よ り 、 周期的に無効化 さ れます。
•
分岐先キ ャ ッ シ ュ (BTC) : BTC 全体が、 分岐 BRI4 を同期化する こ と に よ り 、 無効化 さ れます。
•
LMB ブ ロ ッ ク RAM : メ モ リ のすべてのア ド レ ス が周期的に読み出 し お よ び書 き 込まれ、 各ア ド レ ス の任意の 1
ビ ッ ト エ ラ ーが訂正 さ れます。
LMB BRAM Interface Controller か ら の訂正可能なエ ラ ー用に割 り 込みを追加 し て、 割 り 込みハン ド ラ ーの こ のア ド レ
ス をす ぐ に ス ク ラ ブす る こ と も 可能ですが、 大抵の場合は、 信頼性を若干向上 さ せ る 程度です。
それぞれの LMB BRAM Interface Controller で訂正可能エ ラ ー フ ァ ース ト フ ェ ー リ ン グ ア ド レ ス レ ジ ス タ を読み出 し
て、 エ ラ ーが発生 し てい る ア ド レ ス を検出で き ます。 割 り 込みを生成で き る よ う にす る には、 接続 さ れてい る LMB
BRAM Interface Controller で C_ECC_STATUS_REGISTERS を 1 に設定 し 、 ま た、 エ ラ ーの発生 し てい る ア ド レ ス を
読み出すには、 C_CE_FAILING_REGISTERS を 1 に設定する 必要があ り ます。
ス ク ラ ブ レー ト の計算
ス ク ラ ブ レー ト は、 エ ラ ー発生率お よ び求め る 信頼性の度合いに左右 さ れます。
LMB メ モ リ の ス ク ラ ブ レー ト を概算す る ための式は、 次の よ う に し て求め ら れます。
 BER2
P W  760  ‐‐‐‐‐‐‐‐‐‐‐2‐
 SR 
PW は 1 メ モ リ ワー ド での訂正可能なエ ラ ーの発生確率で、 BER は 1 メ モ リ ビ ッ ト の ソ フ ト エ ラ ー レー ト 、 SR は ス
ク ラ ブ レー ト です。
各製品フ ァ ミ リ のブ ロ ッ ク RAM に影響す る ソ フ ト エ ラ ー レー ト については、『デバ イ ス信頼性レ ポー ト 』 (UG116) を
参照 し て く だ さ い。
使用例
一 般 的 な 使 用 例 を い く つ か こ こ で 説 明 し ま す。 こ れ ら の 使用例 は、 『LogiCore IP Processor LMB BRAM Interface
Controller 製品ガ イ ド 』 (PG112) か ら の抜粋です。
MicroBlaze プ ロ セ ッ サ リ フ ァ レ ン ス ガ イ ド
UG984 (v2015.1) 2015 年 4 月 15 日
UG984 (v2015.3)
(v2015.2) 2015 年 96 月 30
24 日
japan.xilinx.com
95
第 2 章 : MicroBlaze アーキテ ク チ ャ
最小限
MicroBlaze で フ ォ ール ト ト レ ラ ン ス を イ ネーブルに し ていて、 ほかの コ ン フ ィ ギ ュ レーシ ョ ン を実行 し ていない場
合、 こ のシ ス テ ムにな り ます。
エ リ ア制約が厳 し く 、 ECC 機能のテ ス ト やエ ラ ー頻度や ロ ケーシ ョ ンの解析をす る 必要がない場合に適 し てい ます。
ECC レ ジ ス タ は イ ン プ リ メ ン ト さ れ ません。 1 ビ ッ ト エ ラ ーは、 MicroBlaze に渡 さ れ る 前に、 ECC ロ ジ ッ ク に よ っ
て訂正 さ れます。 訂正不可能なエ ラ ーは、 MicroBlaze で例外を生成す る エ ラ ー信号を セ ッ ト し ます。
小型
エ ラ ー ウ ィ ン ド を監視す る 必要があ る けれど、 ECC 機能のテ ス ト をす る 必要がない場合に、 こ のシ ス テ ム を使用 し て
く だ さ い。 こ れは、 最小限のシ ス テ ムに、 1 ビ ッ ト エ ラ ー レー ト を監視す る ための訂正可能エ ラ ー カ ウ ン タ ー レ ジ
ス タ が追加 さ れた も のです。 エ ラ ー レー ト が高すぎ る 場合は、 ス ク ラ ブ レー ト を増や し 、 1 ビ ッ ト エ ラ ーが訂正不
可能な 2 ビ ッ ト エ ラ ーに な る リ ス ク を 最低限に抑え る よ う に し て く だ さ い。 パ ラ メ ー タ ーは、 C_ECC = 1 お よ び
C_CE_COUNTER_WIDTH = 10 に設定 し ます。
標準
こ のシ ス テ ムは標準的な使用例を表 し てい ます。 エ ラ ー頻度を監視する 必要があ る だけでな く 、 ソ フ ト ウ ェ ア を介 し
て 1 ビ ッ ト エ ラ ーをす ぐ に訂正す る ための割 り 込みを生成 し ます。 ECC 機能のテ ス ト サポー ト はあ り ません。 こ れ
は、 小型シ ス テ ムに、 訂正可能なエ ラ ー フ ァ ース ト フ ェー リ ン グ レ ジ ス タ お よ びス テー タ ス レ ジ ス タ が追加 さ れた
も のです。 1 ビ ッ ト エ ラ ーが発生す る と 、 訂正可能なエ ラ ー フ ァ ース ト フ ェ ー リ ン グ レ ジ ス タ へア ク セ スす る ため
のア ド レ ス が ラ ッ チ さ れ、 ECC ス テー タ ス レ ジ ス タ で CE_STATUS ビ ッ ト を セ ッ ト し ます。 割 り 込みが生成 さ れ る
と 、 MicroBlaze がエ ラ ーの発生 し てい る ア ド レ ス を読み出 し てか ら 、 そのア ド レ ス で まず読み出 し を実行 し て、 それ
に続いて書 き 込みを実行 し ます。 こ れで、 ブ ロ ッ ク RAM か ら 1 ビ ッ ト エ ラ ーが削除 さ れ、 1 ビ ッ ト エ ラ ーが訂正不
可能な 2 ビ ッ ト エ ラ ーにな る リ ス ク を軽減 し ま す。 パ ラ メ ー タ ーは、 C_ECC = 1、 C_CE_COUNTER_WIDTH = 10、
C_ECC_STATUS_REGISTER = 1、 お よ び C_CE_FAILING_REGISTERS = 1 に設定 し ます。
フル
こ のシ ス テ ムは、 LMB BRAM Interface Controller で提供 さ れ る 機能をすべて使用 し 、 フル エ ラ ー挿入機能だけでな
く 、 エ ラ ー監視や割 り 込み生成 も イ ネーブルに し ます。 こ れは、 標準シ ス テ ムに、 訂正可能なエ ラ ー フ ァ ース ト
フ ェー リ ン グ レ ジ ス タ お よ びフ ォール ト 挿入レ ジ ス タ が追加 さ れた も のです。 シ ス テ ム デバ ッ グ ま たは高い フ ォー
ル ト ト レ ラ ン ス要件のないシ ス テ ムの ECC 機能の フル コ ン ト ロ ール用の機能がすべてオンにな っ てい ます。 パ ラ
メ ー タ ーは、 C_ECC = 1、 C_CE_COUNTER_WIDTH = 10、 C_ECC_STATUS_REGISTER = 1 お よ び
C_CE_FAILING_REGISTERS = 1、 C_UE_FAILING_REGISTERS = 1 お よ び C_FAULT_INJECT = 1 に設定 し ま
す。
MicroBlaze プ ロ セ ッ サ リ フ ァ レ ン ス ガ イ ド
UG984 (v2015.1) 2015 年 4 月 15 日
UG984 (v2015.3)
(v2015.2) 2015 年 96 月 30
24 日
japan.xilinx.com
96
第 2 章 : MicroBlaze アーキテ ク チ ャ
ロ ッ ク ス テ ッ プ操作
MicroBlaze は ロ ッ ク ス テ ッ プ コ ン フ ィ ギ ュ レーシ ョ ンで動作可能です。 こ の コ ン フ ィ ギ ュ レーシ ョ ンでは、 複数の同
じ MicroBlaze コ アが同 じ プ ロ グ ラ ム を実行 し ま す。 コ アの出力を比較 し て、 不正ア ク セ ス、 過渡エ ラ ー、 恒久的な
ハー ド ウ ェ ア エ ラ ー と い っ た問題を検出 し ます。
シ ス テム コ ン フ ィ ギ ュ レーシ ョ ン
マ ス タ ー コ ア (プ ラ イ マ リ
コ ア) を 除 き 、 シ ス テ ム の ス レ ー ブ MicroBlaze コ ア すべ て で、 パ ラ メ ー タ ー
C_LOCKSTEP_SLAVE は 1 に設定 さ れます。 マ ス タ ー コ アはその出力信号のすべて を駆動 し 、 デバ ッ グ機能を処理
し ま す。 マ ス タ ー の ポ ー ト
Lockstep_Master_Out
は、 デ バ ッ グ を 処理す る た め、 ス レ ー ブ の ポ ー ト
Lockstep_Slave_In に接続 さ れてい ます。
ス レーブ コ アは出力信号を駆動せず、 入力信号を受信す る だけです。 こ のためには、 必ずス レーブの入力ポー ト に信
号を接続 し て く だ さ い。 バ ス の場合は、 個々の入力ポー ト を明示的に接続 し てお く 必要があ り ます。
マ ス タ ーお よ び ス レーブ コ アのポー ト Lockstep_Out は比較のための出力信号をすべて提供 し ます。 エ ラ ーが発
生 し ない限 り 、 各 コ アか ら の個々の信号はど の ク ロ ッ ク サ イ ク ルで も 同 じ です。
ロ ッ ク ス テ ッ プ操作を正 し く 機能 さ せ る には、 コ アへのすべての入力信号は同期 し てい る 必要があ り ます。 外部同期
が必要な入力信号は、 Interrupt、 Reset、 Ext_Brk、 お よ び Ext_Nm_Brk です。
使用例
一般的な使用例を 2 つ、 こ こ で説明 し ます。 ま た、 ロ ッ ク ス テ ッ プ操作は、 MicroBlaze コ ア レベルで 3 重モジ ュ ール
式冗長を イ ンプ リ メ ン ト す る ためのベース を提供 し ます。
不正ア ク セス保護
こ のアプ リ ケーシ ョ ンは、 不正ア ク セ ス に対する 保護機能がついたシ ス テ ムが必要な使用例です。 一般的な例は暗号
アプ リ ケーシ ョ ンです。
こ のアプ ロ ーチでは、 2 つの冗長 MicroBlaze プ ロ セ ッ サを使用 し 、 専用 ロ ーカル メ モ リ お よ び冗長 コ ンパレー タ を そ
れぞれ保護エ リ アに配置 し ます。 各プ ロ セ ッ サか ら の出力は、 2 つの コ ンパレー タ に入力 さ れ、 それぞれのプ ロ セ ッ
サがすべての入力信号の コ ピーを受信 し ます。
冗長 MicroBlaze プ ロ セ ッ サは機能的に同 じ ですが、 互いに完全に独立 し ていて、 2 つを接続 し てい る 信号はあ り ませ
ん。 唯一の例外はデバ ッ グ ロ ジ ッ ク と 関連信号ですが、 デバ ッ グは製品化やシ ス テ ム認証の前にデ ィ ス エーブルにな
る も のだか ら です。
マ ス タ ーの MicroBlaze コ アか ら の出力はシ ス テ ムのペ リ フ ェ ラ ルを駆動 し ます。保護エ リ ア を離れ る デー タ はすべて
イ ン ヒ ビ タ ーを通過 し ます。 各 イ ン ヒ ビ タ ーは関連付け ら れてい る コ ンパレー タ か ら 制御 さ れます。
デザ イ ンの各保護エ リ アは、 階層 SCC (Single Chip Cryptography) フ ロ ーを使用 し て、 それぞれのパーテ ィ シ ョ ン内に
イ ン プ リ メ ン ト す る 必要が あ り ま す。 こ の フ ロ ーの詳細、 参考資料に関 し て は、 『階層デザ イ ン 設計手法ガ イ ド 』
(UG748) を参照 し て く だ さ い。
図 2-41 に、 シ ス テ ムのブ ロ ッ ク 図を示 し ます。
MicroBlaze プ ロ セ ッ サ リ フ ァ レ ン ス ガ イ ド
UG984 (v2015.1) 2015 年 4 月 15 日
UG984 (v2015.3)
(v2015.2) 2015 年 96 月 30
24 日
japan.xilinx.com
97
第 2 章 : MicroBlaze アーキテ ク チ ャ
出力
DLMB
BRAM コン ト ローラー
マス タ ー
ILMB
デバ ッ グ モ ジ ュ ール
MicroBlaze パー テ ィ シ ョ ン
パー テ ィ シ ョ ン
コ ンパレ ー タ
パー テ ィ シ ョ ン
BRAM コン ト ローラー
MicroBlaze
ペ リ フ ェ ラル
入力
MicroBlaze
BRAM
イン ヒ ビ ター
C_LOCKSTEP_SLAVE = 0
インヒビター
MicroBlaze パー テ ィ シ ョ ン
Lockstep_Out
コ ンパレータ
デバ ッ グ
I/O イ ン タ ー フ ェ イ ス
Lockstep_Master_Out
Lockstep_Slave_In
外部 メ モ リ
イン ターフ ェ イス
デバ ッ グ
入力
DLMB
BRAM コン ト ローラー
BRAM
コ ン パレ ー タ
パーテ ィ シ ョ ン
MicroBlaze
ス レーブ
Lockstep_Out
ILMB
コ ンパレータ
BRAM コン ト ローラー
C_LOCKSTEP_SLAVE = 1
デバ ッ グ イ ン タ ー フ ェ イ ス - 製品化の と き に削除
図 2‐41 : ロ ッ ク ス テ ッ プ不正ア ク セス保護ア プ リ ケーシ ョ ン
エ ラ ー検出
エ ラ ー検出の使用例では、 過渡エ ラ ーお よ び恒久的エ ラ ーをすべて検出する 必要があ り ます。 シ ス テ ム を使用可能な
状態に保つために冗長機能が利用 さ れ る よ う な フ ェ ールセーフお よ びフ ォール ト ト レ ン ラ ン ト アプ リ ケーシ ョ ン で
は、 こ れは重要な こ と です。
こ のシ ス テ ムでは、 2 つの冗長 MicroBlaze プ ロ セ ッ サが ロ ッ ク ス テ ッ プで実行 さ れます。 2 つのプ ロ セ ッ サの出力に
不一致が検出 さ れた と き エ ラ ーを出力す る ため、 コ ンパレー タ が使用 さ れます。 ど んなエ ラ ーが発生 し て も 両方のプ
ロ セ ッ サがす ぐ に停止 し 、 それ以上エ ラ ーが広が ら ない よ う に し ます。
デバ ッ グ ロ ジ ッ ク と 関連信号を除いて、 冗長 MicroBlaze プ ロ セ ッ サは機能的に同 じ です。 マ ス タ ーの MicroBlaze コ
アの出力はシ ス テ ムのペ リ フ ェ ラ ルを駆動 し ます。 ス レーブの MicroBlaze コ アには入力が接続 さ れてい る だけで、 出
力はすべてオープ ンの ま ま です。
シ ス テ ムには、 完全な フ ォール ト ト ラ レ ン ト のアプ リ ケーシ ョ ン を設計する ための基本ブ ロ ッ ク が含まれていて、冗
長性を持たせ る には、 1 つま たは複数の追加ブ ロ ッ ク を追加する 必要があ り ます。
図 2-42 に、 こ の使用例を示 し ます。
MicroBlaze プ ロ セ ッ サ リ フ ァ レ ン ス ガ イ ド
UG984 (v2015.1) 2015 年 4 月 15 日
UG984 (v2015.3)
(v2015.2) 2015 年 96 月 30
24 日
japan.xilinx.com
98
第 2 章 : MicroBlaze アーキテ ク チ ャ
エラー リ セ ッ ト
C_LOCKSTEP_SLAVE = 0
DLMB
出力
BRAM コ ン ト ローラー
MicroBlaze
BRAM
入力
マス タ ー
ILMB
BRAM コ ン ト ローラー
Lockstep_Out
MicroBlaze
デバ ッ グ
I/O イ ン タ ー フ ェ イ ス
デバ ッ グ モ ジ ュ ール
コンパレータ
外部 メ モ リ
イン ターフ ェ イス
デバ ッ グ
Lockstep_Out
MicroBlaze
入力
入力
ス レーブ
入力
C_LOCKSTEP_SLAVE = 1
図 2‐42 : ロ ッ ク ス テ ッ プ エ ラ ー検出ア プ リ ケーシ ョ ン
コ ヒ ーレ ン シ
MicroBlaze は、 キ ャ ッ シ ュ コ ヒ ーレ ン シ をサポー ト する だけでな く 、『AMBA® AXI and ACE Protocol Specification』
(ARM IHI 0022E) で定義 さ れてい る AXI コ ヒ ーレ ン シ拡張 (ACE) を使用 し て、キ ャ ッ シ ュ お よ び変換ル ッ ク アサ イ ド
バ ッ フ ァ ーの無効化 も サポー ト し ます。 コ ヒ ーレ ン シ サポー ト は、 C_INTERCONNECT が 3 (ACE) に設定 さ れてい
る と き に有効に な り ま す。
ACE を使用す る と 、 コ ヒ ーレ ン シ ド メ イ ンの MicroBlaze プ ロ セ ッ サのすべてのキ ャ ッ シ ュ 間の コ ヒ ーレ ン シ を保つ
こ と がで き ます。 ペ リ フ ェ ラ ル ポー ト (AXI_IP、 AXI_DP) お よ び ロ ーカル メ モ リ (ILMB、 DLMB) は コ ヒ ーレ ン シ ド
メ イ ン外にな り ます。
ラ イ ト バ ッ ク デー タ キ ャ ッ シ ュ 、 ワ イ ド キ ャ ッ シ ュ イ ン タ ーフ ェ イ ス (32 ビ ッ ト を超え る デー タ )、 命令キ ャ ッ シ ュ
ス ト リ ーム、 命令キ ャ ッ シ ュ ビ ク テ ィ ム に対 し て、 ま たはエ リ ア最適化が有効にな っ てい る と 、 コ ヒ ーレ ン シはサ
ポー ト さ れません。 さ ら に、 C_ICACHE_ALWAYS_USED お よ び C_DCACHE_ALWAYS_USED の両方を 1 に設定す る
必要があ り ます。
無効化
コ ヒ ーレ ン シ ハー ド ウ ェ アは、 次のケース で無効化を処理 し ます。
•
デー タ キ ャ ッ シ ュ 無効化 : 
コ ヒ ー レ ン シ ド メ イ ン の MicroBlaze コ ア が、 外部 キ ャ ッ シ ュ 無効化命令 (WDC.EXT.CLEAR ま た は
WDC.EXT.FLUSH) を使用 し てデー タ キ ャ ッ シ ュ ラ イ ン を無効化にす る と 、 ハー ド ウ ェ ア メ ッ セージが表示 さ
れ、 コ ヒ ーレ ン シ ド メ イ ンのその他すべての コ アが同 じ こ と を実行 し ます。 物理ア ド レ ス が常に使用 さ れます。
•
命令キ ャ ッ シ ュ 無効化 : 
コ ヒ ーレ ン シ ド メ イ ンの MicroBlaze コ アが命令キ ャ ッ シ ュ ラ イ ン を無効化にす る と 、 ハー ド ウ ェ ア メ ッ セージ
MicroBlaze プ ロ セ ッ サ リ フ ァ レ ン ス ガ イ ド
UG984 (v2015.1) 2015 年 4 月 15 日
UG984 (v2015.3)
(v2015.2) 2015 年 96 月 30
24 日
japan.xilinx.com
99
第 2 章 : MicroBlaze アーキテ ク チ ャ
が表示 さ れ、 コ ヒ ーレ ン シ ド メ イ ンのその他すべての コ アが同 じ こ と を実行 し ます。 MMU が仮想モー ド の場合
は、 仮想ア ド レ ス が使用 さ れ、 そ う でない場合は物理ア ド レ ス が使用 さ れます。
•
MMU TLB 無効化 : 
コ ヒ ーレ ン シ ド メ イ ンの MicroBlaze コ アが UTLB のエン ト リ を無効化す る と (0 の有効フ ラ グで TLBHI を書 き
込むな ど)、 ハー ド ウ ェ ア メ ッ セージが表示 さ れ、 コ ヒ ーレ ン シ ド メ イ ンのその他すべての コ アが、 それぞれの
コ アの UTLB のエン ト リ で無効化 さ れた仮想ア ド レ ス に一致す る タ ブを持つ も のを無効化 し 、ま たそのシ ャ ド ウ
TLB を空に し ます。
エン ト リ を一致 さ せ る と き TID は考慮 さ れないので、ほかのプ ロ セ ス に属すエン ト リ を無効化 し て し ま う 可能性
があ り ます。 こ う し たエ ン ト リ に後でア ク セ スす る と 、 ソ フ ト ウ ェ アで処理す る 必要のあ る TLB ミ ス例外が生
成 さ れます。
MMU ページ を無効化す る 前に、 まず、 コ ヒ ーレ ン シ ド メ イ ン内でハー ド ウ ェ ア無効化が伝搬 さ れてい る こ と を
確認す る ため、 UTLB にそのページ を ロ ー ド す る 必要があ り ます。 コ ヒ ーレ ン シ ド メ イ ンのほかのプ ロ セ ッ サの
TLB に こ のエン ト リ が格納 さ れてい る 可能性があ る ので、 メ モ リ のページ を無効化にする だけでは不十分です。
MicroBlaze コ アが 1 つ以上のエン ト リ を無効化に し た ら 、 すべての ピ ア プ ロ セ ッ サがそれぞれの TLB 無効化を
完了 し た こ と を確認す る ため、 メ モ リ バ リ ア命令 (MBAR) を実行する 必要があ り ます。
•
分岐先キ ャ ッ シ ュ 無効化 : 
コ ヒ ーレ ン シ ド メ イ ンの MicroBlaze コ アが、 メ モ リ バ リ ア命令ま たは同期分岐を使用 し て、 分岐先キ ャ ッ シ ュ
を無効化にす る と 、 ハー ド ウ ェ ア メ ッ セージが表示 さ れ、 コ ヒ ーレ ン シ ド メ イ ン のその他すべての コ アが同 じ
こ と を実行 し ます。
特に、 こ れは、 「自己変更 コ ー ド 」 にあ る ガ イ ド ラ イ ンに沿っ ていれば、 マルチプ ロ セ ッ サ シ ス テ ムの コ ヒ ーレ ン シ
ド メ イ ン内で自己変更 コ ー ド を透過的に使用で き る と い う こ と です。
プ ロ ト コ ル準拠
MicroBlaze の命令キ ャ ッ シ ュ イ ン タ ーフ ェ イ ス は、 ACE ト ラ ンザ ク シ ョ ンの次のサブセ ッ ト を出力 し ます。
•
ReadClean
キ ャ ッ シ ュ ラ イ ンが割 り 当て ら れ る と 出力 さ れ る
•
ReadOnce
キ ャ ッ シ ュ がオ フ の と き 、 ま たは MMU の抑止キ ャ ッ シ イ ン グ ビ ッ ト がキ ャ ッ シ ュ ラ イ ンに対 し てセ ッ ト さ れ
る と 、 出力 さ れ る
MicroBlaze のデー タ キ ャ ッ シ ュ イ ン タ ーフ ェ イ ス は、 ACE ト ラ ンザ ク シ ョ ンの次のサブセ ッ ト を出力 し ます。
•
ReadClean
キ ャ ッ シ ュ ラ イ ンが割 り 当て ら れ る と 出力 さ れ る
•
CleanUnique
排他的ア ク セ ス シーケ ン ス の一部 と し て SWX 命令が実行 さ れ る と 出力 さ れ る
•
ReadOnce
キ ャ ッ シ ュ がオ フ の と き 、 ま たは MMU の抑止キ ャ ッ シ イ ン グ ビ ッ ト がキ ャ ッ シ ュ ラ イ ンに対 し てセ ッ ト さ れ
る と 、 出力 さ れ る
•
WriteUnique
ス ト ア命令が書 き 込みを実行す る たびに出力 さ れ る
•
CleanInvalid
WDC.EXT.FLUSH 命令が実行 さ れ る と 出力 さ れ る
•
MakeInvalid
WDC.EXT.CLEAR 命令が実行 さ れ る と 出力 さ れ る
MicroBlaze プ ロ セ ッ サ リ フ ァ レ ン ス ガ イ ド
UG984 (v2015.1) 2015 年 4 月 15 日
UG984 (v2015.3)
(v2015.2) 2015 年 96 月 30
24 日
japan.xilinx.com
100
第 2 章 : MicroBlaze アーキテ ク チ ャ
両方の イ ン タ ーフ ェ イ ス が、 分散仮想 メ モ リ (DVM) ト ラ ンザ ク シ ョ ンの次のサブセ ッ ト を出力 し ます。
•
•
DVM 操作
¨
TLB 無効化 : VA に よ る ハ イ パーバ イ ザー TLB 無効化
¨
分岐予測無効化 : 分岐予測すべて無効化
¨
物理命令キ ャ ッ シ ュ 無効化 : PA に よ る 非セキ ュ ア な物理命令キ ャ ッ シ ュ 無効化 (仮想 イ ンデ ッ ク ス な し )
¨
仮想命令キ ャ ッ シ ュ 無効化 : VA に よ る ハ イ パーバ イ ザー無効化
DVM 同期
¨
•
同期化
DVM 完了
¨
¨
上記の DVM ト ラ ンザ ク シ ョ ンに加え、 イ ン タ ーフ ェ イ スは、 CleanInvalid お よ び MakeInvalid ト ラ ンザ ク
シ ョ ン のみを受け付け ま す。 こ れ ら の ト ラ ン ザ ク シ ョ ン は命令キ ャ ッ シ ュ では効力がな く 、 示 さ れてい る
デー タ キ ャ ッ シ ュ ラ イ ン を無効化 し ます。 ほかの ト ラ ンザ ク シ ョ ンが受信 さ れ る と 、 動作は未定義にな り
ます。
「キ ャ ッ シ ュ イ ン タ ーフ ェ イ ス」 で説明 さ れてい る よ う に、AXI4 ト ラ ンザ ク シ ョ ンのサブセ ッ ト のみが イ ン
タ ーフ ェ イ ス で使用 さ れます。
MicroBlaze プ ロ セ ッ サ リ フ ァ レ ン ス ガ イ ド
UG984 (v2015.1) 2015 年 4 月 15 日
UG984 (v2015.3)
(v2015.2) 2015 年 96 月 30
24 日
japan.xilinx.com
101
第 3 章
MicroBlaze 信号イ ン タ ー フ ェ イ スの説明
こ の章では、 MicroBlaze™ を接続す る ために使用可能な信号 イ ン タ ーフ ェ イ ス の種類を説明 し ます。
概要
MicroBlaze コ アは、 デー タ と 命令のア ク セ ス それぞれにバ ス イ ン タ ーフ ェ イ ス ユニ ッ ト を持つハーバー ド アーキ テ
ク チ ャ と し て構成 さ れて い ま す。 サポー ト さ れて い る メ モ リ イ ン タ ー フ ェ イ ス は、 ロ ーカ ル メ モ リ バ ス (LMB)、
AMBA® AXI4 イ ン タ ーフ ェ イ ス (AXI4) お よ び ACE イ ン タ ーフ ェ イ ス (ACE) です。 LMB は、 オンチ ッ プのデ ュ アル
ポー ト ブ ロ ッ ク RAM へのシ ン グル サ イ ク ル ア ク セ ス を提供 し 、 AXI4 イ ン タ ーフ ェ イ ス は、 オンチ ッ プ と オ フチ ッ
プ両方のペ リ フ ェ ラ ルお よ び メ モ リ への接続を提供 し 、 ACE イ ン タ ーフ ェ イ ス は、 メ モ リ へのキ ャ ッ シ ュ コ ヒ ーレ
ン ト 接続を提供 し ます。 ま た、 MicroBlaze では、 最大 16 個の AXI4-Stream イ ン タ ーフ ェ イ ス ポー ト がサポー ト さ れ、
各ポー ト にマ ス タ ーが 1 つ、 ス レーブ イ ン タ ーフ ェ イ ス が 1 つあ り ます。
機能
MicroBlaze は、 次のバス イ ン タ ーフ ェ イ ス で コ ン フ ィ ギ ュ レー ト 可能です。
•
•
•
•
•
ペ リ フ ェ ラ ル イ ン タ ーフ ェ イ ス用の AMBA AXI4 イ ン タ ーフ ェ イ ス、 キ ャ ッ シ ュ イ ン タ ーフ ェ イ ス用の AMBA
AXI4 ま た は ACE イ ン タ ー フ ェ イ ス (詳細は 『ARM® AMBA® AXI and ACE Protocol Specification』 、 ARM IHI
0022Eを参照)
効率 よ く ブ ロ ッ ク RAM 転送す る ための簡単な同期プ ロ ト コ ルを提供する LMB
高速で ノ ン アービ ト レーテ ッ ド の ス ト リ ー ミ ン グ通信を提供す る AXI4-Stream
MDM (Microprocessor Debug Module) コ アで使用する デバ ッ グ イ ン タ ーフ ェ イ ス
パフ ォーマ ン ス解析用の ト レース イ ン タ ーフ ェ イ ス
MicroBlaze プ ロ セ ッ サ リ フ ァ レ ン ス ガ イ ド
UG984 (v2015.1) 2015 年 4 月 15 日
UG984
(v2015.2) 2015 年 96 月 30
(v2015.3)
24 日
japan.xilinx.com
102
第 3 章 : MicroBlaze 信号イ ン タ ー フ ェ イ スの説明
MicroBlaze の I/O 概要
図 3-1 お よ び次の表 3-1 で、 コ ア イ ン タ ーフ ェ イ ス は次の よ う に定義 さ れてい ます。
M_AXI_DP : ペ リ フ ェ ラ ル デー タ イ ン タ ーフ ェ イ ス、 AXI4-Lite ま たは AXI4 イ ン タ ーフ ェ イ ス
DLMB :
M_AXI_IP :
ILMB :
M0_AXIS..M15_AXIS :
S0_AXIS..S15_AXIS :
M_AXI_DC :
M_ACE_DC :
M_AXI_IC :
M_ACE_IC :
コア:
デー タ イ ン タ ーフ ェ イ ス、 ロ ーカル メ モ リ バ ス ( ブ ロ ッ ク RAM のみ )
ペ リ フ ェ ラ ル命令 イ ン タ ーフ ェ イ ス、 AXI4-Lite イ ン タ ーフ ェ イ ス
命令 イ ン タ ーフ ェ イ ス、 ロ ーカル メ モ リ バス ( ブ ロ ッ ク RAM のみ )
AXI4-Stream イ ン タ ーフ ェ イ ス マ ス タ ー直接接続 イ ン タ ーフ ェ イ ス
AXI4-Stream イ ン タ ーフ ェ イ ス ス レーブ直接接続 イ ン タ ーフ ェ イ ス
デー タ 側キ ャ ッ シ ュ AXI4 イ ン タ ーフ ェ イ ス
デー タ 側キ ャ ッ シ ュ ACI コ ヒ ーレ ン シ拡張 (ACE) イ ン タ ーフ ェ イ ス
命令側キ ャ ッ シ ュ AXI4 イ ン タ ーフ ェ イ ス
命令側キ ャ ッ シ ュ ACI コ ヒ ーレ ン シ拡張 (ACE) イ ン タ ーフ ェ イ ス
ク ロ ッ ク 、 リ セ ッ ト 、 割 り 込み、 デバ ッ グ、 ト レース用の さ ま ざ ま な信号
命令側
デー タ 側
バス イ ン タ ー フ ェ イ ス
バス イ ン タ ー フ ェ イ ス
メ モ リ 管理ユニ ッ ト (MMU)
M_AXI_IC
M_ACE_IC
UTLB
ITLB
シフ ト
特殊
用途
レジス タ
バレル シ フ ト
乗算器
ILMB
FPU
命令
バッ フ ァー
M_AXI_DP
分周器
バス
IF
D キャ ッ シュ
I キャ ッ シュ
ALU
プ ログ ラ ム
カ ウン タ ー
分岐
タ ーゲ ッ ト
キャ ッ シュ
M_AXI_IP
M_AXI_DC
M_ACE_DC
DTLB
バス
IF
DLMB
命令
デコー ド
レ ジ ス タ フ ァ イル
32 X 32b
M0_AXIS..
M15_AXIS
S0_AXIS..
S15_AXIS
オプ シ ョ ンの MicroBlaze 機能
図 3‐1 : MicroBlaze コ アのブ ロ ッ ク図
MicroBlaze プ ロ セ ッ サ リ フ ァ レ ン ス ガ イ ド
UG984 (v2015.1) 2015 年 4 月 15 日
UG984 (v2015.3)
(v2015.2) 2015 年 96 月 30
24 日
japan.xilinx.com
103
第 3 章 : MicroBlaze 信号イ ン タ ー フ ェ イ スの説明
表 3‐1 : MicroBlaze コ ア I/O のま と め
イ ン ターフ ェ
イス
I/O
M_AXI_DP_AWID
M_AXI_DP
O
マ ス タ ー書き 込みア ド レ ス ID
M_AXI_DP_AWADDR
M_AXI_DP
O
マ ス タ ー書き 込みア ド レ ス
M_AXI_DP_AWLEN
M_AXI_DP
O
マ ス タ ー バース ト 長
M_AXI_DP_AWSIZE
M_AXI_DP
O
マ ス タ ー バース ト サ イ ズ
M_AXI_DP_AWBURST
M_AXI_DP
O
マ ス タ ー バース ト タ イ プ
M_AXI_DP_AWLOCK
M_AXI_DP
O
マス ター ロ ッ ク タ イ プ
M_AXI_DP_AWCACHE
M_AXI_DP
O
マス ター キ ャ ッ シ ュ タ イ プ
M_AXI_DP_AWPROT
M_AXI_DP
O
マ ス タ ー保護 タ イ プ
M_AXI_DP_AWQOS
M_AXI_DP
O
マ ス タ ーのサービ ス品質 (QoS)
M_AXI_DP_AWVALID
M_AXI_DP
O
マ ス タ ー書き 込みア ド レ ス有効
M_AXI_DP_AWREADY
M_AXI_DP
I
ス レーブ書き 込みア ド レ ス準備完了
M_AXI_DP_WDATA
M_AXI_DP
O
マ ス タ ー書き 込みデー タ
M_AXI_DP_WSTRB
M_AXI_DP
O
マ ス タ ー書き 込みス ト ロ ーブ
M_AXI_DP_WLAST
M_AXI_DP
O
マ ス タ ー書き 込み最終
M_AXI_DP_WVALID
M_AXI_DP
O
マ ス タ ー書き 込み有効
M_AXI_DP_WREADY
M_AXI_DP
I
ス レーブ書き 込み準備完了
M_AXI_DP_BID
M_AXI_DP
I
ス レーブ応答 ID
M_AXI_DP_BRESP
M_AXI_DP
I
ス レーブ書き 込み応答
M_AXI_DP_BVALID
M_AXI_DP
I
ス レーブ書き 込み応答有効
M_AXI_DP_BREADY
M_AXI_DP
O
マ ス タ ー応答準備完了
M_AXI_DP_ARID
M_AXI_DP
O
マ ス タ ー読み出 し ア ド レ ス ID
M_AXI_DP_ARADDR
M_AXI_DP
O
マ ス タ ー読み出 し ア ド レ ス
M_AXI_DP_ARLEN
M_AXI_DP
O
マ ス タ ー バース ト 長
M_AXI_DP_ARSIZE
M_AXI_DP
O
マ ス タ ー バース ト サ イ ズ
M_AXI_DP_ARBURST
M_AXI_DP
O
マ ス タ ー バース ト タ イ プ
M_AXI_DP_ARLOCK
M_AXI_DP
O
マス ター ロ ッ ク タ イ プ
M_AXI_DP_ARCACHE
M_AXI_DP
O
マス ター キ ャ ッ シ ュ タ イ プ
M_AXI_DP_ARPROT
M_AXI_DP
O
マ ス タ ー保護 タ イ プ
M_AXI_DP_ARQOS
M_AXI_DP
O
マ ス タ ーのサービ ス品質 (QoS)
M_AXI_DP_ARVALID
M_AXI_DP
O
マ ス タ ー読み出 し ア ド レ ス有効
M_AXI_DP_ARREADY
M_AXI_DP
I
ス レーブ読み出 し ア ド レ ス準備完了
M_AXI_DP_RID
M_AXI_DP
I
ス レーブ読み出 し ID タ グ
M_AXI_DP_RDATA
M_AXI_DP
I
ス レーブ読み出 し デー タ
M_AXI_DP_RRESP
M_AXI_DP
I
ス レーブ読み出 し 応答
信号
MicroBlaze プ ロ セ ッ サ リ フ ァ レ ン ス ガ イ ド
UG984 (v2015.1) 2015 年 4 月 15 日
UG984 (v2015.3)
(v2015.2) 2015 年 96 月 30
24 日
説明
japan.xilinx.com
104
第 3 章 : MicroBlaze 信号イ ン タ ー フ ェ イ スの説明
表 3‐1 : MicroBlaze コ ア I/O のま と め (続き)
イ ン ターフ ェ
イス
I/O
M_AXI_DP_RLAST
M_AXI_DP
I
ス レーブ読み出 し 最終
M_AXI_DP_RVALID
M_AXI_DP
I
ス レーブ読み出 し 有効
M_AXI_DP_RREADY
M_AXI_DP
O
マ ス タ ー読み出 し 準備完了
M_AXI_IP_AWID
M_AXI_IP
O
マ ス タ ー書き 込みア ド レ ス ID
M_AXI_IP_AWADDR
M_AXI_IP
O
マ ス タ ー書き 込みア ド レ ス
M_AXI_IP_AWLEN
M_AXI_IP
O
マ ス タ ー バース ト 長
M_AXI_IP_AWSIZE
M_AXI_IP
O
マ ス タ ー バース ト サ イ ズ
M_AXI_IP_AWBURST
M_AXI_IP
O
マ ス タ ー バース ト タ イ プ
M_AXI_IP_AWLOCK
M_AXI_IP
O
マス ター ロ ッ ク タ イ プ
M_AXI_IP_AWCACHE
M_AXI_IP
O
マス ター キ ャ ッ シ ュ タ イ プ
M_AXI_IP_AWPROT
M_AXI_IP
O
マ ス タ ー保護 タ イ プ
M_AXI_IP_AWQOS
M_AXI_IP
O
マ ス タ ーのサービ ス品質 (QoS)
M_AXI_IP_AWVALID
M_AXI_IP
O
マ ス タ ー書き 込みア ド レ ス有効
M_AXI_IP_AWREADY
M_AXI_IP
I
ス レーブ書き 込みア ド レ ス準備完了
M_AXI_IP_WDATA
M_AXI_IP
O
マ ス タ ー書き 込みデー タ
M_AXI_IP_WSTRB
M_AXI_IP
O
マ ス タ ー書き 込みス ト ロ ーブ
M_AXI_IP_WLAST
M_AXI_IP
O
マ ス タ ー書き 込み最終
M_AXI_IP_WVALID
M_AXI_IP
O
マ ス タ ー書き 込み有効
M_AXI_IP_WREADY
M_AXI_IP
I
ス レーブ書き 込み準備完了
M_AXI_IP_BID
M_AXI_IP
I
ス レーブ応答 ID
M_AXI_IP_BRESP
M_AXI_IP
I
ス レーブ書き 込み応答
M_AXI_IP_BVALID
M_AXI_IP
I
ス レーブ書き 込み応答有効
M_AXI_IP_BREADY
M_AXI_IP
O
マ ス タ ー応答準備完了
M_AXI_IP_ARID
M_AXI_IP
O
マ ス タ ー読み出 し ア ド レ ス ID
M_AXI_IP_ARADDR
M_AXI_IP
O
マ ス タ ー読み出 し ア ド レ ス
M_AXI_IP_ARLEN
M_AXI_IP
O
マ ス タ ー バース ト 長
M_AXI_IP_ARSIZE
M_AXI_IP
O
マ ス タ ー バース ト サ イ ズ
M_AXI_IP_ARBURST
M_AXI_IP
O
マ ス タ ー バース ト タ イ プ
M_AXI_IP_ARLOCK
M_AXI_IP
O
マス ター ロ ッ ク タ イ プ
M_AXI_IP_ARCACHE
M_AXI_IP
O
マス ター キ ャ ッ シ ュ タ イ プ
M_AXI_IP_ARPROT
M_AXI_IP
O
マ ス タ ー保護 タ イ プ
M_AXI_IP_ARQOS
M_AXI_IP
O
マ ス タ ーのサービ ス品質 (QoS)
M_AXI_IP_ARVALID
M_AXI_IP
O
マ ス タ ー読み出 し ア ド レ ス有効
M_AXI_IP_ARREADY
M_AXI_IP
I
ス レーブ読み出 し ア ド レ ス準備完了
M_AXI_IP_RID
M_AXI_IP
I
ス レーブ読み出 し ID タ グ
信号
MicroBlaze プ ロ セ ッ サ リ フ ァ レ ン ス ガ イ ド
UG984 (v2015.1) 2015 年 4 月 15 日
UG984 (v2015.3)
(v2015.2) 2015 年 96 月 30
24 日
説明
japan.xilinx.com
105
第 3 章 : MicroBlaze 信号イ ン タ ー フ ェ イ スの説明
表 3‐1 : MicroBlaze コ ア I/O のま と め (続き)
イ ン ターフ ェ
イス
I/O
M_AXI_IP_RDATA
M_AXI_IP
I
ス レーブ読み出 し デー タ
M_AXI_IP_RRESP
M_AXI_IP
I
ス レーブ読み出 し 応答
M_AXI_IP_RLAST
M_AXI_IP
I
ス レーブ読み出 し 最終
M_AXI_IP_RVALID
M_AXI_IP
I
ス レーブ読み出 し 有効
M_AXI_IP_RREADY
M_AXI_IP
O
マ ス タ ー読み出 し 準備完了
M_AXI_DC_AWADDR
M_AXI_DC
O
マ ス タ ー書き 込みア ド レ ス
M_AXI_DC_AWLEN
M_AXI_DC
O
マ ス タ ー バース ト 長
M_AXI_DC_AWSIZE
M_AXI_DC
O
マ ス タ ー バース ト サ イ ズ
M_AXI_DC_AWBURST
M_AXI_DC
O
マ ス タ ー バース ト タ イ プ
M_AXI_DC_AWLOCK
M_AXI_DC
O
マス ター ロ ッ ク タ イ プ
M_AXI_DC_AWCACHE
M_AXI_DC
O
マス ター キ ャ ッ シ ュ タ イ プ
M_AXI_DC_AWPROT
M_AXI_DC
O
マ ス タ ー保護 タ イ プ
M_AXI_DC_AWQOS
M_AXI_DC
O
マ ス タ ーのサービ ス品質 (QoS)
M_AXI_DC_AWVALID
M_AXI_DC
O
マ ス タ ー書き 込みア ド レ ス有効
M_AXI_DC_AWREADY
M_AXI_DC
I
ス レーブ書き 込みア ド レ ス準備完了
M_AXI_DC_AWUSER
M_AXI_DC
O
マ ス タ ー書き 込みア ド レ ス ユーザー信号
M_AXI_DC_AWDOMAIN
M_ACE_DC
O
マ ス タ ー書き 込みア ド レ ス ド メ イ ン
M_AXI_DC_AWSNOOP
M_ACE_DC
O
マ ス タ ー書き 込みア ド レ ス ス ヌープ
M_AXI_DC_AWBAR
M_ACE_DC
O
マ ス タ ー書き 込みア ド レ ス バ リ ア
M_AXI_DC_WDATA
M_AXI_DC
O
マ ス タ ー書き 込みデー タ
M_AXI_DC_WSTRB
M_AXI_DC
O
マ ス タ ー書き 込みス ト ロ ーブ
M_AXI_DC_WLAST
M_AXI_DC
O
マ ス タ ー書き 込み最終
M_AXI_DC_WVALID
M_AXI_DC
O
マ ス タ ー書き 込み有効
M_AXI_DC_WREADY
M_AXI_DC
I
ス レーブ書き 込み準備完了
M_AXI_DC_WUSER
M_AXI_DC
O
マ ス タ ー書き 込みユーザー信号
M_AXI_DC_BRESP
M_AXI_DC
I
ス レーブ書き 込み応答
M_AXI_DC_BID
M_AXI_DC
I
ス レーブ応答 ID
M_AXI_DC_BVALID
M_AXI_DC
I
ス レーブ書き 込み応答有効
M_AXI_DC_BREADY
M_AXI_DC
O
マ ス タ ー応答準備完了
M_AXI_DC_BUSER
M_AXI_DC
I
ス レーブ書き 込み応答ユーザー信号
M_AXI_DC_WACK
M_ACE_DC
O
ス レーブ書き 込み肯定応答
M_AXI_DC_ARID
M_AXI_DC
O
マ ス タ ー読み出 し ア ド レ ス ID
M_AXI_DC_ARADDR
M_AXI_DC
O
マ ス タ ー読み出 し ア ド レ ス
M_AXI_DC_ARLEN
M_AXI_DC
O
マ ス タ ー バース ト 長
M_AXI_DC_ARSIZE
M_AXI_DC
O
マ ス タ ー バース ト サ イ ズ
信号
MicroBlaze プ ロ セ ッ サ リ フ ァ レ ン ス ガ イ ド
UG984 (v2015.1) 2015 年 4 月 15 日
UG984 (v2015.3)
(v2015.2) 2015 年 96 月 30
24 日
説明
japan.xilinx.com
106
第 3 章 : MicroBlaze 信号イ ン タ ー フ ェ イ スの説明
表 3‐1 : MicroBlaze コ ア I/O のま と め (続き)
イ ン ターフ ェ
イス
I/O
M_AXI_DC_ARBURST
M_AXI_DC
O
マ ス タ ー バース ト タ イ プ
M_AXI_DC_ARLOCK
M_AXI_DC
O
マス ター ロ ッ ク タ イ プ
M_AXI_DC_ARCACHE
M_AXI_DC
O
マス ター キ ャ ッ シ ュ タ イ プ
M_AXI_DC_ARPROT
M_AXI_DC
O
マ ス タ ー保護 タ イ プ
M_AXI_DC_ARQOS
M_AXI_DC
O
マ ス タ ーのサービ ス品質 (QoS)
M_AXI_DC_ARVALID
M_AXI_DC
O
マ ス タ ー読み出 し ア ド レ ス有効
M_AXI_DC_ARREADY
M_AXI_DC
I
ス レーブ読み出 し ア ド レ ス準備完了
M_AXI_DC_ARUSER
M_AXI_DC
O
マ ス タ ー読み出 し ア ド レ ス ユーザー信号
M_AXI_DC_ARDOMAIN
M_ACE_DC
O
マ ス タ ー読み出 し ア ド レ ス ド メ イ ン
M_AXI_DC_ARSNOOP
M_ACE_DC
O
マ ス タ ー読み出 し ア ド レ ス ス ヌープ
M_AXI_DC_ARBAR
M_ACE_DC
O
マ ス タ ー読み出 し ア ド レ ス バ リ ア
M_AXI_DC_RID
M_AXI_DC
I
ス レーブ読み出 し ID タ グ
M_AXI_DC_RDATA
M_AXI_DC
I
ス レーブ読み出 し デー タ
M_AXI_DC_RRESP
M_AXI_DC
I
ス レーブ読み出 し 応答
M_AXI_DC_RLAST
M_AXI_DC
I
ス レーブ読み出 し 最終
M_AXI_DC_RVALID
M_AXI_DC
I
ス レーブ読み出 し 有効
M_AXI_DC_RREADY
M_AXI_DC
O
マ ス タ ー読み出 し 準備完了
M_AXI_DC_RUSER
M_AXI_DC
I
ス レーブ読み出 し ユーザー信号
M_AXI_DC_RACK
M_ACE_DC
O
マ ス タ ー読み出 し 肯定応答
M_AXI_DC_ACVALID
M_ACE_DC
I
ス レーブ ス ヌープ ア ド レ ス有効
M_AXI_DC_ACADDR
M_ACE_DC
I
ス レーブ ス ヌープ ア ド レ ス
M_AXI_DC_ACSNOOP
M_ACE_DC
I
ス レーブ ス ヌープ ア ド レ ス ス ヌープ
M_AXI_DC_ACPROT
M_ACE_DC
I
ス レーブ ス ヌープ ア ド レ ス保護 タ イ プ
M_AXI_DC_ACREADY
M_ACE_DC
O
マ ス タ ー ス ヌープ準備完了
M_AXI_DC_CRREADY
M_ACE_DC
I
ス レーブ ス ヌープ応答準備完了
M_AXI_DC_CRVALID
M_ACE_DC
O
マ ス タ ー ス ヌープ応答有効
M_AXI_DC_CRRESP
M_ACE_DC
O
マ ス タ ー ス ヌープ応答
M_AXI_DC_CDVALID
M_ACE_DC
O
マ ス タ ー ス ヌープ デー タ 有効
M_AXI_DC_CDREADY
M_ACE_DC
I
ス レーブ ス ヌープ デー タ 準備完了
M_AXI_DC_CDDATA
M_ACE_DC
O
マ ス タ ー ス ヌープ デー タ
M_AXI_DC_CDLAST
M_ACE_DC
O
マ ス タ ー ス ヌープ デー タ 最終
M_AXI_IC_AWID
M_AXI_IC
O
マ ス タ ー書き 込みア ド レ ス ID
M_AXI_IC_AWADDR
M_AXI_IC
O
マ ス タ ー書き 込みア ド レ ス
M_AXI_IC_AWLEN
M_AXI_IC
O
マ ス タ ー バース ト 長
M_AXI_IC_AWSIZE
M_AXI_IC
O
マ ス タ ー バース ト サ イ ズ
信号
MicroBlaze プ ロ セ ッ サ リ フ ァ レ ン ス ガ イ ド
UG984 (v2015.1) 2015 年 4 月 15 日
UG984 (v2015.3)
(v2015.2) 2015 年 96 月 30
24 日
説明
japan.xilinx.com
107
第 3 章 : MicroBlaze 信号イ ン タ ー フ ェ イ スの説明
表 3‐1 : MicroBlaze コ ア I/O のま と め (続き)
イ ン ターフ ェ
イス
I/O
M_AXI_IC_AWBURST
M_AXI_IC
O
マ ス タ ー バース ト タ イ プ
M_AXI_IC_AWLOCK
M_AXI_IC
O
マス ター ロ ッ ク タ イ プ
M_AXI_IC_AWCACHE
M_AXI_IC
O
マス ター キ ャ ッ シ ュ タ イ プ
M_AXI_IC_AWPROT
M_AXI_IC
O
マ ス タ ー保護 タ イ プ
M_AXI_IC_AWQOS
M_AXI_IC
O
マ ス タ ーのサービ ス品質 (QoS)
M_AXI_IC_AWVALID
M_AXI_IC
O
マ ス タ ー書き 込みア ド レ ス有効
M_AXI_IC_AWREADY
M_AXI_IC
I
ス レーブ書き 込みア ド レ ス準備完了
M_AXI_IC_AWUSER
M_AXI_IC
O
マ ス タ ー書き 込みア ド レ ス ユーザー信号
M_AXI_IC_AWDOMAIN
M_ACE_IC
O
マ ス タ ー書き 込みア ド レ ス ド メ イ ン
M_AXI_IC_AWSNOOP
M_ACE_IC
O
マ ス タ ー書き 込みア ド レ ス ス ヌープ
M_AXI_IC_AWBAR
M_ACE_IC
O
マ ス タ ー書き 込みア ド レ ス バ リ ア
M_AXI_IC_WDATA
M_AXI_IC
O
マ ス タ ー書き 込みデー タ
M_AXI_IC_WSTRB
M_AXI_IC
O
マ ス タ ー書き 込みス ト ロ ーブ
M_AXI_IC_WLAST
M_AXI_IC
O
マ ス タ ー書き 込み最終
M_AXI_IC_WVALID
M_AXI_IC
O
マ ス タ ー書き 込み有効
M_AXI_IC_WREADY
M_AXI_IC
I
ス レーブ書き 込み準備完了
M_AXI_IC_WUSER
M_AXI_IC
O
マ ス タ ー書き 込みユーザー信号
M_AXI_IC_BID
M_AXI_IC
I
ス レーブ応答 ID
M_AXI_IC_BRESP
M_AXI_IC
I
ス レーブ書き 込み応答
M_AXI_IC_BVALID
M_AXI_IC
I
ス レーブ書き 込み応答有効
M_AXI_IC_BREADY
M_AXI_IC
O
マ ス タ ー応答準備完了
M_AXI_IC_BUSER
M_AXI_IC
I
ス レーブ書き 込み応答ユーザー信号
M_AXI_IC_WACK
M_ACE_IC
O
ス レーブ書き 込み肯定応答
M_AXI_IC_ARID
M_AXI_IC
O
マ ス タ ー読み出 し ア ド レ ス ID
M_AXI_IC_ARADDR
M_AXI_IC
O
マ ス タ ー読み出 し ア ド レ ス
M_AXI_IC_ARLEN
M_AXI_IC
O
マ ス タ ー バース ト 長
M_AXI_IC_ARSIZE
M_AXI_IC
O
マ ス タ ー バース ト サ イ ズ
M_AXI_IC_ARBURST
M_AXI_IC
O
マ ス タ ー バース ト タ イ プ
M_AXI_IC_ARLOCK
M_AXI_IC
O
マス ター ロ ッ ク タ イ プ
M_AXI_IC_ARCACHE
M_AXI_IC
O
マス ター キ ャ ッ シ ュ タ イ プ
M_AXI_IC_ARPROT
M_AXI_IC
O
マ ス タ ー保護 タ イ プ
M_AXI_IC_ARQOS
M_AXI_IC
O
マ ス タ ーのサービ ス品質 (QoS)
M_AXI_IC_ARVALID
M_AXI_IC
O
マ ス タ ー読み出 し ア ド レ ス有効
M_AXI_IC_ARREADY
M_AXI_IC
I
ス レーブ読み出 し ア ド レ ス準備完了
M_AXI_IC_ARUSER
M_AXI_IC
O
マ ス タ ー読み出 し ア ド レ ス ユーザー信号
信号
MicroBlaze プ ロ セ ッ サ リ フ ァ レ ン ス ガ イ ド
UG984 (v2015.1) 2015 年 4 月 15 日
UG984 (v2015.3)
(v2015.2) 2015 年 96 月 30
24 日
説明
japan.xilinx.com
108
第 3 章 : MicroBlaze 信号イ ン タ ー フ ェ イ スの説明
表 3‐1 : MicroBlaze コ ア I/O のま と め (続き)
イ ン ターフ ェ
イス
I/O
M_AXI_IC_ARDOMAIN
M_ACE_IC
O
マ ス タ ー読み出 し ア ド レ ス ド メ イ ン
M_AXI_IC_ARSNOOP
M_ACE_IC
O
マ ス タ ー読み出 し ア ド レ ス ス ヌープ
M_AXI_IC_ARBAR
M_ACE_IC
O
マ ス タ ー読み出 し ア ド レ ス バ リ ア
M_AXI_IC_RID
M_AXI_IC
I
ス レーブ読み出 し ID タ グ
M_AXI_IC_RDATA
M_AXI_IC
I
ス レーブ読み出 し デー タ
M_AXI_IC_RRESP
M_AXI_IC
I
ス レーブ読み出 し 応答
M_AXI_IC_RLAST
M_AXI_IC
I
ス レーブ読み出 し 最終
M_AXI_IC_RVALID
M_AXI_IC
I
ス レーブ読み出 し 有効
M_AXI_IC_RREADY
M_AXI_IC
O
マ ス タ ー読み出 し 準備完了
M_AXI_IC_RUSER
M_AXI_IC
I
ス レーブ読み出 し ユーザー信号
M_AXI_IC_RACK
M_ACE_IC
O
マ ス タ ー読み出 し 肯定応答
M_AXI_IC_ACVALID
M_ACE_IC
I
ス レーブ ス ヌープ ア ド レ ス有効
M_AXI_IC_ACADDR
M_ACE_IC
I
ス レーブ ス ヌープ ア ド レ ス
M_AXI_IC_ACSNOOP
M_ACE_IC
I
ス レーブ ス ヌープ ア ド レ ス ス ヌープ
M_AXI_IC_ACPROT
M_ACE_IC
I
ス レーブ ス ヌープ ア ド レ ス保護 タ イ プ
M_AXI_IC_ACREADY
M_ACE_IC
O
マ ス タ ー ス ヌープ準備完了
M_AXI_IC_CRREADY
M_ACE_IC
I
ス レーブ ス ヌープ応答準備完了
M_AXI_IC_CRVALID
M_ACE_IC
O
マ ス タ ー ス ヌープ応答有効
M_AXI_IC_CRRESP
M_ACE_IC
O
マ ス タ ー ス ヌープ応答
M_AXI_IC_CDVALID
M_ACE_IC
O
マ ス タ ー ス ヌープ デー タ 有効
M_AXI_IC_CDREADY
M_ACE_IC
I
ス レーブ ス ヌープ デー タ 準備完了
M_AXI_IC_CDDATA
M_ACE_IC
O
マ ス タ ー ス ヌープ デー タ
M_AXI_IC_CDLAST
信号
説明
M_ACE_IC
O
マ ス タ ー ス ヌープ デー タ 最終
Data_Addr[0:31]
DLMB
O
デー タ イ ン タ ーフ ェ イ ス LMB ア ド レ ス バ ス
Byte_Enable[0:3]
DLMB
O
デー タ イ ン タ ーフ ェ イ ス LMB バ イ ト イ ネーブル
Data_Write[0:31]
DLMB
O
デー タ イ ン タ ーフ ェ イ ス LMB 書き 込みデー タ バ ス
D_AS
DLMB
O
デー タ イ ン タ ーフ ェ イ ス LMB ア ド レ ス ス ト ロ ーブ
Read_Strobe
DLMB
O
デー タ イ ン タ ーフ ェ イ ス LMB 読み出 し ス ト ロ ーブ
Write_Strobe
DLMB
O
デー タ イ ン タ ーフ ェ イ ス LMB 書き 込みス ト ロ ーブ
Data_Read[0:31]
DLMB
I
デー タ イ ン タ ーフ ェ イ ス LMB 読み出 し デー タ バ ス
DReady
DLMB
I
デー タ イ ン タ ーフ ェ イ ス LMB 読み出 し 準備完了
DWait
DLMB
I
デー タ イ ン タ ーフ ェ イ ス LMB デー タ 待機
DCE
DLMB
I
デー タ イ ン タ ーフ ェ イ ス LMB 訂正可能エ ラ ー
DUE
DLMB
I
デー タ イ ン タ ーフ ェ イ ス LMB 訂正不可能エ ラ ー
Instr_Addr[0:31]
ILMB
O
命令 イ ン タ ーフ ェ イ ス LMB ア ド レ ス バ ス
MicroBlaze プ ロ セ ッ サ リ フ ァ レ ン ス ガ イ ド
UG984 (v2015.1) 2015 年 4 月 15 日
UG984 (v2015.3)
(v2015.2) 2015 年 96 月 30
24 日
japan.xilinx.com
109
第 3 章 : MicroBlaze 信号イ ン タ ー フ ェ イ スの説明
表 3‐1 : MicroBlaze コ ア I/O のま と め (続き)
イ ン ターフ ェ
イス
I/O
I_AS
ILMB
O
命令 イ ン タ ーフ ェ イ ス LMB ア ド レ ス ス ト ロ ーブ
IFetch
ILMB
O
命令 イ ン タ ーフ ェ イ ス LMB 命令フ ェ ッ チ
Instr[0:31]
ILMB
I
命令 イ ン タ ーフ ェ イ ス LMB 読み出 し デー タ バ ス
IReady
ILMB
I
命令 イ ン タ ーフ ェ イ ス LMB デー タ 準備完了
IWait
ILMB
I
命令 イ ン タ ーフ ェ イ ス LMB デー タ 待機
ICE
ILMB
I
命令 イ ン タ ーフ ェ イ ス LMB 訂正可能エ ラ ー
IUE
ILMB
I
命令 イ ン タ ーフ ェ イ ス LMB 訂正不可能エ ラ ー
Mn_AXIS_TLAST
M0_AXIS..
M15_AXIS
O
マ ス タ ー イ ン タ ーフ ェ イ ス出力 AXI4 チ ャ ネル
書き 込み最終
Mn_AXIS_TDATA
M0_AXIS..
M15_AXIS
O
マ ス タ ー イ ン タ ーフ ェ イ ス出力 AXI4 チ ャ ネル
書き 込みデー タ
Mn_AXIS_TVALID
M0_AXIS..
M15_AXIS
O
マ ス タ ー イ ン タ ーフ ェ イ ス出力 AXI4 チ ャ ネル
書き 込み有効
Mn_AXIS_TREADY
M0_AXIS..
M15_AXIS
I
マ ス タ ー イ ン タ ーフ ェ イ ス入力 AXI4 チ ャ ネル
書き 込み準備完了
Sn_AXIS_TLAST
S0_AXIS..
S15_AXIS
I
ス レーブ イ ン タ ーフ ェ イ ス入力 AXI4 チ ャ ネル
書き 込み最終
Sn_AXIS_TDATA
S0_AXIS..
S15_AXIS
I
ス レーブ イ ン タ ーフ ェ イ ス入力 AXI4 チ ャ ネル
書き 込みデー タ
Sn_AXIS_TVALID
S0_AXIS..
S15_AXIS
I
ス レーブ イ ン タ ーフ ェ イ ス入力 AXI4 チ ャ ネル
書き 込み有効
Sn_AXIS_TREADY
S0_AXIS..
S15_AXIS
O
ス レーブ イ ン タ ーフ ェ イ ス出力 AXI4 チ ャ ネル
書き 込み準備完了
Interrupt
コア
I
割 り 込み
Interrupt_Address1
コア
I
割 り 込みベ ク タ ー ア ド レ ス
Interrupt_Ack1
コア
O
割 り 込み肯定応答
Reset
コア
I
コ ア リ セ ッ ト 、 ア ク テ ィ ブ High。 最低 1 Clk ク ロ ッ ク サ イ ク
ル間保持する 必要があ る 。
Reset_Mode[0:1]
コア
I
リ セ ッ ト モー ド 。 リ セ ッ ト がア ク テ ィ ブの と き にサンプル。
詳細は、 表 3-2 を参照。
Clk
コア
I
ク ロ ッ ク2
Ext_BRK
コア
I
MDM か ら のブ レー ク 信号
Ext_NM_BRK
コア
I
MDM か ら のマ ス ク 不可能なブ レー ク 信号
MB_Halted
コア
O
デバ ッ グ イ ン タ ーフ ェ イ ス を介 し て、Dbg_Stop を セ ッ ト し て、
ま たは Reset_Mode[0:1] を 10 に設定 し て、パ イ プ ラ イ ン を停止
Dbg_Stop
コア
I
で き る だ け 早 く 無条件で パ イ プ ラ イ ン を 停止。 立 ち 上が り
エ ッ ジ で検出 さ れた信号を 最低 1Clk ク ロ ッ ク サ イ ク ル間保
持する 必要があ る 。 信号は C_DEBUG_ENABLED が 0 よ り 大
き い場合にのみ効力があ る 。
信号
MicroBlaze プ ロ セ ッ サ リ フ ァ レ ン ス ガ イ ド
UG984 (v2015.1) 2015 年 4 月 15 日
UG984 (v2015.3)
(v2015.2) 2015 年 96 月 30
24 日
説明
japan.xilinx.com
110
第 3 章 : MicroBlaze 信号イ ン タ ー フ ェ イ スの説明
表 3‐1 : MicroBlaze コ ア I/O のま と め (続き)
イ ン ターフ ェ
イス
I/O
説明
Dbg_Intr
コア
O
デバ ッ グ割 り 込み出力で、 パ フ ォ ーマ ン ス 監視カ ウ ン タ ーが
オーバーフ ロ ーす る と セ ッ ト さ れ、 C_DEBUG_ENABLED が 2 (
拡張) の と き に利用可能。
MB_Error
コア
O
C_FAULT_TOLERANT が 1 の と き 、 ミ ス し た例外が原因でパ イ
プ ラ イ ンが停止する 。
Sleep
コア
O
SLEEP 命令の実行後 ま たは Reset_Mode[0:1] を 10 に設定 し 、
MicroBlaze は ス リ ープ モー ド にな り 、 外部ア ク セ ス はすべて
完了 し 、 パ イ プ ラ イ ンは停止。
Wakeup[0:1]
コア
I
ど ち ら かの ビ ッ ト ま たは両方の ビ ッ ト が 1 の と き 、 MicroBlaze
が ス リ ープ モー ド か ら 復帰す る 。 MicroBlaze が ス リ ープ モー
ド でない と き は無視 さ れ る 。
Dbg_Wakeup
コア
O
外部 ロ ジ ッ ク が ウ ェ ー ク ア ッ プ信号を使用 し て、MicroBlaze を
ス リ ープ モー ド か ら 復帰 さ せ る デバ ッ グ リ ク エ ス ト
Lockstep_...
コア
IO
ハ イ イ ン テ グ リ テ ィ アプ リ ケーシ ョ ン用の ロ ッ ク ス テ ッ プ信
号。 詳細は、 表 3-11 を参照。
Dbg_...
コア
IO
MDM か ら のデバ ッ グ信号。 詳細は、 表 3-13 を参照。
Trace_...
コア
O
リ ア ル タ イ ム ハー ド ウ ェ ア 解析の ト レ ー ス 信号。 詳細は、
表 3-14 を参照。
信号
1. C_USE_INTERRUPT = 2 の場合のみ使用 (低レ イ テ ン シ割 り 込みサポー ト )
2. MicroBlaze は Clk 信号の ク ロ ッ ク 供給を受け る 同期デザ イ ンです (Dbg_Clk 信号の ク ロ ッ ク 供給を受け る ハー ド
ウ ェ ア デバ ッ グ ロ ジ ッ ク を除 く )。 ハー ド ウ ェ ア デバ ッ グ ロ ジ ッ ク が使用 さ れていない場合は、 Clk に対 し 、 最
小周波数制限はあ り ません。 し か し 、 ハー ド ウ ェ ア デバ ッ グ ロ ジ ッ ク が使用 さ れてい る 場合は、 2 つの ク ロ ッ ク
領域の間を転送 さ れ る 信号があ り ます。こ の場合、Clk の周波数は Dbg_Clk の も の よ り も 高 く なければな り ません。
表 3‐2 : リ セ ッ ト モー ド 入力の効果
Reset_Mode[0:1]
説明
0
C_BASE_VECTORS で定義 さ れてい る よ う に、 MicroBlaze は リ セ ッ ト ベ ク タ ーで実行開始。
標準デフ ォ ル ト 動作。
01
SLEEP 命令が実行 さ れてい る かの よ う に、 MicroBlaze はバ ス ア ク セ ス を実行せずに、 すぐ
に ス リ ープ モー ド に入 る 。 SLEEP の出力は 1 にセ ッ ト さ れ る 。 Wakeup[0:1] 信号のいずれ
かがセ ッ ト さ れてい る と 、 C_BASE_VECTORS で定義 さ れてい る よ う に、 MicroBlaze は リ
セ ッ ト ベ ク タ ーで実行開始。
こ の機能はマルチプ ロ セ ッ サ コ ン フ ィ ギ ュ レーシ ョ ンで有用で、 セカ ン ダ リ プ ロ セ ッ サを
LMB メ モ リ な し で コ ン フ ィ ギ ュ レー ト 可能。
10
C_DEBUG_ENABLED が 0 の場合、 動作は Reset_Mode[0:1] = 00 の と き と 同 じ にな る 。
C_DEBUG_ENABLED が 0 よ り 大き い場合、 MicroBlaze はバ ス ア ク セ ス を実行せずにすぐ に
デバ ッ グ停止に入 り 、 MB_Halted 出力が 1 にセ ッ ト さ れ る 。 デバ ッ グ イ ン タ ーフ ェ イ ス を
介 し て実行を継続す る と き は、 C_BASE_VECTORS で定義 さ れてい る よ う に、 MicroBlaze は
リ セ ッ ト ベ ク タ ーで実行開始。
11
予約
MicroBlaze プ ロ セ ッ サ リ フ ァ レ ン ス ガ イ ド
UG984 (v2015.1) 2015 年 4 月 15 日
UG984 (v2015.3)
(v2015.2) 2015 年 96 月 30
24 日
japan.xilinx.com
111
第 3 章 : MicroBlaze 信号イ ン タ ー フ ェ イ スの説明
AXI4 および ACE イ ン タ ー フ ェ イ スについて
メ モ リ マ ッ プ ド のイ ン タ ー フ ェ イ ス
ペ リ フ ェ ラル イ ン タ ー フ ェ イ ス
MicroBlaze の AXI4 メ モ リ マ ッ プ ド ペ リ フ ェ ラ ル イ ン タ ーフ ェ イ ス は、 32 ビ ッ ト のマ ス タ ー と し て イ ンプ リ メ ン ト
さ れます。 こ う し た イ ン タ ーフ ェ イ ス では、 1 度に 1 ト ラ ンザ ク シ ョ ンのみが処理 さ れ、 すべての ト ラ ンザ ク シ ョ ン
が順番に完了 し ます。
•
命令ペ リ フ ェ ラ ル イ ン タ ーフ ェ イ ス (M_AXI_IP) は、 1 ワー ド の読み出 し ア ク セ ス のみを実行 し 、 常に AXI4-Lite
サブセ ッ ト を使用す る よ う に設定 さ れてい ます。
•
デー タ ペ リ フ ェ ラ ル イ ン タ ーフ ェ イ ス (M_AXI_DP) は、1 ワ ー ド ア ク セ ス を実行 し 、デフ ォ ル ト で AXI4-Lite サ
ブセ ッ ト を使用す る よ う に設定 さ れてい ますが、LWX お よ び SWX 命令の排他的な ア ク セ ス を イ ネーブルにす る
と き は AXI4 を使用す る よ う に設定 さ れます。 ハーフ ワー ド お よ びバ イ ト の書 き 込みは、 適切なバ イ ト ス ト ロ ー
ブ を セ ッ ト し て行われます。
キ ャ ッ シ ュ イ ン タ ー フ ェ イ ス
AXI4 メ モ リ マ ッ プ ド キ ャ ッ シ ュ イ ン タ ーフ ェ イ ス は、 キ ャ ッ シ ュ ラ イ ンの長 さ お よ びデー タ 幅のパ ラ メ ー タ ーの
設定次第で、 32、 128、 256、 ま たは 512 ビ ッ ト のマ ス タ ー と し て イ ンプ リ メ ン ト さ れますが、 AXI コ ヒ ーレ ン シ拡張
(ACE) イ ン タ ーフ ェ イ スは 32 ビ ッ ト マ ス タ ー と し て イ ンプ リ メ ン ト さ れます。
•
32 ビ ッ ト マ ス タ ーの場合、 命令キ ャ ッ シ ュ イ ン タ ーフ ェ イ ス (M_AXI_IC ま たは M_ACE_IC) は、 キ ャ ッ シ ュ ラ
イ ンの長 さ に よ り ますが、 4、 8、 ま たは 16 ワ ー ド のバース ト 読み出 し ア ク セ ス を実行 し ます。 128、 256、 ま た
は 512 ビ ッ ト マ ス タ ーの場合は、 シ ン グル読み出 し ア ク セ ス のみが実行 さ れます。
32 ビ ッ ト マ ス タ ーの場合、こ の イ ン タ ーフ ェ イ ス では 2 ト ラ ンザ ク シ ョ ン ま で処理で き ます。ス ト リ ーム キ ャ ッ
シ ュ が イ ネーブルにな っ てい る 場合は、 5 ト ラ ンザ ク シ ョ ン ま で処理で き ます。 ス ト リ ーム キ ャ ッ シ ュ は事前に
2 つのキ ャ ッ シ ュ ラ イ ン を リ ク エ ス ト で き ます。 つま り 、 場合に よ っ ては 5 ト ラ ンザ ク シ ョ ン処理で き る と い う
こ と です。 こ の場合、 読み出 し の数は 2 のべ き 数でなければな ら ないため、 8 に設定 さ れます。 128、 256、 ま た
は 512 ビ ッ ト マ ス タ ーの場合は、 イ ン タ ーフ ェ イ ス では ト ラ ンザ ク シ ョ ンは 1 つ し か処理 さ れません。
ア ク セ ス す る メ モ リ ロ ケーシ ョ ン の数は、 C_ICACHE_ALWAYS_USED と い う パ ラ メ ー タ ーの設定で決 ま り ま
す。 こ のパ ラ メ ー タ ーが 1 の場合は、 キ ャ ッ シ ュ メ モ リ 範囲は常に、AXI4 ま たは ACE キ ャ ッ シ ュ イ ン タ ーフ ェ
イ ス を介 し て ア ク セ ス さ れ ます。 0 の場合は、 キ ャ ッ シ ュ が ソ フ ト ウ ェ アでデ ィ ス エーブルにな っ てい る と (す
なわち MSR[ICE]=0)、 キ ャ ッ シ ュ メ モ リ 範囲は AXI4 ペ リ フ ェ ラ ル イ ン タ ーフ ェ イ ス を介 し て ア ク セ ス さ れ ま
す。
•
32 ビ ッ ト マ ス タ ーの場合、 デー タ キ ャ ッ シ ュ イ ン タ ーフ ェ イ ス (M_AXI_DC ま たは M_ACE_DC) は、 1 ワー ド
ア ク セ ス を実行す る か、 ま たはキ ャ ッ シ ュ ラ イ ンの長 さ に よ り ますが、 4、 8、 16 ワ ー ド のバー ス ト 読み出 し ア
ク セ ス を実行 し ます。 AXI4 で ラ イ ト バ ッ ク キ ャ ッ シ ュ が使用 さ れ る 場合は、 バース ト 書 き 込みア ク セ ス のみが
実行 さ れます。 128、 256、 ま たは 512 ビ ッ ト の AXI4 マ ス タ ーの場合は、 シ ン グル ア ク セ ス のみにな り ます。
こ の イ ン タ ーフ ェ イ ス では複数の ト ラ ンザ ク シ ョ ン を処理で き 、 読み出 し の場合は 2 ト ラ ンザ ク シ ョ ン ま で、 書
き 込みの場合は 32 ト ラ ンザ ク シ ョ ン ま で処理で き ます。 MicroBlaze は順次 メ モ リ モデルを維持す る 必要があ る
の ですが、 AXI4 や ACE は、 順序に関係な く 、 読み出 し /書 き 込みの それぞれに対 し て チ ャ ネ ルが あ る た め、
MicroBlaze は読み出 し の前にすべての書き 込みを完了 さ せます。 MicroBlaze はパ イ プ ラ イ ン を ス ト ール さ せずに
複数の書 き 込みを処理で き る ので、 最高 32 個の書 き 込み ト ラ ンザ ク シ ョ ン を使用す る こ と でパフ ォーマ ン ス を
改善で き ます。
ワー ド 、 ハーフ ワー ド 、 お よ びバ イ ト の書 き 込みは、 適切なバ イ ト ス ト ロ ーブ を セ ッ ト し て行われます。
LWX お よ び SWX 命令に対 し ては、 排他的ア ク セ ス を イ ネーブルにする こ と がで き ます。
MicroBlaze プ ロ セ ッ サ リ フ ァ レ ン ス ガ イ ド
UG984 (v2015.1) 2015 年 4 月 15 日
UG984 (v2015.3)
(v2015.2) 2015 年 96 月 30
24 日
japan.xilinx.com
112
第 3 章 : MicroBlaze 信号イ ン タ ー フ ェ イ スの説明
ア ク セ ス す る メ モ リ ロ ケーシ ョ ン の数は、 C_DCACHE_ALWAYS_USED と い う パ ラ メ ー タ ーの設定で決 ま り ま
す。 こ のパ ラ メ ー タ ーが 1 の場合は、 キ ャ ッ シ ュ メ モ リ 範囲は常に、AXI4 ま たは ACE キ ャ ッ シ ュ イ ン タ ーフ ェ
イ ス を介 し て ア ク セ ス さ れ ます。 0 の場合は、 キ ャ ッ シ ュ が ソ フ ト ウ ェ アでデ ィ ス エーブルにな っ てい る と (す
なわち MSR[DCE]=0)、 キ ャ ッ シ ュ メ モ リ 範囲は AXI4 ペ リ フ ェ ラ ル イ ン タ ーフ ェ イ ス を介 し てア ク セ ス さ れま
す。
イ ン タ ー フ ェ イ ス パラ メ ー タ ーおよび信号
パ ラ メ ー タ ーが ツールで割 り 当て ら れ る 場合の MicroBlaze のパ ラ メ ー タ ー設定 と AXI4 イ ン タ ー フ ェ イ ス の動作の
関係が、 表 3-3 に ま と め ら れてい ます。
表 3‐3 : AXI メ モ リ マ ッ プ ド イ ン タ ー フ ェ イ ス パラ メ ー タ ー
イ ン ターフ ェ
イス
パラ メ ー タ ー
説明
M_AXI_DP
C_M_AXI_DP_PROTOCOL
AXI4-Lite : デフ ォ ル ト
AXI4 : C_M_AXI_DP_EXCLUSIVE_ACCESS が 1 の と き 、 排他的
ア ク セ ス を可能にする ために使用
M_AXI_IC
M_ACE_IC
C_M_AXI_IC_DATA_WIDTH
32 : デフ ォ ル ト 。1 ワ ー ド ア ク セ ス、お よ び C_ICACHE_LINE_LEN
の ワー ド バース ト でバース ト ア ク セ ス (AXI4 お よ び ACE で使用)
128 : C_ICACHE_DATA_WIDTH が 1 に、C_ICACHE_LINE_LEN が
4 に設定 さ れてい る と き に AXI4 で使用。シ ン グル ア ク セ ス のみが
発生。
256 : C_ICACHE_DATA_WIDTH が 1 に、C_ICACHE_LINE_LEN が
8 に設定 さ れてい る と き に AXI4 で使用。シ ン グル ア ク セ ス のみが
発生。
512 : C_ICACHE_DATA_WIDTH が 2 に設定 さ れてい る と き 、 ま た
は、 AXI4 で こ れが 1 で、 C_ICACHE_LINE_LEN が 16 に設定 さ れ
てい る と き に使用シ ン グル ア ク セ ス のみが発生。
M_AXI_DC
M_ACE_DC
C_M_AXI_DC_DATA_WIDTH
32 : デフ ォ ル ト 。1 ワ ー ド ア ク セ ス、お よ び C_DCACHE_LINE_LEN
の ワー ド バース ト でバース ト ア ク セ ス (AXI4 お よ び ACE で使用)
C_DCACHE_USE_WRITEBACK が 1 の と き AXI4 でのみ書き 込み
バース ト を使用。
128 : C_DCACHE_DATA_WIDTH が 1 に、 C_DCACHE_LINE_LEN
が 4 に設定 さ れてい る と き に AXI4 で使用。 シ ン グル ア ク セ ス の
みが発生。
256 : C_DCACHE_DATA_WIDTH が 1 に、 C_DCACHE_LINE_LEN
が 8 に設定 さ れてい る と き に AXI4 で使用。 シ ン グル ア ク セ ス の
みが発生。
512 : C_DCACHE_DATA_WIDTH が 2 に設定 さ れてい る と き 、ま た
は、 AXI4 で こ れが 1 で、 C_DCACHE_LINE_LEN が 16 に設定 さ れ
てい る と き に使用シ ン グル ア ク セ ス のみが発生。
M_AXI_IC
M_ACE_IC
NUM_READ_OUTSTANDING
1 : 128、 256、 512 ビ ッ ト のマ ス タ ーのデフ ォ ル ト 。 読み出 し を 1
つ処理。
2 : 32 ビ ッ ト マ ス タ ーのデフ ォ ル ト 。 同時に読み出 し を 2 つ処理
可能。
8 : C_ICACHE_STREAMS が 1 の と き 32 ビ ッ ト マ ス タ ーで使用。
同時に読み出 し を 8 つ処理可能。
値は 1、 2 ま たは 8 に設定可能。
MicroBlaze プ ロ セ ッ サ リ フ ァ レ ン ス ガ イ ド
UG984 (v2015.1) 2015 年 4 月 15 日
UG984 (v2015.3)
(v2015.2) 2015 年 96 月 30
24 日
japan.xilinx.com
113
第 3 章 : MicroBlaze 信号イ ン タ ー フ ェ イ スの説明
表 3‐3 : AXI メ モ リ マ ッ プ ド イ ン タ ー フ ェ イ ス パラ メ ー タ ー (続き)
イ ン ターフ ェ
イス
パラ メ ー タ ー
説明
M_AXI_DC
M_ACE_DC
NUM_READ_OUTSTANDING
1 : 128、 256、 512 ビ ッ ト のマ ス タ ーのデフ ォ ル ト 。 読み出 し 1 つ
処理。
2 : 32 ビ ッ ト マ ス タ ーのデフ ォ ル ト 。 同時に読み出 し 2 つ処理可
能。
値は 1 ま たは 2 に設定可能。
M_AXI_DC
M_ACE_DC
NUM_WRITE_OUTSTANDING
32 : デフ ォ ル ト 。 32 個の同時書き 込み。
値は 1、 2、 4、 8、 16、 ま たは 32 に設定可能。
ア ク セ ス権限、 メ モ リ タ イ プ、 サービ ス品質 (QoS)、 共有 ド メ イ ンの値は、 表 3-4 で定義 さ れてい ます。
表 3‐4 : AXI イ ン タ ー フ ェ イ ス信号定義
イ ン ターフ ェ
イス
信号
説明
M_AXI_IP
C_M_AXI_IP_ARPROT
ア ク セ ス権限 :
• 権限な し 、 セキ ュ ア命令ア ク セ ス (100)
M_AXI_DP
C_M_AXI_DP_ARCACHE
C_M_AXI_DP_AWCACHE
メ モ リ タ イ プ、 AXI4 プ ロ ト コ ル :
• 標準 ノ ン キ ャ ッ シ ャ ブル、 バ ッ フ ァ ラ ブル (0011)
C_M_AXI_DP_ARPROT
C_M_AXI_DP_AWPROT
ア ク セ ス権限、 AXI4 お よ び AXI4-Lite プ ロ ト コ ル :
• 権限な し 、 セキ ュ ア デー タ ア ク セ ス (000)
C_M_AXI_DP_ARQOS
C_M_AXI_DP_AWQOS
サービ ス品質 (QoS)、 AXI4 プ ロ ト コ ル :
• 優先度 8 (1000)
M_AXI_IC
C_M_AXI_IC_ARCACHE
メ モ リ タ イプ :
• ラ イ ト バ ッ ク の読み出 し お よ び書き 込み割 り 当て (1111)
M_ACE_IC
C_M_AXI_IC_ARCACHE
メ モ リ タ イ プ、 標準ア ク セ ス :
• ラ イ ト バ ッ ク の読み出 し お よ び書き 込み割 り 当て (1111)
メ モ リ タ イ プ、 DVM ア ク セ ス :
• 標準 ノ ン キ ャ ッ シ ャ ブル、 ノ ンバ ッ フ ァ ラ ブル (0010)
C_M_AXI_IC_ARDOMAIN
共有 ド メ イ ン :
• 内部共有可能 (01)
C_M_AXI_IC_ARPROT
ア ク セ ス権限 :
• 権限な し 、 セキ ュ ア命令ア ク セ ス (100)
C_M_AXI_IC_ARQOS
サービ ス品質 (QoS) :
• 優先度 7 (0111)
M_AXI_DC
C_M_AXI_DC_ARCACHE
メ モ リ タ イ プ、 標準ア ク セ ス :
• ラ イ ト バ ッ ク の読み出 し お よ び書き 込み割 り 当て (1111)
メ モ リ タ イ プ、 排他的ア ク セ ス :
• 標準 ノ ン キ ャ ッ シ ャ ブル、 ノ ンバ ッ フ ァ ラ ブル (0010)
M_ACE_DC
C_M_AXI_DC_ARCACHE
メ モ リ タ イ プ、 標準お よ び排他的ア ク セ ス :
• ラ イ ト バ ッ ク の読み出 し お よ び書き 込み割 り 当て (1111)
メ モ リ タ イ プ、 DVM ア ク セ ス :
• 標準 ノ ン キ ャ ッ シ ャ ブル、 ノ ンバ ッ フ ァ ラ ブル (0010)
C_M_AXI_DC_ARDOMAIN
C_M_AXI_DC_AWDOMAIN
共有 ド メ イ ン :
• 内部共有可能 (01)
M_AXI_IC
M_ACE_IC
MicroBlaze プ ロ セ ッ サ リ フ ァ レ ン ス ガ イ ド
UG984 (v2015.1) 2015 年 4 月 15 日
UG984 (v2015.3)
(v2015.2) 2015 年 96 月 30
24 日
japan.xilinx.com
114
第 3 章 : MicroBlaze 信号イ ン タ ー フ ェ イ スの説明
表 3‐4 : AXI イ ン タ ー フ ェ イ ス信号定義
イ ン ターフ ェ
イス
M_AXI_DC
M_ACE_DC
信号
説明
C_M_AXI_DC_AWCACHE
メ モ リ タ イ プ、 標準ア ク セ ス :
• ラ イ ト バ ッ ク の読み出 し お よ び書き 込み割 り 当て (1111)
メ モ リ タ イ プ、 排他的ア ク セ ス :
• 標準 ノ ン キ ャ ッ シ ャ ブル、 ノ ンバ ッ フ ァ ラ ブル (0010)
C_M_AXI_DC_ARPROT
C_M_AXI_DC_AWPROT
ア ク セ ス権限 :
• 権限な し 、 セキ ュ ア デー タ ア ク セ ス (000)
C_M_AXI_DC_ARQOS
サービ ス品質 (QoS)、 読み出 し ア ク セ ス :
• 優先度 12 (1100)
C_M_AXI_DC_AWQOS
サービ ス品質 (QoS)、 書 き 込みア ク セ ス :
• 優先度 8 (1000)
詳細は、 『AMBA AXI and ACE Protocol Specification』 (ARM IHI 0022E) を参照 し て く だ さ い。
ス ト リ ーム イ ン タ ー フ ェ イ ス
MicroBlaze の AXI4-Stream イ ン タ ーフ ェ イ ス (M0_AXIS..M15_AXIS、 S0_AXIS..S15_AXIS) は 32 ビ ッ ト のマ ス タ ーお
よ びス レーブ と し て イ ンプ リ メ ン ト さ れます。詳細は、『AMBA 4 AXI4-Stream Protocol Specification, Version 1.0』 (ARM
IHI 0051A) を参照 し て く だ さ い。
書き込み
ス ト リ ーム イ ン タ ーフ ェ イ スへの書き 込みは、 put ま たは putd 命令の 1 つを使用 し て、 MicroBlaze に よ り 実行 さ れま
す。 書 き 込み操作に よ り 、 出力 AXI4 イ ン タ ーフ ェ イ スへレ ジ ス タ の内容が転送 さ れます。 ブ ロ ッ キ ン グ モー ド の書
き 込み (put お よ び cput 命令) の場合は、 イ ン タ ーフ ェ イ ス がビ ジーでなければ、 転送は 1 ク ロ ッ ク サ イ ク ルで完了 し
ます。 イ ン タ ーフ ェ イ ス がビ ジーな ら 、 イ ン タ ーフ ェ イ ス が利用可能にな る ま で、 プ ロ セ ッ サが ス ト ール し ます。 ノ
ンブ ロ ッ キ ン グ命令 (接頭辞 n) は、 イ ン タ ーフ ェ イ ス がビ ジー状態で も 、 常に 1 ク ロ ッ ク サ イ ク ルで完了 し ます。 イ
ン タ ーフ ェ イ ス がビ ジーな場合は、 書 き 込みは抑止 さ れ、 MSR でキ ャ リ ー ビ ッ ト がセ ッ ト さ れます。
制御命令 (接頭辞 c) は AXI4-Stream の TLAST 出力を 1 にセ ッ ト し ます。 こ れはパケ ッ ト の境界を示すのに使用 さ れ
ます。
読み出 し
ス ト リ ーム イ ン タ ーフ ェ イ ス か ら の読み出 し は、 get ま たは getd 命令の 1 つを使用 し て、 MicroBlaze に よ り 実行 さ れ
ます。 読み出 し 操作は、 入力 AXI4 イ ン タ ーフ ェ イ ス の内容を汎用レ ジ ス タ に転送 し ます。 ブ ロ ッ キ ン グ モー ド の読
み出 し の場合、 デー タ が使用可能であれば、 転送通常 2 ク ロ ッ ク サ イ ク ルで完了 し ます。 デー タ が使用で き ない場合
は、 使用可能にな る ま で、 こ の命令でプ ロ セ ッ サが ス ト ール し ます。 ノ ン ブ ロ ッ キ ン グ モー ド (接頭辞 n の命令) で
は、 デー タ が使用可能であ る か ど う かにかかわ ら ず、 転送は 1 ま たは 2 ク ロ ッ ク サ イ ク ルで完了 し ます。 デー タ が使
用可能でない場合、 デー タ は転送 さ れず、 キ ャ リ ー ビ ッ ト が MSR でセ ッ ト さ れます。
デー タ の get 命令 (接頭辞 c な し ) は、 AXI4-Stream の TLAST 入力が 0 に ク リ ア さ れ る も の と し ます。 そ う でない場合
は、 こ の命令は MSR[FSL] を 1 にセ ッ ト し ます。 制御の get 命令 (接頭辞 c あ り ) は、 AXI4-Stream の TLAST 入力が 1
にセ ッ ト さ れてい る も の と し ます。 そ う でない場合は、 こ の命令は MSR[FSL] を 1 にセ ッ ト し ます。 こ れはパケ ッ ト
の境界をチ ェ ッ ク す る のに使用 さ れます。
MicroBlaze プ ロ セ ッ サ リ フ ァ レ ン ス ガ イ ド
UG984 (v2015.1) 2015 年 4 月 15 日
UG984 (v2015.3)
(v2015.2) 2015 年 96 月 30
24 日
japan.xilinx.com
115
第 3 章 : MicroBlaze 信号イ ン タ ー フ ェ イ スの説明
ローカル メ モ リ バス (LMB) イ ン ターフ ェ イスについて
LMB は同期バ ス で、 主にオンチ ッ プのブ ロ ッ ク RAM にア ク セ スす る ために使用 さ れます。 こ のバ ス は、 最小限の数
の制御信号 と 単純なプ ロ ト コ ルを使用 し て、 1 ク ロ ッ ク サ イ ク ルで ロ ーカルのブ ロ ッ ク RAM にア ク セ スす る よ う に
し ます。 LMB 信号 と その定義は次の表に リ ス ト さ れてい ます。 LMB 信号はすべて ア ク テ ィ ブ High です。
LMB 信号イ ン タ ー フ ェ イ ス
表 3‐5 : LMB バス信号
信号
デー タ イ ン タ ー
フ ェ イス
命令イ ン タ ー フ ェ イ タ イ
ス
プ
説明
Addr[0:31]
Data_Addr[0:31]
Instr_Addr[0:31]
O
ア ド レ ス バス
Byte_Enable[0:3]
Byte_Enable[0:3]
使用 さ れない
O
バ イ ト イ ネーブル
Data_Write[0:31]
Data_Write[0:31]
使用 さ れない
O
書き 込みデー タ バ ス
D_AS
I_AS
O
ア ド レ ス ス ト ロ ーブ
Read_Strobe
Read_Strobe
IFetch
O
読み出 し 処理中
Write_Strobe
Write_Strobe
使用 さ れない
O
書き 込み処理中
Data_Read[0:31]
Instr[0:31]
I
読み出 し デー タ バ ス
Ready
DReady
IReady
I
次の転送の準備完了
Wait1
DWait
IWait
I
承認 さ れ た転送が準備完了に な る ま
で待機
CE1
DCE
ICE
I
訂正可能エ ラ ー
UE1
DUE
IUE
I
訂正不可能エ ラ ー
Clk
Clk
Clk
I
バス ク ロ ッ ク
AS
Data_Read[0:31]
1. MicroBlaze v8.00 で LMB に追加
Addr[0:31]
こ のア ド レ ス バ ス は コ アか ら の出力で、 現在の転送でア ク セ ス さ れてい る メ モ リ ア ド レ ス を示 し ます。 AS が High
の場合のみ有効です。 マルチサ イ ク ル ア ク セ ス の場合 ( ア ク セ ス が完了す る ま で に 2 ク ロ ッ ク 以上か か る も の)、
Addr[0:31] は転送の最初の ク ロ ッ ク サ イ ク ルでのみ有効です。
Byte_Enable[0:3]
こ のバ イ ト イ ネーブル信号は コ アか ら の出力で、 デー タ バ ス の ど のバ イ ト レーンに有効なデー タ が含まれてい る の
か を示 し ます。 Byte_Enable[0:3] は AS が High の場合のみ有効です。 マルチサ イ ク ル ア ク セ ス の場合 (ア ク セ ス
が完了す る ま でに 2 ク ロ ッ ク 以上かか る も の)、Byte_Enable[0:3] は転送の最初の ク ロ ッ ク サ イ ク ルでのみ有効で
す。 Byte_Enable[0:3] の有効値は次の表に リ ス ト さ れてい ます。
MicroBlaze プ ロ セ ッ サ リ フ ァ レ ン ス ガ イ ド
UG984 (v2015.1) 2015 年 4 月 15 日
UG984 (v2015.3)
(v2015.2) 2015 年 96 月 30
24 日
japan.xilinx.com
116
第 3 章 : MicroBlaze 信号イ ン タ ー フ ェ イ スの説明
:
表 3‐6 : Byte_Enable[0:3] の有効値 Byte_Enable[0:3]
使用バイ ト レーン
Data[0:7]
Data[8:15]
Data[16:23]
·
0001
·
0010
·
0100
1000
·
0011
1100
1111
Data[24:31]
·
·
·
·
·
·
·
·
Data_Write[0:31]
こ の書 き 込みデー タ バ ス は コ アか ら の出力で、 メ モ リ に書き 込まれたデー タ が含まれてい ます。AS が High の場合の
み有効です。 Byte_Enable[0:3] で指定 さ れたバ イ ト レーンにのみ有効デー タ が含まれてい ます。
AS
こ のア ド レ ス ス ト ロ ーブは コ アか ら の出力で、 転送の開始を示 し 、 ア ド レ ス バ スお よ びバ イ ト イ ネーブルを修飾 し
ます。 こ れは転送の最初の ク ロ ッ ク サ イ ク ルでのみ High で、 その後は次の転送の開始ま で Low の ま ま にな り ます。
Read_Strobe
こ の読み出 し ス ト ロ ーブは コ アか ら の出力で、 読み出 し 転送が処理中であ る こ と を示 し ます。 こ の信号は、 転送の最
初の ク ロ ッ ク サ イ ク ルで High にな り 、 Ready 信号が High にな っ た ク ロ ッ ク サ イ ク ルが終わ る ま で High の ま ま にな
る 可能性があ り ます。 新 し い読み出 し 転送が次の ク ロ ッ ク サ イ ク ルです ぐ に開始 し た場合、 Read_Strobe は High
の ま ま にな り ます。
Write_Strobe
こ の書 き 込みス ト ロ ーブは コ アか ら の出力で、 書 き 込み転送が処理中であ る こ と を示 し ます。 こ の信号は、 転送の最
初の ク ロ ッ ク サ イ ク ルで High にな り 、 Ready 信号が High にな っ た ク ロ ッ ク サ イ ク ルが終わ る ま で High の ま ま にな
る 可能性があ り ます。 新 し い書 き 込み転送が次の ク ロ ッ ク サ イ ク ルですぐ に開始 し た場合、 Write_Strobe は High
の ま ま にな り ます。
Data_Read[0:31]
こ の読み出 し デー タ バ ス は コ アへの入力で、 メ モ リ か ら 読み出 さ れたデー タ を含んでい ます。 Data_Read は、 Ready
が High の と き の ク ロ ッ ク の立ち上が り エ ッ ジで有効にな り ます。
Ready
こ の Ready 信号は コ アへの入力で、 現在の転送が完了 し た こ と と 、 次の転送が次の ク ロ ッ ク サ イ ク ルで開始可能で
あ る こ と を 示 し ま す。 こ れは ク ロ ッ ク の立 ち 上が り エ ッ ジ で サ ン プ ル さ れ ま す。 こ の信号は、 読み出 し の場合
Data_Read[0:31] バ ス が有効であ る こ と を示 し 、 書 き 込みの場合 Data_Write[0:31] バ ス が ロ ーカル メ モ リ に
書 き 込まれた こ と を示 し ます。
MicroBlaze プ ロ セ ッ サ リ フ ァ レ ン ス ガ イ ド
UG984 (v2015.1) 2015 年 4 月 15 日
UG984
(v2015.2) 2015 年 96 月 30
(v2015.3)
24 日
japan.xilinx.com
117
第 3 章 : MicroBlaze 信号イ ン タ ー フ ェ イ スの説明
Wait
Wait 信号は コ アへの入力で、現在の転送は受け入れ ら れたが、 ま だ完了は し ていない こ と を示 し ます。 こ れは ク ロ ッ
ク の立ち上が り エ ッ ジでサンプル さ れます。
CE
CE 信号は コ アへの入力で、 現在の転送に訂正可能なエ ラ ーがあ る こ と を示 し ます。 Ready が High の と き の ク ロ ッ ク
の立ち上が り エ ッ ジで有効にな り ます。 こ の信号は、 読み出 し の場合、 Data_Read[0:31] バ ス でエ ラ ーが訂正 さ れ
た こ と を示 し 、 バ イ ト お よ びハーフ ワー ド の書 き 込みの場合は、 ロ ーカル メ モ リ の対応デー タ ワー ド が、新 し いデー
タ を書 き 込む前に訂正 さ れた こ と を示 し ます。
UE
UE 信号は コ アへの入力で、 現在の転送に訂正不可能なエ ラ ーがあ る こ と を示 し ます。 Ready が High の と き の ク ロ ッ
ク の立ち上が り エ ッ ジで有効にな り ます。 こ の信号は、 読み出 し の場合、 Data_Read[0:31] バ ス の値が間違っ てい
る こ と を示 し 、 バ イ ト お よ びハーフ ワ ー ド の書き 込みの場合は、 新 し いデー タ を書 き 込む前の、 ロ ーカル メ モ リ の対
応デー タ ワ ー ド が間違っ てい る こ と を示 し ます。
Clk
LMB のすべての操作は MicroBlaze コ ア ク ロ ッ ク に同期 し てい ます。
LMB ト ラ ンザ ク シ ョ ン
次の図は、 LMB バ ス操作の例を説明 し てい ます。
一般的な書き込み操作
Clk
Addr
A0
Byte_Enable
BE0
Data_Write
D0
AS
Read_Strobe
Write_Strobe
Data_Read
Ready
Wait
Don’t Care
CE
UE
図 3‐2 : LMB の一般的な書き込み操作、 0 待機ス テー ト
MicroBlaze プ ロ セ ッ サ リ フ ァ レ ン ス ガ イ ド
UG984 (v2015.1) 2015 年 4 月 15 日
UG984 (v2015.3)
(v2015.2) 2015 年 96 月 30
24 日
japan.xilinx.com
118
第 3 章 : MicroBlaze 信号イ ン タ ー フ ェ イ スの説明
Clk
Addr
A0
Byte_Enable
BE0
Data_Write
D0
AS
Read_Strobe
Write_Strobe
Data_Read
Ready
Wait
Don’t Care
CE
UE
図 3‐3 : LMB の一般的な書き込み操作、 N 待機ス テー ト
一般的な読み出 し 操作
Clk
Addr
A0
Byte_Enable
Data_Write
AS
Read_Strobe
Write_Strobe
Data_Read
D0
Ready
Wait
Don’t Care
CE
UE
図 3‐4 : LMB の一般的な読み出 し 操作、 0 待機ス テー ト
MicroBlaze プ ロ セ ッ サ リ フ ァ レ ン ス ガ イ ド
UG984 (v2015.1) 2015 年 4 月 15 日
UG984 (v2015.3)
(v2015.2) 2015 年 96 月 30
24 日
japan.xilinx.com
119
第 3 章 : MicroBlaze 信号イ ン タ ー フ ェ イ スの説明
Clk
Addr
A0
Byte_Enable
Data_Write
AS
Read_Strobe
Write_Strobe
Data_Read
D0
Ready
Wait
Don’t Care
CE
UE
図 3‐5 : LMB の一般的な読み出 し 操作、 N 待機ス テー ト
MicroBlaze プ ロ セ ッ サ リ フ ァ レ ン ス ガ イ ド
UG984 (v2015.1) 2015 年 4 月 15 日
UG984 (v2015.3)
(v2015.2) 2015 年 96 月 30
24 日
japan.xilinx.com
120
第 3 章 : MicroBlaze 信号イ ン タ ー フ ェ イ スの説明
連続書き込み操作
Clk
Addr
A0
A1
A2
A3
A4
Byte_Enable
BE0
BE1
BE2
BE3
BE4
Data_Write
D0
D1
D2
D3
D4
AS
Read_Strobe
Write_Strobe
Data_Read
Ready
Wait
Don’t Care
Don’t Care
Don’t Care
CE
UE
図 3‐6 : LMB の連続書き込み操作
連続読み出 し 操作 Clk
Addr
A0
A1
A2
A3
A4
D0
D1
D2
D3
Don’t Care
Don’t Care
Byte_Enable
Data_Write
AS
Read_Strobe
Write_Strobe
Data_Read
D4
Ready
Wait
Don’t Care
CE
UE
図 3‐7 : LMB の連続読み出 し 操作
MicroBlaze プ ロ セ ッ サ リ フ ァ レ ン ス ガ イ ド
UG984 (v2015.1) 2015 年 4 月 15 日
UG984 (v2015.3)
(v2015.2) 2015 年 96 月 30
24 日
japan.xilinx.com
121
第 3 章 : MicroBlaze 信号イ ン タ ー フ ェ イ スの説明
連続混合書き込み/読み出 し 操作 Clk
Addr
A0
Byte_Enable
BE0
BE2
Data_Write
D0
D2
A1
A2
AS
Read_Strobe
Write_Strobe
Data_Read
D1
Ready
Wait
Don’t Care
CE
UE
図 3‐8 : 連続混合書き込み/読み出 し 操作、 0 待機ス テー ト
Clk
Addr
A0
A1
A2
Byte_Enable
BE0
BE2
Data_Write
D0
D2
AS
Read_Strobe
Write_Strobe
Data_Read
D1
Ready
Wait
Don’t Care
Don’t Care
Don’t Care
CE
UE
図 3‐9 : 連続混合書き込み/読み出 し 操作、 N 待機ス テー ト
MicroBlaze プ ロ セ ッ サ リ フ ァ レ ン ス ガ イ ド
UG984 (v2015.1) 2015 年 4 月 15 日
UG984 (v2015.3)
(v2015.2) 2015 年 96 月 30
24 日
japan.xilinx.com
122
第 3 章 : MicroBlaze 信号イ ン タ ー フ ェ イ スの説明
読み出 し および書き込みデー タ ス テ ア リ ング
MicroBlaze のデー タ 側バス イ ン タ ーフ ェ イ ス は、次の転送のサポー ト に必要な読み出 し ス テ ア リ ン グお よ び書 き 込み
ス テア リ ン グ を実行 し ます。
•
ワー ド デバ イ スへのバ イ ト 、 ハーフ ワ ー ド 、 お よ びワ ー ド 転送
•
ハーフ ワー ド デバ イ スへのバ イ ト お よ びハーフ ワ ー ド 転送
•
バ イ ト デバ イ スへのバ イ ト 転送
MicroBlaze は、 ア ド レ ス指定 さ れてい る デバ イ ス よ り も サ イ ズが大 き な転送をサポー ト し てい ません。 こ う し た タ イ
プの転送には、 MicroBlaze のバ ス イ ン タ ーフ ェ イ ス ではサポー ト さ れていないダ イ ナ ミ ッ ク バ ス サ イ ズ調整や変換
サ イ ク ルが必要にな り ます。 読み出 し サ イ ク ルのデー タ ス テ ア リ ン グは、 表 3-7 お よ び表 3-8 に、 書 き 込みサ イ ク ル
のデー タ ス テ ア リ ン グは、 表 3-9 お よ び表 3-10 に ま と め ら れてい ます。
表 3‐7 : ビ ッ グ エ ンデ ィ ア ン読み出 し デー タ ス テ ア リ ング(レ ジス タ rD へロー ド )
レ ジス タ rD デー タ
Address [30:31]
Byte_Enable
[0:3]
転送サイ ズ
11
0001
バイ ト
バイ ト 3
10
0010
バイ ト
バイ ト 2
01
0100
バイ ト
バイ ト 1
00
1000
バイ ト
バイ ト 0
10
0011
ハーフ ワー ド
バイ ト 2
バイ ト 3
00
1100
ハーフ ワー ド
バイ ト 0
バイ ト 1
00
1111
ワー ド
バイ ト 2
バイ ト 3
rD[0:7]
バイ ト 0
rD[8:15]
バイ ト 1
rD[16:23]
rD[24:31]
表 3‐8 : リ ト ル エ ンデ ィ ア ン読み出 し デー タ ス テ ア リ ング(レ ジス タ rD へロー ド )
レ ジス タ rD デー タ
Address [30:31]
Byte_Enable
[0:3]
転送サイ ズ
11
1000
バイ ト
バイ ト 0
10
0100
バイ ト
バイ ト 1
01
0010
バイ ト
バイ ト 2
00
0001
バイ ト
バイ ト 3
10
1100
ハーフ ワー ド
バイ ト 0
バイ ト 1
00
0011
ハーフ ワー ド
バイ ト 2
バイ ト 3
00
1111
ワー ド
バイ ト 2
バイ ト 3
rD[0:7]
バイ ト 0
rD[8:15]
バイ ト 1
rD[16:23]
rD[24:31]
表 3‐9 : ビ ッ グ エ ンデ ィ ア ン書き込みデー タ ス テ ア リ ング(レ ジス タ rD から ス ト ア)
Address
[30:31]
Byte_Enable
[0:3]
転送サイ ズ
11
0001
バイ ト
10
0010
バイ ト
01
0100
バイ ト
MicroBlaze プ ロ セ ッ サ リ フ ァ レ ン ス ガ イ ド
UG984 (v2015.1) 2015 年 4 月 15 日
UG984 (v2015.3)
(v2015.2) 2015 年 96 月 30
24 日
japan.xilinx.com
書き込みデー タ バス バイ ト
バイ ト 0
バイ ト 1
バイ ト 2
バイ ト 3
rD[24:31]
rD[24:31]
rD[24:31]
123
第 3 章 : MicroBlaze 信号イ ン タ ー フ ェ イ スの説明
表 3‐9 : ビ ッ グ エ ンデ ィ ア ン書き込みデー タ ス テ ア リ ング(レ ジス タ rD から ス ト ア)
書き込みデー タ バス バイ ト
Address
[30:31]
Byte_Enable
[0:3]
転送サイ ズ
00
1000
バイ ト
10
0011
ハーフ ワ ー ド
00
1100
ハーフ ワ ー ド
rD[16:23]
rD[24:31]
00
1111
ワー ド
rD[0:7]
rD[8:15]
バイ ト 0
バイ ト 1
バイ ト 2
バイ ト 3
rD[16:23]
rD[24:31]
rD[16:23]
rD[24:31]
rD[24:31]
表 3‐10 : リ ト ル エ ンデ ィ ア ン書き込みデー タ ス テ ア リ ング(レ ジス タ rD から ス ト ア)
Address
[30:31]
Byte_Enable
[0:3]
転送サイ ズ
11
1000
バイ ト
10
0100
バイ ト
01
0010
バイ ト
00
0001
バイ ト
10
1100
ハーフ ワー ド
00
0011
ハーフ ワー ド
00
1111
ワー ド
書き込みデー タ バス バイ ト
バイ ト 3
バイ ト 2
バイ ト 1
バイ ト 0
rD[24:31]
rD[24:31]
rD[24:31]
rD[24:31]
rD[16:23]
rD[0:7]
rD[24:31]
rD[8:15]
rD[16:23]
rD[24:31]
rD[16:23]
rD[24:31]
注記 : ほかのマ ス タ ーには、 MicroBlaze で認め ら れてい る も の よ り も 、 バ イ ト レーンに関 し て厳 し い要件が課せ ら れ
てい る も のがあ る 場合があ り ます。 ス レーブ デバ イ ス は通常、 バ イ ト デバ イ ス な ら 最上位バ イ ト レーンに、 ハーフ
ワ ー ド デバ イ ス な ら 最上位ハーフ ワ ー ド レーンに接続 さ れ る 「左揃え」 にな っ てい ます。 MicroBlaze の ス テ ア リ ン
グ ロ ジ ッ ク は こ の接続方法を完全サポー ト し てい ます。
ロ ッ ク ス テ ッ プ イ ン タ ー フ ェ イ スについて
MicroBlaze の ロ ッ ク ス テ ッ プ イ ン タ ーフ ェ イ ス は、1 つのマ ス タ ーお よ び 1 つ以上の ス レーブ MicroBlaze イ ン ス タ ン
ス を接続す る よ う 設計 さ れてい ます。 MicroBlaze の ロ ッ ク ス テ ッ プ信号は、 表 3-11 に リ ス ト さ れてい ます。
表 3‐11 : MicroBlaze ロ ッ ク ス テ ッ プ信号
信号名
説明
VHDL タ イ プ
方向
Lockstep_Master_Out
マ ス タ ーか ら ス レ ーブ MicroBlaze への信号で出
力。 ス レーブでは接続 さ れない。
std_logic
出力
Lockstep_Slave_In
マ ス タ ーか ら ス レ ーブ MicroBlaze への信号で入
力。 マ ス タ ーでは接続 さ れない。
std_logic
入力
Lockstep_Out
マ ス タ ー と ス レーブ両方か ら のすべての比較信号
で出力。
std_logic
出力
MicroBlaze プ ロ セ ッ サ リ フ ァ レ ン ス ガ イ ド
UG984 (v2015.1) 2015 年 4 月 15 日
UG984 (v2015.3)
(v2015.2) 2015 年 96 月 30
24 日
japan.xilinx.com
124
第 3 章 : MicroBlaze 信号イ ン タ ー フ ェ イ スの説明
Lockstep_Out で提供 さ れ る 比較信号は表 3-12 に リ ス ト さ れてい ます。
表 3‐12 : MicroBlaze ロ ッ ク ス テ ッ プ比較信号
信号名
バス イ ンデ ッ ク ス範囲
VHDL タ イ プ
MB_Halted
0
std_logic
MB_Error
1
std_logic
IFetch
2
std_logic
I_AS
3
std_logic
Instr_Addr
4 ~ 35
std_logic_vector
Data_Addr
36 ~ 67
std_logic_vector
Data_Write
68 ~ 99
std_logic_vector
D_AS
100
std_logic
Read_Strobe
101
std_logic
Write_Strobe
102
std_logic
Byte_Enable
103 ~ 106
std_logic_vector
Reserved
107 ~ 736
M_AXI_IP_AWID
737
std_logic
M_AXI_IP_AWADDR
738 ~ 769
std_logic_vector
M_AXI_IP_AWLEN
770 ~ 777
std_logic_vector
M_AXI_IP_AWSIZE
778 ~ 780
std_logic_vector
M_AXI_IP_AWBURST
781 ~ 782
std_logic_vector
M_AXI_IP_AWLOCK
783
std_logic
M_AXI_IP_AWCACHE
784 ~ 787
std_logic_vector
M_AXI_IP_AWPROT
788 ~ 790
std_logic_vector
M_AXI_IP_AWQOS
791 ~ 794
std_logic_vector
M_AXI_IP_AWVALID
795
std_logic
M_AXI_IP_WDATA
796 ~ 827
std_logic_vector
M_AXI_IP_WSTRB
828 ~ 831
std_logic_vector
M_AXI_IP_WLAST
832
std_logic
M_AXI_IP_WVALID
833
std_logic
M_AXI_IP_BREADY
834
std_logic
M_AXI_IP_ARID
835
std_logic
M_AXI_IP_ARADDR
836 ~ 867
std_logic_vector
M_AXI_IP_ARLEN
868 ~ 875
std_logic_vector
M_AXI_IP_ARSIZE
876 ~ 878
std_logic_vector
M_AXI_IP_ARBURST
879 ~ 880
std_logic_vector
M_AXI_IP_ARLOCK
881
std_logic
M_AXI_IP_ARCACHE
882 ~ 885
std_logic_vector
M_AXI_IP_ARPROT
886 ~ 888
std_logic_vector
M_AXI_IP_ARQOS
889 ~ 892
std_logic_vector
M_AXI_IP_ARVALID
893
std_logic
M_AXI_IP_RREADY
894
std_logic
M_AXI_DP_AWID
895
std_logic
M_AXI_DP_AWADDR
896 ~ 927
std_logic_vector
MicroBlaze プ ロ セ ッ サ リ フ ァ レ ン ス ガ イ ド
UG984 (v2015.1) 2015 年 4 月 15 日
UG984 (v2015.3)
(v2015.2) 2015 年 96 月 30
24 日
japan.xilinx.com
125
第 3 章 : MicroBlaze 信号イ ン タ ー フ ェ イ スの説明
表 3‐12 : MicroBlaze ロ ッ ク ス テ ッ プ比較信号 (続き)
信号名
バス イ ンデ ッ ク ス範囲
VHDL タ イ プ
M_AXI_DP_AWLEN
928 ~ 935
std_logic_vector
M_AXI_DP_AWSIZE
936 ~ 938
std_logic_vector
M_AXI_DP_AWBURST
939 ~ 940
std_logic_vector
M_AXI_DP_AWLOCK
941
std_logic
M_AXI_DP_AWCACHE
942 ~ 945
std_logic_vector
M_AXI_DP_AWPROT
946 ~ 948
std_logic_vector
M_AXI_DP_AWQOS
949 ~ 952
std_logic_vector
M_AXI_DP_AWVALID
953
std_logic
M_AXI_DP_WDATA
954 ~ 985
std_logic_vector
M_AXI_DP_WSTRB
986 ~ 989
std_logic_vector
M_AXI_DP_WLAST
990
std_logic
M_AXI_DP_WVALID
991
std_logic
M_AXI_DP_BREADY
992
std_logic
M_AXI_DP_ARID
993
std_logic
M_AXI_DP_ARADDR
994 ~ 1025
std_logic_vector
M_AXI_DP_ARLEN
1026 ~ 1033
std_logic_vector
M_AXI_DP_ARSIZE
1034 ~ 1036
std_logic_vector
M_AXI_DP_ARBURST
1037 ~ 1038
std_logic_vector
M_AXI_DP_ARLOCK
1039
std_logic
M_AXI_DP_ARCACHE
1040 ~ 1043
std_logic_vector
M_AXI_DP_ARPROT
1044 ~ 1046
std_logic_vector
M_AXI_DP_ARQOS
1047 ~ 1050
std_logic_vector
M_AXI_DP_ARVALID
1051
std_logic
M_AXI_DP_RREADY
1052
std_logic
Reserved
1053 ~ 1644
Mn_AXIS_TLAST
1645 + n * 35
std_logic
Mn_AXIS_TDATA
1646 + n * 35 ~ 
1677 + n * 35
std_logic_vector
Mn_AXIS_TVALID
1678 + n * 35
std_logic
Sn_AXIS_TREADY
1679 + n * 35
std_logic
M_AXI_IC_AWID
2205
std_logic
M_AXI_IC_AWADDR
2206 ~ 2237
std_logic_vector
M_AXI_IC_AWLEN
2238 ~ 2245
std_logic_vector
M_AXI_IC_AWSIZE
2246 ~ 2248
std_logic_vector
M_AXI_IC_AWBURST
2249 ~ 2250
std_logic_vector
M_AXI_IC_AWLOCK
2251
std_logic
M_AXI_IC_AWCACHE
2252 ~ 2255
std_logic_vector
M_AXI_IC_AWPROT
2256 ~ 2258
std_logic_vector
M_AXI_IC_AWQOS
2259 ~ 2262
std_logic_vector
M_AXI_IC_AWVALID
2263
std_logic
M_AXI_IC_AWUSER
2264 ~ 2268
std_logic_vector
MicroBlaze プ ロ セ ッ サ リ フ ァ レ ン ス ガ イ ド
UG984 (v2015.1) 2015 年 4 月 15 日
UG984 (v2015.3)
(v2015.2) 2015 年 96 月 30
24 日
japan.xilinx.com
126
第 3 章 : MicroBlaze 信号イ ン タ ー フ ェ イ スの説明
表 3‐12 : MicroBlaze ロ ッ ク ス テ ッ プ比較信号 (続き)
信号名
バス イ ンデ ッ ク ス範囲
VHDL タ イ プ
M_AXI_IC_AWDOMAIN1
2269 ~ 2270
std_logic_vector
M_AXI_IC_AWSNOOP1
2271 ~ 2273
std_logic_vector
M_AXI_IC_AWBAR1
2274 ~ 2275
std_logic_vector
M_AXI_IC_WDATA
2276 ~ 2787
std_logic_vector
M_AXI_IC_WSTRB
2788 ~ 2851
std_logic_vector
M_AXI_IC_WLAST
2852
std_logic
M_AXI_IC_WVALID
2853
std_logic
M_AXI_IC_WUSER
2854
std_logic
M_AXI_IC_BREADY
2855
std_logic
M_AXI_IC_WACK
2856
std_logic
M_AXI_IC_ARID
2857
std_logic_vector
M_AXI_IC_ARADDR
2858 ~ 2889
std_logic_vector
M_AXI_IC_ARLEN
2890 ~ 2897
std_logic_vector
M_AXI_IC_ARSIZE
2898 ~ 2900
std_logic_vector
M_AXI_IC_ARBURST
2901 ~ 2902
std_logic_vector
M_AXI_IC_ARLOCK
2903
std_logic
M_AXI_IC_ARCACHE
2904 ~ 2907
std_logic_vector
M_AXI_IC_ARPROT
2908 ~ 2910
std_logic_vector
M_AXI_IC_ARQOS
2911 ~ 2914
std_logic_vector
M_AXI_IC_ARVALID
2915
std_logic
M_AXI_IC_ARUSER
2916 ~ 2920
std_logic_vector
M_AXI_IC_ARDOMAIN1
2921 ~ 2922
std_logic_vector
M_AXI_IC_ARSNOOP1
2923 ~ 2926
std_logic_vector
M_AXI_IC_ARBAR1
2927 ~ 2928
std_logic_vector
M_AXI_IC_RREADY
2929
std_logic
M_AXI_IC_RACK1
2930
std_logic
M_AXI_IC_ACREADY1
2931
std_logic
M_AXI_IC_CRVALID1
2932
std_logic
M_AXI_IC_CRRESP1
2933 ~ 2937
std_logic_vector
M_AXI_IC_CDVALID1
2938
std_logic
M_AXI_IC_CDLAST1
2939
std_logic
M_AXI_DC_AWID
2940
std_logic
M_AXI_DC_AWADDR
2941 ~ 2972
std_logic_vector
M_AXI_DC_AWLEN
2973 ~ 2980
std_logic_vector
M_AXI_DC_AWSIZE
2981 ~ 2983
std_logic_vector
M_AXI_DC_AWBURST
2984 ~ 2985
std_logic_vector
M_AXI_DC_AWLOCK
2986
std_logic
M_AXI_DC_AWCACHE
2987 ~ 2990
std_logic_vector
M_AXI_DC_AWPROT
2991 ~ 2993
std_logic_vector
M_AXI_DC_AWQOS
2994 ~ 2997
std_logic_vector
M_AXI_DC_AWVALID
2998
std_logic
MicroBlaze プ ロ セ ッ サ リ フ ァ レ ン ス ガ イ ド
UG984 (v2015.1) 2015 年 4 月 15 日
UG984 (v2015.3)
(v2015.2) 2015 年 96 月 30
24 日
japan.xilinx.com
127
第 3 章 : MicroBlaze 信号イ ン タ ー フ ェ イ スの説明
表 3‐12 : MicroBlaze ロ ッ ク ス テ ッ プ比較信号 (続き)
信号名
バス イ ンデ ッ ク ス範囲
VHDL タ イ プ
M_AXI_DC_AWUSER
2999 ~ 3003
std_logic_vector
M_AXI_DC_AWDOMAIN1
3004 ~ 3005
std_logic_vector
M_AXI_DC_AWSNOOP1
3006 ~ 3008
std_logic_vector
M_AXI_DC_AWBAR1
3009 ~ 3010
std_logic_vector
M_AXI_DC_WDATA
3011 ~ 3522
std_logic_vector
M_AXI_DC_WSTRB1
3523 ~ 3586
std_logic_vector
M_AXI_DC_WLAST
3587
std_logic
M_AXI_DC_WVALID
3588
std_logic
M_AXI_DC_WUSER
3589
std_logic
M_AXI_DC_BREADY
3590
std_logic
M_AXI_DC_WACK1
3591
std_logic
M_AXI_DC_ARID
3592
std_logic
M_AXI_DC_ARADDR
3593 ~ 3624
std_logic_vector
M_AXI_DC_ARLEN
3625 ~ 3632
std_logic_vector
M_AXI_DC_ARSIZE
3633 ~ 3635
std_logic_vector
M_AXI_DC_ARBURST
3636 ~ 3637
std_logic_vector
M_AXI_DC_ARLOCK
3638
std_logic
M_AXI_DC_ARCACHE
3639 ~ 3642
std_logic_vector
M_AXI_DC_ARPROT
3643 ~ 3645
std_logic_vector
M_AXI_DC_ARQOS
3646 ~ 3649
std_logic_vector
M_AXI_DC_ARVALID
3650
std_logic
M_AXI_DC_ARUSER
3651 ~ 3655
std_logic_vector
M_AXI_DC_ARDOMAIN1
3656 ~ 3657
std_logic_vector
M_AXI_DC_ARSNOOP1
3658 ~ 3661
std_logic_vector
M_AXI_DC_ARBAR1
3662 ~ 3663
std_logic_vector
M_AXI_DC_RREADY
3664
std_logic
M_AXI_DC_RACK1
3665
std_logic
M_AXI_DC_ACREADY1
3666
std_logic
M_AXI_DC_CRVALID1
3667
std_logic
M_AXI_DC_CRRESP1
3668 ~ 3672
std_logic_vector
M_AXI_DC_CDVALID1
3673
std_logic
M_AXI_DC_CDLAST1
3674
std_logic
Trace_Instruction
3675 ~ 3706
std_logic_vector
Trace_Valid_Instr
3707
std_logic
Trace_PC
3708 ~ 3739
std_logic_vector
Trace_Reg_Write
3740
std_logic
Trace_Reg_Addr
3741 ~ 3745
std_logic_vector
Trace_MSR_Reg
3746 ~ 3760
std_logic_vector
Trace_PID_Reg
3761 ~ 3768
std_logic_vector
Trace_New_Reg_Value
3769 ~ 3800
std_logic_vector
Trace_Exception_Taken
3801
std_logic
MicroBlaze プ ロ セ ッ サ リ フ ァ レ ン ス ガ イ ド
UG984 (v2015.1) 2015 年 4 月 15 日
UG984 (v2015.3)
(v2015.2) 2015 年 96 月 30
24 日
japan.xilinx.com
128
第 3 章 : MicroBlaze 信号イ ン タ ー フ ェ イ スの説明
表 3‐12 : MicroBlaze ロ ッ ク ス テ ッ プ比較信号 (続き)
信号名
バス イ ンデ ッ ク ス範囲
VHDL タ イ プ
Trace_Exception_Kind
3802 ~ 3806
std_logic_vector
Trace_Jump_Taken
3807
std_logic
Trace_Delay_Slot
3808
std_logic
Trace_Data_Address
3809 ~ 3840
std_logic_vector
Trace_Data_Write_Value
3841 ~ 3872
std_logic_vector
Trace_Data_Byte_Enable
3873 ~ 3876
std_logic_vector
Trace_Data_Access
3877
std_logic
Trace_Data_Read
3878
std_logic
Trace_Data_Write
3879
std_logic
Trace_DCache_Req
3880
std_logic
Trace_DCache_Hit
3881
std_logic
Trace_DCache_Rdy
3882
std_logic
Trace_DCache_Read
3883
std_logic
Trace_ICache_Req
3884
std_logic
Trace_ICache_Hit
3885
std_logic
Trace_ICache_Rdy
3886
std_logic
Trace_OF_PipeRun
3887
std_logic
Trace_EX_PipeRun
3888
std_logic
Trace_MEM_PipeRun
3889
std_logic
Trace_MB_Halted
3890
std_logic
Trace_Jump_Hit
3891
std_logic
将来使用す る ために予約
3892 ~ 4095
1. こ の信号は、 C_INTERCONNECT = 3 (ACE) の場合のみ使用 し ます。
デバ ッ グ イ ン タ ー フ ェ イ スについて
MicroBlaze のデバ ッ グ イ ン タ ーフ ェ イ ス は、 ザ イ リ ン ク ス の MDM (Microprocessor Debug Module) IP コ ア を使用 し て
機能す る よ う に設計 さ れてい ます。 MDM は、 FPGA の JTAG ポー ト を介 し XMD (Xilinx Microprocessor Debugger) に
よ っ て制御 さ れます。 MDM は 1 度に複数の MicroBlaze プ ロ セ ッ サを制御で き ます。 デバ ッ グ信号は DEBUG バ ス に
グループ と し て ま と め ら れます。 MicroBlaze のデバ ッ グ信号は表 3-13 に リ ス ト さ れてい ます。
表 3‐13 : MicroBlaze デバ ッ グ信号
信号名
説明
VHDL タ イ プ
方向
Dbg_Clk
MDM か ら の JTAG ク ロ ッ ク
std_logic
入力
Dbg_TDI
MDM か ら の JTAG TDI
std_logic
入力
Dbg_TDO
MDM への JTAG TDO
std_logic
出力
Dbg_Reg_En
MDM か ら のデバ ッ グ レ ジ ス タ イ ネーブル
std_logic_vector
入力
Dbg_Shift1
MDM か ら の JTAG BSCAN シ フ ト 信号
std_logic
入力
Dbg_Capture
MDM か ら の JTAG BSCAN キ ャ プチ ャ 信号
std_logic
入力
Dbg_Update
MDM か ら の JTAG BSCAN ア ッ プデー ト 信号
std_logic
入力
MicroBlaze プ ロ セ ッ サ リ フ ァ レ ン ス ガ イ ド
UG984 (v2015.1) 2015 年 4 月 15 日
UG984 (v2015.3)
(v2015.2) 2015 年 96 月 30
24 日
japan.xilinx.com
129
第 3 章 : MicroBlaze 信号イ ン タ ー フ ェ イ スの説明
表 3‐13 : MicroBlaze デバ ッ グ信号
信号名
Debug_Rst1
Dbg_Trig_In2
Dbg_Trig_Ack_In2
Dbg_Trig_Out2
Dbg_Trig_Ack_Out2
Dbg_Trace_Data3
Dbg_Trace_Valid3
Dbg_Trace_Ready3
Dbg_Trace_Clk3
説明
VHDL タ イ プ
方向
MDM か ら の リ セ ッ ト 信号、 ア ク テ ィ ブ High。 std_logic
最低 1 Clk ク ロ ッ ク サ イ ク ル間保持す る 必要
があ る 。
std_logic_vector
MDM への ク ロ ス ト リ ガー イ ベン ト 入力
入力
MDM か ら の ク ロ ス ト リ ガー イ ベン ト 入力肯 std_logic_vector
定応答
MDM か ら の ク ロ ス ト リ ガー ア ク シ ョ ン出力 std_logic_vector
入力
MDM への ク ロ ス ト リ ガー ア ク シ ョ ン出力肯 std_logic_vector
定応答
MDM への外部プ ロ グ ラ ム ト レー ス デー タ 出 std_logic_vector
力
std_logic
MDM への外部プ ロ グ ラ ム ト レース有効
出力
MDM か ら の外部プ ロ グ ラ ム ト レ ー ス 準備完 std_logic
了
MDM か ら の外部プ ロ グ ラ ム ト レー ス ク ロ ッ std_logic
ク
入力
出力
入力
出力
出力
入力
1. MicroBlaze v7.00 用にア ッ プデー ト : Dbg_Shift を追加、 Debug_Rst を DEBUG バ ス に含め る
2. MicroBlaze v9.3 用にア ッ プデー ト : Dbg_Trig 信号を DEBUG バ ス に追加
3. MicroBlaze v9.4 用にア ッ プデー ト : 外部プ ロ グ ラ ム ト レース信号を DEBUG バ ス に追加
MicroBlaze プ ロ セ ッ サ リ フ ァ レ ン ス ガ イ ド
UG984 (v2015.1) 2015 年 4 月 15 日
UG984 (v2015.3)
(v2015.2) 2015 年 96 月 30
24 日
japan.xilinx.com
130
第 3 章 : MicroBlaze 信号イ ン タ ー フ ェ イ スの説明
ト レース イ ン タ ー フ ェ イ スについて
MicroBlaze は ト レース目的で さ ま ざ ま な内部信号をエ ク ス ポー ト し ます。 こ の信号 イ ン タ ーフ ェ イ ス は標準化 さ れて
お ら ず、 新 し い リ ビ ジ ョ ンのプ ロ セ ッ サでは、 信号選択や機能性において、 下位互換性が得 ら れない可能性があ り ま
す。 こ れ ら の信号のカ ス タ ム ロ ジ ッ ク を設計せず、 ザ イ リ ン ク ス提供の解析 IP を介 し て信号を使用す る こ と を推奨
し ます。 ト レース信号は TRACE バス でグループに ま と め ら れます。 ト レース信号の現在のセ ッ ト は、MicroBlaze v7.30
でア ッ プデー ト さ れた も ので、 表 3-14 に リ ス ト さ れてい ます。
MSR ビ ッ ト のマ ッ ピ ン グは表 3-15 に ま と め ら れてい ま す。 マシ ン ス テー タ ス レ ジ ス タ (MSR) の詳細については、
「特殊用途レ ジ ス タ 」 を参照 し て く だ さ い。
ト レース例外 タ イ プは表 3-16 を参照 し て く だ さ い。 すべての未使用の ト レース例外 タ イ プは予約 さ れてい ます。
表 3‐14 : MicroBlaze ト レース信号
信号名
Trace_Valid_Instr
Trace_Instruction
Trace_PC
説明
1
方向
std_logic
出力
命令 コ ー ド
std_logic_vector (0 ~ 31)
出力
プロ グ ラ ム カ ウ ン ター
std_logic_vector (0 ~ 31)
出力
std_logic
出力
ト レース ポー ト での有効命令
1
VHDL タ イ プ
Trace_Reg_Write 1
レ ジ ス タ フ ァ イ ルへの命令書き 込み
Trace_Reg_Addr 1
デス テ ィ ネーシ ョ ン レ ジ ス タ ア ド レ ス
std_logic_vector (0 ~ 4)
出力
Trace_MSR_Reg1
マシ ン ス テー タ ス レ ジ ス タ 。レ ジ ス タ ビ ッ
ト のマ ッ ピ ン グは以下参照。
Trace_PID_Reg1
プ ロ セ ス ID レ ジ ス タ
std_logic_vector (0 ~ 7)
出力
Trace_New_Reg_Value1
デ ス テ ィ ネーシ ョ ン レ ジ ス タ ア ッ プデー
ト値
std_logic_vector (0 ~ 31)
出力
Trace_Exception_Taken1,2
例外の命令値
std_logic
出力
Trace_Exception_Kind1
例外 タ イ プ。 例外 タ イ プの説明は以下参照。
std_logic_vector (0 ~ 4)2
出力
Trace_Jump_Taken1
True 評価 さ れた分岐命令 (分岐 し た、 な ど)
std_logic
出力
Trace_Jump_Hit1,3
分岐先キ ャ ッ シ ュ ヒ ッ ト
std_logic
出力
Trace_Delay_Slot1
命令が分岐 し た分岐の遅延ス ロ ッ ト にあ る
std_logic
出力
Trace_Data_Access1
有効な D 側の メ モ リ ア ク セ ス
std_logic
出力
Trace_Data_Address1
D 側の メ モ リ ア ク セ ス のア ド レ ス
std_logic_vector (0 ~ 31)
出力
Trace_Data_Write_Value1
D 側の メ モ リ 書き 込みア ク セ ス の値
std_logic_vector (0 ~ 31)
出力
Trace_Data_Byte_Enable1
D 側の メ モ リ ア ク セ ス のバ イ ト イ ネーブル
std_logic_vector (0 ~ 3)
出力
Trace_Data_Read1
D 側の メ モ リ ア ク セ ス が読み出 し
std_logic
出力
Trace_Data_Write1
D 側の メ モ リ ア ク セ ス が書 き 込み
std_logic
出力
Trace_DCache_Req
デー タ メ モ リ ア ド レ ス がD キ ャ ッ シ ュ 範囲
内にあ る
std_logic
出力
Trace_DCache_Hit
デー タ メ モ リ ア ド レ ス が D キ ャ ッ シ ュ に
ある
std_logic
出力
Trace_DCache_Rdy
デー タ ア ド レ ス が D キ ャ ッ シ ュ 範囲内にあ
り 、 ア ク セ ス が完了 し てい る
std_logic
出力
Trace_DCache_Read,4
D キ ャ ッ シ ュ リ ク エ ス ト は読み出 し 。
std_logic
出力
MicroBlaze プ ロ セ ッ サ リ フ ァ レ ン ス ガ イ ド
UG984 (v2015.1) 2015 年 4 月 15 日
UG984 (v2015.3)
(v2015.2) 2015 年 96 月 30
24 日
japan.xilinx.com
std_logic_vector (0 ~
14)2
出力
131
第 3 章 : MicroBlaze 信号イ ン タ ー フ ェ イ スの説明
表 3‐14 : MicroBlaze ト レース信号 (続き)
信号名
Trace_ICache_Req
説明
VHDL タ イ プ
方向
命令 メ モ リ ア ド レ ス が 
I キ ャ ッ シ ュ 範囲内にあ る
std_logic
出力
Trace_ICache_Hit
命令 メ モ リ ア ド レ ス が 
I キ ャ ッ シ ュ にあ る I キ ャ ッ シ ュ
std_logic
出力
Trace_ICache_Rdy
命令 メ モ リ ア ド レ ス が 
I キ ャ ッ シ ュ 範囲内にあ り 、 ア ク セ ス が完了
し てい る
std_logic
出力
Trace_OF_PipeRun
デ コ ー ド 段のパ イ プ ラ イ ン ア ド バン ス
std_logic
出力
Trace_EX_PipeRun3
実行段のパ イ プ ラ イ ン ア ド バン ス
std_logic
出力
Trace_MEM_PipeRun3
メ モ リ 段のパ イ プ ラ イ ン ア ド バン ス
std_logic
出力
Trace_MB_Halted
デバ ッ グに よ り パ イ プ ラ イ ンが停止
std_logic
出力
1. Trace_Valid_Instr = 1 の場合のみ有効
2. Trace_Exception_Taken = 1 の場合のみ有効
3. エ リ ア最適化機能 と 一緒には使用で き ない。
4. Trace_DCache_Req = 1 の場合のみ有効
表 3‐15 : ト レース MSR のマ ッ ピ ング
Trace_MSR_Reg
マ シ ン ス テー タ ス レ ジ ス タ
ビッ ト
ビッ ト
0
17
VMS
仮想保護モー ド 保存
1
18
VM
仮想保護モー ド
2
19
UMS
ユーザー モー ド 保存
3
20
UM
ユーザー モー ド
4
21
PVR
プ ロ セ ッ サ バージ ョ ン レ ジ ス タ が存在する 。
5
22
EIP
処理中例外
6
23
EE
例外 イ ネーブル
7
24
DCE
デー タ キ ャ ッ シ ュ イ ネーブル
8
25
DZO
ゼ ロ 除算、 ま たは除算オーバーフ ロ ー
9
26
ICE
命令キ ャ ッ シ ュ イ ネーブル
10
27
FSL
AXI4-Stream エ ラ ー
11
28
BIP
処理中ブ レー ク
12
29
C
演算キ ャ リ ー
13
30
IE
割 り 込み イ ネーブル
14
31
Reserved
予約
MicroBlaze プ ロ セ ッ サ リ フ ァ レ ン ス ガ イ ド
UG984 (v2015.1) 2015 年 4 月 15 日
UG984 (v2015.3)
(v2015.2) 2015 年 96 月 30
24 日
名前
japan.xilinx.com
説明
132
第 3 章 : MicroBlaze 信号イ ン タ ー フ ェ イ スの説明
表 3‐16 : ト レース例外の タ イ プ
Trace_Exception_Kind [0:4]
説明
00000
ス ト リ ーム例外
00001
ア ラ イ ン さ れていない例外
00010
無効なオペ コ ー ド 例外
00011
命令バス例外
00100
デー タ バス例外
00101
除算例外
00110
FPU 例外
00111
特権命令例外
01010
割 り 込み
01011
外部のマス ク 不可能な ブ レー ク
01100
外部のマス ク 可能な ブ レー ク
10000
デー タ ス ト レージ例外
10001
命令ス ト レージ例外
10010
デー タ TLB ミ ス例外
10011
命令 TLB ミ ス例外
MicroBlaze プ ロ セ ッ サ リ フ ァ レ ン ス ガ イ ド
UG984 (v2015.1) 2015 年 4 月 15 日
UG984 (v2015.3)
(v2015.2) 2015 年 96 月 30
24 日
japan.xilinx.com
133
第 3 章 : MicroBlaze 信号イ ン タ ー フ ェ イ スの説明
MicroBlaze コ アの コ ン フ ィ ギ ュ レーシ ョ ン
MicroBlaze コ アは、 ユーザーが細か く 設定で き る よ う に開発 さ れてい ます。 つま り 、 具体的な コ ス ト やパフ ォーマ ン
ス の要件を満たす こ と がで き る よ う に、 プ ロ セ ッ サを設定す る こ と がで き ます。
コ ン フ ィ ギ ュ レーシ ョ ンは、 通常、 機能のオ ン/オ フやサ イ ズ を決めた り 、 プ ロ セ ッ サの機能を選択す る ためのパ ラ
メ ー タ ーを使用 し て行い ます。 た と えば、 命令キ ャ ッ シ ュ は C_USE_ICACHE パ ラ メ ー タ ーを設定す る と イ ネーブル
に な り ま す。 命 令 キ ャ ッ シ ュ の サ イ ズ、 キ ャ ッ シ ュ 可 能 な メ モ リ の 範 囲 の 設 定 は、 C_CACHE_BYTE_SIZE、
C_ICACHE_BASEADDR、 C_ICACHE_HIGHADDR を それぞれ設定 し て コ ン フ ィ ギ ュ レー ト で き ます。
MicroBlaze v9.2 で有効なパ ラ メ ー タ ーは表 3-17 に リ ス ト さ れてい ます。 こ の表に リ ス ト さ れてい る パ ラ メ ー タ ーが
すべて古いバージ ョ ンの MicroBlaze で認識 さ れ る わけではあ り ませんが、コ ン フ ィ ギ ュ レーシ ョ ンは完全に下位互換
性があ り ます。
注記 : グ レーで色分け さ れてい る 行は、 パ ラ メ ー タ ーの値が固定値であ っ て、 変更で き ない こ と を示 し てい ます。
表 3‐17 : MPD パラ メ ー タ ー パラ メ ー タ ー名
機能/説明
設定可能な値
ツール
デ フ ォル
で割 り VHDL タ イ プ
ト値
当て
C_FAMILY
タ ーゲ ッ ト フ ァ ミ リ
表 3-18 に リ ス
ト
virtex7
可
string
C_DATA_SIZE
デー タ サ イ ズ
32
32
該当
なし
integer
C_DYNAMIC_BUS_SIZING
レ ガシ
1
1
該当
なし
integer
C_SCO
ザ イ リ ン ク ス内部
0
0
該当
なし
integer
C_AREA_OPTIMIZED
低い命令スループ ッ ト で
エ リ ア を最適化す る ため
の イ ンプ リ メ ン テーシ ョ
ン を選択
0、 1
0
0
0
C_OPTIMIZATION
将来使用す る ために予約
C_INTERCONNECT
イ ン タ ー コ ネ ク ト を選択
2 = AXI4 のみ
3 = AXI4 お よ び ACE
2、 3
2
C_ENDIANNESS
エンデ ィ ア ン を選択
1 = リ ト ル エンデ ィ ア ン
1
1
C_BASE_VECTORS1
コ ン フ ィ ギ ュ レーシ ョ ン
可能なベース ベ ク タ ー
0x000000000xffffff80
0x00000
000
C_FAULT_TOLERANT
フ ォール ト ト レ ラ ン ス を
イ ンプ リ メ ン ト
0、 1
0
C_ECC_USE_CE_EXCEPTION
訂正可能な ECC エ ラ ーに
対 し 例外を生成
0、 1
0
MicroBlaze プ ロ セ ッ サ リ フ ァ レ ン ス ガ イ ド
UG984 (v2015.1) 2015 年 4 月 15 日
UG984 (v2015.3)
(v2015.2) 2015 年 96 月 30
24 日
japan.xilinx.com
integer
該当
なし
integer
integer
可
integer
std_logic_vector
可
integer
integer
134
第 3 章 : MicroBlaze 信号イ ン タ ー フ ェ イ スの説明
表 3‐17 : MPD パラ メ ー タ ー (続き) パラ メ ー タ ー名
機能/説明
設定可能な値
ツール
デ フ ォル
で割 り VHDL タ イ プ
ト値
当て
C_LOCKSTEP_SLAVE
ロ ッ ク ス テ ッ プ ス レーブ
0、 1
0
integer
C_AVOID_PRIMITIVES
FPGA プ リ ミ テ ィ ブ を使用
禁止
0 = なし
1 = SRL
2 = LUTRAM
3 = 両方
0、 1、 2、 3
0
integer
C_PVR
integer
プ ロ セ ッ サ バージ ョ ン レ
ジ ス タ モー ド の選択
0 = なし
1 = 基本
2 = フル
0、 1、 2
0
C_PVR_USER1
プ ロ セ ッ サ バージ ョ ン 
レ ジ ス タ USER1 定数
0x00-0xff
0x00
std_logic_vector
(0 ~ 7)
C_PVR_USER2
プ ロ セ ッ サ バージ ョ ン 
レ ジ ス タ USER2 定数
0x000000000xffffffff
0x00000
000
std_logic_vector
(0 ~ 31)
C_RESET_MSR
MSR レ ジ ス タ の
リ セッ ト値
0x00、 0x20、
0x80、 0xa0
0x00
C_INSTANCE
イ ン ス タ ン ス名
任意の イ ン ス
タ ン ス名
micro
blaze
C_D_AXI
デー タ 側 AXI イ ン タ ー
フェイス
0、 1
0
C_D_LMB
デー タ 側 LMB イ ン タ ー
フェイス
0、 1
1
C_I_AXI
命令側 AXI イ ン タ ーフ ェ
イス
0、 1
0
C_I_LMB
命令側 LMB イ ン タ ーフ ェ
イス
0、 1
1
C_USE_BARREL
バレル シ フ タ ーを含め る
0、 1
0
C_USE_DIV
ハー ド ウ ェ ア ド ラ イ バー
を含め る
0、 1
0
C_USE_HW_MUL
ハー ド ウ ェ ア乗算器を含
める
0 = なし
1 = Mul32
2 = Mul64
MicroBlaze プ ロ セ ッ サ リ フ ァ レ ン ス ガ イ ド
UG984 (v2015.1) 2015 年 4 月 15 日
UG984 (v2015.3)
(v2015.2) 2015 年 96 月 30
24 日
japan.xilinx.com
std_logic_vector
可
string
integer
integer
integer
integer
integer
integer
integer
0、 1、 2
1
135
第 3 章 : MicroBlaze 信号イ ン タ ー フ ェ イ スの説明
表 3‐17 : MPD パラ メ ー タ ー (続き) パラ メ ー タ ー名
C_USE_FPU
機能/説明
設定可能な値
ツール
デ フ ォル
で割 り VHDL タ イ プ
ト値
当て
integer
ハー ド ウ ェ ア浮動小数点
ユニ ッ ト を含め る
0 = なし
1 = 基本
2 = 拡張
0、 1、 2
0
C_USE_MSR_INSTR
MSRSET お よ び MSRCLR
命令を使用
0、 1
1
C_USE_PCMP_INSTR
CLZ、 PCMPBF、
PCMPEQ、 PCMPNE 命令
を使用
0、 1
1
C_USE_REORDER_INSTR
逆 ロ ー ド 、 逆ス ト ア、 ス
ワ ッ プ命令を使用
0、 1
1
C_UNALIGNED_EXCEPTIONS
ア ラ イ ン さ れていない
デー タ ア ク セ ス の例外処
理を行 う
0、 1
0
C_ILL_OPCODE_EXCEPTION
無効なオペ コ ー ド の例外
処理を行 う
0、 1
0
C_M_AXI_I_BUS_EXCEPTION
M_AXI_I バス エ ラ ーの例
外処理を行 う
0、 1
0
C_M_AXI_D_BUS_EXCEPTION
M_AXI_D バ ス エ ラ ーの例
外処理を行 う
0、 1
0
C_DIV_ZERO_EXCEPTION
ゼ ロ 除算ま たは除算オー
バーフ ロ ーの例外処理を
行う
0、 1
0
ハー ド ウ ェ ア浮動小数点
ユニ ッ ト の例外処理を行
う
0、 1
0
C_OPCODE_0x0_ILLEGAL
opcode 0x0 を無効な命令 と
し て検出
0、 1
0
C_FSL_EXCEPTION
ス ト リ ーム リ ン ク の例外
処理を行 う
0、 1
0
C_ECC_USE_CE_EXCEPTION
訂正可能なエ ラ ーに対 し
バ ス エ ラ ー例外を生成
0、 1
0
C_USE_STACK_PROTECTION
ス タ ッ ク オーバーフ ロ ー
ま たは ス タ ッ ク ア ン ダー
フ ロ ーに対 し 例外を生成
0、 1
0
LMB メ モ リ の ECC 訂正可
能エ ラ ーに対 し 、 曖昧例
外を許可
0、 1
0
C_FPU_EXCEPTION
C_IMPRECISE_EXCEPTIONS
MicroBlaze プ ロ セ ッ サ リ フ ァ レ ン ス ガ イ ド
UG984 (v2015.1) 2015 年 4 月 15 日
UG984 (v2015.3)
(v2015.2) 2015 年 96 月 30
24 日
japan.xilinx.com
integer
integer
integer
integer
integer
integer
integer
integer
integer
integer
integer
integer
integer
integer
136
第 3 章 : MicroBlaze 信号イ ン タ ー フ ェ イ スの説明
表 3‐17 : MPD パラ メ ー タ ー (続き) パラ メ ー タ ー名
C_DEBUG_ENABLED
機能/説明
設定可能な値
ツール
デ フ ォル
で割 り VHDL タ イ プ
ト値
当て
integer
MDM デバ ッ グ イ ン タ ー
フェイス
0 = なし
1 = 基本
2 = 拡張
0、 1、 2
1
C_NUMBER_OF_PC_BRK
ハー ド ウ ェ ア ブ レー ク ポ
イ ン ト の数
0~8
1
integer
C_NUMBER_OF_RD_ADDR_BRK
読み出 し ア ド レ ス ウ オ ッ
チポ イ ン ト の数
0~4
0
integer
C_NUMBER_OF_WR_ADDR_BRK
書 き 込みア ド レ ス ウ オ ッ
チポ イ ン ト の数
0~4
0
integer
C_DEBUG_EVENT_COUNTERS
パフ ォーマ ン ス監視 イ ベ
ン ト カ ウ ン タ ーの数
0 ~ 48
5
integer
C_DEBUG_LATENCY_COUNTERS
パフ ォーマ ン ス監視レ イ
テ ン シ カ ウ ン タ ーの数
0~7
1
integer
C_DEBUG_COUNTER_WIDTH
パフ ォーマ ン ス監視カ ウ
ン タ ー幅
32、 48、 64
32
integer
C_DEBUG_TRACE_SIZE
ト レース バ ッ フ ァ ー 
サイズ
0、 8192、
16384、
32768、
65536、
131072
8192
integer
0、 4096、
8192、 16384、
32768、
65536、
131072
0
integer
C_DEBUG_PROFILE_SIZE
プロ フ ァ イル バッ フ ァー
サイズ
C_DEBUG_EXTERNAL_TRACE
外部プ ロ グ ラ ム ト レース
0、 1
0
可
integer
C_INTERRUPT_IS_EDGE
レベル/エ ッ ジ イ ン ク リ メ
ント
0、 1
0
可
integer
C_EDGE_IS_POSITIVE
負/正のエ ッ ジ割 り 込み
0、 1
1
可
integer
C_FSL_LINKS
AXI4-Stream イ ン タ ーフ ェ
イ ス の数
0 ~ 16
0
C_USE_EXTENDED_FSL_INSTR
拡張ス ト リ ーム命令を使
用
0、 1
0
C_ICACHE_BASEADDR
命令キ ャ ッ シ ュ ベース ア
ド レス
0x00000000 0xFFFFFFFF
0x00000
000
std_logic_vector
C_ICACHE_HIGHADDR
命令キ ャ ッ シ ュ ハ イ ア ド
レス
0x00000000 0xFFFFFFFF
0x3FFF
FFFF
std_logic_vector
MicroBlaze プ ロ セ ッ サ リ フ ァ レ ン ス ガ イ ド
UG984 (v2015.1) 2015 年 4 月 15 日
UG984 (v2015.3)
(v2015.2) 2015 年 96 月 30
24 日
japan.xilinx.com
integer
integer
137
第 3 章 : MicroBlaze 信号イ ン タ ー フ ェ イ スの説明
表 3‐17 : MPD パラ メ ー タ ー (続き) パラ メ ー タ ー名
機能/説明
設定可能な値
ツール
デ フ ォル
で割 り VHDL タ イ プ
ト値
当て
C_USE_ICACHE
命令キ ャ ッ シ ュ
0、 1
0
C_ALLOW_ICACHE_WR
命令キ ャ ッ シ ュ ラ イ ト イ
ネーブル
0、 1
1
C_ICACHE_LINE_LEN
命令キ ャ ッ シ ュ ラ イ ンの
長さ
4、 8、 16
4
C_ICACHE_ALWAYS_USED
命令キ ャ ッ シ ュ イ ン タ ー
フ ェ イ ス が、 キ ャ ッ シ ュ
可能範囲内のすべての メ
モ リ ア ク セ ス に対 し て使
用される
0、 1
1
命令キ ャ ッ シ ュ タ グは分
散 RAM を使用 し て常に イ
ンプ リ メ ン ト
0、 1
0
C_ICACHE_STREAMS
命令キ ャ ッ シ ュ ス ト リ ー
ム
0、 1
0
C_ICACHE_VICTIMS
命令キ ャ ッ シ ュ ビ ク テ ィ
ム
0、 2、 4、 8
0
C_ICACHE_DATA_WIDTH
命令キ ャ ッ シ ュ デー タ 幅
0 = 32 ビ ッ ト
1 = フル キ ャ ッ シ ュ ラ イ ン
2 = 512 ビ ッ ト
0、 1、 2
0
C_ADDR_TAG_BITS
命令キ ャ ッ シ ュ ア ド レ ス
タグ
0 ~ 25
17
C_CACHE_BYTE_SIZE
命令キ ャ ッ シ ュ サ イ ズ
C_ICACHE_FORCE_TAG_LUTRAM
integer
integer
integer
integer
integer
integer
integer
integer
可
integer
integer
64、 128、
256、 512、
1024、 2048、
4096、 8192、
16384、
32768、 655362
8192
C_DCACHE_BASEADDR
デー タ キ ャ ッ シ ュ ベース
アド レス
0x00000000 0xFFFFFFFF
0x00000
000
std_logic_vector
C_DCACHE_HIGHADDR
デー タ キ ャ ッ シ ュ ハ イ ア
ド レス
0x00000000 0xFFFFFFFF
0x3FFF
FFFF
std_logic_vector
C_USE_DCACHE
デー タ キ ャ ッ シ ュ
0、 1
0
integer
C_ALLOW_DCACHE_WR
デー タ キ ャ ッ シ ュ ラ イ ト
イ ネーブル
0、 1
1
C_DCACHE_LINE_LEN
デー タ キ ャ ッ シ ュ ラ イ ン
の長 さ
4、 8、 16
4
MicroBlaze プ ロ セ ッ サ リ フ ァ レ ン ス ガ イ ド
UG984 (v2015.1) 2015 年 4 月 15 日
UG984 (v2015.3)
(v2015.2) 2015 年 96 月 30
24 日
japan.xilinx.com
integer
integer
138
第 3 章 : MicroBlaze 信号イ ン タ ー フ ェ イ スの説明
表 3‐17 : MPD パラ メ ー タ ー (続き) パラ メ ー タ ー名
C_DCACHE_ALWAYS_USED
機能/説明
設定可能な値
デー タ キ ャ ッ シ ュ イ ン
タ ーフ ェ イ ス が、 キ ャ ッ
シ ュ 可能範囲内のすべて
のア ク セ ス に対 し て使用
される
ツール
デ フ ォル
で割 り VHDL タ イ プ
ト値
当て
integer
0、 1
1
デー タ キ ャ ッ シ ュ タ グは
分散 RAM を使用 し て常に
イ ンプ リ メ ン ト
0、 1
0
デー タ キ ャ ッ シ ュ ラ イ ト
バ ッ ク ス ト レージ ポ リ
シーを使用
0、 1
0
C_DCACHE_VICTIMS
デー タ キ ャ ッ シ ュ ビ ク
ティム
0、 2、 4、 8
0
C_DCACHE_DATA_WIDTH
デー タ キ ャ ッ シ ュ デー タ
幅
0 = 32 ビ ッ ト
1 = フル キ ャ ッ シ ュ ラ イ ン
2 = 512 ビ ッ ト
0、 1、 2
0
C_DCACHE_ADDR_TAG
デー タ キ ャ ッ シ ュ ア ド レ
ス タグ
0 ~ 25
17
C_DCACHE_BYTE_SIZE
デー タ キ ャ ッ シ ュ サ イ ズ
C_DCACHE_FORCE_TAG_LUTRAM
C_DCACHE_USE_WRITEBACK
C_USE_MMU3
C_MMU_DTLB_SIZE3
C_MMU_ITLB_SIZE3
C_MMU_TLB_ACCESS3
MicroBlaze プ ロ セ ッ サ リ フ ァ レ ン ス ガ イ ド
UG984 (v2015.1) 2015 年 4 月 15 日
UG984 (v2015.3)
(v2015.2) 2015 年 96 月 30
24 日
integer
integer
integer
integer
可
integer
integer
64、 128、
256、 512、
1024、 2048、
4096、 8192、
16384、
32768、 65536
8192
メ モ リ 管理 :
0 = なし
1 = ユーザー モー ド
2 = 保護
3 = 仮想
0、 1、 2、 3
0
integer
デー タ シ ャ ド ウ変換ル ッ
ク アサ イ ド バ ッ フ ァ ー サ
イズ
1、 2、 4、 8
4
integer
命令シ ャ ド ウ変換ル ッ ク
アサ イ ド バ ッ フ ァ ー サ イ
ズ
1、 2、 4、 8
2
integer
メ モ リ 管理特殊レ ジ ス タ
へのア ク セ ス :
0 = 最小
1 = 読み出 し
2 = 書 き 込み
3 = フル
0、 1、 2、 3
3
integer
japan.xilinx.com
139
第 3 章 : MicroBlaze 信号イ ン タ ー フ ェ イ スの説明
表 3‐17 : MPD パラ メ ー タ ー (続き) パラ メ ー タ ー名
機能/説明
設定可能な値
ツール
デ フ ォル
で割 り VHDL タ イ プ
ト値
当て
C_MMU_ZONES3
メ モ リ 保護ゾーンの数
0 ~ 16
16
integer
C_MMU_PRIVILEGED_INSTR3
特権命令
0 = フル保護
1 = ス ト リ ーム命令を許可
0、 1
0
integer
割 り 込み処理を使用
0 = 割 り 込みな し
1 = 標準割 り 込み
2 = 低レ イ テ ン シ割 り 込み
0、 1、 2
1
可
integer
C_USE_EXT_BRK
外部ブ レー ク 処理を使用
0、 1
0
可
integer
C_USE_EXT_NM_BRK
外部のマ ス ク 不可能なブ
レー ク 処理を使用
0、 1
0
可
integer
C_USE_BRANCH_TARGET_CACHE3
分岐先キ ャ ッ シ ュ を使用
0、 1
0
integer
C_BRANCH_TARGET_CACHE_SIZE3
分岐先キ ャ ッ シ ュ サ イ ズ :
0 = デフ ォ ル ト
1 = 8 エン ト リ
2 = 16 エン ト リ
3 = 32 エン ト リ
4 = 64 エン ト リ
5 = 512 エン ト リ
6 = 1024 エン ト リ
7 = 2048 エン ト リ
0~7
0
integer
C_M_AXI_DP_
THREAD_ID_WIDTH
デー タ 側 AXI ス レ ッ ド ID
の幅
1
1
C_M_AXI_DP_DATA_WIDTH
デー タ 側 AXI デー タ 幅
32
32
integer
C_M_AXI_DP_ADDR_WIDTH
デー タ 側 AXI ア ド レ ス幅
32
32
integer
C_M_AXI_DP_
SUPPORTS_THREADS
デー タ 側 AXI は ス レ ッ ド
を使用
0
0
C_M_AXI_DP_SUPPORTS_READ
読み出 し ア ク セ ス のため
のデー タ 側 AXI サポー ト
1
1
C_M_AXI_DP_SUPPORTS_WRITE
書 き 込みア ク セ ス のため
のデー タ 側 AXI サポー ト
1
1
C_M_AXI_DP_SUPPORTS_
NARROW_BURST
デー タ 側 AXI ナ ロ ー バー
ス ト サポー ト
0
0
C_M_AXI_DP_PROTOCOL
デー タ 側 AXI プ ロ ト コ ル
AXI4、
AXI4LITE
AXI4
LITE
C_M_AXI_DP_
EXCLUSIVE_ACCESS
デー タ 側 AXI 排他的ア ク
セ ス サポー ト
0、 1
0
C_USE_INTERRUPT
MicroBlaze プ ロ セ ッ サ リ フ ァ レ ン ス ガ イ ド
UG984 (v2015.1) 2015 年 4 月 15 日
UG984 (v2015.3)
(v2015.2) 2015 年 96 月 30
24 日
japan.xilinx.com
integer
integer
integer
integer
integer
可
string
integer
140
第 3 章 : MicroBlaze 信号イ ン タ ー フ ェ イ スの説明
表 3‐17 : MPD パラ メ ー タ ー (続き) パラ メ ー タ ー名
機能/説明
設定可能な値
ツール
デ フ ォル
で割 り VHDL タ イ プ
ト値
当て
C_M_AXI_IP_
THREAD_ID_WIDTH
命令側 AXI ス レ ッ ド ID の
幅
1
1
C_M_AXI_IP_DATA_WIDTH
命令側 AXI デー タ 幅
32
32
integer
C_M_AXI_IP_ADDR_WIDTH
命令側 AXI ア ド レ ス幅
32
32
integer
C_M_AXI_IP_
SUPPORTS_THREADS
命令側 AXI は ス レ ッ ド を
使用
0
0
C_M_AXI_IP_SUPPORTS_READ
読み出 し ア ク セ ス のため
の命令側 AXI サポー ト
1
1
C_M_AXI_IP_SUPPORTS_WRITE
書 き 込みア ク セ ス のため
の命令側 AXI サポー ト
0
0
C_M_AXI_IP_SUPPORTS_
NARROW_BURST
命令側 AXI ナ ロ ー バース
ト サポー ト
0
0
C_M_AXI_IP_PROTOCOL
命令側 AXI プ ロ ト コ ル
AXI4LITE
AXI4
LITE
C_M_AXI_DC_
THREAD_ID_WIDTH
デー タ キ ャ ッ シ ュ AXI ID
の幅
1
1
C_M_AXI_DC_DATA_WIDTH
デー タ キ ャ ッ シ ュ AXI
デー タ 幅
32、 64、 128、
256、 512
32
C_M_AXI_DC_ADDR_WIDTH
デー タ キ ャ ッ シ ュ AXI ア
ド レ ス幅
32
32
C_M_AXI_DC_
SUPPORTS_THREADS
デー タ キ ャ ッ シ ュ AXI は
ス レ ッ ド を使用
0
0
C_M_AXI_DC_SUPPORTS_READ
読み出 し ア ク セ ス のため
のデー タ キ ャ ッ シ ュ AXI
サポー ト
1
1
書 き 込みア ク セ ス のため
のデー タ キ ャ ッ シ ュ AXI
サポー ト
1
1
C_M_AXI_DC_SUPPORTS_
NARROW_BURST
デー タ キ ャ ッ シ ュ AXI ナ
ロ ー バース ト サポー ト
0
0
C_M_AXI_DC_SUPPORTS_
USER_SIGNALS
デー タ キ ャ ッ シ ュ AXI
ユーザー信号サポー ト
1
1
C_M_AXI_DC_PROTOCOL
デー タ キ ャ ッ シ ュ AXI プ
ロ ト コル
AXI4
AXI4
C_M_AXI_DC_AWUSER_WIDTH
デー タ キ ャ ッ シ ュ AXI
ユーザー幅
5
5
C_M_AXI_DC_SUPPORTS_WRITE
MicroBlaze プ ロ セ ッ サ リ フ ァ レ ン ス ガ イ ド
UG984 (v2015.1) 2015 年 4 月 15 日
UG984 (v2015.3)
(v2015.2) 2015 年 96 月 30
24 日
japan.xilinx.com
integer
integer
integer
integer
integer
string
integer
integer
integer
integer
integer
integer
integer
integer
string
integer
141
第 3 章 : MicroBlaze 信号イ ン タ ー フ ェ イ スの説明
表 3‐17 : MPD パラ メ ー タ ー (続き) パラ メ ー タ ー名
機能/説明
設定可能な値
ツール
デ フ ォル
で割 り VHDL タ イ プ
ト値
当て
C_M_AXI_DC_ARUSER_WIDTH
デー タ キ ャ ッ シ ュ AXI
ユーザー幅
5
5
C_M_AXI_DC_WUSER_WIDTH
デー タ キ ャ ッ シ ュ AXI
ユーザー幅
1
1
C_M_AXI_DC_RUSER_WIDTH
デー タ キ ャ ッ シ ュ AXI
ユーザー幅
1
1
C_M_AXI_DC_BUSER_WIDTH
デー タ キ ャ ッ シ ュ AXI
ユーザー幅
1
1
C_M_AXI_DC_
EXCLUSIVE_ACCESS
デー タ キ ャ ッ シ ュ AXI 排
他的ア ク セ ス サポー ト
0、 1
0
C_M_AXI_DC_USER_VALUE
デー タ キ ャ ッ シ ュ AXI
ユーザー値
0-31
31
C_M_AXI_IC_
THREAD_ID_WIDTH
命令キ ャ ッ シ ュ AXI ID の
幅
1
1
C_M_AXI_IC_DATA_WIDTH
命令キ ャ ッ シ ュ AXI デー
タ幅
32、 64、 128、
256、 512
32
C_M_AXI_IC_ADDR_WIDTH
命令キ ャ ッ シ ュ AXI デー
タ幅
32
32
C_M_AXI_IC_
SUPPORTS_THREADS
デー タ キ ャ ッ シ ュ AXI は
ス レ ッ ド を使用
0
0
C_M_AXI_IC_SUPPORTS_READ
読み出 し ア ク セ ス のため
の命令キ ャ ッ シ ュ AXI サ
ポー ト
1
1
書 き 込みア ク セ ス のため
の命令キ ャ ッ シ ュ AXI サ
ポー ト
0
0
C_M_AXI_IC_SUPPORTS_
NARROW_BURST
命令キ ャ ッ シ ュ AXI ナ
ロ ー バース ト サポー ト
0
0
C_M_AXI_IC_SUPPORTS_
USER_SIGNALS
命令キ ャ ッ シ ュ AXI ユー
ザー信号サポー ト
1
1
C_M_AXI_IC_PROTOCOL
命令キ ャ ッ シ ュ AXI プ ロ
ト コル
AXI4
AXI4
C_M_AXI_IC_AWUSER_WIDTH
命令キ ャ ッ シ ュ AXI ユー
ザー幅
5
5
C_M_AXI_IC_ARUSER_WIDTH
命令キ ャ ッ シ ュ AXI ユー
ザー幅
5
5
C_M_AXI_IC_SUPPORTS_WRITE
MicroBlaze プ ロ セ ッ サ リ フ ァ レ ン ス ガ イ ド
UG984 (v2015.1) 2015 年 4 月 15 日
UG984 (v2015.3)
(v2015.2) 2015 年 96 月 30
24 日
japan.xilinx.com
integer
integer
integer
integer
integer
integer
integer
integer
integer
integer
integer
integer
integer
integer
string
integer
integer
142
第 3 章 : MicroBlaze 信号イ ン タ ー フ ェ イ スの説明
表 3‐17 : MPD パラ メ ー タ ー (続き) パラ メ ー タ ー名
機能/説明
設定可能な値
ツール
デ フ ォル
で割 り VHDL タ イ プ
ト値
当て
C_M_AXI_IC_WUSER_WIDTH
命令キ ャ ッ シ ュ AXI ユー
ザー幅
1
1
integer
C_M_AXI_IC_RUSER_WIDTH
命令キ ャ ッ シ ュ AXI ユー
ザー幅
1
1
C_M_AXI_IC_BUSER_WIDTH
命令キ ャ ッ シ ュ AXI ユー
ザー幅
1
1
C_M_AXI_IC_USER_VALUE
命令キ ャ ッ シ ュ AXI ユー
ザー値
0 ~ 31
31
C_STREAM_INTERCONNECT
AXI4-Stream イ ン タ ー コ ネ
ク ト を選択
0、 1
0
C_Mn_AXIS_PROTOCOL
AXI4-Stream プ ロ ト コ ル
GENERIC
GENERI
C
string
C_Sn_AXIS_PROTOCOL
AXI4-Stream プ ロ ト コ ル
GENERIC
GENERI
C
string
C_Mn_AXIS_DATA_WIDTH
AXI4-Stream マ ス タ ー 
デー タ 幅
32
32
該当
なし
integer
C_Sn_AXIS_DATA_WIDTH
AXI4-Stream ス レーブ 
デー タ 幅
32
32
該当
なし
integer
integer
integer
integer
integer
1. 最下位ビ ッ ト か ら 7 つのビ ッ ト はすべて 0。
2. アーキ テ ク チ ャ に よ っ て指定で き る サ イ ズは変わ り ます。 キ ャ ッ シ ュ は、 0 か ら 32 ま での RAMB プ リ ミ テ ィ ブを使用 し ま
す (キ ャ ッ シ ュ サ イ ズが 2048 未満の場合は 0)
3. C_AREA_OPTIMIZED が 1 に設定 さ れてい る と き は使用で き ません。
表 3‐18 : パ ラ メ ー タ ー C_FAMILY で使用可能な値
設定可能な値
Artix
aartix7 artix7 artix7l qartix7 qartix7l
Kintex
kintex7 kintex7l qkintex7 qkintex7l kintexu
Virtex
qvirtex7 virtex7 virtexu
Zynq
azynq zynq qzynq
MicroBlaze プ ロ セ ッ サ リ フ ァ レ ン ス ガ イ ド
UG984 (v2015.1) 2015 年 4 月 15 日
UG984 (v2015.3)
(v2015.2) 2015 年 96 月 30
24 日
japan.xilinx.com
143
第 4 章
MicroBlaze ア プ リ ケーシ ョ ン バイ ナ リ イ ン
ターフ ェ イス
こ の章では、 MicroBlaze™ 用にアセ ン ブ リ 言語で ソ フ ト ウ ェ ア を開発す る のに重要な アプ リ ケーシ ョ ン バ イ ナ リ イ
ン タ ーフ ェ イ ス (ABI) を説明 し ます。 MicroBlaze の GNU コ ンパ イ ラ は、 本書で説明 さ れてい る 規則に従い ます。 ア
セ ンブ リ プ ロ グ ラ ムに よ っ て記述 さ れ る コ ー ド も すべて、 コ ンパ イ ラ で生成 さ れた コ ー ド と の互換性を保つために、
同 じ 規則に従い ます。 ま た、 割 り 込みお よ び例外処理 も 手短に説明 し ます。
デー タ 型
MicroBlaze のアセ ン ブ リ プ ロ グ ラ ム で使用 さ れ る デー タ 型は、 表 4-1 に ま と め ら れてい ます。 data8、 data16、 data32
な ど のデー タ 型が、 バ イ ト 、 ハーフバ イ ト 、 ワー ド レ ジ ス タ の代わ り に使用 さ れます。
表 4‐1 : MicroBlaze アセ ン ブ リ プ ログ ラ ムのデー タ 型
MicroBlaze デー タ 型 (アセ ン ブ リ プ ロ グ ラ ム)
対応する ANSI C デー タ 型
サイ ズ (バイ ト )
data8
char
1
data16
short
2
data32
int
4
data32
long int
4
data32
float
4
data32
enum
4
data16/data32
pointer1
2/4
1. グ ロ ーバル ポ イ ン タ ーでア ク セ ス で き る 、 ス モール デー タ エ リ アへのポ イ ン タ ーは data16 です。
レ ジス タ の使用規則
MicroBlaze での レ ジ ス タ 使用規則は表 4-2 に ま と め ら れてい ます。
表 4‐2 : レ ジ ス タ の使用規則
レ ジス タ
種類
SW/HW
用途
R0
専用
HW
値0
R1
専用
SW
ス タ ッ ク ポ イ ン ター
R2
専用
SW
読み出 し 専用の ス モール デー タ エ リ ア ア ン カー
MicroBlaze プ ロ セ ッ サ リ フ ァ レ ン ス ガ イ ド
UG984 (v2015.1) 2015 年 4 月 15 日
UG984 (v2015.3)
(v2015.2) 2015 年 96 月 30
24 日
japan.xilinx.com
144
第 4 章 : MicroBlaze ア プ リ ケーシ ョ ン バイ ナ リ イ ン タ ー フ ェ イ ス
表 4‐2 : レ ジ ス タ の使用規則
レ ジス タ
種類
SW/HW
用途
R3-R4
揮発性
SW
戻 り 値/暫定値
R5-R10
揮発性
SW
パ ラ メ ー タ ー /暫定値
R11-R12
揮発性
SW
暫定値
R13
専用
SW
読み出 し -書き 込みの ス モール デー タ エ リ ア ア ン カー
R14
専用
HW
割 り 込みの戻 り ア ド レ ス
R15
専用
SW
サブルーチンの戻 り ア ド レ ス
R16
専用
HW
ト ラ ッ プ (デバ ッ ガー ) の戻 り ア ド レ ス
R17
専用
HW/SW
R18
専用
SW
アセ ンブ ラ / コ ンパ イ ラ の暫定値のため予約
svc_table_handler 属性でサービ ス ID に使用
R19
例外の戻 り ア ド レ ス
ハー ド ウ ェ ア例外をサポー ト する 場合は HW、 そ う でなければ SW
不揮発性
SW
関数コ ール全体で保存 し てお く 必要があ る 。 コ ー リ ーセーブ。
R20
専用
ま たは
不揮発性
SW
位置独立コ ー ド (PIC) のグ ロ ーバル オ フ セ ッ ト テーブル (GOT) への
ポ イ ン タ ー を 格納す る た めに予約非 PIC コ ー ド で不揮発性。 関数
コ ール全体で保存 し てお く 必要があ る 。 コ ー リ ーセーブ。
R21-R31
不揮発性
SW
関数コ ール全体で保存 し てお く 必要があ る 。 コ ー リ ーセーブ。
特殊
HW
プロ グ ラ ム カ ウ ン ター
特殊
HW
マシ ン ス テー タ ス レ ジ ス タ
特殊
HW
例外ア ド レ ス レ ジ ス タ
特殊
HW
例外ス テー タ ス レ ジ ス タ
特殊
HW
浮動小数点ス テー タ ス レ ジ ス タ
特殊
HW
分岐先レ ジ ス タ
特殊
HW
例外デー タ レ ジ ス タ
特殊
HW
プ ロ セ ス ID レ ジ ス タ
特殊
HW
ゾーン保護レ ジ ス タ
特殊
HW
変換ル ッ ク アサ イ ド バ ッ フ ァ ー ロ ウ レ ジ ス タ
特殊
HW
変換ル ッ ク アサ イ ド バ ッ フ ァ ー ハ イ レ ジ ス タ
特殊
HW
変換ル ッ ク アサ イ ド バ ッ フ ァ ー イ ンデ ッ ク ス レ ジ ス タ
特殊
HW
変換ル ッ ク アサ イ ド バ ッ フ ァ ー検索 イ ンデ ッ ク ス
特殊
HW
プ ロ セ ッ サ バージ ョ ン レ ジ ス タ 0 か ら 12 ま で
RPC
RMSR
REAR
RESR
RFSR
RBTR
REDR
RPID
RZPR
RTLBLO
RTLBHI
RTLBX
RTLBSX
RPVR0-12
MicroBlaze のアーキ テ ク チ ャ は 32 個の汎用レ ジ ス タ (GPR) を定義 し ます。 こ れ ら の レ ジ ス タ は、 揮発性、 不揮発性、
専用の 3 つに分類 さ れます。
•
揮発性レ ジ ス タ ( コ ー ラ ーセーブ と も い う ) は、 一時的な も の と し て使用 さ れ、 関数 コ ールの間は値を保持 し ませ
ん。 レ ジ ス タ R3 か ら R12 ま では揮発性 タ イ プで、 R3 お よ び R4 は、 あればコ ー ラ ー フ ァ ン ク シ ョ ンに値を返す
ために使用 さ れます。 レ ジ ス タ R5 か ら R10 ま では、 サブルーチン間のパ ラ メ ー タ ー渡 し に使用 さ れます。
•
レ ジ ス タ R19 か ら R31 ま では、 関数 コ ールの間レ ジ ス タ の内容を保持す る ので、 不揮発性レ ジ ス タ と 呼ばれま
す ( コ ー リ ーセーブ と も い う )。 コ ー リ ー関数は、 使用 さ れてい る 不揮発性レ ジ ス タ に値を保存 し ます。 通常、 プ
ロ ロ ーグ中に ス タ ッ ク に保存 さ れ、 その後、 エ ピ ロ ーグ中に リ ロ ー ド さ れます。
•
一部の レ ジ ス タ は専用レ ジ ス タ と し て使用 さ れ、 プ ロ グ ラ マはその決め ら れた目的以外の こ と で こ の レ ジ ス タ を
使用す る こ と はあ り ません。
MicroBlaze プ ロ セ ッ サ リ フ ァ レ ン ス ガ イ ド
UG984 (v2015.1) 2015 年 4 月 15 日
UG984 (v2015.3)
(v2015.2) 2015 年 96 月 30
24 日
japan.xilinx.com
145
第 4 章 : MicroBlaze ア プ リ ケーシ ョ ン バイ ナ リ イ ン タ ー フ ェ イ ス
¨
¨
•
レ ジ ス タ R14 か ら R17 は、 割 り 込み、 サブルーチン、 ト ラ ッ プ、 例外の順序で戻 り ア ド レ ス を格納す る の
に使用 さ れます。 サブルーチンは分岐お よ び リ ン ク 命令を使用 し て呼び出 さ れます。 こ の命令は現在のプ ロ
グ ラ ム カ ウ ン タ ー (PC) を レ ジ ス タ R15 に保存 し ます。
ス モール デー タ エ リ ア ポ イ ン タ ーは、16 ビ ッ ト の即値で、 あ る メ モ リ ロ ケーシ ョ ンにア ク セ スす る ために
使用 さ れます。 こ う し たエ リ アについては、 本書の メ モ リ モデルに関する セ ク シ ョ ンで説明 し ます。 読み出
し 専用の ス モール デー タ エ リ ア (SDA) ア ン カー R2 (読み出 し 専用) は、リ テ ラ ルな ど の定数にア ク セ スす る
ために使用 さ れます。 も う 1 つの SDA ア ン カー R13 (読み出 し -書 き 込み) は、 ス モール デー タ の読み出 し 書 き 込みセ ク シ ョ ンの値にア ク セ スす る のに使用 さ れます。
¨
レ ジ ス タ R1 は ス タ ッ ク ポ イ ン タ ー値を格納 し 、 関数に入 る と き お よ びそ こ か ら 出 る と き にア ッ プデー ト さ
れます。
¨
レ ジ ス タ R18 はアセ ンブ ラ 操作用の一時的な レ ジ ス タ と し て使用 さ れます。
MicroBlaze には特殊レ ジ ス タ が含まれます。 た と えば、 プ ロ グ ラ ム カ ウ ン タ ー (rpc)、 マシ ン ス テー タ ス レ ジ ス
タ (rmsr)、 例外ス テー タ ス レ ジ ス タ (resr)、 例外ア ド レ ス レ ジ ス タ (rear)、 浮動小数点ス テー タ ス レ ジ ス タ (rfsr)、
分岐先レ ジ ス タ (rbtr)、 例外デー タ レ ジ ス タ (redr)、 メ モ リ 管理レ ジ ス タ (rpid、 rzpr、 rtlblo、 rtlbhi、 rtlbx、 rtlbsx)、
プ ロ セ ッ サ バージ ョ ン レ ジ ス タ (0 か ら 12 ま で) な ど です。 こ れ ら の レ ジ ス タ は、 レ ジ ス タ フ ァ イ ルには直接
マ ッ プ さ れていないため、 その使用方法は汎用レ ジ ス タ と は異な り ます。 特殊レ ジ ス タ の値は、 mts お よ び mfs
命令をぞれぞれ使用 し て汎用レ ジ ス タ か ら 、 ま たは汎用レ ジ ス タ へ と 転送で き ます。
ス タ ッ ク規則
MicroBlaze に よ っ て使用 さ れてい る ス タ ッ ク 規則は表 4-3 に ま と め ら れてい ます。
表 4-3 の赤枠で囲まれてい る 箇所は、 コ ー ラ ー関数の ス タ ッ ク フ レームの一部を表 し 、 それ以外の箇所は、 コ ー リ ー
フ レーム関数を表 し てい ます。 ス タ ッ ク フ レームの ABI 規則は、 パ ラ メ ー タ ー渡 し 、 不揮発性レ ジ ス タ の値の保持、
関数の ロ ーカル変数の スペース の割 り 当てに関す る プ ロ ト コ ルを定義 し てい ます。
ほかのサブルーチン を呼び出す コ ールが含ま れてい る 関数は非 リ ーフ関数 と 呼ばれ ます。 こ れ ら の非 リ ーフ関数は、
それ用に新た な ス タ ッ ク フ レーム エ リ ア を作成す る 必要があ り ます。 プ ロ グ ラ ムの実行が開始す る と き 、 ス タ ッ ク
ポ イ ン タ ーの値は最大値です。 関数が呼び出 さ れてい く と 、 その値は、 ス タ ッ ク フ レームの各関数に必要な ワー ド 数
分デ ク リ メ ン ト し てい き ます。 コ ー ラ ー関数の ス タ ッ ク ポ イ ン タ ーの値は、 常に、 コ ー リ ー関数 よ り も 大 き な値にな
り ます。
表 4‐3 : ス タ ッ ク 規則
上位ア ド レ ス
呼び出 さ れたサブルーチンの関数パ ラ メ ー タ ー (Arg n .. Arg1)
(オプシ ョ ン : 現在のプ ロ シージ ャ か ら 呼び出 さ れたプ ロ シージ ャ に
必要な引数の最大数)
古い ス タ ッ ク 
ポ イ ン ター
リ ン ク レ ジ ス タ (R15)
コ ー リ ー セーブ ド レ ジ ス タ (R31....R19)
(オプシ ョ ン : 現在のプ ロ シージ ャ で使用 さ れ る レ ジ ス タ のみを保存)
現在のプ ロ シージ ャ の ロ ーカル変数
(オプシ ョ ン : プ ロ シージ ャ で定義 さ れてい る ロ ーカル変数の場合に
のみあ る )
フ ァ ン ク シ ョ ン パ ラ メ ー タ ー (Arg n .. Arg 1)
(オプシ ョ ン : 現在のプ ロ シージ ャ か ら 呼び出 さ れたプ ロ シージ ャ に
必要な引数の最大数)
新しいス タ ッ ク
ポ イ ン ター
リ ン ク レジス タ
低位ア ド レ ス
MicroBlaze プ ロ セ ッ サ リ フ ァ レ ン ス ガ イ ド
UG984 (v2015.1) 2015 年 4 月 15 日
UG984 (v2015.3)
(v2015.2) 2015 年 96 月 30
24 日
japan.xilinx.com
146
第 4 章 : MicroBlaze ア プ リ ケーシ ョ ン バイ ナ リ イ ン タ ー フ ェ イ ス
関数 1 が関数 2 を呼び出 し 、 その後、 関数 2 が関数 3 を呼び出す例を と っ てみます。 それぞれの イ ン ス タ ン ス での ス
タ ッ ク は図 4-1 の よ う にな り ます。 関数 1 が関数 2 を呼び出 し た後、 ス タ ッ ク ポ イ ン タ ー (SP) の値はデ ク リ メ ン ト
し ます。 こ の SP の値は、 関数 3 の ス タ ッ ク フ レーム分、 さ ら にデ ク リ メ ン ト し ます。 関数 3 か ら 戻 る と 、 こ の値は、
関数 2 での元の値に イ ン ク リ メ ン ト し ます。
図 4-1 を見 る と 、 ス タ ッ ク が ど の よ う に維持 さ れてい る かがわか り ます。
X-Ref Target - Figure 4-1
ハイ メ モ リ
関数 1
関数 1
関数 1
関数 1
関数 2
関数 2
関数 2
SP
SP
SP
関数 3
ロウ メ モ リ
SP
図 4‐1 : ス タ ッ ク フ レーム
呼び出 し 規則
コ ー ラ ー関数は、 レ ジ ス タ (R5 か ら R10) を使用する か、 それ自体の ス タ ッ ク フ レーム で、 コ ー リ ー関数にパ ラ メ ー
タ ーを渡 し ます。 コ ー リ ーに渡 さ れたパ ラ メ ー タ ーを格納す る のに、 コ ー リ ーは コ ー ラ ーの ス タ ッ ク エ リ ア を使用 し
ます。
図 4-1 を参照 し て く だ さ い。 関数 2 のパ ラ メ ー タ ーは R5 か ら R10 ま での レ ジ ス タ か、 ま たは関数 1 に割 り 当て ら れ
てい る ス タ ッ ク フ レームに格納 さ れてい ます。
関数 2 に 7 つ以上の整数パ ラ メ ー タ ーがあ る 場合、 最初の 6 つは R5 か ら R10 ま での レ ジ ス タ で渡す こ と がで き ます
が、 その後のパ ラ メ ー タ ーは、 SP + 28 のオ フ セ ッ ト か ら 、 関数 1 に割 り 当て ら れてい る ス タ ッ ク フ レーム で渡す必
要があ り ます。
MicroBlaze プ ロ セ ッ サ リ フ ァ レ ン ス ガ イ ド
UG984 (v2015.1) 2015 年 4 月 15 日
UG984 (v2015.3)
(v2015.2) 2015 年 96 月 30
24 日
japan.xilinx.com
147
第 4 章 : MicroBlaze ア プ リ ケーシ ョ ン バイ ナ リ イ ン タ ー フ ェ イ ス
メ モ リ モデル
MicroBlaze の メ モ リ モデルは、 ス モール デー タ エ リ ア、 デー タ エ リ ア、 共通の未初期化エ リ ア、 リ テ ラ ル/定数 と い
う 4 つの箇所にデー タ を分類 し ます。
ス モール デー タ エ リ ア
グ ロ ーバルな初期化 さ れた変数でサ イ ズの小 さ な も のが、 こ のエ リ アに格納 さ れ ます。 変数を ス モール デー タ エ リ
アに格納す る か ど う か決め手 と な る サ イ ズは、 MicroBlaze の C コ ンパ イ ラ (mb-gcc) で 8 バ イ ト に設定 さ れてい ます
が、 コ ンパ イ ラ で コ マ ン ド ラ イ ン オプシ ョ ン を指定す る と 変更で き ます。 こ のオプシ ョ ンの詳細は、 『エンベデ ッ ド
シ ス テ ム ツール リ フ ァ レ ン ス マニ ュ アル』 の 「GNU コ ンパ イ ラ ツール」 の章で説明 さ れてい ます。 ス モール デー
タ エ リ アには 64KB の メ モ リ が割 り 当て ら れてい ます。 こ のエ リ アには、 読み出 し -書 き 込みの ス モール デー タ エ リ
ア ア ン カー (R13) お よ び 16 ビ ッ ト のオ フ セ ッ ト を使用 し て、 ア ク セ ス し ます。 こ のエ リ アに小 さ な変数を割 り 当て
てお く と 、 グ ロ ーバル変数にア ク セ スす る ための コ ー ド に IMM 命令を あ ま り 追加せずに済みます。 ス モール デー タ
エ リ アの変数には、 絶対ア ド レ ス を使用 し て ア ク セ スす る こ と も で き ます。
デー タ エ リ ア
比較的大 き な初期化 さ れた変数がデー タ エ リ アに割 り 当て ら れます。 こ のエ リ アには、 コ ンパ イ ラ に指定す る コ マ ン
ド ラ イ ンのオプシ ョ ンに よ っ て異な り ますが、 読み出 し -書き 込みの SDA ア ン カー R13、 ま たは絶対ア ド レ ス を使用
し てア ク セ ス で き ます。
共通の未初期化エ リ ア
初期化 さ れていないグ ロ ーバル変数は共通エ リ アに割 り 当て ら れ、絶対ア ド レ ス、 ま たは読み出 し -書 き 込みの ス モー
ル デー タ エ リ ア ア ン カー (R13) を使用 し て、 ア ク セ ス で き ます。
リ テ ラルまたは定数
定数は、 読み出 し 専用の ス モール デー タ エ リ ア (SDA) に格納 さ れ、 読み出 し 専用の SDA ア ン カー R2 を使用 し てア
ク セ ス し ます。
コ ンパ イ ラ は、 ベース ポ イ ン タ ー と し て動作す る 適切な グ ロ ーバル ポ イ ン タ ーを生成 し ます。 SDA ア ン カーの実際
の値は、最終の リ ン ク ス テージで、 リ ン カーに よ っ て定め ら れます。 メ モ リ の さ ま ざ ま なセ ク シ ョ ンに関 し ては、『エ
ンベデ ッ ド シ ス テ ム ツール リ フ ァ レ ン ス マニ ュ アル』 の 「MicroBlaze リ ン カー ス ク リ プ ト 」 のセ ク シ ョ ン を参照 し
て く だ さ い。 コ ンパ イ ラ は、 コ マ ン ド ラ イ ン のオプシ ョ ン に従っ て適切なセ ク シ ョ ン を生成 し ま す。 こ れ ら のオプ
シ ョ ンの詳細については、 『エンベデ ッ ド シ ス テ ム ツール リ フ ァ レ ン ス マニ ュ アル』 の 「GNU コ ンパ イ ラ ツール」
の章を参照 し て く だ さ い。
MicroBlaze プ ロ セ ッ サ リ フ ァ レ ン ス ガ イ ド
UG984 (v2015.1) 2015 年 4 月 15 日
UG984 (v2015.3)
(v2015.2) 2015 年 96 月 30
24 日
japan.xilinx.com
148
第 4 章 : MicroBlaze ア プ リ ケーシ ョ ン バイ ナ リ イ ン タ ー フ ェ イ ス
割 り 込み、 ブ レー ク、 例外処理
MicroBlaze は、 表 4-4 にあ る よ う に、 割 り 込みお よ び例外処理のためのア ド レ ス ロ ケーシ ョ ン を想定 し ます。 こ れ ら
の ロ ケーシ ョ ンで、 コ ー ド は適切なハン ド ラ にジ ャ ンプす る よ う に記述 さ れてい ます。
表 4‐4 : 割 り 込みおよび例外処理
イ ベン ト
ハー ド ウ ェ アがジ ャ ン プする位置
ソ フ ト ウ ェ ア ラ ベル
開始 / リ セ ッ ト
C_BASE_VECTORS + 0x0
_start
ユーザー例外
C_BASE_VECTORS + 0x8
_exception_handler
0x101
割 り 込み
C_BASE_VECTORS +
ブ レー ク (HW/SW)
C_BASE_VECTORS + 0x18
ハー ド ウ ェ ア例外
C_BASE_VECTORS + 0x20
今後のサポー ト のためザ イ リ ン ク ス に よ
り 予約
C_BASE_VECTORS + 0x28 C_BASE_VECTORS + 0x4F
_interrupt_handler
_hw_exception_handler
-
1. 低レ イ テ ン シ割 り 込みモー ド の場合、 ベ ク タ ー ア ド レ ス は割 り 込み コ ン ト ロ ー ラ ーに よ り 提供 さ れます。
こ れ ら の ロ ケーシ ョ ンで予期 さ れ る コ ー ド は、 次の よ う にな り ます。 crt0.o 初期化フ ァ イ ルは、 mb-gcc コ ンパ イ
ラ に よ り 、 リ ン キ ン グのため mb-ld に渡 さ れます。 こ の フ ァ イ ルは、 例外ハン ド ラ に適切な ア ド レ ス を設定 し ます。
次の コ ー ド は、 例外、 ブ レ ー ク 、 割 り 込みハ ン ド ラ に制御を渡す コ ー ド で、 C_BASE_VECTORS にはデフ ォ ル ト の
0x00000000 が設定 さ れてい る も の と し ます。
0x00:
0x04:
0x08:
0x0c:
0x10:
0x14:
0x18:
0x1c:
0x20:
0x24:
bri
nop
imm
bri
imm
bri
imm
bri
imm
bri
_start1
high bits of address (user exception handler)
_exception_handler
high bits of address (interrupt handler)
_interrupt_handler
high bits of address (break handler)
low bits of address (break handler)
high bits of address (HW exception handler
_hw_exception_handler
低レ イ テ ン シの割 り 込みモー ド の場合、 こ のモー ド を使用 し てい る 各割 り 込みに対 し 、 直接、 制御は割 り 込みハン ド
ラ に渡 さ れます。 こ の場合、 使用 さ れてい る レ ジ ス タ の格納お よ び復帰は各ハン ド ラ が行い ます。 MicroBlaze C コ ン
パ イ ラ (mb-gcc) の fast_interrupt と い う 属性を使用する と 、こ の タ ス ク を コ ンパ イ ラ で実行す る よ う に設定で き ます。
void interrupt_handler_name() __attribute__((fast_interrupt));
MicroBlaze では 32 ビ ッ ト を使用 し て指定可能な ア ド レ ス ロ ケーシ ョ ンに例外お よ び割 り 込みのハン ド ラ ルーチン を
配置す る こ と がで き ます。
ユーザー例外ハン ド ラ の コ ー ド は _exception_handler と い う ラ ベル、 ハー ド ウ ェ ア例外ハン ド ラ は
_hw_exception_handler と い う ラ ベルで始ま り ますが、 低レ イ テ ン シ ハン ド ラ を使用 し ない割 り 込みの場合は、
割 り 込みハン ド ラ コ ー ド は _interrupt_handler と い う ラ ベルで始ま り ます。
MicroBlaze プ ロ セ ッ サ リ フ ァ レ ン ス ガ イ ド
UG984 (v2015.1) 2015 年 4 月 15 日
UG984 (v2015.3)
(v2015.2) 2015 年 96 月 30
24 日
japan.xilinx.com
149
第 4 章 : MicroBlaze ア プ リ ケーシ ョ ン バイ ナ リ イ ン タ ー フ ェ イ ス
現在の MicroBlaze シ ス テ ムには、 割 り 込み、 ブ レー ク 、 ユーザー例外処理に対 し ダ ミ ー ルーチンがあ り 、 ユーザー
が変更す る こ と がで き ます。 こ れ ら のルーチン を上書き し 、 ユーザーの割 り 込みお よ び例外ハン ド ラ を リ ン ク す る に
は、 特定の属性を使用 し てハン ド ラ コ ー ド を定義す る 必要があ り ます。
使用 さ れてい る レ ジ ス タ を格納お よ び復帰 さ せ、 ハン ド ラ か ら 戻る ための rtid 命令を省 く コ ー ド を コ ンパ イ ラ が生
成す る よ う に、 interrupt_handler と い う 属性を使用 し て、 割 り 込みハン ド ラ コ ー ド を定義す る 必要があ り ます。
void function_name() __attribute__((interrupt_handler));
使用 さ れてい る レ ジ ス タ を格納お よ び復帰 さ せ、ハン ド ラ か ら 戻る ための rtid 命令を省 く コ ー ド を コ ンパ イ ラ が生成
す る よ う に、 break_handler と い う 属性を使用 し て、 ブ レー ク ハン ド ラ コ ー ド を定義す る 必要があ り ます。
void function_name() __attribute__((break_handler));
ユーザー例外ハン ド ラ コ ー ド は、 svc_handler ま たは svc_table_handler の属性を使用 し て、 定義す る 必要が
あ り ます。
void function_name() __attribute__((svc_handler));
void function_name() __attribute__((svc_table_handler (ID)));
最初の属性は、 コ ンパ イ ラ が brki rD,0x8 命令を使用 し て、 ハン ド ラ への間接的な コ ールを省 く よ う に し 、 ま たハ
ン ド ラ か ら 戻 る ための rtbd 命令を省 く よ う に し ます。 つま り 、 MMU が イ ネーブルにな っ てい る 場合、 ハン ド ラ 関
数は特権モー ド で実行 さ れ る と い う こ と です。
2 番目の属性はサービ ス ID を使用 し て宣言 さ れてい ます。 こ の場合、 コ ンパ イ ラ は brki rD,0x8 命令を使用 し て、
レ ジ ス タ R18 の こ の ID と 、それに続 く _exception_handler への間接的な コ ールを格納す る ための コ ー ド を省 き 、
ま た ハ ン ド ラ か ら 戻 る た め の rtbd 命令 を 省 き ま す。 R18 の ID に 基づ い て、 該当す る ハ ン ド ラ を 呼び出す
_exception_handler 関数を上書 き す る 必要があ り ます。
割 り 込みハン ド ラ の属性の使用方法や構文に関 し ては、『エンベデ ッ ド シ ス テ ム ツール リ フ ァ レ ン ス マニ ュ アル』 の
「GNU コ ンパ イ ラ ツール」 の章を参照 し て く だ さ い。
XMD (Xilinx Microprocessor Debug) ま たは SDK (Software Development Kit) で ソ フ ト ウ ェ ア ブ レー ク ポ イ ン ト が使用 さ
れ る 場合は、 ブ レー ク (HW/SW) ア ド レ ス ロ ケーシ ョ ンは、 ソ フ ト ウ ェ ア ブ レー ク ポ イ ン ト を処理す る ために予約 さ
れます。
MicroBlaze プ ロ セ ッ サ リ フ ァ レ ン ス ガ イ ド
UG984 (v2015.1) 2015 年 4 月 15 日
UG984 (v2015.3)
(v2015.2) 2015 年 96 月 30
24 日
japan.xilinx.com
150
第 5 章
MicroBlaze 命令セ ッ ト アーキテ ク チ ャ
こ の章では、 MicroBlaze™ の命令セ ッ ト アーキ テ ク チ ャ について説明 し ます。
記号の説明
こ の章で使用 さ れてい る 記号は表 5-1 に定義 さ れてい ます。
表 5‐1 : 記号の説明
記号
意味
+
加算
-
減算

乗算
/
除算

ビ ッ ト 単位の論理演算子 AND

ビ ッ ト 単位の論理演算子 OR

ビ ッ ト 単位の論理演算子 XOR
x
ビ ッ ト 単位の x の補数

代入
>>
右シ フ ト
<<
左シ フ ト
rx
レジス タ x
x[i]
レ ジ ス タ x のビ ッ ト i
x[i:j]
レ ジ ス タ x のビ ッ ト i か ら j まで
=
相等

不一致
>
大な り
>=
それ以上
<
小な り
<=
それ以下
|
信号選択
sext(x)
符号拡張 x
MicroBlaze プ ロ セ ッ サ リ フ ァ レ ン ス ガ イ ド
UG984 (v2015.1) 2015 年 4 月 15 日
UG984 (v2015.3)
(v2015.2) 2015 年 96 月 30
24 日
japan.xilinx.com
151
第 5 章 : MicroBlaze 命令セ ッ ト アーキテ ク チ ャ
表 5‐1 : 記号の説明 (続き)
記号
Mem(x)
FSLx
意味
ア ド レ ス x での メ モ リ ロ ケーシ ョ ン
AXI4-Stream イ ン タ ーフ ェ イ ス x
LSW(x)
x の最下位 ワー ド
isDnz(x)
浮動小数点 : x が非正規化数な ら True
isInfinite(x)
浮動小数点 : x が +¥ ま たは -¥ な ら True
isPosInfinite(x)
浮動小数点 : x が +¥ な ら True
isNegInfinite(x)
浮動小数点 : x -¥ な ら True
isNaN(x)
浮動小数点 : x が quiet NaN ま たは signaling NaN な ら True
isZero(x)
浮動小数点 : x が +0ま たは -0な ら True
isQuietNaN(x)
浮動小数点 : x が quiet NaN な ら True
isSigNaN(x)
浮動小数点 : x が signaling NaN な ら True
signZero(x)
浮動小数点 : x > 0 な ら +0 を返 し 、 x < 0 な ら -0 を返す
signInfinite(x)
浮動小数点 : x > 0 な ら +¥ を返 し 、 x < 0 な ら -¥ を返す
MicroBlaze プ ロ セ ッ サ リ フ ァ レ ン ス ガ イ ド
UG984 (v2015.1) 2015 年 4 月 15 日
UG984
(v2015.2) 2015 年 96 月 30
(v2015.3)
24 日
japan.xilinx.com
152
第 5 章 : MicroBlaze 命令セ ッ ト アーキテ ク チ ャ
フ ォ ーマ ッ ト
MicroBlaze は タ イ プ A お よ び タ イ プ B と い う 2 つの命令フ ォ ーマ ッ ト を使用 し ます。
タ イ プ A
タ イ プ A は レ ジ ス タ 間の命令に使用 さ れ ます。 オペ コ ー ド 、 デス テ ィ ネーシ ョ ン レ ジ ス タ を 1 つ、 ソ ー
ス レ ジ ス タ を 2 つ含んでい ます。
オペ コ ー ド
0
デス テ ィ ネーシ ョ
ン レ ジス タ
ソ ース レ ジ ス タ A ソ ース レ ジ ス タ B
0
6
11
21
16
0
0
0
0
0
0
0
0
0
0
31
タ イ プ B
タ イ プ B は レ ジ ス タ と 即値の命令に使用 さ れ ま す。 オペ コ ー ド 、 デ ス テ ィ ネーシ ョ ン レ ジ ス タ を 1 つ、
ソ ース レ ジ ス タ を 1 つ、 ソ ース の 16 ビ ッ ト の即値を含んでい ます。
オペ コ ー ド
0
デス テ ィ ネーシ ョ
ン レ ジス タ
ソ ース レ ジ ス タ A
6
11
即値
16
31
命令
こ のセ ク シ ョ ン では MicroBlaze の命令について説明 し ま す。 命令はアル フ ァ ベ ッ ト 順に リ ス ト さ れてい
ます。 各命令に対 し 、 ニーモニ ッ ク 、 エ ン コ ーデ ィ ン グ、 説明、 セマ ン テ ィ ク ス の擬似 コ ー ド 、 変更 さ れ
る レ ジ ス タ の リ ス ト がザ イ リ ン ク ス か ら 提供 さ れてい ます。
MicroBlaze プ ロ セ ッ サ リ フ ァ レ ン ス ガ イ ド
UG984 (v2015.1) 2015 年 4 月 15 日
UG984 (v2015.3)
(v2015.2) 2015 年 96 月 30
24 日
japan.xilinx.com
153
第 5 章 : MicroBlaze 命令セ ッ ト アーキテ ク チ ャ
add
0
Arithmetic Add
add
rD、 rA、 rB
加算
addc
rD、 rA、 rB
キ ャ リ ー付 き 加算
addk
rD、 rA、 rB
加算お よ びキ ャ リ ー保持
addkc
rD、 rA、 rB
キ ャ リ ー付 き 加算お よ びキ ャ リ ー保持
0
0
K
C
0
0
rD
6
rA
1
1
rB
1
6
0
0
0
0
0
2
1
0
0
0
0
0
0
3
1
説明
レ ジ ス タ rA お よ び rB の内容の合計は、 レ ジ ス タ rD に配置 さ れます。
命令の ビ ッ ト 3 (図では K) は、 ニーモニ ッ ク addk の場合 1 にセ ッ ト さ れ ます。 命令の ビ ッ ト 4 (図では C)
は、ニーモニ ッ ク addc の場合 1 にセ ッ ト さ れ ます。ニーモニ ッ ク addkc の場合は両方の ビ ッ ト が 1 にセ ッ
ト さ れます。
add 命令で ビ ッ ト 3 がセ ッ ト さ れてい る と (addk、 addkc)、 命令実行の結果にかかわ ら ず、 キ ャ リ ー フ ラ
グは前の値を維持 し ます。 ビ ッ ト 3 が ク リ アにな る と (add、 addc)、 キ ャ リ ー フ ラ グは命令の実行の影響
を受け ます。
命令の ビ ッ ト 4 が 1 にセ ッ ト さ れてい る 場合 (addc、 addkc)、 キ ャ リ ー フ ラ グの内容 (MSR[C]) が、 命令実
行に影響 し ます。 ビ ッ ト 4 が ク リ アにな る と (add、 addk)、 キ ャ リ ー フ ラ グの内容は命令実行には影響 し
ません (標準加算の場合)。
擬似 コ ー ド
if C = 0 then
(rD)   (rA) + (rB)
else
(rD)   (rA) + (rB) + MSR[C]
if K = 0 then
MSR[C]   CarryOut
変更 さ れる レ ジ ス タ
•
rD
•
MSR[C]
レ イテンシ
1 サイ クル
注記
命令オペ コ ー ド の C ビ ッ ト は、 MSB のキ ャ リ ー ビ ッ ト と は同 じ ではあ り ません。
“add r0, r0, r0” (= 0x00000000) 命令は、 コ ンパ イ ラ では決 し て使用 さ れず、 通常、 メ モ リ が初期化 さ れてい
な い こ と を 示 し ま す。 無 効 な 命 令 例 外 を 使 用 し て い る 場 合 は、 MicroBlaze
のパ ラ メ ー タ ーを
C_OPCODE_0x0_ILLEGAL=1 に設定 し て、 こ れ ら の命令を捕捉す る こ と がで き ます。
MicroBlaze プ ロ セ ッ サ リ フ ァ レ ン ス ガ イ ド
UG984 (v2015.1) 2015 年 4 月 15 日
UG984 (v2015.3)
(v2015.2) 2015 年 96 月 30
24 日
japan.xilinx.com
154
第 5 章 : MicroBlaze 命令セ ッ ト アーキテ ク チ ャ
addi Arithmetic Add Immediate
0
addi
rD、 rA、 IMM 即値加算
addic
rD、 rA、 IMM
addik
rD、 rA、 IMM 即値加算お よ びキ ャ リ ー保持
addikc
rD、 rA、 IMM
0
1
K C 0
0
キ ャ リ ー付 き 即値加算
キ ャ リ ー付 き 即値加算お よ びキ ャ リ ー保持
rD
6
rA
IMM
1
1
1
6
3
1
説明
レ ジ ス タ rA の内容お よ び IMM フ ィ ール ド の値 (32 ビ ッ ト に符号拡張 さ れた も の) の合計が レ ジ ス タ rD
に配置 さ れ ます。 命令の ビ ッ ト 3 (図では K) は、 ニーモニ ッ ク addik の場合 1 にセ ッ ト さ れ ます。 命令の
ビ ッ ト 4 (図では C) は、 ニーモニ ッ ク addic の場合 1 にセ ッ ト さ れ ます。 ニーモニ ッ ク addikc の場合は両
方の ビ ッ ト が 1 にセ ッ ト さ れ ます。
addi 命令で ビ ッ ト 3 がセ ッ ト さ れてい る と (addik、 addikc)、 命令実行の結果にかかわ ら ず、 キ ャ リ ー フ ラ
グは前の値を維持 し ます。 ビ ッ ト 3 が ク リ アにな る と (addi、 addic)、 キ ャ リ ー フ ラ グは命令の実行の影響
を受け ます。
命令の ビ ッ ト 4 が 1 にセ ッ ト さ れてい る 場合 (addic、 addikc)、 キ ャ リ ー フ ラ グの内容 (MSR[C]) が、 命令
実行に影響 し ま す。 ビ ッ ト 4 が ク リ アにな る と (addi、 addik)、 キ ャ リ ー フ ラ グの内容は命令実行には影
響 し ません (標準加算の場合)。
擬似 コ ー ド
if C = 0 then
(rD)   (rA) + sext(IMM)
else
(rD)   (rA) + sext(IMM) + MSR[C]
if K = 0 then
MSR[C]   CarryOut
変更 さ れる レ ジ ス タ
•
rD
•
MSR[C]
レ イテンシ
1 サイ クル
注記
命令オペ コ ー ド の C ビ ッ ト は、 MSB のキ ャ リ ー ビ ッ ト と は同 じ ではあ り ません。
デフ ォ ル ト で、 タ イ プ B 命令は 16 ビ ッ ト の IMM フ ィ ール ド 値を取 り 込み、 それを 32 ビ ッ ト に符号拡張
し て、 即値オぺ ラ ン ド と し て使用 し ます。 こ の動作は、 IMM 命令を使用 し て タ イ プ B 命令を先行 さ せ る
こ と で、 上書 き す る こ と がで き ます。 32 ビ ッ ト の即値の使用に関 し ては、 196 ページの 「imm」 を参照 し
て く だ さ い。
MicroBlaze プ ロ セ ッ サ リ フ ァ レ ン ス ガ イ ド
UG984 (v2015.1) 2015 年 4 月 15 日
UG984 (v2015.3)
(v2015.2) 2015 年 96 月 30
24 日
japan.xilinx.com
155
第 5 章 : MicroBlaze 命令セ ッ ト アーキテ ク チ ャ
and
Logical AND
and
1
0
0
rD、 rA、 rB
0 0 1
0
rD
6
rA
1
1
rB
1
6
0
2
1
0
0
0
0
0
0
0
0
0
0
3
1
説明
レ ジ ス タ rA の内容が レ ジ ス タ rB の内容 と 一緒に AND さ れていて、 その結果が レ ジ ス タ rD に配置 さ れ
ます。
擬似 コ ー ド
(rD)  (rA)   (rB)
変更 さ れる レ ジ ス タ
•
rD
レ イテンシ
1 サイ クル
MicroBlaze プ ロ セ ッ サ リ フ ァ レ ン ス ガ イ ド
UG984 (v2015.1) 2015 年 4 月 15 日
UG984 (v2015.3)
(v2015.2) 2015 年 96 月 30
24 日
japan.xilinx.com
156
第 5 章 : MicroBlaze 命令セ ッ ト アーキテ ク チ ャ
andi Logial AND with Immediate
andi
1
0
1
rD、 rA、 IMM
0 0 1
0
rD
6
rA
1
1
IMM
1
6
3
1
説明
レ ジ ス タ rA の内容が IMM フ ィ ール ド の値 (32 ビ ッ ト に符号拡張 さ れた も の) と 一緒に AND さ れていて、
その結果が レ ジ ス タ rD に配置 さ れ ます。
擬似 コ ー ド
(rD)   (rA)   sext(IMM)
変更 さ れる レ ジ ス タ
•
rD
レ イテンシ
1 サイ クル
注記
デフ ォ ル ト で、 タ イ プ B 命令は 16 ビ ッ ト の IMM フ ィ ール ド 値を取 り 込み、 それを 32 ビ ッ ト に符号拡張
し て、 即値オぺ ラ ン ド と し て使用 し ます。 こ の動作は、 IMM 命令を使用 し て タ イ プ B 命令を先行 さ せ る
こ と で、 上書 き す る こ と がで き ます。 32 ビ ッ ト の即値の使用に関 し ては、 196 ページの 「imm」 を参照 し
て く だ さ い。
MicroBlaze プ ロ セ ッ サ リ フ ァ レ ン ス ガ イ ド
UG984 (v2015.1) 2015 年 4 月 15 日
UG984 (v2015.3)
(v2015.2) 2015 年 96 月 30
24 日
japan.xilinx.com
157
第 5 章 : MicroBlaze 命令セ ッ ト アーキテ ク チ ャ
and
n
1
Logical AND NOT
andn
0
0
rD、 rA、 rB
0 1 1
0
rD
6
rA
1
1
rB
1
6
0
2
1
0
0
0
0
0
0
0
0
0
0
3
1
説明
レ ジ ス タ rA の内容が レ ジ ス タ rB の内容の論理補数 と 一緒に AND さ れていて、 その結果が レ ジ ス タ rD
に配置 さ れ ます。
擬似 コ ー ド
(rD)   (rA)   (rB)
変更 さ れる レ ジ ス タ
•
rD
レ イテンシ
1 サイ クル
MicroBlaze プ ロ セ ッ サ リ フ ァ レ ン ス ガ イ ド
UG984 (v2015.1) 2015 年 4 月 15 日
UG984 (v2015.3)
(v2015.2) 2015 年 96 月 30
24 日
japan.xilinx.com
158
第 5 章 : MicroBlaze 命令セ ッ ト アーキテ ク チ ャ
andni
Logical AND NOT with Immediate
andni
1
0
1
rD、 rA、 IMM
0 1 1
0
rD
6
rA
1
1
IMM
1
6
3
1
説明
IMM フ ィ ール ド は 32 ビ ッ ト に符号拡張 さ れてい ます。 レ ジ ス タ rA の内容が拡張 さ れた IMM フ ィ ー
ル ド の論理補数 と 一緒に AND さ れていて、 その結果が レ ジ ス タ rD に配置 さ れ ます。
擬似 コ ー ド
(rD)   (rA)   (sext(IMM))
変更 さ れる レ ジ ス タ
•
rD
レ イテンシ
1 サイ クル
注記
デフ ォ ル ト で、 タ イ プ B 命令は 16 ビ ッ ト の IMM フ ィ ール ド 値を取 り 込み、 それを 32 ビ ッ ト に符号拡
張 し て、 即値オぺ ラ ン ド と し て使用 し ます。 こ の動作は、 IMM 命令を使用 し て タ イ プ B 命令を先行 さ
せ る こ と で、 上書 き す る こ と がで き ます。 32 ビ ッ ト の即値の使用に関 し ては、 196 ページの 「imm」 を
参照 し て く だ さ い。
MicroBlaze プ ロ セ ッ サ リ フ ァ レ ン ス ガ イ ド
UG984 (v2015.1) 2015 年 4 月 15 日
UG984 (v2015.3)
(v2015.2) 2015 年 96 月 30
24 日
japan.xilinx.com
159
第 5 章 : MicroBlaze 命令セ ッ ト アーキテ ク チ ャ
beq
1
Branch if Equal
beq
rA、 rB
等 し い場合は分岐
beqd
rA、 rB
遅延 を 含め て等 し い場合は分岐
0
0
1
1
1
0
D
0
0
0
0
6
rA
1
1
rB
1
6
0
2
1
0
0
0 0 0 0 0 0 0 0
3
1
説明
rA が 0 な ら ば、 rB のオ フ セ ッ ト 値にあ る 命令に分岐 し ます。 分岐先は、 ア ド レ ス PC + rB にあ る 命令に
な り ます。
ニーモニ ッ ク beqd は D ビ ッ ト を セ ッ ト し ます。 D ビ ッ ト は、 分岐遅延ス ロ ッ ト があ る かないか を判断 し
ます。 D ビ ッ ト がセ ッ ト さ れてい る 場合、 遅延ス ロ ッ ト があ り 、 分岐の後に続 く 命令 (すなわち分岐遅延
ス ロ ッ ト にあ る 命令) は、 分岐先の命令を実行す る 前に実行完了す る こ と がで き ます。 D ビ ッ ト がセ ッ ト
さ れていない場合は、 遅延ス ロ ッ ト はな く 、 分岐後に実行 さ れ る 命令は、 分岐先の命令にな り ます。
擬似 コ ー ド
If rA = 0 then
PC   PC + rB
else
PC   PC + 4
if D = 1 then
allow following instruction to complete execution
変更 さ れる レ ジ ス タ
•
PC
レ イテンシ
•
1 サ イ ク ル (分岐 し ていない場合)
•
2 サ イ ク ル (分岐 し ていて D ビ ッ ト がセ ッ ト さ れてい る 場合)
•
3 サ イ ク ル (分岐 し ていて D ビ ッ ト がセ ッ ト さ れていない場合)
注記
遅延 ス ロ ッ ト は、 IMM、 分岐、 ま たはブ レ ー ク の命令で使用す る こ と はで き ま せん。 割 り 込みお よ び外
部ハー ド ウ ェ ア ブ レー ク は、 遅延ス ロ ッ ト の分岐が完了す る ま で先送 り さ れ ます。
MicroBlaze プ ロ セ ッ サ リ フ ァ レ ン ス ガ イ ド
UG984 (v2015.1) 2015 年 4 月 15 日
UG984 (v2015.3)
(v2015.2) 2015 年 96 月 30
24 日
japan.xilinx.com
160
第 5 章 : MicroBlaze 命令セ ッ ト アーキテ ク チ ャ
beqi Branch Immediate if Equal
1
beqi
rA、 IMM
等 し い場合は即値分岐
beqid
rA、 IMM
遅延 を 含め て等 し い場合は即値分岐
0
1
1
1
1
0
D
0
0
0
0
6
rA
1
1
IMM
1
6
3
1
説明
rA が 0 な ら ば、 IMM のオ フ セ ッ ト 値にあ る 命令に分岐 し ます。 分岐先は、 ア ド レ ス PC + IMM にあ る 命
令にな り ます。
ニーモニ ッ ク beqid は D ビ ッ ト を セ ッ ト し ます。 D ビ ッ ト は、 分岐遅延ス ロ ッ ト があ る かないか を判断 し
ます。 D ビ ッ ト がセ ッ ト さ れてい る 場合、 遅延ス ロ ッ ト があ り 、 分岐の後に続 く 命令 (すなわち分岐遅延
ス ロ ッ ト にあ る 命令) は、 分岐先の命令を実行す る 前に実行完了す る こ と がで き ます。 D ビ ッ ト がセ ッ ト
さ れていない場合は、 遅延ス ロ ッ ト はな く 、 分岐後に実行 さ れ る 命令は、 分岐先の命令にな り ます。
擬似 コ ー ド
If rA = 0 then
PC   PC + sext(IMM)
else
PC   PC + 4
if D = 1 then
allow following instruction to complete execution
変更 さ れる レ ジ ス タ
•
PC
レ イテンシ
•
1 サ イ ク ル (分岐 し ていない、 ま たは正 し く 分岐予測が行われ る 場合)
•
2 サ イ ク ル (分岐 し ていて D ビ ッ ト がセ ッ ト さ れてい る 場合)
•
3 サ イ ク ル (分岐 し ていて D ビ ッ ト がセ ッ ト さ れていない場合、 ま たは分岐予測が間違っ てい る 場合)
注記
デフ ォ ル ト で、 タ イ プ B 命令は 16 ビ ッ ト の IMM フ ィ ール ド 値を取 り 込み、 それを 32 ビ ッ ト に符号拡張
し て、 即値オぺ ラ ン ド と し て使用 し ます。 こ の動作は、 IMM 命令を使用 し て タ イ プ B 命令を先行 さ せ る
こ と で、 上書 き す る こ と がで き ます。 32 ビ ッ ト の即値の使用に関 し ては、 196 ページの 「imm」 を参照 し
て く だ さ い。
遅延 ス ロ ッ ト は、 IMM、 分岐、 ま たはブ レ ー ク の命令で使用す る こ と はで き ま せん。 割 り 込みお よ び外
部ハー ド ウ ェ ア ブ レー ク は、 遅延ス ロ ッ ト の分岐が完了す る ま で先送 り さ れ ます。
MicroBlaze プ ロ セ ッ サ リ フ ァ レ ン ス ガ イ ド
UG984 (v2015.1) 2015 年 4 月 15 日
UG984 (v2015.3)
(v2015.2) 2015 年 96 月 30
24 日
japan.xilinx.com
161
第 5 章 : MicroBlaze 命令セ ッ ト アーキテ ク チ ャ
bge
1
Branch if Greater or Equal
bge
rA、 rB
その値以上の場合は分岐
bged
rA、 rB
遅延 を 含め て その値以上の場合は分岐
0
0
1
1
1
0
D
0
1
0
1
6
rA
1
1
rB
1
6
0
2
1
0
0
0 0 0 0 0 0 0 0
3
1
説明
rA が 0 以上な ら ば、 rB のオ フ セ ッ ト 値にあ る 命令に分岐 し ます。 分岐先は、 ア ド レ ス PC + rB にあ る 命
令にな り ます。
ニーモニ ッ ク bged は D ビ ッ ト を セ ッ ト し ます。 D ビ ッ ト は、 分岐遅延ス ロ ッ ト があ る かないか を判断 し
ます。 D ビ ッ ト がセ ッ ト さ れてい る 場合、 遅延ス ロ ッ ト があ り 、 分岐の後に続 く 命令 (すなわち分岐遅延
ス ロ ッ ト にあ る 命令) は、 分岐先の命令を実行す る 前に実行完了す る こ と がで き ます。 D ビ ッ ト がセ ッ ト
さ れていない場合は、 遅延ス ロ ッ ト はな く 、 分岐後に実行 さ れ る 命令は、 分岐先の命令にな り ます。
擬似 コ ー ド
If rA >= 0 then
PC   PC + rB
else
PC   PC + 4
if D = 1 then
allow following instruction to complete execution
変更 さ れる レ ジ ス タ
•
PC
レ イテンシ
•
1 サ イ ク ル (分岐 し ていない場合)
•
2 サ イ ク ル (分岐 し ていて D ビ ッ ト がセ ッ ト さ れてい る 場合)
•
3 サ イ ク ル (分岐 し ていて D ビ ッ ト がセ ッ ト さ れていない場合)
注記
遅延 ス ロ ッ ト は、 IMM、 分岐、 ま たはブ レ ー ク の命令で使用す る こ と はで き ま せん。 割 り 込みお よ び外
部ハー ド ウ ェ ア ブ レー ク は、 遅延ス ロ ッ ト の分岐が完了す る ま で先送 り さ れ ます。
MicroBlaze プ ロ セ ッ サ リ フ ァ レ ン ス ガ イ ド
UG984 (v2015.1) 2015 年 4 月 15 日
UG984
(v2015.2) 2015 年 96 月 30
(v2015.3)
24 日
japan.xilinx.com
162
第 5 章 : MicroBlaze 命令セ ッ ト アーキテ ク チ ャ
bgei
1
Branch Immediate if Greater or Equal
bgei
rA、 IMM
その値以上の場合は即値分岐
bgeid
rA、 IMM
遅延 を 含め て その値以上の場合は即値分岐
0
1
1
1
1
0
D
0
1
0
1
6
rA
1
1
IMM
1
6
3
1
説明
rA が 0 以上な ら ば、 IMM のオ フ セ ッ ト 値にあ る 命令に分岐 し ます。 分岐先は、 ア ド レ ス PC + IMM にあ
る 命令にな り ます。
ニーモニ ッ ク bgeid は D ビ ッ ト を セ ッ ト し ます。 D ビ ッ ト は、 分岐遅延ス ロ ッ ト があ る かないか を判断 し
ます。 D ビ ッ ト がセ ッ ト さ れてい る 場合、 遅延ス ロ ッ ト があ り 、 分岐の後に続 く 命令 (すなわち分岐遅延
ス ロ ッ ト にあ る 命令) は、 分岐先の命令を実行す る 前に実行完了す る こ と がで き ます。 D ビ ッ ト がセ ッ ト
さ れていない場合は、 遅延ス ロ ッ ト はな く 、 分岐後に実行 さ れ る 命令は、 分岐先の命令にな り ます。
擬似 コ ー ド
If rA >= 0 then
PC   PC + sext(IMM)
else
PC   PC + 4
if D = 1 then
allow following instruction to complete execution
変更 さ れる レ ジ ス タ
•
PC
レ イテンシ
•
1 サ イ ク ル (分岐 し ていない、 ま たは正 し く 分岐予測が行われ る 場合)
•
2 サ イ ク ル (分岐 し ていて D ビ ッ ト がセ ッ ト さ れてい る 場合)
•
3 サ イ ク ル (分岐 し ていて D ビ ッ ト がセ ッ ト さ れていない場合、 ま たは分岐予測が間違っ てい る 場合)
注記
デフ ォ ル ト で、 タ イ プ B 命令は 16 ビ ッ ト の IMM フ ィ ール ド 値を取 り 込み、 それを 32 ビ ッ ト に符号拡張
し て、 即値オぺ ラ ン ド と し て使用 し ます。 こ の動作は、 IMM 命令を使用 し て タ イ プ B 命令を先行 さ せ る
こ と で、 上書 き す る こ と がで き ます。 32 ビ ッ ト の即値の使用に関 し ては、 196 ページの 「imm」 を参照 し
て く だ さ い。
遅延 ス ロ ッ ト は、 IMM、 分岐、 ま たはブ レ ー ク の命令で使用す る こ と はで き ま せん。 割 り 込みお よ び外
部ハー ド ウ ェ ア ブ レー ク は、 遅延ス ロ ッ ト の分岐が完了す る ま で先送 り さ れ ます。
MicroBlaze プ ロ セ ッ サ リ フ ァ レ ン ス ガ イ ド
UG984 (v2015.1) 2015 年 4 月 15 日
UG984 (v2015.3)
(v2015.2) 2015 年 96 月 30
24 日
japan.xilinx.com
163
第 5 章 : MicroBlaze 命令セ ッ ト アーキテ ク チ ャ
bgt
1
Branch if Greater Than
bgt
rA、 rB
その値 よ り 大 き い場合は分岐
bgtd
rA、 rB
遅延 を 含め て その値 よ り 大 き い場合は
分岐
0
0
1
1
1
0
D
0
1
0
0
6
rA
1
1
rB
1
6
0
2
1
0
0
0 0 0 0 0 0 0 0
3
1
説明
rA が 0 よ り 大 き ければ、 rB のオ フ セ ッ ト 値にあ る 命令に分岐 し ます。 分岐先は、 ア ド レ ス PC + rB にあ
る 命令にな り ます。
ニーモニ ッ ク bgtd は D ビ ッ ト を セ ッ ト し ます。 D ビ ッ ト は、 分岐遅延ス ロ ッ ト があ る かないか を判断 し
ます。 D ビ ッ ト がセ ッ ト さ れてい る 場合、 遅延ス ロ ッ ト があ り 、 分岐の後に続 く 命令 (すなわち分岐遅延
ス ロ ッ ト にあ る 命令) は、 分岐先の命令を実行す る 前に実行完了す る こ と がで き ます。 D ビ ッ ト がセ ッ ト
さ れていない場合は、 遅延ス ロ ッ ト はな く 、 分岐後に実行 さ れ る 命令は、 分岐先の命令にな り ます。
擬似 コ ー ド
If rA > 0 then
PC   PC + rB
else
PC   PC + 4
if D = 1 then
allow following instruction to complete execution
変更 さ れる レ ジ ス タ
•
PC
レ イテンシ
•
1 サ イ ク ル (分岐 し ていない場合)
•
2 サ イ ク ル (分岐 し ていて D ビ ッ ト がセ ッ ト さ れてい る 場合)
•
3 サ イ ク ル (分岐 し ていて D ビ ッ ト がセ ッ ト さ れていない場合)
注記
遅延 ス ロ ッ ト は、 IMM、 分岐、 ま たはブ レ ー ク の命令で使用す る こ と はで き ま せん。 割 り 込みお よ び外
部ハー ド ウ ェ ア ブ レー ク は、 遅延ス ロ ッ ト の分岐が完了す る ま で先送 り さ れ ます。
MicroBlaze プ ロ セ ッ サ リ フ ァ レ ン ス ガ イ ド
UG984 (v2015.1) 2015 年 4 月 15 日
UG984 (v2015.3)
(v2015.2) 2015 年 96 月 30
24 日
japan.xilinx.com
164
第 5 章 : MicroBlaze 命令セ ッ ト アーキテ ク チ ャ
bgti
1
Branch Immediate if Greater Than
bgti
rA、 IMM
その値 よ り 大 き い場合は即値分岐
bgtid
rA、 IMM
遅延 を 含め て その値 よ り 大 き い場合は即値分岐
0
1
1
1
1
0
D
0
1
0
0
6
rA
1
1
IMM
1
6
3
1
説明
rA が 0 よ り 大 き ければ、 IMM のオ フ セ ッ ト 値にあ る 命令に分岐 し ます。 分岐先は、 ア ド レ ス PC + IMM
にあ る 命令にな り ます。
ニーモニ ッ ク bgtid は D ビ ッ ト を セ ッ ト し ます。 D ビ ッ ト は、 分岐遅延ス ロ ッ ト があ る かないか を判断 し
ます。 D ビ ッ ト がセ ッ ト さ れてい る 場合、 遅延ス ロ ッ ト があ り 、 分岐の後に続 く 命令 (すなわち分岐遅延
ス ロ ッ ト にあ る 命令) は、 分岐先の命令を実行す る 前に実行完了す る こ と がで き ます。 D ビ ッ ト がセ ッ ト
さ れていない場合は、 遅延ス ロ ッ ト はな く 、 分岐後に実行 さ れ る 命令は、 分岐先の命令にな り ます。
擬似 コ ー ド
If rA > 0 then
PC   PC + sext(IMM)
else
PC   PC + 4
if D = 1 then
allow following instruction to complete execution
変更 さ れる レ ジ ス タ
•
PC
レ イテンシ
•
1 サ イ ク ル (分岐 し ていない、 ま たはエ ラ ーな く 分岐予測が行われ る 場合)
•
2 サ イ ク ル (分岐 し ていて D ビ ッ ト がセ ッ ト さ れてい る 場合)
•
3 サ イ ク ル (分岐 し ていて D ビ ッ ト がセ ッ ト さ れていない場合、 ま たは分岐予測が間違っ てい る 場合)
注記
デフ ォ ル ト で、 タ イ プ B 命令は 16 ビ ッ ト の IMM フ ィ ール ド 値を取 り 込み、 それを 32 ビ ッ ト に符号拡張
し て、 即値オぺ ラ ン ド と し て使用 し ます。 こ の動作は、 IMM 命令を使用 し て タ イ プ B 命令を先行 さ せ る
こ と で、 上書 き す る こ と がで き ます。 32 ビ ッ ト の即値の使用に関 し ては、 196 ページの 「imm」 を参照 し
て く だ さ い。
遅延 ス ロ ッ ト は、 IMM、 分岐、 ま たはブ レ ー ク の命令で使用す る こ と はで き ま せん。 割 り 込みお よ び外
部ハー ド ウ ェ ア ブ レー ク は、 遅延ス ロ ッ ト の分岐が完了す る ま で先送 り さ れ ます。
MicroBlaze プ ロ セ ッ サ リ フ ァ レ ン ス ガ イ ド
UG984 (v2015.1) 2015 年 4 月 15 日
UG984 (v2015.3)
(v2015.2) 2015 年 96 月 30
24 日
japan.xilinx.com
165
第 5 章 : MicroBlaze 命令セ ッ ト アーキテ ク チ ャ
ble
Branch if Less or Equal
1
ble
rA、 rB
その値以下の場合は分岐
bled
rA、 rB
遅延 を 含め て その値以下の場合は分岐
0
0
1
1
1
0
D
0
0
1
1
6
rA
1
1
rB
1
6
0
2
1
0
0
0 0 0 0 0 0 0 0
3
1
説明
rA が 0 以下な ら ば、 rB のオ フ セ ッ ト 値にあ る 命令に分岐 し ます。 分岐先は、 ア ド レ ス PC + rB にあ る 命
令にな り ます。
ニーモニ ッ ク bled は D ビ ッ ト を セ ッ ト し ます。 D ビ ッ ト は、 分岐遅延ス ロ ッ ト があ る かないか を判断 し
ます。 D ビ ッ ト がセ ッ ト さ れてい る 場合、 遅延ス ロ ッ ト があ り 、 分岐の後に続 く 命令 (すなわち分岐遅延
ス ロ ッ ト にあ る 命令) は、 分岐先の命令を実行す る 前に実行完了す る こ と がで き ます。 D ビ ッ ト がセ ッ ト
さ れていない場合は、 遅延ス ロ ッ ト はな く 、 分岐後に実行 さ れ る 命令は、 分岐先の命令にな り ます。
擬似 コ ー ド
If rA <= 0 then
PC   PC + rB
else
PC   PC + 4
if D = 1 then
allow following instruction to complete execution
変更 さ れる レ ジ ス タ
•
PC
レ イテンシ
•
1 サ イ ク ル (分岐 し ていない場合)
•
2 サ イ ク ル (分岐 し ていて D ビ ッ ト がセ ッ ト さ れてい る 場合)
•
3 サ イ ク ル (分岐 し ていて D ビ ッ ト がセ ッ ト さ れていない場合)
注記
遅延 ス ロ ッ ト は、 IMM、 分岐、 ま たはブ レ ー ク の命令で使用す る こ と はで き ま せん。 割 り 込みお よ び外
部ハー ド ウ ェ ア ブ レー ク は、 遅延ス ロ ッ ト の分岐が完了す る ま で先送 り さ れ ます。
MicroBlaze プ ロ セ ッ サ リ フ ァ レ ン ス ガ イ ド
UG984 (v2015.1) 2015 年 4 月 15 日
UG984 (v2015.3)
(v2015.2) 2015 年 96 月 30
24 日
japan.xilinx.com
166
第 5 章 : MicroBlaze 命令セ ッ ト アーキテ ク チ ャ
blei
1
Branch Immediate if Less or Equal
blei
rA、 IMM
その値以下の場合は即値分岐
bleid
rA、 IMM
遅延 を 含め て その値以下の場合は即値分岐
0
1
1
1
1
0
D
0
0
1
1
6
rA
1
1
IMM
1
6
3
1
説明
rA が 0 以下な ら ば、 IMM のオ フ セ ッ ト 値にあ る 命令に分岐 し ます。 分岐先は、 ア ド レ ス PC + IMM にあ
る 命令にな り ます。
ニーモニ ッ ク bleid は D ビ ッ ト を セ ッ ト し ます。 D ビ ッ ト は、 分岐遅延ス ロ ッ ト があ る かないか を判断 し
ます。 D ビ ッ ト がセ ッ ト さ れてい る 場合、 遅延ス ロ ッ ト があ り 、 分岐の後に続 く 命令 (すなわち分岐遅延
ス ロ ッ ト にあ る 命令) は、 分岐先の命令を実行す る 前に実行完了す る こ と がで き ます。 D ビ ッ ト がセ ッ ト
さ れていない場合は、 遅延ス ロ ッ ト はな く 、 分岐後に実行 さ れ る 命令は、 分岐先の命令にな り ます。
擬似 コ ー ド
If rA <= 0 then
PC   PC + sext(IMM)
else
PC   PC + 4
if D = 1 then
allow following instruction to complete execution
変更 さ れる レ ジ ス タ
•
PC
レ イテンシ
•
1 サ イ ク ル (分岐 し ていない、 ま たはエ ラ ーな く 分岐予測が行われ る 場合)
•
2 サ イ ク ル (分岐 し ていて D ビ ッ ト がセ ッ ト さ れてい る 場合)
•
3 サ イ ク ル (分岐 し ていて D ビ ッ ト がセ ッ ト さ れていない場合、 ま たは分岐予測が間違っ てい る 場合)
注記
デフ ォ ル ト で、 タ イ プ B 命令は 16 ビ ッ ト の IMM フ ィ ール ド 値を取 り 込み、 それを 32 ビ ッ ト に符号拡張
し て、 即値オぺ ラ ン ド と し て使用 し ます。 こ の動作は、 IMM 命令を使用 し て タ イ プ B 命令を先行 さ せ る
こ と で、 上書 き す る こ と がで き ます。 32 ビ ッ ト の即値の使用に関 し ては、 196 ページの 「imm」 を参照 し
て く だ さ い。
遅延 ス ロ ッ ト は、 IMM、 分岐、 ま たはブ レ ー ク の命令で使用す る こ と はで き ま せん。 割 り 込みお よ び外
部ハー ド ウ ェ ア ブ レー ク は、 遅延ス ロ ッ ト の分岐が完了す る ま で先送 り さ れ ます。
MicroBlaze プ ロ セ ッ サ リ フ ァ レ ン ス ガ イ ド
UG984 (v2015.1) 2015 年 4 月 15 日
UG984
(v2015.2) 2015 年 96 月 30
(v2015.3)
24 日
japan.xilinx.com
167
第 5 章 : MicroBlaze 命令セ ッ ト アーキテ ク チ ャ
blt
Branch if Less Than
1
blt
rA、 rB
その値 よ り 小 さ い場合は分岐
bltd
rA、 rB
遅延 を 含め て その値未満の場合は分岐
0
0
1
1
1
0
D
0
0
1
0
6
rA
1
1
rB
1
6
0
2
1
0
0
0 0 0 0 0 0 0 0
3
1
説明
rA が 0 よ り 小 さ ければ、 rB のオ フ セ ッ ト 値にあ る 命令に分岐 し ます。 分岐先は、 ア ド レ ス PC + rB にあ
る 命令にな り ます。
ニーモニ ッ ク bltd は D ビ ッ ト を セ ッ ト し ます。 D ビ ッ ト は、 分岐遅延 ス ロ ッ ト があ る かないか を判断 し
ます。 D ビ ッ ト がセ ッ ト さ れてい る 場合、 遅延ス ロ ッ ト があ り 、 分岐の後に続 く 命令 (すなわち分岐遅延
ス ロ ッ ト にあ る 命令) は、 分岐先の命令を実行す る 前に実行完了す る こ と がで き ます。 D ビ ッ ト がセ ッ ト
さ れていない場合は、 遅延ス ロ ッ ト はな く 、 分岐後に実行 さ れ る 命令は、 分岐先の命令にな り ます。
擬似 コ ー ド
If rA < 0 then
PC   PC + rB
else
PC   PC + 4
if D = 1 then
allow following instruction to complete execution
変更 さ れる レ ジ ス タ
•
PC
レ イテンシ
•
1 サ イ ク ル (分岐 し ていない場合)
•
2 サ イ ク ル (分岐 し ていて D ビ ッ ト がセ ッ ト さ れてい る 場合)
•
3 サ イ ク ル (分岐 し ていて D ビ ッ ト がセ ッ ト さ れていない場合)
注記
遅延 ス ロ ッ ト は、 IMM、 分岐、 ま たはブ レ ー ク の命令で使用す る こ と はで き ま せん。 割 り 込みお よ び外
部ハー ド ウ ェ ア ブ レー ク は、 遅延ス ロ ッ ト の分岐が完了す る ま で先送 り さ れ ます。
MicroBlaze プ ロ セ ッ サ リ フ ァ レ ン ス ガ イ ド
UG984 (v2015.1) 2015 年 4 月 15 日
UG984 (v2015.3)
(v2015.2) 2015 年 96 月 30
24 日
japan.xilinx.com
168
第 5 章 : MicroBlaze 命令セ ッ ト アーキテ ク チ ャ
blti
1
Branch Immediate if Less Than
blti
rA、 IMM
その値 よ り 小 さ い場合は即値分岐
bltid
rA、 IMM
遅延 を 含め て その値未満の場合は即値分岐
0
1
1
1
1
0
D
0
0
1
0
6
rA
1
1
IMM
1
6
3
1
説明
rA が 0 よ り 小 さ ければ、 IMM のオ フ セ ッ ト 値にあ る 命令に分岐 し ます。 分岐先は、 ア ド レ ス PC + IMM
にあ る 命令にな り ます。
ニーモニ ッ ク bltid は D ビ ッ ト を セ ッ ト し ます。 D ビ ッ ト は、 分岐遅延ス ロ ッ ト があ る かないか を判断 し
ます。 D ビ ッ ト がセ ッ ト さ れてい る 場合、 遅延ス ロ ッ ト があ り 、 分岐の後に続 く 命令 (すなわち分岐遅延
ス ロ ッ ト にあ る 命令) は、 分岐先の命令を実行す る 前に実行完了す る こ と がで き ます。 D ビ ッ ト がセ ッ ト
さ れていない場合は、 遅延ス ロ ッ ト はな く 、 分岐後に実行 さ れ る 命令は、 分岐先の命令にな り ます。
擬似 コ ー ド
If rA < 0 then
PC   PC + sext(IMM)
else
PC   PC + 4
if D = 1 then
allow following instruction to complete execution
変更 さ れる レ ジ ス タ
•
PC
レ イテンシ
•
1 サ イ ク ル (分岐 し ていない、 ま たはエ ラ ーな く 分岐予測が行われ る 場合)
•
2 サ イ ク ル (分岐 し ていて D ビ ッ ト がセ ッ ト さ れてい る 場合)
•
3 サ イ ク ル (分岐 し ていて D ビ ッ ト がセ ッ ト さ れていない場合、 ま たは分岐予測が間違っ てい る 場合)
注記
デフ ォ ル ト で、 タ イ プ B 命令は 16 ビ ッ ト の IMM フ ィ ール ド 値を取 り 込み、 それを 32 ビ ッ ト に符号拡張
し て、 即値オぺ ラ ン ド と し て使用 し ます。 こ の動作は、 IMM 命令を使用 し て タ イ プ B 命令を先行 さ せ る
こ と で、 上書 き す る こ と がで き ます。 32 ビ ッ ト の即値の使用に関 し ては、 196 ページの 「imm」 を参照 し
て く だ さ い。
遅延 ス ロ ッ ト は、 IMM、 分岐、 ま たはブ レ ー ク の命令で使用す る こ と はで き ま せん。 割 り 込みお よ び外
部ハー ド ウ ェ ア ブ レー ク は、 遅延ス ロ ッ ト の分岐が完了す る ま で先送 り さ れ ます。
MicroBlaze プ ロ セ ッ サ リ フ ァ レ ン ス ガ イ ド
UG984 (v2015.1) 2015 年 4 月 15 日
UG984 (v2015.3)
(v2015.2) 2015 年 96 月 30
24 日
japan.xilinx.com
169
第 5 章 : MicroBlaze 命令セ ッ ト アーキテ ク チ ャ
bne
1
Branch if Not Equal
bne
rA、 rB
等 し く な い場合は分岐
bned
rA、 rB
遅延 を 含め て等 し く な い場合は分岐
0
0
1
1
1
0
D
0
0
0
1
6
rA
1
1
rB
1
6
0
2
1
0
0
0 0 0 0 0 0 0 0
3
1
説明
rA が 0 でないな ら ば、 rB のオ フ セ ッ ト 値にあ る 命令に分岐 し ます。 分岐先は、 ア ド レ ス PC + rB にあ る
命令にな り ます。
ニーモニ ッ ク bned は D ビ ッ ト を セ ッ ト し ます。 D ビ ッ ト は、 分岐遅延ス ロ ッ ト があ る かないか を判断 し
ます。 D ビ ッ ト がセ ッ ト さ れてい る 場合、 遅延ス ロ ッ ト があ り 、 分岐の後に続 く 命令 (すなわち分岐遅延
ス ロ ッ ト にあ る 命令) は、 分岐先の命令を実行す る 前に実行完了す る こ と がで き ます。 D ビ ッ ト がセ ッ ト
さ れていない場合は、 遅延ス ロ ッ ト はな く 、 分岐後に実行 さ れ る 命令は、 分岐先の命令にな り ます。
擬似 コ ー ド
If rA  0 then
PC   PC + rB
else
PC   PC + 4
if D = 1 then
allow following instruction to complete execution
変更 さ れる レ ジ ス タ
•
PC
レ イテンシ
•
1 サ イ ク ル (分岐 し ていない場合)
•
2 サ イ ク ル (分岐 し ていて D ビ ッ ト がセ ッ ト さ れてい る 場合)
•
3 サ イ ク ル (分岐 し ていて D ビ ッ ト がセ ッ ト さ れていない場合)
注記
遅延 ス ロ ッ ト は、 IMM、 分岐、 ま たはブ レ ー ク の命令で使用す る こ と はで き ま せん。 割 り 込みお よ び外
部ハー ド ウ ェ ア ブ レー ク は、 遅延ス ロ ッ ト の分岐が完了す る ま で先送 り さ れ ます。
MicroBlaze プ ロ セ ッ サ リ フ ァ レ ン ス ガ イ ド
UG984 (v2015.1) 2015 年 4 月 15 日
UG984 (v2015.3)
(v2015.2) 2015 年 96 月 30
24 日
japan.xilinx.com
170
第 5 章 : MicroBlaze 命令セ ッ ト アーキテ ク チ ャ
bnei Branch Immediate if Not Equal
1
bnei
rA、 IMM
等 し く な い場合は即値分岐
bneid
rA、 IMM
遅延 を 含め て等 し く な い場合は即値分岐
0
1
1
1
1
0
D
0
0
0
1
6
rA
1
1
IMM
1
6
3
1
説明
rA が 0 でないな ら ば、 IMM のオ フ セ ッ ト 値にあ る 命令に分岐 し ます。 分岐先は、 ア ド レ ス PC + IMM に
あ る 命令にな り ます。
ニーモニ ッ ク bneid は D ビ ッ ト を セ ッ ト し ます。 D ビ ッ ト は、 分岐遅延ス ロ ッ ト があ る かないか を判断 し
ます。 D ビ ッ ト がセ ッ ト さ れてい る 場合、 遅延ス ロ ッ ト があ り 、 分岐の後に続 く 命令 (すなわち分岐遅延
ス ロ ッ ト にあ る 命令) は、 分岐先の命令を実行す る 前に実行完了す る こ と がで き ます。 D ビ ッ ト がセ ッ ト
さ れていない場合は、 遅延ス ロ ッ ト はな く 、 分岐後に実行 さ れ る 命令は、 分岐先の命令にな り ます。
擬似 コ ー ド
If rA  0 then
PC   PC + sext(IMM)
else
PC   PC + 4
if D = 1 then
allow following instruction to complete execution
変更 さ れる レ ジ ス タ
•
PC
レ イテンシ
•
1 サ イ ク ル (分岐 し ていない、 ま たはエ ラ ーな く 分岐予測が行われ る 場合)
•
2 サ イ ク ル (分岐 し ていて D ビ ッ ト がセ ッ ト さ れてい る 場合)
•
3 サ イ ク ル (分岐 し ていて D ビ ッ ト がセ ッ ト さ れていない場合、 ま たは分岐予測が間違っ てい る 場合)
注記
デフ ォ ル ト で、 タ イ プ B 命令は 16 ビ ッ ト の IMM フ ィ ール ド 値を取 り 込み、 それを 32 ビ ッ ト に符号拡張
し て、 即値オぺ ラ ン ド と し て使用 し ます。 こ の動作は、 IMM 命令を使用 し て タ イ プ B 命令を先行 さ せ る
こ と で、 上書 き す る こ と がで き ます。 32 ビ ッ ト の即値の使用に関 し ては、 196 ページの 「imm」 を参照 し
て く だ さ い。
遅延 ス ロ ッ ト は、 IMM、 分岐、 ま たはブ レ ー ク の命令で使用す る こ と はで き ま せん。 割 り 込みお よ び外
部ハー ド ウ ェ ア ブ レー ク は、 遅延ス ロ ッ ト の分岐が完了す る ま で先送 り さ れ ます。
MicroBlaze プ ロ セ ッ サ リ フ ァ レ ン ス ガ イ ド
UG984 (v2015.1) 2015 年 4 月 15 日
UG984
(v2015.2) 2015 年 96 月 30
(v2015.3)
24 日
japan.xilinx.com
171
第 5 章 : MicroBlaze 命令セ ッ ト アーキテ ク チ ャ
br
Unconditional Branch
1
br
rB
分岐
bra
rB
絶対分岐
brd
rB
遅延付 き 分岐
brad
rB
遅延付 き 絶対分岐
brld
rD、 rB
遅延付 き 分岐 と リ ン ク
brald
rD、 rB
遅延付 き 絶対分岐 と リ ン ク
0
0
1
1
0
0
rD
6
D
A
L
0
0
1
1
rB
1
6
0
2
1
0
0
0
0
0
0
0
0
0
0
3
1
説明
rB で決定 さ れた ア ド レ ス にあ る 命令に分岐 し ます。
ニーモニ ッ ク の brld お よ び brald は L ビ ッ ト を セ ッ ト し ます。 L ビ ッ ト がセ ッ ト さ れ る と 、 リ ン ク が実行
さ れ ます。 PC の現在値は rD に格納 さ れ ます。
ニーモニ ッ ク の bra、 brad、 お よ び brald は A ビ ッ ト を セ ッ ト し ます。 A ビ ッ ト がセ ッ ト さ れ る と 、 絶対値
に分岐 し 、 タ ーゲ ッ ト は rB の値にな り ます。 そ う でない場合は、 こ れは相対分岐で、 タ ーゲ ッ ト は PC +
rB にな り ます。
ニーモニ ッ ク の brd、 brad、 brld、 お よ び brald は D ビ ッ ト を セ ッ ト し ます。 D ビ ッ ト は、 分岐遅延ス ロ ッ
ト があ る かないか を判断 し ます。 D ビ ッ ト がセ ッ ト さ れてい る 場合、 遅延ス ロ ッ ト があ り 、 分岐の後に続
く 命令 (すなわち分岐遅延 ス ロ ッ ト にあ る 命令) は、 分岐先の命令を実行す る 前に実行完了す る こ と がで
き ます。
D ビ ッ ト がセ ッ ト さ れていない場合は、 遅延ス ロ ッ ト はな く 、 分岐後に実行 さ れ る 命令は、 分岐先の命令
にな り ます。
擬似 コ ー ド
if L = 1 then
(rD)   PC
if A = 1 then
PC   (rB)
else
PC   PC + (rB)
if D = 1 then 
allow following instruction to complete execution
変更 さ れる レ ジ ス タ
•
rD
•
PC
レ イテンシ
•
2 サ イ ク ル (D ビ ッ ト がセ ッ ト さ れてい る 場合)
•
3 サ イ ク ル (D ビ ッ ト がセ ッ ト さ れていない場合)
MicroBlaze プ ロ セ ッ サ リ フ ァ レ ン ス ガ イ ド
UG984 (v2015.1) 2015 年 4 月 15 日
UG984 (v2015.3)
(v2015.2) 2015 年 96 月 30
24 日
japan.xilinx.com
172
第 5 章 : MicroBlaze 命令セ ッ ト アーキテ ク チ ャ
注記
命令 brl お よ び bral は使用で き ません。 遅延ス ロ ッ ト は、 IMM、 分岐、 ま たはブ レー ク の命令で使用す る
こ と はで き ません。 割 り 込みお よ び外部ハー ド ウ ェ ア ブ レー ク は、 遅延 ス ロ ッ ト の分岐が完了す る ま で
先送 り さ れ ます。
MicroBlaze プ ロ セ ッ サ リ フ ァ レ ン ス ガ イ ド
UG984 (v2015.1) 2015 年 4 月 15 日
UG984
(v2015.2) 2015 年 96 月 30
(v2015.3)
24 日
japan.xilinx.com
173
第 5 章 : MicroBlaze 命令セ ッ ト アーキテ ク チ ャ
bri
Unconditional Branch Immediate
1
bri
IMM
即値分岐
brai
IMM
絶対即値分岐
brid
IMM
遅延付 き 即値分岐
braid
IMM
遅延付 き 絶対即値分岐
brlid
rD、 IMM
遅延付 き 分岐 と 即値 リ ン ク
bralid
rD、 IMM
遅延付 き 絶対分岐 と 即値 リ ン ク
0
1
1
1
0
0
rD
6
D
1
1
A
L
0
0
IMM
1
6
3
1
説明
IMM (32 ビ ッ ト に符号拡張) で決定 さ れた ア ド レ ス にあ る 命令に分岐 し ます。
ニーモニ ッ ク の brlid お よ び bralid は L ビ ッ ト を セ ッ ト し ます。 L ビ ッ ト がセ ッ ト さ れ る と 、 リ ン ク が実
行 さ れます。 PC の現在値は rD に格納 さ れます。
ニーモニ ッ ク の brai、 braid 、 お よ び bralid は A ビ ッ ト を セ ッ ト し ま す。 A ビ ッ ト がセ ッ ト さ れ る と 、 絶
対値に分岐 し 、 タ ーゲ ッ ト は IMM の値にな り ます。 そ う でない場合は、 こ れは相対分岐で、 タ ーゲ ッ ト
は PC + IMM にな り ます。
ニーモ ニ ッ ク の brid、 braid、 brlid、 お よ び bralid は D ビ ッ ト を セ ッ ト し ま す。 D ビ ッ ト は、 分岐遅延 ス
ロ ッ ト があ る かないか を判断 し ます。 D ビ ッ ト がセ ッ ト さ れてい る 場合、 遅延ス ロ ッ ト があ り 、 分岐の後
に続 く 命令 (すなわち分岐遅延 ス ロ ッ ト にあ る 命令) は、 分岐先の命令を実行す る 前に実行完了す る こ と
がで き ます。 D ビ ッ ト がセ ッ ト さ れていない場合は、 遅延ス ロ ッ ト はな く 、 分岐後に実行 さ れ る 命令は、
分岐先の命令にな り ます。
特別な ケース と し て、MicroBlaze が MMU を使用す る よ う に設定 さ れていて (C_USE_MMU >= 1)、ユーザー
ベ ク タ ー例外 を 実行す る ため 「bralid rD, C_BASE_VECTORS+0x8」 を 使用 し て い る 場合、 マ シ ン ス
テー タ ス レ ジ ス タ ビ ッ ト のユーザー モー ド と 仮想モー ド が ク リ アにな り ます。
擬似 コ ー ド
if L = 1 then
(rD)   PC
if A = 1 then
PC   sext(IMM)
else
PC   PC + sext(IMM)
if D = 1 then
allow following instruction to complete execution
if D = 1 and A = 1 and L = 1 and IMM = C_BASE_VECTORS+0x8 then
MSR[UMS]   MSR[UM]
MSR[VMS]   MSR[VM]
MSR[UM]   0
MSR[VM]   0
MicroBlaze プ ロ セ ッ サ リ フ ァ レ ン ス ガ イ ド
UG984 (v2015.1) 2015 年 4 月 15 日
UG984
(v2015.2) 2015 年 96 月 30
(v2015.3)
24 日
japan.xilinx.com
174
第 5 章 : MicroBlaze 命令セ ッ ト アーキテ ク チ ャ
変更 さ れる レ ジ ス タ
•
rD
•
PC
•
MSR[UM]、 MSR[VM]
レ イテンシ
•
1 サ イ ク ル (正 し く 分岐予測が行われ る 場合)
•
2 サ イ ク ル (D ビ ッ ト がセ ッ ト さ れてい る 場合)
•
3 サ イ ク ル (D ビ ッ ト がセ ッ ト さ れていない場合、 ま たは分岐予測が間違っ てい る 場合)
注記
命令 brli お よ び brali は使用で き ません。
デフ ォ ル ト で、 タ イ プ B 命令は 16 ビ ッ ト の IMM フ ィ ール ド 値を取 り 込み、 それを 32 ビ ッ ト に符号拡張
し て、 即値オぺ ラ ン ド と し て使用 し ます。 こ の動作は、 IMM 命令を使用 し て タ イ プ B 命令を先行 さ せ る
こ と で、 上書 き す る こ と がで き ます。 32 ビ ッ ト の即値の使用に関 し ては、 196 ページの 「imm」 を参照 し
て く だ さ い。
遅延 ス ロ ッ ト は、 IMM、 分岐、 ま たはブ レ ー ク の命令で使用す る こ と はで き ま せん。 割 り 込みお よ び外
部ハー ド ウ ェ ア ブ レー ク は、 遅延ス ロ ッ ト の分岐が完了す る ま で先送 り さ れ ます。
MicroBlaze プ ロ セ ッ サ リ フ ァ レ ン ス ガ イ ド
UG984 (v2015.1) 2015 年 4 月 15 日
UG984
(v2015.2) 2015 年 96 月 30
(v2015.3)
24 日
japan.xilinx.com
175
第 5 章 : MicroBlaze 命令セ ッ ト アーキテ ク チ ャ
brk
Break
brk
1
0
rD、 rB
0
1
1
0
0
rD
6
0
1
1
0
11
0
rB
16
0
21
0
0
0
0
0
0
0
0
0
0
31
説明
rB のア ド レ ス値にあ る 命令に分岐お よ び リ ン ク し ます。 PC の現在値は rD に格納 さ れます。 MSR の BIP
フ ラ グがセ ッ ト さ れ、 予約ビ ッ ト が ク リ アにな り ます。
MicroBlaze が MMU を使用す る よ う に (C_USE_MMU >= 1) コ ン フ ィ ギ ュ レー ト さ れてい る 場合、 こ の命
令は特権命令です。 つま り 、 命令がユーザー モー ド (MSR[UM] = 1) で実行 さ れ る と 、 特権命令例外が発
生 し ます。
擬似 コ ー ド
if MSR[UM] = 1 then
ESR[EC]   00111
else
(rD)   PC
PC   (rB)
MSR[BIP]    
Reservation   
変更 さ れる レ ジ ス タ
•
rD
•
PC
•
MSR[BIP]
•
ESR[EC] (特権命令例外が生成 さ れ る 場合)
レ イテンシ
•
3 サイ クル
MicroBlaze プ ロ セ ッ サ リ フ ァ レ ン ス ガ イ ド
UG984 (v2015.1) 2015 年 4 月 15 日
UG984
(v2015.2) 2015 年 96 月 30
(v2015.3)
24 日
japan.xilinx.com
176
第 5 章 : MicroBlaze 命令セ ッ ト アーキテ ク チ ャ
brki Break Immediate
brki
1
0
1
rD、 IMM
1
1
0
0
rD
6
0
1
1
0
11
0
IMM
16
31
説明
IMM (32 ビ ッ ト に符号拡張) のア ド レ ス値にあ る 命令に分岐お よ び リ ン ク し ます。 PC の現在値は rD に格
納 さ れます。 MSR の BIP フ ラ グがセ ッ ト さ れ、 予約ビ ッ ト が ク リ アにな り ます。
MicroBlaze が MMU を使用す る よ う に設定 さ れてい る と (C_USE_MMU >= 1)、 こ の命令は特権命令ですが、
ソ フ ト ウ ェ ア ブ レ ー ク を 実 行 す る た め 「brki rD, C_BASE_VECTORS+0x8」 ま た は 「brki rD,
C_BASE_VECTORS+0x18」 が使用 さ れて い る と き は特殊ケー ス な ので、 こ の場合 を除 き ま す。 つ ま り 、
こ の特殊な ケース を除いて、 命令がユーザー モー ド ((MSR[UM] = 1) で実行 さ れ る と 、 特権命令例外が発
生 し ます。
特別な ケース と し て、 MicroBlaze が MMU を使用す る よ う に設定 さ れていて (C_USE_MMU >= 1)、 ソ フ ト
ウ ェ ア ブ レー ク を実行す る ため 「brki rD, C_BASE_VECTORS+0x8」 ま たは 「brki rD,
C_BASE_VECTORS+0x18」 を使用 し てい る 場合、 マシ ン ス テー タ ス レ ジ ス タ ビ ッ ト のユーザー モー ド
と 仮想モー ド が ク リ アにな り ます。
擬似 コ ー ド
if MSR[UM] and IMM   C_BASE_VECTORS+0x8 and IMM   C_BASE_VECTORS+0x18 then
ESR[EC]   00111
else
(rD)   PC
PC   sext(IMM)
MSR[BIP]    
Reservation    
if IMM = C_BASE_VECTORS+0x8 or IMM = C_BASE_VECTORS+0x18 then
MSR[UMS]   MSR[UM]MSR[UM]   0
MSR[VMS]   MSR[VM]MSR[VM]   0
変更 さ れる レ ジ ス タ
•
rD (例外が生成 さ れない場合。 例外が生成 さ れ る と こ の レ ジ ス タ は変更 さ れません)
•
PC
•
MSR[BIP]、 MSR[UM]、 MSR[VM]
•
ESR[EC] (特権命令例外が生成 さ れ る 場合)
レ イテンシ
•
3 サイ クル
注記
デフ ォ ル ト で、 タ イ プ B 命令は 16 ビ ッ ト の IMM フ ィ ール ド 値を取 り 込み、 それを 32 ビ ッ ト に符号拡張
し て、 即値オぺ ラ ン ド と し て使用 し ます。 こ の動作は、 IMM 命令を使用 し て タ イ プ B 命令を先行 さ せ る
こ と で、 上書 き す る こ と がで き ます。 32 ビ ッ ト の即値の使用に関 し ては、 196 ページの 「imm」 を参照 し
て く だ さ い。
特殊な ケース と し て、 IMM 命令の後に ソ フ ト ウ ェ ア ブ レー ク を許可す る C_BASE_VECTORS の値に関係
な く 、 C_USE_DEBUG が設定 さ れてい る と 、 IMM 命令は ソ フ ト ウ ェ ア ブ レー ク 「brki rD, 0x18」 を上
書 き し ません。
MicroBlaze プ ロ セ ッ サ リ フ ァ レ ン ス ガ イ ド
UG984 (v2015.1) 2015 年 4 月 15 日
UG984 (v2015.3)
(v2015.2) 2015 年 96 月 30
24 日
japan.xilinx.com
177
第 5 章 : MicroBlaze 命令セ ッ ト アーキテ ク チ ャ
bs
Barrel Shift
0
bsrl
rD、 rA、 rB
バ レ ル シ フ ト ( 右、 論理 )
bsra
rD、 rA、 rB
バ レ ル シ フ ト ( 右、 算術 )
bsll
rD、 rA、 rB
バ レ ル シ フ ト ( 左、 論理 )
1
0
0
0
1
0
rD
6
rA
1
1
rB
1
6
S
T
0
0
0
0
0
0
0
0
2
1
0
3
1
説明
レ ジ ス タ rB で指定 し た値分、 レ ジ ス タ rA の内容を シ フ ト し 、 レ ジ ス タ rD に結果を出力 し ます。
ニーモニ ッ ク bsll は S ビ ッ ト (サ イ ド ビ ッ ト ) を セ ッ ト し ます。 S ビ ッ ト がセ ッ ト さ れてい る 場合は、 バ
レ ル シ フ ト は左にシ フ ト し ます。 ニーモニ ッ ク の bsrl お よ び bsra は S ビ ッ ト を ク リ アに し 、 右にシ フ ト
し ます。
ニーモニ ッ ク bsra は T ビ ッ ト ( タ イ プ ビ ッ ト ) を セ ッ ト し ます。 T ビ ッ ト がセ ッ ト さ れてい る 場合、 バ レ
ル シ フ ト は算術型にな り ます。 ニーモニ ッ ク の bsrl お よ び bsll は T ビ ッ ト を ク リ アに し 、 シ フ ト は論理
型な り ます。
擬似 コ ー ド
if S = 1 then
(rD)   (rA)    (rB)[27:31]
else
if T = 1 then
if ((rB)[27:31])  0 then
(rD)[0:(rB)[27:31]-1]  (rA)[0]
(rD)[(rB)[27:31]:31]   (rA)    (rB)[27:31]
else
(rD)   (rA)
else
(rD)   (rA)    (rB)[27:31]
変更 さ れる レ ジ ス タ
•
rD
レ イテンシ
•
1 サ イ ク ル ( C_AREA_OPTIMIZED=0)
•
2 サ イ ク ル ( C_AREA_OPTIMIZED=1)
注記
こ れ ら の命令はオプ シ ョ ン です。 こ れ ら の命令 を 使用す る には、 バ レ ル シ フ ト 命令 を 使用す る よ う に
(C_USE_BARREL=1)、 MicroBlaze を コ ン フ ィ ギ ュ レー ト す る 必要があ り ます。
MicroBlaze プ ロ セ ッ サ リ フ ァ レ ン ス ガ イ ド
UG984 (v2015.1) 2015 年 4 月 15 日
UG984 (v2015.3)
(v2015.2) 2015 年 96 月 30
24 日
japan.xilinx.com
178
第 5 章 : MicroBlaze 命令セ ッ ト アーキテ ク チ ャ
bsi
Barrel Shift Immediate
0
bsrli
rD、 rA、 IMM バ レ ル シ フ ト ( 右、 論理即値 )
bsrai
rD、 rA、 IMM バ レ ル シ フ ト ( 右、 算術即値 )
bslli
rD、 rA、 IMM バ レ ル シ フ ト ( 左、 論理即値 )
1
1
0
0
1
0
rD
6
rA
0
1
1
0
1
6
0
0
0
S
2
1
T
0
0
0
0
IMM
2
7
3
1
説明
IMM で指定 し た値分、 レ ジ ス タ rA の内容を シ フ ト し 、 レ ジ ス タ rD に結果を出力 し ます。
ニーモニ ッ ク bsll は S ビ ッ ト (サ イ ド ビ ッ ト ) を セ ッ ト し ます。 S ビ ッ ト がセ ッ ト さ れてい る 場合は、 バ
レ ル シ フ ト は左にシ フ ト し ます。 ニーモニ ッ ク の bsrl お よ び bsra は S ビ ッ ト を ク リ アに し 、 右にシ フ ト
し ます。
ニーモニ ッ ク bsra は T ビ ッ ト ( タ イ プ ビ ッ ト ) を セ ッ ト し ます。 T ビ ッ ト がセ ッ ト さ れてい る 場合、 バ レ
ル シ フ ト は算術型にな り ます。 ニーモニ ッ ク の bsrl お よ び bsll は T ビ ッ ト を ク リ アに し 、 シ フ ト は論理
型な り ます。
擬似 コ ー ド
if S = 1 then
(rD)   (rA)    IMM
else
if T = 1 then
if IMM  0 then
(rD)[0:IMM-1]  (rA)[0]
(rD)[IMM:31]   (rA)    IMM
else
(rD)   (rA)
else
(rD)   (rA)    IMM
変更 さ れる レ ジ ス タ
•
rD
レ イテンシ
•
1 サ イ ク ル ( C_AREA_OPTIMIZED=0)
•
2 サ イ ク ル ( C_AREA_OPTIMIZED=1)
注記
こ れ ら は タ イ プ B の命令ではあ り ません。 先行す る IMM 命令か ら の影響はあ り ません。
こ れ ら の命令はオプ シ ョ ン です。 こ れ ら の命令 を 使用す る には、 バ レ ル シ フ ト 命令 を 使用す る よ う に
(C_USE_BARREL=1)、 MicroBlaze を コ ン フ ィ ギ ュ レー ト す る 必要があ り ます。
MicroBlaze プ ロ セ ッ サ リ フ ァ レ ン ス ガ イ ド
UG984 (v2015.1) 2015 年 4 月 15 日
UG984
(v2015.2) 2015 年 96 月 30
(v2015.3)
24 日
japan.xilinx.com
179
第 5 章 : MicroBlaze 命令セ ッ ト アーキテ ク チ ャ
clz
Count Leading Zeros
clz
1
0
rD、 rA
0
1 0 0
0
rA で前ゼ ロ を カ ウ ン ト
rD
6
rA
1
1
0
0
1
6
0 0 0 0 0 0 1 1 1 0 0 0 0 0
2
1
3
1
説明
こ の命令は、 レ ジ ス タ rA にあ る 前ゼ ロ を最下位ビ ッ ト か ら カ ウ ン ト し ます。 0 か ら 32 ま でのカ ウ ン ト 値
は レ ジ ス タ rD に格納 さ れます。
rA が 0 の と き rD の結果値は 32 で、 rA が 0xFFFFFFFF の と き 結果値は 0 にな り ます。
擬似 コ ー ド
n 0
while (rA)[n] = 0
n n + 1
(rD)   n
変更 さ れる レ ジ ス タ
•
rD
レ イテンシ
•
1 サイ クル
注記
こ の命令は C_USE_PCMP_INSTR を 1 に設定 し てい る 場合のみ使用可能です。
MicroBlaze プ ロ セ ッ サ リ フ ァ レ ン ス ガ イ ド
UG984 (v2015.1) 2015 年 4 月 15 日
UG984 (v2015.3)
(v2015.2) 2015 年 96 月 30
24 日
japan.xilinx.com
180
第 5 章 : MicroBlaze 命令セ ッ ト アーキテ ク チ ャ
cmp Integer Compare
0
cmp
rD、 rA、 rB
rB を rA と 比較 (符号付 き )
cmpu
rD、 rA、 rB
rB を rA と 比較 (符号な し )
0
0
1 0 1
0
rD
6
rA
1
1
rB
1
6
0
2
1
0
0
0
0
0
0
0
0
U
1
3
1
説明
レ ジ ス タ rA の内容が レ ジ ス タ rB の内容か ら 差 し 引かれ、 その結果が レ ジ ス タ rD に配置 さ れ ます。
rD の MSB ビ ッ ト は、 rA と rB の真の関係を示すため調節 さ れ ます。 U ビ ッ ト がセ ッ ト さ れてい る 場合、
rA お よ び rB は符号な し の値 と みな さ れます。 U ビ ッ ト が ク リ アの場合、 rA お よ び rB は符号付 き の値 と
みな さ れます。
擬似 コ ー ド
(rD)   (rB) + (rA) + 1
(rD)(MSB)   (rA) > (rB)
変更 さ れる レ ジ ス タ
•
rD
レ イテンシ
•
1 サイ クル
MicroBlaze プ ロ セ ッ サ リ フ ァ レ ン ス ガ イ ド
UG984 (v2015.1) 2015 年 4 月 15 日
UG984 (v2015.3)
(v2015.2) 2015 年 96 月 30
24 日
japan.xilinx.com
181
第 5 章 : MicroBlaze 命令セ ッ ト アーキテ ク チ ャ
fadd Floating Point Arithmetic Add
fadd
0
1
0
rD、 rA、 rB
1 1 0
0
加算
rD
6
rA
11
rB
16
0
0
0
0
0
0
0
0
0
21
0
0
31
説明
レ ジ ス タ rA お よ び rB の浮動小数点数の和は、 レ ジ ス タ rD に配置 さ れます。
擬似 コ ー ド
if isDnz(rA) or isDnz(rB) then
(rD)  0xFFC00000
FSR[DO]  1
ESR[EC]  00110
else if isSigNaN(rA) or isSigNaN(rB)or
(isPosInfinite(rA) and isNegInfinite(rB)) or
(isNegInfinite(rA) and isPosInfinite(rB))) then
(rD)  0xFFC00000
FSR[IO]  1
ESR[EC]  00110
else if isQuietNaN(rA) or isQuietNaN(rB) then
(rD)  0xFFC00000
else if isDnz((rA)+(rB)) then
(rD)  signZero((rA)+(rB))
FSR[UF]  1
ESR[EC]  00110
else if isNaN((rA)+(rB)) then
(rD)  signInfinite((rA)+(rB))
FSR[OF]  1
ESR[EC]  00110
else
(rD)   (rA) + (rB)
変更 さ れる レ ジ ス タ
•
rD (FP 例外が生成 さ れない場合。 例外が生成 さ れ る と こ の レ ジ ス タ は変更 さ れません)
•
ESR[EC] (FP 例外が生成 さ れ る 場合)
•
FSR[IO,UF,OF,DO]
レ イテンシ
•
4 サ イ ク ル ( C_AREA_OPTIMIZED=0)
•
6 サ イ ク ル ( C_AREA_OPTIMIZED=1)
注記
こ の命令は、 MicroBlaze のパ ラ メ ー タ ー C_USE_FPU が 0 よ り 大 き い場合のみ使用可能です。
MicroBlaze プ ロ セ ッ サ リ フ ァ レ ン ス ガ イ ド
UG984 (v2015.1) 2015 年 4 月 15 日
UG984 (v2015.3)
(v2015.2) 2015 年 96 月 30
24 日
japan.xilinx.com
182
第 5 章 : MicroBlaze 命令セ ッ ト アーキテ ク チ ャ
frsub
Reverse Floating Point Arithmetic Subtraction
frsub
0
1
0
rD、 rA、 rB
1 1 0
0
逆減算
rD
6
rA
rB
11
16
0
0
0
1
0
0
0
0
0
0
21
0
31
説明
レ ジ ス タ rA の浮動小数点値が レ ジ ス タ rB の浮動小数点値か ら 差 し 引かれ、 その結果が レ ジ ス タ rD に
配置 さ れ ます。
擬似 コ ー ド
if isDnz(rA) or isDnz(rB) then
(rD)  0xFFC00000
FSR[DO]  1
ESR[EC]  00110
else if (isSigNaN(rA) or isSigNaN(rB) or
(isPosInfinite(rA) and isPosInfinite(rB)) or
(isNegInfinite(rA) and isNegInfinite(rB))) then
(rD)  0xFFC00000
FSR[IO]  1
ESR[EC]  00110
else if isQuietNaN(rA) or isQuietNaN(rB) then
(rD)  0xFFC00000
else if isDnz((rB)-(rA)) then
(rD)  signZero((rB)-(rA))
FSR[UF]  1
ESR[EC]  00110
else if isNaN((rB)-(rA)) then
(rD)  signInfinite((rB)-(rA))
FSR[OF]  1
ESR[EC]  00110
else
(rD)   (rB) - (rA)
変更 さ れる レ ジ ス タ
•
rD (FP 例外が生成 さ れない場合。 例外が生成 さ れ る と こ の レ ジ ス タ は変更 さ れません)
•
ESR[EC] (FP 例外が生成 さ れ る 場合)
•
FSR[IO,UF,OF,DO]
レ イテンシ
•
4 サ イ ク ル ( C_AREA_OPTIMIZED=0)
•
6 サ イ ク ル ( C_AREA_OPTIMIZED=1)
注記
こ の命令は、 MicroBlaze のパ ラ メ ー タ ー C_USE_FPU が 0 よ り 大 き い場合のみ使用可能です。
MicroBlaze プ ロ セ ッ サ リ フ ァ レ ン ス ガ イ ド
UG984 (v2015.1) 2015 年 4 月 15 日
UG984 (v2015.3)
(v2015.2) 2015 年 96 月 30
24 日
japan.xilinx.com
183
第 5 章 : MicroBlaze 命令セ ッ ト アーキテ ク チ ャ
fmul Floating Point Arithmetic Multiplication
fmul
0
1
0
rD、 rA、 rB
1 1 0
0
乗算
rD
6
rA
11
rB
16
0
0
1
0
0
0
0
0
0
21
0
0
31
説明
レ ジ ス タ rA の浮動小数点値 と レ ジ ス タ rB の浮動小数点値 と を掛け、 その結果が レ ジ ス タ rD に配置 さ れ
ます。
擬似 コ ー ド
if isDnz(rA) or isDnz(rB) then
(rD)  0xFFC00000
FSR[DO]  1
ESR[EC]  00110
else
if isSigNaN(rA) or isSigNaN(rB) or (isZero(rA) and isInfinite(rB)) or
(isZero(rB) and isInfinite(rA)) then
(rD)  0xFFC00000
FSR[IO]  1
ESR[EC]  00110
else if isQuietNaN(rA) or isQuietNaN(rB) then
(rD)  0xFFC00000
else if isDnz((rB)*(rA)) then
(rD)  signZero((rA)*(rB))
FSR[UF]  1
ESR[EC]  00110
else if isNaN((rB)*(rA)) then
(rD)  signInfinite((rB)*(rA))
FSR[OF]  1
ESR[EC]  00110
else
(rD)   (rB) * (rA)
変更 さ れる レ ジ ス タ
•
rD (FP 例外が生成 さ れない場合。 例外が生成 さ れ る と こ の レ ジ ス タ は変更 さ れません)
•
ESR[EC] (FP 例外が生成 さ れ る 場合)
•
FSR[IO,UF,OF,DO]
レ イテンシ
•
4 サ イ ク ル ( C_AREA_OPTIMIZED=0)
•
6 サ イ ク ル ( C_AREA_OPTIMIZED=1)
注記
こ の命令は、 MicroBlaze のパ ラ メ ー タ ー C_USE_FPU が 0 よ り 大 き い場合のみ使用可能です。
MicroBlaze プ ロ セ ッ サ リ フ ァ レ ン ス ガ イ ド
UG984 (v2015.1) 2015 年 4 月 15 日
UG984 (v2015.3)
(v2015.2) 2015 年 96 月 30
24 日
japan.xilinx.com
184
第 5 章 : MicroBlaze 命令セ ッ ト アーキテ ク チ ャ
fdiv
Floating Point Arithmetic Division
fdiv
0
1
0
rD、 rA、 rB
1 1 0
0
除算
rD
6
rA
11
rB
16
0
0
1
1
0
0
0
0
0
21
0
0
31
説明
レ ジ ス タ rB の浮動小数点値を レ ジ ス タ rA の浮動小数点値で割 り 、 その結果が レ ジ ス タ rD に配置 さ れま
す。
擬似 コ ー ド
if isDnz(rA) or isDnz(rB) then
(rD)  0xFFC00000
FSR[DO]  1
ESR[EC]  00110
else
if isSigNaN(rA) or isSigNaN(rB) or (isZero(rA) and isZero(rB)) or 
(isInfinite(rA) and isInfinite(rB)) then
(rD)  0xFFC00000
FSR[IO]   
ESR[EC]  00110
else if isQuietNaN(rA) or isQuietNaN(rB) then
(rD)  0xFFC00000
else if isZero(rA) and not isInfinite(rB) then
(rD)  signInfinite((rB)/(rA))
FSR[DZ]  1
ESR[EC]  00110
else if isDnz((rB) / (rA)) then
(rD)  signZero((rB) / (rA))
FSR[UF]  1
ESR[EC]  00110
else if isNaN((rB)/(rA)) then
(rD)  signInfinite((rB) / (rA))
FSR[OF]  1
ESR[EC]  00110
else
(rD)   (rB) / (rA)
変更 さ れる レ ジ ス タ
•
rD (FP 例外が生成 さ れない場合。 例外が生成 さ れ る と こ の レ ジ ス タ は変更 さ れません)
•
ESR[EC] (FP 例外が生成 さ れ る 場合)
•
FSR[IO,UF,OF,DO,DZ]
レ イテンシ
•
28 サ イ ク ル (C_AREA_OPTIMIZED=0)、 30 サ イ ク ル (C_AREA_OPTIMIZED=1)
注記
こ の命令は、 MicroBlaze のパ ラ メ ー タ ー C_USE_FPU が 0 よ り 大 き い場合のみ使用可能です。
MicroBlaze プ ロ セ ッ サ リ フ ァ レ ン ス ガ イ ド
UG984 (v2015.1) 2015 年 4 月 15 日
UG984 (v2015.3)
(v2015.2) 2015 年 96 月 30
24 日
japan.xilinx.com
185
第 5 章 : MicroBlaze 命令セ ッ ト アーキテ ク チ ャ
fcm
p
0
Floating Point Number Comparison
fcmp.un
rD、 rA、 rB
浮動小数点数の比較 (順不同)
fcmp.lt
rD、 rA、 rB
浮動小数点数の比較 (小な り )
fcmp.eq
rD、 rA、 rB
浮動小数点数の比較 (相等)
fcmp.le
rD、 rA、 rB
浮動小数点数の比較 (以下)
fcmp.gt
rD、 rA、 rB
浮動小数点数の比較 (大な り )
fcmp.ne
rD、 rA、 rB
浮動小数点数の比較 (不一致)
fcmp.ge
rD、 rA、 rB
浮動小数点数の比較 (以上)
1
0
1 1 0
0
rD
6
rA
rB
11
16
0
1
21
0
0
OpSel
25
0
28
0
0
0
31
説明
レ ジ ス タ rB の浮動小数点値を レ ジ ス タ rA の浮動小数点値 と 比較 し 、 その結果が レ ジ ス タ rD に配置 さ れ
ます。 命令 コ ー ド の OpSel フ ィ ール ド は、 実行 さ れ る 比較の タ イ プ を決定 し ます。
擬似 コ ー ド
if isDnz(rA) or isDnz(rB) then
(rD)  0
FSR[DO]  1
ESR[EC]  00110
else
{read out behavior from 表 5-2}
変更 さ れる レ ジ ス タ
•
rD (FP 例外が生成 さ れない場合。 例外が生成 さ れ る と こ の レ ジ ス タ は変更 さ れません)
•
ESR[EC] (FP 例外が生成 さ れ る 場合)
•
FSR[IO,DO]
レ イテンシ
•
1 サ イ ク ル ( C_AREA_OPTIMIZED=0)
•
3 サ イ ク ル ( C_AREA_OPTIMIZED=1)
注記
こ れたの命令は、 MicroBlaze のパ ラ メ ー タ ー C_USE_FPU が 0 よ り 大 き い場合のみ使用可能です。
187 ページの表 5-2には、 浮動小数点の比較演算が リ ス ト さ れてい ます。
MicroBlaze プ ロ セ ッ サ リ フ ァ レ ン ス ガ イ ド
UG984 (v2015.1) 2015 年 4 月 15 日
UG984 (v2015.3)
(v2015.2) 2015 年 96 月 30
24 日
japan.xilinx.com
186
第 5 章 : MicroBlaze 命令セ ッ ト アーキテ ク チ ャ
表 5‐2 : 浮動小数点比較演算
比較 タ イ プ
説明
オペ ラ ン ド 関係
OpSel
(rB) > (rA)
(rB) < (rA)
(rB) = (rA)
isSigNaN(rA) または isSigNaN(rB)
isQuietNaN(rA) または isQuietNaN(rB)
順不同
000
(rD) 0
(rD) 0
(rD) 0
(rD) 1
FSR[IO] 
ESR[EC]  00110
(rD) 1
小な り
001
(rD) 0
(rD) 1
(rD) 0
(rD) 0
FSR[IO] 
ESR[EC]  00110
(rD) 0
FSR[IO] 
ESR[EC]  00110
相等
010
(rD) 0
(rD) 0
(rD) 1
(rD) 0
FSR[IO] 
ESR[EC]  00110
(rD) 0
以下
011
(rD) 0
(rD) 1
(rD) 1
(rD) 0
FSR[IO] 
ESR[EC]  00110
(rD) 0
FSR[IO] 
ESR[EC]  00110
大な り
100
(rD) 1
(rD) 0
(rD) 0
(rD) 0
FSR[IO] 
ESR[EC]  00110
(rD) 0
FSR[IO] 
ESR[EC]  00110
不一致
101
(rD) 1
(rD) 1
(rD) 0
(rD) 1
FSR[IO] 
ESR[EC]  00110
(rD) 1
以上
110
(rD) 1
(rD) 0
(rD) 1
(rD) 0
FSR[IO] 
ESR[EC]  00110
(rD) 0
FSR[IO] 
ESR[EC]  00110
MicroBlaze プ ロ セ ッ サ リ フ ァ レ ン ス ガ イ ド
UG984 (v2015.1) 2015 年 4 月 15 日
UG984 (v2015.3)
(v2015.2) 2015 年 96 月 30
24 日
japan.xilinx.com
187
第 5 章 : MicroBlaze 命令セ ッ ト アーキテ ク チ ャ
flt
Floating Point Convert Integer to Float
flt
0
1
rD、 rA
0
1 1
0
0
rD
6
rA
11
0
16
0
1
0
1
0
0
0
21
0
0
0
0
31
説明
レ ジ ス タ rA の符号付 き 整数を浮動小数点に変換 し 、その結果を レ ジ ス タ rD に配置 し ます。こ れは 32 ビ ッ
ト の丸め符号付 き 変換で、 32 ビ ッ ト の浮動小数点値を出力 し ます。
擬似 コ ー ド
(rD)  float ((rA))
変更 さ れる レ ジ ス タ
•
rD
レ イテンシ
•
4 サ イ ク ル ( C_AREA_OPTIMIZED=0)
•
6 サ イ ク ル ( C_AREA_OPTIMIZED=1)
注記
こ の命令は、 MicroBlaze のパ ラ メ ー タ ー C_USE_FPU が 2 (拡張) 場合のみ使用可能です。
MicroBlaze プ ロ セ ッ サ リ フ ァ レ ン ス ガ イ ド
UG984 (v2015.1) 2015 年 4 月 15 日
UG984 (v2015.3)
(v2015.2) 2015 年 96 月 30
24 日
japan.xilinx.com
188
第 5 章 : MicroBlaze 命令セ ッ ト アーキテ ク チ ャ
fint
Floating Point Convert Float to Integer
fint
0
1
rD、 rA
0
1
1
0
0
rD
6
rA
11
0
16
0
1
1
0
0
0
0
21
0
0
0
0
31
説明
レ ジ ス タ rA の浮動小数点数を符号付 き 整数に変換 し 、 その結果を レ ジ ス タ rD に配置 し ます。 こ れは 32
ビ ッ ト の符号付 き 変換で、 32 ビ ッ ト の整数値を出力 し ます。
擬似 コ ー ド
if isDnz(rA) then
(rD)  0xFFC00000
FSR[DO]  1
ESR[EC]  00110
else if isNaN(rA) then
(rD)  0xFFC00000
FSR[IO]  1
ESR[EC]  00110
else if isInf(rA) or (rA) < -231 or (rA) > 231 - 1 then
(rD)  0xFFC00000
FSR[IO]  1
ESR[EC]  00110
else
(rD)  int ((rA))
変更 さ れる レ ジ ス タ
•
rD (FP 例外が生成 さ れない場合。 例外が生成 さ れ る と こ の レ ジ ス タ は変更 さ れません)
•
ESR[EC] (FP 例外が生成 さ れ る 場合)
•
FSR[IO,DO]
レ イテンシ
•
5 サ イ ク ル ( C_AREA_OPTIMIZED=0)
•
7 サ イ ク ル ( C_AREA_OPTIMIZED=1)
注記
こ の命令は、 MicroBlaze のパ ラ メ ー タ ー C_USE_FPU が 2 (拡張) 場合のみ使用可能です。
MicroBlaze プ ロ セ ッ サ リ フ ァ レ ン ス ガ イ ド
UG984 (v2015.1) 2015 年 4 月 15 日
UG984 (v2015.3)
(v2015.2) 2015 年 96 月 30
24 日
japan.xilinx.com
189
第 5 章 : MicroBlaze 命令セ ッ ト アーキテ ク チ ャ
fsqrt Floating Point Arithmetic Square Root
fsqrt
0
1
0
rD、 rA
1 1 0
0
平方根
rD
6
rA
11
0
16
0
1
1
1
0
0
0
21
0
0
0
0
31
説明
rA の値で浮動小数点の平方根計算を実行 し 、 結果を rD に配置 し ます。
擬似 コ ー ド
if isDnz(rA) then
(rD)  0xFFC00000
FSR[DO]  1
ESR[EC]  00110
else if isSigNaN(rA) then
(rD)  0xFFC00000
FSR[IO]  1
ESR[EC]  00110
else if isQuietNaN(rA) then
(rD)  0xFFC00000
else if (rA) < 0 then
(rD)  0xFFC00000
FSR[IO]  1
ESR[EC]  00110
else if (rA) = -0 then
(rD)  -0
else
(rD)  sqrt ((rA))
変更 さ れる レ ジ ス タ
•
rD (FP 例外が生成 さ れない場合。 例外が生成 さ れ る と こ の レ ジ ス タ は変更 さ れません)
•
ESR[EC] (FP 例外が生成 さ れ る 場合)
•
FSR[IO,DO]
レ イテンシ
•
27 サ イ ク ル ( C_AREA_OPTIMIZED=0)
•
29 サ イ ク ル ( C_AREA_OPTIMIZED=1)
注記
こ の命令は、 MicroBlaze のパ ラ メ ー タ ー C_USE_FPU が 2 (拡張) 場合のみ使用可能です。
MicroBlaze プ ロ セ ッ サ リ フ ァ レ ン ス ガ イ ド
UG984 (v2015.1) 2015 年 4 月 15 日
UG984 (v2015.3)
(v2015.2) 2015 年 96 月 30
24 日
japan.xilinx.com
190
第 5 章 : MicroBlaze 命令セ ッ ト アーキテ ク チ ャ
get
get from stream interface
0
tneaget
rD、 FSLx
リ ン ク x か ら デー タ を取得
t = テ ス ト のみ
n = ノ ンブ ロ ッ キング
e = 制御ビ ッ ト がセ ッ ト さ れてい る 場合は
例外
a=アト ミ ック
tnecaget
rD、 FSLx
リ ン ク x か ら 制御を取得
t = テ ス ト のみ
n = ノ ンブ ロ ッ キング
e = 制御ビ ッ ト がセ ッ ト さ れていない場合
は例外
a=アト ミ ック
1
1
0
0 1 1
rD
6
0
0
0
0
0
11
0
n
16
c
t
a
e
0
0
0
0
0
0
FSLx
28
31
説明
MicroBlaze は リ ン ク x イ ン タ ー フ ェ イ ス か ら 読み出 し を 実行 し 、 レ ジ ス タ rD に結果 を 配置 し ま す。
C_FSL_LINKS に よ り 設定 さ れてい る リ ン ク 数が FSLx 以下の場合、 リ ン ク 0 が使用 さ れ ます。
get 命令には 32 個のバ リ エーシ ョ ンがあ り ます。
ブ ロ ッ キ ン グ バージ ョ ン (n ビ ッ ト が 0 の と き ) は、 イ ン タ ー フ ェ イ ス か ら のデー タ が有効に な る ま で
MicroBlaze を ス ト ール し ま す。 ノ ン ブ ロ ッ キ ン グ バージ ョ ン は、 MicroBlaze を ス ト ール し 、 デー タ が有
効であればキ ャ リ ーを 0 に、 デー タ が無効であればキ ャ リ ーを 1 にセ ッ ト し ます。 ア ク セ ス が無効な場合
は、 デス テ ィ ネーシ ョ ン レ ジ ス タ の内容は未定義にな り ます。
すべてのデー タ get 命令 (c ビ ッ ト が 0 の と き ) は、 イ ン タ ーフ ェ イ ス か ら の制御ビ ッ ト が 0 にな る も の と
し ます。 そ う でない場合は、 命令は MSR[FSL] を 1 にセ ッ ト し ます。 すべての制御 get 命令 (c ビ ッ ト が 1
の と き ) は、 イ ン タ ー フ ェ イ ス か ら の制御 ビ ッ ト が 1 に な る も の と し ま す。 そ う で ない場合は、 命令は
MSR[FSL] を 1 にセ ッ ト し ます。
例外バージ ョ ン (e ビ ッ ト が 1 の と き ) は、 制御ビ ッ ト が一致 し ない場合に例外を生成 し ます。 こ の場合、
ESR が、 例外の原因に設定 さ れてい る EC と 、 リ ン ク イ ンデ ッ ク ス に設定 さ れてい る ESS でア ッ プデー
ト さ れ ま す。 タ ーゲ ッ ト レ ジ ス タ rD は、 例外が生成 さ れ る と ア ッ プデー ト さ れず、 代わ り にデー タ が
EDR に格納 さ れ ます。
テ ス ト バージ ョ ン (t ビ ッ ト が 1 の と き ) は、 リ ン ク への読み出 し 信号がアサー ト さ れていない場合を除
き 、 標準ケース と し て処理 さ れ ます。
ア ト ミ ッ ク バージ ョ ン (a ビ ッ ト が 1 の と き ) は、 割 り 込みで き ま せん。 つ ま り 、 ア ト ミ ッ ク 命令のシー
ケ ン ス は、 プ ロ グ ラ ム フ ロ ーを割 り 込む こ と な く 、 グループに ま と め る こ と がで き ます。 ただ し 、 それ
で も 例外は発生す る 可能性があ り ます。
MicroBlaze が MMU を 使用す る よ う に コ ン フ ィ ギ ュ レ ー ト さ れ て い て (C_USE_MMU >= 1)、 明示的 に
C_MMU_PRIVILEGED_INSTR が 1 に設定 さ れていない場合は、 こ れ ら の命令は特権にな り ます。 つま り 、
命令がユーザー モー ド (MSR[UM]=1) で実行 さ れ る と 、 特権命令例外が発生 し ます。
MicroBlaze プ ロ セ ッ サ リ フ ァ レ ン ス ガ イ ド
UG984 (v2015.1) 2015 年 4 月 15 日
UG984 (v2015.3)
(v2015.2) 2015 年 96 月 30
24 日
japan.xilinx.com
191
第 5 章 : MicroBlaze 命令セ ッ ト アーキテ ク チ ャ
擬似 コ ー ド
if MSR[UM] = 1 then
ESR[EC]   00111
else
x   FSLx
if x >= C_FSL_LINKS then
x  0
(rD)   Sx_AXIS_TDATA
if (n = 1) then
MSR[Carry]   Sx_AXIS_TVALID
if Sx_AXIS_TLAST  c and Sx_AXIS_TVALID then
MSR[FSL]   1
if (e = 1) then
ESR[EC]   00000
ESR[ESS]   instruction bits [28:31]
  Sx_AXIS_TDATA
EDR
変更 さ れる レ ジ ス タ
•
rD (例外が生成 さ れない場合。 例外が生成 さ れ る と こ の レ ジ ス タ は変更 さ れません)
•
MSR[FSL]
•
MSR[Carry]
•
ESR[EC] (ス ト リ ーム例外ま たは特権命令例外が生成 さ れ る 場合)
•
ESR[ESS] (ス ト リ ーム例外が生成 さ れ る 場合)
•
EDR (ス ト リ ーム例外が生成 さ れ る 場合)
レ イテンシ
•
1 サ イ ク ル ( C_AREA_OPTIMIZED=0)
•
2 サ イ ク ル ( C_AREA_OPTIMIZED=1)
こ の命令のブ ロ ッ キ ン グ バージ ョ ンは、 命令が完了で き る ま で MicroBlaze のパ イ プ ラ イ ン を ス ト ール
さ せ ます。 C_USE_EXTENDED_FSL_INSTR が 1 に設定 さ れていて、 命令がア ト ミ ッ ク でない場合に、
割 り 込みが行われ ます。
注記
アセ ンブ リ 言語で FSLx イ ン タ ーフ ェ イ ス を参照す る には、 rfsl0、 rfsl1、 ... rfsl15 を使用 し て く だ さ い。
割 り 込みが実行 さ れな く な っ て し ま う ので、C_USE_EXTENDED_FSL_INSTR が 1 に設定 さ れてい る と
き に、 こ の命令のブ ロ ッ キ ン グ バージ ョ ン を遅延ス ロ ッ ト に配置 し ないで く だ さ い。
ノ ン ブ ロ ッ キ ン グ バージ ョ ン の場合は、 イ ンデ ッ ク ス 変数をデ ク リ メ ン ト す る のに rsubc 命令を使用
で き ます。
C_FSL_EXCEPTION が 1 でない限 り 、 e ビ ッ ト に効力はあ り ません。
こ れたの命令は、 MicroBlaze のパ ラ メ ー タ ー C_FSL_LINKS が 0 よ り 大 き い場合のみ使用可能です。
拡張命令 (例外、 テ ス ト 、 ア ト ミ ッ ク バージ ョ ン) は、 MicroBlaze のパ ラ メ ー タ ー
C_USE_EXTENDED_FSL_INSTR が 1 に設定 さ れてい る 場合にのみ使用可能です。
パフ ォ ーマ ン ス上の理由か ら ど う し て も こ の命令を ユーザー モー ド で実行 し なければな ら ない場合を
除 き 、 こ の命令を ユーザー モー ド で実行 し ない よ う に し て く だ さ い。 リ ン ク の誤用を防 ぐ ためのハー
ド ウ ェ ア保護がすべて削除 さ れて し ま い ます。
MicroBlaze プ ロ セ ッ サ リ フ ァ レ ン ス ガ イ ド
UG984 (v2015.1) 2015 年 4 月 15 日
UG984
(v2015.2) 2015 年 96 月 30
(v2015.3)
24 日
japan.xilinx.com
192
第 5 章 : MicroBlaze 命令セ ッ ト アーキテ ク チ ャ
getd get from stream interface dynamic
0
tneagetd
rD、 rB
リ ン ク rB[28:31] か ら デー タ を取得
t = テ ス ト のみ
n = ノ ンブ ロ ッ キング
e = 制御ビ ッ ト がセ ッ ト さ れてい る 場合は
例外
a=アト ミ ック
tnecagetd
rD、 rB
リ ン ク rB[28:31] か ら 制御を取得
t = テ ス ト のみ
n = ノ ンブ ロ ッ キング
e = 制御ビ ッ ト がセ ッ ト さ れていない場合
は例外
a=アト ミ ック
1
0
0
0 1 1
rD
6
0
11
0
0
0
0
rB
16
0
21
n
c
t
a
e
0
0
0
0
0
31
説明
MicroBlaze は、 rB の最下位か ら 4 つの ビ ッ ト で定義 さ れた イ ン タ ーフ ェ イ ス か ら 読み出 し を実行 し 、 レ
ジ ス タ rD を結果に配置 し ます。 C_FSL_LINKS に よ り 設定 さ れてい る リ ン ク 数が、 rB の最下位か ら 4 つ
の ビ ッ ト 以下の場合、 リ ン ク 0 が使用 さ れ ます。
getd 命令には 32 個のバ リ エーシ ョ ン があ り ます。
ブ ロ ッ キ ン グ バージ ョ ン (n ビ ッ ト が 0 の と き ) は、 イ ン タ ー フ ェ イ ス か ら のデー タ が有効に な る ま で
MicroBlaze を ス ト ール し ま す。 ノ ン ブ ロ ッ キ ン グ バージ ョ ン は、 MicroBlaze を ス ト ール し 、 デー タ が有
効であればキ ャ リ ーを 0 に、 デー タ が無効であればキ ャ リ ーを 1 にセ ッ ト し ます。 ア ク セ ス が無効な場合
は、 デス テ ィ ネーシ ョ ン レ ジ ス タ の内容は未定義にな り ます。
すべてのデー タ get 命令 (c ビ ッ ト が 0 の と き ) は、 イ ン タ ーフ ェ イ ス か ら の制御ビ ッ ト が 0 にな る も の と
し ます。 そ う でない場合は、 命令は MSR[FSL] を 1 にセ ッ ト し ます。 すべての制御 get 命令 (c ビ ッ ト が 1
の と き ) は、 イ ン タ ー フ ェ イ ス か ら の制御 ビ ッ ト が 1 に な る も の と し ま す。 そ う で ない場合は、 命令は
MSR[FSL] を 1 にセ ッ ト し ます。
例外バージ ョ ン (e ビ ッ ト が 1 の と き ) は、 制御ビ ッ ト が一致 し ない場合に例外を生成 し ます。 こ の場合、
ESR が、 例外の原因に設定 さ れてい る EC と 、 リ ン ク イ ンデ ッ ク ス に設定 さ れてい る ESS でア ッ プデー
ト さ れ ま す。 タ ーゲ ッ ト レ ジ ス タ rD は、 例外が生成 さ れ る と ア ッ プデー ト さ れず、 代わ り にデー タ が
EDR に格納 さ れ ます。
テ ス ト バージ ョ ン (t ビ ッ ト が 1 の と き ) は、 リ ン ク への読み出 し 信号がアサー ト さ れていない場合を除
き 、 標準ケース と し て処理 さ れ ます。
ア ト ミ ッ ク バージ ョ ン (a ビ ッ ト が 1 の と き ) は、 割 り 込みで き ま せん。 つ ま り 、 ア ト ミ ッ ク 命令のシー
ケ ン ス は、 プ ロ グ ラ ム フ ロ ーを割 り 込む こ と な く 、 グループに ま と め る こ と がで き ます。 ただ し 、 それ
で も 例外は発生す る 可能性があ り ます。
MicroBlaze が MMU を 使用す る よ う に コ ン フ ィ ギ ュ レ ー ト さ れ て い て (C_USE_MMU >= 1)、 明示的 に
C_MMU_PRIVILEGED_INSTR が 1 に設定 さ れていない場合は、 こ れ ら の命令は特権にな り ます。 つま り 、
命令がユーザー モー ド (MSR[UM]=1) で実行 さ れ る と 、 特権命令例外が発生 し ます。
MicroBlaze プ ロ セ ッ サ リ フ ァ レ ン ス ガ イ ド
UG984 (v2015.1) 2015 年 4 月 15 日
UG984 (v2015.3)
(v2015.2) 2015 年 96 月 30
24 日
japan.xilinx.com
193
第 5 章 : MicroBlaze 命令セ ッ ト アーキテ ク チ ャ
擬似 コ ー ド
if MSR[UM] = 1 then
ESR[EC]   00111
else
x   rB[28:31]
if x >= C_FSL_LINKS then
x  0
(rD)   Sx_AXIS_TDATA
if (n = 1) then
MSR[Carry]   Sx_AXIS_TVALID
if Sx_AXIS_TLAST  c and Sx_AXIS_TVALID then
MSR[FSL]   1
if (e = 1) then
ESR[EC]   00000
ESR[ESS]   rB[28:31]
  Sx_AXIS_TDATA
EDR
変更 さ れる レ ジ ス タ
•
rD (例外が生成 さ れない場合。 例外が生成 さ れ る と こ の レ ジ ス タ は変更 さ れません)
•
MSR[FSL]
•
MSR[Carry]
•
ESR[EC] (ス ト リ ーム例外ま たは特権命令例外が生成 さ れ る 場合)
•
ESR[ESS] (ス ト リ ーム例外が生成 さ れ る 場合)
•
EDR (ス ト リ ーム例外が生成 さ れ る 場合)
レ イテンシ
•
1 サ イ ク ル ( C_AREA_OPTIMIZED=0)
•
2 サ イ ク ル ( C_AREA_OPTIMIZED=1)
こ の命令のブ ロ ッ キ ン グ バージ ョ ンは、 命令が完了で き る ま で MicroBlaze のパ イ プ ラ イ ン を ス ト ール さ
せます。 命令がア ト ミ ッ ク でなければ割 り 込みは実行 さ れます。 ア ト ミ ッ ク だ と 割 り 込みは実行 さ れませ
ん。
注記
割 り 込みが実行 さ れな く な っ て し ま う ので、 こ の命令のブ ロ ッ キ ン グ バージ ョ ンは、 遅延 ス ロ ッ ト に配
置 し ないで く だ さ い。
ノ ン ブ ロ ッ キ ン グ バージ ョ ン の場合は、 イ ンデ ッ ク ス変数をデ ク リ メ ン ト す る のに rsubc 命令を使用で き
ます。
C_FSL_EXCEPTION が 1 でない限 り 、 e ビ ッ ト に効力はあ り ません。
MicroBlaze パ ラ メ ー タ ー C_FSL_LINKS が 0 よ り 大 き く 、 パ ラ メ ー タ ー C_USE_EXTENDED_FSL_INSTR
が 1 に設定 さ れてい る 場合にのみ、 こ れ ら の命令は使用可能です。
パ フ ォ ーマ ン ス 上の理由か ら ど う し て も こ の命令を ユーザー モー ド で実行 し な ければな ら ない場合を除
き 、 こ の命令を ユーザー モー ド で実行 し ない よ う に し て く だ さ い。 リ ン ク の誤用を防 ぐ ためのハー ド ウ ェ
ア保護がすべて削除 さ れて し ま い ます。
MicroBlaze プ ロ セ ッ サ リ フ ァ レ ン ス ガ イ ド
UG984 (v2015.1) 2015 年 4 月 15 日
UG984 (v2015.3)
(v2015.2) 2015 年 96 月 30
24 日
japan.xilinx.com
194
第 5 章 : MicroBlaze 命令セ ッ ト アーキテ ク チ ャ
idiv
0
Integer Divide
idiv
rD、 rA、 rB
rB を rA で割 る (符号付 き )
idivu
rD、 rA、 rB
rB を rA で割 る (符号な し )
1
0
0 1 0
0
rD
6
rA
1
1
rB
1
6
0
0
0
0
0
0
0
0
0
2
1
U
0
3
1
説明
レ ジ ス タ rB の内容を レ ジ ス タ rA の内容で割 り 、 その結果が レ ジ ス タ rD に配置 さ れます。
U ビ ッ ト がセ ッ ト さ れてい る 場合、 rA お よ び rB は符号な し の値 と みな さ れ ます。 U ビ ッ ト が ク リ アの場
合、 rA お よ び rB は符号付 き の値 と みな さ れ ます。
rA の値が 0 (ゼ ロ に よ る 除算) の場合、 例外が生成 さ れなければ、 MSR の DZO ビ ッ ト がセ ッ ト さ れ、 rD
の値は 0 にな り ます。
U ビ ッ ト が ク リ アで、 rA の値が -1 で、 rB の値が -2147483648 (除算オーバーフ ロ ー ) の場合、 例外が生成
さ れなければ、 MSR の DZO ビ ッ ト がセ ッ ト さ れ、 rD の値は -2147483648 にな り ます。
擬似 コ ー ド
if (rA) = 0 then
(rD)
<- 0
MSR[DZO] <- 1
ESR[EC] <- 00101
ESR[DEC] <- 0
else if U = 0 and (rA) = -1 and (rB) = -2147483648 then
(rD)
<- -2147483648
MSR[DZO] <- 1
ESR[EC] <- 00101
ESR[DEC] <- 1
else
(rD)   (rB) / (rA)
変更 さ れる レ ジ ス タ
•
rD (除算例外が生成 さ れない場合。 例外が生成 さ れ る と こ の レ ジ ス タ は変更 さ れません)
•
MSR[DZO] (ゼ ロ に よ る 除算ま たは除算オーバーフ ロ ーが発生 し た場合)
•
ESR[EC] (ゼ ロ に よ る 除算ま たは除算オーバーフ ロ ーが発生 し た場合)
レ イテンシ
•
1 サ イ ク ル ((rA) = 0 の場合)、 そ う でない場合は 32 サ イ ク ル (C_AREA_OPTIMIZED=0)
•
1 サ イ ク ル ((rA) = 0 の場合)、 そ う でない場合は 34 サ イ ク ル (C_AREA_OPTIMIZED=1)
注記
MicroBlaze がハー ド ウ ェ ア除算を使用す る よ う に コ ン フ ィ ギ ュ レー ト さ れてい る 場合にのみ
(C_USE_DIV = 1)、 こ の命令は有効です。
MicroBlaze プ ロ セ ッ サ リ フ ァ レ ン ス ガ イ ド
UG984 (v2015.1) 2015 年 4 月 15 日
UG984 (v2015.3)
(v2015.2) 2015 年 96 月 30
24 日
japan.xilinx.com
195
第 5 章 : MicroBlaze 命令セ ッ ト アーキテ ク チ ャ
imm Immediate
imm
1
0
1
IMM
1
0
0
0
0
0
0
0
0
6
0
1
1
0
0
0
0
IMM
1
6
3
1
説明
imm 命令は一時レ ジ ス タ に IMM 値を ロ ー ド し ます。 ま た、 それに続 く 命令が使用で き る よ う に、 こ の命
令は こ の値を ロ ッ ク し 、 32 ビ ッ ト の即値にな り ます。
imm 命令は、 タ イ プ B の命令 と 一緒に使用 さ れ ます。 タ イ プ B の命令には 16 ビ ッ ト の即値フ ィ ール ド が
あ る ため、 32 ビ ッ ト の即値は直接使用で き ません。 し か し 、 32 ビ ッ ト の即値は MicroBlaze で使用で き ま
す。 デフ ォ ル ト で、 タ イ プ B 命令は 16 ビ ッ ト の IMM フ ィ ール ド 値を取 り 込み、 それを 32 ビ ッ ト に符号
拡張 し て、 即値オぺ ラ ン ド と し て使用 し ます。 こ の動作は、 IMM 命令を使用 し て タ イ プ B 命令を先行 さ
せ る こ と で、 上書 き す る こ と がで き ます。 imm 命令は、 次の命令用に 16 ビ ッ ト の IMM 値を一時的に ロ ッ
ク し ます。 次に、 imm 命令のす ぐ 後に続 く タ イ プ B の命令は、 imm 命令の 16 ビ ッ ト の IMM 値 (上位 16
ビ ッ ト ) と 16 ビ ッ ト の即値フ ィ ール ド (下位 16 ビ ッ ト ) か ら 32 ビ ッ ト の即値を形成 し ます。 タ イ プ B の
命令が imm 命令に続かない場合は、 ロ ッ ク さ れた値はア ン ロ ッ ク さ れ無用にな り ます。
レ イテンシ
•
1 サイ クル
注記
imm 命令 と 、 それに続 く タ イ プ B の命令はア ト ミ ッ ク なので、 こ の 2 つの間には割 り 込みは認め ら れ ま
せん。
ザ イ リ ン ク か ら 提供 さ れ る ア セ ン ブ ラ は、 imm 命令が必要か ど う か を自動的に検出 し ます。 32 ビ ッ ト の
IMM 値が タ イ プ B 命令で指定 さ れ る と 、 アセ ンブ ラ は、 命令を アセ ンブルす る ため IMM 値を 16 ビ ッ ト
の も のに変換 し 、 実行フ ァ イ ルでその値の前に imm 命令を挿入 し ます。
MicroBlaze プ ロ セ ッ サ リ フ ァ レ ン ス ガ イ ド
UG984 (v2015.1) 2015 年 4 月 15 日
UG984 (v2015.3)
(v2015.2) 2015 年 96 月 30
24 日
japan.xilinx.com
196
第 5 章 : MicroBlaze 命令セ ッ ト アーキテ ク チ ャ
lbu
1
Load Byte Unsigned
lbu
rD、 rA、 rB
lbur
rD、 rA、 rB
1
0
0 0 0
0
rD
6
rA
rB
11
16
0
R
0
0
0
0
0
0
21
0
0
0
31
説明
レ ジ ス タ rA お よ び rB の内容を加算 し た結果の メ モ リ ロ ケーシ ョ ン か ら 1 バ イ ト (8 ビ ッ ト ) ロ ー ド し ま
す。 デー タ は レ ジ ス タ rD の最下位バ イ ト に配置 さ れ、 rD のほかの 3 バ イ ト は ク リ アにな り ます。
R ビ ッ ト がセ ッ ト さ れてい る 場合、 バ イ ト 反転 メ モ リ ロ ケーシ ョ ン が使用 さ れ、 E ビ ッ ト で定義 さ れてい
る エ ンデ ィ ア ン と は逆の も のでデー タ を ロ ー ド し ます (仮想保護モー ド が イ ネーブルにな っ てい る 場合)。
仮想保護モー ド が イ ネーブルにな っ てい る 場合、 デー タ TLB ミ ス例外が発生 し 、 ア ド レ ス に対応す る 有
効な変換エ ン ト リ は TLB では検出 さ れ ません。
ノ ー ア ク セ ス ゾーン保護に よ り ア ク セ ス が禁止 さ れてい る 場合は、デー タ ス ト レージ例外が発生 し ます。
こ れはユーザー モー ド お よ び仮想保護モー ド が イ ネーブルにな っ てい る ア ク セ ス のみに適用 さ れます。
擬似 コ ー ド
Addr    rA) + (rB)
if TLB_Miss(Addr) and MSR[VM] = 1 then
ESR[EC]  10010;ESR[S]  0
MSR[UMS]   MSR[UM]; MSR[VMS]   MSR[VM]; MSR[UM]   0; MSR[VM]   0
else if Access_Protected(Addr) and MSR[UM] = 1 and MSR[VM] = 1 then
ESR[EC]   10000;ESR[S]  0; ESR[DIZ]   1
MSR[UMS]   MSR[UM]; MSR[VMS]  MSR[VM]; MSR[UM]   0; MSR[VM]   0
else
(rD)[24:31]   Mem(Addr)
(rD)[0:23]   0
変更 さ れる レ ジ ス タ
•
rD (例外が生成 さ れない場合。 例外が生成 さ れ る と こ の レ ジ ス タ は変更 さ れません)
•
MSR[UM]、 MSR[VM]、 MSR[UMS]、 MSR[VMS] (例外が生成 さ れ る 場合)
•
ESR[EC]、 ESR[S] (例外が生成 さ れ る 場合)
•
ESR[DIZ] (デー タ ス ト レージ例外が生成 さ れ る 場合)
レ イテンシ
•
1 サ イ ク ル ( C_AREA_OPTIMIZED=0)
•
2 サ イ ク ル ( C_AREA_OPTIMIZED=1)
注記
MicroBlaze が再順序付け命令を使用す る よ う に コ ン フ ィ ギ ュ レー ト さ れてい る 場合にのみ
(C_USE_REORDER_INSTR = 1)、 こ のバ イ ト 反転命令は有効です。
MicroBlaze プ ロ セ ッ サ リ フ ァ レ ン ス ガ イ ド
UG984 (v2015.1) 2015 年 4 月 15 日
UG984 (v2015.3)
(v2015.2) 2015 年 96 月 30
24 日
japan.xilinx.com
197
第 5 章 : MicroBlaze 命令セ ッ ト アーキテ ク チ ャ
lbui
Load Byte Unsigned Immediate
lbui
1
1
1
rD、 rA、 IMM
0 0 0
0
rD
6
rA
IMM
11
16
31
説明
レ ジ ス タ rA の内容に IMM の 32 ビ ッ ト へ符号拡張 し た も のを加算 し た結果の メ モ リ ロ ケーシ ョ ン か ら 1
バ イ ト (8 ビ ッ ト ) ロ ー ド し ます。 デー タ は レ ジ ス タ rD の最下位バ イ ト に配置 さ れ、 rD のほかの 3 バ イ ト
は ク リ アにな り ます。
仮想保護モー ド が イ ネーブルにな っ てい る 場合、 デー タ TLB ミ ス例外が発生 し 、 ア ド レ ス に対応す る 有
効な変換エ ン ト リ は TLB では検出 さ れ ません。
ノ ー ア ク セ ス ゾーン保護に よ り ア ク セ ス が禁止 さ れてい る 場合は、デー タ ス ト レージ例外が発生 し ます。
こ れはユーザー モー ド お よ び仮想保護モー ド が イ ネーブルにな っ てい る ア ク セ ス のみに適用 さ れます。
擬似 コ ー ド
Addr    rA) + sext(IMM)
if TLB_Miss(Addr) and MSR[VM] = 1 then
ESR[EC]  10010;ESR[S]  0
MSR[UMS]   MSR[UM]; MSR[VMS]   MSR[VM]; MSR[UM]   0; MSR[VM]   0
else if Access_Protected(Addr) and MSR[UM] = 1 and MSR[VM] = 1 then
ESR[EC]   10000;ESR[S]  0; ESR[DIZ]   1
MSR[UMS]   MSR[UM]; MSR[VMS]  MSR[VM]; MSR[UM]   0; MSR[VM]   0
else
(rD)[24:31]   Mem(Addr)
(rD)[0:23]   0
変更 さ れる レ ジ ス タ
•
rD (例外が生成 さ れない場合。 例外が生成 さ れ る と こ の レ ジ ス タ は変更 さ れません)
•
MSR[UM]、 MSR[VM]、 MSR[UMS]、 MSR[VMS] (例外が生成 さ れ る 場合)
•
ESR[EC]、 ESR[S] (例外が生成 さ れ る 場合)
•
ESR[DIZ] (デー タ ス ト レージ例外が生成 さ れ る 場合)
レ イテンシ
•
1 サ イ ク ル ( C_AREA_OPTIMIZED=0)
•
2 サ イ ク ル ( C_AREA_OPTIMIZED=1)
注記
デフ ォ ル ト で、 タ イ プ B 命令は 16 ビ ッ ト の IMM フ ィ ール ド 値を取 り 込み、 それを 32 ビ ッ ト に符号拡張
し て、 即値オぺ ラ ン ド と し て使用 し ます。 こ の動作は、 IMM 命令を使用 し て タ イ プ B 命令を先行 さ せ る
こ と で、 上書 き す る こ と がで き ます。 32 ビ ッ ト の即値の使用に関 し ては、 196 ページの 「imm」 を参照 し
て く だ さ い。
MicroBlaze プ ロ セ ッ サ リ フ ァ レ ン ス ガ イ ド
UG984 (v2015.1) 2015 年 4 月 15 日
UG984 (v2015.3)
(v2015.2) 2015 年 96 月 30
24 日
japan.xilinx.com
198
第 5 章 : MicroBlaze 命令セ ッ ト アーキテ ク チ ャ
lhu
1
Load Halfword Unsigned
lhu
rD、 rA、 rB
lhur
rD、 rA、 rB
1
0
0 0 1
0
rD
6
rA
11
rB
16
0
R
0
0
0
0
0
0
21
0
0
0
31
説明
レ ジ ス タ rA お よ び rB の内容を加算 し た、 ハーフ ワ ー ド ア ラ イ ン さ れた結果の メ モ リ ロ ケーシ ョ ンか ら
1 ハーフ ワ ー ド (16 ビ ッ ト ) ロ ー ド し ます。 デー タ は レ ジ ス タ rD の最下位ハーフ ワー ド に配置 さ れ、 rD の
最上位ハーフ ワ ー ド は ク リ アにな り ます。
R ビ ッ ト がセ ッ ト さ れてい る 場合、 ハーフ ワー ド 反転 メ モ リ ロ ケーシ ョ ンが使用 さ れ、 ハーフ ワー ド の 2
バ イ ト が反転 し 、 E ビ ッ ト で定義 さ れてい る エ ンデ ィ ア ン と は逆の も のでデー タ を ロ ー ド し ます (仮想保
護モー ド が イ ネーブルにな っ てい る 場合)。
仮想保護モー ド が イ ネーブルにな っ てい る 場合、 デー タ TLB ミ ス例外が発生 し 、 ア ド レ ス に対応す る 有
効な変換エ ン ト リ は TLB では検出 さ れ ません。
ノ ー ア ク セ ス ゾーン保護に よ り ア ク セ ス が禁止 さ れてい る 場合は、デー タ ス ト レージ例外が発生 し ます。
こ れはユーザー モー ド お よ び仮想保護モー ド が イ ネーブルにな っ てい る ア ク セ ス のみに適用 さ れます。
ア ド レ ス の最下位ビ ッ ト がゼ ロ でない場合は、 ア ラ イ ン さ れていないデー タ ア ク セ ス例外が発生 し ます。
擬似 コ ー ド
Addr   (rA) + (rB)
if TLB_Miss(Addr) and MSR[VM] = 1 then
ESR[EC]  10010;ESR[S]  0
MSR[UMS]   MSR[UM]; MSR[VMS]   MSR[VM]; MSR[UM]   0; MSR[VM]   0
else if Access_Protected(Addr) and MSR[UM] = 1 and MSR[VM] = 1 then
ESR[EC]   10000;ESR[S]  0; ESR[DIZ]   1
MSR[UMS]   MSR[UM]; MSR[VMS]  MSR[VM]; MSR[UM]   0; MSR[VM]   0
else if Addr[31]  0 then
ESR[EC]   00001; ESR[W]   0; ESR[S]   0; ESR[Rx]   rD
else
(rD)[16:31]   Mem(Addr); (rD)[0:15]   0
変更 さ れる レ ジ ス タ
•
•
•
•
•
rD (例外が生成 さ れない場合。 例外が生成 さ れ る と こ の レ ジ ス タ は変更 さ れません)
MSR[UM]、 MSR[VM]、 MSR[UMS]、 MSR[VMS] (例外が生成 さ れ る 場合)
ESR[EC]、 ESR[S] (例外が生成 さ れ る 場合)
ESR[DIZ] (デー タ ス ト レージ例外が生成 さ れ る 場合)
ESR[W]、 ESR[Rx] (ア ラ イ ン さ れていないデー タ ア ク セ ス例外が生成 さ れ る 場合)
レ イテンシ
•
•
1 サ イ ク ル ( C_AREA_OPTIMIZED=0)
2 サ イ ク ル ( C_AREA_OPTIMIZED=1)
注記
MicroBlaze が再順序付け命令を使用す る よ う に コ ン フ ィ ギ ュ レー ト さ れてい る 場合にのみ
(C_USE_REORDER_INSTR = 1)、 こ のハーフ ワ ー ド 反転命令は有効です。
MicroBlaze プ ロ セ ッ サ リ フ ァ レ ン ス ガ イ ド
UG984 (v2015.1) 2015 年 4 月 15 日
UG984 (v2015.3)
(v2015.2) 2015 年 96 月 30
24 日
japan.xilinx.com
199
第 5 章 : MicroBlaze 命令セ ッ ト アーキテ ク チ ャ
lhui
Load Halfword Unsigned Immediate
lhui
1
1
1
rD、 rA、 IMM
0 0 1
0
rD
6
rA
11
IMM
16
31
説明
レ ジ ス タ rA の内容 と IMM の 32 ビ ッ ト に符号拡張 し た も のを加算 し た結果の、ハーフ ワ ー ド ア ラ イ ン さ
れた メ モ リ ロ ケーシ ョ ン か ら 、 1 ハーフ ワー ド (16 ビ ッ ト ) ロ ー ド し ます。 デー タ は レ ジ ス タ rD の最下位
ハーフ ワ ー ド に配置 さ れ、 rD の最上位ハーフ ワー ド は ク リ アにな り ます。
仮想保護モー ド が イ ネーブルにな っ てい る 場合、 デー タ TLB ミ ス例外が発生 し 、 ア ド レ ス に対応す る 有
効な変換エ ン ト リ は TLB では検出 さ れ ません。 ノ ー ア ク セ ス ゾーン保護に よ り ア ク セ ス が禁止 さ れてい
る 場合は、 デー タ ス ト レージ例外が発生 し ます。 こ れはユーザー モー ド お よ び仮想保護モー ド が イ ネー
ブルにな っ てい る ア ク セ ス のみに適用 さ れます。 ア ド レ ス の最下位ビ ッ ト がゼ ロ でない場合は、 ア ラ イ ン
さ れていないデー タ ア ク セ ス例外が発生 し ます。
擬似 コ ー ド
Addr   (rA) + sext(IMM)
if TLB_Miss(Addr) and MSR[VM] = 1 then
ESR[EC]  10010;ESR[S]  0
MSR[UMS]   MSR[UM]; MSR[VMS]   MSR[VM]; MSR[UM]   0; MSR[VM]   0
else if Access_Protected(Addr) and MSR[UM] = 1 and MSR[VM] = 1 then
ESR[EC]   10000;ESR[S]  0; ESR[DIZ]   1
MSR[UMS]   MSR[UM]; MSR[VMS]  MSR[VM]; MSR[UM]   0; MSR[VM]   0
else if Addr[31]  0 then
ESR[EC]   00001; ESR[W]   0; ESR[S]   0; ESR[Rx]   rD
else
(rD)[16:31]   Mem(Addr)
(rD)[0:15]   0
変更 さ れる レ ジ ス タ
•
•
•
•
•
rD (例外が生成 さ れない場合。 例外が生成 さ れ る と こ の レ ジ ス タ は変更 さ れません)
MSR[UM]、 MSR[VM]、 MSR[UMS]、 MSR[VMS] (TLB ミ ス例外ま たはデー タ ス ト レージ例外が生成 さ れ る 場合)
ESR[EC]、 ESR[S] (例外が生成 さ れ る 場合)
ESR[DIZ] (デー タ ス ト レージ例外が生成 さ れ る 場合)
ESR[W]、 ESR[Rx] (ア ラ イ ン さ れていないデー タ ア ク セ ス例外が生成 さ れ る 場合)
レ イテンシ
•
1 サ イ ク ル ( C_AREA_OPTIMIZED=0)
•
2 サ イ ク ル ( C_AREA_OPTIMIZED=1)
注記
デフ ォ ル ト で、 タ イ プ B 命令は 16 ビ ッ ト の IMM フ ィ ール ド 値を取 り 込み、 それを 32 ビ ッ ト に符号拡張
し て、 即値オぺ ラ ン ド と し て使用 し ます。 こ の動作は、 IMM 命令を使用 し て タ イ プ B 命令を先行 さ せ る
こ と で、 上書 き す る こ と がで き ます。 32 ビ ッ ト の即値の使用に関 し ては、 196 ページの 「imm」 を参照 し
て く だ さ い。
MicroBlaze プ ロ セ ッ サ リ フ ァ レ ン ス ガ イ ド
UG984 (v2015.1) 2015 年 4 月 15 日
UG984 (v2015.3)
(v2015.2) 2015 年 96 月 30
24 日
japan.xilinx.com
200
第 5 章 : MicroBlaze 命令セ ッ ト アーキテ ク チ ャ
lw
Load Word
1
lw
rD、 rA、 rB
lwr
rD、 rA、 rB
1
0
0 1 0
0
rD
6
rA
11
rB
16
0
R
0
0
0
0
0
0
21
0
0
0
31
説明
レ ジ ス タ rA お よ び rB の内容を加算 し た、 ワ ー ド ア ラ イ ン さ れた結果の メ モ リ ロ ケーシ ョ ンか ら 1 ワー
ド (32 ビ ッ ト ) ロ ー ド し ます。 デー タ は レ ジ ス タ rD に配置 さ れ ます。
R ビ ッ ト がセ ッ ト さ れてい る 場合、 ロ ー ド さ れた ワー ド のバ イ ト が反転 さ れ、 E ビ ッ ト で定義 さ れてい る
エ ンデ ィ ア ン と は逆の も のでデー タ を ロ ー ド し ます (仮想保護モー ド が イ ネーブルにな っ てい る 場合)。
仮想保護モー ド が イ ネーブルにな っ てい る 場合、 デー タ TLB ミ ス例外が発生 し 、 ア ド レ ス に対応す る 有
効な変換エ ン ト リ は TLB では検出 さ れ ません。
ノ ー ア ク セ ス ゾーン保護に よ り ア ク セ ス が禁止 さ れてい る 場合は、デー タ ス ト レージ例外が発生 し ます。
こ れはユーザー モー ド お よ び仮想保護モー ド が イ ネーブルにな っ てい る ア ク セ ス のみに適用 さ れます。
ア ド レ ス の最下位ビ ッ ト 2 つがゼ ロ でない場合は、 ア ラ イ ン さ れていないデー タ ア ク セ ス 例外が発生 し
ます。
擬似 コ ー ド
Addr   (rA) + (rB)
if TLB_Miss(Addr) and MSR[VM] = 1 then
ESR[EC]  10010;ESR[S]  0
MSR[UMS]   MSR[UM]; MSR[VMS]   MSR[VM]; MSR[UM]   0; MSR[VM]   0
else if Access_Protected(Addr) and MSR[UM] = 1 and MSR[VM] = 1 then
ESR[EC]   10000;ESR[S]  0; ESR[DIZ]   1
MSR[UMS]   MSR[UM]; MSR[VMS]  MSR[VM]; MSR[UM]   0; MSR[VM]   0
else if Addr[30:31]  0 then
ESR[EC]   00001; ESR[W]   1; ESR[S]   0; ESR[Rx]   rD
else
(rD)   Mem(Addr)
変更 さ れる レ ジ ス タ
•
•
•
•
•
rD (例外が生成 さ れない場合。 例外が生成 さ れ る と こ の レ ジ ス タ は変更 さ れません)
MSR[UM]、 MSR[VM]、 MSR[UMS]、 MSR[VMS] (TLB ミ ス例外ま たはデー タ ス ト レージ例外が生成 さ れ る 場合)
ESR[EC]、 ESR[S] (例外が生成 さ れ る 場合)
ESR[DIZ] (デー タ ス ト レージ例外が生成 さ れ る 場合)
ESR[W]、 ESR[Rx] (ア ラ イ ン さ れていないデー タ ア ク セ ス例外が生成 さ れ る 場合)
レ イテンシ
•
•
1 サ イ ク ル ( C_AREA_OPTIMIZED=0)
2 サ イ ク ル ( C_AREA_OPTIMIZED=1)
注記
MicroBlaze が再順序付け命令を使用す る よ う に コ ン フ ィ ギ ュ レー ト さ れてい る 場合にのみ
(C_USE_REORDER_INSTR = 1)、 こ の ワ ー ド 反転命令は有効です。
MicroBlaze プ ロ セ ッ サ リ フ ァ レ ン ス ガ イ ド
UG984 (v2015.1) 2015 年 4 月 15 日
UG984 (v2015.3)
(v2015.2) 2015 年 96 月 30
24 日
japan.xilinx.com
201
第 5 章 : MicroBlaze 命令セ ッ ト アーキテ ク チ ャ
lwi
Load Word Immediate
lwi
1
1
rD、 rA、 IMM
1
0
1
0
0
rD
6
rA
IMM
11
16
31
説明
レ ジ ス タ rA の内容 と IMM の 32 ビ ッ ト に符号拡張 し た も のを加算 し た結果の、 ワ ー ド ア ラ イ ン さ れた メ
モ リ ロ ケーシ ョ ン か ら 、 1 ワー ド (32 ビ ッ ト ) ロ ー ド し ます。 デー タ は レ ジ ス タ rD に配置 さ れます。 仮想
保護モー ド が イ ネーブルにな っ てい る 場合、 デー タ TLB ミ ス例外が発生 し 、 ま た、 ノ ー ア ク セ ス ゾーン
保護に よ り ア ク セ ス が禁止 さ れてい る 場合は、 ア ド レ ス に対応す る 有効な変換エ ン ト リ は TLB デー タ ス
ト レージ例外では検出 さ れ ま せん こ れはユーザー モー ド お よ び仮想保護モー ド が イ ネーブルにな っ てい
る ア ク セ ス のみに適用 さ れ ます。 ア ド レ ス の最下位ビ ッ ト 2 つがゼ ロ でない場合は、 ア ラ イ ン さ れていな
いデー タ ア ク セ ス例外が発生 し ます。
擬似 コ ー ド
Addr   (rA) + sext(IMM)
if TLB_Miss(Addr) and MSR[VM] = 1 then
ESR[EC]  10010;ESR[S]  0
MSR[UMS]   MSR[UM]; MSR[VMS]   MSR[VM]; MSR[UM]   0; MSR[VM]   0
else if Access_Protected(Addr) and MSR[UM] = 1 and MSR[VM] = 1 then
ESR[EC]   10000;ESR[S]  0; ESR[DIZ]   1
MSR[UMS]   MSR[UM]; MSR[VMS]  MSR[VM]; MSR[UM]   0; MSR[VM]   0
else if Addr[30:31]  0 then
ESR[EC]   00001; ESR[W]   1; ESR[S]   0; ESR[Rx]   rD
else
(rD)   Mem(Addr)
変更 さ れる レ ジ ス タ
•
rD (例外が生成 さ れない場合。 例外が生成 さ れ る と こ の レ ジ ス タ は変更 さ れません)
•
MSR[UM]、 MSR[VM]、 MSR[UMS]、 MSR[VMS] (TLB ミ ス例外ま たはデー タ ス ト レージ例外が生成 さ れ る 場合)
•
ESR[EC]、 ESR[S] (例外が生成 さ れ る 場合)
•
ESR[DIZ] (デー タ ス ト レージ例外が生成 さ れ る 場合)
•
ESR[W]、 ESR[Rx] (ア ラ イ ン さ れていないデー タ ア ク セ ス例外が生成 さ れ る 場合)
レ イテンシ
•
1 サ イ ク ル ( C_AREA_OPTIMIZED=0)
•
2 サ イ ク ル ( C_AREA_OPTIMIZED=1)
注記
デフ ォ ル ト で、 タ イ プ B 命令は 16 ビ ッ ト の IMM フ ィ ール ド 値を取 り 込み、 それを 32 ビ ッ ト に符号拡張
し て、 即値オぺ ラ ン ド と し て使用 し ます。 こ の動作は、 IMM 命令を使用 し て タ イ プ B 命令を先行 さ せ る
こ と で、 上書 き す る こ と がで き ます。 32 ビ ッ ト の即値の使用に関 し ては、 196 ページの 「imm」 を参照 し
て く だ さ い。
MicroBlaze プ ロ セ ッ サ リ フ ァ レ ン ス ガ イ ド
UG984 (v2015.1) 2015 年 4 月 15 日
UG984
(v2015.2) 2015 年 96 月 30
(v2015.3)
24 日
japan.xilinx.com
202
第 5 章 : MicroBlaze 命令セ ッ ト アーキテ ク チ ャ
lwx
Load Word Exclusive
lwx
1
1
0
rD、 rA、 rB
0 1 0
0
rD
6
rA
11
rB
16
1
0
0
0
0
0
0
0
21
0
0
0
31
説明
レ ジ ス タ rA お よ び rB の内容を加算 し た、 ワ ー ド ア ラ イ ン さ れた結果の メ モ リ ロ ケーシ ョ ンか ら 1 ワー
ド (32 ビ ッ ト ) ロ ー ド し ます。 デー タ は レ ジ ス タ rD に配置 さ れ、 予約ビ ッ ト がセ ッ ト さ れます。 排他的ア
ク セ ス が イ ネーブルにな っ てい る AXI4 イ ン タ ー コ ネ ク ト が使用 さ れ、イ ン タ ー コ ネ ク ト 応答が EXOKAY
でない場合、 キ ャ リ ー フ ラ グ (MSR[C]) がセ ッ ト さ れ ま す。 そ う でない場合はキ ャ リ ー フ ラ グは ク リ ア
にな り ます。
仮想保護モー ド が イ ネーブルにな っ てい る 場合、 デー タ TLB ミ ス例外が発生 し 、 ア ド レ ス に対応す る 有
効な変換エ ン ト リ は TLB では検出 さ れ ません。
ノ ー ア ク セ ス ゾーン保護に よ り ア ク セ ス が禁止 さ れてい る 場合は、デー タ ス ト レージ例外が発生 し ます。
こ れはユーザー モー ド お よ び仮想保護モー ド が イ ネーブルにな っ てい る ア ク セ ス のみに適用 さ れます。
ア ド レ ス の最下位ビ ッ ト 2 つがゼ ロ でない場合は、 ア ラ イ ン さ れていないデー タ ア ク セ ス 例外が発生 し
ません。
排他的ア ク セ ス が イ ネーブルにな っ てい る AXI4 イ ン タ ー コ ネ ク ト が使用 さ れ、 イ ン タ ー コ ネ ク ト 応答が
EXOKAY でない と (つま り 排他的ア ク セ ス が処理で き ない)、 デー タ バ ス例外が発生す る 可能性があ り ま
す。
AXI の排他的ア ク セ ス を イ ネーブルにす る と 、 ほかのバ ス マ ス タ ーか ら 操作が保護 さ れますが、 ア ド レ
ス指定 し た ス レーブで排他的ア ク セ ス をサポー ト す る よ う に し てお く 必要があ り ます。 排他的ア ク セ ス
が イ ネーブルにな っ ていない と 、 内部予約ビ ッ ト のみが使用 さ れ ます。 排他的ア ク セ ス は、 ペ リ フ ェ ラ
ルお よ びキ ャ ッ シ ュ イ ン タ ー コ ネ ク ト にそれぞれ、 C_M_AXI_DP_EXCLUSIVE_ACCESS お よ び
C_M_AXI_DC_EXCLUSIVE_ACCESS と い う 2 つのパ ラ メ ー タ ーを設定す る と イ ネーブルにな り ます。
擬似 コ ー ド
Addr   (rA) + (rB)
if TLB_Miss(Addr) and MSR[VM] = 1 then
ESR[EC]  10010;ESR[S]  0
MSR[UMS]   MSR[UM]; MSR[VMS]   MSR[VM]; MSR[UM]   0; MSR[VM]   0
else if Access_Protected(Addr) and MSR[UM] = 1 and MSR[VM] = 1 then
ESR[EC]   10000;ESR[S]  0; ESR[DIZ]   1
MSR[UMS]   MSR[UM]; MSR[VMS]  MSR[VM]; MSR[UM]   0; MSR[VM]   0
else if AXI_Exclusive(Addr) and AXI_Response  EXOKAY and MSR[EE] then
ESR[EC]   00100;ESR[ECC]  0;
MSR[UMS]   MSR[UM]; MSR[VMS]  MSR[VM]; MSR[UM]   0; MSR[VM]   0
else
(rD)   Mem(Addr); Reservation   1;
if AXI_Exclusive(Addr) and AXI_Response  EXOKAY then
MSR[C]   1
else
MSR[C]   0
MicroBlaze プ ロ セ ッ サ リ フ ァ レ ン ス ガ イ ド
UG984 (v2015.1) 2015 年 4 月 15 日
UG984 (v2015.3)
(v2015.2) 2015 年 96 月 30
24 日
japan.xilinx.com
203
第 5 章 : MicroBlaze 命令セ ッ ト アーキテ ク チ ャ
変更 さ れる レ ジ ス タ
•
rD お よ び MSR[C] (例外が生成 さ れない場合。 生成 さ れ る と こ の 2 つは変更 さ れない)
•
MSR[UM]、 MSR[VM]、 MSR[UMS]、 MSR[VMS] (TLB ミ ス例外ま たはデー タ ス ト レージ例外が生成 さ れ る 場合)
•
ESR[EC]、 ESR[S] (例外が生成 さ れ る 場合)
•
ESR[DIZ] (デー タ ス ト レージ例外が生成 さ れ る 場合)
レ イテンシ
•
1 サ イ ク ル ( C_AREA_OPTIMIZED=0)
•
2 サ イ ク ル ( C_AREA_OPTIMIZED=1)
注記
こ の命令は、 セマ フ ォ やス ピ ン ロ ッ ク な ど、 排他的ア ク セ ス を イ ン プ リ メ ン ト す る ために、 SWX と 一緒
に使用 さ れ ます。
キ ャ リ ー フ ラ グ (MSR[C]) はす ぐ にはセ ッ ト さ れない可能性があ り ます (パ イ プ ラ イ ン ス ト ールの動作に
よ る )。 キ ャ リ ー フ ラ グ の正 し い値を得 る ため、 LWX 命令は、 MSRCLR、 MSRSET、 MTS、 ま たは SRC
命令のす ぐ 後に続け る こ と はで き ません。
MicroBlaze プ ロ セ ッ サ リ フ ァ レ ン ス ガ イ ド
UG984 (v2015.1) 2015 年 4 月 15 日
UG984 (v2015.3)
(v2015.2) 2015 年 96 月 30
24 日
japan.xilinx.com
204
第 5 章 : MicroBlaze 命令セ ッ ト アーキテ ク チ ャ
mbar Memory Barrier
mbar
1
0
1
1
IMM
1
0
0
IMM
6
メモリ バリア
0
0
0
1
11
0
0
0
0
0
0
0
0
16
0
0
0
0
0
0
1
0
0
31
説明
こ の命令は、 メ モ リ イ ン タ ーフ ェ イ ス の未処理の メ モ リ ア ク セ ス が、 後に続 く 命令が実行 さ れ る 前に
完了す る よ う に し ます。 こ れは、 自己変更 コ ー ド が正 し く 処理 さ れ る よ う にす る ため、 そ し て DMA 転
送が問題な く 開始で き る よ う にす る ために必要です。
自己変更 コ ー ド の場合、 まず、 デー タ ア ク セ ス があ る ま で待機す る ため、 IMM を 1 に設定 し 、 MBAR
命令を使用す る 必要があ り ます。 次に、 分岐先キ ャ ッ シ ュ を ク リ アに し 、 命令プ リ フ ェ ッ チ バ ッ フ ァ ー
を空にす る ために、 IMM を 2 に設定 し 、 別の MBAR 命令を使用す る 必要があ り ます。
DMA ユニ ッ ト に よ っ て読み出 さ れ る デー タ が メ モ リ に書 き 込まれた こ と を確認す る には、 IMM を 1 に
設定 し 、 デー タ ア ク セ ス があ る ま で待機す る だけです。
MicroBlaze を MMU を 使用す る よ う に コ ン フ ィ ギ ュ レ ー ト す る と (C_USE_MMU >= 1)、 IMM の最上位
ビ ッ ト が 1 にセ ッ ト さ れてい る 場合、 こ の命令は特権命令にな り ます。 つ ま り 、 命令がユーザー モー
ド (MSR[UM] = 1) で実行 さ れ る と 、 特権命令例外が発生 し ます。
IMM の最上位ビ ッ ト が 1 にセ ッ ト さ れていて、 例外が発生 し ない場合、 未処理ア ク セ ス がすべて完了
し た後に、 MicroBlaze は ス リ ープ モー ド に入 り 、 それを示すために ス リ ープ出力信号を セ ッ ト し ます。
パ イ プ ラ イ ンは停止 し 、 ウ ェー ク ア ッ プ入力信号の 1 ビ ッ ト がアサー ト さ れ る ま で、 MicroBlaze は実行
を継続 し ません。
擬似 コ ー ド
if (IMM & 1) = 0 then
wait for instruction side memory accesses
if (IMM & 2) = 0 then
wait for data side memory accesses
PC   PC + 4
if (IMM & 16) = 16 then
enter sleep mode
変更 さ れる レ ジ ス タ
•
•
PC
ESR[EC] (特権命令例外が生成 さ れ る 場合)
レ イテンシ
•
1 + N サ イ ク ル (N は メ モ リ ア ク セ ス が完了す る のを待機す る サ イ ク ル数)
注記
こ の命令の前に imm 命令を先行 さ せ る こ と はで き ま せん。 ま た遅延 ス ロ ッ ト に配置す る こ と も で き ま
せん。
アセ ン ブ ラ の擬似命令ス リ ープは、 ス リ ープ モー ド に入 る ために 「mbar 16」 の代わ り に使用す る こ と
がで き ます。
MicroBlaze プ ロ セ ッ サ リ フ ァ レ ン ス ガ イ ド
UG984 (v2015.1) 2015 年 4 月 15 日
UG984 (v2015.3)
(v2015.2) 2015 年 96 月 30
24 日
japan.xilinx.com
205
第 5 章 : MicroBlaze 命令セ ッ ト アーキテ ク チ ャ
mfs
Move From Special Purpose Register
mfs
1
0
0
rD、 rS
1
0
1
0
rD
6
0
11
0
0
0
0
1
0
16
rS
18
31
説明
特殊レ ジ ス タ rS の内容を レ ジ ス タ rD に コ ピー し ます。 特殊レ ジ ス タ TLBLO お よ び TLBHI は、 TLBX に
よ り イ ンデ ッ ク ス化 さ れた統合 TLB エ ン ト リ の内容を コ ピーす る のに使用 さ れ ます。
擬似 コ ー ド
switch (rS):
case 0x0000 : (rD)   PC
case 0x0001 : (rD)   MSR
case 0x0003 : (rD)   EAR
case 0x0005 : (rD)   ESR
case 0x0007 : (rD)   FSR
case 0x000B : (rD)   BTR
case 0x000D : (rD)   EDR
case 0x0800 : (rD)   SLR
case 0x0802 : (rD)   SHR
case 0x1000 : (rD)   PID
case 0x1001 : (rD)   ZPR
case 0x1002 : (rD)   TLBX
case 0x1003 : (rD)   TLBLO
case 0x1004 : (rD)   TLBHI
case 0x200x : (rD)   PVR[x] (where x = 0 to 12)
default : (rD)   Undefined
変更 さ れる レ ジ ス タ
•
rD
レ イテンシ
•
1 サイ クル
注記
アセ ン ブ リ 言語で特殊レ ジ ス タ を参照す る には、 PC には rpc、 MSR には rmsr、 EAR には rear、 ESR には
resr、 FSR には rfsr、 BTR には rbtr、 EDR には redr、 SLR には rslr、 SHR には rshr、 PID には rpid、 ZPR に
は rzpr、 TLBLO には rtlblo、 TLBHI には rtlbhi、 TLBX には rtlbx、 PVR0 か ら PVR12 には rpvr0 か ら rpvr12
を使用 し ます。
MSR か ら 読み出 さ れた値には、 そのす ぐ 前に先行す る 命令の効果を含め る こ と がで き ない場合があ り ま
す (パ イ プ ラ イ ン ス ト ールの動作に よ る )。 MSR に影響 し な い命令は、 正 し い MSR 値 を 確約す る ため、
MFS 命令 よ り 先行 さ せ る 必要があ り ます。
FSR か ら 読み出 さ れた値には、そのす ぐ 前に先行す る 命令の効果を含め る こ と がで き ない場合があ り ます
(パ イ プ ラ イ ン ス ト ールの動作に よ る )。 FSR に影響 し ない命令は、 正 し い FSR 値を確約す る ため、 MFS
命令 よ り 先行 さ せ る 必要があ り ます。
MicroBlaze プ ロ セ ッ サ リ フ ァ レ ン ス ガ イ ド
UG984 (v2015.1) 2015 年 4 月 15 日
UG984 (v2015.3)
(v2015.2) 2015 年 96 月 30
24 日
japan.xilinx.com
206
第 5 章 : MicroBlaze 命令セ ッ ト アーキテ ク チ ャ
MicroBlaze のパ ラ メ ー タ ー C_*_EXCEPTION が少な く と も 1 つ 1 に設定 さ れてい る と 、 EAR、 ESR、 お よ
び BTR はオペ ラ ン ド と し てのみ有効です。
C_FSL_EXCEPTION が 1 に設定 さ れて い て、 C_FSL_LINKS が 0 よ り も 大 き な値に設定 さ れて い る と 、
EDR はオペ ラ ン ド と し てのみ有効です。
C_USE_FPU が 0 よ り も 大 き な値に設定 さ れてい る と 、 FSR はオペ ラ ン ド と し てのみ有効です。
C_USE_STACK_PROTECTION が 1 に設定 さ れてい る と 、SLR お よ び SHR はオペ ラ ン ド と し てのみ有効で
す。
C_USE_MMU > 1 (ユーザー モー ド ) お よ び C_MMU_TLB_ACCESS = 1 (読み出 し ) ま たは 3 (フル) に設定 さ
れてい る と 、 PID、 ZPR、 TLBLO、 お よ び TLBHI はオペ ラ ン ド と し てのみ有効です。
C_USE_MMU > 1 (ユーザー モー ド ) お よ び C_MMU_TLB_ACCESS > 0 (最小) に設定 さ れてい る と 、 TLBX は
オペ ラ ン ド と し てのみ有効です。
C_PVR が 1 (基本) ま たは 2 (フル) に設定 さ れてい る と 、 PVR0 はオペ ラ ン ド と し てのみ有効です。 ま た、
C_PVR が 2 (フル) に設定 さ れてい る と 、 PVR1 か ら PVR12 ははオペ ラ ン ド と し てのみ有効です。
MicroBlaze プ ロ セ ッ サ リ フ ァ レ ン ス ガ イ ド
UG984 (v2015.1) 2015 年 4 月 15 日
UG984 (v2015.3)
(v2015.2) 2015 年 96 月 30
24 日
japan.xilinx.com
207
第 5 章 : MicroBlaze 命令セ ッ ト アーキテ ク チ ャ
msrcl
r
1
0
Read MSR and clear bits in MSR
msrclr
0
1
rD、 Imm
0
1
0
rD
6
1
0
0
0
1
11
0
Imm15
16 17
31
説明
特殊レ ジ ス タ MSR の内容を レ ジ ス タ rD に コ ピー し ます。
IMM 値で ビ ッ ト 位置が 1 の も のは MSR で ク リ アにな り ます。 IMM 値で ビ ッ ト 位置が 0 の も のはその
ま ま にな り ます。
MicroBlaze が MMU を使用す る よ う に コ ン フ ィ ギ ュ レー ト さ れてい る 場合 (C_USE_MMU >= 1)、 こ の
命令は、 C のみに影響を与え る も の を除 き 、 すべての IMM 値に対 し て特権命令にな り ます。 すなわち、
こ の場合に命令がユーザー モー ド (MSR[UM] = 1) で実行 さ れ る と 、 特権命令例外が発生 し ます。
擬似 コ ー ド
if MSR[UM] = 1 and IMM  0x4 then
ESR[EC]   00111
else
  (MSR)
(rD)
(MSR)   (MSR)   IMM))
変更 さ れる レ ジ ス タ
•
rD
•
MSR
•
ESR[EC] (特権命令例外が生成 さ れ る 場合)
レ イテンシ
•
1 サイ クル
注記
MSRCLR はす ぐ にキ ャ リ ー ビ ッ ト に影響 し ますが、 残 り の ビ ッ ト は、 命令実行後 1 ク ロ ッ ク し て効力
を持ち ます。 IE ビ ッ ト を ク リ アにす る と 、 後続の命令に対す る 割 り 込みにはプ ロ セ ッ サは反応 し な く
な り ます。
MSR か ら 読み出 さ れた値には、 そのす ぐ前に先行す る 命令の効果を含め る こ と がで き ない場合があ り
ます (パ イ プ ラ イ ン ス ト ールの動作に よ る )。 MSR に影響 し ない命令は、 正 し い MSR 値を確約す る た
め、 MSRCLR 命令 よ り 先行 さ せ る 必要があ り ます。 こ れは、 レ ジ ス タ rD に コ ピー さ れた値お よ び変更
さ れた MSR 値自体の両方に適用 さ れ ます。
即値は、 C_USE_MMU >= 1 (ユーザー モー ド ) の と き 215 未満で、 それ以外の と き は 214 未満にな る 必
要があ り ます。 C_USE_MMU >= 1 (ユーザー モー ド ) の と き 、 MSR の ビ ッ ト 17 か ら 31 ま でのみが ク リ
アにな り 、 それ以外の と き はビ ッ ト 18 か ら 31 ま でが ク リ アにな り ます。
こ の命令は C_USE_MSR_INSTR を 1 に設定 し てい る 場合のみ使用可能です。
MSR[VM] を ク リ アす る と き 、 こ の命令の後には、 常に、 BRI 4 な ど の同期分岐命令が続 く 必要があ り
ます。
MicroBlaze プ ロ セ ッ サ リ フ ァ レ ン ス ガ イ ド
UG984 (v2015.1) 2015 年 4 月 15 日
UG984 (v2015.3)
(v2015.2) 2015 年 96 月 30
24 日
japan.xilinx.com
208
第 5 章 : MicroBlaze 命令セ ッ ト アーキテ ク チ ャ
msrse
t
1
0
Read MSR and set bits in MSR
msrset
0
1
rD、 Imm
0
1
0
rD
6
1
0
0
0
0
11
0
IMM
16 17
31
説明
特殊レ ジ ス タ MSR の内容を レ ジ ス タ rD に コ ピー し ます。 IMM 値で ビ ッ ト 位置が 1 の も のは MSR で
セ ッ ト さ れます。 IMM 値で ビ ッ ト 位置が 0 の も のはその ま ま にな り ます。
MicroBlaze が MMU を使用す る よ う に コ ン フ ィ ギ ュ レー ト さ れてい る 場合 (C_USE_MMU >= 1)、こ の命
令は、 C のみに影響を与え る も の を除 き 、 すべての IMM 値に対 し て特権命令にな り ます。 すなわち、
こ の場合に命令がユーザー モー ド (MSR[UM] = 1) で実行 さ れ る と 、 特権命令例外が発生 し ます。
低 レ イ テ ン シ割 り 込みモー ド では (C_USE_INTERRUPT = 2)、 こ の命令を実行 し て MSR{IE] ビ ッ ト が
セ ッ ト さ れ る 場合に、 Interrupt_Ack 出力ポー ト が 1 にセ ッ ト さ れ ます。
擬似 コ ー ド
if MSR[UM] = 1 and IMM  0x4 then
ESR[EC]   00111
else
  (MSR)
(rD)
(MSR)   (MSR)   (IMM)
if (IMM) & 2
Interrupt_Ack   11
変更 さ れる レ ジ ス タ
•
rD
•
MSR
•
ESR[EC] (特権命令例外が生成 さ れ る 場合)
レ イテンシ
•
1 サイ クル
注記
MSRSET はす ぐ にキ ャ リ ー ビ ッ ト に影響 し ますが、 残 り の ビ ッ ト は、 命令実行後 1 ク ロ ッ ク し て効力
を持ち ま す。 EIP ま たは BIP ビ ッ ト を セ ッ ト す る と 、 後続の命令に対す る 割 り 込み ま たは標準ハー ド
ウ ェ ア ブ レー ク にはプ ロ セ ッ サは反応 し な く な り ます。
MSR か ら 読み出 さ れた値には、 そのす ぐ前に先行す る 命令の効果を含め る こ と がで き ない場合があ り
ます (パ イ プ ラ イ ン ス ト ールの動作に よ る )。 MSR に影響 し ない命令は、 正 し い MSR 値を確約す る た
め、 MSRSET 命令 よ り 先行 さ せ る 必要があ り ます。 こ れは、 レ ジ ス タ rD に コ ピー さ れた値お よ び変更
さ れた MSR 値自体の両方に適用 さ れ ます。
即値は、 C_USE_MMU >= 1 (ユーザー モー ド ) の と き 215 未満で、 それ以外の と き は 214 未満にな る 必
要があ り ます。 C_USE_MMU >= 1 (ユーザー モー ド ) の と き 、 MSR の ビ ッ ト 17 か ら 31 ま でのみが ク リ
アにな り 、 それ以外の と き はビ ッ ト 18 か ら 31 ま でがセ ッ ト さ れ ます。
こ の命令は C_USE_MSR_INSTR を 1 に設定 し てい る 場合のみ使用可能です。
MSR[VM] を セ ッ ト す る と 、こ の命令の後には、常に、BRI 4 な ど の同期分岐命令が続 く 必要があ り ます。
MicroBlaze プ ロ セ ッ サ リ フ ァ レ ン ス ガ イ ド
UG984 (v2015.1) 2015 年 4 月 15 日
UG984 (v2015.3)
(v2015.2) 2015 年 96 月 30
24 日
japan.xilinx.com
209
第 5 章 : MicroBlaze 命令セ ッ ト アーキテ ク チ ャ
mts
Move To Special Purpose Register
mts
1
0
0
rS、 rA
1
0
1
0
0
0
0
0
0
6
rA
1
11
1
16
rS
18
31
説明
レ ジ ス タ rD の内容を特殊レ ジ ス タ rS に コ ピー し ます。 特殊レ ジ ス タ TLBLO お よ び TLBHI は、 TLBX に
よ り イ ンデ ッ ク ス化 さ れた統合 TLB エ ン ト リ に コ ピーす る のに使用 さ れます。
MicroBlaze が MMU を使用す る よ う に (C_USE_MMU >= 1) コ ン フ ィ ギ ュ レー ト さ れてい る 場合、 こ の命令
は特権命令です。 つ ま り 、 命令がユーザー モー ド (MSR[UM] = 1) で実行 さ れ る と 、 特権命令例外が発生
し ます。
低レ イ テ ン シ割 り 込みモー ド では (C_USE_INTERRUPT = 2)、 こ の命令を実行 し て MSR{IE] ビ ッ ト がセ ッ
ト さ れ る 場合に、 Interrupt_Ack 出力ポー ト が 1 に設定 さ れ ます。
擬似 コ ー ド
if MSR[UM] = 1 then
ESR[EC]  00111
else
switch (rS)
case 0x0001 : MSR  (rA)
case 0x0007 : FSR  (rA)
case 0x0800 : SLR  (rA)
case 0x0802 : SHR  (rA)
case 0x1000 : PID  (rA)
case 0x1001 : ZPR  (rA)
case 0x1002 : TLBX  (rA)
case 0x1003 : TLBLO  (rA)
case 0x1004 : TLBHI  (rA)
case 0x1005 : TLBSX  (rA)
if (rS) = 0x0001 and (rA) & 2
Interrupt_Ack  11
変更 さ れる レ ジ ス タ
•
rS
•
ESR[EC] (特権命令例外が生成 さ れ る 場合)
レ イテンシ
•
1 サイ クル
注記
MTS を使用 し て MSR を書 き 込む と き 、 こ の命令の実行後 1 サ イ ク ルで、 すべての ビ ッ ト が効力を持ち ま
す。 MSR を書 き 込む MTS 命令の後に、 MSR の内容を使用す る 命令が連続 し て続 く こ と はで き ません。 IE
ビ ッ ト を ク リ アにす る と 、 後続の命令に対す る 割 り 込みにはプ ロ セ ッ サは反応 し な く な り ます。 EIP ま た
は BIP ビ ッ ト を セ ッ ト す る と 、 後続の命令に対す る 割 り 込みま たは標準ハー ド ウ ェ ア ブ レー ク にはプ ロ
セ ッ サは反応 し な く な り ます。
MicroBlaze プ ロ セ ッ サ リ フ ァ レ ン ス ガ イ ド
UG984 (v2015.1) 2015 年 4 月 15 日
UG984 (v2015.3)
(v2015.2) 2015 年 96 月 30
24 日
japan.xilinx.com
210
第 5 章 : MicroBlaze 命令セ ッ ト アーキテ ク チ ャ
アセ ン ブ リ 言語で特殊レ ジ ス タ を参照す る には、 MSR には rmsr、 FSR には rfsr、 SLR には rslr、 SHR には
rshr、 PID には rpid、 ZPR には rzpr、 TLBLO には rtlblo、 TLBHI には rtlbhi、 TLBX には rtlbx、 TLBSX に
は rtlbsx を使用 し ます。
PC、 ESR、 EAR、 BTR、 EDR、 お よ び PVR0 か ら PVR12 は、 MTS 命令で書 き 込む こ と はで き ません。
MicroBlaze のパ ラ メ ー タ ー C_USE_FPU が 0 よ り も 大 き な値の と き 、FSR はデス テ ィ ネーシ ョ ン と し ての
み有効です。
MicroBlaze のパ ラ メ ー タ ー C_USE_STACK_PROTECTION が 1 に設定 さ れてい る と 、 SLR お よ び SHR は
デス テ ィ ネーシ ョ ン と し てのみ有効です。
C_USE_MMU > 1 (ユーザー モー ド ) お よ び C_MMU_TLB_ACCESS > 1 (読み出 し ) に設定 さ れてい る と 、PID、
ZPR、 お よ び TLBSX はデス テ ィ ネーシ ョ ン と し てのみ有効です。 C_USE_MMU > 1 (ユーザー モー ド ) の と
き 、 TLBLO、 TLBHI、 お よ び TLBX はですテ ィ ーネーシ ョ ン と し てのみ有効です。
MSR[VM] ま たは PID を変更す る と き 、 こ の命令の後には、 常に、 BRI 4 な ど の同期分岐命令が続 く 必要
があ り ます。
UTLB エ ン ト リ を 1 つ以上無効化す る ため TLBHI に書 き 込んだ後は、 コ ヒ ーレ ン ト のマルチプ ロ セ ッ サ
シ ス テ ム で コ ヒ ーレ ン シが保持 さ れ る よ う にす る ため、 MBAR 1 命令を出力す る 必要があ り ます。
MicroBlaze プ ロ セ ッ サ リ フ ァ レ ン ス ガ イ ド
UG984 (v2015.1) 2015 年 4 月 15 日
UG984 (v2015.3)
(v2015.2) 2015 年 96 月 30
24 日
japan.xilinx.com
211
第 5 章 : MicroBlaze 命令セ ッ ト アーキテ ク チ ャ
mul
Multiply
mul
0
1
0
rD、 rA、 rB
0
0
0
0
rD
6
rA
1
1
rB
1
6
0
2
1
0
0
0
0
0
0
0
0
0
0
3
1
説明
レ ジ ス タ rA お よ び rB の内容を乗算 し 、 レ ジ ス タ rD に結果を出力 し ます。 こ れは 32 ビ ッ ト 値を 32 ビ ッ
ト の値で乗算 し た も ので、 64 ビ ッ ト を出力 し ます。 こ の値の最下位 ワー ド は rD に配置 さ れ ます。 最上位
ワ ー ド は破棄 さ れます。
擬似 コ ー ド
(rD)   LSW( (rA)   (rB) )
変更 さ れる レ ジ ス タ
•
rD
レ イテンシ
•
1 サ イ ク ル ( C_AREA_OPTIMIZED=0)
•
3 サ イ ク ル ( C_AREA_OPTIMIZED=1)
注記
こ の命令は、 タ ーゲ ッ ト アーキ テ ク チ ャ に乗算器プ リ ミ テ ィ ブがあ る 場合にのみ有効で、 も し そのプ リ
ミ テ ィ ブがあ る 場合は、 MicroBlaze のパ ラ メ ー タ ー C_USE_HW_MUL は 0 よ り も 大 き な値にな り ます。
MicroBlaze プ ロ セ ッ サ リ フ ァ レ ン ス ガ イ ド
UG984 (v2015.1) 2015 年 4 月 15 日
UG984 (v2015.3)
(v2015.2) 2015 年 96 月 30
24 日
japan.xilinx.com
212
第 5 章 : MicroBlaze 命令セ ッ ト アーキテ ク チ ャ
mulh
Multiply High
mulh
0
1
0
0
0
rD、 rA、 rB
0
0
rD
6
rA
rB
1
1
1
6
0
2
1
0
0
0
0
0
0
0
0
0
1
3
1
説明
レ ジ ス タ rA お よ び rB の内容 を乗算 し 、 レ ジ ス タ rD に結果 を出力 し ま す。 こ れは 32 ビ ッ ト 値 を 32
ビ ッ ト の符号付 き の値で乗算 し た も ので、 64 ビ ッ ト を出力 し ます。 こ の値の最上位 ワー ド は rD に配置
さ れます。 最下位ワ ー ド は破棄 さ れ ます。
擬似 コ ー ド
(rD)   MSW( (rA)  (rB) ), signed
変更 さ れる レ ジ ス タ
•
rD
レ イテンシ
•
1 サ イ ク ル ( C_AREA_OPTIMIZED=0)
•
3 サ イ ク ル ( C_AREA_OPTIMIZED=1)
注記
こ の命令は、 タ ーゲ ッ ト アーキ テ ク チ ャ に乗算器プ リ ミ テ ィ ブがあ る 場合にのみ有効で、 も し そのプ
リ ミ テ ィ ブがあ る 場合は、 MicroBlaze のパ ラ メ ー タ ー C_USE_HW_MUL は 2 (Mul64) に設定 さ れます。
MULH が使用 さ れてい る 場合は、 MUL 命令の ビ ッ ト 30 お よ び 31 は、 こ の 2 つの命令を区別す る た
め、 0 にす る 必要があ り ます。 古いバージ ョ ン の MicroBlaze では、 こ れ ら の ビ ッ ト は 0 に定義 さ れて
い ま し たが、 実際の値は関係があ り ませんで し た。
MicroBlaze プ ロ セ ッ サ リ フ ァ レ ン ス ガ イ ド
UG984 (v2015.1) 2015 年 4 月 15 日
UG984 (v2015.3)
(v2015.2) 2015 年 96 月 30
24 日
japan.xilinx.com
213
第 5 章 : MicroBlaze 命令セ ッ ト アーキテ ク チ ャ
mulhuMultiply High Unsigned
mulhu
0
1
0
0
0
rD、 rA、 rB
0
0
rD
6
rA
rB
1
1
1
6
0
2
1
0
0
0
0
0
0
0
0
1
1
3
1
説明
レ ジ ス タ rA お よ び rB の内容を乗算 し 、 レ ジ ス タ rD に結果を出力 し ます。 こ れは 32 ビ ッ ト の値を 32
ビ ッ ト の符号な し の値で乗算 し た も ので、 符号な し 64 ビ ッ ト を出力 し ます。 こ の値の最上位 ワー ド は
rD に配置 さ れます。 最下位 ワー ド は破棄 さ れ ます。
擬似 コ ー ド
(rD)   MSW( (rA)  (rB) ), unsigned
変更 さ れる レ ジ ス タ
•
rD
レ イテンシ
•
1 サ イ ク ル ( C_AREA_OPTIMIZED=0)
•
3 サ イ ク ル ( C_AREA_OPTIMIZED=1)
注記
こ の命令は、 タ ーゲ ッ ト アーキ テ ク チ ャ に乗算器プ リ ミ テ ィ ブがあ る 場合にのみ有効で、 も し そのプ
リ ミ テ ィ ブがあ る 場合は、 MicroBlaze のパ ラ メ ー タ ー C_USE_HW_MUL は 2 (Mul64) に設定 さ れます。
MULHU が使用 さ れてい る 場合は、 MUL 命令の ビ ッ ト 30 お よ び 31 は、 こ の 2 つの命令を区別す る た
め、 0 にす る 必要があ り ます。 古いバージ ョ ン の MicroBlaze では、 こ れ ら の ビ ッ ト は 0 に定義 さ れて
い ま し たが、 実際の値は関係があ り ませんで し た。
MicroBlaze プ ロ セ ッ サ リ フ ァ レ ン ス ガ イ ド
UG984 (v2015.1) 2015 年 4 月 15 日
UG984 (v2015.3)
(v2015.2) 2015 年 96 月 30
24 日
japan.xilinx.com
214
第 5 章 : MicroBlaze 命令セ ッ ト アーキテ ク チ ャ
mulhsu Multiply High Signed Unsigned
mulhsu
0
1
0
0
0
0
rD、 rA、 rB
0
rD
6
rA
rB
1
1
1
6
0
0
2
1
0
0
0
0
0
0
0
1
0
3
1
説明
レ ジ ス タ rA お よ び rB の内容を乗算 し 、 レ ジ ス タ rD に結果を出力 し ます。 こ れは 32 ビ ッ ト の符号付
き の値を 32 ビ ッ ト の符号な し の値で乗算 し た も ので、 符号な し 64 ビ ッ ト を出力 し ます。 こ の値の最
上位ワ ー ド は rD に配置 さ れ ます。 最下位 ワー ド は破棄 さ れ ます。
擬似 コ ー ド
(rD)   MSW( (rA), signed   (rB), unsigned ), signed
変更 さ れる レ ジ ス タ
•
rD
レ イテンシ
•
1 サ イ ク ル ( C_AREA_OPTIMIZED=0)
•
3 サ イ ク ル ( C_AREA_OPTIMIZED=1)
注記
こ の命令は、 タ ーゲ ッ ト アーキ テ ク チ ャ に乗算器プ リ ミ テ ィ ブがあ る 場合にのみ有効で、 も し その
プ リ ミ テ ィ ブがあ る 場合は、 MicroBlaze のパ ラ メ ー タ ー C_USE_HW_MUL は 2 (Mul64) に設定 さ れ ま
す。
MULHSU が使用 さ れてい る 場合は、 MUL 命令の ビ ッ ト 30 お よ び 31 は、 こ の 2 つの命令を区別す る
ため、 0 にす る 必要があ り ます。 古いバージ ョ ン の MicroBlaze では、 こ れ ら の ビ ッ ト は 0 に定義 さ れ
てい ま し たが、 実際の値は関係があ り ませんで し た。
MicroBlaze プ ロ セ ッ サ リ フ ァ レ ン ス ガ イ ド
UG984 (v2015.1) 2015 年 4 月 15 日
UG984 (v2015.3)
(v2015.2) 2015 年 96 月 30
24 日
japan.xilinx.com
215
第 5 章 : MicroBlaze 命令セ ッ ト アーキテ ク チ ャ
muli Multiply Immediate
muli
0
1
1
rD、 rA、 IMM
0
0
0
0
rD
6
rA
IMM
1
1
1
6
3
1
説明
レ ジ ス タ rA の内容 と IMM の 32 ビ ッ ト に符号拡張 さ れた値を乗算 し 、 レ ジ ス タ rD に結果を出力 し ます。
こ れは 32 ビ ッ ト 値を 32 ビ ッ ト の値で乗算 し た も ので、 64 ビ ッ ト を出力 し ます。 こ の値の最下位 ワ ー ド
は rD に配置 さ れ ます。 最上位 ワー ド は破棄 さ れ ます。
擬似 コ ー ド
(rD)   LSW( (rA)   sext(IMM) )
変更 さ れる レ ジ ス タ
•
rD
レ イテンシ
•
1 サ イ ク ル ( C_AREA_OPTIMIZED=0)
•
3 サ イ ク ル ( C_AREA_OPTIMIZED=1)
注記
デフ ォ ル ト で、 タ イ プ B 命令は 16 ビ ッ ト の IMM フ ィ ール ド 値を取 り 込み、 それを 32 ビ ッ ト に符号拡張
し て、 即値オぺ ラ ン ド と し て使用 し ます。 こ の動作は、 IMM 命令を使用 し て タ イ プ B 命令を先行 さ せ る
こ と で、 上書 き す る こ と がで き ます。 32 ビ ッ ト の即値の使用に関 し ては、 196 ページの 「imm」 を参照 し
て く だ さ い。
こ の命令は、 タ ーゲ ッ ト アーキ テ ク チ ャ に乗算器プ リ ミ テ ィ ブがあ る 場合にのみ有効で、 も し そのプ リ
ミ テ ィ ブがあ る 場合は、 MicroBlaze のパ ラ メ ー タ ー C_USE_HW_MUL は 0 よ り も 大 き な値にな り ます。
MicroBlaze プ ロ セ ッ サ リ フ ァ レ ン ス ガ イ ド
UG984 (v2015.1) 2015 年 4 月 15 日
UG984 (v2015.3)
(v2015.2) 2015 年 96 月 30
24 日
japan.xilinx.com
216
第 5 章 : MicroBlaze 命令セ ッ ト アーキテ ク チ ャ
or
Logical OR
or
1
0
rD、 rA、 rB
0
0
0
0
0
rD
6
rA
1
1
rB
1
6
0
0
0
0
2
1
0
0
0
0
0
0
0
3
1
説明
レ ジ ス タ rA の内容が レ ジ ス タ rB の内容 と OR さ れていて、 その結果が レ ジ ス タ rD に配置 さ れます。
擬似 コ ー ド
(rD)   (rA)   (rB)
変更 さ れる レ ジ ス タ
•
rD
レ イテンシ
•
1 サイ クル
注記
アセ ン ブ ラ の擬似命令 nop は 「or r0, r0, r0」 と し て イ ン プ リ メ ン ト さ れ ます。
MicroBlaze プ ロ セ ッ サ リ フ ァ レ ン ス ガ イ ド
UG984 (v2015.1) 2015 年 4 月 15 日
UG984
(v2015.2) 2015 年 96 月 30
(v2015.3)
24 日
japan.xilinx.com
217
第 5 章 : MicroBlaze 命令セ ッ ト アーキテ ク チ ャ
ori
Logical OR with Immediate
ori
1
0
rD、 rA、 IMM
1
0
0
0
0
rD
6
rA
1
1
IMM
1
6
3
1
説明
レ ジ ス タ rA の内容が IMM フ ィ ール ド の値 (32 ビ ッ ト に符号拡張 さ れた も の) で OR さ れ、 その結果が レ
ジ ス タ rD に配置 さ れ ます。
擬似 コ ー ド
(rD)   (rA)   sext(IMM)
変更 さ れる レ ジ ス タ
•
rD
レ イテンシ
•
1 サイ クル
注記
デフ ォ ル ト で、 タ イ プ B 命令は 16 ビ ッ ト の IMM フ ィ ール ド 値を取 り 込み、 それを 32 ビ ッ ト に符号拡張
し て、 即値オぺ ラ ン ド と し て使用 し ます。 こ の動作は、 IMM 命令を使用 し て タ イ プ B 命令を先行 さ せ る
こ と で、 上書 き す る こ と がで き ます。 32 ビ ッ ト の即値の使用に関 し ては、 196 ページの 「imm」 を参照 し
て く だ さ い。
MicroBlaze プ ロ セ ッ サ リ フ ァ レ ン ス ガ イ ド
UG984 (v2015.1) 2015 年 4 月 15 日
UG984 (v2015.3)
(v2015.2) 2015 年 96 月 30
24 日
japan.xilinx.com
218
第 5 章 : MicroBlaze 命令セ ッ ト アーキテ ク チ ャ
pcmpb Pattern Compare Byte Find
f
pcmpbf
rD、 rA、 rB
1
0
0 0 0
0
0
rD
6
バ イ ト 単位の比較で、 最初に一致 し た位
置を返す
rA
1
1
rB
1
6
1
0
0
0
0
0
2
1
0
0
0
0
0
3
1
説明
レ ジ ス タ rA の内容が レ ジ ス タ rB の内容 と ビ ッ ト 単位で比較 さ れます。
•
rD は最初に一致 し たバ イ ト のペアの位置で ロ ー ド さ れ、 位置 1 の MSB か ら 始ま り 、 位置 4 の LSB ま で比
較 さ れます。
•
バ イ ト ペアが どれ も 一致 し ない場合は、 rD は 0 にセ ッ ト さ れます。
擬似 コ ー ド
if rB[0:7] = rA[0:7] then
(rD)   1
else
if rB[8:15] = rA[8:15] then
(rD)   2
else
if rB[16:23] = rA[16:23] then
(rD)   3
else
if rB[24:31] = rA[24:31] then
(rD)   4
else
(rD)   0
変更 さ れる レ ジ ス タ
•
rD
レ イテンシ
•
1 サイ クル
注記
こ の命令は C_USE_PCMP_INSTR を 1 に設定 し てい る 場合のみ使用可能です。
MicroBlaze プ ロ セ ッ サ リ フ ァ レ ン ス ガ イ ド
UG984 (v2015.1) 2015 年 4 月 15 日
UG984 (v2015.3)
(v2015.2) 2015 年 96 月 30
24 日
japan.xilinx.com
219
第 5 章 : MicroBlaze 命令セ ッ ト アーキテ ク チ ャ
pcmpeqPattern Compare Equal
1
0
pcmpeq
rD、 rA、 rB
0 1 0
rD
0
0
6
正のブール値に等 し いか ど う か を比較
rA
1
1
rB
1
6
1
0
0
0
0
0
0
0
2
1
0
0
0
3
1
説明
レ ジ ス タ rA の内容が レ ジ ス タ rB の内容 と 比較 さ れます。
•
こ の 2 つが一致 し ない と 、 rD は 1 で ロ ー ド さ れ、 そ う でない場合は 0 で ロ ー ド さ れます。
擬似 コ ー ド
if (rB) = (rA) then
(rD)   1
else
(rD)   0
変更 さ れる レ ジ ス タ
•
rD
レ イテンシ
•
1 サイ クル
注記
こ の命令は C_USE_PCMP_INSTR を 1 に設定 し てい る 場合のみ使用可能です。
MicroBlaze プ ロ セ ッ サ リ フ ァ レ ン ス ガ イ ド
UG984 (v2015.1) 2015 年 4 月 15 日
UG984 (v2015.3)
(v2015.2) 2015 年 96 月 30
24 日
japan.xilinx.com
220
第 5 章 : MicroBlaze 命令セ ッ ト アーキテ ク チ ャ
pcmpnePattern Compare Not Equal
1
0
pcmpne
rD、 rA、 rB
0 1 1
rD
0
0
6
負のブール値に等 し いか ど う か を比較
rA
1
1
rB
1
6
1
0
0
0
0
0
0
0
0
2
1
0
0
3
1
説明
レ ジ ス タ rA の内容が レ ジ ス タ rB の内容 と 比較 さ れます。
•
こ の 2 つが一致 し ない と 、 rD には 0 が ロ ー ド さ れ、 そ う でない場合は 1 が ロ ー ド さ れます。
擬似 コ ー ド
if (rB) = (rA) then
(rD)   0
else
(rD)   1
変更 さ れる レ ジ ス タ
•
rD
レ イテンシ
•
1 サイ クル
注記
こ の命令は C_USE_PCMP_INSTR を 1 に設定 し てい る 場合のみ使用可能です。
MicroBlaze プ ロ セ ッ サ リ フ ァ レ ン ス ガ イ ド
UG984 (v2015.1) 2015 年 4 月 15 日
UG984 (v2015.3)
(v2015.2) 2015 年 96 月 30
24 日
japan.xilinx.com
221
第 5 章 : MicroBlaze 命令セ ッ ト アーキテ ク チ ャ
put
Put to stream interface
naput
rA、 FSLx
リ ン ク x にデー タ を配置
n = ノ ンブ ロ ッ キング
a=アト ミ ック
tnaput
FSLx
リ ン ク x にデー タ を配置 (テ ス ト のみ)
n = ノ ンブ ロ ッ キング
a=アト ミ ック
ncaput
rA、 FSLx
リ ン ク x に制御を配置
n = ノ ンブ ロ ッ キング
a=アト ミ ック
tncaput
FSLx
リ ン ク x に制御を配置 (テ ス ト のみ)
n = ノ ンブ ロ ッ キング
a=アト ミ ック
0
1
0
1
0 1 1 0 0 0 0 0
6
rA
11
1
16
n
c
t
a
0
0
0
0
0
0
0
FSLx
28
31
説明
MicroBlaze は レ ジ ス タ rA か ら の値を リ ン ク x イ ン タ ーフ ェ イ ス へ書 き 込みます。 C_FSL_LINKS に よ り
設定 さ れてい る リ ン ク 数が FSLx 以下の場合、 リ ン ク 0 が使用 さ れ ます。
put 命令には 16 個のバ リ エーシ ョ ン があ り ます。
ブ ロ ッ キ ン グ バージ ョ ン (n が 0 の と き ) は、 イ ン タ ーフ ェ イ ス に空 き がで き る ま で MicroBlaze を ス ト ー
ル し ます。 ノ ン ブ ロ ッ キ ン グ バージ ョ ンは、 MicroBlaze を ス ト ール し 、 空 き があればキ ャ リ ーを 0 に、 空
き がなければキ ャ リ ーを 1 にセ ッ ト し ます。
すべてのデー タ put 命令 (c が 0 の と き ) は イ ン タ ーフ ェ イ スへの制御ビ ッ ト を 0 にセ ッ ト し 、 すべての制
御 put 命令 (c が 1 の と き ) は制御ビ ッ ト を 1 にセ ッ ト し ます。
テ ス ト バージ ョ ン (t ビ ッ ト が 1 の と き ) は、 リ ン ク への書 き 込み信号がアサー ト さ れていない場合を除
き 、 標準ケース と し て処理 さ れます (つま り ソ ース レ ジ ス タ は不要)。
ア ト ミ ッ ク バージ ョ ン (a ビ ッ ト が 1 の と き ) は、 割 り 込みで き ま せん。 つ ま り 、 ア ト ミ ッ ク 命令のシー
ケ ン ス は、 プ ロ グ ラ ム フ ロ ーを割 り 込む こ と な く 、 グループに ま と め る こ と がで き ます。 ただ し 、 それ
で も 例外は発生す る 可能性があ り ます。
MicroBlaze が MMU を 使用す る よ う に コ ン フ ィ ギ ュ レ ー ト さ れ て い て (C_USE_MMU >= 1)、 明示的 に
C_MMU_PRIVILEGED_INSTR が 1 に設定 さ れていない場合は、 こ れ ら の命令は特権にな り ます。 つま り 、
命令がユーザー モー ド (MSR[UM]=1) で実行 さ れ る と 、 特権命令例外が発生 し ます。
MicroBlaze プ ロ セ ッ サ リ フ ァ レ ン ス ガ イ ド
UG984 (v2015.1) 2015 年 4 月 15 日
UG984 (v2015.3)
(v2015.2) 2015 年 96 月 30
24 日
japan.xilinx.com
222
第 5 章 : MicroBlaze 命令セ ッ ト アーキテ ク チ ャ
擬似 コ ー ド
if MSR[UM] = 1 then
ESR[EC]   00111
else
x   FSLx
if x >= C_FSL_LINKS then
x  0
Mx_AXIS_TDATA   (rA)
if (n = 1) then
MSR[Carry]   Mx_AXIS_TVALID  Mx_AXIS_TREADY
Mx_AXIS_TLAST   C
変更 さ れる レ ジ ス タ
•
MSR[Carry]
•
ESR[EC] (特権命令例外が生成 さ れ る 場合)
レ イテンシ
•
1 サ イ ク ル ( C_AREA_OPTIMIZED=0)
•
2 サ イ ク ル ( C_AREA_OPTIMIZED=1)
こ の命令のブ ロ ッ キ ン グ バージ ョ ンは、 命令が完了で き る ま で MicroBlaze のパ イ プ ラ イ ン を ス ト ール さ
せます。 C_USE_EXTENDED_FSL_INSTR が 1 に設定 さ れていて、 命令がア ト ミ ッ ク でない場合に、 割 り
込みが行われ ます。
注記
アセ ンブ リ 言語で FSLx イ ン タ ーフ ェ イ ス を参照す る には、 rfsl0、 rfsl1、 ... rfsl15 を使用 し て く だ さ い。
こ の命令のブ ロ ッ キ ン グ バージ ョ ンは、 割 り 込みが実行 さ れな く な る ので、
C_USE_EXTENDED_FSL_INSTR が 1 に設定 さ れてい る と き に遅延ス ロ ッ ト に配置 し ないで く だ さ い。
こ れたの命令は、 MicroBlaze のパ ラ メ ー タ ー C_FSL_LINKS が 0 よ り 大 き い場合のみ使用可能です。
拡張命令 (テ ス ト お よ びア ト ミ ッ ク バージ ョ ン) は、 MicroBlaze のパ ラ メ ー タ ー
C_USE_EXTENDED_FSL_INSTR が 1 に設定 さ れてい る 場合にのみ使用可能です。
パ フ ォ ーマ ン ス 上の理由か ら ど う し て も こ の命令を ユーザー モー ド で実行 し な ければな ら ない場合を除
き 、 こ の命令を ユーザー モー ド で実行 し ない よ う に し て く だ さ い。 リ ン ク の誤用を防 ぐ ためのハー ド ウ ェ
ア保護がすべて削除 さ れて し ま い ます。
MicroBlaze プ ロ セ ッ サ リ フ ァ レ ン ス ガ イ ド
UG984 (v2015.1) 2015 年 4 月 15 日
UG984 (v2015.3)
(v2015.2) 2015 年 96 月 30
24 日
japan.xilinx.com
223
第 5 章 : MicroBlaze 命令セ ッ ト アーキテ ク チ ャ
putd Put to stream interface dynamic
naputd
rA、 rB
デー タ を リ ン ク rB[28:31] に配置
n = ノ ンブ ロ ッ キング
a=アト ミ ック
tnaputd
rB
デー タ を リ ン ク rB[28:31] に配置 (テ ス ト
のみ)
n = ノ ンブ ロ ッ キング
a=アト ミ ック
ncaputd
rA、 rB
制御を リ ン ク rB[28:31] に配置
n = ノ ンブ ロ ッ キング
a=アト ミ ック
tncaputd
rB
制御を リ ン ク rB[28:31] テ ス ト のみに配置
n = ノ ンブ ロ ッ キング
a=アト ミ ック
0
1
0
0
0 1 1 0 0 0 0 0
6
rA
11
rB
16
1
21
n
c
t
a
0
0
0
0
0
0
31
説明
MicroBlaze は、 レ ジ ス タ rA か ら の値を、 rB の最下位か ら 4 つの ビ ッ ト で定義 さ れた リ ン ク イ ン タ ーフ ェ
イ ス に書 き 込みます。C_FSL_LINKS に よ り 設定 さ れてい る リ ン ク 数が、rB の最下位か ら 4 つの ビ ッ ト 以
下の場合、 リ ン ク 0 が使用 さ れ ます。
putd 命令には 16 個のバ リ エーシ ョ ン があ り ます。
ブ ロ ッ キ ン グ バージ ョ ン (n が 0 の と き ) は、 イ ン タ ーフ ェ イ ス に空 き がで き る ま で MicroBlaze を ス ト ー
ル し ます。 ノ ン ブ ロ ッ キ ン グ バージ ョ ンは、 MicroBlaze を ス ト ール し 、 空 き があればキ ャ リ ーを 0 に、 空
き がなければキ ャ リ ーを 1 にセ ッ ト し ます。
すべてのデー タ putd 命令 (c が 0 の と き ) は イ ン タ ーフ ェ イ ス への制御ビ ッ ト を 0 にセ ッ ト し 、 すべての
制御 putd 命令 (c が 1 の と き ) は制御ビ ッ ト を 1 にセ ッ ト し ます。
テ ス ト バージ ョ ン (t ビ ッ ト が 1 の と き ) は、 リ ン ク への書 き 込み信号がアサー ト さ れていない場合を除
き 、 標準ケース と し て処理 さ れます (つま り ソ ース レ ジ ス タ は不要)。
ア ト ミ ッ ク バージ ョ ン (a ビ ッ ト が 1 の と き ) は、 割 り 込みで き ま せん。 つ ま り 、 ア ト ミ ッ ク 命令のシー
ケ ン ス は、 プ ロ グ ラ ム フ ロ ーを割 り 込む こ と な く 、 グループに ま と め る こ と がで き ます。 ただ し 、 それ
で も 例外は発生す る 可能性があ り ます。
MicroBlaze が MMU を 使用す る よ う に コ ン フ ィ ギ ュ レ ー ト さ れ て い て (C_USE_MMU >= 1)、 明示的 に
C_MMU_PRIVILEGED_INSTR が 1 に設定 さ れていない場合は、 こ れ ら の命令は特権にな り ます。 つま り 、
命令がユーザー モー ド (MSR[UM]=1) で実行 さ れ る と 、 特権命令例外が発生 し ます。
MicroBlaze プ ロ セ ッ サ リ フ ァ レ ン ス ガ イ ド
UG984 (v2015.1) 2015 年 4 月 15 日
UG984 (v2015.3)
(v2015.2) 2015 年 96 月 30
24 日
japan.xilinx.com
224
第 5 章 : MicroBlaze 命令セ ッ ト アーキテ ク チ ャ
擬似 コ ー ド
if MSR[UM] = 1 then
ESR[EC]   00111
else
x   rB[28:31]
if x >= C_FSL_LINKS then
x  0
Mx_AXIS_TDATA   (rA)
if (n = 1) then
MSR[Carry]   Mx_AXIS_TVALID  Mx_AXIS_TREADY
Mx_AXIS_TLAST   C
変更 さ れる レ ジ ス タ
•
MSR[Carry]
•
ESR[EC] (特権命令例外が生成 さ れ る 場合)
レ イテンシ
•
1 サ イ ク ル ( C_AREA_OPTIMIZED=0)
•
2 サ イ ク ル ( C_AREA_OPTIMIZED=1)
こ の命令のブ ロ ッ キ ン グ バージ ョ ンは、 命令が完了で き る ま で MicroBlaze のパ イ プ ラ イ ン を ス ト ール
さ せ ます。 命令がア ト ミ ッ ク でな ければ割 り 込みは実行 さ れ ま す。 ア ト ミ ッ ク だ と 割 り 込みは実行 さ
れません。
注記
割 り 込みが実行 さ れな く な っ て し ま う ので、 こ の命令のブ ロ ッ キ ン グ バージ ョ ンは、 遅延ス ロ ッ ト に
配置 し ないで く だ さ い。
MicroBlaze パ ラ メ ー タ ー C_FSL_LINKS が 0 よ り 大 き く 、 パ ラ メ ー タ ー
C_USE_EXTENDED_FSL_INSTR が 1 に設定 さ れてい る 場合にのみ、 こ れ ら の命令は使用可能です。
パフ ォ ーマ ン ス上の理由か ら ど う し て も こ の命令を ユーザー モー ド で実行 し なければな ら ない場合を
除 き 、 こ の命令を ユーザー モー ド で実行 し ない よ う に し て く だ さ い。 リ ン ク の誤用を防 ぐ ためのハー
ド ウ ェ ア保護がすべて削除 さ れて し ま い ます。
MicroBlaze プ ロ セ ッ サ リ フ ァ レ ン ス ガ イ ド
UG984 (v2015.1) 2015 年 4 月 15 日
UG984 (v2015.3)
(v2015.2) 2015 年 96 月 30
24 日
japan.xilinx.com
225
第 5 章 : MicroBlaze 命令セ ッ ト アーキテ ク チ ャ
rsub Arithmetic Reverse Subtract
0
rsub
rD、 rA、 rB
減算
rsubc
rD、 rA、 rB
キ ャ リ ー付 き 減算
rsubk
rD、 rA、 rB
減算お よ びキ ャ リ ー保持
rsubkc
rD、 rA、 rB
キ ャ リ ー付 き 減算お よ びキ ャ リ ー保持
0
0
K C 1
0
rD
6
rA
1
1
rB
1
6
0
2
1
0
0
0
0
0
0
0
0
0
0
3
1
説明
レ ジ ス タ rA の内容が レ ジ ス タ rB の内容か ら 差 し 引かれ、 その結果が レ ジ ス タ rD に配置 さ れます。 命令
の ビ ッ ト 3 (図では K) は、 ニーモニ ッ ク rsubk の場合 1 にセ ッ ト さ れ ます。 命令の ビ ッ ト 4 (図では C) は、
ニーモニ ッ ク rsubc の場合 1 にセ ッ ト さ れ ます。 ニーモニ ッ ク rsubkc の場合は両方の ビ ッ ト が 1 にセ ッ ト
さ れます。
rsub 命令で ビ ッ ト 3 がセ ッ ト さ れてい る と (rsubk、 rsubkc)、 命令実行の結果にかかわ ら ず、 キ ャ リ ー フ ラ
グは前の値を維持 し ます。 ビ ッ ト 3 が ク リ アにな る と (rsub、 rsubc)、 キ ャ リ ー フ ラ グは命令の実行の影響
を受け ます。
命令の ビ ッ ト 4 が 1 にセ ッ ト さ れてい る 場合 (rsubc、 rsubkc)、 キ ャ リ ー フ ラ グの内容 (MSR[C]) が、 命令
実行に影響 し ま す。 ビ ッ ト 4 が ク リ アにな る と (rsub、 rsubk)、 キ ャ リ ー フ ラ グの内容は命令実行には影
響 し ません (標準減算の場合)。
擬似 コ ー ド
if C = 0 then
(rD)   (rB) + (rA) + 1
else
(rD)   (rB) + (rA) + MSR[C]
if K = 0 then
MSR[C]   CarryOut
変更 さ れる レ ジ ス タ
•
rD
•
MSR[C]
レ イテンシ
•
1 サイ クル
注記
減算では、 キ ャ リ ー = (ボ ロ ー ) です。 減算でキ ャ リ ー (繰 り 上が り ) が設定 さ れ る場合は、 ボ ロ ー (繰 り 下
が り ) がない と い う こ と で、 キ ャ リ ーが ク リ アにな る と 、 ボ ロ ーがあ る と い う こ と にな り ます。
MicroBlaze プ ロ セ ッ サ リ フ ァ レ ン ス ガ イ ド
UG984 (v2015.1) 2015 年 4 月 15 日
UG984 (v2015.3)
(v2015.2) 2015 年 96 月 30
24 日
japan.xilinx.com
226
第 5 章 : MicroBlaze 命令セ ッ ト アーキテ ク チ ャ
rsub Arithmetic Reverse Subtract Immediate
i
rsubi
rD、 rA、 IMM 即値減算
0
rsubic
rD、 rA、 IMM
rsubik
rD、 rA、 IMM 即値減算お よ びキ ャ リ ー保持
rsubikc
rD、 rA、 IMM
0
1
K C 1
0
キ ャ リ ー付 き 即値減算
キ ャ リ ー付 き 即値減算お よ びキ ャ リ ー保持
rD
6
rA
IMM
1
1
1
6
3
1
説明
レ ジ ス タ rA の内容が IMM の 32 ビ ッ ト に符号拡張 さ れた値か ら 差 し 引かれ、 その結果が レ ジ ス タ rD に
配置 さ れ ま す。 命令の ビ ッ ト 3 (図では K) は、 ニーモニ ッ ク rsubik の場合 1 にセ ッ ト さ れ ま す。 命令の
ビ ッ ト 4 (図では C) は、 ニーモニ ッ ク rsubic の場合 1 にセ ッ ト さ れ ます。 ニーモニ ッ ク rsubikc の場合は
両方の ビ ッ ト が 1 にセ ッ ト さ れ ます。
rsubi 命令で ビ ッ ト 3 がセ ッ ト さ れてい る と (rsubik、 rsubikc)、 命令実行の結果にかかわ ら ず、 キ ャ リ ー フ
ラ グは前の値を維持 し ます。 ビ ッ ト 3 が ク リ アにな る と (rsubi、 rsubic)、 キ ャ リ ー フ ラ グは命令の実行の
影響を受け ます。 命令の ビ ッ ト 4 が 1 にセ ッ ト さ れてい る 場合 (rsubic、 rsubikc)、 キ ャ リ ー フ ラ グの内容
(MSR[C]) が、 命令実行に影響 し ます。 ビ ッ ト 4 が ク リ アにな る と (rsubi、 rsubik)、 キ ャ リ ー フ ラ グの内容
は命令実行には影響 し ません (標準減算の場合)。
擬似 コ ー ド
if C = 0 then
(rD)   sext(IMM) + (rA) + 1
else
(rD)   sext(IMM) + (rA) + MSR[C]
if K = 0 then
MSR[C]   CarryOut
変更 さ れる レ ジ ス タ
•
rD
•
MSR[C]
レ イテンシ
•
1 サイ クル
注記
減算では、 キ ャ リ ー = (ボ ロ ー ) です。 減算でキ ャ リ ー (繰 り 上が り ) が設定 さ れ る場合は、 ボ ロ ー (繰 り 下
が り ) がない と い う こ と で、 キ ャ リ ーが ク リ アにな る と 、 ボ ロ ーがあ る と い う こ と にな り ます。 デフ ォ ル
ト で、 タ イ プ B 命令は 16 ビ ッ ト の IMM フ ィ ール ド 値を取 り 込み、 それを 32 ビ ッ ト に符号拡張 し て、 即
値オぺ ラ ン ド と し て使用 し ま す。 こ の動作は、 IMM 命令を使用 し て タ イ プ B 命令を先行 さ せ る こ と で、
上書 き す る こ と がで き ます。32 ビ ッ ト の即値の使用に関 し ては、196 ページの「imm」 を参照 し て く だ さ い。
MicroBlaze プ ロ セ ッ サ リ フ ァ レ ン ス ガ イ ド
UG984 (v2015.1) 2015 年 4 月 15 日
UG984 (v2015.3)
(v2015.2) 2015 年 96 月 30
24 日
japan.xilinx.com
227
第 5 章 : MicroBlaze 命令セ ッ ト アーキテ ク チ ャ
rtbd Return from Break
rn from Interrupt
rtbd
1
0
1
rA、 IMM
1
0
1
0
1
0
0
1
0
6
rA
IMM
11
16
31
説明
ブ レー ク か ら 戻 る と 、rA の内容 と IMM フ ィ ール ド (32 ビ ッ ト に符号拡張 さ れた も の) で指定 さ れた ロ ケー
シ ョ ン に分岐 し ます。 ま た、 MSR の BIP フ ラ グ を ク リ アにす る こ と に よ り 実行後ブ レー ク を イ ネーブル
に し ます。
こ の命令には常に遅延 ス ロ ッ ト が あ り ま す。 RTBD の後に続 く 命令は、 常に、 分岐先の前に実行 さ れ ま
す。 その遅延ス ロ ッ ト 命令ではブ レー ク はデ ィ ス エーブルにな っ てい ます。
MicroBlaze が MMU を使用す る よ う に (C_USE_MMU >= 1) コ ン フ ィ ギ ュ レー ト さ れてい る 場合、 こ の命令
は特権命令です。 つ ま り 、 命令がユーザー モー ド (MSR[UM] = 1) で実行 さ れ る と 、 特権命令例外が発生
し ます。
擬似 コ ー ド
if MSR[UM] = 1 then
ESR[EC]   00111
else
PC   (rA) + sext(IMM)
allow following instruction to complete execution
MSR[BIP]   0
MSR[UM]   MSR[UMS]
MSR[VM]   MSR[VMS]
変更 さ れる レ ジ ス タ
•
PC
•
MSR[BIP]、 MSR[UM]、 MSR[VM]
•
ESR[EC] (特権命令例外が生成 さ れ る 場合)
レ イテンシ
•
2 サイ クル
注記
変換は汎用レ ジ ス タ r16 を rA と し て使用す る ための も のです。
遅延 ス ロ ッ ト は、 IMM、 分岐、 ま たはブ レ ー ク の命令で使用す る こ と はで き ま せん。 割 り 込みお よ び外
部ハー ド ウ ェ ア ブ レー ク は、 遅延ス ロ ッ ト の分岐が完了す る ま で先送 り さ れ ます。
MicroBlaze プ ロ セ ッ サ リ フ ァ レ ン ス ガ イ ド
UG984 (v2015.1) 2015 年 4 月 15 日
UG984 (v2015.3)
(v2015.2) 2015 年 96 月 30
24 日
japan.xilinx.com
228
第 5 章 : MicroBlaze 命令セ ッ ト アーキテ ク チ ャ
rtid
Return from Interrupt
rn from Interrupt
rtid
1
0
1
rA、 IMM
1
0
0
1
1
0
0
0
1
6
rA
IMM
11
16
31
説明
割 り 込みか ら 戻 る と 、 rA の内容 と IMM フ ィ ール ド (32 ビ ッ ト に符号拡張 さ れた も の) で指定 さ れた ロ
ケーシ ョ ンに分岐 し ます。 ま た、 実行後に割 り 込みが イ ネーブルにな り ます。
こ の命令には常に遅延ス ロ ッ ト があ り ます。 RTID の後に続 く 命令は、 常に、 分岐先の前に実行 さ れま
す。 その遅延ス ロ ッ ト 命令では割 り 込みはデ ィ ス エーブルにな っ てい ます。
MicroBlaze が MMU を使用す る よ う に (C_USE_MMU >= 1) コ ン フ ィ ギ ュ レー ト さ れてい る 場合、 こ の命
令は特権命令です。 つま り 、 命令がユーザー モー ド (MSR[UM] = 1) で実行 さ れ る と 、 特権命令例外
が発生 し ます。
低レ イ テ ン シ割 り 込みモー ド だ と C_USE_INTERRUPT = 2)、 こ の命令が実行 さ れ る と Interrupt_Ack 出
力ポー ト が 10 にセ ッ ト さ れ、 その後で MSR{IE] ビ ッ ト がセ ッ ト さ れ る と 11 にな り ます。
擬似 コ ー ド
if MSR[UM] = 1 then
ESR[EC]   00111
else
PC   (rA) + sext(IMM)
Interrupt_Ack   10
allow following instruction to complete execution
MSR[IE]   1
MSR[UM]   MSR[UMS]
MSR[VM]   MSR[VMS]
Interrupt_Ack   11
変更 さ れる レ ジ ス タ
•
PC
•
MSR[IE]、 MSR[UM]、 MSR[VM]
•
ESR[EC] (特権命令例外が生成 さ れ る 場合)
レ イテンシ
•
2 サイ クル
注記
変換は汎用レ ジ ス タ r14 を rA と し て使用す る ための も のです。
遅延 ス ロ ッ ト は、 IMM、 分岐、 ま たはブ レー ク の命令で使用す る こ と はで き ません。 割 り 込みお よ び
外部ハー ド ウ ェ ア ブ レー ク は、 遅延ス ロ ッ ト の分岐が完了す る ま で先送 り さ れます。
MicroBlaze プ ロ セ ッ サ リ フ ァ レ ン ス ガ イ ド
UG984 (v2015.1) 2015 年 4 月 15 日
UG984 (v2015.3)
(v2015.2) 2015 年 96 月 30
24 日
japan.xilinx.com
229
第 5 章 : MicroBlaze 命令セ ッ ト アーキテ ク チ ャ
rted
Return from Exception
rted
1
0
1
rA、 IMM
1
0
1
0
1
0
1
0
0
6
rA
IMM
11
16
31
説明
例外か ら 戻 る と 、rA の内容 と IMM フ ィ ール ド (32 ビ ッ ト に符号拡張 さ れた も の) で指定 さ れた ロ ケーシ ョ
ンに分岐 し ます。 ま た、 実行後に例外が イ ネーブルにな り ます。
こ の命令には常に遅延ス ロ ッ ト があ り ます。 RTED の後に続 く 命令は、 常に、 分岐先の前に実行 さ れます。
MicroBlaze が MMU を使用す る よ う に (C_USE_MMU >= 1) コ ン フ ィ ギ ュ レー ト さ れてい る 場合、 こ の命令
は特権命令です。 つ ま り 、 命令がユーザー モー ド (MSR[UM] = 1) で実行 さ れ る と 、 特権命令例外が発生
し ます。
擬似 コ ー ド
if MSR[UM] = 1 then
ESR[EC]   00111
else
PC   (rA) + sext(IMM)
allow following instruction to complete execution
MSR[EE]   1
MSR[EIP]   0
MSR[UM]   MSR[UMS]
MSR[VM]   MSR[VMS]
ESR   
変更 さ れる レ ジ ス タ
•
•
•
PC
MSR[EE]、 MSR[EIP]、 MSR[UM]、 MSR[VM]
ESR
レ イテンシ
•
2 サイ クル
注記
変換は汎用レ ジ ス タ r17 を rA と し て使用す る ための も のです。 こ の命令の場合、 MicroBlaze のパ ラ メ ー
タ ー C_*_EXCEPTION が 1 つ以上 1 に設定 さ れてい る か、 C_USE_MMU > 0 であ る 必要があ り ます。
遅延 ス ロ ッ ト は、 IMM、 分岐、 ま たはブ レ ー ク の命令で使用す る こ と はで き ま せん。 割 り 込みお よ び外
部ハー ド ウ ェ ア ブ レー ク は、 遅延ス ロ ッ ト の分岐が完了す る ま で先送 り さ れ ます。
遅延ス ロ ッ ト の命令が例外を引 き 起 こ す場合、 例外ハン ド ラ には、 例外が イ ネーブルにな っ ていない と 入
れないため、 MSR[EE] がセ ッ ト さ れてい る と き は、 こ の命令を通常は使用 し ないで く だ さ い。
注記 : MSR[DS] がセ ッ ト さ れてい る 場合は、 まず例外か ら 戻 る コ ー ド を チ ェ ッ ク す る 必要があ り 、 その場合は BTR
のア ド レ ス に戻 り ます。
MicroBlaze プ ロ セ ッ サ リ フ ァ レ ン ス ガ イ ド
UG984 (v2015.1) 2015 年 4 月 15 日
UG984 (v2015.3)
(v2015.2) 2015 年 96 月 30
24 日
japan.xilinx.com
230
第 5 章 : MicroBlaze 命令セ ッ ト アーキテ ク チ ャ
rtsd
Return from Subroutine
rtsd
1
0
1
1
0
rA、 IMM
0
1
1
0
0
0
0
6
rA
IMM
1
1
1
6
3
1
説明
サブルーチンか ら 戻 る と 、 rA の内容 と IMM フ ィ ール ド (32 ビ ッ ト に符号拡張 さ れた も の) で指定 さ れ
た ロ ケーシ ョ ン に分岐 し ます。
こ の命令には常に遅延ス ロ ッ ト があ り ます。 RTSD の後に続 く 命令は、 常に、 分岐先の前に実行 さ れま
す。
擬似 コ ー ド
PC   (rA) + sext(IMM)
allow following instruction to complete execution
変更 さ れる レ ジ ス タ
•
PC
レ イテンシ
•
1 サ イ ク ル (正 し く 分岐予測が行われ る 場合)
•
2 サ イ ク ル (分岐先キ ャ ッ シ ュ がデ ィ ス エーブルの場合)
•
3 サ イ ク ル (分岐予測が間違っ てい る 場合)
注記
変換は汎用レ ジ ス タ r15 を rA と し て使用す る ための も のです。
遅延 ス ロ ッ ト は、 IMM、 分岐、 ま たはブ レー ク の命令で使用す る こ と はで き ません。 割 り 込みお よ び
外部ハー ド ウ ェ ア ブ レー ク は、 遅延ス ロ ッ ト の分岐が完了す る ま で先送 り さ れます。
MicroBlaze プ ロ セ ッ サ リ フ ァ レ ン ス ガ イ ド
UG984 (v2015.1) 2015 年 4 月 15 日
UG984 (v2015.3)
(v2015.2) 2015 年 96 月 30
24 日
japan.xilinx.com
231
第 5 章 : MicroBlaze 命令セ ッ ト アーキテ ク チ ャ
sb
Store Byte
1
sb
rD、 rA、 rB
sbr
rD、 rA、 rB
1
0
1 0 0
0
rD
6
rA
rB
11
16
0
R
0
0
0
0
0
0
21
0
0
0
31
説明
レ ジ ス タ rD の最下位バ イ ト の内容を、 レ ジ ス タ rA お よ び rB の内容を足 し た結果の メ モ リ ロ ケーシ ョ ン
に格納 し ます。
R ビ ッ ト がセ ッ ト さ れてい る 場合、 バ イ ト 反転 メ モ リ ロ ケーシ ョ ン が使用 さ れ、 E ビ ッ ト で定義 さ れてい
る エ ンデ ィ ア ン と は逆の も のでデー タ を格納 し ます (仮想保護モー ド が イ ネーブルにな っ てい る 場合)。
仮想保護モー ド が イ ネーブルにな っ てい る 場合、 デー タ TLB ミ ス例外が発生 し 、 ア ド レ ス に対応す る 有
効な変換エ ン ト リ は TLB では検出 さ れ ません。
仮想保護モー ド が イ ネーブルにな っ てい る と デー タ ス ト レージ例外が発生 し 、 ノ ー ア ク セ ス ま たは読み
出 し 専用ゾーン保護に よ っ て ア ク セ ス が禁止 さ れ ます。 ノ ー ア ク セ ス許可はユーザー モー ド の場合にの
み発生 し ます。
擬似 コ ー ド
Addr   (rA) + (rB)
if TLB_Miss(Addr) and MSR[VM] = 1 then
ESR[EC]  10010;ESR[S]  1
MSR[UMS]   MSR[UM]; MSR[VMS]   MSR[VM]; MSR[UM]   0; MSR[VM]   0
else if Access_Protected(Addr) and MSR[VM] = 1 then
ESR[EC]   10000;ESR[S]  1; ESR[DIZ]   No-access-allowed
MSR[UMS]   MSR[UM]; MSR[VMS]  MSR[VM]; MSR[UM]   0; MSR[VM]   0
else
Mem(Addr)    rD)[24:31]
変更 さ れる レ ジ ス タ
•
MSR[UM]、 MSR[VM]、 MSR[UMS]、 MSR[VMS] (例外が生成 さ れ る 場合)
•
ESR[EC]、 ESR[S] (例外が生成 さ れ る 場合)
•
ESR[DIZ] (デー タ ス ト レージ例外が生成 さ れ る 場合)
レ イテンシ
•
1 サ イ ク ル ( C_AREA_OPTIMIZED=0)
•
2 サ イ ク ル ( C_AREA_OPTIMIZED=1)
注記
MicroBlaze が再順序付け命令を使用す る よ う に コ ン フ ィ ギ ュ レー ト さ れてい る 場合にのみ
(C_USE_REORDER_INSTR = 1)、 こ のバ イ ト 反転命令は有効です。
MicroBlaze プ ロ セ ッ サ リ フ ァ レ ン ス ガ イ ド
UG984 (v2015.1) 2015 年 4 月 15 日
UG984 (v2015.3)
(v2015.2) 2015 年 96 月 30
24 日
japan.xilinx.com
232
第 5 章 : MicroBlaze 命令セ ッ ト アーキテ ク チ ャ
sbi
Store Byte Immediate
sbi
1
1
rD、 rA、 IMM
1
1
0
0
0
rD
6
rA
IMM
11
16
31
説明
レ ジ ス タ rD の最下位バ イ ト の内容に、 レ ジ ス タ rA の内容 と IMM の 32 ビ ッ ト に符号拡張 し た値を足 し
た結果の メ モ リ ロ ケーシ ョ ン に格納 し ます。
仮想保護モー ド が イ ネーブルにな っ てい る 場合、 デー タ TLB ミ ス例外が発生 し 、 ア ド レ ス に対応す る 有
効な変換エ ン ト リ は TLB では検出 さ れ ません。
仮想保護モー ド が イ ネーブルにな っ てい る と デー タ ス ト レージ例外が発生 し 、 ノ ー ア ク セ ス ま たは読み
出 し 専用ゾーン保護に よ っ て ア ク セ ス が禁止 さ れ ます。 ノ ー ア ク セ ス許可はユーザー モー ド の場合にの
み発生 し ます。
擬似 コ ー ド
Addr  (rA) + sext(IMM)
if TLB_Miss(Addr) and MSR[VM] = 1 then
ESR[EC]  10010;ESR[S]  1
MSR[UMS]   MSR[UM]; MSR[VMS]   MSR[VM]; MSR[UM]   0; MSR[VM]   0
else if Access_Protected(Addr) and MSR[VM] = 1 then
ESR[EC]   10000;ESR[S]  1; ESR[DIZ]   No-access-allowed
MSR[UMS]   MSR[UM]; MSR[VMS]  MSR[VM]; MSR[UM]   0; MSR[VM]   0
else
Mem(Addr)    rD)[24:31]
変更 さ れる レ ジ ス タ
•
MSR[UM]、 MSR[VM]、 MSR[UMS]、 MSR[VMS] (例外が生成 さ れ る 場合)
•
ESR[EC]、 ESR[S] (例外が生成 さ れ る 場合)
•
ESR[DIZ] (デー タ ス ト レージ例外が生成 さ れ る 場合)
レ イテンシ
•
1 サ イ ク ル ( C_AREA_OPTIMIZED=0)
•
2 サ イ ク ル ( C_AREA_OPTIMIZED=1)
注記
デフ ォ ル ト で、 タ イ プ B 命令は 16 ビ ッ ト の IMM フ ィ ール ド 値を取 り 込み、 それを 32 ビ ッ ト に符号拡張
し て、 即値オぺ ラ ン ド と し て使用 し ます。 こ の動作は、 IMM 命令を使用 し て タ イ プ B 命令を先行 さ せ る
こ と で、 上書 き す る こ と がで き ます。 32 ビ ッ ト の即値の使用に関 し ては、 196 ページの 「imm」 を参照 し
て く だ さ い。
MicroBlaze プ ロ セ ッ サ リ フ ァ レ ン ス ガ イ ド
UG984 (v2015.1) 2015 年 4 月 15 日
UG984 (v2015.3)
(v2015.2) 2015 年 96 月 30
24 日
japan.xilinx.com
233
第 5 章 : MicroBlaze 命令セ ッ ト アーキテ ク チ ャ
sext16 Sign Extend Halfword
sext16
1
0
0
1
0
rD、 rA
0
0
rD
6
rA
1
1
0
0
1
6
0
0
0
0
0
0
0
1
1
0
0
0
0
1
3
1
説明
こ の命令は 1 ハーフ ワ ー ド (16 ビ ッ ト ) を 1 ワ ー ド (32 ビ ッ ト ) に符号拡張 し ます。rA のビ ッ ト 16 は rD
の ビ ッ ト 0 か ら 15 に コ ピー さ れ ます。 rA の ビ ッ ト 16 か ら 31 は rD の ビ ッ ト 16 か ら 31 に コ ピー さ れ
ます。
擬似 コ ー ド
(rD)[0:15]  (rA)[16]
(rD)[16:31]   (rA)[16:31]
変更 さ れる レ ジ ス タ
•
rD
レ イテンシ
•
1 サイ クル
MicroBlaze プ ロ セ ッ サ リ フ ァ レ ン ス ガ イ ド
UG984 (v2015.1) 2015 年 4 月 15 日
UG984 (v2015.3)
(v2015.2) 2015 年 96 月 30
24 日
japan.xilinx.com
234
第 5 章 : MicroBlaze 命令セ ッ ト アーキテ ク チ ャ
sext8
Sign Extend Byte
sext8
1
0
0
1
0
rD、 rA
0
0
rD
6
rA
1
1
0
0
1
6
0
0
0
0
0
0
0
1
1
0
0
0
0
0
3
1
説明
こ の命令は 1 バ イ ト (8 ビ ッ ト ) を 1 ワー ド (32 ビ ッ ト ) に符号拡張 し ます。rA の ビ ッ ト 24 は rD の ビ ッ
ト 0 か ら 23 に コ ピー さ れます。 rA の ビ ッ ト 24 か ら 31 は rD のビ ッ ト 24 か ら 31 に コ ピー さ れます。
擬似 コ ー ド
(rD)[0:23]  (rA)[24]
(rD)[24:31]   (rA)[24:31]
変更 さ れる レ ジ ス タ
•
rD
レ イテンシ
•
1 サイ クル
MicroBlaze プ ロ セ ッ サ リ フ ァ レ ン ス ガ イ ド
UG984 (v2015.1) 2015 年 4 月 15 日
UG984 (v2015.3)
(v2015.2) 2015 年 96 月 30
24 日
japan.xilinx.com
235
第 5 章 : MicroBlaze 命令セ ッ ト アーキテ ク チ ャ
sh
Store Halfword
1
1
sh
rD、 rA、 rB
shr
rD、 rA、 rB
0
1 0 1
0
rD
6
rA
rB
11
16
0
R
0
0
0
0
0
0
0
21
0
0
31
説明
レ ジ ス タ rD の最下位ハー フ ワ ー ド の内容を、 レ ジ ス タ rA お よ び rB の内容を足 し た結果の、 ハーフ
ワ ー ド にア ラ イ ン さ れた メ モ リ ロ ケーシ ョ ンに格納 し ます。
R ビ ッ ト がセ ッ ト さ れてい る 場合、 ハーフ ワ ー ド 反転 メ モ リ ロ ケーシ ョ ン が使用 さ れ、 ハーフ ワ ー ド
の 2 バ イ ト が反転 し 、 E ビ ッ ト で定義 さ れてい る エ ンデ ィ ア ン と は逆の も のでデー タ を格納 し ます (仮
想保護モー ド が イ ネーブルにな っ てい る 場合)。
仮想保護モー ド が イ ネーブルにな っ てい る 場合、 デー タ TLB ミ ス例外が発生 し 、 ア ド レ ス に対応す る
有効な変換エ ン ト リ は TLB では検出 さ れ ません。
仮想保護モー ド が イ ネーブルにな っ てい る と デー タ ス ト レージ例外が発生 し 、 ノ ー ア ク セ ス ま たは読
み出 し 専用ゾーン保護に よ っ て ア ク セ ス が禁止 さ れ ます。 ノ ー ア ク セ ス許可はユーザー モー ド の場合
にのみ発生 し ます。
ア ド レ ス の最下位ビ ッ ト がゼ ロ でない場合は、 ア ラ イ ン さ れていないデー タ ア ク セ ス例外が発生 し ま
す。
擬似 コ ー ド
Addr   (rA) + (rB)
if TLB_Miss(Addr) and MSR[VM] = 1 then
ESR[EC]  10010;ESR[S]  1
MSR[UMS]   MSR[UM]; MSR[VMS]   MSR[VM]; MSR[UM]   0; MSR[VM]   0
else if Access_Protected(Addr) and MSR[VM] = 1 then
ESR[EC]   10000;ESR[S]  1; ESR[DIZ]   No-access-allowed
MSR[UMS]   MSR[UM]; MSR[VMS]   MSR[VM]; MSR[UM]   0; MSR[VM]   0
else if Addr[31]  0 then
ESR[EC]   00001; ESR[W]   0; ESR[S]   1; ESR[Rx]   rD
else
Mem(Addr)   (rD)[16:31]
変更 さ れる レ ジ ス タ
•
•
•
•
MSR[UM]、MSR[VM]、MSR[UMS]、MSR[VMS] (TLB ミ ス例外ま たはデー タ ス ト レージ例外が生成 さ れ る 場合)
ESR[EC]、 ESR[S] (例外が生成 さ れ る 場合)
ESR[DIZ] (デー タ ス ト レージ例外が生成 さ れ る 場合)
ESR[W]、 ESR[Rx] (ア ラ イ ン さ れていないデー タ ア ク セ ス例外が生成 さ れ る 場合)
レ イテンシ
•
•
1 サ イ ク ル ( C_AREA_OPTIMIZED=0)
2 サ イ ク ル ( C_AREA_OPTIMIZED=1)
注記
MicroBlaze が再順序付け命令を使用す る よ う に コ ン フ ィ ギ ュ レー ト さ れてい る 場合にのみ
(C_USE_REORDER_INSTR = 1)、 こ のハーフ ワー ド 反転命令は有効です。
MicroBlaze プ ロ セ ッ サ リ フ ァ レ ン ス ガ イ ド
UG984 (v2015.1) 2015 年 4 月 15 日
UG984 (v2015.3)
(v2015.2) 2015 年 96 月 30
24 日
japan.xilinx.com
236
第 5 章 : MicroBlaze 命令セ ッ ト アーキテ ク チ ャ
shi
Store Halfword Immediate
shi
1
1
1
rD、 rA、 IMM
1
0
0
1
rD
6
rA
IMM
11
16
31
説明
レ ジ ス タ rD の最下位ハーフ ワー ド の内容を、 レ ジ ス タ rA の内容 と IMM の 32 ビ ッ ト に符号拡張 し た
値を足 し た結果の、 ハーフ ワ ー ド にア ラ イ ン さ れた メ モ リ ロ ケーシ ョ ンに格納 し ます。
仮想保護モー ド が イ ネーブルにな っ てい る 場合、 デー タ TLB ミ ス例外が発生 し 、 ア ド レ ス に対応す る
有効な変換エ ン ト リ は TLB では検出 さ れ ません。 仮想保護モー ド が イ ネーブルにな っ てい る と デー タ
ス ト レージ例外が発生 し 、 ノ ー ア ク セ ス ま たは読み出 し 専用ゾーン保護に よ っ て ア ク セ ス が禁止 さ れ
ます。 ノ ー ア ク セ ス許可はユーザー モー ド の場合にのみ発生 し ます。 ア ド レ ス の最下位ビ ッ ト がゼ ロ
でない場合は、 ア ラ イ ン さ れていないデー タ ア ク セ ス例外が発生 し ます。
擬似 コ ー ド
Addr   (rA) + sext(IMM)
if TLB_Miss(Addr) and MSR[VM] = 1 then
ESR[EC]  10010;ESR[S]  1
MSR[UMS]   MSR[UM]; MSR[VMS]   MSR[VM]; MSR[UM]   0; MSR[VM]   0
else if Access_Protected(Addr) and MSR[VM] = 1 then
ESR[EC]   10000;ESR[S]  1; ESR[DIZ]   No-access-allowed
MSR[UMS]   MSR[UM]; MSR[VMS]   MSR[VM]; MSR[UM]   0; MSR[VM]   0
else if Addr[31]  0 then
ESR[EC]   00001; ESR[W]   0; ESR[S]   1; ESR[Rx]   rD
else
Mem(Addr)    rD)[16:31]
変更 さ れる レ ジ ス タ
•
MSR[UM]、MSR[VM]、MSR[UMS]、MSR[VMS] (TLB ミ ス例外ま たはデー タ ス ト レージ例外が生成 さ れ る 場合)
•
ESR[EC]、 ESR[S] (例外が生成 さ れ る 場合)
•
ESR[DIZ] (デー タ ス ト レージ例外が生成 さ れ る 場合)
•
ESR[W]、 ESR[Rx] (ア ラ イ ン さ れていないデー タ ア ク セ ス例外が生成 さ れ る 場合)
レ イテンシ
•
1 サ イ ク ル ( C_AREA_OPTIMIZED=0)
•
2 サ イ ク ル ( C_AREA_OPTIMIZED=1)
注記
デフ ォ ル ト で、 タ イ プ B 命令は 16 ビ ッ ト の IMM フ ィ ール ド 値を取 り 込み、 それを 32 ビ ッ ト に符号拡
張 し て、 即値オぺ ラ ン ド と し て使用 し ます。 こ の動作は、 IMM 命令を使用 し て タ イ プ B 命令を先行 さ
せ る こ と で、 上書 き す る こ と がで き ます。 32 ビ ッ ト の即値の使用に関 し ては、 196 ページの 「imm」 を
参照 し て く だ さ い。
MicroBlaze プ ロ セ ッ サ リ フ ァ レ ン ス ガ イ ド
UG984 (v2015.1) 2015 年 4 月 15 日
UG984 (v2015.3)
(v2015.2) 2015 年 96 月 30
24 日
japan.xilinx.com
237
第 5 章 : MicroBlaze 命令セ ッ ト アーキテ ク チ ャ
sra
Shift Right Arithmetic
sra
1
0
0
1
rD、 rA
0
0
0
rD
6
rA
1
1
0
0
1
6
0
0
0
0
0
0
0
0
0
0
0
0
0
1
3
1
説明
rA の内容を 1 ビ ッ ト 右にシ フ ト さ せ、 結果を rD に配置 し ます。 rA の最上位ビ ッ ト (つま り 符号ビ ッ
ト ) は、rD の最上位ビ ッ ト に配置 さ れ ます。 シ フ ト チ ェ ーン か ら 出力 さ れ る 最下位ビ ッ ト はキ ャ リ ー
フ ラ グに配置 さ れ ます。
擬似 コ ー ド
(rD)[0]  (rA)[0]
(rD)[1:31]   (rA)[0:30]
MSR[C]   (rA)[31]
変更 さ れる レ ジ ス タ
•
rD
•
MSR[C]
レ イテンシ
•
1 サイ クル
MicroBlaze プ ロ セ ッ サ リ フ ァ レ ン ス ガ イ ド
UG984 (v2015.1) 2015 年 4 月 15 日
UG984 (v2015.3)
(v2015.2) 2015 年 96 月 30
24 日
japan.xilinx.com
238
第 5 章 : MicroBlaze 命令セ ッ ト アーキテ ク チ ャ
src
Shift Right with Carry
src
1
0
rD、 rA
0
1
0
0
0
rD
6
rA
1
1
0
0
1
6
0
0
0
0
0
0
0
0
1
0
0
0
0
1
3
1
説明
rA の内容を 1 ビ ッ ト 右にシ フ ト さ せ、 結果を rD に配置 し ます。 キ ャ リ ー フ ラ グはシ フ ト チ ェ ーン でシ
フ ト さ れ、 rD の最上位ビ ッ ト に配置 さ れ ます。 シ フ ト チ ェ ーン か ら 出力 さ れ る 最下位ビ ッ ト はキ ャ リ ー
フ ラ グに配置 さ れます。
擬似 コ ー ド
(rD)[0]  MSR[C]
(rD)[1:31]    rA)[0:30]
MSR[C]   (rA)[31]
変更 さ れる レ ジ ス タ
•
rD
•
MSR[C]
レ イテンシ
•
1 サイ クル
MicroBlaze プ ロ セ ッ サ リ フ ァ レ ン ス ガ イ ド
UG984 (v2015.1) 2015 年 4 月 15 日
UG984 (v2015.3)
(v2015.2) 2015 年 96 月 30
24 日
japan.xilinx.com
239
第 5 章 : MicroBlaze 命令セ ッ ト アーキテ ク チ ャ
srl
Shift Right Logical
srl
1
0
rD、 rA
0
1
0
0
0
rD
6
rA
1
1
0
0
1
6
0
0
0
0
0
0
0
1
0
0
0
0
0
1
3
1
説明
rA の内容を論理的に 1 ビ ッ ト 右にシ フ ト さ せ、 結果を rD に配置 し ます。 0 はシ フ ト チ ェーン でシ フ ト さ
れ、 rD の最上位ビ ッ ト に配置 さ れ ます。 シ フ ト チ ェーン か ら 出力 さ れ る 最下位ビ ッ ト はキ ャ リ ー フ ラ グ
に配置 さ れ ます。
擬似 コ ー ド
(rD)[0]  0
(rD)[1:31]    rA)[0:30]
MSR[C]   (rA)[31]
変更 さ れる レ ジ ス タ
•
rD
•
MSR[C]
レ イテンシ
•
1 サイ クル
MicroBlaze プ ロ セ ッ サ リ フ ァ レ ン ス ガ イ ド
UG984 (v2015.1) 2015 年 4 月 15 日
UG984 (v2015.3)
(v2015.2) 2015 年 96 月 30
24 日
japan.xilinx.com
240
第 5 章 : MicroBlaze 命令セ ッ ト アーキテ ク チ ャ
sw
Store Word
1
sw
rD、 rA、 rB
swr
rD、 rA、 rB
1
0
1 1
0
0
rD
6
rA
11
rB
16
0
R
0
0
0
0
0
0
21
0
0
0
31
説明
レ ジ ス タ rD の内容に、 レ ジ ス タ rA お よ び rB の内容を足 し た結果を、 ワー ド にア ラ イ ン さ れた メ モ リ ロ
ケーシ ョ ン に格納 し ます。
R ビ ッ ト がセ ッ ト さ れてい る 場合、 格納 さ れた ワー ド のバ イ ト が反転 さ れ、 E ビ ッ ト で定義 さ れてい る エ
ンデ ィ ア ン と は逆の も のでデー タ を格納 し ます (仮想保護モー ド が イ ネーブルにな っ てい る 場合)。
仮想保護モー ド が イ ネーブルにな っ てい る 場合、 デー タ TLB ミ ス例外が発生 し 、 ア ド レ ス に対応す る 有
効な変換エ ン ト リ は TLB では検出 さ れ ません。
仮想保護モー ド が イ ネーブルにな っ てい る と デー タ ス ト レージ例外が発生 し 、 ノ ー ア ク セ ス ま たは読み
出 し 専用ゾーン保護に よ っ て ア ク セ ス が禁止 さ れ ます。 ノ ー ア ク セ ス許可はユーザー モー ド の場合にの
み発生 し ます。
ア ド レ ス の最下位ビ ッ ト 2 つがゼ ロ でない場合は、 ア ラ イ ン さ れていないデー タ ア ク セ ス 例外が発生 し
ます。
擬似 コ ー ド
Addr   (rA) + (rB)
if TLB_Miss(Addr) and MSR[VM] = 1 then
ESR[EC]  10010;ESR[S]  1
MSR[UMS]   MSR[UM]; MSR[VMS]   MSR[VM]; MSR[UM]   0; MSR[VM]   0
else if Access_Protected(Addr) and MSR[VM] = 1 then
ESR[EC]   10000;ESR[S]  1; ESR[DIZ]   No-access-allowed
MSR[UMS]   MSR[UM]; MSR[VMS]  MSR[VM]; MSR[UM]   0; MSR[VM]   0
else if Addr[30:31]  0 then
ESR[EC]   00001; ESR[W]   1; ESR[S]   1; ESR[Rx]   rD
else
Mem(Addr)    rD)[0:31]
変更 さ れる レ ジ ス タ
•
•
•
•
MSR[UM]、 MSR[VM]、 MSR[UMS]、 MSR[VMS] (TLB ミ ス例外ま たはデー タ ス ト レージ例外が生成 さ れ る 場合)
ESR[EC]、 ESR[S] (例外が生成 さ れ る 場合)
ESR[DIZ] (デー タ ス ト レージ例外が生成 さ れ る 場合)
ESR[W]、 ESR[Rx] (ア ラ イ ン さ れていないデー タ ア ク セ ス例外が生成 さ れ る 場合)
レ イテンシ
•
•
1 サ イ ク ル ( C_AREA_OPTIMIZED=0)
2 サ イ ク ル ( C_AREA_OPTIMIZED=1)
注記
MicroBlaze が再順序付け命令を使用す る よ う に コ ン フ ィ ギ ュ レー ト さ れてい る 場合にのみ
(C_USE_REORDER_INSTR = 1)、 こ の ワ ー ド 反転命令は有効です。
MicroBlaze プ ロ セ ッ サ リ フ ァ レ ン ス ガ イ ド
UG984 (v2015.1) 2015 年 4 月 15 日
UG984 (v2015.3)
(v2015.2) 2015 年 96 月 30
24 日
japan.xilinx.com
241
第 5 章 : MicroBlaze 命令セ ッ ト アーキテ ク チ ャ
swapb
Swap Bytes
swapb
1
0
0
1
0
0
rD、 rA
0
rD
rA
6
1
1
0
0
0
0
0
0
0
1
1
1
1
0
0
0
1
6
0
0
3
1
説明
4 バ イ ト と し て処理 さ れた レ ジ ス タ rA の内容を ス ワ ッ プ し 、 結果を rD に配置 し ま す。 リ ト ル エ ン
デ ィ ア ン か ら ビ ッ グ エ ンデ ィ ア ン、 ま たはその逆へ、 レ ジ ス タ のバ イ ト シーケ ン ス の フ ォ ーマ ッ ト
を効果的に変換 し ます。
擬似 コ ー ド
(rD)[24:31]
(rD)[16:23]
(rD)[8:15]
(rD)[0:7]




(rA)[0:7]
(rA)[8:15]
(rA)[16:23]
(rA)[24:31]
変更 さ れる レ ジ ス タ
•
rD
レ イテンシ
•
1 サイ クル
注記
MicroBlaze が再順序付け命令を使用す る よ う に コ ン フ ィ ギ ュ レー ト さ れてい る 場合にのみ
(C_USE_REORDER_INSTR = 1)、 こ の命令は有効です。
MicroBlaze プ ロ セ ッ サ リ フ ァ レ ン ス ガ イ ド
UG984 (v2015.1) 2015 年 4 月 15 日
UG984 (v2015.3)
(v2015.2) 2015 年 96 月 30
24 日
japan.xilinx.com
242
第 5 章 : MicroBlaze 命令セ ッ ト アーキテ ク チ ャ
swaph
Swap Halfwords
swaph
1
0
0
1
0
0
rD、 rA
0
rD
6
rA
1
1
0
0
1
6
0
0
0
0
0
1
1
1
1
0
0
0
1
0
3
1
説明
2 ハーフ ワ ー ド と し て処理 さ れた レ ジ ス タ rA の内容を ス ワ ッ プ し 、 結果を rD に配置 し ます。 リ ト
ル エ ンデ ィ ア ン か ら ビ ッ グ エ ンデ ィ ア ン、 ま たはその逆へ、 レ ジ ス タ の 2 ハーフ ワ ー ド の フ ォ ー
マ ッ ト を効果的に変換 し ます。
擬似 コ ー ド
(rD)[0:15]    rA)[16:31]
(rD)[16:31]    rA)[0:15]
変更 さ れる レ ジ ス タ
•
rD
レ イテンシ
•
1 サイ クル
注記
MicroBlaze が 再 順 序 付 け 命 令 を 使 用 す る よ う に コ ン フ ィ ギ ュ レ ー ト さ れ て い る 場 合 に の み
(C_USE_REORDER_INSTR = 1)、 こ の命令は有効です。
MicroBlaze プ ロ セ ッ サ リ フ ァ レ ン ス ガ イ ド
UG984 (v2015.1) 2015 年 4 月 15 日
UG984 (v2015.3)
(v2015.2) 2015 年 96 月 30
24 日
japan.xilinx.com
243
第 5 章 : MicroBlaze 命令セ ッ ト アーキテ ク チ ャ
swi
Store Word Immediate
swi
1
1
1
1
rD、 rA、 IMM
1
0
0
rD
6
rA
IMM
11
16
31
説明
レ ジ ス タ rD の内容を、 レ ジ ス タ rA の内容 と IMM の 32 ビ ッ ト に符号拡張 し た値を足 し た結果の、
ワ ー ド にア ラ イ ン さ れた メ モ リ ロ ケーシ ョ ンに格納 し ます。
仮想保護モー ド が イ ネーブルにな っ てい る 場合、 デー タ TLB ミ ス例外が発生 し 、 ア ド レ ス に対応す
る 有効な変換エ ン ト リ は TLB では検出 さ れ ません。
仮想保護モー ド が イ ネーブルにな っ てい る と デー タ ス ト レージ例外が発生 し 、 ノ ー ア ク セ ス ま たは
読み出 し 専用ゾーン保護に よ っ て ア ク セ ス が禁止 さ れ ます。 ノ ー ア ク セ ス許可はユーザー モー ド の
場合にのみ発生 し ます。
ア ド レ ス の最下位ビ ッ ト 2 つがゼ ロ でない場合は、 ア ラ イ ン さ れていないデー タ ア ク セ ス例外が発
生 し ます。
擬似 コ ー ド
Addr   (rA) + sext(IMM)
if TLB_Miss(Addr) and MSR[VM] = 1 then
ESR[EC]  10010;ESR[S]  1
MSR[UMS]   MSR[UM]; MSR[VMS]   MSR[VM]; MSR[UM]   0; MSR[VM]   0
else if Access_Protected(Addr) and MSR[VM] = 1 then
ESR[EC]   10000;ESR[S]  1; ESR[DIZ]   No-access-allowed
MSR[UMS]  MSR[UM]; MSR[VMS]   MSR[VM]; MSR[UM]   0; MSR[VM]   0
else if Addr[30:31]  0 then
ESR[EC]   00001; ESR[W]   1; ESR[S]   1; ESR[Rx]   rD
else
Mem(Addr)   (rD)[0:31]
変更 さ れる レ ジ ス タ
•
•
•
•
MSR[UM]、 MSR[VM]、 MSR[UMS]、 MSR[VMS] (TLB ミ ス例外ま たはデー タ ス ト レージ例外が生成 さ れ る
場合)
ESR[EC]、 ESR[S] (例外が生成 さ れ る 場合)
ESR[DIZ] (デー タ ス ト レージ例外が生成 さ れ る 場合)
ESR[W]、 ESR[Rx] (ア ラ イ ン さ れていないデー タ ア ク セ ス例外が生成 さ れ る 場合)
レ イテンシ
•
•
1 サ イ ク ル ( C_AREA_OPTIMIZED=0)
2 サ イ ク ル ( C_AREA_OPTIMIZED=1)
注記
デフ ォ ル ト で、 タ イ プ B 命令は 16 ビ ッ ト の IMM フ ィ ール ド 値を取 り 込み、 それを 32 ビ ッ ト に符号
拡張 し て、 即値オぺ ラ ン ド と し て使用 し ます。 こ の動作は、 IMM 命令を使用 し て タ イ プ B 命令を先
行 さ せ る こ と で、 上書 き す る こ と がで き ま す。 32 ビ ッ ト の即値の使用に関 し て は、 196 ページ の
「imm」 を参照 し て く だ さ い。
MicroBlaze プ ロ セ ッ サ リ フ ァ レ ン ス ガ イ ド
UG984 (v2015.1) 2015 年 4 月 15 日
UG984 (v2015.3)
(v2015.2) 2015 年 96 月 30
24 日
japan.xilinx.com
244
第 5 章 : MicroBlaze 命令セ ッ ト アーキテ ク チ ャ
swx
Store Word Exclusive
swx
1
1
0
rD、 rA、 rB
1 1 0
0
rD
6
rA
11
rB
16
1
0
0
0
0
0
0
0
21
0
0
0
31
説明
レ ジ ス タ rD の内容を、 レ ジ ス タ rA お よ び rB の内容を足 し た結果の、 ワー ド にア ラ イ ン さ れた メ モ リ ロ
ケーシ ョ ン に条件付 き で格納 し ます。 排他的ア ク セ ス が イ ネーブルにな っ てい る AXI4 イ ン タ ー コ ネ ク ト
を使用 し てい る 場合、 イ ン タ ー コ ネ ク ト 応答が EXOKAY で、 予約ビ ッ ト がセ ッ ト さ れ る と 、 格納 さ れま
す。 それ以外の場合は、 予約ビ ッ ト がセ ッ ト さ れ る と 格納 さ れ ます。 格納 さ れない場合は、 キ ャ リ ー フ
ラ グ (MSR[C]) がセ ッ ト さ れ ます。 それ以外の場合はキ ャ リ ーフ ラ グは ク リ アにな り ます。 予約ビ ッ ト は
ク リ アにな り ます。
仮想保護モー ド が イ ネーブルにな っ てい る 場合、 デー タ TLB ミ ス例外が発生 し 、 ア ド レ ス に対応す る 有
効な変換エ ン ト リ は TLB では検出 さ れ ません。
仮想保護モー ド が イ ネーブルにな っ てい る と デー タ ス ト レージ例外が発生 し 、 ノ ー ア ク セ ス ま たは読み
出 し 専用ゾーン保護に よ っ て ア ク セ ス が禁止 さ れ ます。 ノ ー ア ク セ ス許可はユーザー モー ド の場合にの
み発生 し ます。
ア ド レ ス の最下位ビ ッ ト 2 つがゼ ロ でない場合は、 ア ラ イ ン さ れていないデー タ ア ク セ ス 例外が発生 し
ません。
AXI の排他的ア ク セ ス を イ ネーブルにす る と 、 ほかのバ ス マ ス タ ーか ら 操作が保護 さ れますが、 ア ド レ
ス指定 し た ス レーブで排他的ア ク セ ス をサポー ト す る よ う に し てお く 必要があ り ます。 排他的ア ク セ ス
が イ ネーブルにな っ ていない と 、 内部予約ビ ッ ト のみが使用 さ れ ます。 排他的ア ク セ ス は、 ペ リ フ ェ ラ
ルお よ びキ ャ ッ シ ュ イ ン タ ー コ ネ ク ト にそれぞれ、 C_M_AXI_DP_EXCLUSIVE_ACCESS お よ び
C_M_AXI_DC_EXCLUSIVE_ACCESS と い う 2 つのパ ラ メ ー タ ーを設定す る と イ ネーブルにな り ます。
擬似 コ ー ド
Addr   (rA) + (rB)
if Reservation = 0 then
MSR[C]   1
else
if TLB_Miss(Addr) and MSR[VM] = 1 then
ESR[EC]  10010;ESR[S]  1
MSR[UMS]   MSR[UM]; MSR[VMS]   MSR[VM]; MSR[UM]   0; MSR[VM]   0
else if Access_Protected(Addr) and MSR[VM] = 1 then
ESR[EC]   10000;ESR[S]  1; ESR[DIZ]   No-access-allowed
MSR[UMS]   MSR[UM]; MSR[VMS]  MSR[VM]; MSR[UM]   0; MSR[VM]   0
else
Reservation   
if AXI_Exclusive(Addr) and AXI_Response  EXOKAY then
MSR[C]   
else
Mem(Addr)    rD)[0:31]
MSR[C]   
MicroBlaze プ ロ セ ッ サ リ フ ァ レ ン ス ガ イ ド
UG984 (v2015.1) 2015 年 4 月 15 日
UG984 (v2015.3)
(v2015.2) 2015 年 96 月 30
24 日
japan.xilinx.com
245
第 5 章 : MicroBlaze 命令セ ッ ト アーキテ ク チ ャ
変更 さ れる レ ジ ス タ
•
MSR[C] (予約が生成 さ れない限 り )
•
MSR[UM]、 MSR[VM]、 MSR[UMS]、 MSR[VMS] (TLB ミ ス例外ま たはデー タ ス ト レージ例外が生成 さ れ る 場合)
•
ESR[EC]、 ESR[S] (例外が生成 さ れ る 場合)
•
ESR[DIZ] (デー タ ス ト レージ例外が生成 さ れ る 場合)
レ イテンシ
•
1 サ イ ク ル ( C_AREA_OPTIMIZED=0)
•
2 サ イ ク ル ( C_AREA_OPTIMIZED=1)
注記
こ の命令は、 セマ フ ォ やス ピ ン ロ ッ ク な ど、 排他的ア ク セ ス を イ ン プ リ メ ン ト す る ために、 LWX と 一緒
に使用 さ れ ます。
キ ャ リ ー フ ラ グ (MSR[C]) はす ぐ にはセ ッ ト さ れない可能性があ り ます (パ イ プ ラ イ ン ス ト ールの動作に
よ る )。 キ ャ リ ー フ ラ グ の正 し い値を得 る ため、 SWX 命令は、 MSRCLR、 MSRSET、 MTS、 ま たは SRC
命令のす ぐ 後に続け る こ と はで き ません。
MicroBlaze プ ロ セ ッ サ リ フ ァ レ ン ス ガ イ ド
UG984 (v2015.1) 2015 年 4 月 15 日
UG984 (v2015.3)
(v2015.2) 2015 年 96 月 30
24 日
japan.xilinx.com
246
第 5 章 : MicroBlaze 命令セ ッ ト アーキテ ク チ ャ
wdc
1
Write to Data Cache
wdc
wdc.flush
wdc.clear
wdc.ext.flush
wdc.ext.clear
rA、
rA、
rA、
rA、
rA、
0
0
0
1
0
0
0
0
rB
rB
rB
rB
rB
0
0
0
6
rA
11
rB
16
E
21
0
0
0
1
1
F
27
0
1
T
0
31
説明
キ ャ ッ シ ュ ラ イ ン を無効化ま たはフ ラ ッ シ ュ す る ため、 デー タ キ ャ ッ シ ュ タ グに書 き 込みます。 F ビ ッ
ト を セ ッ ト す る にはニーモニ ッ ク wdc.flush を、 T ビ ッ ト を セ ッ ト す る には wdc.clear を、 E、 F、 T ビ ッ ト
を セ ッ ト す る には wdc.ext.flush を、 E お よ び T ビ ッ ト を セ ッ ト す る には wdc.ext.clear を使用 し ます。
C_DCACHE_USE_WRITEBACK が 1 に設定 さ れてい る 場合、 F ビ ッ ト がセ ッ ト さ れていれば、 こ の命令
はキ ャ ッ シ ュ ラ イ ン を フ ラ ッ シ ュ し て無効化 し ます。 そ う でない場合は、 キ ャ ッ シ ュ ラ イ ン を無効化に
す る だけで、 メ モ リ に書 き 込まれていないデー タ を破棄 し ます。 T ビ ッ ト がセ ッ ト さ れてい る 場合は、 一
致 し てい る ア ド レ ス のキ ャ ッ シ ュ ラ イ ン のみが無効にな り ま す。 rB を加え た レ ジ ス タ rA は、 関係す る
キ ャ ッ シ ュ ラ イ ンのア ド レ ス です。 E ビ ッ ト は考慮 さ れ ません。
C_DCACHE_USE_WRITEBACK が 0 に ク リ ア さ れ る 場合は、 E ビ ッ ト がセ ッ ト さ れていな ければ、 こ の
命令はキ ャ ッ シ ュ ラ イ ン を無効に し ます。レ ジ ス タ rA には関係す る キ ャ ッ シ ュ ラ イ ンのア ド レ ス が含ま
れ、 レ ジ ス タ rB の値は使用 さ れ ません。 E ビ ッ ト が 1 にセ ッ ト さ れてい る 場合は、 外部キ ャ ッ シ ュ の一
致 し てい る ア ド レ ス を、 E ビ ッ ト の値に よ っ て、 無効化す る か フ ラ ッ シ ュ す る よ う に、 MicroBlaze が リ ク
エ ス ト し ます。 C_INTERCONNECT が 3 (ACE) に設定 さ れてい る と き にのみ、 E ビ ッ ト は考慮 さ れます。
MicroBlaze が MMU を使用す る よ う に (C_USE_MMU >= 1) コ ン フ ィ ギ ュ レー ト さ れてい る 場合、 こ の命令
は特権命令です。 つ ま り 、 命令がユーザー モー ド (MSR[UM] = 1) で実行 さ れ る と 、 特権命令例外が発生
し ます。
擬似 コ ー ド
if MSR[UM] = 1 then
ESR[EC]   00111
else
if C_DCACHE_USE_WRITEBACK = 1 then
address   (Ra) + (Rb)
else
address   (Ra)
if E = 0 then
if C_DCACHE_LINE_LEN = 4 then
cacheline_mask  (1 << log2(C_DCACHE_BYTE_SIZE) - 4) - 1
cacheline
  (DCache Line)[(address >> 4)  cacheline_mask]
cacheline_addr   address    xfffffff0
if C_DCACHE_LINE_LEN = 8 then
cacheline_mask  (1 << log2(C_DCACHE_BYTE_SIZE) - 5) - 1
  (DCache Line)[(address >> 5)  cacheline_mask]
cacheline
cacheline_addr   address    xffffffe0
if C_DCACHE_LINE_LEN = 16 then
cacheline_mask  (1 << log2(C_DCACHE_BYTE_SIZE) - 6) - 1
  (DCache Line)[(address >> 6)  cacheline_mask]
cacheline
cacheline_addr   address    xffffffc0
MicroBlaze プ ロ セ ッ サ リ フ ァ レ ン ス ガ イ ド
UG984 (v2015.1) 2015 年 4 月 15 日
UG984 (v2015.3)
(v2015.2) 2015 年 96 月 30
24 日
japan.xilinx.com
247
第 5 章 : MicroBlaze 命令セ ッ ト アーキテ ク チ ャ
if F = 1 and cacheline.Dirty then
for i   0 ..C_DCACHE_LINE_LEN - 1 loop
if cacheline.Valid[i] then
Mem(cacheline_addr + i * 4)   cacheline.Data[i]
if T = 0 then
cacheline.Tag   0
else if cacheline.Address = cacheline_addr then
cacheline.Tag   0
if E = 1 then
if F = 1 then
request external cache flush with address
else
request external cache invalidate with address
変更 さ れる レ ジ ス タ
•
ESR[EC] (特権命令例外が生成 さ れ る 場合)
レ イテンシ
•
•
•
•
2 サ イ ク ル (wdc.clear)
2 サ イ ク ル ( C_AREA_OPTIMIZED=1 の wdc)
3 サ イ ク ル ( C_AREA_OPTIMIZED=0 の wdc)
2 + N サ イ ク ル (wdc.flush。 N は随時 メ モ リ にキ ャ ッ シ ュ ラ イ ン を フ ラ ッ シ ュ す る のに必要な ク ロ ッ ク サ イ ク ル
数)
注記
wdc, wdc.flush お よ び wdc.clear 命令は、 デー タ キ ャ ッ シ ュ イ ネーブル (MSR[DCE]) か ら は独立 し ていて、
デー タ キ ャ ッ シ ュ が イ ネーブルにな っ ていて も デ ィ ス エーブルにな っ ていて も 使用で き ます。
wdc.clear 命令は、 ダ イ レ ク ト メ モ リ ア ク セ ス デバ イ ス に よ っ て書 き 込まれ る バ ッ フ ァ ーな ど、 メ モ リ の
特定エ リ ア を無効化す る ための も のです。 こ の命令を使用す る こ と に よ り 、 ほかのキ ャ ッ シ ュ ラ イ ン が
誤っ て無効化 さ れた り 、 メ モ リ に ま だ書 き 込まれていないデー タ を破棄 し て し ま わない よ う にす る こ と が
で き ます。
パ ラ メ ー タ ー C_USE_MMU の設定にかかわ ら ず、ま た MMU が仮想モー ド であ っ て も リ アル モー ド であ っ
て も 、 影響す る キ ャ ッ シ ュ ラ イ ンのア ド レ ス は常に物理ア ド レ ス です。
キ ャ ッ シ ュ 全体を フ ラ ッ シ ュ す る のにループで wdc.flush を使用 し てい る 場合、キ ャ ッ シ ュ ベース ア ド レ
ス に Ra、 ループ カ ウ ン タ ーに Rb を使用す る こ と に よ り 、 ループ を最適化で き ます。
addik
addik
loop: wdc.flush
bgtid
addik
r5,r0,C_DCACHE_BASEADDR
r6,r0,C_DCACHE_BYTE_SIZE-C_DCACHE_LINE_LEN*4
r5,r6
r6,loop
r6,r6,-C_DCACHE_LINE_LEN*4
キ ャ ッ シ ュ のあ る メ モ リ エ リ ア をす る のにループで wdc.clear を使用 し てい る 場合、 メ モ リ エ リ ア ベー
ス ア ド レ ス に Ra、 ループ カ ウ ン タ ーに Rb を使用す る こ と に よ り 、 ループ を最適化で き ます。
addik
addik
loop: wdc.clear
bgtid
addik
r5,r0,memory_area_base_address
r6,r0,memory_area_byte_size-C_DCACHE_LINE_LEN*4
r5,r6
r6,loop
r6,r6,-C_DCACHE_LINE_LEN*4
MicroBlaze プ ロ セ ッ サ リ フ ァ レ ン ス ガ イ ド
UG984 (v2015.1) 2015 年 4 月 15 日
UG984 (v2015.3)
(v2015.2) 2015 年 96 月 30
24 日
japan.xilinx.com
248
第 5 章 : MicroBlaze 命令セ ッ ト アーキテ ク チ ャ
wic
Write to Instruction Cache
wic
1
0
0
rA、 rB
1
0
0
0
0
0
0
0
0
6
rA
rB
1
1
0
0
0
0
1
6
1
1
0
1
0
0
0
3
1
説明
キ ャ ッ シ ュ ラ イ ン を無効化す る ため、 命令キ ャ ッ シ ュ タ グに書 き 込みます。 レ ジ ス タ rB の値は使用 さ れ
ません。 レ ジ ス タ rA には関係す る キ ャ ッ シ ュ ラ イ ン のア ド レ ス が含まれ ます。
MicroBlaze が MMU を使用す る よ う に (C_USE_MMU >= 1) コ ン フ ィ ギ ュ レー ト さ れてい る 場合、 こ の命令
は特権命令です。 つ ま り 、 命令がユーザー モー ド (MSR[UM] = 1) で実行 さ れ る と 、 特権命令例外が発生
し ます。
擬似 コ ー ド
if MSR[UM] = 1 then
ESR[EC]   00111
else
if C_ICACHE_LINE_LEN = 4 then
cacheline_mask  (1 << log2(C_CACHE_BYTE_SIZE)
(ICache Line)[((Ra) >> 4)  cacheline_mask].Tag
if C_ICACHE_LINE_LEN = 8 then
cacheline_mask  (1 << log2(C_CACHE_BYTE_SIZE)
(ICache Line)[((Ra) >> 5)  cacheline_mask].Tag
if C_ICACHE_LINE_LEN = 16 then
cacheline_mask  (1 << log2(C_CACHE_BYTE_SIZE)
(ICache Line)[((Ra) >> 6)  cacheline_mask].Tag
- 4) - 1
 0
- 5) - 1
  0
- 6) - 1
 0
変更 さ れる レ ジ ス タ
•
ESR[EC] (特権命令例外が生成 さ れ る 場合)
レ イテンシ
•
2 サイ クル
注記
WIC 命令は、 命令キ ャ ッ シ ュ イ ネーブル (MSR[ICE]) か ら は独立 し ていて、 命令キ ャ ッ シ ュ が イ ネーブル
にな っ ていて も デ ィ ス エーブルにな っ ていて も 使用で き ます。
パ ラ メ ー タ ーが C_USE_MMU = 3 で MMU が仮想モー ド の と き 、 影響を受け る キ ャ ッ シ ュ ラ イ ン のア ド レ
ス は仮想ア ド レ ス にな り ます。 それ以外の と き は物理ア ド レ ス です。
MicroBlaze プ ロ セ ッ サ リ フ ァ レ ン ス ガ イ ド
UG984 (v2015.1) 2015 年 4 月 15 日
UG984 (v2015.3)
(v2015.2) 2015 年 96 月 30
24 日
japan.xilinx.com
249
第 5 章 : MicroBlaze 命令セ ッ ト アーキテ ク チ ャ
xor
Logical Exclusive OR
xor
1
0
rD、 rA、 rB
0
0 1 0
0
rD
6
rA
1
1
rB
1
6
0
2
1
0
0
0
0
0
0
0
0
0
0
3
1
説明
レ ジ ス タ rA の内容が レ ジ ス タ rB の内容 と XOR さ れていて、 その結果が レ ジ ス タ rD に配置 さ れます。
擬似 コ ー ド
(rD)   (rA)   (rB)
変更 さ れる レ ジ ス タ
•
rD
レ イテンシ
•
1 サイ クル
MicroBlaze プ ロ セ ッ サ リ フ ァ レ ン ス ガ イ ド
UG984 (v2015.1) 2015 年 4 月 15 日
UG984 (v2015.3)
(v2015.2) 2015 年 96 月 30
24 日
japan.xilinx.com
250
第 5 章 : MicroBlaze 命令セ ッ ト アーキテ ク チ ャ
xori
Logical Exclusive OR with Immediate
xori
1
0
1
rD、 rA、 IMM
0
1
0
0
rD
6
rA
1
1
IMM
1
6
3
1
説明
左側の 16 個の 0 ビ ッ ト を連結 さ せて、 IMM フ ィ ール ド は 32 ビ ッ ト に拡張 さ れます。 レ ジ ス タ rA の内容
は拡張 さ れた IMM フ ィ ール ド と XOR さ れて、 その結果が レ ジ ス タ rD に配置 さ れます。
擬似 コ ー ド
(rD)   (rA)   sext(IMM)
変更 さ れる レ ジ ス タ
•
rD
レ イテンシ
•
1 サイ クル
注記
デフ ォ ル ト で、 タ イ プ B 命令は 16 ビ ッ ト の IMM フ ィ ール ド 値を取 り 込み、 それを 32 ビ ッ ト に符号拡張
し て、 即値オぺ ラ ン ド と し て使用 し ます。 こ の動作は、 IMM 命令を使用 し て タ イ プ B 命令を先行 さ せ る
こ と で、 上書 き す る こ と がで き ます。 32 ビ ッ ト の即値の使用に関 し ては、 196 ページの 「imm」 を参照 し
て く だ さ い。
MicroBlaze プ ロ セ ッ サ リ フ ァ レ ン ス ガ イ ド
UG984 (v2015.1) 2015 年 4 月 15 日
UG984
(v2015.2) 2015 年 96 月 30
(v2015.3)
24 日
japan.xilinx.com
251
付録 A パフ ォ ーマ ン スおよび リ ソ ース使用率
パフ ォ ーマ ン ス
こ の コ アのパフ ォーマ ン ス特性化は、 マージ ン シ ス テ ム手法を用いて行われてい ます。 マージ ン シ ス テ ム特性化の
詳細は、 『Vivado Design Suite ユーザー ガ イ ド : IP を使用 し た設計』 (UG896) の 「IP Characterization and fMAX Margin
System Methodology」 を参照 し て く だ さ い。
最大周波数
MicroBlaze コ ア の最大周波数は、 表 A-1 に リ ス ト さ れてい ます。
注記 : Zynq®-7000 の結果は、 7 シ リ ーズの結果に類似 し てい る と 予想 さ れます。
表 A‐1 : 最大周波数
ファミ リ
Fmax (MHz)
Virtex®-7
373
Kintex®-7
385
Artix®-7
254
Virtex UltraScale™
458
Kintex UltraScale
430
リ ソ ース使用量
さ ま ざ ま なパ ラ メ ー タ ー コ ン フ ィ ギ ュ レーシ ョ ンの MicroBlaze コ アの リ ソ ース使用率は、 Virtex-7 (表 A-2)、 Kintex7 (表 A-3)、Artix-7 (表 A-4)、Virtex UltraScale (表 A-5)、お よ び Kintex UltraScale (表 A-6) デバ イ ス で計測 さ れてい ます。
注記 : Zynq®-7000 の結果は、 7 シ リ ーズの結果に類似 し てい る と 予想 さ れます。
計測 さ れた コ ン フ ィ ギ ュ レ ーシ ョ ン ぞれそれのパ ラ メ ー タ ー値は表 A-7 に リ ス ト さ れてい ます。 こ れ ら の コ ン フ ィ
ギ ュ レーシ ョ ンは、MicroBlaze の コ ン フ ィ ギ ュ レーシ ョ ン ウ ィ ザー ド に含まれてい る テ ンプ レー ト に直接対応 し てい
ます。
MicroBlaze プ ロ セ ッ サ リ フ ァ レ ン ス ガ イ ド
UG984 (v2015.1) 2015 年 4 月 15 日
UG984
(v2015.2) 2015 年 96 月 30
(v2015.3)
24 日
japan.xilinx.com
252
付録 A : パフ ォ ーマ ン スおよび リ ソ ース使用率
表 A‐2 : デバイ ス使用率 ‐ Virtex‐7 FPGA (XC7VX485T ffg1761‐3) デバイ ス リ ソ ース
コ ン フ ィ ギ ュ レーシ ョ ン
LUT
FF
Fmax
(MHz)
最小エ リ ア
663
228
362
最大パフ ォーマ ン ス
3863
3063
223
最大周波数
909
546
362
MMU を使用 し た Linux
3646
3223
225
MMU を使用 し た低性能 Linux
3121
2588
219
標準
2066
1777
244
表 A‐3 : デバイ ス使用率 ‐ Kintex‐7 FPGA (XC7K325T ffg900‐3) デバイ ス リ ソ ース
コ ン フ ィ ギ ュ レーシ ョ ン
LUT
FF
Fmax
(MHz)
最小エ リ ア
654
220
355
最大パフ ォーマ ン ス
3972
3063
212
最大周波数
912
546
355
MMU を使用 し た Linux
3668
3213
221
MMU を使用 し た低性能 Linux
3101
2576
219
標準
2064
1777
237
表 A‐4 : デバイ ス使用率 ‐ Artix‐7 FPGA (XC7A200T fbg676‐3) デバイ ス リ ソ ース
コ ン フ ィ ギ ュ レーシ ョ ン
LUT
FF
Fmax
(MHz)
最小エ リ ア
648
214
234
最大パフ ォーマ ン ス
3879
3064
154
最大周波数
906
545
234
MMU を使用 し た Linux
3653
3218
142
MMU を使用 し た低性能 Linux
3108
2582
153
標準
2070
1777
190
MicroBlaze プ ロ セ ッ サ リ フ ァ レ ン ス ガ イ ド
UG984 (v2015.1) 2015 年 4 月 15 日
UG984
(v2015.2) 2015 年 96 月 30
(v2015.3)
24 日
japan.xilinx.com
253
付録 A : パフ ォ ーマ ン スおよび リ ソ ース使用率
表 A‐5 : デバイ ス使用率 ‐ Virtex UltraScale FPGA (XCVU095 ffvd1924‐3) デバイ ス リ ソ ース
コ ン フ ィ ギ ュ レーシ ョ ン
LUT
FF
Fmax
(MHz)
最小エ リ ア
584
214
404
最大パフ ォーマ ン ス
3923
3061
263
最大周波数
908
545
404
MMU を使用 し た Linux
3618
3204
251
MMU を使用 し た低性能 Linux
3086
2575
254
標準
2052
1776
320
表 A‐6 : デバイ ス使用率 ‐ Kintex UltraScale FPGA (XCKU040 ffva1156‐3) デバイ ス リ ソ ース
コ ン フ ィ ギ ュ レーシ ョ ン
LUT
FF
Fmax
(MHz)
最小エ リ ア
576
217
410
最大パフ ォーマ ン ス
3938
3061
272
最大周波数
906
545
410
MMU を使用 し た Linux
3613
3204
241
MMU を使用 し た低性能 Linux
3080
2575
244
標準
2062
1776
285
表 A‐7 : パラ メ ー タ ー コ ン フ ィ ギ ュ レーシ ョ ン
標準
低性能 Linux
(MMU を使用)
Linux (MMU を使用)
パラ メ ー タ ー
最大 周波数
最小
エ リ ア
最大
パフ ォ ーマ ン ス
コ ン フ ィ ギ ュ レーシ ョ ン パラ メ ー タ ー値
C_ALLOW_DCACHE_WR
1
1
1
1
1
1
C_ALLOW_ICACHE_WR
1
1
1
1
1
1
C_AREA_OPTIMIZED
1
0
0
0
0
0
C_CACHE_BYTE_SIZE
4096
32768
4096
16384
8192
8192
C_DCACHE_BYTE_SIZE
4096
32768
4096
16384
8192
8192
C_DCACHE_LINE_LEN
4
8
4
4
4
4
C_DCACHE_USE_WRITEBACK
0
1
0
0
0
0
C_DEBUG_ENABLED
0
1
0
1
1
1
MicroBlaze プ ロ セ ッ サ リ フ ァ レ ン ス ガ イ ド
UG984 (v2015.1) 2015 年 4 月 15 日
UG984 (v2015.3)
(v2015.2) 2015 年 96 月 30
24 日
japan.xilinx.com
254
付録 A : パフ ォ ーマ ン スおよび リ ソ ース使用率
表 A‐7 : パラ メ ー タ ー コ ン フ ィ ギ ュ レーシ ョ ン (続き)
標準
低性能 Linux
(MMU を使用)
Linux (MMU を使用)
パラ メ ー タ ー
最大 周波数
最小
エ リ ア
最大
パ フ ォ ーマ ン ス
コ ン フ ィ ギ ュ レーシ ョ ン パラ メ ー タ ー値
C_DIV_ZERO_EXCEPTION
0
0
0
1
0
0
C_M_AXI_D_BUS_EXCEPTION
0
0
0
1
1
1
C_FPU_EXCEPTION
0
0
0
0
0
0
C_FSL_EXCEPTION
0
0
0
0
0
0
C_FSL_LINKS
0
0
1
0
0
0
C_ICACHE_LINE_LEN
4
8
4
8
4
8
C_ILL_OPCODE_EXCEPTION
0
0
0
1
1
0
C_M_AXI_I_BUS_EXCEPTION
0
0
0
1
1
0
C_MMU_DTLB_SIZE
2
4
2
4
4
4
C_MMU_ITLB_SIZE
1
2
1
2
2
2
C_MMU_TLB_ACCESS
3
3
3
3
3
3
C_MMU_ZONES
2
2
2
2
2
2
C_NUMBER_OF_PC_BRK
0
1
1
1
1
2
C_NUMBER_OF_RD_ADDR_BRK
0
0
0
0
0
0
C_NUMBER_OF_WR_ADDR_BRK
0
0
0
0
0
0
C_OPCODE_0x0_ILLEGAL
0
0
0
1
1
0
C_PVR
0
0
0
2
0
0
C_UNALIGNED_EXCEPTIONS
0
0
0
1
1
0
C_USE_BARREL
0
1
0
1
1
1
C_USE_DCACHE
0
1
0
1
1
1
C_USE_DIV
0
1
0
1
0
0
C_USE_EXTENDED_FSL_INSTR
0
0
0
0
0
0
C_USE_FPU
0
2
0
0
0
0
C_USE_HW_MUL
0
2
0
2
1
1
C_USE_ICACHE
0
1
0
1
1
1
C_USE_MMU
0
0
0
3
3
0
C_USE_MSR_INSTR
0
1
0
1
1
1
C_USE_PCMP_INSTR
0
1
0
1
1
1
C_USE_REORDER_INSTR
0
1
1
1
1
1
C_USE_BRANCH_TARGET_CACHE
0
1
0
0
0
0
C_BRANCH_TARGET_CACHE_SIZE
0
0
0
0
0
0
C_ICACHE_STREAMS
0
1
0
1
0
0
C_ICACHE_VICTIMS
0
8
0
8
0
0
C_DCACHE_VICTIMS
0
8
0
8
0
0
C_ICACHE_FORCE_TAG_LUTRAM
0
0
0
0
0
0
MicroBlaze プ ロ セ ッ サ リ フ ァ レ ン ス ガ イ ド
UG984 (v2015.1) 2015 年 4 月 15 日
UG984
(v2015.2) 2015 年 96 月 30
(v2015.3)
24 日
japan.xilinx.com
255
付録 A : パフ ォ ーマ ン スおよび リ ソ ース使用率
表 A‐7 : パラ メ ー タ ー コ ン フ ィ ギ ュ レーシ ョ ン (続き)
標準
低性能 Linux
(MMU を使用)
Linux (MMU を使用)
パラ メ ー タ ー
最大 周波数
最小
エ リ ア
最大
パ フ ォ ーマ ン ス
コ ン フ ィ ギ ュ レーシ ョ ン パラ メ ー タ ー値
C_DCACHE_FORCE_TAG_LUTRAM
0
0
0
0
0
0
C_ICACHE_ALWAYS_USED
0
1
0
1
1
0
C_DCACHE_ALWAYS_USED
0
1
0
1
1
0
C_D_AXI
0
1
0
1
1
0
C_USE_INTERRUPT
0
0
0
1
1
0
MicroBlaze プ ロ セ ッ サ リ フ ァ レ ン ス ガ イ ド
UG984 (v2015.1) 2015 年 4 月 15 日
UG984 (v2015.3)
(v2015.2) 2015 年 96 月 30
24 日
japan.xilinx.com
256
付録 B その他の リ ソ ースおよび法的通知
ザイ リ ン ク ス リ ソ ース
ア ンサー、 資料、 ダ ウ ン ロ ー ド 、 フ ォー ラ ム な ど のサポー ト リ ソ ース は、 ザ イ リ ン ク ス サポー ト サ イ ト を参照 し て
く だ さ い。
ソ リ ュ ーシ ョ ン セ ン タ ー
デバ イ ス、 ツール、 IP のサポー ト については、 ザ イ リ ン ク ス ソ リ ュ ーシ ョ ン セ ン タ ーを参照 し て く だ さ い。 ト ピ ッ
ク には、 デザ イ ン ア シ ス タ ン ト 、 ア ド バ イ ザ リ 、 ト ラ ブルシ ュ ー ト ヒ ン ト な ど が含まれます。
参考資料
次の資料は、 Vivado の イ ン ス ト ール デ ィ レ ク ト リ か ら ア ク セ ス で き ます。
参考資料には次の も のがあ り ます。
1.
『Vivado Design Suite ユーザー ガ イ ド : IP を使用 し た設計』 (UG896)
2.
『Vivado Design Suite ユーザー ガ イ ド : IP イ ン テ グ レー タ ーを使用 し た IP サブシ ス テ ムの設計』 (UG994)
3.
『Vivado Design Suite ユーザー ガ イ ド : エンベデ ッ ド プ ロ セ ッ サ ハー ド ウ ェ ア デザ イ ン』 (UG898)
4.
『ザ イ リ ン ク ス ソ フ ト ウ ェ ア開発キ ッ ト (SDK) ヘルプ』 (UG782)
5.
『エンベデ ッ ド シ ス テ ム ツール リ フ ァ レ ン ス マニ ュ アル』 (UG1043 : 英語版、 日本語版)
6.
『PowerPC プ ロ セ ッ サ リ フ ァ レ ン ス ガ イ ド 』 (UG011)
7.
『AMBA 4 AXI4-Stream Protocol Specification, Version 1.0』 (ARM IHI 0051A)
8.
『AMBA AXI and ACE Protocol Specification』 (ARM IHI 0022E)
9.
『MicroBlaze Debug Module (MDM) 製品ガ イ ド 』 (PG115)
10. 『LogiCORE IP Soft Error Mitigation Controller 製品ガ イ ド 』 (PG036 : 英語版、 日本語版)
11. 『デバ イ ス信頼性レ ポー ト 』 (UG116)
12. 『LogiCore IP Processor LMB BRAM Interface Controller 製品ガ イ ド 』 (PG112)
13. 『階層デザ イ ン設計手法ガ イ ド 』 (UG748)
MicroBlaze プ ロ セ ッ サ リ フ ァ レ ン ス ガ イ ド
UG984 (v2015.1) 2015 年 4 月 15 日
UG984 (v2015.3)
(v2015.2) 2015 年 96 月 30
24 日
japan.xilinx.com
257
付録 B : その他の リ ソ ースおよび法的通知
次の追加資料には、 URL を直接 ク リ ッ ク し て ア ク セ ス で き ます。
14. GNU マニ ュ アル セ ッ ト
http://www.gnu.org/manual
15. IEEE 754-1985 規格
http://en.wikipedia.org/wiki/IEEE_754-1985
ト レーニ ング リ ソ ース
ザ イ リ ン ク ス では、 本書に含まれ る コ ン セプ ト を説明する さ ま ざ ま な QuickTake ビデオお よ び ト レーニ ン グ コ ース を
提供 し てい ます。 次の リ ン ク か ら 関連す る ト レーニ ン グ リ ソ ース を参照 し て く だ さ い。
1.
Vivado Design Suite QuickTake ビデオ : Vivado IP イ ン テ グ レー タ ーを使用 し たデザ イ ン
2.
Vivado Design Suite QuickTake ビデオ : IP イ ン テ グ レー タ ーを活用す る ための ヒ ン ト
3.
Vivado Design Suite QuickTake ビデオ チ ュ ー ト リ アル
4.
Vivado での FPGA 設計導入 ト レーニ ン グ コ ース
5.
Vivado デザ イ ン ツール フ ロ ー ト レーニ ン グ コ ース
6.
Zynq All Programmable SoC エンベデ ッ ド シ ス テ ム開発
7.
エンベデ ッ ド シ ス テ ム開発 – 実践編 –
8.
エンベデ ッ ド シ ス テ ム ソ フ ト ウ ェ ア開発
MicroBlaze プ ロ セ ッ サ リ フ ァ レ ン ス ガ イ ド
UG984 (v2015.1) 2015 年 4 月 15 日
UG984 (v2015.3)
(v2015.2) 2015 年 96 月 30
24 日
japan.xilinx.com
258
付録 B : その他の リ ソ ースおよび法的通知
お読み く だ さ い : 重要な法的通知
本通知に基づいて貴殿ま たは貴社 (本通知の被通知者が個人の場合には 「貴殿」 、 法人その他の団体の場合には 「貴社」 。 以下同 じ )
に開示 さ れ る 情報 (以下 「本情報」 と いい ます) は、 ザ イ リ ン ク ス の製品を選択お よ び使用す る こ と のためにのみ提供 さ れ ます。 適
用 さ れ る 法律が許容す る 最大限の範囲で、 (1) 本情報は 「現状有姿」、 お よ びすべて受領者の責任で (with all faults) と い う 状態で提供
さ れ、 ザ イ リ ン ク ス は、 本通知を も っ て、 明示、 黙示、 法定を問わず (商品性、 非侵害、 特定目的適合性の保証を含みますが こ れ ら
に限 ら れません)、 すべての保証お よ び条件を負わない (否認す る ) も の と し ます。 ま た、 (2) ザ イ リ ン ク ス は、 本情報 (貴殿ま たは貴
社に よ る 本情報の使用を含む) に関係 し 、 起因 し 、 関連す る 、 いかな る 種類 ・ 性質の損失ま たは損害について も 、 責任を負わない 
(契約上、 不法行為上 (過失の場合を含む)、 その他のいかな る 責任の法理に よ る かを問わない) も の と し 、 当該損失ま たは損害には、
直接、 間接、 特別、 付随的、 結果的な損失 ま たは損害 (第三者が起 こ し た行為の結果被っ た、 デー タ 、 利益、 業務上の信用の損失、
その他あ ら ゆ る 種類の損失や損害を含みま す) が含 ま れ る も の と し 、 それは、 た と え当該損害や損失が合理的に予見可能で あ っ た
り 、 ザ イ リ ン ク ス がそれ ら の可能性について助言を受け ていた場合であ っ た と し て も 同様です。 ザ イ リ ン ク ス は、 本情報に含ま れ る
いかな る 誤 り も 訂正す る 義務を負わず、本情報ま たは製品仕様のア ッ プデー ト を貴殿ま たは貴社に知 ら せ る 義務 も 負い ません。事前
の書面に よ る 同意のない限 り 、 貴殿ま たは貴社は本情報を再生産、 変更、 頒布、 ま たは公に展示 し てはな り ません。 一定の製品は、
ザ イ リ ン ク ス の限定的保証の諸条件に従 う こ と と な る ので、 http://japan.xilinx.com/legal.htm#tos で見 ら れ る ザ イ リ ン ク ス の販売条件
を参照 し て く だ さ い。 IP コ アは、 ザ イ リ ン ク ス が貴殿ま たは貴社に付与 し た ラ イ セ ン ス に含ま れ る 保証 と 補助的条件に従 う こ と に
な り ます。 ザ イ リ ン ク ス の製品は、 フ ェ イ ルセーフ と し て、 ま たは、 フ ェ イ ルセーフ の動作を要求す る アプ リ ケーシ ョ ンに使用す る
ために、設計 さ れた り 意図 さ れた り し てい ません。 その よ う な重大な アプ リ ケーシ ョ ンにザ イ リ ン ク ス の製品を使用す る 場合の リ ス
ク と 責任は、 貴殿ま たは貴社が単独で負 う も のです。 http://japan.xilinx.com/legal.htm#tos で見 ら れ る ザ イ リ ン ク ス の販売条件を参照
し て く だ さ い。
自動車用のア プ リ ケーシ ョ ンの免責条項
ザ イ リ ン ク ス の製品は、 フ ェ イ ルセーフ と し て設計 さ れた り 意図 さ れてはお ら ず、 ま た、 フ ェ イ ルセーフ の動作を要求す る アプ リ
ケーシ ョ ン (具体的には、 (I) エアバ ッ グの展開、 (II) 車の コ ン ト ロ ール (フ ェ イ ルセーフ ま たは余剰性の機能 (余剰性を実行す る ため
のザ イ リ ン ク ス の装置に ソ フ ト ウ ェ ア を使用す る こ と は含 ま れ ま せん) お よ び操作者が ミ ス を し た際の警告信号が あ る 場合を除 き
ます)、 (III) 死亡や身体傷害を導 く 使用、 に関す る アプ リ ケーシ ョ ン) を使用す る ために設計 さ れた り 意図 さ れた り も し てい ません。
顧客は、 その よ う な アプ リ ケーシ ョ ンにザ イ リ ン ク ス の製品を使用す る 場合の リ ス ク と 責任を単独で負い ます。
© Copyright 2013-2015 Xilinx, Inc. Xilinx、 Xilinx の ロ ゴ、 Artix、 ISE、 Kintex、 Spartan、 Virtex、 Vivado、 Zynq、 お よ び こ の文書に含ま
れ る その他の指定 さ れたブ ラ ン ド は、 米国お よ びその他各国のザ イ リ ン ク ス社の商標です。 すべてのその他の商標は、 それぞれの保
有者に帰属 し ます。
こ の資料に関す る フ ィ ー ド バ ッ ク お よ び リ ン ク な ど の問題につ き ま し ては、 [email protected] ま で、 ま たは各ページの
右下にあ る [フ ィ ー ド バ ッ ク 送信] ボ タ ン を ク リ ッ ク す る と 表示 さ れ る フ ォ ーム か ら お知 ら せ く だ さ い。 フ ィ ー ド バ ッ ク は日本語で
入力可能です。 いただ き ま し た ご意見を参考に早急に対応 さ せていただ き ます。 なお、 こ の メ ール ア ド レ スへのお問い合わせは受
け付けてお り ません。 あ ら か じ めご了承 く だ さ い。
MicroBlaze プ ロ セ ッ サ リ フ ァ レ ン ス ガ イ ド
UG984 (v2015.1) 2015 年 4 月 15 日
UG984 (v2015.3)
(v2015.2) 2015 年 96 月 30
24 日
japan.xilinx.com
259