286
MicroBlaze プロセッサ リファレンス ガイド 2016.3 UG984 (v2016.3) 2016 10 5 この資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。資料に よっては英語版の更新に対応していないものがあります。日本語版は参考用としてご使用の上、最新情報につきまし ては、必ず最新英語版をご参照ください。

MicroBlaze プロセッサ リファレンス ガイド …...MicroBlaze プロセッサ リファレンス ガイド 3 UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com 2016

  • Upload
    others

  • View
    2

  • Download
    0

Embed Size (px)

Citation preview

Page 1: MicroBlaze プロセッサ リファレンス ガイド …...MicroBlaze プロセッサ リファレンス ガイド 3 UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com 2016

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

2016.3

UG984 (v2016.3) 2016 年 10 月 5 日

この資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。資料によっては英語版の更新に対応していないものがあります。日本語版は参考用としてご使用の上、最新情報につきましては、必ず最新英語版をご参照ください。

Page 2: MicroBlaze プロセッサ リファレンス ガイド …...MicroBlaze プロセッサ リファレンス ガイド 3 UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com 2016

改訂履歴

次の表に、 こ の文書の改訂履歴を示し ます。

日付 バージ ョ ン 改訂内容

2013 年 3 月 20 日 2013.1 初版。 UG081 を元に記述。

2013 年 6 月 19 日 2013.2 Vivado 2013.2 リ リ ース用に更新。

2013 年 10 月 2 日 2013.3 Vivado 2013.3 リ リ ース用に更新。

2013 年 12 月 18 日 2013.4 Vivado 2013.4 リ リ ース用に更新。

2014 年 4 月 2 日 2014.1 Vivado 2014.1 リ リ ース用に更新。

• PVR の MicroBlaze リ リ ース バージ ョ ン コード に v9.3 を追加。• ス タ ッ ク保護レジス タの使用と動作について明記。• LMB 命令およびデータ バス例外の説明を訂正。• v9.3 の新機能であ る拡張デバッ グ機能の説明を含める (パフ ォーマン ス 監視、 プ

ロ グ ラ ム ト レース、 非侵入型プロ フ ァ イ リ ング)。• v9.3 の新機能であ る リ セ ッ ト モード信号の定義を含める。• AXI4-Stream TLAST 信号の処理方法を明記。• UltraScale を追加、 2014.1 用にパフ ォーマン スおよび リ ソース使用率をア ッ プ

デー ト 。

2014 年 10 月 1 日 2014.3 Vivado 2014.3 リ リ ース用に更新。

• 表 2-1 の PCMPEQ および PCMPNE の説明を訂正。• PVR の MicroBlaze リ リ ース バージ ョ ン コード に v9.4 を追加。• v9.4 の新機能であ る外部プロ グ ラ ム ト レースの説明を含める。

2015 年 4 月 15 日 2015.1 Vivado 2015.1 リ リ ース用に更新。

• v9.5 の新機能であ る 16 ワード キ ャ ッ シ ュの説明を含める。• PVR の MicroBlaze リ リ ース バージ ョ ン コード に v9.5 を追加。• サポー ト されるデンデ ィ アンおよびパラ メ ーター C_ENDIANNESS の説明を訂

正。• 命令およびデータ キ ャ ッ シ ュの未処理読み出しの説明を訂正。• FPGA コ ンフ ィ ギ ュ レーシ ョ ン メ モ リ 保護についての参照 [参照 10]をア ッ プ

デー ト 。• 表 3-14のロ ッ ク ステ ッ プ比較のバス イ ンデッ ク ス範囲の定期を訂正。• IDIV 命令で変更される レジス タ を明記。• MFS 命令の PVR アセンブラ ニーモニ ッ ク を訂正。• 2015.1 用にパフ ォーマン スおよび リ ソース使用率をア ッ プデー ト 。• ト レーニング リ ソースに参考資料を追加。

2016 年 4 月 6 日 2016.1 Vivado 2016.1 リ リ ース用に更新。

• v9.6 の新機能であ る ア ド レ ス拡張の説明を含める。• v9.6 の新機能であ るパイプラ イ ン一時停止機能の説明を含める。• v9.6 の新機能であ る非セキ ュ ア AXI ア ク セス サポー ト の説明を含める。• v9.6 の新機能であ るハイバーネー ト およびサスペン ド命令の説明を含める。• PVR の MicroBlaze リ リ ース バージ ョ ン コード に v9.6 を追加。• 表 2-45および表 2-46 への参照を訂正。• XMD (Xilinx Microprocessor Debugger) を XSDB (Xilinx System Debugger) に置き換

え。• svc_handler および svc_table_handler の C コード関数属性を削除。

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド 2UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 3: MicroBlaze プロセッサ リファレンス ガイド …...MicroBlaze プロセッサ リファレンス ガイド 3 UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com 2016

2016 年 5 月 10 日 2016.3 Vivado 2016.3 リ リ ース用に更新。

• v10.0 の新機能であ る周波数最適化の 8 段パイプラ イ ンの説明を追加。• v10.0 の新機能であ る ビ ッ ト フ ィ ールド 命令の説明を追加。• v10.0 の新機能であ るパラ レル デバッ グ イ ン ターフ ェ イ スの情報を含める。• PVR の MicroBlaze リ リ ース バージ ョ ン コード に v10.0 を追加。• PVR に Spartan-7 ターゲ ッ ト アーキテ クチャ を含める。• MSR リ セ ッ ト 値の説明をア ッ プデー ト 。• ザイ リ ン ク ス自動車用のアプ リ ケーシ ョ ンの免責条項をア ッ プデー ト 。

日付 バージ ョ ン 改訂内容

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド 3UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 4: MicroBlaze プロセッサ リファレンス ガイド …...MicroBlaze プロセッサ リファレンス ガイド 3 UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com 2016

目次

第 1 章: 概要内容 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6

第 2 章: MicroBlaze アーキテ クチャ概要 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7

データ タ イプ と エンデ ィ アン設定 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11

命令 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12

レジス タ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23

パイプラ イ ン アーキテ クチャ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46

メ モ リ アーキテ クチャ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48

特権命令 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49

仮想 メ モ リ 管理 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50

リ セ ッ ト 、 割 り 込み、 例外、 およびブレーク . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61

命令キ ャ ッ シ ュ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69

データ キ ャ ッ シュ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73

浮動小数点ユニ ッ ト (FPU) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77

ス ト リ ーム リ ン ク イ ン ターフ ェ イ ス . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81

デバッ グおよび ト レース . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82

フ ォール ト ト レ ラ ン ス . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101

ロ ッ ク ステ ッ プ操作 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107

コ ヒ ーレンシ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109

データ ア ド レ ス拡張 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112

第 3 章: MicroBlaze 信号イ ン ターフ ェ イスの説明概要 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113

MicroBlaze の I/O 概要 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114

AXI4 および ACE イ ン ターフ ェ イ スについて . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126

ローカル メ モ リ バス (LMB) イ ン ターフ ェ イ スについて . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131

ロ ッ ク ステ ッ プ イ ン ターフ ェ イ スについて . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139

デバッ グ イ ン ターフ ェ イ スについて . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144

ト レース イ ン ターフ ェ イ スについて . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 146

MicroBlaze コ アのコ ンフ ィ ギュ レーシ ョ ン . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149

第 4 章: MicroBlaze アプ リ ケーシ ョ ン  バイナ リ  イ ン ターフ ェ イスデータ型 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 160

レジス タの使用規則 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 160

ス タ ッ ク規則 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163

メ モ リ モデル . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165

割 り 込み、 ブレーク、 例外処理 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 166

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド 4UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 5: MicroBlaze プロセッサ リファレンス ガイド …...MicroBlaze プロセッサ リファレンス ガイド 3 UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com 2016

第 5 章: MicroBlaze 命令セ ッ ト  アーキテ クチャ記号の説明 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 168

フ ォーマ ッ ト . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 170

命令 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 170

付録 A: パフ ォーマンスおよびリ ソース使用率パフ ォーマン ス . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 276

リ ソース使用量 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 277

IP 特性化および fMAX マージン システム手法 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 282

付録 B: その他のリ ソースおよび法的通知ザイ リ ン ク ス リ ソース . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 284

ソ リ ューシ ョ ン セン ター . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 284

Documentation Navigator およびデザイ ン ハブ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 284

参考資料 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 285

ト レーニング リ ソース . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 285

お読み く ださ い: 重要な法的通知 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 286

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド 5UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 6: MicroBlaze プロセッサ リファレンス ガイド …...MicroBlaze プロセッサ リファレンス ガイド 3 UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com 2016

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド 6UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

第 1 章

概要これは Vivado® リ リ ースに含まれる 32 ビ ッ ト のソ フ ト プロセ ッ サ、 MicroBlaze™ に関する資料で、 MicroBlaze ハー

ド ウ ェア アーキテ クチャの リ フ ァ レ ン ス ガイ ド です。

内容

このガイ ド は、 次の各章で構成されています。

• 第 2 章 「MicroBlaze アーキテ クチャ」 では、 MicroBlaze の機能の概要をはじめ、 ビ ッ グ エンデ ィ アンおよび リ

ト ル エンデ ィ アンのビ ッ ト 反転フ ォーマ ッ ト 、 32 ビ ッ ト の汎用レジス タ、 キ ャ ッ シュ ソ フ ト ウ ェ ア サポー ト 、

および AXI4-Stream イ ン ターフ ェ イ スなどの機能も説明し ます。

• 第 3 章 「MicroBlaze 信号イ ン ターフ ェ イ スの説明」 では、 MicroBlaze を接続する ために使用可能な信号イ ン

ターフ ェ イ スの種類を説明し ます。

• 第 4 章 「MicroBlaze アプ リ ケーシ ョ ン バイナ リ イ ン ターフ ェ イ ス」 では、 MicroBlaze 用にアセンブ リ 言語でソ

フ ト ウ ェアを開発するのに重要な、 アプ リ ケーシ ョ ン バイナ リ イ ン ターフ ェ イ ス を説明し ます。

• 第 5 章 「MicroBlaze 命令セ ッ ト アーキテ クチャ」 では、 MicroBlaze の命令セ ッ ト アーキテ クチャ (ISA) のシン

ボル、 フ ォーマ ッ ト 、 および命令について説明し ます。

• 付録 A 「パフ ォーマン スおよび リ ソース使用率」 では、 各コ ンフ ィ ギュ レーシ ョ ンおよびデバイ スの最大周波

数および リ ソース使用率を説明し ます。

• 付録 B 「その他の リ ソースおよび法的通知」 には、 さ まざまな資料およびその他の リ ソースへの リ ン ク があ り

ます。

Page 7: MicroBlaze プロセッサ リファレンス ガイド …...MicroBlaze プロセッサ リファレンス ガイド 3 UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com 2016

第 2 章

MicroBlaze アーキテ クチャこの章では、 MicroBlaze™ の機能の概要と、 ビ ッ グ エンデ ィ アン または リ ト ル エンデ ィ アンのビ ッ ト 反転フ ォー

マ ッ ト 、 32 ビ ッ ト 汎用レジス タ、 仮想 メ モ リ 管理、 キ ャ ッ シュ ソ フ ト ウ ェア サポー ト 、 AXI4-Stream イ ン ターフ ェ

イ スなど、 このアーキテ クチャの詳細について説明し ます。

概要

MicroBlaze エンベデッ ド プロセ ッ サは、 ザイ リ ン ク ス フ ィ ール ド プロ グ ラ マブル ゲー ト アレ イ (FPGA) のイ ンプ リ

メ ンテーシ ョ ン用に最適化された RISC (Reduced Instruction Set Computer) コ アです。 図 2-1は、 MicroBlaze コ アの機能

ブロ ッ ク デザイ ンです。

機能

MicroBlaze ソ フ ト コ ア プロセ ッサは細か く 設定でき る ため、 デザイ ンに必要な特定の機能セ ッ ト を選択でき ます。

図 2‐1: MicroBlaze コ アのブロ ッ ク図

データ側命令側

ILMB

バス インターフェイス バス インターフェイス

命令バッファー

プログラムカウンター

レジスタ ファイル32 X 32b

ALU

命令デコード

バスIF

バスIF

I キャ

ッシ

D キ

ャッ

シュ

シフト

バレル シフト

乗算器

除算器

FPU

特殊用途

レジスタ

オプションの MicroBlaze 機能

M_AXI_IP

UTLBITLB DTLB

メモリ管理ユニット (MMU)

M_AXI_IC M_AXI_DC

分岐ターゲットキャッシュ

M0_AXIS..

S0_AXIS..M15_AXIS

S15_AXIS

M_ACE_DCM_ACE_IC

M_AXI_DP

DLMB

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド 7UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 8: MicroBlaze プロセッサ リファレンス ガイド …...MicroBlaze プロセッサ リファレンス ガイド 3 UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com 2016

第 2章: MicroBlaze アーキテ クチャ

プロセ ッ サの固定機能セ ッ ト には、 次のよ う な ものがあ り ます。

• 32 個の 32 ビ ッ ト 汎用レジス タ

• オペラ ン ド 3 つと ア ド レ ス指定モード 2 つを含む 32 ビ ッ ト 命令ワード

• デフ ォル ト の 32 ビ ッ ト ア ド レ ス バス (データ側で 64 ビ ッ ト に拡張可能)

• 単一発行のパイプラ イ ン

これらの固定機能のほか、 MicroBlaze プロセ ッ サには追加機能を選択し て有効にでき るパラ メ ーター値があ り ます。

古いバージ ョ ン (サポー ト されな く なった もの) の MicroBlaze の場合は、 この資料で説明するオプシ ョ ンの機能の一

部だけがサポー ト されます。 最新バージ ョ ンの MicroBlaze (v10.0) では、 すべてのオプシ ョ ンがサポー ト されます。

新しいデザイ ンには最新バージ ョ ンの MicroBlaze を使用する よ う にし て く ださい。

8 ページの表 2-1には、 MicroBlaze のバージ ョ ン別に、 コ ンフ ィ ギュ レーシ ョ ン可能な機能がま と められています。

表 2‐1: コ ン フ ィ ギュ レーシ ョ ン可能な機能 (MicroBlaze バージ ョ ン別)

機能MicroBlaze バージ ョ ン

v9.2 v9.3 v9.4 v9.5 v9.6 v10.0

バージ ョ ン ステータ ス サポー ト

終了

サポー ト

終了

サポー ト

終了

サポー ト

終了

サポー ト

終了

推奨

プロセ ッサのパイプラ イ ンの深さ 3/5 3/5 3/5 3/5 3/5 3/5/8

ローカル メ モ リ バス (LMB) データ側

イ ン ターフ ェ イ ス

オプシ ョ ン オプシ ョ ン オプシ ョ ン オプシ ョ ン オプシ ョ ン オプシ ョ ン

ローカル メ モ リ バス (LMB) 命令側

イ ン ターフ ェ イ ス

オプシ ョ ン オプシ ョ ン オプシ ョ ン オプシ ョ ン オプシ ョ ン オプシ ョ ン

ハード ウ ェア バレル シフ ター オプシ ョ ン オプシ ョ ン オプシ ョ ン オプシ ョ ン オプシ ョ ン オプシ ョ ン

ハード ウ ェア除算器 オプシ ョ ン オプシ ョ ン オプシ ョ ン オプシ ョ ン オプシ ョ ン オプシ ョ ン

ハード ウ ェアのデバッ グ ロ ジ ッ ク オプシ ョ ン オプシ ョ ン オプシ ョ ン オプシ ョ ン オプシ ョ ン オプシ ョ ン

ス ト リ ーム リ ン ク イ ン ターフ ェ イ ス 0-16 AXI 0-16 AXI 0-16 AXI 0-16 AXI 0-16 AXI 0-16 AXI

マシン ステータ ス セ ッ ト およびク リ

ア命令

オプシ ョ ン オプシ ョ ン オプシ ョ ン オプシ ョ ン オプシ ョ ン オプシ ョ ン

キ ャ ッ シュ ラ イ ン ワード長 4、 8 4、 8 4、 8 4、 8、 16 4、 8、 16 4、 8、 16

ハード ウ ェア例外サポー ト オプシ ョ ン オプシ ョ ン オプシ ョ ン オプシ ョ ン オプシ ョ ン オプシ ョ ン

パターン比較命令 オプシ ョ ン オプシ ョ ン オプシ ョ ン オプシ ョ ン オプシ ョ ン オプシ ョ ン

浮動小数点ユニ ッ ト (FPU) オプシ ョ ン オプシ ョ ン オプシ ョ ン オプシ ョ ン オプシ ョ ン オプシ ョ ン

ハード ウ ェア乗算器の

デ ィ スエーブル1

オプシ ョ ン オプシ ョ ン オプシ ョ ン オプシ ョ ン オプシ ョ ン オプシ ョ ン

ハード ウ ェア デバッ グの読み出し

可能な ESR および EAR

○ ○ ○ ○ ○ ○

プロセ ッサ バージ ョ ン レジス タ (PVR)

オプシ ョ ン オプシ ョ ン オプシ ョ ン オプシ ョ ン オプシ ョ ン オプシ ョ ン

エ リ アまたはス ピード の最適化 オプシ ョ ン オプシ ョ ン オプシ ョ ン オプシ ョ ン オプシ ョ ン オプシ ョ ン

ハード ウ ェア乗算器 64 ビ ッ ト 結果 オプシ ョ ン オプシ ョ ン オプシ ョ ン オプシ ョ ン オプシ ョ ン オプシ ョ ン

LUT キ ャ ッ シュ メ モ リ オプシ ョ ン オプシ ョ ン オプシ ョ ン オプシ ョ ン オプシ ョ ン オプシ ョ ン

浮動小数点変換および平方根命令 オプシ ョ ン オプシ ョ ン オプシ ョ ン オプシ ョ ン オプシ ョ ン オプシ ョ ン

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド 8UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 9: MicroBlaze プロセッサ リファレンス ガイド …...MicroBlaze プロセッサ リファレンス ガイド 3 UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com 2016

第 2章: MicroBlaze アーキテ クチャ

メ モ リ 管理ユニ ッ ト (MMU) オプシ ョ ン オプシ ョ ン オプシ ョ ン オプシ ョ ン オプシ ョ ン オプシ ョ ン

拡張ス ト リ ーム命令 オプシ ョ ン オプシ ョ ン オプシ ョ ン オプシ ョ ン オプシ ョ ン オプシ ョ ン

すべての I キ ャ ッ シュ メ モ リ ア ク セス

にキ ャ ッ シュ イ ン ターフ ェ イ ス を

使用

オプシ ョ ン オプシ ョ ン オプシ ョ ン オプシ ョ ン オプシ ョ ン オプシ ョ ン

すべての D キ ャ ッ シ ュ メ モ リ ア ク セ

スにキ ャ ッ シュ イ ン ターフ ェ イ ス を

使用

オプシ ョ ン オプシ ョ ン オプシ ョ ン オプシ ョ ン オプシ ョ ン オプシ ョ ン

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 プ リ ミ テ ィ ブのコ ンフ ィ ギュ

レーシ ョ ン設定

オプシ ョ ン オプシ ョ ン オプシ ョ ン オプシ ョ ン オプシ ョ ン オプシ ョ ン

低レ イ テンシ割 り 込みモード オプシ ョ ン オプシ ョ ン オプシ ョ ン オプシ ョ ン オプシ ョ ン オプシ ョ ン

ス ワ ッ プ命令 オプシ ョ ン オプシ ョ ン オプシ ョ ン オプシ ョ ン オプシ ョ ン オプシ ョ ン

ス リ ープ モードおよびス リ ープ命令 ○ ○ ○ ○ ○ ○

配置換え可能なベース ベク ター オプシ ョ ン オプシ ョ ン オプシ ョ ン オプシ ョ ン オプシ ョ ン オプシ ョ ン

表 2‐1: コ ン フ ィ ギュ レーシ ョ ン可能な機能 (MicroBlaze バージ ョ ン別)

機能MicroBlaze バージ ョ ン

v9.2 v9.3 v9.4 v9.5 v9.6 v10.0

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド 9UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 10: MicroBlaze プロセッサ リファレンス ガイド …...MicroBlaze プロセッサ リファレンス ガイド 3 UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com 2016

第 2章: MicroBlaze アーキテ クチャ

D キ ャ ッ シュ用 ACE (M_ACE_DC) プロ ト コル

オプシ ョ ン オプシ ョ ン オプシ ョ ン オプシ ョ ン オプシ ョ ン オプシ ョ ン

I キ ャ ッ シュ用 ACE (M_ACE_IC) プロ ト コル

オプシ ョ ン オプシ ョ ン オプシ ョ ン オプシ ョ ン オプシ ョ ン オプシ ョ ン

拡張デバッ グ: パフ ォーマン ス監視、

プロ グ ラ ム ト レース、 非侵入型プロ

フ ァ イ リ ング

オプシ ョ ン オプシ ョ ン オプシ ョ ン オプシ ョ ン オプシ ョ ン

リ セ ッ ト モード : ス リ ープに入る、 ま

たは リ セ ッ ト でデバッ グ停止

オプシ ョ ン オプシ ョ ン オプシ ョ ン オプシ ョ ン オプシ ョ ン

拡張デバッ グ: 外部プロ グ ラ ム ト レース

オプシ ョ ン オプシ ョ ン オプシ ョ ン オプシ ョ ン

拡張データ ア ド レ ス指定 オプシ ョ ン オプシ ョ ン

パイプラ イ ン一旦停止機能 ○ ○

ハイバーネー ト およびサスペン ド命令 ○ ○

非セキ ュ ア モード ○ ○

ビ ッ ト フ ィ ール ド命令2 オプシ ョ ン

パラ レル デバッ グ イ ン ターフ ェ イ ス オプシ ョ ン

1. DSP48E プ リ ミ テ ィ ブを節約する ために使用

2. C_USE_BARREL = 1 の と き ビ ッ ト フ ィ ール ド命令は使用可能。

表 2‐1: コ ン フ ィ ギュ レーシ ョ ン可能な機能 (MicroBlaze バージ ョ ン別)

機能MicroBlaze バージ ョ ン

v9.2 v9.3 v9.4 v9.5 v9.6 v10.0

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド 10UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 11: MicroBlaze プロセッサ リファレンス ガイド …...MicroBlaze プロセッサ リファレンス ガイド 3 UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com 2016

第 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 プロセ ッサ リ フ ァ レンス ガイ ド 11UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 12: MicroBlaze プロセッサ リファレンス ガイド …...MicroBlaze プロセッサ リファレンス ガイド 3 UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com 2016

第 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 プロセ ッサ リ フ ァ レンス ガイ ド 12UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 13: MicroBlaze プロセッサ リファレンス ガイド …...MicroBlaze プロセッサ リファレンス ガイド 3 UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com 2016

第 2章: MicroBlaze アーキテ クチャ

> 大な り

>= それ以上

< 小な り

<= それ以下

+ 加算

* 乗算

/ 除算

>> 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‐5: 命令セ ッ ト の用語 (続き)

シンボル 説明

表 2‐6: MicroBlaze 命令セ ッ ト のま とめ

タ イプ A 0‐5 6‐10 11‐15 16‐20 21‐31セマンテ ィ クス

タ イプ B 0‐5 6‐10 11‐15 16‐31

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) elseRd[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

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド 13UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 14: MicroBlaze プロセッサ リファレンス ガイド …...MicroBlaze プロセッサ リファレンス ガイド 3 UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com 2016

第 2章: MicroBlaze アーキテ クチャ

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

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

表 2‐6: MicroBlaze 命令セ ッ ト のま とめ (続き)

タ イプ A 0‐5 6‐10 11‐15 16‐20 21‐31セマンテ ィ クス

タ イプ B 0‐5 6‐10 11‐15 16‐31

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド 14UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 15: MicroBlaze プロセッサ リファレンス ガイド …...MicroBlaze プロセッサ リファレンス ガイド 3 UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com 2016

第 2章: MicroBlaze アーキテ クチャ

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

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 Rd := Ra * s(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

BSEFI Rd,Ra,ImmW,ImmS

011001 Rd Ra 01000 &

ImmW & 0 & ImmS

Rd[0:31-ImmW] := 0Rd[32-ImmW:31] := (Ra >> ImmS)

BSIFI Rd,Ra,Width,ImmS

011001 Rd Ra 10000 &

ImmW & 0 & ImmS

M := (0xffffffff << (ImmW + 1)) xor(0xffffffff << ImmS)Rd := ((Ra << ImmS) and M) xor(Rd and M)ImmW := ImmS + Width - 1

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, block if N = 0)MSR[C] := FSLx_M_Full if N = 1

TNECAGET Rd,FSLx 011011 Rd 00000 0N1TAE000000 & FSLx Rd := FSLx (control read, block 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, block 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]) elseRd := 2 if (Rb[8:15] = Ra[8:15]) elseRd := 3 if (Rb[16:23] = Ra[16:23]) elseRd := 4 if (Rb[24:31] = Ra[24:31]) elseRd := 0

AND Rd,Ra,Rb 100001 Rd Ra Rb 00000000000 Rd := Ra and Rb

表 2‐6: MicroBlaze 命令セ ッ ト のま とめ (続き)

タ イプ A 0‐5 6‐10 11‐15 16‐20 21‐31セマンテ ィ クス

タ イプ B 0‐5 6‐10 11‐15 16‐31

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド 15UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 16: MicroBlaze プロセッサ リファレンス ガイド …...MicroBlaze プロセッサ リファレンス ガイド 3 UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com 2016

第 2章: MicroBlaze アーキテ クチャ

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) elseRd := 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) elseRd := 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])

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 00001100110 一致し たア ド レ スのキ ャ ッ シュ ラ イ ンはク

リ ア、 格納されたデータ を破棄。

C_DCACHE_USE_WRITEBACK = 1 の と き

使用。

表 2‐6: MicroBlaze 命令セ ッ ト のま とめ (続き)

タ イプ A 0‐5 6‐10 11‐15 16‐20 21‐31セマンテ ィ クス

タ イプ B 0‐5 6‐10 11‐15 16‐31

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド 16UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 17: MicroBlaze プロセッサ リファレンス ガイド …...MicroBlaze プロセッサ リファレンス ガイド 3 UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com 2016

第 2章: MicroBlaze アーキテ クチャ

WDC.CLEAR.EA Ra,Rb 100100 00000 Ra Rb 00011100110 一致し た拡張ア ド レ ス Ra & Rb のキ ャ ッ

シュ ラ イ ンはク リ ア。

C_DCACHE_USE_WRITEBACK = 1 の と き

使用。

MTS Sd,Ra 100101 00000 Ra 11 & Sd 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

MFS Rd,Sa 100101 Rd 00000 10 & Sa Rd := SPR[Sa]

· SPR[0x0000] は PC

· SPR[0x0001] は MSR

· SPR[0x0003] は EAR[31:0]

· 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 200B] は PVR[0 to 12]

MFSE Rd,Sa 100101 Rd 01000 10 & Sa Rd := SPR[Sa][63:32]:

· SPR[32x0003] は EAR[63:0]

· SPR[0x2008] は PVR[8][63:32]

· SPR[0x2009] は PVR[9][63:32]

MSRCLR Rd,Imm 100101 Rd 00001 00 & Imm14 Rd := MSRMSR := MSR and Imm14

表 2‐6: MicroBlaze 命令セ ッ ト のま とめ (続き)

タ イプ A 0‐5 6‐10 11‐15 16‐20 21‐31セマンテ ィ クス

タ イプ B 0‐5 6‐10 11‐15 16‐31

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド 17UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 18: MicroBlaze プロセッサ リファレンス ガイド …...MicroBlaze プロセッサ リファレンス ガイド 3 UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com 2016

第 2章: MicroBlaze アーキテ クチャ

MSRSET Rd,Imm 100101 Rd 00000 00 & Imm14 Rd := MSRMSR := 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 + RbRd := 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 := RbRd := PC

BRK Rd,Rb 100110 Rd 01100 Rb 00000000000 PC := RbRd := PCMSR[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

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

表 2‐6: MicroBlaze 命令セ ッ ト のま とめ (続き)

タ イプ A 0‐5 6‐10 11‐15 16‐20 21‐31セマンテ ィ クス

タ イプ B 0‐5 6‐10 11‐15 16‐31

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド 18UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 19: MicroBlaze プロセッサ リファレンス ガイド …...MicroBlaze プロセッサ リファレンス ガイド 3 UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com 2016

第 2章: MicroBlaze アーキテ クチャ

RTED Ra,Imm 101101 10100 Ra Imm PC := Ra + s(Imm)MSR[EE] := 1, MSR[EIP] := 0ESR := 0

BRI Imm 101110 00000 00000 Imm PC := PC + s(Imm)

MBAR Imm 101110 Imm 00010 0000000000000100 PC := PC + 4、 メ モ リ ア ク セス を待機

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 := PCMSR[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

BGEID Ra,Imm 101111 10101 Ra Imm PC := PC + s(Imm) if Ra >= 0

LBU Rd,Ra,Rb

LBUR Rd,Ra,Rb

110000 Rd Ra Rb 00000000000

01000000000

Addr := Ra + RbRd[0:23] := 0Rd[24:31] := *Addr[0:7]

LBUEA Rd,Ra,Rb 110000 Rd Ra Rb 00010000000 Addr := Ra & RbRd[0:23] := 0Rd[24:31] := *Addr[0:7]

LHU Rd,Ra,Rb

LHUR Rd,Ra,Rb

110001 Rd Ra Rb 00000000000

01000000000

Addr := Ra + RbRd[0:15] := 0Rd[16:31] := *Addr[0:15]

表 2‐6: MicroBlaze 命令セ ッ ト のま とめ (続き)

タ イプ A 0‐5 6‐10 11‐15 16‐20 21‐31セマンテ ィ クス

タ イプ B 0‐5 6‐10 11‐15 16‐31

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド 19UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 20: MicroBlaze プロセッサ リファレンス ガイド …...MicroBlaze プロセッサ リファレンス ガイド 3 UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com 2016

第 2章: MicroBlaze アーキテ クチャ

LHUEA Rd,Ra,Rb 110001 Rd Ra Rb 00010000000 Addr := Ra & RbRd[0:15] := 0Rd[16:31] := *Addr[0:15]

LW Rd,Ra,RbLWR Rd,Ra,Rb

110010 Rd Ra Rb 0000000000001000000000

Addr := Ra + RbRd := *Addr

LWX Rd,Ra,Rb 110010 Rd Ra Rb 10000000000 Addr := Ra + RbRd := *AddrReservation := 1

LWEA Rd,Ra,Rb 110010 Rd Ra Rb 00010000000 Addr := Ra & RbRd := *Addr

SB Rd,Ra,Rb

SBR Rd,Ra,Rb

110100 Rd Ra Rb 00000000000

01000000000

Addr := Ra + Rb*Addr[0:8] := Rd[24:31]

SBEA Rd,Ra,Rb 110100 Rd Ra Rb 00010000000 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]

SHEA Rd,Ra,Rb 110101 Rd Ra Rb 00010000000 Addr := Ra & Rb*Addr[0:16] := Rd[16:31]

SW Rd,Ra,RbSWR Rd,Ra,Rb

110110 Rd Ra Rb 0000000000001000000000

Addr := Ra + Rb*Addr := Rd

SWX Rd,Ra,Rb 110110 Rd Ra Rb 10000000000 Addr := Ra + Rb*Addr := Rd if Reservation = 1Reservation := 0

SWEA Rd,Ra,Rb 110110 Rd Ra Rb 00010000000 Addr := Ra & Rb*Addr := Rd

LBUI Rd,Ra,Imm 111000 Rd Ra Imm Addr := Ra + s(Imm)Rd[0:23] := 0Rd[24:31] := *Addr[0:7]

LHUI Rd,Ra,Imm 111001 Rd Ra Imm Addr := Ra + s(Imm)Rd[0:15] := 0Rd[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

表 2‐6: MicroBlaze 命令セ ッ ト のま とめ (続き)

タ イプ A 0‐5 6‐10 11‐15 16‐20 21‐31セマンテ ィ クス

タ イプ B 0‐5 6‐10 11‐15 16‐31

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド 20UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 21: MicroBlaze プロセッサ リファレンス ガイド …...MicroBlaze プロセッサ リファレンス ガイド 3 UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com 2016

第 2章: MicroBlaze アーキテ クチャ

セマフ ォ同期化

LWX および SWX 命令は、 テス ト と セ ッ ト 、 比較と ス ワ ッ プ、 メ モ リ 交換、 フ ェ ッチ と追加など、 共通セマフ ォ操

作を イ ンプ リ メ ン ト するために使用されます。 また、 ス ピン ロ ッ ク を イ ンプ リ メ ン ト するのにも使用されます。

これらの命令は、 通常、 システム プロ グ ラ ムによ って使用され、 適宜アプ リ ケーシ ョ ン プロ グ ラ ムによ って呼び出

されます。 一般的には、 プロ グ ラ ムは、 メ モ リ からセマフ ォ を ロードするのに 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 ; load and reservebnei r5,next ; branch if not equal to zeroaddik r5,r5,1 ; increment valueswx r5,r3,r0 ; try to store non-zero valueaddic r5,r0,0 ; check reservationbnei r5,loop ; loop if reservation lost

next:

1. 浮動小数点演算には多 く のコーナー ケースが関与し ている ため、 標準動作のみを説明し ています。 こ の動作の詳細は、 第 5 章「MicroBlaze 命令セ ッ ト アーキテ クチャ」 を参照し て く ださ い。

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド 21UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 22: MicroBlaze プロセッサ リファレンス ガイド …...MicroBlaze プロセッサ リファレンス ガイド 3 UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com 2016

第 2章: MicroBlaze アーキテ クチャ

• パフ ォーマン スは、 目的の値を返すこ と ができ ない LWX 命令でのループを最小限にする こ と で、 改善でき ま

す。 また、 初期値チェ ッ ク をする普通のロード命令を使用する こ と で、 パフ ォーマン ス を改善する こ と もでき

ます。 次は、 ス ピン ロ ッ ク のイ ンプ リ メ ンテーシ ョ ン例です。

loop: lw r5,r3,r0 ; load the wordbnei r5,loop ; loop back if word not equal to 0lwx r5,r3,r0 ; try reserving againbnei r5,loop ; likely that no branch is neededaddik r5,r5,1 ; increment valueswx r5,r3,r0 ; try to store non-zero valueaddic r5,r0,0 ; check reservationbnei r5,loop ; loop if reservation lost

• LWX/SWX 命令ペアでのループを最小限にする と、 前進する可能性が高 く な り ます。 古い値は、 ス ト アを実行

する前にテス ト する必要があ り ます。 順番が逆の場合 (ス ト アの後にロード を実行)、 実行される SWX 命令の数

が多 く な り 、 LWX と SWX と の間で、 予約が失われる可能性が高 く な り ます。

自己変更コー ド

自己変更コード を使用する場合は、 変更された命令を実行するのにフ ェ ッチする前に、 メ モ リ にその命令が書き込

まれている こ と を ソ フ ト ウ ェ アで確認する必要があ り ます。 次の点に注意する必要があ り ます。

• 変更される命令が、 変更前に既に、 次の場所にフ ェ ッチされている可能性があ る。

¨ 命令プ リ フ ェ ッチバッ フ ァー

¨ 命令キ ャ ッ シュ (イ ネーブルになっている場合)

¨ ス ト リ ーム バッ フ ァー (命令キ ャ ッ シュ ス ト リ ーム バッ フ ァーが使用されている場合)

¨ 命令キ ャ ッ シュ。 その後、 ビ ク テ ィ ム バッ フ ァーが使用されている場合はそ こ に保存される。

古い未変更のコード ではな く 、 変更された コード が常に実行されている こ と を確認するには、 ソ フ ト ウ ェ アは

これらのすべてのケース を処理する必要があ り ます。

• 変更する命令が 1 つ以上分岐で、 分岐先キ ャ ッ シュが使用されている場合は、 分岐先ア ド レ スがキ ャ ッ シュ さ

れている可能性があ り ます。

キ ャ ッ シュ された分岐先ア ド レ スの使用を避けるには、 変更されたコード を実行する前に、 分岐先キ ャ ッ シュ

がク リ アになっている こ と を ソ フ ト ウ ェ アで確認する必要があ り ます。

• 変更された命令は、 実行前に メ モ リ に書き込まれていない可能性があ り ます。

¨ 変更された命令は メ モ リ に書き込まれる手前で、 イ ン ターコネ ク ト または メ モ リ コ ン ト ローラーの一時的

なス ト レージにあ る可能性があ り ます。

¨ ラ イ ト バッ ク キ ャ ッ シュが使用されている場合は、 変更された命令はデータ キ ャ ッ シュに格納されている

可能性があ り ます。

¨ ラ イ ト バッ ク キ ャ ッ シュおよびビ ク テ ィ ム バッ フ ァーが使用されている場合は、 変更された命令はビ ク

テ ィ ム バッ フ ァーに格納されている可能性があ り ます。

プロセ ッ サがフ ェ ッチする前に、 変更された命令が メ モ リ に書き込まれている こ と を ソ フ ト ウ ェ アで確認する

必要があ り ます。

次の注釈付き コード は、 上記の問題のそれぞれがどのよ う に解決されるかを示し ています。 このコード は、 命令

キ ャ ッ シュおよびラ イ ト バッ ク データ キ ャ ッ シュの両方が使用されている こ と を前提にし ています。 使用されてい

ない場合は、 その部分の命令は省 く こ と ができ ます。

次のコード例は、 変更された命令を格納し ます。

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド 22UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 23: MicroBlaze プロセッサ リファレンス ガイド …...MicroBlaze プロセッサ リファレンス ガイド 3 UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com 2016

第 2章: MicroBlaze アーキテ クチャ

swi r5,r6,0 ; r5 = new instruction; r6 = physical instruction address

wdc.flush r6,r0 ; flush write-back data cache linembar 1 ; ensure new instruction is written to memorywic r7,r0 ; invalidate line, empty stream & victim buffers

; r7 = virtual instruction addressmbar 2 ; empty prefetch buffer, clear branch target cache

MMU 仮想モード が使用されていない限 り 、 上記の物理および仮想ア ド レ スは同じです。 MMU がイネーブルになっ

ている場合は、 WIC および WDC は特権命令であ るため、 コード シーケン ス を リ アル モード で実行する必要があ り

ます。 上記のコード シーケン スの後の最初の命令はプ リ フ ェ ッチされている可能性があ る ため、 変更し ないで く だ

さい。

レジス タ

MicroBlaze には、 直交性のあ る命令セ ッ ト アーキテ クチャがあ り 、 選定されているオプシ ョ ンによ って異な り ます

が、 32 個の 32 ビ ッ ト の汎用レジス タ と、 18 個の 32 ビ ッ ト の特殊レジス タがあ り ます。

汎用レジス タ

32 個の 32 ビ ッ ト の汎用レジス タには、 R0 から R31 までの番号が付いています。 レジス タ フ ァ イルは、 ビ ッ ト ス ト

リ ーム ダウ ン ロード で リ セ ッ ト されます ( リ セ ッ ト 値は 0x00000000)。 図 2-2は汎用レジス タ を表し てお り 、 表 2-7 に

は、 各レジス タおよびレジス タ リ セ ッ ト 値 (あれば) がま と められています。

注記: レジス タ フ ァ イルは、 外部 リ セ ッ ト 入力であ る、 Reset および Debug_Rst では リ セ ッ ト されません。

0 31

R0-R31

図 2‐2: R0‐R31

表 2‐7: 汎用レジス タ (R0-R31)

ビ ッ ト 名前 説明 リ セ ッ ト 値

0:31 R0 常に値はゼロにな り ます。 R0 に書き込まれた値は破棄されま

す。

0x00000000

0:31 R1 から R13 まで 32 ビ ッ ト 汎用レジス タ -

0:31 R14 割 り 込み用に戻 り ア ド レ ス を格納する ために使用される 32 ビ ッ

ト レジス タ

-

0:31 R15 32 ビ ッ ト 汎用レジス タ。 ユーザー ベク ター用の戻 り ア ド レ ス を

格納する ために推奨。

-

0:31 R16 ブレーク用に戻 り ア ド レ ス を格納する ために使用される 32 ビ ッ

ト レジス タ

-

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド 23UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 24: MicroBlaze プロセッサ リファレンス ガイド …...MicroBlaze プロセッサ リファレンス ガイド 3 UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com 2016

第 2章: MicroBlaze アーキテ クチャ

汎用レジス タ を使用する場合のソ フ ト ウ ェ アに関し ては、 表 4-2を参照し て く ださい。

特殊用途レジス タ

プログラム カウン ター (PC)

プロ グ ラ ム カ ウ ン ター (PC) は実行命令の 32 ビ ッ ト ア ド レ スです。 これは、 MFS 命令で読み出しでき ますが、 MTS

命令で書き込むこ と はでき ません。 MFS 命令で使用される場合は、 PC レジス タは Sa = 0x0000 で指定されます。 PC

は図 2-3で図説され、 表 2-8 には、 その詳細および リ セ ッ ト 値がま と められています。

マシン ステータ ス レジス タ (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 には、 ビ ッ ト の説明および リ セ ッ ト 値がま と められています。

0:31 R17 MicroBlaze がハード ウ ェ ア例外をサポー ト する よ う に設定され

ている場合は、 こ のレジス タには、 命令のア ド レ スがロード さ

れ、 その命令の後にハード ウ ェ ア例外が発生し ます。 ただし、

BTR を使用する遅延ス ロ ッ ト の例外を除き ます ( 「分岐先レジス

タ (BTR)」 を参照)。 ハード ウ ェア例外をサポー ト する よ う に設

定されていない場合は、 レジス タは汎用レジス タです。

-

0:31 R18 から R31 まで R18 から R31 までは 32 ビ ッ ト の汎用レジス タです。 -

表 2‐7: 汎用レジス タ (R0-R31) (続き)

ビ ッ ト 名前 説明 リ セ ッ ト 値

0 31

PC

図 2‐3: PC

表 2‐8: プログラム カウン ター (PC)

ビ ッ ト 名前 説明 リ セ ッ ト 値

0:31 PC プロ グ ラ ム カ ウ ン ター

実行命令のア ド レ ス、 つま り mfs r2 0 は、 mfs 命令自体のア ド レ ス を R2 に

格納し ます。

0x00000000

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド 24UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 25: MicroBlaze プロセッサ リファレンス ガイド …...MicroBlaze プロセッサ リファレンス ガイド 3 UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com 2016

第 2章: MicroBlaze アーキテ クチャ

0 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31

- - - - - - - - - - - - - - - - -

CC 予約VMS

VMUMS

UMPVR

EIP EE DCEDZO

ICEFSL

BIP C IE RES

図 2‐4: MSR

表 2‐9: マシン ステータ ス レジス タ (MSR)

ビ ッ ト 名前 説明 リ セ ッ ト 値

0 CC 演算キ ャ リ ー コ ピー

演算キ ャ リ ーのコ ピー (ビ ッ ト 29)。 CC はビ ッ ト C と常に同じです。

0

1:16 予約

17 VMS 仮想保護モード保存

MMU で設定し た場合にのみ使用可能。 (C_USE_MMU > 1 および C_AREA_OPTIMIZED = 0 または 2 の場合)

読み出し /書き込み

0

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 または 2 の場合)

読み出し /書き込み

0

19 UMS ユーザー モード保存

MMU で設定し た場合にのみ使用可能。 (C_USE_MMU > 0 および C_AREA_OPTIMIZED = 0 または 2 の場合)

読み出し /書き込み

0

20 UM ユーザー モード

0 = 特権モード、 すべての命令が使用でき る。

1 = ユーザー モード、 一部の命令が使用でき ない。

MMU で設定し た場合にのみ使用可能。 (C_USE_MMU > 0 および C_AREA_OPTIMIZED = 0 または 2 の場合)

読み出し /書き込み

0

21 PVR プロセ ッサ バージ ョ ン レジス タが存在する。

0 = プロセ ッ サ バージ ョ ン レジス タ な し

1 = プロセ ッ サ バージ ョ ン レジス タ あ り

読み出し専用

パラ メ ーター

C_PVR に基

づ く 。

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド 25UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 26: MicroBlaze プロセッサ リファレンス ガイド …...MicroBlaze プロセッサ リファレンス ガイド 3 UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com 2016

第 2章: MicroBlaze アーキテ クチャ

22 EIP 処理中例外

0 = 処理中ハード ウ ェア例外な し

1 = 処理中ハード ウ ェア例外あ り

例外サポー ト を有効にし て設定し ている場合 (C_*_EXCEPTION または

C_USE_MMU > 0) にのみ使用可能

読み出し /書き込み

0

23 EE 例外イ ネーブル

0 = ハード ウ ェア例外をデ ィ スエーブル1

1 = ハード ウ ェア例外を イネーブル

例外サポー ト を有効にし て設定し ている場合 (C_*_EXCEPTION または

C_USE_MMU > 0) にのみ使用可能

読み出し /書き込み

0

24 DCE データ キ ャ ッ シュ イネーブル

0 = データ キ ャ ッ シュ をデ ィ スエーブル

1 = データ キ ャ ッ シュ を イネーブル

データ キ ャ ッ シュ を使用する よ う に設定し ている場合 (C_USE_DCACHE =

1) にのみ使用可能

読み出し /書き込み

0

25 DZO ゼロ除算、 または除算オーバーフ ロー2

0 = ゼロ除算、 または除算オーバーフ ローが発生し ていない

1 = ゼロ除算、 または除算オーバーフ ローが発生

ハード ウ ェ ア除算器を使用する よ う に設定し ている場合 (C_USE_DIV = 1)

にのみ使用可能

読み出し /書き込み

0

26 ICE 命令キ ャ ッ シュ イネーブル

0 = 命令キ ャ ッ シ ュ をデ ィ スエーブル

1 = 命令キ ャ ッ シ ュ を イネーブル

命令キ ャ ッ シュ を使用する よ う に設定し ている場合 (C_USE_ICACHE = 1)

にのみ使用可能

読み出し /書き込み

0

表 2‐9: マシン ステータ ス レジス タ (MSR) (続き)

ビ ッ ト 名前 説明 リ セ ッ ト 値

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド 26UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 27: MicroBlaze プロセッサ リファレンス ガイド …...MicroBlaze プロセッサ リファレンス ガイド 3 UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com 2016

第 2章: MicroBlaze アーキテ クチャ

例外ア ド レス レジス タ (EAR)

例外ア ド レ ス レジス タは、 次の例外を引き起こすフルのロード /ス ト ア ア ド レ ス を格納し ます。

• ア ラ イ ン されていないア ク セス データ ア ド レ ス を指定する ア ラ イ ン されていないア ク セス例外

• エラーの起き ている AXI4 データ ア ク セス ア ド レ ス を指定する M_AXI_DP 例外

• ア ク セスのあった (仮想) 実効ア ド レ ス を指定するデータ ス ト レージ例外

• 読み出しのあった (仮想) 実効ア ド レ ス を指定する命令ス ト レージ例外

• ア ク セスのあった (仮想) 実効ア ド レ ス を指定するデータ TLB ミ ス例外

• 読み出しのあった (仮想) 実効ア ド レ ス を指定する命令 TLB ミ ス例外

27 FSL AXI4-Stream エラー

0 = get または getd にエラーな し

1 = get または getd の制御タ イプが一致し ない

こ のビ ッ ト はステ ィ ッ キー ビ ッ ト で、 制御ビ ッ ト が一致し ない場合に get ま

たは getd 命令で設定されます。 これを ク リ アにするには、 MTS または

MSRCLR 命令を使用する必要があ り ます。

ス ト リ ーム リ ン ク を使用する よ う に設定し ている場合 (C_FSL_LINKS > 0) にのみ使用可能

読み出し /書き込み

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 ビ ッ ト はゼロ除算、 または除算

オーバーフ ロー コ ンデ ィ シ ョ ンをフ ラ グ し ます。

表 2‐9: マシン ステータ ス レジス タ (MSR) (続き)

ビ ッ ト 名前 説明 リ セ ッ ト 値

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド 27UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 28: MicroBlaze プロセッサ リファレンス ガイド …...MicroBlaze プロセッサ リファレンス ガイド 3 UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com 2016

第 2章: MicroBlaze アーキテ クチャ

上記以外の例外に対し ては、 このレジス タの内容は定義されていません。 MFS または MFSE 命令で読み出される場

合は、 EAR は Sa = 0x0003 で指定されます。 EAR レジス タは 図 2-5で図説され、 表 2-10 にはビ ッ ト の説明と リ セ ッ

ト 値がま と められています。

拡張データ ア ド レ ス指定がイネーブルになっている と (C_ADDR_SIZE > 32)、 レジス タの最下位ビ ッ ト 32 ビ ッ ト が

MFS 命令で読み出され、 最上位ビ ッ ト が MFSE 命令で読み出されます。

例外ステータ ス レジス タ (ESR)

例外ステータ ス レジス タには、 プロセ ッサのステータ ス ビ ッ ト が含まれています。 MFS 命令で読み出される場合

は、 ESR は Sa = 0x0005 で指定されます。 ESR レジス タは図 2-6で図説され、 表 2-11 にはビ ッ ト の説明および リ セ ッ

ト 値が、 表 2-12 には例外別ステータ ス (ESS) がま と められています。

0 C_ADDR_SIZE - 1

EAR

図 2‐5: EAR

表 2‐10: 例外ア ド レス レジス タ (EAR)

ビ ッ ト 名前 説明 リ セ ッ ト 値

0:C_ADDR_SIZE-1 EAR 例外ア ド レ ス レジス タ 0

19 20 26 27 31

- - -

予約 DS ESS EC

図 2‐6: ESR

表 2‐11: 例外ステータ ス レジス タ (ESR)

ビ ッ ト 名前 説明 リ セ ッ ト 値

0:18 予約

19 DS 遅延ス ロ ッ ト 例外

0 = 遅延ス ロ ッ ト 命令で引き起こ されていない

1 = 遅延ス ロ ッ ト 命令で引き起こ されている

読み出し専用

0

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド 28UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 29: MicroBlaze プロセッサ リファレンス ガイド …...MicroBlaze プロセッサ リファレンス ガイド 3 UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com 2016

第 2章: MicroBlaze アーキテ クチャ

20:26 ESS 例外別ステータ ス

表 2-12を参照

読み出し専用

表 2-12を参照

27:31 EC 例外原因

00000 = ス ト リ ーム例外

00001 = ア ラ イ ン されていないデータ ア ク セス例外

00010 = 無効なオペコード例外

00011 = 命令バス エラー例外

00100 = データ バス エラー例外

00101 = 除算例外

00110 = 浮動小数点ユニ ッ ト 例外

00111 = 特権命令例外

00111 = ス タ ッ ク保護違反例外

10000 = データ ス ト レージ例外

10001 = 命令ス ト レージ例外

10010 = データ TLB ミ ス例外

10011 = 命令 TLB ミ ス例外

読み出し専用

0

表 2‐12: 例外別ステータ ス (ESS)

例外原因 ビ ッ ト 名前 説明 リ セ ッ ト 値

ア ラ イ ン し て

いないデータ

ア ク セス

20 W ワード ア ク セス例外

0 = ア ラ イ ン し ていないハーフ ワード ア ク セス

1 = ア ラ イ ン し ていないワード ア ク セス

0

21 S ス ト ア ア ク セス例外

0 = ア ラ イ ン し ていないロード ア ク セス

1 = ア ラ イ ン し ていないス ト ア ア ク セス

0

22:26 Rx ソース /デステ ィ ネーシ ョ ン レジス タ

ア ラ イ ン し ていないア ク セスでソース (ス ト ア) または

デステ ィ ネーシ ョ ン (ロード ) と し て使用される汎用レ

ジス タ

0

無効な命令 20:26 予約 0

命令バス エ

ラー

20 ECC ILMB の訂正可能エラーまたは訂正不可能なエラーに

よ る例外

0

21:26 予約 0

データ バス

エラー

20 ECC DLMB の訂正可能エラーまたは訂正不可能なエラーに

よ る例外

0

21:26 予約 0

除算 20 DEC 除算 - 除算エラー原因

0 = ゼロ除算

1 = 除算オーバーフ ロー

0

21:26 予約 0

表 2‐11: 例外ステータ ス レジス タ (ESR) (続き)

ビ ッ ト 名前 説明 リ セ ッ ト 値

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド 29UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 30: MicroBlaze プロセッサ リファレンス ガイド …...MicroBlaze プロセッサ リファレンス ガイド 3 UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com 2016

第 2章: MicroBlaze アーキテ クチャ

分岐先レジス タ (BTR)

MicroBlaze プロセ ッサが例外を使用する よ う に設定されている場合にのみ、 分岐先レジス タは存在し ます。 このレ

ジス タは、 MSR[EIP] = 0 の と きに実行されたすべての遅延ス ロ ッ ト の分岐命令の分岐先ア ド レ ス を格納し ます。 例

外が遅延ス ロ ッ ト の命令によ って引き起こ された場合 (つま り ESR[DS]=1)、 例外ハン ド ラーは、 R17 に格納されてい

る標準例外戻 り ア ド レ スではな く 、 BTR に格納されている ア ド レ スに実行を戻す必要があ り ます。 MFS 命令で読み

出される場合は、 BTR は Sa = 0x000B で指定されます。 BTR レジス タは 図 2-7で図説され、 表 2-13 にはビ ッ ト の説

明 と リ セ ッ ト 値がま と められています。

浮動小数点

ユニ ッ ト

20:26 予約 0

特権命令 20:26 予約 0

ス タ ッ ク保護

違反

20:26 予約 0

ス ト リ ーム 20:22 予約 0

23:26 FSL 例外を引き起こ し た AXI4-Stream イ ンデッ ク ス 0

データ ス ト レージ

20 DIZ データ ス ト レージ - ゾーン保護

0 = 発生し なかった

1 = 発生し た

0

21 S データ ス ト レージ - ス ト ア命令

0 = 発生し なかった

1 = 発生し た

0

22:26 予約 0

命令

ス ト レージ

20 DIZ 命令ス ト レージ - ゾーン保護

0 = 発生し なかった

1 = 発生し た

0

21:26 予約 0

データ TLB

ミ ス

20 予約 0

21 S データ TLB ミ ス - ス ト ア命令

0 = 発生し なかった

1 = 発生し た

0

22:26 予約 0

命令 TLB ミ ス

20:26 予約 0

表 2‐12: 例外別ステータ ス (ESS) (続き)

例外原因 ビ ッ ト 名前 説明 リ セ ッ ト 値

0 31

BTR

図 2‐7: BTR

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド 30UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 31: MicroBlaze プロセッサ リファレンス ガイド …...MicroBlaze プロセッサ リファレンス ガイド 3 UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com 2016

第 2章: MicroBlaze アーキテ クチャ

浮動小数点ステータ ス レジス タ (FSR)

浮動小数点ステータ ス レジス タには、 浮動小数点ユニ ッ ト のステータ ス ビ ッ ト が含まれています。 これは、 MFS 命

令で読み出しでき、 MTS 命令で書き込みでき ます。 読み出し または書き込みが実行される場合は、 こ のレジス タは

Sa = 0x0007 で指定されます。 このレジス タのビ ッ ト はステ ィ ッ キーで、 浮動小数点命令は、 レジス タのビ ッ ト しか

セ ッ ト でき ません。 MTS 命令を使用し ない と、 レジス タ を ク リ アにでき ません。 FSR レジス タは 図 2-8で図説され、

表 2-14 には、 ビ ッ ト の説明および リ セ ッ ト 値がま と められています。

例外データ レジス タ (EDR)

例外データ レジス タは、 ス ト リ ーム例外を引き起こ し た AXI4-Stream リ ン ク で読み出されたデータ を格納し ます。

ほかのすべての例外の場合は、 このレジス タの内容は未定義です。 MFS 命令で読み出される場合は、 EDR は Sa =

0x000D で指定されます。 EDR レジス タは 図 2-9で図説され、 表 2-15 には、 ビ ッ ト の説明および リ セ ッ ト 値がま と め

られています。

注記: C_FSL_LINKS が 0 よ り 大き く 、 C_FSL_EXCEPTION が 1 に設定されている場合にのみ、 こ のレジス タはイ

ンプ リ メ ン ト されます。

 

表 2‐13: 分岐先レジス タ (BTR)

ビ ッ ト 名前 説明 リ セ ッ ト 値

0:31 BTR 遅延ス ロ ッ ト の例外によ って引き起こ された例外から戻る と きに、

ハン ド ラーによ り 使用される分岐先ア ド レ ス

読み出し専用

0x00000000

27 28 29 30 31

- - - - - -

予約 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

0 31

EDR

図 2‐9: EDR

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド 31UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 32: MicroBlaze プロセッサ リファレンス ガイド …...MicroBlaze プロセッサ リファレンス ガイド 3 UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com 2016

第 2章: MicroBlaze アーキテ クチャ

ス タ ッ ク ロウ レジス タ (SLR)

ス タ ッ ク ロ ウ レジス タは、 ス タ ッ ク オーバーフ ローを検出する ためのス タ ッ ク の最低値を格納し ます。 rA と し て

ス タ ッ ク ポイ ン ター (レジス タ R1) を使用する ロード またはス ト ア命令のア ド レ スが、 ス タ ッ ク ロ ウ レジス タ よ り

小さい と、 ス タ ッ ク オーバーフ ローが発生し、 MSR で例外がイ ネーブルになっている場合は、 ス タ ッ ク保護違反例

外にな り ます。

MFS 命令で読み出される場合は、 SLR は Sa = 0x0800 で指定されます。 SLR レジス タは 図 2-10で図説され、 表 2-16

には、 ビ ッ ト の説明および リ セ ッ ト 値がま と められています。

注記: パラ メ ーター C_USE_STACK_PROTECTION が 1 に設定されていてス タ ッ ク保護がイネーブルになっている場

合にのみ、 このレジス タはイ ンプ リ メ ン ト されます。 ス タ ッ ク保護がイ ンプ リ メ ン ト されていない場合は、 このレ

ジス タへの書き込みには効力はあ り ません。

注記: MMU がイネーブルの場合 (C_USE_MMU > 0)、 ス タ ッ ク保護は使用でき ません。 UTLB の代わ り に、 MMU ペー

ジ ベースの メ モ リ を使用し て保護されます。

ス タ ッ ク ハイ レジス タ (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 ペー

ジ ベースの メ モ リ を使用し て保護されます。

表 2‐15: 例外データ レジス タ (EDR)

ビ ッ ト 名前 説明 リ セ ッ ト 値

0:31 EDR 例外データ レジス タ 0x00000000

0 31

SLR

図 2‐10: SLR

表 2‐16: ス タ ッ ク ロウ レジス タ (SLR)

ビ ッ ト 名前 説明 リ セ ッ ト 値

0:31 SLR ス タ ッ ク ロ ウ レジス タ 0x00000000

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド 32UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 33: MicroBlaze プロセッサ リファレンス ガイド …...MicroBlaze プロセッサ リファレンス ガイド 3 UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com 2016

第 2章: MicroBlaze アーキテ クチャ

 

プロセス ID レジス タ (PID)

プロセス ID レジス タは、 MMU ア ド レ ス変換中のソ フ ト ウ ェア プロセスの特定に使用されます。 これは、

MicroBlaze の C_USE_MMU のコ ンフ ィ ギ ュ レーシ ョ ン オプシ ョ ンで設定されます。 C_USE_MMU が 1 よ り 大き く (

ユーザー モード )、 C_AREA_OPTIMIZED が 0 (パフ ォーマン ス) または 2 (周波数) に設定されている場合にのみ、 こ

のレジス タはイ ンプ リ メ ン ト されます。 MFS および MTS 命令でア ク セス される場合は、 PID は Sa = 0x1000 で指定

されます。 このレジス タには、 メ モ リ 管理特殊レジス タのパラ メ ーター C_MMU_TLB_ACCESS の設定に従ってア ク

セスでき ます。

PID は TLB エン ト リ にア ク セスする と きにも使用されます。

• TLBHI (変換ルッ ク アサイ ド バッ フ ァー ハイ ) を書き込むと、 PID の値は、 TLB エン ト リ の TID フ ィ ール ド に格

納されます。

• TLBHI および MSR[UM] の読み出しがセ ッ ト されていない場合は、 TID フ ィ ール ド の値は PID に格納されます。

PID レジス タは 図 2-12で図説され、 表 2-18 には、 ビ ッ ト の説明および リ セ ッ ト 値がま と められています。

0 31

SHR

図 2‐11: SHR

表 2‐17: ス タ ッ ク ハイ レジス タ (SHR)

ビ ッ ト 名前 説明 リ セ ッ ト 値

0:31 SHR ス タ ッ ク ハイ レジス タ 0xFFFFFFFF

24 31

- -

予約 PID

図 2‐12: PID

表 2‐18: プロセス ID レジス タ (PID)

ビ ッ ト 名前 説明 リ セ ッ ト 値

0:23 予約

24:31 PID MMU ア ド レ ス変換中のソ フ ト ウ ェア プロセス を特定するのに使用さ

れます。

読み出し /書き込み

0x00

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド 33UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 34: MicroBlaze プロセッサ リファレンス ガイド …...MicroBlaze プロセッサ リファレンス ガイド 3 UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com 2016

第 2章: MicroBlaze アーキテ クチャ

ゾーン保護レジス タ (ZPR)

ゾーン保護レジス タは、 TLB エン ト リ で定義されている MMU メ モ リ 保護を上書きするために使用されます。 これ

は、 MicroBlaze の C_USE_MMU のコ ンフ ィ ギ ュ レーシ ョ ン オプシ ョ ンで設定されます。 C_USE_MMU が 1 よ り も大

き く (ユーザー モード )、 C_AREA_OPTIMIZED が 0 (パフ ォーマン ス) または 2 (周波数) に設定されていて、 さ らに

指定されている メ モ リ 保護ゾーンの数が 0 よ り も大きい (C_MMU_ZONES > 0) 場合にのみ、 このレジス タはイ ンプ リ

メ ン ト されます。 イ ンプ リ メ ン ト される レジス タ ビ ッ ト は、 指定されている メ モ リ 保護ゾーンの数

(C_MMU_ZONES) に左右されます。 MFS および MTS 命令でア ク セス される場合は、 ZPR は Sa = 0x1001 で指定され

ます。 このレジス タには、 メ モ リ 管理特殊レジス タのパラ メ ーター C_MMU_TLB_ACCESS の設定に従ってア ク セス

でき ます。 ZPR レジス タは 図 2-13で図説され、 表 2-19 には、 ビ ッ ト の説明および リ セ ッ ト 値がま と められていま

す。

変換ルッ クアサイ ド バッ フ ァー ロウ レジス タ (TLBLO)

変換ルッ ク アサイ ド バッ フ ァー ロ ウ レジス タは、 MMU の統合変換ルッ ク アサイ ド バッ フ ァー (UTLB) エン ト リ に

ア ク セスするために使用されます。 これは、 MicroBlaze の C_USE_MMU のコ ンフ ィ ギュ レーシ ョ ン オプシ ョ ンで設

定されます。 C_USE_MMU が 1 よ り 大き く (ユーザー モード )、 C_AREA_OPTIMIZED が 0 (パフ ォーマン ス) または

2 (周波数) に設定されている場合にのみ、 こ のレジス タはイ ンプ リ メ ン ト されます。 MFS および MTS 命令でア ク セ

ス される場合は、 TLBLO は Sa = 0x1003 で指定されます。 TLBLO を読み出し または書き込みする と きは、 TLBX レ

ジス タでイ ンデッ ク ス化された UTLB エン ト リ にア ク セス し ます。 このレジス タは、 メ モ リ 管理特殊レジス タのパ

ラ メ ーター C_MMU_TLB_ACCESS の設定に従って、 読み出し可能です。

0 2 4 6 8 10 12 14 16 18 20 22 24 26 28 30

- - - - - - - - - - - - - - - -ZP0 ZP1 ZP2 ZP3 ZP4 ZP5 ZP6 ZP7 ZP8 ZP9 ZP10 ZP11 ZP12 ZP13 ZP14 ZP15

図 2‐13: ZPR

表 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

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド 34UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 35: MicroBlaze プロセッサ リファレンス ガイド …...MicroBlaze プロセッサ リファレンス ガイド 3 UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com 2016

第 2章: MicroBlaze アーキテ クチャ

UTLB はビ ッ ト ス ト リ ーム ダウ ン ロード で リ セ ッ ト されます (すべての TLBLO エン ト リ の リ セ ッ ト 値は

0x00000000)。

注記: UTLB は、 外部 リ セ ッ ト 入力であ る Reset および Debug_Rst では リ セ ッ ト されません。 つま り 、 データの陳

腐化を避けるため、 リ セ ッ ト 後 UTLB 全体を初期化する必要があ り ます。

TLBLO レジス タは 図 2-14で図説され、 表 2-20 には、 ビ ッ ト の説明および リ セ ッ ト 値がま と められています。

0 22 23 24 28 29 30 31

- - - - - - - -RPN EX WR ZSEL W I M G

図 2‐14: TLBLO

表 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

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド 35UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 36: MicroBlaze プロセッサ リファレンス ガイド …...MicroBlaze プロセッサ リファレンス ガイド 3 UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com 2016

第 2章: MicroBlaze アーキテ クチャ

変換ルッ クアサイ ド バッ フ ァー ハイ レジス タ (TLBHI)

変換ルッ ク アサイ ド バッ フ ァー ハイ レジス タは、 MMU の統合変換ルッ ク アサイ ド バッ フ ァー (UTLB) エン ト リ に

ア ク セスするために使用されます。 これは、 MicroBlaze の C_USE_MMU のコ ンフ ィ ギュ レーシ ョ ン オプシ ョ ンで設

定されます。 C_USE_MMU が 1 よ り 大き く (ユーザー モード )、 C_AREA_OPTIMIZED が 0 (パフ ォーマン ス) また

は 2 (周波数) に設定されている場合にのみ、 このレジス タはイ ンプ リ メ ン ト されます。 MFS および MTS 命令でア ク

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

30 M メ モ リ コ ヒ ーレン ト

メ モ リ コ ヒ ーレンシは MicroBlaze にはイ ンプ リ メ ン ト されていないため、

こ のビ ッ ト は 0 に固定されています。

読み出し専用

0

31 G ガード

ビ ッ ト が 1 にセ ッ ト されている場合、 投機的ページ ア ク セスは許可されま

せん ( メ モ リ がガード されている )。

ビ ッ ト が 0 に ク リ ア されている場合、 投機的ページ ア ク セスは許可されま

す。

G 属性は、 メ モ リ マ ッ プされた I/O を不適切な命令ア ク セスから保護する

ために使用でき ます。

読み出し /書き込み

0

表 2‐20: 変換ルッ クアサイ ド バッ フ ァー ロウ レジス タ (TLBLO) (続き)

ビ ッ ト 名前 説明 リ セ ッ ト 値

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド 36UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 37: MicroBlaze プロセッサ リファレンス ガイド …...MicroBlaze プロセッサ リファレンス ガイド 3 UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com 2016

第 2章: MicroBlaze アーキテ クチャ

セス される場合は、 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 31

- - - - - -TAG SIZE V E U0 予約

図 2‐15: TLBHI

表 2‐21: 変換ルッ ク アサイ ド バッ フ ァー ハイ レジス タ (TLBHI)

ビ ッ ト 名前 説明 リ セ ッ ト 値

0:21 TAG TLB エン ト リ タ グ

SIZE フ ィ ール ド の制御の下、 仮想 メ モ リ ア ド レ スのページ番号の部分 と

比較されます。

読み出し /書き込み

0x000000

22:24 SIZE サイ ズ

ページ サイ ズを指定し ます。 SIZE フ ィ ール ド は、 TAG フ ィ ール ド を仮想

メ モ リ ア ド レ スのページ番号部分と比較する と きに使用される ビ ッ ト 範囲

を制御し ます。 こ のフ ィ ール ド で定義されるページ サイ ズは表 2-37に リ ス

ト されています。

読み出し /書き込み

000

25 V 有効

こ のビ ッ ト が 1 にセ ッ ト されている場合、 TLB エン ト リ は有効で、 ページ

変換エン ト リ が含まれています。

0 にク リ ア されている場合は、 TLB エン ト リ は無効です。

読み出し /書き込み

0

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド 37UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 38: MicroBlaze プロセッサ リファレンス ガイド …...MicroBlaze プロセッサ リファレンス ガイド 3 UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com 2016

第 2章: MicroBlaze アーキテ クチャ

変換ルッ クアサイ ド バッ フ ァー イ ンデッ クス レジス タ (TLBX)

変換ルッ ク アサイ ド バッ フ ァー イ ンデッ ク ス レジス タは、 TLBLO および TLBHI レジス タにア ク セスする と き、 統

合変換ルッ ク アサイ ド バッ フ ァー (UTLB) へのイ ンデッ ク ス と し て使用されます。 これは、 MicroBlaze の

C_USE_MMU のコ ンフ ィ ギ ュ レーシ ョ ン オプシ ョ ンで設定されます。C_USE_MMU が 1 よ り 大き く (ユーザー モード

)、 C_AREA_OPTIMIZED が 0 (パフ ォーマン ス) または 2 (周波数) に設定されている場合にのみ、 このレジス タはイ

ンプ リ メ ン ト されます。 MFS および MTS 命令でア ク セス される場合は、 TLBX は Sa = 0x1002 で指定されます。

TLBX レジス タは 図 2-16で図説され、 表 2-22 には、 ビ ッ ト の説明および リ セ ッ ト 値がま と められています。

26 E エンデ ィ アン

こ のビ ッ ト が 1 にセ ッ ト されている場合、 ページはビ ッ グ エンデ ィ アン

ページ と し てア ク セス されます。

0 にク リ ア されている場合、 ページは リ ト ル エンデ ィ アン ページ と し てア

ク セス されます。

E ビ ッ ト はデータ読み出し またはデータ書き込みア ク セスにのみ影響し ま

す。 命令ア ク セスには影響し ません。

E ビ ッ ト は、C_USE_REORDER_INSTR が 1 に設定されている場合にのみイ

ンプ リ メ ン ト され、 それ以外の場合は 0 に固定されます。

読み出し /書き込み

0

27 U0 ユーザー定義

MicroBlaze にはユーザー定義のス ト レージ属性がないため、 こ のビ ッ ト は

0 に固定されています。

読み出し専用

0

28:31 予約

表 2‐21: 変換ルッ ク アサイ ド バッ フ ァー ハイ レジス タ (TLBHI) (続き) (続き)

ビ ッ ト 名前 説明 リ セ ッ ト 値

0 26 31

- - -

ミ ス 予約 イ ンデッ ク ス

図 2‐16: TLBX

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド 38UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 39: MicroBlaze プロセッサ リファレンス ガイド …...MicroBlaze プロセッサ リファレンス ガイド 3 UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com 2016

第 2章: MicroBlaze アーキテ クチャ

変換ルッ クアサイ ド バッ フ ァー検索イ ンデ ッ クス レジス タ (TLBSX)

変換ルッ ク アサイ ド バッ フ ァー検索イ ンデッ ク ス レジス タは、 統合変換ルッ ク アサイ ド バッ フ ァー (UTLB) で仮想

ページ番号を検索するために使用されます。 これは、 MicroBlaze の C_USE_MMU のコ ンフ ィ ギュ レーシ ョ ン オプ

シ ョ ンで設定されます。 C_USE_MMU が 1 よ り 大き く (ユーザー モード )、 C_AREA_OPTIMIZED が 0 (パフ ォーマン

ス) または 2 (周波数) に設定されている場合にのみ、 このレジス タはイ ンプ リ メ ン ト されます。 MTS 命令で書き込ま

れる場合は、 TLBSX は Sa = 0x1005 で指定されます。 TLBSX レジス タは 図 2-17で図説され、 表 2-23 には、 ビ ッ ト の

説明および リ セ ッ ト 値がま と められています。

表 2‐22: 変換ルッ ク アサイ ド バッ フ ァー イ ンデ ッ クス レジス タ (TLBX)

ビ ッ ト 名前 説明 リ セ ッ ト 値

0 MISS TLB ミ ス

TLBSX レジス タが仮想ア ド レ スで書き込まれ、 その仮想ア ド レ スが TLB

エン ト リ にあ る場合、 このビ ッ ト は 0 にク リ アにな り ます。 仮想ア ド レ スが検出されない場合は、 ビ ッ ト は 1 にセ ッ ト されます。

TLBX レジス タ自体が書き込まれる と、 ビ ッ ト も ク リ アにな り ます。

読み出し専用

メ モ リ 管理特殊レジス タのパラ メ ーターが C_MMU_TLB_ACCESS > 0

(MINIMAL) の場合、 読み出し可能です。

0

1:25 予約

26:31 INDEX TLB イ ンデッ ク ス

TLBLO および TLBHI レジス タによ ってア ク セス される変換ルッ ク アサイ

ド バッ フ ァー エン ト リ を イ ンデッ ク ス化するのにこのフ ィ ール ド は使用

されます。 TLBSX レジス タが仮想ア ド レ スで書き込まれ、 その仮想ア ド

レ スが対応する TLB エン ト リ にあ る場合、 このフ ィ ール ド は TLB イ ン

デッ ク スでア ッ プデー ト されます。

読み出し /書き込み

メ モ リ 管理特殊レジス タのパラ メ ーターが C_MMU_TLB_ACCESS > 0

(MINIMAL) の場合、 読み出しおよび書き込み可能です。

000000

0 22 31- -

VPN 予約

図 2‐17: TLBSX

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド 39UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 40: MicroBlaze プロセッサ リファレンス ガイド …...MicroBlaze プロセッサ リファレンス ガイド 3 UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com 2016

第 2章: MicroBlaze アーキテ クチャ

プロセ ッサ バージ ョ ン レジス タ (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 または MFSE 命令で読み出される場合、PVR は Sa = 0x200x で指定されます。 この場合 x には 0x0 から 0xB まで

のレジス タ番号が入 り ます。

拡張データ ア ド レ ス指定がイネーブルになっている と (C_ADDR_SIZE > 32)、PVR8 および PVR9 の最下位ビ ッ ト 32

ビ ッ ト が MFS 命令で読み出され、 最上位ビ ッ ト が MFSE 命令で読み出されます。

ビ ッ ト の説明および値は、 表 2-24から 表 2-35 までにま と められています。

表 2‐23: 変換ルッ ク アサイ ド バッ フ ァー検索イ ンデッ クス レジス タ (TLBSX)

ビ ッ ト 名前 説明 リ セ ッ ト 値

0:21 VPN 仮想ページ番号

このフ ィ ール ド は、 仮想 メ モ リ ア ド レ スのページ番号部分を表し ます。 V

ビ ッ ト が 1 にセ ッ ト されている変換ルッ ク アサイ ド バッ フ ァー エン ト リ の

それぞれで、 SIZE フ ィ ール ド の制御の下、 仮想 メ モ リ ア ド レ スのページ

番号部分と、 このフ ィ ール ド が比較されます。

仮想ページ番号が検出される と、 TLBX レジス タは TLB エン ト リ のイ ン

デッ ク スで書き込まれ、 TLBX の MISS ビ ッ ト は 0 に ク リ アにな り ます。

仮想ページ番号がどの TLB エン ト リ にも検出されない場合、 TLBX レジス

タの MISS ビ ッ ト は 1 にセ ッ ト されます。

書き込み専用

22:31 予約

表 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

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド 40UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 41: MicroBlaze プロセッサ リファレンス ガイド …...MicroBlaze プロセッサ リファレンス ガイド 3 UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com 2016

第 2章: MicroBlaze アーキテ クチャ

11 FT フ ォール ト ト レ ラ ン ス機能を イ ンプ リ メ ン ト C_FAULT_TOLERANT

12 SPROT ス タ ッ ク保護を使用 C_USE_STACK_PROTECTION

13 REORD 再順序付け命令を イ ンプ リ メ ン ト C_USE_REORDER_INSTR

14:15 予約 0

16:23 MBV MicroBlaze リ リ ース バージ ョ ン コード リ リ ース別

0x19 = v8.40.b0x1B = v9.00x1D = v9.10x1F = v9.20x20 = v9.3

0x21 = v9.40x22 = v9.50x23 = v9.60x24 = v10.0

24:31 USR1 ユーザー設定の値 1 C_PVR_USER1

表 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 FREQ プロセ ッ サ周波数を最適化するにはイ ンプ リ

メ ンテーシ ョ ンを選択

C_AREA_OPTIMIZED=2 (周波数)

8 予約 0

9 予約 1

10 ACE ACE イ ン ターコネ ク ト を使用 C_INTERCONNECT = 3 (ACE)

11 AXI4DP データ ペ リ フ ェ ラル AXI イ ン ターフ ェ イ スは、

AXI4 プロ ト コルを使用 (排他的ア ク セスのサ

ポー ト あ り )

C_M_AXI_DP_EXCLUSIVE_ACCESS

12 FSL 拡張 AXI4-Stream 命令を使用 C_USE_EXTENDED_FSL_INSTR

13 FSLEXC AXI4-Stream 制御ビ ッ ト 不一致に対し例外を生

C_FSL_EXCEPTION

14 MSR msrset および msrclr 命令を使用 C_USE_MSR_INSTR

表 2‐24: プロセ ッサ バージ ョ ン レジス タ 0 (PVR0) (続き)

ビ ッ ト 名前 説明 値

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド 41UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 42: MicroBlaze プロセッサ リファレンス ガイド …...MicroBlaze プロセッサ リファレンス ガイド 3 UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com 2016

第 2章: MicroBlaze アーキテ クチャ

15 PCMP パターン比較および CLZ 命令を使用 C_USE_PCMP_INSTR

16 AREA 低い命令スループ ッ ト でエ リ アを最適化する

ためのイ ンプ リ メ ンテーシ ョ ンを選択

C_AREA_OPTIMIZED = 1 (エ リ ア)

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)

22 FPU2 浮動小数点変換および平方根命令を使用 C_USE_FPU = 2 (Extended)

23 IMPEXC LMB メ モ リ の ECC 訂正可能エラーに対し、 あ

いまい例外を許可

C_IMPRECISE_EXCEPTIONS

24 予約 0

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

表 2‐27: プロセ ッサ バージ ョ ン レジス タ 3 (PVR3)

ビ ッ ト 名前 説明 値

0 DEBUG デバッ グ ロ ジ ッ ク を使用 C_DEBUG_ENABLED> 0

1 EXT_DEBU

G拡張デバッ グ ロ ジ ッ ク を使用 C_DEBUG_ENABLED= 2 (Extended)

2 予約

3:6 PCBRK PC ブレーク ポイ ン ト の数 C_NUMBER_OF_PC_BRK

7:9 予約

10:12 RDADDR 読み出し ア ド レ ス ブレーク ポイ ン ト の数 C_NUMBER_OF_RD_ADDR_BRK

13:15 予約

16:18 WRADDR 書き込みア ド レ ス ブレーク ポイ ン ト の数 C_NUMBER_OF_WR_ADDR_BRK

19 予約 0

20:24 FSL AXI4-Stream リ ン ク の数 C_FSL_LINKS

25:28 予約

29:31 BTC_SIZE 分岐先キ ャ ッ シュ サイ ズ C_BRANCH_TARGET_CACHE_SIZE

表 2‐26: プロセ ッサ バージ ョ ン レジス タ 2 (PVR2) (続き)

ビ ッ ト 名前 説明 値

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド 42UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 43: MicroBlaze プロセッサ リファレンス ガイド …...MicroBlaze プロセッサ リファレンス ガイド 3 UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com 2016

第 2章: MicroBlaze アーキテ クチャ

表 2‐28: プロセ ッサ バージ ョ ン レジス タ 4 (PVR4)

ビ ッ ト 名前 説明 値

0 ICU 命令キ ャ ッ シ ュ を使用 C_USE_ICACHE

1:5 ICTS 命令キ ャ ッ シ ュ タ グ サイ ズ C_ADDR_TAG_BITS

6 予約 1

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 予約 0

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 予約 0

表 2‐29: プロセ ッサ バージ ョ ン レジス タ 5 (PVR5)

ビ ッ ト 名前 説明 値

0 DCU データ キ ャ ッ シュ を使用 C_USE_DCACHE

1:5 DCTS データ キ ャ ッ シュ タ グ サイ ズ C_DCACHE_ADDR_TAG

6 予約 1

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 予約 0

19:21 DCV データ キ ャ ッ シュ ビ ク テ ィ ム 0-3: C_DCACHE_VICTIMS = 0、 2、 4、 8

22:23 予約 0

24 DFTL データ キ ャ ッ シュ タ グは分散 RAM を使用 C_DCACHE_FORCE_TAG_LUTRAM

25 DCDW データ キ ャ ッ シュ データ幅 C_DCACHE_DATA_WIDTH > 0

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド 43UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 44: MicroBlaze プロセッサ リファレンス ガイド …...MicroBlaze プロセッサ リファレンス ガイド 3 UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com 2016

第 2章: MicroBlaze アーキテ クチャ

26 AXI4DC データ キ ャ ッ シュ AXI イ ン ターフ ェ イ スは、

AXI4 プロ ト コルを使用 (排他的ア ク セスのサポー

ト あ り )

C_M_AXI_DC_EXCLUSIVE_ACCESS

27:31 予約 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:C_ADDR_SIZE-1 DCBA データ キ ャ ッ シュ ベース ア ド レ ス C_DCACHE_BASEADDR

表 2‐33: プロセ ッサ バージ ョ ン レジス タ 9 (PVR9)

ビ ッ ト 名前 説明 値

0:C_ADDR_SIZE-1 DCHA データ キ ャ ッ シ ュ ハイ ア ド レ ス C_DCACHE_HIGHADDR

表 2‐34: プロセ ッサ バージ ョ ン レジス タ 10 (PVR10)

ビ ッ ト 名前 説明 値

0:7 ARCH ターゲ ッ ト アーキテ クチャ : パラ メ ーター C_FAMILY で定義

0xF

0x10

0x11

0x12

0x13

0x14

0x15

0x16

0x170x18

=

=

=

=

=

=

=

=

==

Virtex®-7、 防衛グレード Virtex-7 Q

Kintex®-7、 防衛グレード Kintex-7 Q

Artix®-7、 オー ト モーテ ィ ブ Artix-7、 防

衛グレード Artix-7 Q

Zynq®-7000、 オー ト モーテ ィ ブ Zynq-

7000、

防衛グレード Zynq-7000 Q

UltraScale™Virtex

UltraScale Kintex

UltraScale+™Zynq

UltraScale+ Virtex

UltraScale+ KintexSpartan®-7

8:13 ASIZE 拡張ア ド レ ス ビ ッ ト の数 C_ADDR_SIZE - 32

14:31 予約 0

表 2‐29: プロセ ッサ バージ ョ ン レジス タ 5 (PVR5) (続き)

ビ ッ ト 名前 説明 値

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド 44UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 45: MicroBlaze プロセッサ リファレンス ガイド …...MicroBlaze プロセッサ リファレンス ガイド 3 UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com 2016

第 2章: MicroBlaze アーキテ クチャ

表 2‐35: プロセ ッサ バージ ョ ン レジス タ 11 (PVR11)

ビ ッ ト 名前 説明 値

0:1 MMU MMU を使用: C_USE_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_IE << 2 |C_RESET_MSR_BIP << 4 |C_RESET_MSR_ICE << 6 |C_RESET_MSR_DCE << 8 |C_RESET_MSR_EE << 9 |C_RESET_MSR_EIP << 10

表 2‐36: プロセ ッサ バージ ョ ン レジス タ 12 (PVR12)

ビ ッ ト 名前 説明 値

0:31 VECTORS MicroBlaze ベク ターの位置 C_BASE_VECTORS

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド 45UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 46: MicroBlaze プロセッサ リファレンス ガイド …...MicroBlaze プロセッサ リファレンス ガイド 3 UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com 2016

第 2章: MicroBlaze アーキテ クチャ

パイプ ラ イ ン  アーキテ クチャ

MicroBlaze 命令実行はパイプラ イ ン処理されています。 ほ と んどの命令の場合、 各段の完了に 1 ク ロ ッ ク サイ クル

かか り ます。 つま り 、 特定の命令が完了するのに必要な ク ロ ッ ク サイ クル数は、 パイプラ イ ンの段数と等し く な り 、

各サイ クルで命令が 1 つ完了し ます。 実行段で完了するのに複数のク ロ ッ ク サイ クルが必要になる命令もい く つか

あ り ます。 この場合は、 パイプラ イ ンを ス ト ールさせます。

遅い メ モ リ から実行する場合、 命令フ ェ ッチに複数サイ クルかかる こ と があ り ます。 この追加レ イ テンシは、 パイ

プラ イ ンの効率に直接影響し ます。 MicroBlaze は、 そのよ う なマルチサイ クル命令 メ モ リ レ イ テンシの影響を抑え

る命令プ リ フ ェ ッチ バッ フ ァーを イ ンプ リ メ ン ト し ます。 実行段でマルチサイ クル命令によ ってパイプラ イ ンがス

ト ールし ている間、 プ リ フ ェ ッチ バッ フ ァーは順次命令を ロード し続けます。 パイプラ イ ンが実行を再開する と、

命令 メ モ リ ア ク セスが完了するのを待たずに、 フ ェ ッチ段はプ リ フ ェ ッチ バッ フ ァーから直接新しい命令を ロード

し ます。 実行中に命令が変更される場合 (自己変更コード など)、 変更された命令が実行される前に、 古い未変更の

命令が含まれていないよ う にするため、 プ リ フ ェ ッチ バッ フ ァーを空にする必要があ り ます。 BRI 4 など、 同期分岐

命令を使用する こ と も可能ですが、 MBAR 命令を使用する こ と を推奨し ます。

3 段パイプ ラ イ ン

C_AREA_OPTIMIZED が 1 (エ リ ア) に設定されている場合、 ハード ウ ェ ア コ ス ト を最小限に抑え るため、 パイプラ

イ ンは、 フ ェ ッチ、 デコード、 実行の 3 段に分け られます。

5 段パイプ ラ イ ン

C_AREA_OPTIMIZED が 0 (パフ ォーマン ス) に設定されている場合、 パフ ォーマン ス を最大にする ため、 パイプラ

イ ンは、 フ ェ ッチ (IF)、 デコード (OF)、 実行 (EX)、 ア ク セス メ モ リ (MEM)、 およびラ イ ト バッ ク (WB) の 5 段に分

け られます。

サイ クル 1

サイ クル 2

サイ クル 3

サイ クル 4

サイ クル 5

サイ クル 6

サイ クル 7

命令 1 フ ェ ッチ デコード 実行

命令 2 フ ェ ッチ デコード 実行 実行 実行

命令 3 フ ェ ッチ デコード ス ト ール ス ト ール 実行

サイ クル 1

サイ クル 2

サイ クル 3

サイ クル 4

サイ クル 5

サイ クル 6

サイ クル 7

サイ クル 8

サイ クル 9

命令 1 IF OF EX MEM WB

命令 2 IF OF EX MEM MEM MEM WB

命令 3 IF OF EX ス ト ール ス ト ール MEM WB

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド 46UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 47: MicroBlaze プロセッサ リファレンス ガイド …...MicroBlaze プロセッサ リファレンス ガイド 3 UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com 2016

第 2章: MicroBlaze アーキテ クチャ

8 段パイプ ラ イ ン

C_AREA_OPTIMIZED が 2 (周波数) に設定されている場合、 周波数を最大にする ため、 パイプラ イ ンが、 フ ェ ッチ

(IF)、 デコード (OF)、 実行 (EX)、 ア ク セス メ モ リ 0 (M0)、 ア ク セス メ モ リ 1 (M1)、 ア ク セス メ モ リ 2 (M2)、 ア ク セ

ス メ モ リ 3 (M3) およびラ イ ト バッ ク (WB) の 8 段に分割されます。

分岐

通常、 フ ェ ッチおよびデコード段の命令は (プ リ フ ェ ッチ バッ フ ァーも )、 分岐し ている分岐を実行する と きに、 フ

ラ ッ シュ されます。 フ ラ ッ シュ後、 フ ェ ッチ パイプラ イ ン段は、 算出された分岐ア ド レ スからの新しい命令で リ

ロード されます。 MicroBlaze で分岐し ている分岐は実行に 3 ク ロ ッ ク サイ クル要し ます。 その う ち 2 サイ クルは、

パイプラ イ ンを再度埋めるのに必要です。 このレ イ テンシ オーバーヘッ ド を抑える ため、 MicroBlaze では遅延ス

ロ ッ ト のあ る分岐がサポー ト されています。

遅延スロ ッ ト

分岐し ている遅延ス ロ ッ ト のあ る分岐を実行する場合は、 MicroBlaze のフ ェ ッチ パイプラ イ ン段のみがフ ラ ッ シュ

され、 デコード段の命令 (分岐遅延ス ロ ッ ト ) を完了でき る よ う にな り ます。 このテ ク ニ ッ ク によ り 、 分岐ペナル

テ ィ を 2 ク ロ ッ ク サイ クルから 1 ク ロ ッ ク サイ クルに減らすこ と ができ ます。 遅延ス ロ ッ ト のあ る分岐命令には、

命令ニーモニ ッ ク に D が付いています。 た と えば、 BNE 命令は後に続 く 命令を実行し ませんが (遅延ス ロ ッ ト がな

い)、 BNED は、 制御が分岐位置に送られる前に、 次の命令を実行し ます。

遅延ス ロ ッ ト には、 IMM、 分岐、 またはブレークの命令が含まれていてはいけません。 割 り 込みおよび外部ハード

ウ ェア ブレークは、 遅延ス ロ ッ ト の分岐が完了する まで先送 り されます。

リ カバ リ 可能な例外を引き起こす可能性のあ る命令 (ア ラ イ ン されていないワードやハーフ ワード のロードおよびス

ト アなど) は遅延ス ロ ッ ト で処理されます。 遅延ス ロ ッ ト で例外が発生する し ESR[DS] ビ ッ ト がセ ッ ト される と、 例

外ハン ド ラーがその実行を分岐先に戻さ なければな り ません (特殊レジス タ BTR に格納)。 ESR[DS] ビ ッ ト がセ ッ ト

されている場合、 レジス タ R17 は無効です (そ う でない場合は、 例外を引き起こす命令の後に続いてア ド レ スが含ま

れます)。

分岐先キャ ッ シュ

分岐パフ ォーマン ス を向上させるため、 MicroBlaze には、 分岐予測機能のあ る分岐先キ ャ ッ シ ュ (BTC) があ り ます。

この BTC がイネーブルになっている と、 正し く 予測された直近の分岐または戻 り 命令にはオーバーヘッ ド が発生し

ません。

BTC は、 命令が初めて処理された と き、 直近の分岐および戻 り 命令のターゲ ッ ト ア ド レ ス を保存し ます。 次にその

命令が処理される と きは、 通常、 分岐先キ ャ ッ シュにそのア ド レ スが格納されていて、 その分岐が分岐する場合は、

命令フ ェ ッチ プロ グ ラ ム カ ウ ン ターがその格納されている ターゲ ッ ト ア ド レ スに変わ り ます。 条件な し分岐および

戻 り 命令は常に分岐し ますが、 条件付き分岐は、 分岐すべきでないものを分岐させて し ま う のを避ける ため、 分岐

予測を使用し ます。

サイ

クル 1

サイ

クル 2

サイ

クル 3

サイ

クル 4

サイ

クル 5

サイ クル 6

サイ

クル 7

サイ

クル 8

サイ

クル 9

サイ ク

ル 10

サイ ク

ル 11

命令 1 IF OF EX M0 M1 M2 M3 WB

命令 2 IF OF EX M0 M0 M1 M2 M3 WB

命令 3 IF OF EX ス ト ール M0 M1 M2 M3 WB

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド 47UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 48: MicroBlaze プロセッサ リファレンス ガイド …...MicroBlaze プロセッサ リファレンス ガイド 3 UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com 2016

第 2章: MicroBlaze アーキテ クチャ

メ モ リ バ リ ア (MBAR 0) または同期分岐 (BRI 4) が実行される と、 BTC はク リ アにな り ます。 た と え分岐し ていて

も、 分岐命令のすぐ後に メ モ リ バ リ アまたは同期分岐が続 く と きにも、 BTC はク リ アにな り ます。 間違って BTC を

ク リ アにするのを避けるため、 分岐命令のすぐ後に メ モ リ バ リ アまたは同期分岐を配置し ないで く ださ い。

分岐予測で間違って予測されて し ま う ケースには、 次のよ う な 3 つのケースがあ り ます。

• 分岐し てはいけないはずの条件付き分岐が、 実際に分岐し ている。

• 分岐し ているべき条件付き分岐が分岐し ていない。

• 戻 り 命令のターゲ ッ ト ア ド レ スが間違っている (これはコード の別の位置から読み出された関数から戻る と き

に発生する可能性があ り ます)。

こ う し たケースのすべては、 分岐または戻 り 命令が実行段に達し た と きに検出および訂正され、 分岐予測ビ ッ ト ま

たはターゲ ッ ト ア ド レ スは、 実際の命令の動作を反映させる ため、 BTC でア ッ プデー ト されます。 こ の訂正で、 5

段パイプラ イ ンの場合は 2 ク ロ ッ ク サイ クルのペナルテ ィ 、 8 段パイプラ イ ンの場合は 7 から 9 ク ロ ッ ク サイ クル

のペナルテ ィ が生じ ます。

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 (パフ ォーマン ス) または 2

(周波数) に設定されている と きに使用でき ます。

メ モ リ  アーキテ クチャ

MicroBlaze は、 命令およびデータのア ク セスがそれぞれ別のア ド レ ス空間で実行されるハーバード メ モ リ アーキテ

クチャでイ ンプ リ メ ン ト されています。 命令ア ド レ ス空間は 32 ビ ッ ト です (つま り 、 4 GB までの命令を処理し ます

)。 データ ア ド レ ス空間はデフ ォル ト で 32 ビ ッ ト ですが、 64 ビ ッ ト まで拡張可能です (つま り 、 4 GB から 16 EB ま

でのデータ を処理し ます)。 命令およびデータ メ モ リ の範囲は、 両方を同じ物理 メ モ リ にマ ッ ピング し てオーバー

ラ ッ プ させる こ と ができ ます。 後者はソ フ ト ウ ェ ア デバッ グに必要です。

MicroBlaze の命令およびデータ イ ン ターフ ェ イ スはどち ら も、 幅はデフ ォル ト 32 ビ ッ ト で、 どのエンデ ィ アンが設

定されているかによ って異な り ますが、 ビ ッ グ エンデ ィ アン、 リ ト ル エンデ ィ アン、 ビ ッ ト 反転フ ォーマ ッ ト を使

用し ます。 MicroBlaze は、 データ メ モ リ へのア ク セスにワード、 ハーフ ワード、 バイ ト をサポー ト し ます。

仮想モード または保護モード で MMU を使用し ている場合 (C_USE_MMU > 1)、 または再順序付け命令がイネーブル

になっている場合 (C_USE_REORDER_INSTR = 1) にのみ、 ビ ッ グ エンデ ィ アン フ ォーマ ッ ト は使用可能です。

ア ラ イ ン されていない例外をサポー ト する よ う プロセ ッ サが設定されていない限 り 、 データ ア ク セスはア ラ イ ン さ

れている必要があ り ます (ワード ア ク セスな ら ワード の境界で、 ハーフ ワード な らハーフ ワード の境界でア ラ イ ン さ

れている必要があ る )。 命令ア ク セスはすべてワード でア ラ イ ン されている必要があ り ます。

MicroBlaze は、 命令プ リ フ ェ ッチ バッ フ ァーおよび (イネーブルになっていれば) 命令キ ャ ッ シュ ス ト リ ームを使用

し て、 パフ ォーマン ス を向上させるため、 命令をプ リ フ ェ ッチし ます。 物理 メ モ リ の終わ り を越えて メ モ リ が命令

をプ リ フ ェ ッチする と、 命令バス エラーやプロセ ッサ ス ト ールが発生する可能性があ るため、 そ う い う 命令をプ リ

フ ェ ッチするのを防ぐため、 物理 メ モ リ の終わ り に近い位置に命令を配置し ないよ う にする必要があ り ます。 命令

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド 48UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 49: MicroBlaze プロセッサ リファレンス ガイド …...MicroBlaze プロセッサ リファレンス ガイド 3 UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com 2016

第 2章: 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 命令は特権命令です。

• GET、 GETD、 PUT、 PUTD (明示的に許可されている場合を除 く )

• WIC、 WDC

• MTS

• MSRCLR、 MSRSET (C ビ ッ ト のみが影響を受ける場合を除 く )

• BRK

• RTID、 RTBD、 RTED

• BRKI (物理ア ド レ ス C_BASE_VECTORS + 0x8 または C_BASE_VECTORS + 0x18 にジ ャ ンプする場合を除 く )

• SLEEP?HIBERNATE?SUSPEND

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド 49UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 50: MicroBlaze プロセッサ リファレンス ガイド …...MicroBlaze プロセッサ リファレンス ガイド 3 UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com 2016

第 2章: MicroBlaze アーキテ クチャ

ユーザー モード でこれらの命令を実行し よ う とする と、 特権命令例外が発生し ます。

パラ メ ーター 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 + 0x8 または

C_BASE_VECTORS + 0x18 にジャ ンプ

ハード ウ ェア生成された リ セ ッ ト を除き、 上記のすべての方法で、 ユーザー モードおよび仮想モード ステータ ス

は、 MSR UMS および VMS ビ ッ ト に保存されます。

アプ リ ケーシ ョ ン (ユーザー モード ) プロ グ ラ ムは、 BRALID または BRKI 命令を使用し て、 物理ア ド レ ス

C_BASE_VECTORS + 0x8 にジャ ンプし て、 システム サービ ス ルーチン (特権モード プロ グ ラ ム) へ制御を移行させ

ます。 この命令を実行する と、 システム コール例外が発生し ます。 例外ハン ド ラーは、 どのシステム サービ ス ルー

チンを呼び出すかを判断し、 そのサービ ス を呼び出すための権限が呼び出し を し ている アプ リ ケーシ ョ ンにあ るか

ど う か確認し ます。 権限が認められた場合は、 例外ハン ド ラーは、 アプ リ ケーシ ョ ン プロ グ ラ ムの代わ り に、 シス

テム サービ ス ルーチンへの実際のプロ シージャ コールを実行し ます。

システム サービ ス ルーチンの実行環境を設定するには、 プロ ローグ命令を実行する必要があ り ます。 これらの命令

は、 通常、 プロ シージャ情報の (ア ク テ ィ ベーシ ョ ン レ コード ) の保持、 ポイ ン ターのア ッ プデー ト および初期化、

揮発性レジス タ (システム サービ ス ルーチンが使用する レジス タ ) の保存をする ス ト レージを作成し ます。 実行可能

なモジュールを作成する と き、 リ ンカーでプロ ローグ コード を挿入するか、 または、 システム コール割 り 込みハン

ド ラーかシステム ラ イブラ リ ルーチンのいずれかにス タブ コード と し てプロ ローグ コード を含める こ と ができ ま

す。

システム サービ ス ルーチンからの リ ターンは、 前出のプロセスの逆にな り ます。 エピ ローグ コード は、 ア ク テ ィ

ベーシ ョ ン レ コード を逆にし て割 り 当てを解放し、 ポイ ン ターを元に戻し、 揮発性レジス タ を元に戻し ます。 割 り

込みハン ド ラーは、 アプ リ ケーシ ョ ンに戻るために例外命令 (RTED) からの リ ターンを実行し ます。

仮想メ モ リ管理

MicroBlaze で実行し ているプロ グ ラ ムは、 フ ラ ッ ト な 4 GB ア ド レ ス空間にア ク セスするため、 実効ア ド レ ス を使用

し ます。 プロセ ッ サはこのア ド レ ス空間を、 どの変換モード が指定されているかによ り 、 次のいずれかの方法で解

釈し ます。

• リ アル モード の場合、 実効ア ド レ スは物理 メ モ リ に直接ア ク セスする ために使用されます。

• 仮想モード の場合、 プロセ ッ サの仮想 メ モ リ 管理ハード ウ ェ アによ り 、 実効ア ド レ スは物理ア ド レ スへ変換さ

れます。

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド 50UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 51: MicroBlaze プロセッサ リファレンス ガイド …...MicroBlaze プロセッサ リファレンス ガイド 3 UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com 2016

第 2章: MicroBlaze アーキテ クチャ

仮想モード の場合、 システム ソ フ ト ウ ェ アは、 物理ア ド レ ス空間の任意の位置にプロ グ ラ ムおよびデータ を移動さ

せる こ と ができ ます。 ア ク テ ィ ブなプロ グ ラ ムおよびデータに空間が必要になる と、 システム ソ フ ト ウ ェアが非ア

ク テ ィ ブなプロ グ ラ ムおよびデータ を物理 メ モ リ から移し ます。

この位置換えによ り 、 実際にシステムにイ ンプ リ メ ン ト されている よ り も多 く の メ モ リ が存在し ている よ う にプロ

グ ラ ムには見えます。 システムにあ る物理 メ モ リ 量の制限内で、 プロ グ ラ ムを う ま く 実行する こ と ができ る よ う に

な り ます。 どの物理 メ モ リ ア ド レ スがほかのソ フ ト ウ ェ ア プロセスやハード ウ ェ ア デバイ スに割 り 当て られている

かをプロ グ ラ マが知ってお く 必要はあ り ません。 プロ グ ラ ムに見えている ア ド レ スは、 プロセ ッ サによ り 、 適切な

物理ア ド レ スに変換されます。

仮想モード だ と、 メ モ リ 保護を さ らに制御でき ます。 1 KB 程度の メ モ リ のブロ ッ クは、 個別に不正ア ク セスから保

護でき ます。 メ モ リ の保護 と位置換えによ り 、 システム ソ フ ト ウ ェアでマルチタ ス ク機能をサポー ト でき ます。 複

数のプロ グ ラ ムは同時実行し ているか、 またはほぼ同時に近い状態で実行し ている よ う に見えます。

MicroBlaze では、 C_USE_MMU が 3 (仮想)、 C_AREA_OPTIMIZED が 0 (パフ ォーマン ス) または 2 (周波数) に設定さ

れている と きに、 メ モ リ 管理ユニ ッ ト (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 (パフ ォーマン ス) または 2 (周波数) の と きに、 フル メ モ リ ア ク セス保護はイ ンプ

リ メ ン ト されて使用可能にな り ます。 リ アル モード の メ モ リ マネージャーのイ ンプ リ メ ンテーシ ョ ンは、 仮想モー

ド のものよ り も簡単です。 リ アル モード は、 ア ク セス保護が必要で、 仮想ア ド レ ス変換は不要な と き、 簡単なエン

ベデッ ド環境での メ モ リ 管理のソ リ ューシ ョ ン と し て適切です。

仮想モー ド

仮想モード では、 図 2-18で説明されているプロセス を使用し、 プロセ ッサが実効ア ド レ ス を物理ア ド レ スに変換し

ます。 仮想モード は、 MSR の VM ビ ッ ト をセ ッ ト し て、 イネーブルにでき ます。

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド 51UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 52: MicroBlaze プロセッサ リファレンス ガイド …...MicroBlaze プロセッサ リファレンス ガイド 3 UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com 2016

第 2章: MicroBlaze アーキテ クチャ

図 2-18にあ る各ア ド レ スには、 ページ番号フ ィ ール ド と オフセ ッ ト フ ィ ール ド があ り ます。 ページ番号は、 MMU

によ って変換されたア ド レ ス部分です。 オフセ ッ ト は、 ページへのバイ ト オフセ ッ ト で、 MMU で変換されていま

せん。 仮想ア ド レ スには、 プロセス ID (PID) と呼ばれる追加フ ィ ール ド があ り ます。 これは PID レジス タからの情

報です (プロセス ID レジス タの詳細は33を参照)。 PID と実効ページ番号 (EPN) の組み合わせは、 仮想ページ番号

(VPN) と呼ばれます。 値 n は、 表 2-37にあ る よ う に、 ページ サイ ズによ って決められます。

システム ソ フ ト ウ ェ アはページ変換テーブルを管理するのですが、 こ のテーブルには、 各仮想ページを物理ページ

に変換するために使用されるエン ト リ が含まれています。 ページ変換エン ト リ で定義されるページ サイ ズで、 ペー

ジ番号およびオフセ ッ ト フ ィ ール ド のサイ ズが決ま り ます。 た と えば、 4kB のページ サイ ズが使用される場合、

ページ番号フ ィ ール ド は 20 ビ ッ ト で、 オフセ ッ ト フ ィ ール ド は 12 ビ ッ ト にな り ます。 この場合の VPN は 28 ビ ッ

ト です。

その後、 最も頻繁に使用されるページ変換が、 変換ルッ ク アサイ ド バッ フ ァー (TLB) に格納されます。 仮想ア ド レ

ス を変換する と き、 MMU は、 一致する VPN (PID および EPN) をページ変換エン ト リ の中から検索し ます。 テーブ

ルのすべてのエン ト リ を検索するのではな く 、 プロセ ッ サ TLB に含まれているエン ト リ のみを確認し ます。 一致す

る VPN のあ るページ変換エン ト リ が検出される と、 対応する物理ページ番号がそのエン ト リ から読み出され、 オフ

セ ッ ト と組み合わせて 32 ビ ッ ト の物理ア ド レ スに変換し ます。 この物理ア ド レ スはプロセ ッ サが メ モ リ を参照する

と きに使用されます。

システム ソ フ ト ウ ェ アは、 PID を使用し て、 プロセ ッ サ上で実行し ている ソ フ ト ウ ェ ア プロセス (タ ス ク、 サブルー

チン、 ス レ ッ ド ) を特定でき ます。 個々にコ ンパイルされているプロセスは、 互いにオーバーラ ッ プする実効ア ド レ

ス領域で動作する可能性があ り ます。 このオーバーラ ッ プは、 マルチタ ス ク機能がサポー ト されている場合は、 シ

ステム ソ フ ト ウ ェ アで解決する必要があ り ます。 PID を各プロセスに割 り 当てる こ と で、 システム ソ フ ト ウ ェアは、

各プロセス を仮想ア ド レ ス空間の 1 領域に移動させて、 オーバーラ ッ プを解決でき ます。 仮想ア ド レ ス空間マ ッ ピ

ングは、 各プロセス を物理ア ド レ ス空間に個別に変換させる こ と ができ ます。

図 2‐18: 仮想モー ドのア ド レス変換

UG011_37_021302

32-Bit Effective Address0

Effective Page Number Offset

n 31

0

PID

24 31

Translation Look-AsideBuffer (TLB) Look-Up

0

Effective Page Number Offset

n+8 39

PID

8

40-Bit Virtual Address

0

Real Page Number Offset

n 31

32-Bit Physical Address

Process ID Register

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド 52UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 53: MicroBlaze プロセッサ リファレンス ガイド …...MicroBlaze プロセッサ リファレンス ガイド 3 UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com 2016

第 2章: MicroBlaze アーキテ クチャ

ページ変換テーブル

ページ変換テーブルは、 ソ フ ト ウ ェ アで定義および管理される、 ページ変換情報を含んだデータ構造です。 エンベ

デッ ド システム アプ リ ケーシ ョ ンを ターゲ ッ ト にし たアーキテ クチャ上の ト レード オフ と し て、 ソ フ ト ウ ェ ア管理

のページ変換が必要にな り ます。 エンベデッ ド システムには、 厳し く 管理された環境と、 アプ リ ケーシ ョ ン ソ フ ト

ウ ェアを細か く 定義し たセ ッ ト があ る こ と が多 く 、 そ う い う 環境では、 次のよ う な方法で、 各エンベデッ ド システ

ム用に仮想 メ モ リ 管理を最適化でき ます。

• ページ変換エン ト リ をすばや く 検索でき る よ う に、 ページ テーブル検索 (テーブルウ ォーク と も言われる ) の速

度を最大限にするため、 ページ変換テーブルを構成でき ます。 最も一般的なプロセ ッ サは、 イ ンデッ ク ス テー

ブル (ページ テーブル サイ ズが大き く 、 簡単な検索方法) か、 ハッ シ ュ テーブル (ページ テーブル サイ ズが小

さ く 、 複雑な検索方法) のいずれかを イ ンプ リ メ ン ト し ます。 ソ フ ト ウ ェ アでテーブルを辿る こ と で、 特定のエ

ンベデッ ド システムに合わせ、 どんな組み合わせでテーブルでも構成でき ます。 ページ テーブル サイ ズおよび

ア ク セス時間の両方を最適化でき ます。

• アプ リ ケーシ ョ ン モジュール、 デバイ ス ド ラ イバー、 システム サービ ス ルーチン、 およびデータに対し、

ページを個別に使用でき ます。 個別にページ サイ ズを選択する こ と で、 フ ラ グ メ ンテーシ ョ ン (未使用の メ モ

リ ) を低減し て、 システム ソ フ ト ウ ェアが効率よ く メ モ リ を使用でき ます。 た と えば、 大き なデータ構造な ら

16 MB のページに、 小さ な I/O デバイ ス ド ラ イバーな ら 1 KB ページに割 り 当てる こ と ができ ます。

• ページ変換が見つから ないケース を最小限に抑え るため、 ページ置き換えを調節でき ます。 この後のセ ク シ ョ

ンで説明する よ う に、 最も頻繁に使用されるページ変換は、 変換ルッ ク アサイ ド バッ フ ァー (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 ア ッ プ

デー ト 操作 と の間の衝突を最小限に抑え るのに使用されます。 ITLB の初期化および管理は、 ハード ウ ェ アに

よ って完全に実行され、 ソ フ ト ウ ェ アには透過的です。

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド 53UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 54: MicroBlaze プロセッサ リファレンス ガイド …...MicroBlaze プロセッサ リファレンス ガイド 3 UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com 2016

第 2章: MicroBlaze アーキテ クチャ

• データ シ ャ ド ウ TLB (DTLB): データ ページ変換エン ト リ が含まれていて、 完全連想型です。 DTLB に格納され

るページ変換エン ト リ は、 UTLB から最近ア ク セス されたデータ ページ変換です。 DTLB は、 データ変換と

UTLB ア ッ プデー ト 操作と の間の衝突を最小限に抑え るのに使用されます。 DTLB は、 ハード ウ ェ アによ って完

全に初期化および管理され、 ソ フ ト ウ ェ アには透過的です。

図 2-19は TLB の変換フ ローを表し ています。

図 2‐19: TLB ア ド レス変換フ ロー

I サイドの

実効アドレス

D サイドの

実効アドレス

変換なしITLB

ルックアップ実行

DTLBルックアップ実行

変換なし

変換ディスエーブル

(MSR[VM]=0)変換イネーブル

(MSR[VM]=1)変換イネーブル

(MSR[VM]=1)変換ディスエーブル

(MSR[VM]=0)

UTLBルックアップ実行

実際アドレスの抽出

(ITLB から) 実際アドレスの抽出

(DTLB から)

ITLB ヒット ITLB ミス DTLB ミス DTLB ヒット

UTLB ヒット UTLB ミス

I サイドの TLB ミス

または

D サイドの TLB ミス

例外

実際アドレスの抽出

(UTLB から)

アドレスを

ITLB へ変換

アドレスを

DTLB へ変換

I キャッシュ

アクセスの継続

I キャッシュ

または D キャッシュ

アクセスの継続

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド 54UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 55: MicroBlaze プロセッサ リファレンス ガイド …...MicroBlaze プロセッサ リファレンス ガイド 3 UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com 2016

第 2章: MicroBlaze アーキテ クチャ

TLB エン ト リ  フ ォーマ ッ ト

図 2-20は TLB エン ト リ のフ ォーマ ッ ト を示し ています。 各 TLB エン ト リ は 68 ビ ッ ト で、 TLBLO (データ エン ト リ

と も言われる ) および TLBHI (タ グ エン ト リ と も言われる ) と い う 2 部構成になっています。

図 2‐20: TLB エン ト リ  フ ォーマ ッ ト

TLB エン ト リ の内容は、 35 ページの表 2-20および37 ページの表 2-21 で説明されています。

TLB エン ト リ 内のフ ィ ール ド は次のよ う に分類されています。

• 仮想ページの識別 (TAG、 SIZE、 V、 TID): ページ変換エン ト リ を特定し ます。 変換プロセス中に仮想ページ番

号 と比較されます。

• 物理ページの識別 (RPN、 SIZE): 物理 メ モ リ の変換されたページを特定し ます。

• ア ク セス制御 (EX、 WR、 ZSEL): ページで許可される ア ク セス タ イプを指定し、 不正ア ク セスからページを保

護するのに使用されます。

• ス ト レージ属性 (W、 I、 M、 G、 E、 U0): データ キ ャ ッ シュのキ ャ ッ シング ポ リ シー (ラ イ ト バッ クやラ イ ト ス

ルー )、 ページがキ ャ ッ シュ可能かど う か、 バイ ト の順序付け (エンデ ィ アンの設定) などのス ト レージ制御属性

を指定し ます。

表 2-37は TLB エン ト リ の SIZE フ ィ ール ド と、 変換されたページ サイ ズ と の関係を示し ています。 また、 この表で

は、 タ グ比較にどのア ド レ ス ビ ッ ト が関与するか、 どのア ド レ ス ビ ッ ト がページ オフセ ッ ト と し て使用されるか、

物理ページ番号のどのビ ッ ト が物理ア ド レ スで使用されるか、 どのよ う にページ サイ ズによ って決ま るかが説明さ

れています。

TLBLO0 22 23 24 28 29 30 31

- - - - - - - -RPN EX WR ZSEL W I M G

TLBHI0 22 25 26 27 28 35

- - - - - -TAG SIZE V E U0 TID

表 2‐37: ページ変換ビ ッ ト 範囲 (ページ サイズ別)

ページサイズ

SIZE

(TLBHI フ ィ ールド )タグ比較

ビ ッ ト 範囲ページ オフセ ッ ト 物理ページ番号

RPN ビ ッ ト  (0 にク リ ア)

1 KB 000 TAG[0:21] - Address[0:21] Address[22:31] RPN[0:21] -

4 KB 001 TAG[0:19] - Address[0:19] Address[20:31] RPN[0:19] 20:21

16 KB 010 TAG[0:17] - Address[0:17] Address[18:31] RPN[0:17] 18:21

64 KB 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 プロセ ッサ リ フ ァ レンス ガイ ド 55UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 56: MicroBlaze プロセッサ リファレンス ガイド …...MicroBlaze プロセッサ リファレンス ガイド 3 UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com 2016

第 2章: MicroBlaze アーキテ クチャ

TLB ア クセス

MMU が仮想ア ド レ ス (PID と実効ア ド レ スの組み合わせ) を物理ア ド レ スに変換する場合、 まず、 ページ変換エン ト

リ を検索するため、 該当する シャ ド ウ TLB を確認し ます。 エン ト リ が見つかれば、 物理 メ モ リ へア ク セスするため

にそれが使用されます。 エン ト リ が見つから なければ、 MMU は今度は UTLB を確認し ます。 シャ ド ウ TLB ミ スが

あって UTLB にア ク セスする必要があ る と、 その都度遅延が発生し ます。 この ミ ス レ イ テンシは 2 から 32 サイ クル

の範囲にな り ます。 DTLB と ITLB の両方が UTLB に同時にア ク セスする場合、 DTLB のほ う が ITLB よ り も優先さ

れます。

57 ページの図 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 フ ィ ール

ド が 256 KB のページ サイ ズを指定する場合、 RPN[0:13] は物理ページ番号を表し、 物理ア ド レ ス を形成するのに使

用されます。 TLB エン ト リ を初期化する と きは、 RPN[14:21] は使用されず、 ソ フ ト ウ ェ アはこれらのビ ッ ト を 0 に

ク リ アにする必要があ り ます。 物理ア ド レ スの残 り の部分は EA のページ オフセ ッ ト 部分から取られます。 ページ

サイ ズが 256 KB の場合、 実効ア ド レ スのビ ッ ト 14:31 と RPN[0:13] を連結させて、 32 ビ ッ ト の物理ア ド レ スは形成

されます。

物理 メ モ リ にア ク セスする前に、 MMU は TLB エン ト リ ア ク セス制御フ ィ ール ド を確認し ます。 これらのフ ィ ール

ド は、 現在実行中のプロ グ ラ ムが リ ク エス ト された メ モ リ ア ク セス を実行でき るかど う かを示し ます。

ア ク セスが許可された場合、 MMU はページにア ク セスする方法を決定するため、 ス ト レージ属性フ ィ ール ド を

チェ ッ ク し ます。 ス ト レージ属性フ ィ ール ド は、 メ モ リ ア ク セスのキ ャ ッ シング ポ リ シーを指定し ます。

TLB ア クセス エラー

TLB ア ク セス エラーがあ る と、 例外が発生し ます。 そ う する と、 エラーを引き起こ し た命令の実行が割 り 込まれ、

エラーを解決するため、 割 り 込みハン ド ラーにコ ン ト ロールが渡されます。 TLB ア ク セスは次の 2 つの理由からエ

ラーになる可能性があ り ます。

• 一致する TLB エン ト リ が見つからず、 TLB ミ スになる

• 一致する TLB エン ト リ が見つかったが、 ス ト レージ属性またはゾーン保護によ り ページへア ク セスでき ない

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド 56UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 57: MicroBlaze プロセッサ リファレンス ガイド …...MicroBlaze プロセッサ リファレンス ガイド 3 UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com 2016

第 2章: MicroBlaze アーキテ クチャ

割 り 込みが発生する と、 プロセ ッ サは、 MSR[VM] を 0 にク リ アにし て、 リ アル モード にな り ます。 リ アル モード

では、 MMU で実行されるすべてのア ド レ ス変換および メ モ リ 保護チェ ッ ク がデ ィ スエーブルにな り ます。 システム

ソ フ ト ウ ェアがページ変換エン ト リ で UTLB を初期化し た後、 MicroBlaze の UTLB は、 通常、 リ アル モード で実行

し ている割 り 込みハン ド ラーを使用し て管理されます。

図 2-21は、 TLB エン ト リ を検索する一般プロセス を示し ています。

 

次のセ ク シ ョ ンでは、 TLB ア ク セス エラーが原因で例外が発生する条件を説明し ます。

データ  ス ト レージ例外

仮想モード がイネーブルの場合 (MSR[VM]=1)、 次のいずれかの理由でページへのア ク セスが許可されない と きに、

データ ス ト レージ例外が発生し ます。

• ユーザー モード から

¨ ページへのア ク セス を妨げる ゾーン フ ィ ール ド を TLB エン ト リ が指定し ます (ZPR[Zn]=00)。 これはロード

およびス ト ア命令に適用し ます。

図 2‐21: TLB エン ト リの検索プロセス

UG011_41_033101

Check Access

Read TLBLO[RPN]using TLBHI[SIZE]

TLBHI[V]=1

TLBHI[TID]=0x00

CompareTLBHI[TID] with PID

CompareTLBHI[TAG] with EA[EPN]

using TLBHI[SIZE]

Yes

NoYes

Match

Match (TLB Hit)

Check forGuarded Storage

Instruction FetchData Reference

Allowed

Not Guarded

Extract Offset from EAusing TLBHI[SIZE]

Generate Physical Addressfrom TLBLO[RPN] and Offset

TLB-Entry MissNo Match

Storage ViolationGuarded

Access ViolationNot Allowed

No TLB-Entry Miss

TLB-Entry MissNo Match

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド 57UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 58: MicroBlaze プロセッサ リファレンス ガイド …...MicroBlaze プロセッサ リファレンス ガイド 3 UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com 2016

第 2章: MicroBlaze アーキテ クチャ

¨ 特に指定がなければゾーン フ ィ ール ド (ZPR[Zn]‚ 11) で上書き される、 読み出し専用ページ

(TLBLO[WR]=0) を TLB エン ト リ が指定し ます。 これはス ト ア命令に適用し ます。

• 特権モード から

¨ 特に指定がなければゾーン フ ィ ール ド (ZPR[Zn]‚ 10 および ZPR[Zn]‚ 11) で上書き される、 読み出し専用

ページ (TLBLO[WR]=0) を TLB エン ト リ が指定し ます。 これはス ト ア命令に適用し ます。

命令ス ト レージ例外

仮想モード がイネーブルの場合 (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 タ イプのア ク セス を制御し ます。

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド 58UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 59: MicroBlaze プロセッサ リファレンス ガイド …...MicroBlaze プロセッサ リファレンス ガイド 3 UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com 2016

第 2章: MicroBlaze アーキテ クチャ

• プロセス : 各プロセスにプロセス ID (PID) を割 り 当てる こ と によ り 、 プロセス を不正ア ク セスから保護し ます。

システム ソ フ ト ウ ェ アがユーザー モード アプ リ ケーシ ョ ンを開始する と、 そのアプ リ ケーシ ョ ンの PID が PID

レジス タに読み込まれます。 アプ リ ケーシ ョ ンが実行する と、 その PID に一致する変換ルッ ク アサイ ド バッ

フ ァー ハイ (TLBHI) の TID フ ィ ール ド のあ る TLB エン ト リ のみを使用し て、 メ モ リ ア ド レ ス を変換し ます。

これによ り 、 システム ソ フ ト ウ ェ アが、 仮想 メ モ リ の特定エ リ アにアプ リ ケーシ ョ ンのア ク セス を制限でき ま

す。 TID=0x00 の TLB エン ト リ は、 プロセスに依存し ない変換を表し ています。 すべてのプロセスがグ ローバルに

ア ク セスするページには、 TID に 0x00 を割 り 当てる必要があ り ます。

• 実行: 実行可能に指定されている仮想ページ (TLBLO[EX]=1) から命令がフ ェ ッチされる場合のみ、 プロセ ッサ

は命令を実行し ます。 TLBLO[EX] を 0 にク リ アにする と、 ページから フ ェ ッチされた命令は実行されな く な

り 、 命令ス ト レージ割 り 込み (ISI) は発生し ません。 ISI は命令がフ ェ ッチされた と きには発生し ませんが、 命

令が実行された と きに発生し ます。 これによ り 、 後で破棄される (実行されるのではな く ) 投機的にフ ェ ッチさ

れた命令が 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 が メ モ リ 変換を継続実行でき る よ う に、 これらの問題を修正する ための割 り 込みハン ド ラー

を提供するのはシステム ソ フ ト ウ ェ アの役目です。

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド 59UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 60: MicroBlaze プロセッサ リファレンス ガイド …...MicroBlaze プロセッサ リファレンス ガイド 3 UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com 2016

第 2章: MicroBlaze アーキテ クチャ

ソ フ ト ウ ェアは、 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 の各エン ト リ は定期的に無効化にする必要があ り ます。

ページ アクセスおよびページ変更の記録

仮想 メ モ リ のソ フ ト ウ ェ ア管理にはい く つか問題があ り ます。

• 仮想 メ モ リ 環境では、 ソ フ ト ウ ェ アおよびデータが使用する メ モ リ 量が、 物理的に利用可能な メ モ リ 容量を超

えて し ま う こ と がよ く あ り ます。 そ こ で、 ソ フ ト ウ ェ アやデータ ページが使用されていない場合は、 ハード ド

ラ イブなど、 外部物理 メ モ リ にその一部を格納し てお く 必要があ り ます。 理想的には、 頻繁に使用されるペー

ジを物理 メ モ リ に残し、 あま り 使用されないページをど こ か別の場所に格納し ておき ます。

• 物理 メ モ リ のページを、 新しいページを読み込むためにど こ かに移動させる場合は、 移動させる (古い) ページ

が変更されていないかど う か知ってお く こ と が重要です。 変更されている場合は、 新しいページを読み込む前

に、 古いページを保存し てお く 必要があ り ます。 古いページが変更されていない場合は、 それを保存せずに新

しいページを読み込むこ と ができ ます。

• 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)。 ページに既にア ク セスがあ り 、 上記

のよ う に有効 と指定されている と想定し て、 最初にページにデータ を書き込も う とする と、 データ ス ト レージ例外

が発生し ます。 ソ フ ト ウ ェ アにページへの書き込み権限があ る場合、 データ ス ト レージ ハン ド ラーは、 そのページ

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド 60UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 61: MicroBlaze プロセッサ リファレンス ガイド …...MicroBlaze プロセッサ リファレンス ガイド 3 UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com 2016

第 2章: MicroBlaze アーキテ クチャ

を書き込み可能に設定し (TLBLO[WR]=1)、 戻 り ます。 セ ッ ト された書き込み保護ビ ッ ト は、 ページが変更された記

録にな り ます。 また、 データ ス ト レージ ハン ド ラーも、 ページ変換エン ト リ に関連付け られている別のデータ構造

にこの情報を記録でき ます。

仮想モード に最初に入った と き、 新しいプロセス を開始し た と きに、 ページ変更を記録し てお く と便利です。

リ セ ッ ト 、 割り込み、 例外、 およびブレーク

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 +

0x0000000CRx

割 り 込み1 C_BASE_VECTORS + 0x00000010 - C_BASE_VECTORS +

0x00000014R14

ブレーク : マス ク でき ないハード

ウ ェア C_BASE_VECTORS + 0x00000018 - C_BASE_VECTORS +

0x0000001CR16

ブレーク : ハード ウ ェ ア

ブレーク : ソ フ ト ウ ェ ア

ハード ウ ェア例外 C_BASE_VECTORS + 0x00000020 - C_BASE_VECTORS +

0x00000024R17 または BTR

今後のサポー ト のためザイ リ ン

ク スによ り 予約

C_BASE_VECTORS + 0x00000028 - C_BASE_VECTORS +

0x0000004F-

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド 61UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 62: MicroBlaze プロセッサ リファレンス ガイド …...MicroBlaze プロセッサ リファレンス ガイド 3 UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com 2016

第 2章: MicroBlaze アーキテ クチャ

セマフ ォやス ピン ロ ッ ク など、 相互排他機能を イ ンプ リ メ ン ト する ため LWX と SWX 命令と一緒にする と、 これら

のイベン ト はすべて予約ビ ッ ト を ク リ アにし ます。

リ セ ッ ト

Reset または Debug_Rst (1) が発生する と、 MicroBlaze はパイプラ イ ンをフ ラ ッ シ ュ し、 リ セ ッ ト ベク ター (ア ド

レ ス 0x0) から命令をフ ェ ッチし始めます。 両方の外部 リ セ ッ ト 信号がア ク テ ィ ブ High で、 最低 16 サイ クル間ア

サー ト する必要があ り ます。 MSR リ セ ッ ト 値パラ メ ーターの詳細は、 第 3 章の 「MicroBlaze コ アのコ ンフ ィ ギ ュ

レーシ ョ ン」 を参照し て く ださい。

等価擬似コー ド

PC C_BASE_VECTORS + 0x00000000MSR C_RESET_MSR_IE << 2 | C_RESET_MSR_BIP << 4 | C_RESET_MSR_ICE << 6 |

C_RESET_MSR_DCE << 8 | C_RESET_MSR_EE << 9 | C_RESET_MSR_EIP << 10EAR 0; ESR 0; FSR 0PID 0; ZPR 0; TLBX 0Reservation 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 命令を実行する と きに自動的に戻されます。

1. 低レ イ テンシ割 り 込みモード の場合、 ベク ター ア ド レ スは割 り 込みコ ン ト ローラーによ り 提供されます。

1. リ セ ッ ト 入力は、 MDM を介し てデバッ ガーで制御されます。

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド 62UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 63: MicroBlaze プロセッサ リファレンス ガイド …...MicroBlaze プロセッサ リファレンス ガイド 3 UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com 2016

第 2章: MicroBlaze アーキテ クチャ

MSR の VM および UM ビ ッ ト は、 RTED、 RTBD、 および RTID 命令を実行する と きに、 自動的に VMS および UMS

から戻されます。

例外の優先順位

複数の例外が同時に発生する場合は、 優先順位の高いものから低いものへ と、 次の順序で処理されます。

• 命令バス例外

• 命令 TLB ミ ス例外

• 命令ス ト レージ例外

• 無効なオペコード例外

• 特権命令例外またはス タ ッ ク保護違反例外

• データ TLB ミ ス例外

• データ ス ト レージ例外

• ア ラ イ ン されていない例外

• データ バス例外

• 除算例外

• FPU 例外

• ス ト リ ーム例外

例外の原因

• ス ト リ ーム例外

制御ビ ッ ト が一致し ていない と きに、 e ビ ッ ト が 1 にセ ッ ト されている get または getd を実行する と、 AXI4-

Stream 例外が発生し ます。

• 命令バス例外

メ モ リ からデータ を読み出す と きのエラーによ り 、 命令バス例外が発生し ます。

¨ 命令ペ リ フ ェ ラル 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 に等しい と、 無効なオペコード例外が発生し ます。

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド 63UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 64: MicroBlaze プロセッサ リファレンス ガイド …...MicroBlaze プロセッサ リファレンス ガイド 3 UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com 2016

第 2章: MicroBlaze アーキテ クチャ

• データ バス例外

メ モ リ からデータ を読み出す と き、 またはデータ を メ モ リ に書き込む と きのエラーによ り 、 データ バス例外が

発生し ます。

¨ データ ペ リ フ ェ ラル 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 が設定され

ているハーフ ワード ア ク セスによ って、 ア ラ イ ン されていない例外が発生し ます。

• 除算例外

除数が 0 の整数除算 (idiv または idivu) によ って、 またはオーバーフ ローが発生する符号付き整数除算 (idiv) (-

2147483648 / -1) によ って、 除算例外が発生し ます。

• FPU 例外

アンダーフ ロー、 オーバーフ ロー、 ゼロ除算、 無効な操作、 または浮動小数点の命令で起き る非正規オペラ ン

ド によ って、 FPU 例外は発生し ます。

¨ 結果が非正規化数の場合アンダーフ ローが発生し ます。

¨ 結果が非数の場合 (NaN) オーバーフ ローが発生し ます。

¨ rB が無限大でない と きに、 fdiv の rA オペラ ン ド がゼロになっている と、 ゼロ除算例外が発生し ます。

¨ NaN オペラ ン ド を使用するか、 または無効の無限大やゼロ オペラ ン ド の組み合わせによ って、 無効な操作

が発生し ます。

• 特権命令例外

ユーザー モード で特権命令を実行し よ う とする と、 特権命令例外が発生し ます。

• ス タ ッ ク保護違反例外

特殊なス タ ッ ク ロ ウおよびス タ ッ ク ハイのレジス タで定義されている ス タ ッ ク境界の外側にあ る ア ド レ スで、

rA にス タ ッ ク ポイ ン ター (レジス タ R1) を使用し た ロード またはス ト ア命令を実行する と、 ス タ ッ ク保護違反

例外が発生し、 ス タ ッ ク オーバーフ ローまたはス タ ッ ク アンダーフ ローが発生し ます。

• データ ス ト レージ例外

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド 64UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 65: MicroBlaze プロセッサ リファレンス ガイド …...MicroBlaze プロセッサ リファレンス ガイド 3 UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com 2016

第 2章: MicroBlaze アーキテ クチャ

メ モ リ 保護違反になる メ モ リ のデータにア ク セス し よ う とする と、 データ ス ト レージ例外が発生し ます。

• 命令ス ト レージ例外

メ モ リ 保護違反になる メ モ リ の命令にア ク セス し よ う とする と、 命令ス ト レージ例外が発生し ます。

• データ TLB ミ ス例外

有効な変換ルッ ク アサイ ド バッ フ ァー エン ト リ がな く 、 仮想保護モード がイネーブルになっている と きに、

データにア ク セス し よ う とする と、 データ TLB ミ ス例外が発生し ます。

• 命令 TLB ミ ス例外

有効な変換ルッ ク アサイ ド バッ フ ァー エン ト リ がな く 、 仮想保護モード がイネーブルになっている と きに、 命

令にア ク セス し よ う とする と、 命令 TLB ミ ス例外が発生し ます。

C_FAULT_TOLERANT が 1 に設定され、 例外が発生中の と きに (MSR[EIP] がセ ッ ト され、 MSR[EE] が ク リ アになっ

ている )、 命令バス例外、 無効なオペコード例外、 またはデータ バス例外が発生し た場合は、 パイプラ イ ンが停止

し、 外部信号 MB_Error がセ ッ ト されます。

不明瞭な例外

通常、 MicroBlaze の例外はすべて明瞭です。 つま り 、 例外を引き起こす命令の後のパイプラ イ ンにあ る命令はすべ

て無効化されていて、 影響がない と い う こ と です。

C_IMPRECISE_EXCEPTIONS が 1 (ECC) に設定されている と、 LMB メ モ リ の ECC エラーによ って発生する命令バ

ス例外またはデータ バス例外は不明瞭です。 つま り 、 パイプラ イ ンにあ る後続の メ モ リ ア ク セス命令が実行される

可能性があ る と い う こ と です。 この動作が許容でき る場合は、 このパラ メ ーターを 1 に設定する と、 最大周波数を

向上させる こ と ができ ます。

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド 65UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 66: MicroBlaze プロセッサ リファレンス ガイド …...MicroBlaze プロセッサ リファレンス ガイド 3 UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com 2016

第 2章: MicroBlaze アーキテ クチャ

等価擬似コー ド

ESR[DS] exception in delay slotif ESR[DS] then

BTR branch target PCif MMU exception then

if branch preceded by IMM thenr17 PC - 8

elser17 PC - 4

elser17 invalid value

else if MMU exception thenif instruction preceded by IMM then

r17 PC - 4else

r17 PCelse

r17 PC + 4PC C_BASE_VECTORS + 0x00000020MSR[EE] 0, MSR[EIP] 1MSR[UMS] MSR[UM], MSR[UM] 0, MSR[VMS] MSR[VM], MSR[VM] 0ESR[EC] exception specific valueESR[ESS] exception specific valueEAR exception specific valueFSR exception specific valueReservation 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 プロセ ッサ リ フ ァ レンス ガイ ド 66UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 67: MicroBlaze プロセッサ リファレンス ガイド …...MicroBlaze プロセッサ リファレンス ガイド 3 UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com 2016

第 2章: MicroBlaze アーキテ クチャ

ソ フ ト ウ ェ ア ブレーク

ソ フ ト ウ ェア ブレーク を実行するには、 brk および brki 命令を使用し ます。 ソ フ ト ウ ェ ア ブレーク の詳細は、

第 5 章 「MicroBlaze 命令セ ッ ト アーキテ クチャ」 を参照し て く ださい。

特殊なケース と し て、 C_USE_DEBUG がセ ッ ト されていて、 「brki rD, 0x18」 が実行される場合、 ソ フ ト ウ ェア

ブレーク ポイ ン ト は、 C_BASE_VECTORS の値にかかわらず、 XSDB (Xilinx System Debugger) などのデバッ グ ツー

ルに通知されます。

レ イテンシ

MicroBlaze がブレーク発生時からブレーク サービ ス ルーチンに入る までにかかる時間は、 現在実行段にあ る命令

と、 ブレーク ベク ターを格納する メ モ リ までのレ イ テンシに左右されます。

等価擬似コー ド

r16 PCPC C_BASE_VECTORS + 0x00000018MSR[BIP] 1MSR[UMS] MSR[UM], MSR[UM] 0, MSR[VMS] MSR[VM], MSR[VM] 0Reservation 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 になった と きにすぐに実行されます。

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド 67UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 68: MicroBlaze プロセッサ リファレンス ガイド …...MicroBlaze プロセッサ リファレンス ガイド 3 UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com 2016

第 2章: MicroBlaze アーキテ クチャ

FIT Timer IP コ アなど、 ソ フ ト ウ ェ アからの割 り 込みを ク リ アする こ と ができ ないものを使用する場合は、 エ ッ ジ ト

リ ガーの割 り 込みを使用する こ と を推奨し ます。

低レ イテンシ割り込みモー ド

Interrupt_Address 入力ポー ト を介し て、 各割 り 込みに対し、 割 り 込みコ ン ト ローラーが直接割 り 込みベク ター

を供給する こ と ができ る、 低レ イ テンシ モード が利用でき ます。 割 り 込みシステムを初期化する と き、 それぞれの

高速割 り 込みハン ド ラーのア ド レ ス を割 り 込みコ ン ト ローラーに渡す必要があ り ます。 特定の割 り 込みが発生する

と、 この割 り 込みア ド レ スは割 り 込みコ ン ト ローラーによ って提供され、 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 PCif C_USE_INTERRUPT = 2PC Interrupt_AddressInterrupt_Ack 01

elsePC C_BASE_VECTORS + 0x00000010

MSR[IE] 0MSR[UMS] MSR[UM], MSR[UM] 0, MSR[VMS] MSR[VM], MSR[VM] 0Reservation 0

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド 68UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 69: MicroBlaze プロセッサ リファレンス ガイド …...MicroBlaze プロセッサ リファレンス ガイド 3 UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com 2016

第 2章: MicroBlaze アーキテ クチャ

ユーザー ベク ター (例外)

ユーザー例外ベク ターはア ド レ ス 0x8 にあ り ます。 ユーザー例外は、 ソ フ ト ウ ェア フ ローに 「BRALID Rx,0x8」 命

令を挿入する と発生し ます。 Rx は任意の汎用レジス タ を指定でき ますが、 ユーザー例外戻 り ア ド レ スの格納には

R15 を使用し、 ユーザー例外ハン ド ラーから戻るには RTSD 命令を使用する こ と を推奨し ます。

擬似コー ド

rx PCPC C_BASE_VECTORS + 0x00000008MSR[UMS] MSR[UM], MSR[UM] 0, MSR[VMS] MSR[VM], MSR[VM] 0Reservation 0

命令キャ ッ シュ

概要

MicoBlaze にオプシ ョ ンで命令キ ャ ッ シ ュ を使用する と、 LMB ア ド レ ス範囲外にあ る コード を実行する際のパ

フ ォーマン ス を改善でき ます。

命令キ ャ ッ シュの機能は、 次の とお り です。

• 直接マ ッ プ (一方向のア ソ シエイ テ ィ ブ)

• 選択可能なキ ャ ッ シュ可能な メ モ リ ア ド レ ス範囲

• コ ンフ ィ ギュ レーシ ョ ン可能なキ ャ ッ シュおよびタ グ サイ ズ

• AXI4 イ ン ターフ ェ イ スでのキ ャ ッ シング (M_AXI_IC)

• 4、 8、 または 16 ワード のキ ャ ッ シュ ラ イ ンを使用するオプシ ョ ン

• MSR のビ ッ ト を使用し てキ ャ ッ シュのオン/オフを制御

• オプシ ョ ンの WIC 命令で命令キ ャ ッ シュ ラ イ ンを無効化

• オプシ ョ ンのス ト リ ーム バッ フ ァーで命令をプ リ フ ェ ッチし てパフ ォーマン ス を改善

• オプシ ョ ンのビ ク テ ィ ム キ ャ ッ シュで追い出されたキ ャ ッ シュ ラ イ ン データ を保存し てパフ ォーマン ス を改善

• オプシ ョ ンのパ リ テ ィ 保護で、 ブロ ッ ク RAM ビ ッ ト エラーが検出された場合にキ ャ ッ シ ュ ラ イ ンを無効化

• オプシ ョ ンでデータ幅を 32 ビ ッ ト にするか、 キ ャ ッ シ ュ ラ イ ン全体にするか、 または 512 ビ ッ ト にするか選択

一般的な命令キャ ッ シュの機能

命令キ ャ ッ シュが使用される場合、 メ モ リ ア ド レ ス空間は、 キ ャ ッ シュ可能なセグ メ ン ト と キ ャ ッ シ ュ不可能なセ

グ メ ン ト に分け られます。 キ ャ ッ シュ可能なセグ メ ン ト は、 C_ICACHE_BASEADDR および

C_ICACHE_HIGHADDR と い う 2 つのパラ メ ーターで決められます。 この範囲内のア ド レ スはすべて、 キ ャ ッ シュ

可能なア ド レ ス セグ メ ン ト に対応し ます。 その他のア ド レ スはみなキ ャ ッ シュ不可能なセグ メ ン ト です。

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド 69UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 70: MicroBlaze プロセッサ リファレンス ガイド …...MicroBlaze プロセッサ リファレンス ガイド 3 UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com 2016

第 2章: MicroBlaze アーキテ クチャ

キ ャ ッ シュ可能なセグ メ ン ト サイ ズは 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 プ リ ミ テ ィ ブにな り ます。

70 ページの図 2-22は、 命令キ ャ ッ シュの構成を示し ています。

 

命令キャ ッ シュ操作

フ ェ ッチされる どの命令に対し て も、 命令ア ド レ スがキ ャ ッ シュ可能なセグ メ ン ト にあ るかど う かを命令キ ャ ッ

シュが検出し ます。 ア ド レ スがキ ャ ッ シュでき ない場合、 キ ャ ッ シュ コ ン ト ローラーは命令を無視し、 M_AXI_IP

または LMB に リ ク エス ト を完了させます。 ア ド レ スがキ ャ ッ シ ュでき る場合は、 リ ク エス ト されたア ド レ スが現在

キ ャ ッ シュ されている こ と をチェ ッ クするため、 タ グ メ モ リ でルッ ク ア ッ プが実行されます。 ワードおよびラ イ ン

の有効ビ ッ ト がセ ッ ト されていて、 タ グ ア ド レ スが命令ア ド レ スのタ グ セグ メ ン ト と一致し ていれば、 ルッ ク ア ッ

プは成功です。 キ ャ ッ シュ ミ スの場合、 キ ャ ッ シュ コ ン ト ローラーは命令 AXI4 イ ン ターフ ェ イ ス (M_AXI_IC) を

図 2‐22: 命令キャ ッ シュの構成

命令アドレス ビット

0 3031

キャッシュ アドレスタグ アドレス --

タグ

命令

RAM

RAMライン アドレス

ワード アドレス

=タグ

有効 (ワードとライン)

キャッシュ ヒット

キャッシュ命令データ

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド 70UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 71: MicroBlaze プロセッサ リファレンス ガイド …...MicroBlaze プロセッサ リファレンス ガイド 3 UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com 2016

第 2章: MicroBlaze アーキテ クチャ

介し て新しい命令を リ ク エス ト し、 メ モ リ コ ン ト ローラーが関連付け られている キ ャ ッ シュ ラ イ ンを返すまで待機

し ます。

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 ビ ッ ト またはキ ャ ッ シュ ラ イ ン全体のいずれかを指定)。

命令キ ャ ッ シュ ス ト リ ーム バッ フ ァーを使用でき る よ う にするには、 エ リ ア最適化を イネーブルにし ないで く ださ

い。

ビ ク テ ィ ム キャ ッ シュ

C_ICACHE_VICTIMS を 2、 4、 または 8 に設定する と、 ビ ク テ ィ ム キ ャ ッ シュはイネーブルにな り ます。 このパラ

メ ーターはビ ク テ ィ ム キ ャ ッ シュに格納でき る キ ャ ッ シュ ラ イ ンの数を定義し ます。 キ ャ ッ シュ ラ イ ンがキ ャ ッ

シュから追い出される と、 常にビ ク テ ィ ム キ ャ ッ シュに格納されます。 最近のラ イ ンを格納し てお く と、 プロセ ッ

サがそれを リ ク エス ト し た場合、 よ り 高速にフ ェ ッチでき るので、 パフ ォーマン スが改善し ます。 ビ ク テ ィ ム

キ ャ ッ シュが使用されない場合、 追い出されたキ ャ ッ シュ ラ イ ンは、 必要になった と きに、 も う 一度 メ モ リ から読

み出す必要があ り ます。

C_ICACHE_DATA_WIDTH は、 各ク ロ ッ ク サイ クルで、 ビ ク テ ィ ム キ ャ ッ シ ュから、 またはビ ク テ ィ ム キ ャ ッ

シュへ転送されるデータ量を指定し ます (32 ビ ッ ト またはキ ャ ッ シ ュ ラ イ ン全体のいずれかを指定)。

ビ ク テ ィ ム キ ャ ッ シュ を使用でき る よ う にするには、 エ リ ア最適化を イネーブルにし ないで く ださ い。

命令キャ ッ シュ  ソ フ ト ウ ェ ア サポー ト

MSR ビ ッ ト

MSR の ICE ビ ッ ト を使用し、 ソ フ ト ウ ェ ア制御でキ ャ ッ シュ を イネーブルおよびデ ィ スエーブルにでき ます。

キ ャ ッ シュがデ ィ スエーブルの場合は、 デフ ォル ト で、 キ ャ ッ シュの内容は保持されます。 キ ャ ッ シュ ラ イ ンは、

WIC 命令を使用するか、 MicroBlaze のハード ウ ェ ア デバッ グ ロ ジ ッ ク を使用し て、 無効化でき ます。

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド 71UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 72: MicroBlaze プロセッサ リファレンス ガイド …...MicroBlaze プロセッサ リファレンス ガイド 3 UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com 2016

第 2章: MicroBlaze アーキテ クチャ

WIC 命令

オプシ ョ ンの WIC 命令 (C_ALLOW_ICACHE_WR=1) は、 アプ リ ケーシ ョ ンから命令キ ャ ッ シュのキ ャ ッ シュ ラ イ ン

を無効化するのに使用し ます。 詳細は、 第 5 章 「MicroBlaze 命令セ ッ ト アーキテ クチャ」 を参照し て く ださい。

WIC 命令をパ リ テ ィ 保護と一緒に使用する と、 エラーを累積するのを避けるため、 定期的にキ ャ ッ シュのエン ト リ

を無効化でき ます。

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド 72UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 73: MicroBlaze プロセッサ リファレンス ガイド …...MicroBlaze プロセッサ リファレンス ガイド 3 UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com 2016

第 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 プロセ ッサ リ フ ァ レンス ガイ ド 73UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 74: MicroBlaze プロセッサ リファレンス ガイド …...MicroBlaze プロセッサ リファレンス ガイド 3 UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com 2016

第 2章: MicroBlaze アーキテ クチャ

 

キ ャ ッ シュ可能なデータ ア ド レ スは、 キ ャ ッ シュ ア ド レ ス と タ グ ア ド レ スの 2 つの部分で構成されています。

MicroBlaze データ キ ャ ッ シュは、 64 バイ ト から 64kB までの範囲で設定でき ます。 これは、 6 から 16 ビ ッ ト までの

キ ャ ッ シュ ア ド レ スに対応し ています。 キ ャ ッ シュ ア ド レ ス と合わせた タ グ ア ド レ スは、 キ ャ ッ シュ可能な メ モ リ

のフル ア ド レ ス と一致し ている必要があ り ます。 2kB 未満のキ ャ ッ シ ュ サイ ズを選択する場合は、 タ グ RAM およ

びデータ RAM を イ ンプ リ メ ン ト するのに分散 RAM が使用されますが、 例外があって、 C_AREA_OPTIMIZED が 1

(エ リ ア) に設定されていて、 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 (パフ ォーマン ス) または 2 (周波数)、

C_DCACHE_USE_WRITEBACK = 1) は、仮想モード のキ ャ ッ シング ポ リ シーは TLB エン ト リ の W ス ト レージ属性で

決ま り ます。 リ アル モード の場合はラ イ ト バッ ク が使用されます。

ラ イ ト バッ ク プロ ト コルの場合、 キ ャ ッ シュ可能な範囲にあ る ア ド レ スにス ト ア命令があ る と、 キ ャ ッ シ ュ された

データが常にア ッ プデー ト されます。 ターゲ ッ ト ア ド レ ス ワード がキ ャ ッ シュにな く (すなわちア ク セスはキ ャ ッ

シュ ミ ス)、 キ ャ ッ シュのロ ケーシ ョ ンにまだ メ モ リ に書き込まれていないデータが含まれている (キ ャ ッ シュ ロ

図 2‐23: データ  キャ ッ シュの構成

データ アドレス ビット

0 3031

キャッシュ ワード アドレスタグ アドレス --

タグ

データ

RAM

RAMアドレス

アドレス

=タグ

有効キャッシュ ヒット

キャッシュ データ

ロード命令

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド 74UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 75: MicroBlaze プロセッサ リファレンス ガイド …...MicroBlaze プロセッサ リファレンス ガイド 3 UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com 2016

第 2章: MicroBlaze アーキテ クチャ

ケーシ ョ ンがダーテ ィ ) 場合、 新しいデータでキ ャ ッ シュがア ッ プデー ト される前に、 古いデータがデータ AXI4 イ

ン ターフ ェ イ ス (M_AXI_DC) を介し て外部 メ モ リ に書き込まれます。 1 ワード のみを書き込む必要があ る場合は、 1

ワード書き込みが使用され、 そ う でなければバース ト 書き込みが使用されます。 バイ ト またはハーフバイ ト のス ト

アの場合、 キ ャ ッ シュ ミ スがあ る と、 まずア ド レ スがデータ AXI4 イ ン ターフ ェ イ ス を介し て リ ク エス ト され、

ワード ス ト アはキ ャ ッ シュだけをア ッ プデー ト し ます。

ラ イ ト スルー プロ ト コルの場合、 キ ャ ッ シュ可能な範囲にあ る ア ド レ スへのス ト ア命令は、 等価のバイ ト 、 ハーフ

ワード、 ワード の書き込みをデータ 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 ビ ッ ト イ ン ターフ ェ イ スの非排他的ア ク セスの場

合はバース ト で目的のデータ以外はすべて破棄、 そ

れ以外の場合はシングル ア ク セス

書き込み シングル ア ク セス

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド 75UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 76: MicroBlaze プロセッサ リファレンス ガイド …...MicroBlaze プロセッサ リファレンス ガイド 3 UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com 2016

第 2章: MicroBlaze アーキテ クチャ

ビ ク テ ィ ム キャ ッ シュ

C_DCACHE_VICTIMS を 2、 4、 または 8 に設定する と、 ビ ク テ ィ ム キ ャ ッ シュはイネーブルにな り ます。 このパラ

メ ーターはビ ク テ ィ ム キ ャ ッ シュに格納でき る キ ャ ッ シュ ラ イ ンの数を定義し ます。 キ ャ ッ シュ ラ イ ン全体が

キ ャ ッ シュから追い出される と、 常にビ ク テ ィ ム キ ャ ッ シュに格納されます。 最近のラ イ ンを格納し てお く と、 プ

ロセ ッ サがそれを リ ク エス ト し た場合、 よ り 高速にフ ェ ッチでき るので、 パフ ォーマン スが改善し ます。 ビ ク テ ィ

ム キ ャ ッ シュが使用されない場合、 追い出されたキ ャ ッ シュ ラ イ ンは、 必要になった と きに、 も う 一度 メ モ リ から

読み出す必要があ り ます。

AXI4 イ ン ターフ ェ イ スの場合、 C_DCACHE_DATA_WIDTH は、 各ク ロ ッ ク サイ クルで、 ビ ク テ ィ ム キ ャ ッ シュか

ら、 またはビ ク テ ィ ム キ ャ ッ シュへ転送されるデータ量を指定し ます (32 ビ ッ ト またはキ ャ ッ シュ ラ イ ン全体のい

ずれかを指定)。

ビ ク テ ィ ム キ ャ ッ シュ を使用でき る よ う にするには、 ラ イ ト バッ ク を必ずイネーブルにし、 エ リ ア最適化を イネー

ブルにし ないで く ださい。

データ  キャ ッ シュ  ソ フ ト ウ ェ ア サポー ト

MSR ビ ッ ト

キ ャ ッ シュ を イネーブルにするかど う かは、 MSR の DCE ビ ッ ト で制御し ます。 キ ャ ッ シュ をデ ィ スエーブルにする

場合は、 M_AXI_DP を介し て リ ード バッ ク をする前に、 キ ャ ッ シュ可能な範囲内のこれまでの書き込みすべてが、

外部 メ モ リ で完了し ている こ と をユーザーが確認する必要があ り ます。 これには、 まずキ ャ ッ シュ をオフにする直

前にセマフ ォに書き込みを し てから、 書き込みが完了する までループでポー リ ング し ます。

キ ャ ッ シュがデ ィ スエーブルの場合は、 デキ ャ ッ シュの内容は保持されます。

WDC 命令

オプシ ョ ンの WDC 命令 (C_ALLOW_DCACHE_WR=1) は、 アプ リ ケーシ ョ ンからデータ キ ャ ッ シュのキ ャ ッ シュ ラ

イ ンを無効化またはフ ラ ッ シュするのに使用し ます。 詳細は、 第 5 章 「MicroBlaze 命令セ ッ ト アーキテ クチャ」 を

参照し て く ださい。

WDC 命令をパ リ テ ィ 保護 と一緒に使用する と、 エラーを累積するのを避けるため、 定期的にキ ャ ッ シュのエン ト リ

を無効化でき ます。

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド 76UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 77: MicroBlaze プロセッサ リファレンス ガイド …...MicroBlaze プロセッサ リファレンス ガイド 3 UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com 2016

第 2章: MicroBlaze アーキテ クチャ

浮動小数点ユニ ッ ト  (FPU)

概要

MicroBlaze の浮動小数点ユニ ッ ト は、 IEEE 754-1985 standard に基づいています。

• 無限大、 非数 (NaN) および 0 も含めて、 IEEE 754 の単精度浮動小数点フ ォーマ ッ ト を使用

• 加算、 減算、 乗算、 除算、 比較、 変換、 平方根の命令をサポー ト

• 近似値に丸めるモード を イ ンプ リ メ ン ト

• アンダーフ ロー、 オーバーフ ロー、 ゼロ除算、 無効な操作に対し、 ステ ィ ッ キーステータ ス ビ ッ ト を生成

パフ ォーマン ス を向上させる場合は、 規格外で次のよ う な簡素化がされています。

• 非正規化 (1) オペラ ン ド がサポー ト されていません。 非正規化数のハード ウ ェア浮動小数点演算は、 quiet NaN を

返し、 ステ ィ ッ キーな非正規化オペラ ン ド エラー ビ ッ ト を FSR にセ ッ ト し ます。 詳細はsee "浮動小数点ステー

タ ス レジス タ (FSR)" on page 31を参照し て く ださい。

• 非正規数の結果は、 符号付きの 0 と し て格納され、 FSR にアンダーフ ロー ビ ッ ト をセ ッ ト し ます。 こ の方法は、

一般的にゼロにフ ラ ッ シュ (FTZ) と呼ばれます。

• quiet NaN での操作は、 NaN オペラ ン ド の 1つではな く 、 fixed NaN (0xFFC00000) を返し ます。

• 浮動小数点演算の結果発生するオーバーフ ローは常に符号付き を返し ます。

フ ォーマ ッ ト

IEEE 754 の単精度浮動小数点数は、 次の 3 つのフ ィ ール ド から構成されています。

1. 符号部: 1 ビ ッ ト

2. 指数部: バイヤス し た 8 ビ ッ ト

3. 仮数部: 23 ビ ッ ト

図 2-24に定義されている よ う に、 これらのフ ィ ール ド は 32 ビ ッ ト ワード に格納されます。

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. 仮数) にな り ます。

1. 全精度で表現でき ない 0 の近似値は、 ( 1.17549*10-38 > n > 0 ) または ( 0 > n > -1.17549 * 10-38 ) の範囲内の任意数 n です。

0 1 9 31

- - -

符号

部指数部 仮数部

図 2‐24: IEEE 754 単精度フ ォーマ ッ ト

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド 77UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 78: MicroBlaze プロセッサ リファレンス ガイド …...MicroBlaze プロセッサ リファレンス ガイド 3 UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com 2016

第 2章: MicroBlaze アーキテ クチャ

5. 指数 = 0 で 仮数 = 0 な らば、 v= (-1)sign * * 0 にな り ます。

実際には、 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 プロセ ッサ リ フ ァ レンス ガイ ド 78UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 79: MicroBlaze プロセッサ リファレンス ガイド …...MicroBlaze プロセッサ リファレンス ガイド 3 UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com 2016

第 2章: MicroBlaze アーキテ クチャ

例外

浮動小数点ユニ ッ ト は、 MicroBlaze の一般的なハード ウ ェア例外 メ カニズムを使用し ます。 イネーブルになってい

る場合は、 アンダーフ ロー、 オーバーフ ロー、 ゼロ除算、 無効な操作 と いったすべての IEEE 規格のコ ンデ ィ シ ョ

ン、 および MicroBlaze の例外であ る非正規化オペラ ン ド エラーに対し て、 例外が投げられます。

浮動小数点の例外は、 デステ ィ ネーシ ョ ン レジス タ (Rd) への書き込みを抑止し ます。 このため、 浮動小数点例外ハ

ン ド ラーが、 破損し ていないレジス タ フ ァ イルで操作でき ます。

ソ フ ト ウ ェ ア サポー ト

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! */

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド 79UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 80: MicroBlaze プロセッサ リファレンス ガイド …...MicroBlaze プロセッサ リファレンス ガイド 3 UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com 2016

第 2章: MicroBlaze アーキテ クチャ

-fsingle-precision-constants と い う コ ンパイ ラ フ ラ グを使用し て、 GNU C コ ンパイ ラですべての浮動小数点定数を単精

度 と し て処理する よ う に指定する こ と ができ ます (ANSI C 規格と は異な る )。

不必要なキャス ト の回避

C_USE_FPU が 2 に設定されている場合 (拡張)、 浮動小数点と整数の変換は FPU によ り ハード ウ ェ アでサポー ト さ

れていますが、 でき る限 り その変換は避けて く ださい。

次の例は悪い例で、 浮動小数点を使用し て 1 から 10 の整数の平方根の和を計算し ています。

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 */

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド 80UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 81: MicroBlaze プロセッサ リファレンス ガイド …...MicroBlaze プロセッサ リファレンス ガイド 3 UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com 2016

第 2章: MicroBlaze アーキテ クチャ

このコード を コ ンパイルする場合は、 コ ンパイ ラ フ ラ グ -fno-math-error (-mhard-float and -mxl-float-sqrt に加えて) を必

ず使用し、 error 変数をア ッ プデー ト し て、 エラー コ ンデ ィ シ ョ ンを処理するための不必要なコード を コ ンパイ ラが

生成し ないよ う にし て く ださい。

ス ト リーム リ ン ク  イ ン ターフ ェ イス

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 を使用し ています。

図 2‐25: ス ト リーム リ ン ク  (ハー ド ウ ェ ア アクセラ レー ト された関数 fx を使用)

この方法は、 カ ス タ ム命令で ISA を拡張するのに似ていますが、 プロセ ッサのパイプラ イ ンの全体的なス ピード を

カ ス タ ム関数に依存させない と い う 利点があ り ます。 また、 このタ イプの機能拡張な らば、 ソ フ ト ウ ェ ア ツール

チェーンへの追加要件も あ り ません。

MicroBlaze

カスタム ハードウェア リンク x// Configure fx

cput Rc,RFSLx

// Store operands

put Ra, RFSLx // op 1

put Rb, RFSLx // op 2

// Load result

コード例

レジスタファイル

ConfigReg

Op1Reg Op2Reg

fx

ResultReg

リンク x

アクセラレータ

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド 81UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 82: MicroBlaze プロセッサ リファレンス ガイド …...MicroBlaze プロセッサ リファレンス ガイド 3 UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com 2016

第 2章: MicroBlaze アーキテ クチャ

デバッ グおよび ト レース

デバッ グの概要

MicroBlaze には、 一般的に BDM またはバッ ク グ ラ ン ド デバッ グ モード デバッ ガーと呼ばれる、 XSDB (Xilinx

System Debugger) などの JTAG ベースのソ フ ト ウ ェア デバッ グ ツールをサポー ト する ため、 デバッ グ イ ン ターフ ェ

イ スがあ り ます。デバッ グ イ ン ターフ ェ イ スは、 ザイ リ ン ク ス FPGA の JTAG ポー ト と イ ン ターフ ェ イ スする MDM

(Microprocessor Debug Module) コ アに接続する ために設計されています。 マルチプロセ ッ サ デバッ グを イネーブルに

するため、 1 つの MDM に複数の MicroBlaze イ ン ス タ ン ス を接続でき ます。

プロ グ ラ ムのダウ ン ロード、 ソ フ ト ウ ェ ア ブレーク ポイ ン ト の設定、 コード のデ ィ アセンブルをするには、 命令お

よびデータの メ モ リ 範囲が重複し ていて、 同じ物理 メ モ リ を使用する必要があ り ます。

デバッ グ レジス タには、 デバッ グ イ ン ターフ ェ イ ス を介し てア ク セス し ます。 これらのレジス タは、 ソ フ ト ウ ェ ア

がユーザー ア ク セス可能なデバッ グ レジス タにア ク セスでき る よ う MDM が設定されていない限 り 、 プロセ ッサで

実行されている ソ フ ト ウ ェ アには直接は見えません。 デバッ グ イ ン ターフ ェ イ スには、 JTAG シ リ アル ア ク セス ま

たは AXI4-Lite パラ レル ア ク セスが使用でき、 C_DEBUG_INTERFACE を使用し て設定し ます。

MDM の機能については、 『MicroBlaze Debug Module (MDM) 製品ガ イ ド』 (PG115) を参照し て く ださい。

C_DEBUG_ENABLED を 1 (基本) に設定し て イネーブルにな る基本デバッ グ機能には次のものがあ り ます。

• ハード ウ ェ ア ブレーク ポイ ン ト およびウ ォ ッチポイ ン ト の数、 無制限のソ フ ト ウ ェア プレーク ポイ ン ト の数を

設定可能

• 外部プロセ ッ サ制御によ り 、 デバッ グ ツールの停止、 リ セ ッ ト 、 MicroBlaze のシングル ステ ッ プを設定可能

• メ モ リ 、 汎用レジス タ、 特殊レジス タからの読み出しおよび書き込み (但し、 EAR、 EDR、 ESR、 BTR、 および

PVR0 から PVR12 までは読み出し専用)

• 複数のプロセ ッ サをサポー ト

C_DEBUG_ENABLED を 2 (拡張) に設定し て イネーブルにな る拡張デバッ グ機能には次のものがあ り ます。

• パフ ォーマン ス監視イベン ト およびレ イ テンシ カ ウ ン ターの数を設定可能

• プロ グ ラ ム ト レース

° エンベデッ ド プロ グ ラ ム ト レース ( ト レース バッ フ ァー サイ ズは設定可能)

° MDM で接続されている複数プロセ ッ サに対し外部プロ グ ラ ム ト レース

• 設定可能なプロ フ ァ イ リ ング バッ フ ァー サイ ズで非侵入型プロ フ ァ イ リ ング サポー ト

• 複数のプロセ ッ サ間のク ロ ス ト リ ガー サポー ト 、 さ らに MDM によ り 提供される外部ク ロ ス ト リ ガーの入力お

よび出力

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド 82UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 83: MicroBlaze プロセッサ リファレンス ガイド …...MicroBlaze プロセッサ リファレンス ガイド 3 UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com 2016

第 2章: MicroBlaze アーキテ クチャ

パフ ォーマンス監視

MicroBlaze の拡張デバッ グを使用する場合は、 パフ ォーマン ス監視カ ウ ン ターが提供されてお り 、 さ まざまな イベ

ン ト をカ ウ ン ト し、 プロ グ ラ ム実行中のレ イ テンシを測定でき ます。 イベン ト カ ウ ン ターおよびレ イ テンシ カ ウ ン

ターの数は、 それぞれ、 C_DEBUG_EVENT_COUNTERS および C_DEBUG_LATENCY_COUNTERS で設定でき、 カ ウ ン

ター幅は C_DEBUG_COUNTER_WIDTH で、 32、 48、 または 64 ビ ッ ト に設定でき ます。 デフ ォル ト コ ンフ ィ ギュ レー

シ ョ ンでは、 カ ウ ン ター幅が 32 ビ ッ ト に、 イベン ト カ ウ ン ターは 5 つ、 レ イ テンシ カ ウ ン ターは 1 つに設定されま

す。

イベン ト カ ウ ン ターは、 単に、 イベン ト が発生し た回数をカ ウ ン ト し ますが、 レ イ テンシ カ ウ ン ターは次の情報を

計測し ます。

• イベン ト が発生し た回数 (N)

• イベン ト 開始から イベン ト 終了までのク ロ ッ ク サイ クルをカ ウ ン ト し て計測された各イベン ト レ イ テンシの合

計 (ΣL)。 平均レ イ テンシを計算するのに使用し ます。

• 各イベン ト レ イ テンシの平方の合計 (ΣL2)。 レ イ テンシの標準偏差を計算するのに使用し ます。

• すべてのイベン ト のレ イ テンシの最小計測値 (Lmin)

• すべてのイベン ト のレ イ テンシの最大計測値 (Lmax)

平均レ イ テンシ (μ) は次の式で計算されます。

レ イ テンシの標準偏差 (σ) は、 次の式で求められます。

カ ウ ン ト の開始/停止は、 パフ ォーマン ス カ ウ ン ター コマン ド レジス タ またはク ロ ス ト リ ガー イベン ト で制御し ま

す (表 2-61を参照)。

カ ウ ン ターを設定し た り 、 読み出しや書き込みを実行する と き、 パフ ォーマン ス カ ウ ン ター レジス タ を介し て、 カ

ウ ン ターに順次ア ク セス し ていき ます。 各ア ク セスの後、 選択されたカ ウ ン ター ア イ テムはイ ン ク リ メ ン ト し ます。

パフ ォーマン ス カ ウ ン ター コマン ド レジス タ を介し て読み出し をする ため、 すべてのカ ウ ン ターは同時にサンプル

されます。 これは、 カ ウ ン ト 中またはカ ウ ン ト 停止後に実行されます。

イベン ト カ ウ ン ターが最大値に達する と、 オーバーフ ロー ステータ ス ビ ッ ト がセ ッ ト され、 外部割 り 込み信号

Dbg_Intr が 1 に設定されます。 パフ ォーマン ス カ ウ ン ター コマン ド レジス タ を介し てカ ウ ン ターを ク リ アにする

と、 割 り 込み信号は 0 に リ セ ッ ト されます。

イベン ト カ ウ ン ターの 1 つを ク ロ ッ ク サイ クル数をカ ウ ン ト するために使用し、 このカ ウ ン ターを、 あ らかじめ設

定されているサンプ リ ング間隔が過ぎ る と オーバーフ ローに初期化する こ と で、 パフ ォーマン ス カ ウ ン ターを定期

的にサンプルするために外部割 り 込みを使用でき ます。

使用可能な イベン ト は表 2-40に説明されてお り 、 順番に リ ス ト されています。

パフ ォーマン ス監視カ ウ ン ターを初期化し て使用する手順は、 通常次のよ う にな り ます。

• イベン ト を監視でき る よ う に初期化し ます。

° パフ ォーマン ス コマン ド レジス タ (表 2-43) を使用し て、 リ セ ッ ト ビ ッ ト をセ ッ ト し、 選択し たカ ウ ン

ターを最初のカ ウ ン ターに リ セ ッ ト し ます。

LN‐‐‐‐‐‐‐=

NL2 L 2–N

‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐=

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド 83UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 84: MicroBlaze プロセッサ リファレンス ガイド …...MicroBlaze プロセッサ リファレンス ガイド 3 UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com 2016

第 2章: MicroBlaze アーキテ クチャ

° パフ ォーマン ス制御レジス タ を使用し て、 すべてのカ ウ ン ターに対し順番に、 目的のイベン ト 数を書き込

みます (表 2-42)。 デフ ォル ト コ ンフ ィ ギュ レーシ ョ ンであれば、 イベン ト カ ウ ン ターの場合は 5 回、 レ イ

テンシの場合は 1 回、 レジス タに書き込みを実行し ます。

• ク リ ア ビ ッ ト および開始ビ ッ ト をセ ッ ト し て、 パフ ォーマン ス コマン ド レジス タ を使用し て、 すべてのカ ウ ン

ターを ク リ アにし、 監視を開始し ます。

• 監視するプロ グ ラ ム またはフ ァ ン ク シ ョ ンを実行し ます。

• サンプル ビ ッ ト および停止ビ ッ ト をセ ッ ト し て、 パフ ォーマン ス コマン ド レジス タ を使用し て、 カ ウ ン ターを

サンプルし、 監視を停止し ます。

• すべてのカ ウ ン ターから結果を読み出し ます。

° パフ ォーマン ス コマン ド レジス タ を使用し て、 リ セ ッ ト ビ ッ ト をセ ッ ト し、 選択し たカ ウ ン ターを最初の

カ ウ ン ターに リ セ ッ ト し ます。

° パフ ォーマン ス カ ウ ン ター ステータ ス レジス タ を使用し て、 すべてのカ ウ ン ターのステータ ス を順番に読

み出し ます (表 2-44)。 デフ ォル ト コ ンフ ィ ギュ レーシ ョ ンであれば、 イベン ト カ ウ ン ターの場合は 5 回、

レ イ テンシ カ ウ ン ターの場合は 1 回、 レジス タ を読み出し ます。 オーバーフ ロー ビ ッ ト およびフル ビ ッ ト

がセ ッ ト されていないこ と をチェ ッ ク し、 結果が有効であ る こ と を確認し ます。

° パフ ォーマン ス コマン ド レジス タ を使用し て、 リ セ ッ ト ビ ッ ト をセ ッ ト し、 選択し たカ ウ ン ターを最初の

カ ウ ン ターに リ セ ッ ト し ます。

° パフ ォーマン ス カ ウ ン ター データ読み出し レジス タ を使用し て、 すべてのカ ウ ン ターのカ ウ ン ター ア イ テ

ムを順番に読み出し ます (表 2-45)。 表 2-46にあ る よ う に、 デフ ォル ト コ ンフ ィ ギュ レーシ ョ ンであれば、

イベン ト カ ウ ン ターの場合は 5 回、 レ イ テンシ カ ウ ン ターの場合は 4 回、 レジス タ を読み出し ます。

• 計測された イベン ト によ り ますが、 最終結果を計算し ます。 た と えば、

° 計測されたレ イ テンシの平均レ イ テンシおよび標準偏差を求めるには、 上記の式を使用し ます。

° 命令ご と のク ロ ッ ク サイ クル (CPI) は、 E30 / E0 で求める こ と ができ ます。

° 命令およびデータ キ ャ ッ シュ ヒ ッ ト 率は、 E11 / E10 および E47 / E46 で求める こ と ができ ます。

° 命令キ ャ ッ シュ ミ ス レ イ テンシは、 (E60(ΣL) - E60(N)) / (E10 - E11) で求められ、 同等の式を使って、 データ

キ ャ ッ シュ読み出しおよび書き込みの ミ ス レ イ テンシを求める こ と ができ ます。

° プロ グ ラ ムの浮動小数点命令の比率は 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 遅延ス ロ ッ ト のあ る条件な し分岐を実行

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド 84UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 85: MicroBlaze プロセッサ リファレンス ガイド …...MicroBlaze プロセッサ リファレンス ガイド 3 UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com 2016

第 2章: MicroBlaze アーキテ クチャ

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 イ ン ターフ ェ イ ス データ読み出し

レ イ テンシ

59 メ モ リ 書き込みのデータ キ ャ ッ シ ュ レ イ テンシ 63 ペ リ フ ェ ラル AXI イ ン ターフ ェ イ ス データ書き込み

レ イ テンシ

60 メ モ リ 読み出しの命令キ ャ ッ シュ レ イ テンシ

表 2‐40: MicroBlaze パフ ォーマンス監視イベン ト

イベン ト

説明イベ

ン ト説明

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド 85UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 86: MicroBlaze プロセッサ リファレンス ガイド …...MicroBlaze プロセッサ リファレンス ガイド 3 UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com 2016

第 2章: MicroBlaze アーキテ クチャ

パフ ォーマン ス監視を設定および制御し、 イベン ト およびレ イ テンシ カ ウ ン ターに読み出しかおよび書き込みを実

行するために使用されるデバッ グ レジス タは、 表 2-41に リ ス ト されています。 これらのレジス タはすべて (パ

フ ォーマン ス カ ウ ン ター コマン ド レジス タ を除 く )、 まずすべてのイベン ト カ ウ ン ター用に、 続いてレ イ テンシ カ

ウ ン ター用に、 読み出し /書き込みをするために繰 り 返し ア ク セス されます。

DBG_CTRL 値は、 レジス タにア ク セスする ための MDM デバッ グ レジス タ ア ク セス制御レジス タで使用される値を

示し、 この値は、 デバッ グ レジス タへの MDM ソ フ ト ウ ェア ア ク セスで使用されます。

パフ ォーマンス カウン ター制御レジス タ

パフ ォーマン ス カ ウ ン ター制御レジス タ (PCCTRLR) は、 設定されたパフ ォーマン ス カ ウ ン ターでカ ウ ン ト される

イベン ト を定義するために使用されます。 設定されたカ ウ ン ターすべてのイベン ト を定義するには、 各カ ウ ン ター

に対し て このレジス タ を繰 り 返し書き込む必要があ り ます。 このレジス タは書き込み専用レジス タです。 読み出し

リ ク エス ト を出力し て も効力はな く 、 未定義データが読み出されます。

レジス タ を書き込みむたびに、 選択されたカ ウ ン ターがイ ン ク リ メ ン ト し ます。 パフ ォーマン ス カ ウ ン ター コマン

ド レジス タ を使用し、 選択し たカ ウ ン ターを最初のカ ウ ン ターに再び リ セ ッ ト でき ます。

表 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設定されたパフ ォーマン ス カ ウ ン ター

それぞれの初期値を書き込み

31 8 7 0

- -

予約 イベン ト

図 2‐26: パフ ォーマンス カウン ター制御レジス タ

表 2‐42: パフ ォーマンス カウン ター制御レジス タ (PCCTRLR)

ビ ッ ト 名前 説明 リ セ ッ ト 値

7:0 イベン ト パフ ォーマン ス カ ウ ン ター イベン ト (表 2-40を参照) 0

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド 86UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 87: MicroBlaze プロセッサ リファレンス ガイド …...MicroBlaze プロセッサ リファレンス ガイド 3 UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com 2016

第 2章: MicroBlaze アーキテ クチャ

パフ ォーマンス カウン ター コ マン ド  レジス タ

パフ ォーマン ス カ ウ ン ター コマン ド レジス タ (PCCMDR) は、 すべてのカ ウ ン ターのク リ ア、 開始、 停止、 または

サンプルする コマン ド を実行するために使用されます。 このレジス タは書き込み専用レジス タです。 読み出し リ ク

エス ト を出力し て も効力はな く 、 未定義データが読み出されます。

パフ ォーマンス カウン ター ステータ ス レジス タ

パフ ォーマン ス カ ウ ン ター ステータ ス レジス タ (PCSR) は、 カ ウ ン ターのサンプルされたステータ ス を読み出し ま

す。 設定されたカ ウ ン ターすべてのステータ ス を読み出すには、 各カ ウ ン ターに対し て このレジス タ を繰 り 返し読

み出す必要があ り ます。 このレジス タは読み出し専用レジス タです。 レジス タに書き込み リ ク エス ト を出し て も何

も起き ません。

レジス タ を読み出すたびに、 選択されたカ ウ ン ターがイ ン ク リ メ ン ト し ます。 パフ ォーマン ス カ ウ ン ター コマン ド

レジス タ を使用し、 選択し たカ ウ ン ターを最初のカ ウ ン ターに再び リ セ ッ ト でき ます。

31 5 4 3 2 1 0

- - - - - -

予約CLR

STA

STOP

SAM

RES

図 2‐27: パフ ォーマンス カウン ター コ マン ド  レジス タ

表 2‐43: パフ ォーマンス カウン ター コマン ド レジス タ (PCCMDR)

ビ ッ ト 名前 説明 リ セ ッ ト 値

4 ク リ ア すべてのカ ウ ン ターを 0 に ク リ ア 0

3 開始 すべてのカ ウ ン ターの設定された イベン ト を同時にカ ウ ン ト 開始 0

2 停止 すべてのカ ウ ン ターのカ ウ ン ト を同時に停止 0

1 サンプル 読み出しのため、 すべてのカ ウ ン ターのステータ スおよび値を同時にサン

プル

0

0 リ セ ッ ト パフ ォーマン ス カ ウ ン ター制御、 ステータ ス、 読み出しデータ、 書き込み

データ を使用し てア ク セスする ため、 ア ク セス されたカ ウ ン ターを最初の

イベン ト カ ウ ン ターに リ セ ッ ト

0

31 2 1 0

- - -

予約 OF FULL

図 2‐28: パフ ォーマンス カウン ター ステータ ス レジス タ

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド 87UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 88: MicroBlaze プロセッサ リファレンス ガイド …...MicroBlaze プロセッサ リファレンス ガイド 3 UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com 2016

第 2章: MicroBlaze アーキテ クチャ

パフ ォーマンス カウン ター データ読み出し レジス タ

パフ ォーマン ス カ ウ ン ター データ読み出し レジス タ (PCDRR) は、 カ ウ ン ターのサンプルされた値を読み出し ます。

設定されたカ ウ ン ターすべての値を読み出すには、 このレジス タ を繰 り 返し読み出す必要があ り ます。 このレジス

タは読み出し専用レジス タです。 レジス タに書き込み リ ク エス ト を出し て も何も起き ません。

コ ンフ ィ ギュ レーシ ョ ンによ り ますが、 カ ウ ン ターには 32 ビ ッ ト を超え る ビ ッ ト を格納でき るため、 特定カ ウ ン

ターの情報をすべて取 り 出すため、 このレジス タ を繰 り 返し読み出す必要があ る場合があ り ます。 詳細は、 表 2-46

を参照し て く ださい。

表 2‐44: パフ ォーマンス カウン ター ステータ ス レジス タ (PCSR)

ビ ッ ト 名前 説明 リ セ ッ ト 値

1 オーバー

フ ロー

カ ウ ン ターが最大値を超えてカ ウ ン ト する と、 こ のビ ッ ト がセ ッ ト されま

す。

0

0 FULL 前のイベン ト が完了する前に新しいレ イ テンシ カ ウ ン ター イベン ト が開始

する と、 こ のビ ッ ト がセ ッ ト されます。 これは計測された値の正確さ が落

ちた こ と を示し ます。

0

31 0

-

アイテム

図 2‐29: パフ ォーマンス カウン ター データ読み出し レジス タ

表 2‐45: パフ ォーマンス カウン ター データ読み出し レジス タ (PCDRR)

ビ ッ ト 名前 説明 リ セ ッ ト 値

31:0 ア イ テム サンプルされたカ ウ ン ター値ア イ テム 0

表 2‐46: パフ ォーマンス カウン ター データ アイテム

カウン ター タ イプアイテム

説明

C_DEBUG_COUNTER_WIDTH = 32

イベン ト カ ウ ン ター

1 イベン ト が発生し た回数

レ イ テンシ カ ウ ン ター

1 イベン ト が発生し た回数

2 各イベン ト レ イ テンシの合計

3 各イベン ト レ イ テンシの平方の和

4 31:1615:0

最小計測レ イ テンシ、 16 ビ ッ ト

最大計測レ イ テンシ、 16 ビ ッ ト

C_DEBUG_COUNTER_WIDTH = 48

イベン ト カ ウ ン ター

1 31:1615:0

0x0000

イベン ト が発生し た回数、 最上位ビ ッ ト 16 ビ ッ ト

2 イベン ト が発生し た回数、 最下位ビ ッ ト 32 ビ ッ ト

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド 88UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 89: MicroBlaze プロセッサ リファレンス ガイド …...MicroBlaze プロセッサ リファレンス ガイド 3 UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com 2016

第 2章: MicroBlaze アーキテ クチャ

パフ ォーマンス カウン ター データ書き込みレジス タ

パフ ォーマン ス カ ウ ン ター データ書き込みレジス タ (PCDWR) は、 初期値をカ ウ ン ターに書き込みます。 設定され

たカ ウ ン ターすべてに書き込むには、 このレジス タに繰 り 返し書き込む必要があ り ます。 このレジス タは書き込み

専用レジス タです。 読み出し リ ク エス ト を出力し て も効力はな く 、 未定義データが読み出されます。

表 2-46にあ る よ う に、 コ ンフ ィ ギュ レーシ ョ ンによ り ますが、 カ ウ ン ターには 32 ビ ッ ト を超え る ビ ッ ト を格納でき

るため、 特定カ ウ ン ターの情報をすべてア ッ プデー ト するため、 このレジス タに繰 り 返し書き込む必要があ る場合

があ り ます。

レ イ テンシ カ ウ ン ター

1 イベン ト が発生し た回数

2 31:1615:0

0x0000

各イベン ト レ イ テンシの合計、 最上位ビ ッ ト 16 ビ ッ ト

3 各イベン ト レ イ テンシの合計、 最下位ビ ッ ト 32 ビ ッ ト

4 31:1615:0

0x0000

各イベン ト レ イ テンシの平方の和、 最上位ビ ッ ト 16 ビ ッ ト

5 各イベン ト レ イ テンシの平方の和、 最下位ビ ッ ト 32 ビ ッ ト

6 最小計測レ イ テンシ、 32 ビ ッ ト

7 最大計測レ イ テンシ、 32 ビ ッ ト

C_DEBUG_COUNTER_WIDTH = 64

イベン ト カ ウ ン ター

1 イベン ト が発生し た回数、 最上位ビ ッ ト 32 ビ ッ ト

2 イベン ト が発生し た回数、 最下位ビ ッ ト 32 ビ ッ ト

レ イ テンシ カ ウ ン ター

1 イベン ト が発生し た回数、 32 ビ ッ ト

2 各イベン ト レ イ テンシの合計、 最上位ビ ッ ト 32 ビ ッ ト

3 各イベン ト レ イ テンシの合計、 最下位ビ ッ ト 32 ビ ッ ト

4 各イベン ト レ イ テンシの平方の和、 最上位ビ ッ ト 32 ビ ッ ト

5 各イベン ト レ イ テンシの平方の和、 最下位ビ ッ ト 32 ビ ッ ト

6 最小計測レ イ テンシ、 32 ビ ッ ト

7 最大計測レ イ テンシ、 32 ビ ッ ト

表 2‐46: パフ ォーマンス カウン ター データ アイテム (続き)

カウン ター タ イプアイテム

説明

31 0

-

アイテム

図 2‐30: パフ ォーマンス カウン ター データ書き込みレジス タ

表 2‐47: パフ ォーマンス カウン ター データ書き込みレジス タ (PCDWR)

ビ ッ ト 名前 説明 リ セ ッ ト 値

31:0 ア イ テム カ ウ ン ターに書き込むためのカ ウ ン ター値ア イ テム 0

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド 89UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 90: MicroBlaze プロセッサ リファレンス ガイド …...MicroBlaze プロセッサ リファレンス ガイド 3 UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com 2016

第 2章: MicroBlaze アーキテ クチャ

プログラム ト レース

MicroBlaze の拡張デバッ グには、 プロ グ ラ ム実行 ト レース を イネーブルにするプロ グ ラ ム ト レース機能が含まれ、

エンベデッ ド ト レース バッ フ ァーに情報を格納するか、 または MDM へ情報を転送し て、 プロ グ ラ ム実行の追跡を

可能にし ます。 MDM は、 C_DEBUG_EXTERNAL_TRACE が設定されている と きに使用され、 外部イ ン ターフ ェ イ ス

を介し て、 複数のプロセ ッ サからのプロ グ ラ ム ト レースの出力を可能にし ます。

エンベデッ ド ト レース バッ フ ァーのサイ ズは、 C_DEBUG_TRACE_SIZE を使用し て、 8 KB から 128 KB の範囲で設

定でき ます。 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 プロセ ッサ リ フ ァ レンス ガイ ド 90UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 91: MicroBlaze プロセッサ リファレンス ガイド …...MicroBlaze プロセッサ リファレンス ガイド 3 UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com 2016

第 2章: MicroBlaze アーキテ クチャ

DBG_CTRL 値は、 レジス タにア ク セスする ための MDM デバッ グ レジス タ ア ク セス制御レジス タで使用される値を

示し、 この値は、 デバッ グ レジス タへの MDM ソ フ ト ウ ェア ア ク セスで使用されます。

ト レース制御レジス タ

ト レース制御レジス タ (TCTRLR) は、 ト レース動作を定義するために使用されます。 このレジス タは書き込み専用

レジス タです。 読み出し リ ク エス ト を出力し て も効力はな く 、 未定義データが読み出されます。

表 2‐48: MicroBlaze プログラム ト レース デバッ グ レジス タ

レジス タ名サイズ (ビ ッ ト )

MDM 

コ マン ドDBG_CTRL 値 R/W 説明

ト レース制御 22 0110 0001 4C215 Wト レースポイ ン ト 、 ト レース圧縮レベルを

設定、 およびオプシ ョ ンで ト レース情報を

格納

ト レース コマン ド 4 0110 0010 4C403 Wト レース バッ フ ァーのク リ ア、 ト レースの

開始/停止、 および現在のバッ フ ァー ア イ テ

ム数をサンプルする コマン ド

ト レース ステータ ス

18 0110 0011 4C611 Rサンプルされた ト レース バッ フ ァー ステー

タ スの読み出し

ト レース データ

読み出し1

1. C_DEBUG_EXTERNAL_TRACE が設定されている と 、 こ のレジス タは使用でき ません。

18 0110 0110 4CC11 Rエンベデッ ド ト レース バッ フ ァーから一番

古いア イ テムを読み出し

31 22 21 6 5 4 3 2 1 0

- - - - - - -

予約 ト レースポイ ン ト レベル 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

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド 91UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 92: MicroBlaze プロセッサ リファレンス ガイド …...MicroBlaze プロセッサ リファレンス ガイド 3 UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com 2016

第 2章: MicroBlaze アーキテ クチャ

ト レース コマン ド  レジス タ

ト レース コマン ド レジス タ (TCMDR) は、 ト レースの ク リ ア、 開始、 停止だけでな く 、 ト レース ア イ テム数をサン

プルするためのコマン ド を出力するのに使用されます。 このレジス タは書き込み専用レジス タです。 読み出し リ ク

エス ト を出力し て も効力はな く 、 未定義データが読み出されます。

ト レース ステータ ス レジス タ

ト レース ステータ ス レジス タ (TSR) は、 ト レースが開始し たかど う かの判断、 サイ クル カ ウ ン ト オーバー フ ロー

のチェ ッ ク、 エンベデッ ド ト レース バッ フ ァーでのサンプルされたア イ テム数の読み出し をするために使用されま

す。 このレジス タは読み出し専用レジス タです。 レジス タに書き込み リ ク エス ト を出し て も何も起き ません。

1 ロード保存 ロード を保存し、 命令新規データ値を取得 0

0 リ ターン

保存

戻 り 命令に対し新しいプロ グ ラ ム カ ウ ン ターを保存 0

表 2‐49: ト レース制御レジス タ (TCTRLR) (続き)

ビ ッ ト 名前 説明 リ セ ッ ト 値

31 4 3 2 1 0

- - - - -

予約 CLR STA STOP SAM

図 2‐32: ト レース コマン ド  レジス タ

表 2‐50: ト レース コマン ド レジス タ (TCMDR)

ビ ッ ト 名前 説明 リ セ ッ ト 値

3 ク リ ア ト レース ステータ ス を ク リ アにし、 ト レース バッ フ ァーを空にする 0

2 開始 ト レース をすぐに開始 0

1 停止 ト レース をすぐに停止 0

0 サンプル ト レース バッ フ ァーの現在のア イ テム数をサンプル 0

31 18 17 16 15 0

- - -

予約 STA OF アイテム カウン ト

図 2‐33: ト レース ステータ ス レジス タ

表 2‐51: ト レース ステータ ス レジス タ (TSR)

ビ ッ ト 名前 説明 リ セ ッ ト 値

17 開始 ト レース開始、 ト レースが開始する と きは 1 にセ ッ ト 、 停止し た と きは 0

にク リ ア

0

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド 92UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 93: MicroBlaze プロセッサ リファレンス ガイド …...MicroBlaze プロセッサ リファレンス ガイド 3 UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com 2016

第 2章: MicroBlaze アーキテ クチャ

ト レース データ読み出し レジス タ

ト レース データ読み出し レジス タ (TDRR) には、 エンベデッ ド ト レース バッ フ ァーから読み出された一番古いア イ

テムが含まれています。 このレジス タが読み出される と、 次のア イ レ ムが ト レース バッ フ ァーから読み出されます。

ト レース ステータ ス レジス タのア イ テム数で示されている、 ト レース バッ フ ァーで使用可能なア イ テムを超える数

を読み出す と エラーにな り ます。 このレジス タは読み出し専用レジス タです。 レジス タに書き込み リ ク エス ト を出

し て も何も起き ません。

圧縮レベル と格納されているデータによ り ますが、 ト レース データ エンテ ィ テ ィ は 18 ビ ッ ト を超え る ビ ッ ト で構

成されている可能性があ るため、 特定データ 絵テ ィ テ ィ の情報をすべて取 り 出すため、 こ のレジス タ を繰 り 返し読

み出す必要があ る場合があ り ます。 詳細は、 表 2-53を参照し て く ださい。

16 オーバー

フ ロー

サイ クル カ ウ ン ト オーバーフ ロー、 サイ クル カ ウ ン ト オーバーフ ローの

と きは 1 にセ ッ ト 、 ク リ ア コマン ド によ り 0 に ク リ ア

0

15:0 ア イ テム

カ ウ ン ト

ト レース バッ フ ァー ア イ テム カ ウ ン ト をサンプル 0x0000

表 2‐51: ト レース ステータ ス レジス タ (TSR) (続き)

ビ ッ ト 名前 説明 リ セ ッ ト 値

31 18 17 0

- -

予約 バッ フ ァー値

図 2‐34: ト レース データ読み出し レジス タ

表 2‐52: ト レース データ読み出し レジス タ (TDRR)

ビ ッ ト 名前 説明 リ セ ッ ト 値

17:0 バッ フ ァー

エンベデッ ド ト レース バッ フ ァー ア イ テム 0x00000

表 2‐53: ト レース カウン ター データ エンテ ィ テ ィ

エンテ ィ テ ィアイテム

ビ ッ ト 説明

完全 ト レース 1 17:3

2:0

実行された命令のサイ クル カ ウ ン ト

Machine Status Register[17:19]

2 17:6

5:1

0

Machine Status Register[20:31]

デステ ィ ネーシ ョ ン レジス タ ア ド レ ス (r0 - r31)、 書き込

まれている場合は有効

1 にセ ッ ト されている場合は、 デステ ィ ネーシ ョ ン レジス

タに書き込み

3 17:13

12

11

10

9:6

5:0

Exception Kind、 例外があ る場合は有効

1 にセ ッ ト されている場合は例外があ る

1 にセ ッ ト されている場合はロード命令でデータ読み出し

1 にセ ッ ト されている場合はス ト ア命令でデータ書き込み

バイ ト イネーブル、 ス ト ア命令の場合有効

ス ト ア命令の場合は書き込みデータ [0:5]、 またはその他

の命令の場合はデステ ィ ネーシ ョ ン レジス タ データ [0:5]

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド 93UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 94: MicroBlaze プロセッサ リファレンス ガイド …...MicroBlaze プロセッサ リファレンス ガイド 3 UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com 2016

第 2章: MicroBlaze アーキテ クチャ

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]

Program Counter[0:13]

8 17:0 Program Counter[14:31]

プロ グ ラ ム フ ロー : 分岐 1 17:16

15:12

11:0

00 - ア イ テムにプロ グ ラ ム フ ロー分岐が含まれる

ア イ テム (1 - 12) でカ ウ ン ト される分岐の数 (N)

左の N ビ ッ ト はプロ グ ラ ム フ ローの分岐を表すこのビ ッ

ト が 1 の場合、 分岐は分岐し てお り 、 それ以外の場合は分

岐し ていない

プロ グ ラ ム フ ロー : プロ グ ラ ム カ ウ ン ター

1 17:16

15:0

01 - ア イ テムにプロ グ ラ ム カ ウ ン ター値が含まれる

Program Counter[0:15]

2 17:16

15:0

01 - ア イ テムにプロ グ ラ ム カ ウ ン ター値が含まれる

Program Counter[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 にセ ッ ト の場合は分岐は分岐し てお り 、 それ以外の場合

は分岐し ていない

表 2‐53: ト レース カウン ター データ エンテ ィ テ ィ (続き)

エンテ ィ テ ィアイテム

ビ ッ ト 説明

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド 94UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 95: MicroBlaze プロセッサ リファレンス ガイド …...MicroBlaze プロセッサ リファレンス ガイド 3 UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com 2016

第 2章: MicroBlaze アーキテ クチャ

非侵入型のプロ フ ァ イ リ ング

拡張デバッ グでは、 プロ グ ラ ム実行の統計を格納するのにプロ フ ァ イ リ ング バッ フ ァーを使用する、 非侵入型プロ

フ ァ イ リ ングが提供されています。 プロ フ ァ イ リ ング バッ フ ァーのサイ ズは、 C_DEBUG_PROFILE_SIZE を使用し

て、 4 KB から 128 KB の範囲で設定でき ます。 C_DEBUG_PROFILE_SIZE を 0 (None) に設定する と、 非侵入型プロ

フ ァ イ リ ングはデ ィ スエーブルにな り ます。

プロ フ ァ イ リ ング バッ フ ァーはビンに分かれていて、 各ビンは、 あ る ア ド レ ス範囲内で実行された命令数またはク

ロ ッ ク サイ クル数をカ ウ ン ト し ます。 各ピンは、 命令またはサイ クルを 236 - 1 = 68719476735 までカ ウ ン ト し ます。

プロ フ ァ イ リ ング ロ ウ ア ド レ ス レジス タおよびプロ フ ァ イ リ ング ハイ ア ド レ ス レジス タ を介し て定義されるプロ

フ ァ イルされたア ド レ ス範囲およびバッ フ ァー サイ ズによ って、 各ビンのア ド レ ス範囲は決ま り ます。

プロ フ ァ イ リ ングの開始/停止は、 プロ フ ァ イ リ ング制御レジス タ またはク ロ ス ト リ ガー イベン ト で制御し ます (

表 2-61を参照)。

プロ フ ァ イ リ ングを設定および制御し、 プロ フ ァ イ リ ング バッ フ ァーの読み出し /書き込みに使用されるデバッ グ レ

ジス タは、 表 2-54に リ ス ト されています。

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

プロ フ ァ イルされたア ド レ ス範囲の高ア

ド レ ス を定義

プロ フ ァ イ リ ング

バッ フ ァー ア ド レ ス

9 - 14 0111 0100

9: 4E808

10: 4E809

...

14: 4E80D

W読み出し または書き込みをするプロ フ ァ

イ リ ング バッ フ ァーのア ド レ ス を設定 (ビ

ン)

プロ フ ァ イ リ ング

データ読み出し36 0111 0110 4EC23 R

プロ フ ァ イ リ ング バッ フ ァーからの読み

出しデータ

プロ フ ァ イ リ ング

データ書き込み32 0111 0111 4EE1F W

プロ フ ァ イ リ ング バッ フ ァーへの書き込

みデータ

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド 95UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 96: MicroBlaze プロセッサ リファレンス ガイド …...MicroBlaze プロセッサ リファレンス ガイド 3 UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com 2016

第 2章: MicroBlaze アーキテ クチャ

プロ フ ァ イ リ ング制御レジス タ

プロ フ ァ イ リ ング制御レジス タ (PCTRLR) は、 プロ フ ァ イ リ ングのイネーブル (開始)/デ ィ スエーブル (停止) のため

に使用されます。 また、 実行命令数または実行ク ロ ッ ク サイ クルのカ ウ ン ト の設定、 およびプロ フ ァ イ リ ング バッ

フ ァー ビンの使用方法の定義にも使用されます。 こ のレジス タは書き込み専用レジス タです。 読み出し リ ク エス ト

を出力し て も効力はな く 、 未定義データが読み出されます。

ビン制御値 (B) は、 次の式で求める こ と ができ ます。

L はプロ フ ァ イ リ ング ロ ウ レジス タ、 H はプロ フ ァ イ リ ング ハイ レジス タ、 S は C_DEBUG_PROFILE_SIZE にな り

ます。

プロ フ ァ イ リ ング ロウ ア ド レス レジス タ

プロ フ ァ イ リ ング ロ ウ ア ド レ ス レジス タ (PLAR) は、 プロ フ ァ イルされたエ リ アのロ ウ ワード ア ド レ ス を定義する

のに使用されます。 このレジス タは書き込み専用レジス タです。 読み出し リ ク エス ト を出力し て も効力はな く 、 未

定義データが読み出されます。

B log2H L– S 4+

S 4‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐=

31 8 7 6 5 4 0

- - - - -

予約 ENA DIS CC ビン制御

図 2‐35: プロ フ ァ イ リ ング制御レジス タ

表 2‐55: プロ フ ァ イ リ ング制御レジス タ (PCTRLR)

ビ ッ ト 名前 説明 リ セ ッ ト 値

7 イネーブル プロ フ ァ イ リ ングのイネーブル (開始) 0

6 デ ィ スエー

ブル

プロ フ ァ イ リ ングのデ ィ スエーブル (停止) 0

5 サイ クル

カ ウ ン ト の

イネーブル

実行された命令のク ロ ッ ク サイ クルをカ ウ ン ト

0 = デ ィ スエーブル、 実行された命令のカ ウ ン ト 数

1 = イネーブル、 実行された命令のク ロ ッ ク サイ クルの数

0

4:0 ビン制御 プロ フ ァ イ リ ング バッ フ ァーの各ビンでカ ウ ン ト される ア ド レ ス数 00000

31 30 29 0

- -

予約 ロウ ワー ド ア ド レス

図 2‐36: プロ フ ァ イ リ ング ロウ ア ド レス レジス タ

表 2‐56: プロ フ ァ イ リ ング ロウ ア ド レス レジス タ (PLAR)

ビ ッ ト 名前 説明 リ セ ッ ト 値

29:0 ロ ウ

ワード

プロ フ ァ イルされたエ リ アのロ ウ ワード ア ド レ ス 0

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド 96UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 97: MicroBlaze プロセッサ リファレンス ガイド …...MicroBlaze プロセッサ リファレンス ガイド 3 UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com 2016

第 2章: MicroBlaze アーキテ クチャ

プロ フ ァ イ リ ング ハイ  ア ド レス レジス タ

プロ フ ァ イ リ ング ハイ ア ド レ ス レジス タ (PHAR) は、プロ フ ァ イルされたエ リ アのハイ ワード ア ド レ ス を定義する

のに使用されます。 このレジス タは書き込み専用レジス タです。 読み出し リ ク エス ト を出力し て も効力はな く 、 未

定義データが読み出されます。

プロ フ ァ イ リ ング バッ フ ァー ア ド レス レジス タ

プロ フ ァ イ リ ング バッ フ ァー ア ド レ ス レジス タ (PBAR) は、読み出す/書き込むプロ フ ァ イ リ ング バッ フ ァーのビン

を定義するのに使用されます。 C_DEBUG_PROFILE_SIZE の設定によ り 、 このレジス タのビ ッ ト 数は変わ り ます。

このレジス タは書き込み専用レジス タです。 読み出し リ ク エス ト を出力し て も効力はな く 、 未定義データが読み出

されます。

31 30 29 0

- -

予約 ハイ ワー ド ア ド レス

図 2‐37: プロ フ ァ イ リ ング ハイ  ア ド レス レジス タ

表 2‐57: プロ フ ァ イ リ ング ハイ ア ド レス レジス タ (PHAR)

ビ ッ ト 名前 説明 リ セ ッ ト 値

29:0 ハイ

ワード

プロ フ ァ イルされたエ リ アのハイ ワード ア ド レ ス 0

31 n n-1 0

- -

予約 バッ フ ァー ア ド レス

図 2‐38: プロ フ ァ イ リ ング バッ フ ァー ア ド レス レジス タ

表 2‐58: プロ フ ァ イ リ ング バッ フ ァー ア ド レス レジス タ (PBAR)

ビ ッ ト 名前 説明 リ セ ッ ト 値

n-1:0 バッ

フ ァー ア

ド レ ス

読み出し または書き込みをするプロ フ ァ イ リ ング バッ フ ァーのビン。 ビ ッ

ト 数 (n) は、 4 KB バッ フ ァーの場合は 10、 8 KB バッ フ ァーの場合は 11、 ....

128 KB バッ フ ァーの場合は 15。

0

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド 97UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 98: MicroBlaze プロセッサ リファレンス ガイド …...MicroBlaze プロセッサ リファレンス ガイド 3 UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com 2016

第 2章: MicroBlaze アーキテ クチャ

プロ フ ァ イ リ ング データ読み出し レジス タ

プロ フ ァ イ リ ング データ読み出し レジス タ (PDRR) は、 プロ フ ァ イ リ ング バッ フ ァー ア ド レ ス レジス タで示される

ビンの値を読み出し、 プロ フ ァ イ リ ング バッ フ ァー ア ド レ ス レジス タ を イ ン ク リ メ ン ト し ます。 こ のレジス タは読

み出し専用レジス タです。 レジス タに書き込み リ ク エス ト を出し て も何も起き ません。

レジス タ をデバッ グするため MDM ソ フ ト ウ ェ ア ア ク セスでこのレジス タ を読み出す場合、 2 回連続ア ク セスする

とデータが読み出されます。

プロ フ ァ イ リ ング データ書き込みレジス タ

プロ フ ァ イ リ ング データ書き込みレジス タ (PDWR) は、プロ フ ァ イ リ ング バッ フ ァー ア ド レ ス レジス タで示される

ビンに新しい値を書き込み、 プロ フ ァ イ リ ング バッ フ ァー ア ド レ ス レジス タ を イ ン ク リ メ ン ト し ます。 こ のレジス

タは書き込み専用レジス タです。 読み出し リ ク エス ト を出力し て も効力はな く 、 未定義データが読み出されます。

このレジス タは、 プロ フ ァ イ リ ングを イネーブルする前にプロ フ ァ イ リ ング バッ フ ァーを ク リ アにするために使用

でき ます。

プロ フ ァ イ リ ング バッ フ ァー ビンの最上位ビ ッ ト 4 つが新しい値が書き込まれる と 0 にな り ます。

35 0

-

読み出しデータ

図 2‐39: プロ フ ァ イ リ ング データ読み出し レジス タ

表 2‐59: プロ フ ァ イ リ ング データ読み出し レジス タ (PDRR)

ビ ッ ト 名前 説明 リ セ ッ ト 値

35:0 読み出し

データ

ビンで実行された命令数または実行された ク ロ ッ ク サイ クル数 0

31 0

-

書き込みデータ

図 2‐40: プロ フ ァ イ リ ング データ書き込みレジス タ

表 2‐60: プロ フ ァ イ リ ング データ書き込みレジス タ (PDWR)

ビ ッ ト 名前 説明 リ セ ッ ト 値

31:0 書き込み

データ

ビンに書き込むデータ 0

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド 98UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 99: MicroBlaze プロセッサ リファレンス ガイド …...MicroBlaze プロセッサ リファレンス ガイド 3 UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com 2016

第 2章: MicroBlaze アーキテ クチャ

ク ロス ト リ ガー サポー ト

ク ロ ス ト リ ガーは、 DBG_STOP と MB_Halted の 2 つの信号で指定でき ます。

• DBG_STOP 入力が 1 に設定されている と、 い く つか命令が出た後に MicroBlaze は停止し ます。 XSDB は

MicoBlaze の停止を検出し、 停止の発生し た箇所を示し ます。 この信号は、 Vivado® に統合されている ロ ジ ッ ク

アナラ イザー (ILA) が ト リ ガーされた と き など、 外部イベン ト で MicroBlaze プロセ ッサを停止させるのに使用

でき ます。

• MicroBlaze が停止する と きは常に MB_Halted 出力信号は 1 に設定されています。 た と えば、 ブレーク ポイ ン

ト またはウ ォ ッチポイ ン ト を通過し た後、 停止 XSDB コマン ド の後、 または DBG_STOP 入力が設定された と き

などです。 この出力は MicroBlaze 実行が XSDB コマン ド で再開される と ク リ アにな り ます。

MB_Halted 信号は、 Vivado 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 実行継続 プロセ ッサが実行中の場合実行を継続し、 MB_Halted 出力を ク リ ア

2 プロ グ ラ ム

ト レース停止

ト レース中の場合はプロ グ ラ ム ト レース を停止

3 プロ グ ラ ム

ト レース開始

ト レースが停止し ている場合は、 プロ グ ラ ム ト レース を開始

4 パフ ォーマン ス

監視停止

パフ ォーマン ス監視中の場合はそれを停止

5 パフ ォーマン ス

監視開始

パフ ォーマン ス監視停止の場合はそれを開始

6 プロ フ ァ イ リ ングの

デ ィ スエーブル

プロ フ ァ イ リ ング中の場合はそれをデ ィ スエーブル

7 プロ フ ァ イ リ ングの

イネーブル

プロ フ ァ イ リ ングがデ ィ スエーブルの場合はそれを イネーブルにする

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド 99UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 100: MicroBlaze プロセッサ リファレンス ガイド …...MicroBlaze プロセッサ リファレンス ガイド 3 UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com 2016

第 2章: MicroBlaze アーキテ クチャ

ト レース イ ン ターフ ェ イスの概要

MicroBlaze の ト レース イ ン ターフ ェ イ スは、 パフ ォーマン スの監視および解析のため、 多数の内部ステー ト 信号を

エク スポー ト し ます。 ザイ リ ン ク スが開発し た解析コ アを介し てのみ、 この ト レース イ ン ターフ ェ イ ス を使用する

こ と を推奨し ます。 今後の MicroBlaze リ リ ースでのこのイ ン ターフ ェ イ スには、 下位互換性がない可能性があ り ま

す。

エク スポー ト される信号の リ ス ト は、 表 3-16を参照し て く ださい。

表 2‐62: MicroBlaze ク ロス ト リ ガー イベン ト

番号 イベン ト 説明

0 MicroBlaze 停止 MicroBlaze が停止し ている と き イベン ト を生成。 MB_Halted 出力が設定され

ている と、 同じ イベン ト になる。

1 実行再開 デバッ グ停止からプロセ ッサが実行を再開する と き、 イベン ト を生成。

MB_Halted 出力がク リ アにな る と、 同じ イベン ト になる。

2 プロ グ ラ ム ト レース

停止

プロ グ ラ ム ト レース コマン ド レジス タにコマン ド を書き込むこ と によ り プロ

グ ラ ム ト レースが停止する と き、 ト レース バッ フ ァーがいっぱいの と き、 ま

たはク ロ ス ト リ ガー ア ク シ ョ ンによ り 、 イベン ト を生成

3 プロ グ ラ ム ト レース

開始

プロ グ ラ ム ト レース コマン ド レジス タにコマン ド を書き込むこ と によ り プロ

グ ラ ム ト レースが開始する と き、 ト レースポイ ン ト を通過する と き、 またはク

ロ ス ト リ ガー ア ク シ ョ ンによ り 、 イベン ト を生成

4 パフ ォーマン ス

監視停止

パフ ォーマン ス カ ウ ン ター コマン ド レジス タにコマン ド を書き込むこ と によ

り パフ ォーマン ス監視が停止する と き、 またはク ロ ス ト リ ガー ア ク シ ョ ンに

よ り 、 イベン ト を生成

5 パフ ォーマン ス

監視開始

パフ ォーマン ス カ ウ ン ター コマン ド レジス タにコマン ド を書き込むこ と によ

り パフ ォーマン ス監視が開始する と き、 またはク ロ ス ト リ ガー ア ク シ ョ ンに

よ り 、 イベン ト を生成

6 プロ フ ァ イ リ ングの

デ ィ スエーブル

プロ フ ァ イ リ ング制御レジス タにコマン ド を書き込むこ と によ り プロ フ ァ イ リ

ングがイ ネーブルになる と き、 またはク ロ ス ト リ ガー ア ク シ ョ ンによ り 、 イ

ベン ト を生成

7 プロ フ ァ イ リ ングの

イネーブル

プロ フ ァ イ リ ング制御レジス タにコマン ド を書き込むこ と によ り プロ フ ァ イ リ

ングがデ ィ スエーブルになる と き、 またはク ロ ス ト リ ガー ア ク シ ョ ンによ り 、

イベン ト を生成

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド 100UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 101: MicroBlaze プロセッサ リファレンス ガイド …...MicroBlaze プロセッサ リファレンス ガイド 3 UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com 2016

第 2章: MicroBlaze アーキテ クチャ

フ ォール ト  ト レ ラ ンス

MicroBlaze に含まれる フ ォール ト ト レ ラ ン ス機能は、 C_FAULT_TOLERANT を使用し て イ ネーブルにする こ と がで

き、 内部ブロ ッ ク RAM にはエラー検出を提供し (命令キ ャ ッ シュ、 データ キ ャ ッ シュ、 分岐先キ ャ ッ シュ、 MMU

で)、 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 のフ ォール ト ト レ ラ ン ス機能の概要を こ こに説明し ます。 各機能の詳細は、 次のセ ク シ ョ ンを参照し て

く ださい。

• 「命令キ ャ ッ シュ操作」

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド 101UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 102: MicroBlaze プロセッサ リファレンス ガイド …...MicroBlaze プロセッサ リファレンス ガイド 3 UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com 2016

第 2章: MicroBlaze アーキテ クチャ

• 「データ キ ャ ッ シュ操作」

• 「UTLB 管理」

• 「分岐先キ ャ ッ シュ」

• 「命令バス例外」

• 「データ バス例外」

• 「例外の原因」

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 を保護するには、 パ リ テ ィ が使用されます。 分岐先ア ド レ ス を検索し ている と き

にパ リ テ ィ エラーが検出される と、 ア ド レ スは無視され、 標準分岐にな り ます。

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド 102UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 103: MicroBlaze プロセッサ リファレンス ガイド …...MicroBlaze プロセッサ リファレンス ガイド 3 UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com 2016

第 2章: MicroBlaze アーキテ クチャ

分岐先キ ャ ッ シュに新しいア ド レ スが書き込まれる と、 パ リ テ ィ が計算されます。 各ア ド レ スに 1 パ リ テ ィ ビ ッ ト

が使用されます。

フ ォール ト ト レ ラ ン ス を有効にし て も、 スペア ビ ッ ト がパ リ テ ィ に使用でき るため、 分岐キ ャ ッ シュのブロ ッ ク

RAM サイ ズが増え る こ と はあ り ません。

例外処理

フ ォール ト ト レ ラ ン スが有効になっていて、 LMB ブロ ッ ク RAM でエラーが発生する と、 LMB BRAM Interface

Controller が LMB イ ン ターフ ェ イ スでエラー信号を生成し ます。

マシン ステータ ス レジス タで EE ビ ッ ト をセ ッ ト し て、 MicroBlaze で例外を有効にする場合、 影響を受け る イ ン

ターフ ェ イ スによ り ますが、 訂正不可能なエラー信号は、 命令バス例外かデータ バス例外のいずれかを生成し ます。

例外処理中にバス例外が発生し た場合は、 MicroBlaze は停止し、 外部エラー信号 MB_Error がセ ッ ト されます。 こ

の動作によ り 、 訂正不可能なエラーによ り 壊れた命令を実行する こ と は不可能にな り ます。

ソ フ ト ウ ェ ア サポー ト

スク ラ ビング

ビ ッ ト エラーがブロ ッ ク RAM に蓄積されないよ う にするため、 定期的にビ ッ ト エラーを ス ク ラブする必要があ り

ます。

特定のコ ンフ ィ ギュ レーシ ョ ンで使用される LMB ブロ ッ ク RAM 全体および MicroBlaze 内部ブロ ッ ク RAM すべて

のス ク ラブを実行するため、 ス タ ン ド ア ロ ン BSP には microblaze_scrub() と い う 関数があ り ます。 この関数

は、 タ イマー割 り 込みルーチンから定期的に呼び出される よ う になっています。

次はそのコード例です。

#include "xparameters.h"#include "xtmrctr.h"#include "xintc.h"#include "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);

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド 103UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 104: MicroBlaze プロセッサ リファレンス ガイド …...MicroBlaze プロセッサ リファレンス ガイド 3 UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com 2016

第 2章: MicroBlaze アーキテ クチャ

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 * 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);

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド 104UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 105: MicroBlaze プロセッサ リファレンス ガイド …...MicroBlaze プロセッサ リファレンス ガイド 3 UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com 2016

第 2章: MicroBlaze アーキテ クチャ

/* * 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);

...}

ス ク ラブ レー ト の計算方法など、 ス ク ラブのイ ンプ リ メ ン ト 方法の詳細は、 「ス ク ラ ビング」 を参照し て く ださ い。

ブロ ッ ク  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 メ モ リ のス ク ラブ レー ト を概算する ための式は、 次のよ う にし て求められます。

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド 105UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 106: MicroBlaze プロセッサ リファレンス ガイド …...MicroBlaze プロセッサ リファレンス ガイド 3 UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com 2016

第 2章: MicroBlaze アーキテ クチャ

PW は 1 メ モ リ ワード での訂正可能なエラーの発生確率で、BER は 1 メ モ リ ビ ッ ト のソ フ ト エラー レー ト 、SR はス

ク ラブ レー ト です。

各製品フ ァ ミ リ のブロ ッ ク RAM に影響する ソ フ ト エラー レー ト については、 『デバイ ス信頼性レポー ト 』 (UG116)

を参照し て く ださい。

使用例

一般的な使用例をい く つか こ こ で説明し ます。 これらの使用例は、 『LogiCORE IP Processor LMB BRAM Interface

Controller 製品ガイ ド』 (PG112) からの抜粋です。

最小限

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 および

PW 7602BER

SR2‐‐‐‐‐‐‐‐‐‐‐‐

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド 106UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 107: MicroBlaze プロセッサ リファレンス ガイド …...MicroBlaze プロセッサ リファレンス ガイド 3 UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com 2016

第 2章: MicroBlaze アーキテ クチャ

C_CE_FAILING_REGISTERS = 1、 C_UE_FAILING_REGISTERS = 1 および C_FAULT_INJECT = 1 に設定し ま

す。

ロ ッ クステ ッ プ操作

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) を参照し て く ださい。

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド 107UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 108: MicroBlaze プロセッサ リファレンス ガイド …...MicroBlaze プロセッサ リファレンス ガイド 3 UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com 2016

第 2章: MicroBlaze アーキテ クチャ

図 2-41に、 システムのブロ ッ ク図を示し ます。

エラー検出

エラー検出の使用例では、 過渡エラーおよび恒久的エラーをすべて検出する必要があ り ます。 システムを使用可能

な状態に保つために冗長機能が利用される よ う なフ ェールセーフおよびフ ォール ト ト レン ラ ン ト アプ リ ケーシ ョ ン

では、 これは重要な こ と です。

このシステムでは、 2 つの冗長 MicroBlaze プロセ ッサがロ ッ ク ステ ッ プで実行されます。 2 つのプロセ ッ サの出力に

不一致が検出された と きエラーを出力するため、 コ ンパレータが使用されます。 どんなエラーが発生し て も両方の

プロセ ッ サがすぐに停止し、 それ以上エラーが広がら ないよ う にし ます。

デバッ グ ロ ジ ッ ク と関連信号を除いて、 冗長 MicroBlaze プロセ ッサは機能的に同じです。 マス ターの MicroBlaze コ

アの出力はシステムのペ リ フ ェ ラルを駆動し ます。 ス レーブの MicroBlaze コ アには入力が接続されているだけで、

出力はすべてオープンのま まです。

システムには、 完全なフ ォール ト ト ラ レ ン ト のアプ リ ケーシ ョ ンを設計する ための基本ブロ ッ ク が含まれていて、

冗長性を持たせるには、 1 つまたは複数の追加ブロ ッ ク を追加する必要があ り ます。

図 2-42に、 この使用例を示し ます。

図 2‐41: ロ ッ クステ ッ プ不正アクセス保護アプ リ ケーシ ョ ン

デバッグ インターフェイス - 製品化のときに削除

MicroBlaze パーティション

BRAM

MicroBlazeデバッグ モジュール

MicroBlaze パーティション

MicroBlaze

スレーブ

デバッグ

C_LOCKSTEP_SLAVE

コンパレータ パーティション

コンパレータ

イン

ヒビ

ター

MicroBlaze

マスター

デバッグ

C_LOCKSTEP_SLAVE

BRAM

コンパレータ パーティション

コンパレータ

Lockstep_Master_Out

Lockstep_Slave_In

Lockstep_Out

Lockstep_Out

入力

出力

イン

ヒビ

ター

入力BRAM コントローラー

DLMB

BRAM コントローラー

ILMB

BRAM コントローラー

DLMB

BRAM コントローラー

ILMB

I/O インターフェイス

外部メモリ

インターフェイス

ペリフェラル

パーティション

= 1

= 0

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド 108UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 109: MicroBlaze プロセッサ リファレンス ガイド …...MicroBlaze プロセッサ リファレンス ガイド 3 UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com 2016

第 2章: MicroBlaze アーキテ クチャ

コ ヒーレンシ

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 または

図 2‐42: ロ ッ クステ ッ プ エラー検出アプ リ ケーシ ョ ン

BRAM コントローラー

BRAM コントローラー

ILMB

DLMB

BRAM

MicroBlazeデバッグ モジュール

MicroBlaze

スレーブ

デバッグ

C_LOCKSTEP_SLAVE

MicroBlaze

マスター

デバッグ

C_LOCKSTEP_SLAVE エラー リセット

コンパレータ

Lockstep_Out

Lockstep_Out

出力

入力

入力

I/O インターフェイス

外部メモリインターフェイス

入力

入力

= 1

= 0= 0

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド 109UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 110: MicroBlaze プロセッサ リファレンス ガイド …...MicroBlaze プロセッサ リファレンス ガイド 3 UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com 2016

第 2章: MicroBlaze アーキテ クチャ

WDC.EXT.FLUSH) を使用し てデータ キ ャ ッ シ ュ ラ イ ンを無効化にする と、 ハード ウ ェ ア メ ッ セージが表示さ

れ、 コ ヒ ーレ ンシ ド メ イ ンのその他すべてのコ アが同じ こ と を実行し ます。 物理ア ド レ スが常に使用されます。

• 命令キ ャ ッ シュ無効化: コ ヒ ーレ ンシ ド メ イ ンの 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 命令が実行される と出力される

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド 110UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 111: MicroBlaze プロセッサ リファレンス ガイド …...MicroBlaze プロセッサ リファレンス ガイド 3 UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com 2016

第 2章: MicroBlaze アーキテ クチャ

• ReadOnce

キ ャ ッ シュがオフの と き、 または MMU の抑止キ ャ ッ シ イ ング ビ ッ ト がキ ャ ッ シュ ラ イ ンに対し てセ ッ ト され

る と、 出力される

• WriteUnique

ス ト ア命令が書き込みを実行するたびに出力される

• CleanInvalid

WDC.EXT.FLUSH 命令が実行される と出力される

• MakeInvalid

WDC.EXT.CLEAR 命令が実行される と出力される

両方のイ ン ターフ ェ イ スが、 分散仮想 メ モ リ (DVM) ト ラ ンザク シ ョ ンの次のサブセ ッ ト を出力し ます。

• DVM 操作

¨ TLB 無効化: VA によ る ハイパーバイザー TLB 無効化

¨ 分岐予測無効化: 分岐予測すべて無効化

¨ 物理命令キ ャ ッ シュ無効化: PA によ る非セキ ュ アな物理命令キ ャ ッ シュ無効化 (仮想イ ンデッ ク スな し )

¨ 仮想命令キ ャ ッ シュ無効化: VA によ るハイパーバイザー無効化

• DVM 同期

¨ 同期化

• DVM 完了

¨ 上記の DVM ト ラ ンザク シ ョ ンに加え、 イ ン ターフ ェ イ スは、 CleanInvalid および MakeInvalid ト ラ ンザク

シ ョ ンのみを受け付けます。 これらの ト ラ ンザク シ ョ ンは命令キ ャ ッ シュでは効力がな く 、 示されている

データ キ ャ ッ シュ ラ イ ンを無効化し ます。 ほかの ト ラ ンザク シ ョ ンが受信される と、 動作は未定義にな り

ます。

¨ 「キ ャ ッ シュ イ ン ターフ ェ イ ス」 で説明されている よ う に、 AXI4 ト ラ ンザク シ ョ ンのサブセ ッ ト のみがイ

ン ターフ ェ イ スで使用されます。

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド 111UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 112: MicroBlaze プロセッサ リファレンス ガイド …...MicroBlaze プロセッサ リファレンス ガイド 3 UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com 2016

第 2章: MicroBlaze アーキテ クチャ

データ  ア ド レス拡張

MicroBlaze には 16 EB までのデータ をア ド レ ス指定でき る機能があ り ます。 これは C_ADDR_SIZE を使用し て設定

でき ます。 このパラ メ ーターに設定でき る値は次の とお り です。

拡張ア ド レ ス指定にはソ フ ト ウ ェ ア上の制限が多 く あ り ます。

• GNU ツールでは 32 ビ ッ ト ア ド レ スの ELF フ ァ イルしか生成されません。 つま り 、 プロ グ ラ ム命令およびデー

タ メ モ リ はア ド レ ス空間の最初の 4 GB に配置する必要があ り ます。 命令ア ド レ ス空間で拡張ア ド レ スが使用

でき ないのも このためです。

• すべてのソ フ ト ウ ェ ア ド ラ イバーで 32 ビ ッ ト の符号な し整数のア ド レ ス ポイ ン ターが使用されるため、 ド ラ

イバー コード を変更せずに 4 GB を超えた拡張ア ド レ スにア ク セスする こ と はでき ません。 そのため、 すべて

の AXI ペ リ フ ェ ラルはア ド レ ス空間の最初の 4 GB 内に配置し てお く 必要があ り ます。

• 拡張ア ド レ スは物理ア ド レ ス と し てのみ処理され、 拡張仮想ア ド レ スから物理ア ド レ スへ変換するのに MMU

を使用する こ と はでき ません。 つま り 、 Linux では、 リ アル モード で動作し ている専用ド ラ イバーを介し た

データ ア ド レ ス拡張しか使用でき ません。

• GNU コ ンパイ ラでは 64 ビ ッ ト ア ド レ ス ポイ ン ターが処理されません。 拡張ア ド レ スにア ク セスするための唯

一の方法は、 マ ク ロ と し て利用でき る特定拡張ア ド レ ス指定命令を使用する こ と です。

次の C コード は、 拡張ア ド レ ス を使用し てデータにア ク セスする方法を示し ています。

#include “xil_types.h”#include “mb_interface.h”

int main(){u64 Addr = 0x000000FF00000000LL; /* Extended address */u32 Word;u8 Byte;

Word = lwea(Addr); /* Load word from extended address */swea(Addr, Word); /* Store word to extended address */Byte = lbuea(Addr); /* Load byte from extended address */sbea(Addr, Byte); /* Store byte to extended address */

}

° NONE 4 * 10243 バイ ト 32 ビ ッ ト ア ド レ スで、 拡張ア ド レ ス命令はな し

° 64GB 64 * 10243 バイ ト 36 ビ ッ ト ア ド レ ス

° 1TB 10244 バイ ト 40 ビ ッ ト ア ド レ ス

° 16TB 16 * 10244 バイ ト 44 ビ ッ ト ア ド レ ス

° 256TB 256 * 10244 バイ ト 48 ビ ッ ト ア ド レ ス

° 16EB 16 * 10246 バイ ト 64 ビ ッ ト ア ド レ ス

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド 112UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 113: MicroBlaze プロセッサ リファレンス ガイド …...MicroBlaze プロセッサ リファレンス ガイド 3 UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com 2016

第 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 プロセ ッサ リ フ ァ レンス ガイ ド 113UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 114: MicroBlaze プロセッサ リファレンス ガイド …...MicroBlaze プロセッサ リファレンス ガイド 3 UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com 2016

第 3 章: MicroBlaze 信号イ ン ターフ ェ イスの説明

MicroBlaze の I/O 概要

図 3-1および次の表 3-1 で、 コ ア イ ン ターフ ェ イ スは次のよ う に定義されています。

M_AXI_DP: ペ リ フ ェ ラル データ イ ン ターフ ェ イ ス、 AXI4-Lite または AXI4 イ ン ターフ ェ イ スDLMB: データ イ ン ターフ ェ イ ス、 ローカル メ モ リ バス ( ブロ ッ ク RAM のみ )ILMB: ペ リ フ ェ ラル命令イ ン ターフ ェ イ ス、 AXI4-Lite イ ン ターフ ェ イ スILMB: 命令イ ン ターフ ェ イ ス、 ローカル メ モ リ バス ( ブロ ッ ク RAM のみ )

M0_AXIS..M15_AXIS: AXI4-Stream イ ン ターフ ェ イ ス マス ター直接接続イ ン ターフ ェ イ ス

S0_AXIS..S15_AXIS: AXI4-Stream イ ン ターフ ェ イ ス ス レーブ直接接続イ ン ターフ ェ イ ス

M_AXI_DC: データ側キ ャ ッ シュ AXI4 イ ン ターフ ェ イ ス

M_ACE_DC: データ側キ ャ ッ シュ ACI コ ヒ ーレ ンシ拡張 (ACE) イ ン ターフ ェ イ ス

M_AXI_IC: 命令側キ ャ ッ シュ AXI4 イ ン ターフ ェ イ ス

M_ACE_IC: 命令側キ ャ ッ シュ ACI コ ヒ ーレ ンシ拡張 (ACE) イ ン ターフ ェ イ ス

コ ア : ク ロ ッ ク、 リ セ ッ ト 、 割 り 込み、 デバッ グ、 ト レース用のさ まざまな信号

図 3‐1: MicroBlaze コ アのブロ ッ ク図

データ側命令側

ILMB

バス インターフェイス バス インターフェイス

命令バッファー

プログラムカウンター

レジスタ ファイル32 X 32b

ALU

命令デコード

バスIF

バスIF

I キャ

ッシ

D キ

ャッ

シュ

シフト

バレル シフト

乗算器

Divider

FPU

特殊用途

レジスタ

オプションの MicroBlaze 機能

M_AXI_IP

UTLBITLB DTLB

メモリ管理ユニット (MMU)

DLMB

M_AXI_DP

M_ACE_IC M_ACE_DC

分岐ターゲットキャッシュ

M0_AXIS..

S0_AXIS..M15_AXIS

S15_AXIS

M_AXI_DCM_AXI_IC

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド 114UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 115: MicroBlaze プロセッサ リファレンス ガイド …...MicroBlaze プロセッサ リファレンス ガイド 3 UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com 2016

第 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 プロセ ッサ リ フ ァ レンス ガイ ド 115UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 116: MicroBlaze プロセッサ リファレンス ガイド …...MicroBlaze プロセッサ リファレンス ガイド 3 UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com 2016

第 3 章: MicroBlaze 信号イ ン ターフ ェ イスの説明

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 タ グ

表 3‐1: MicroBlaze コア I/O のま とめ (続き)

信号イ ン ターフ ェ

イスI/O 説明

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド 116UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 117: MicroBlaze プロセッサ リファレンス ガイド …...MicroBlaze プロセッサ リファレンス ガイド 3 UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com 2016

第 3 章: MicroBlaze 信号イ ン ターフ ェ イスの説明

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 マス ター バース ト サイ ズ

表 3‐1: MicroBlaze コア I/O のま とめ (続き)

信号イ ン ターフ ェ

イスI/O 説明

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド 117UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 118: MicroBlaze プロセッサ リファレンス ガイド …...MicroBlaze プロセッサ リファレンス ガイド 3 UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com 2016

第 3 章: MicroBlaze 信号イ ン ターフ ェ イスの説明

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 マス ター バース ト サイ ズ

表 3‐1: MicroBlaze コア I/O のま とめ (続き)

信号イ ン ターフ ェ

イスI/O 説明

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド 118UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 119: MicroBlaze プロセッサ リファレンス ガイド …...MicroBlaze プロセッサ リファレンス ガイド 3 UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com 2016

第 3 章: MicroBlaze 信号イ ン ターフ ェ イスの説明

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 マス ター読み出し ア ド レ ス ユーザー信号

表 3‐1: MicroBlaze コア I/O のま とめ (続き)

信号イ ン ターフ ェ

イスI/O 説明

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド 119UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 120: MicroBlaze プロセッサ リファレンス ガイド …...MicroBlaze プロセッサ リファレンス ガイド 3 UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com 2016

第 3 章: MicroBlaze 信号イ ン ターフ ェ イスの説明

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:N-1] DLMB O データ イ ン ターフ ェ イ ス LMB ア ド レ ス バス、 N = 32 - 64

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 ア ド レ ス バス

表 3‐1: MicroBlaze コア I/O のま とめ (続き)

信号イ ン ターフ ェ

イスI/O 説明

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド 120UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 121: MicroBlaze プロセッサ リファレンス ガイド …...MicroBlaze プロセッサ リファレンス ガイド 3 UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com 2016

第 3 章: MicroBlaze 信号イ ン ターフ ェ イスの説明

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 割 り 込み。 C_ASYNC_INTERRUPT が設定されている場合、

この信号は Clk に同期する。

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 に設定し て、 パイプラ

イ ンを停止

表 3‐1: MicroBlaze コア I/O のま とめ (続き)

信号イ ン ターフ ェ

イスI/O 説明

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド 121UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 122: MicroBlaze プロセッサ リファレンス ガイド …...MicroBlaze プロセッサ リファレンス ガイド 3 UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com 2016

第 3 章: MicroBlaze 信号イ ン ターフ ェ イスの説明

Dbg_Stop コ ア I でき るだけ早 く 無条件でパイプラ イ ンを停止。 立ち上が り

エ ッ ジで検出された信号を最低 1Clk ク ロ ッ ク サイ クル間保

持する必要があ る。 信号は C_DEBUG_ENABLED が 0 よ り 大

きい場合にのみ効力があ る。

Dbg_Intr コ ア O デバッ グ割 り 込み出力で、 パフ ォーマン ス監視カ ウ ン ターが

オーバーフ ローする と セ ッ ト され、 C_DEBUG_ENABLED が 2 (拡張) の と きに利用可能。

MB_Error コ ア O C_FAULT_TOLERANT が 1 の と き、 ミ ス し た例外が原因でパ

イプラ イ ンが停止する。

Sleep コ ア O SLEEP 命令の実行後または Reset_Mode[0:1] を 10 に設定

し、 MicroBlaze はス リ ープ モード にな り 、 外部ア ク セスはす

べて完了し、 パイプラ イ ンは停止。

Hibernate コ ア O HIBERNATE 命令の実行後、 MicroBlaze はス リ ープ モード に

な り 、 外部ア ク セスはすべて完了し、 パイプラ イ ンは停止。

Suspend コ ア O SUSPEND 命令の実行後、 MicroBlaze はス リ ープ モード にな

り 、 外部ア ク セスはすべて完了し、 パイプラ イ ンは停止。

Wakeup[0:1] コ ア I どち らかのビ ッ ト または両方のビ ッ ト が 1 の と き、

MicroBlaze がス リ ープ モード から復帰する。 MicroBlaze がス

リ ープ モード でない と きは無視される。

C_ASYNC_WAKEUP[0:1] の設定に従い、 信号は個々に Clk に同期する。

Dbg_Wakeup コ ア O デバッ グ ア ク セスができ る よ う 、 外部ロ ジ ッ ク がウ ェーク

ア ッ プ信号を使用し て、 MicroBlaze を ス リ ープ モード から復

帰させるデバッ グ リ ク エス ト 。 Dbg_Update に同期。

Pause コ ア I この信号がセ ッ ト される と、 処理中のバス ア ク セスすべてが

完了し た後、 MicroBlaze パイプラ イ ンが停止し、

Pause_Ack 信号がセ ッ ト される。 この信号がク リ アになる

と、 停止し ていた MicroBlaze は平常の実行を続行。

Pause_Ack コ ア O Pause 入力信号がセ ッ ト された後、 MicroBlaze が一時停止

モード になる。

Dbg_Continue コ ア O デバッ グ ア ク セスができ る よ う に、 外部ロ ジ ッ ク が Pause 信号を ク リ アにするデバッ グ リ ク エス ト 。

Non_Secure[0:3] コ ア I AXI ア ク セスが非セキ ュ アかセキ ュ アであ るかを決定する。

デフ ォル ト 値は 0000 の 2 進数値で、 すべてのイ ン ターフ ェ イ

ス をセキ ュ アに設定し ます。

ビ ッ ト 0 = M_AXI_DP

ビ ッ ト 1 = M_AXI_IP

ビ ッ ト 2 = M_AXI_DC

ビ ッ ト 3 = M_AXI_IC

Lockstep_... コ ア IO ハイ イ ンテグ リ テ ィ アプ リ ケーシ ョ ン用のロ ッ ク ステ ッ プ信

号。 詳細は、 表 3-13を参照。

表 3‐1: MicroBlaze コア I/O のま とめ (続き)

信号イ ン ターフ ェ

イスI/O 説明

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド 122UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 123: MicroBlaze プロセッサ リファレンス ガイド …...MicroBlaze プロセッサ リファレンス ガイド 3 UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com 2016

第 3 章: MicroBlaze 信号イ ン ターフ ェ イスの説明

Dbg_... コ ア IO MDM からのデバッ グ信号。 詳細は、 表 3-15を参照。

Trace_... コ ア O リ アル タ イ ム ハード ウ ェ ア解析の ト レース信号。 詳細は、

表 3-16を参照。

1. C_USE_INTERRUPT = 2 の場合のみ使用 (低レ イ テンシ割 り 込みサポー ト )

2. MicroBlaze は Clk 信号の ク ロ ッ ク供給を受ける同期デザイ ンです (Dbg_Clk 信号のク ロ ッ ク供給を受ける シ リ アル ハード ウ ェア デバッ グ ロ ジ ッ ク を除 く )。 シ リ アル ハード ウ ェ ア デバッ グ ロ ジ ッ クが使用されていない場合は、 Clk に対し、 最小周波数制

限はあ り ません。 ただし、 シ リ アル ハード ウ ェ ア デバッ グ ロ ジ ッ ク が使用されている場合は、 2 つの ク ロ ッ ク領域の間を転送

される信号があ り ます。 こ の場合、 Clk の周波数は Dbg_Clk のものよ り も高 く なければな り ません。

表 3‐1: MicroBlaze コア I/O のま とめ (続き)

信号イ ン ターフ ェ

イスI/O 説明

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド 123UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 124: MicroBlaze プロセッサ リファレンス ガイド …...MicroBlaze プロセッサ リファレンス ガイド 3 UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com 2016

第 3 章: MicroBlaze 信号イ ン ターフ ェ イスの説明

一般的に MicroBlaze 信号は Clk 入力信号に同期し ます。 ただし、 表 3-3で説明されている よ う にパラ メ ーターで設定

されている例外がい く つかあ り ます。

ス リープおよび一時停止機能

コ ン ト ロールし ながら MicroBlaze 実行を停止させるには 2 つの方法があ り ます。

• ス リ ープ モード に入る ための MBAR 命令を実行する ソ フ ト ウ ェア制御

• パイプラ イ ンを一時停止させるため Pause 入力信号をセ ッ ト するハード ウ ェ ア制御

ソ フ ト ウ ェ ア制御

ス リ ープ モード に入る ため MBAR 命令を実行し、 MicroBlaze がすべての外部ア ク セス を完了させる と、 パイプラ イ

ンが停止し、 Sleep、 Hibernate、 または Suspend のいずれかの出力信号がセ ッ ト されます。 つま り 、 外部ハー

ド ウ ェアに対し、 ク ロ ッ ク停止、 プロセ ッ サや IP コ アの リ セ ッ ト などを実行し て も安全であ る こ と を示し ていま

す。 どの出力信号がセ ッ ト されるかによ って、 実行される操作は異な り ます。

ス リ ープ モード になっている MicroBlaze を起動させるには、 Wakeup 入力信号の 1 つ (または両方) を 1 に設定する

必要があ り ます。 この場合、 MicroBlaze は MBAR 命令の後に実行を続けます。

表 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 予約

表 3‐3: パラ メ ーターで設定されている非同期信号

信号 パラ メ ーター デフ ォル ト 説明

割 り 込み C_ASYNC_INTERRUPT ツール制御 接続されている信号から設定されるパラ メ ーター

リ セ ッ ト C_NUM_SYNC_FF_CLK 2 同期 リ セ ッ ト の場合は、 パラ メ ーターを手動で 0 に設定可能

Wakeup[0:1] C_ASYNC_WAKEUP

C_NUM_SYNC_FF_CLKツール制御

2接続されている信号から設定される

ツールを上書きするには、 パラ メ ーターを手動で 0 に設定可能

Dbg_Wakeup C_DEBUG_INTERFACE 0 (シ リ アル) 0: Dbg_Update で ク ロ ッ ク供給

1: DEBUG_ACLK で ク ロ ッ ク供給、 Clk に同期

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド 124UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 125: MicroBlaze プロセッサ リファレンス ガイド …...MicroBlaze プロセッサ リファレンス ガイド 3 UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com 2016

第 3 章: MicroBlaze 信号イ ン ターフ ェ イスの説明

MicroBlaze からの Dbg_Wakeup 出力信号は、 デバッ ガーによ り ウ ェーク ア ッ プが リ ク エス ト された こ と を示し ま

す。 外部ハード ウ ェ アは、 ク ロ ッ ク の開始など必要なハード ウ ェ ア操作をすべて実行し た後に、 この信号を処理し、

プロセ ッ サを ウ ェーク ア ッ プ させます。

デバッ グ ウ ェーク ア ッ プが使用されている場合は、 ソ フ ト ウ ェアはウ ェーク ア ッ プの理由の 1 つと し て これを認識

し、 ほかに何も操作が必要なければス リ ープ状態に戻る必要があ り ます。

プロセ ッ サを ウ ェーク ア ッ プ させるのに追加操作を必要 と し ない非常に単純なケースであれば、 Wakeup 入力の 1 つ

を MicroBlaze の Interrupt 入力と同じ信号に接続し、 も う 一方の Wakeup 入力を MicroBlaze の Dbg_Wakeup 出力

に接続し ます。 これで、 割 り 込みが起きた と き、 またはデバッ ガーから リ ク エス ト があった と きに MicroBlaze を

ウ ェーク ア ッ プ させる こ と ができ ます。

ソ フ ト ウ ェア リ セ ッ ト 機能を イ ンプ リ メ ン ト するには、 た と えば、 プロセ ッサを リ セ ッ ト するのか、 システム全体

を リ セ ッ ト するかによ って、 Suspend 出力信号を適切な リ セ ッ ト 入力に接続し ます。

ス リ ープ モード用の MBAR 命令の詳細は、 表 3-4にま と められています。

ハー ド ウ ェ ア制御

Pause 入力信号が 1 に設定されていて、 MicroBlaze が外部ア ク セス をすべて完了する と、 パイプラ イ ンが停止し、

Pause_Ack 出力信号がセ ッ ト されます。 つま り 、 外部ハード ウ ェ アに対し、 ク ロ ッ ク停止、 プロセ ッサや IP コ ア

の リ セ ッ ト などを実行し て も安全であ る こ と を示し ています。

一時停止から復活するには、 入力信号 Pause をゼロにク リ アする必要があ り ます。 こ の場合、 MicroBlaze は停止位

置から命令実行を続けます。

MicroBlaze からの Dbg_Continue 出力信号は、 プロセ ッ サが一時停止から実行を再開させる よ う デバッ ガーからの

リ ク エス ト があった こ と を示し ます。 外部ハード ウ ェ アは、 ク ロ ッ クの開始など必要なハード ウ ェ ア操作をすべて

実行し た後に、 この信号を処理し、 Pause を ク リ ア し ます。

外部ハード ウ ェ アが Pause をセ ッ ト またはク リ ア し た ら、 Pause が再び変わる前に、 Pause_Ack がセ ッ ト または

ク リ アするのを待つこ と を推奨し ます。 これは、 間違って一時停止の肯定応答が検出されて問題が起き ないよ う に

するためです。

ハード ウ ェア制御で使用される信号はすべて (Pause、 Pause_Ack、 および Dbg_Continue)、 MicroBlaze の ク ロ ッ

ク に同期し ています。

表 3‐4: MBAR ス リープ モー ド命令

命令 アセンブ ラー疑似命令 出力信号

mbar 16 sleep Sleep

mbar 8 hibernate Hibernate

mbar 24 suspend Suspend

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド 125UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 126: MicroBlaze プロセッサ リファレンス ガイド …...MicroBlaze プロセッサ リファレンス ガイド 3 UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com 2016

第 3 章: MicroBlaze 信号イ ン ターフ ェ イスの説明

AXI4 および ACE イ ン ターフ ェ イスについて

メ モ リ マ ッ プ ドのイ ン ターフ ェ イス

ペ リ フ ェ ラル イ ン ターフ ェ イス

MicroBlaze の AXI4 メ モ リ マ ッ プ ド ペ リ フ ェ ラル イ ン ターフ ェ イ スは、 32 ビ ッ ト のマス ターと し て イ ンプ リ メ ン ト

されます。 こ う し た イ ン ターフ ェ イ スでは、 一度に 1 ト ラ ンザク シ ョ ンのみが処理され、 すべての ト ラ ンザク シ ョ

ンが順番に完了し ます。

• 命令ペ リ フ ェ ラル イ ン ターフ ェ イ ス (M_AXI_IP) は、 1 ワード の読み出し ア ク セスのみを実行し、 常に AXI4-

Lite サブセ ッ ト を使用する よ う に設定されています。

• データ ペ リ フ ェ ラル イ ン ターフ ェ イ ス (M_AXI_DP) は、 1 ワード ア ク セス を実行し、 デフ ォル ト で AXI4-Lite

サブセ ッ ト を使用する よ う に設定されていますが、 LWX および SWX 命令の排他的なア ク セス を イ ネーブルに

する と きは AXI4 を使用する よ う に設定されます。 ハーフ ワードおよびバイ ト の書き込みは、 適切なバイ ト ス

ト ローブをセ ッ ト し実行されます。

データ ペ リ フ ェ ラル イ ン ターフ ェ イ ス (M_AXI_DP) のア ド レ ス幅は 32 ビ ッ ト から 64 ビ ッ ト までで、

C_ADDR_SIZE で設定される値によ って決ま り ます。

キャ ッ シュ  イ ン ターフ ェ イス

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 マス ターの場合は、 シングル ア ク セスのみにな り ます。

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド 126UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 127: MicroBlaze プロセッサ リファレンス ガイド …...MicroBlaze プロセッサ リファレンス ガイド 3 UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com 2016

第 3 章: MicroBlaze 信号イ ン ターフ ェ イスの説明

このイ ン ターフ ェ イ スでは複数の ト ラ ンザク シ ョ ンを処理でき、 読み出しの場合は 2 ト ラ ンザク シ ョ ン まで、

書き込みの場合は 32 ト ラ ンザク シ ョ ン まで処理でき ます。 MicroBlaze は順次 メ モ リ モデルを維持する必要があ

るのですが、 AXI4 や ACE は、 順序に関係な く 、 読み出し /書き込みのそれぞれに対し てチャネルがあ るため、

MicroBlaze は読み出しの前にすべての書き込みを完了させます。 MicroBlaze はパイプラ イ ンを ス ト ールさせず

に複数の書き込みを処理でき るので、 最高 32 個の書き込み ト ラ ンザク シ ョ ンを使用する こ と でパフ ォーマン ス

を改善でき ます。

ワード、 ハーフ ワード、 およびバイ ト の書き込みは、 適切なバイ ト ス ト ローブをセ ッ ト し て実行されます。

LWX および SWX 命令に対し ては、 排他的ア ク セス を イネーブルにでき ます。

ア ク セスする メ モ リ ロ ケーシ ョ ンの数は、 C_DCACHE_ALWAYS_USED と い う パラ メ ーターの設定で決ま り ま

す。 このパラ メ ーターが 1 の場合は、 キ ャ ッ シュ メ モ リ 範囲は常に、 AXI4 または ACE キ ャ ッ シュ イ ン ター

フ ェ イ ス を介し てア ク セス されます。 0 の場合は、 キ ャ ッ シュがソ フ ト ウ ェ アでデ ィ スエーブルになっている と

(すなわち MSR[DCE]=0)、キ ャ ッ シュ メ モ リ 範囲は AXI4 ペ リ フ ェ ラル イ ン ターフ ェ イ ス を介し てア ク セス され

ます。

イ ン ターフ ェ イス パラ メ ーターおよび信号

パラ メ ーターがツールで割 り 当て られる場合の MicroBlaze のパラ メ ーター設定と AXI4 イ ン ターフ ェ イ スの動作の

関係が、 表 3-5にま と められています。

表 3‐5: AXI メ モ リ  マ ッ プ ド  イ ン ターフ ェ イス パラ メ ーター

イ ン ターフ ェイス

パラ メ ーター 説明

M_AXI_DP C_M_AXI_DP_PROTOCOL AXI4-Lite: デフ ォル ト 。

AXI4: C_M_AXI_DP_EXCLUSIVE_ACCESS が 1 の と き、 排他

的ア ク セス を可能にするために使用。

M_AXI_ICM_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 に設定されている と きに使用。 シングル ア ク セスのみが発生。

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド 127UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 128: MicroBlaze プロセッサ リファレンス ガイド …...MicroBlaze プロセッサ リファレンス ガイド 3 UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com 2016

第 3 章: MicroBlaze 信号イ ン ターフ ェ イスの説明

M_AXI_DCM_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_ICM_ACE_IC

NUM_READ_OUTSTANDING 1: 128、 256、 512 ビ ッ ト のマス ターのデフ ォル ト 。 読み出し

を 1 つ処理。

2: 32 ビ ッ ト マス ターのデフ ォル ト 。 同時に読み出し を 2 つ処

理可能。

8: C_ICACHE_STREAMS が 1 の と き 32 ビ ッ ト マス ターで使

用。 同時に読み出し を 8 つ処理可能。

値は 1、 2 または 8 に設定可能。

M_AXI_DCM_ACE_DC

NUM_READ_OUTSTANDING 1: 128、 256、 512 ビ ッ ト のマス ターのデフ ォル ト 。 読み出し

を 1 つ処理。

2: 32 ビ ッ ト マス ターのデフ ォル ト 。 同時に読み出し を 2 つ処

理可能。

値は 1 または 2 に設定可能。

M_AXI_DCM_ACE_DC

NUM_WRITE_OUTSTANDING 32: デフ ォル ト 。 32 個の同時書き込み。

値は 1、 2、 4、 8、 16、 または 32 に設定可能。

表 3‐5: AXI メ モ リ  マ ッ プ ド  イ ン ターフ ェ イス パラ メ ーター (続き)

イ ン ターフ ェイス

パラ メ ーター 説明

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド 128UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 129: MicroBlaze プロセッサ リファレンス ガイド …...MicroBlaze プロセッサ リファレンス ガイド 3 UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com 2016

第 3 章: MicroBlaze 信号イ ン ターフ ェ イスの説明

ア ク セス権限、 メ モ リ タ イプ、 サービ ス品質 (QoS)、 共有ド メ イ ンの値は、 表 3-6で定義されています。

表 3‐6: AXI イ ン ターフ ェ イス信号定義

イ ン ターフ ェイス

信号 説明

M_AXI_IP C_M_AXI_IP_ARPROT ア ク セス権限:

• 入力信号が Non_Secure[1] = 0 の場合、 権限な しで、 セキ ュ ア

命令ア ク セス (100)

• 入力信号が Non_Secure[1] = 1 の場合、 権限な しで、 非セキ ュ

ア命令ア ク セス (110)

M_AXI_DP C_M_AXI_DP_ARCACHEC_M_AXI_DP_AWCACHE

メ モ リ タ イプ、 AXI4 プロ ト コル:

• 標準ノ ンキ ャ ッ シャブル、 バッ フ ァ ラブル (0011)

C_M_AXI_DP_ARPROTC_M_AXI_DP_AWPROT

ア ク セス権限、 AXI4 および AXI4-Lite プロ ト コル:

• 入力信号が Non_Secure[0] = 0 の場合、 権限な しで、 セキ ュ ア

データ ア ク セス (000)

• 入力信号が Non_Secure[0] = 1 の場合、 権限な しで、 非セキ ュ

ア データ ア ク セス (010)

C_M_AXI_DP_ARQOSC_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)

M_AXI_IC

M_ACE_IC

C_M_AXI_IC_ARPROT ア ク セス権限:

• 入力信号が Non_Secure[3] = 0 の場合、 権限な しで、 セキ ュ ア

命令ア ク セス (100)

• 入力信号が Non_Secure[3] = 1 の場合、 権限な しで、 非セキ ュ

ア命令ア ク セス (110)

C_M_AXI_IC_ARQOS サービ ス品質 (QoS):

• 優先度 7 (0111)

M_AXI_DC C_M_AXI_DC_ARCACHE メ モ リ タ イプ、 標準ア ク セス :

• ラ イ ト バッ クの読み出しおよび書き込み割 り 当て (1111)

メ モ リ タ イプ、 排他的ア ク セス :

• 標準ノ ンキ ャ ッ シャブル、 ノ ンバッ フ ァ ラブル (0010)

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド 129UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 130: MicroBlaze プロセッサ リファレンス ガイド …...MicroBlaze プロセッサ リファレンス ガイド 3 UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com 2016

第 3 章: MicroBlaze 信号イ ン ターフ ェ イスの説明

データ キ ャ ッ シュ イ ン ターフ ェ イ ス (M_AXI_DC または M_ACE_DC) のア ド レ ス幅は 32 ビ ッ ト から 64 ビ ッ ト まで

で、 C_ADDR_SIZE で設定される値によ って決ま り ます。

詳細は、 『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 にセ ッ ト し ます。 これはパケ ッ ト の境界を示すのに使用され

ます。

M_ACE_DC C_M_AXI_DC_ARCACHE メ モ リ タ イプ、 標準および排他的ア ク セス :

• ラ イ ト バッ クの読み出しおよび書き込み割 り 当て (1111)

メ モ リ タ イプ、 DVM ア ク セス :

• 標準ノ ンキ ャ ッ シャブル、 ノ ンバッ フ ァ ラブル (0010)

C_M_AXI_DC_ARDOMAIN

C_M_AXI_DC_AWDOMAIN

共有ド メ イ ン:

• 内部共有可能 (01)

M_AXI_DCM_ACE_DC

C_M_AXI_DC_AWCACHE メ モ リ タ イプ、 標準ア ク セス :

• ラ イ ト バッ クの読み出しおよび書き込み割 り 当て (1111)

メ モ リ タ イプ、 排他的ア ク セス :

• 標準ノ ンキ ャ ッ シャブル、 ノ ンバッ フ ァ ラブル (0010)

C_M_AXI_DC_ARPROT

C_M_AXI_DC_AWPROT

ア ク セス権限:

• 入力信号が Non_Secure[2] = 0 の場合、 権限な しで、 セキ ュ ア

データ ア ク セス (000)

• 入力信号が Non_Secure[2] = 1 の場合、 権限な しで、 非セキ ュ

ア データ ア ク セス (010)

C_M_AXI_DC_ARQOS サービ ス品質 (QoS)、 読み出し ア ク セス :

• 優先度 12 (1100)

C_M_AXI_DC_AWQOS サービ ス品質 (QoS)、 書き込みア ク セス :

• 優先度 8 (1000)

表 3‐6: AXI イ ン ターフ ェ イス信号定義

イ ン ターフ ェイス

信号 説明

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド 130UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 131: MicroBlaze プロセッサ リファレンス ガイド …...MicroBlaze プロセッサ リファレンス ガイド 3 UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com 2016

第 3 章: MicroBlaze 信号イ ン ターフ ェ イスの説明

読み出し

ス ト リ ーム イ ン ターフ ェ イ スからの読み出しは、 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 にセ ッ ト し ます。 これはパケ ッ

ト の境界をチェ ッ クするのに使用されます。

ローカル メ モ リ  バス (LMB) イ ン ターフ ェ イスについて

LMB は同期バスで、 主にオンチッ プのブロ ッ ク RAM にア ク セスする ために使用されます。 こ のバスは、 最小限の

数の制御信号 と単純なプロ ト コルを使用し て、 1 ク ロ ッ ク サイ クルでローカルのブロ ッ ク RAM にア ク セスする よ う

にし ます。 LMB 信号 と その定義は次の表に リ ス ト されています。 LMB 信号はすべてア ク テ ィ ブ High です。

LMB 信号イ ン ターフ ェ イス

表 3‐7: LMB バス信号

信号データ  

イ ン ターフ ェ イス命令イ ン ター

フ ェ イスタ イプ

説明

Addr[0:N-1]1

1. N = 32 - 64、 MicroBlaze v9.6 で追加された C_ADDR_SIZE の設定によ って決ま る。

Data_Addr[0:N-1]1 Instr_Addr[0:31] O ア ド レ ス バス

Byte_Enable[0:3] Byte_Enable[0:3] 使用されない O バイ ト イネーブル

Data_Write[0:31] Data_Write[0:31] 使用されない O 書き込みデータ バス

AS D_AS I_AS O ア ド レ ス ス ト ローブ

Read_Strobe Read_Strobe IFetch O 読み出し処理中

Write_Strobe Write_Strobe 使用されない O 書き込み処理中

Data_Read[0:31] Data_Read[0:31] Instr[0:31] I 読み出しデータ バス

Ready DReady IReady I 次の転送の準備完了

Wait2

2. MicroBlaze v8.00 で LMB に追加

DWait IWaitI 承認された転送が準備完了にな る

まで待機

CE2 DCE ICE I 訂正可能エラー

UE2 DUE IUE I 訂正不可能エラー

Clk Clk Clk I バス ク ロ ッ ク

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド 131UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 132: MicroBlaze プロセッサ リファレンス ガイド …...MicroBlaze プロセッサ リファレンス ガイド 3 UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com 2016

第 3 章: MicroBlaze 信号イ ン ターフ ェ イスの説明

Addr[0:N‐1]

このア ド レ ス バスはコ アからの出力で、 現在の転送でア ク セス されている メ モ リ ア ド レ ス を示し ます。 AS が High

の場合のみ有効です。 マルチサイ クル ア ク セスの場合 (ア ク セスが完了する までに 2ク ロ ッ ク以上かかる もの)、

Addr[0:N-1] は転送の最初のク ロ ッ ク サイ クルでのみ有効です。

Byte_Enable[0:3]

このバイ ト イ ネーブル信号はコ アからの出力で、 データ バスのどのバイ ト レーンに有効なデータが含まれているの

かを示し ます。 Byte_Enable[0:3] は AS が High の場合のみ有効です。 マルチサイ クル ア ク セスの場合 (ア ク セス

が完了する までに 2ク ロ ッ ク以上かかる もの)、 Byte_Enable[0:3] は転送の最初のク ロ ッ ク サイ クルでのみ有効

です。 Byte_Enable[0:3] の有効値は次の表に リ ス ト されています。

:

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 のま まに

表 3‐8: Byte_Enable[0:3] の有効値  

Byte_Enable[0:3]使用バイ ト  レーン

Data[0:7] Data[8:15] Data[16:23] Data[24:31]

0001 0010 0100 1000 0011 1100 1111

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド 132UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 133: MicroBlaze プロセッサ リファレンス ガイド …...MicroBlaze プロセッサ リファレンス ガイド 3 UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com 2016

第 3 章: MicroBlaze 信号イ ン ターフ ェ イスの説明

なる可能性があ り ます。 新しい書き込み転送が次のク ロ ッ ク サイ クルですぐに開始し た場合、 Write_Strobe は

High のま まにな り ます。

Data_Read[0:31]

この読み出しデータ バスはコ アへの入力で、 メ モ リ から読み出されたデータ を含んでいます。 Data_Read は、

Ready が High の と きのク ロ ッ ク の立ち上が り エ ッ ジで有効にな り ます。

Ready

この Ready 信号はコ アへの入力で、 現在の転送が完了し た こ と と、 次の転送が次のク ロ ッ ク サイ クルで開始可能で

あ る こ と を示し ます。 これはク ロ ッ ク の立ち上が り エ ッ ジでサンプルされます。 この信号は、 読み出しの場合

Data_Read[0:31] バスが有効であ る こ と を示し、 書き込みの場合 Data_Write[0:31] バスがローカル メ モ リ に

書き込まれた こ と を示し ます。

Wait

Wait 信号はコ アへの入力で、 現在の転送は受け入れられたが、 まだ完了はし ていないこ と を示し ます。 これはク

ロ ッ ク の立ち上が り エ ッ ジでサンプルされます。

CE

CE 信号はコ アへの入力で、 現在の転送に訂正可能なエラーがあ る こ と を示し ます。 Ready が High の と きのク ロ ッ ク

の立ち上が り エ ッ ジで有効にな り ます。 この信号は、 読み出しの場合、 Data_Read[0:31] バスでエラーが訂正さ

れた こ と を示し、 バイ ト およびハーフ ワード の書き込みの場合は、 ローカル メ モ リ の対応データ ワード が、 新しい

データ を書き込む前に訂正された こ と を示し ます。

UE

UE 信号はコ アへの入力で、 現在の転送に訂正不可能なエラーがあ る こ と を示し ます。 Ready が High の と きのク ロ ッ

ク の立ち上が り エ ッ ジで有効にな り ます。 この信号は、 読み出しの場合、 Data_Read[0:31] バスの値が間違って

いる こ と を示し、 バイ ト およびハーフ ワード の書き込みの場合は、 新しいデータ を書き込む前の、 ローカル メ モ リ

の対応データ ワード が間違っている こ と を示し ます。

Clk

LMB のすべての操作は MicroBlaze コ ア ク ロ ッ ク に同期し ています。

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド 133UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 134: MicroBlaze プロセッサ リファレンス ガイド …...MicroBlaze プロセッサ リファレンス ガイド 3 UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com 2016

第 3 章: MicroBlaze 信号イ ン ターフ ェ イスの説明

LMB ト ラ ンザクシ ョ ン

次の図は、 LMB バス操作の例を説明し ています。

一般的な書き込み操作

図 3‐2: LMB の一般的な書き込み操作、 0 待機ステー ト

図 3‐3: LMB の一般的な書き込み操作、 N 待機ステー ト

Clk

Addr

Byte_Enable

Data_Write

AS

Read_Strobe

Write_Strobe

Data_Read

Ready

Wait

CE

UE

A0

BE0

D0

Don’t Care

Clk

Addr

Byte_Enable

Data_Write

AS

Read_Strobe

Write_Strobe

Data_Read

Ready

Wait

CE

UE

A0

BE0

D0

Don’t Care

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド 134UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 135: MicroBlaze プロセッサ リファレンス ガイド …...MicroBlaze プロセッサ リファレンス ガイド 3 UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com 2016

第 3 章: MicroBlaze 信号イ ン ターフ ェ イスの説明

一般的な読み出し操作

図 3‐4: LMB の一般的な読み出し操作、 0 待機ステー ト

図 3‐5: LMB の一般的な読み出し操作、 N 待機ステー ト

Clk

Addr

Byte_Enable

Data_Write

AS

Read_Strobe

Write_Strobe

Data_Read

Ready

Wait

CE

UE

A0

D0

Don’t Care

Clk

Addr

Byte_Enable

Data_Write

AS

Read_Strobe

Write_Strobe

Data_Read

Ready

Wait

CE

UE

A0

D0

Don’t Care

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド 135UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 136: MicroBlaze プロセッサ リファレンス ガイド …...MicroBlaze プロセッサ リファレンス ガイド 3 UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com 2016

第 3 章: MicroBlaze 信号イ ン ターフ ェ イスの説明

連続書き込み操作

連続読み出し操作 

図 3‐6: LMB の連続書き込み操作

図 3‐7: LMB の連続読み出し操作

Clk

Addr

Byte_Enable

Data_Write

AS

Read_Strobe

Write_Strobe

Data_Read

Ready

Wait

CE

UE

A0

Don’t Care

A1 A2 A3 A4

Don’t Care Don’t Care

D0

BE0 BE1 BE2 BE3 BE4

D1 D2 D3 D4

Clk

Addr

Byte_Enable

Data_Write

AS

Read_Strobe

Write_Strobe

Data_Read

Ready

Wait

CE

UE

A0

Don’t Care

A1 A2 A3 A4

Don’t Care Don’t Care

D0 D1 D2 D3 D4

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド 136UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 137: MicroBlaze プロセッサ リファレンス ガイド …...MicroBlaze プロセッサ リファレンス ガイド 3 UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com 2016

第 3 章: MicroBlaze 信号イ ン ターフ ェ イスの説明

連続混合書き込み/読み出し操作 

図 3‐8: 連続混合書き込み/読み出し操作、 0 待機ステー ト

図 3‐9: 連続混合書き込み/読み出し操作、 N 待機ステー ト

Clk

Addr

Byte_Enable

Data_Write

AS

Read_Strobe

Write_Strobe

Data_Read

Ready

Wait

CE

UE

A0

BE0

D0

Don’t Care

A1 A2

BE2

D2

D1

Clk

Addr

Byte_Enable

Data_Write

AS

Read_Strobe

Write_Strobe

Data_Read

Ready

Wait

CE

UE

A0 A1 A2

Don’t Care

D0

BE0 BE2

D1

D2

Don’t Care Don’t Care

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド 137UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 138: MicroBlaze プロセッサ リファレンス ガイド …...MicroBlaze プロセッサ リファレンス ガイド 3 UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com 2016

第 3 章: MicroBlaze 信号イ ン ターフ ェ イスの説明

読み出しおよび書き込みデータ  ステア リ ング

MicroBlaze のデータ側バス イ ン ターフ ェ イ スは、 次の転送のサポー ト に必要な読み出し ステア リ ングおよび書き込

みステア リ ングを実行し ます。

• ワード デバイ スへのバイ ト 、 ハーフ ワード、 およびワード転送

• ハーフ ワード デバイ スへのバイ ト およびハーフ ワード転送

• バイ ト デバイ スへのバイ ト 転送

MicroBlaze は、 ア ド レ ス指定されているデバイ ス よ り もサイ ズが大きな転送をサポー ト し ていません。 こ う し た タ

イプの転送には、 MicroBlaze のバス イ ン ターフ ェ イ スではサポー ト されていないダ イナ ミ ッ ク バス サイ ズ調整や変

換サイ クルが必要にな り ます。 読み出しサイ クルのデータ ステア リ ングは、 表 3-9および表 3-10 に、 書き込みサイ

クルのデータ ステア リ ングは、 表 3-11 および表 3-12 にま と められています。

仮想モード または保護モード で MMU を使用し ている場合 (C_USE_MMU > 1)、 または再順序付け命令がイネーブル

になっている場合 (C_USE_REORDER_INSTR = 1) にのみ、 ビ ッ グ エンデ ィ アン フ ォーマ ッ ト は使用可能です。

表 3‐9: ビ ッ グ エンデ ィ アン読み出しデータ  ステア リ ング (レジス タ  rD へロー ド )

Address [30:31]Byte_Enable

[0:3] 転送サイズレジス タ  rD データ

rD[0:7] rD[8:15] rD[16:23] rD[24:31]

11 0001 バイ ト バイ ト 3

10 0010 バイ ト バイ ト 2

01 0100 バイ ト バイ ト 1

00 1000 バイ ト バイ ト 0

10 0011 ハーフ ワード バイ ト 2 バイ ト 3

00 1100 ハーフ ワード バイ ト 0 バイ ト 1

00 1111 ワード バイ ト 0 バイ ト 1 バイ ト 2 バイ ト 3

表 3‐10: リ ト ル エンデ ィ アン読み出しデータ  ステア リ ング (レジス タ  rD へロー ド )

Address [30:31]Byte_Enable

[0:3] 転送サイズレジス タ  rD データ

rD[0:7] rD[8:15] rD[16:23] rD[24:31]

11 1000 バイ ト バイ ト 0

10 0100 バイ ト バイ ト 1

01 0010 バイ ト バイ ト 2

00 0001 バイ ト バイ ト 3

10 1100 ハーフ ワード バイ ト 0 バイ ト 1

00 0011 ハーフ ワード バイ ト 2 バイ ト 3

00 1111 ワード バイ ト 0 バイ ト 1 バイ ト 2 バイ ト 3

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド 138UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 139: MicroBlaze プロセッサ リファレンス ガイド …...MicroBlaze プロセッサ リファレンス ガイド 3 UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com 2016

第 3 章: MicroBlaze 信号イ ン ターフ ェ イスの説明

注記: ほかのマス ターには、 MicroBlaze で認められている ものよ り も、 バイ ト レーンに関し て厳しい要件が課せられ

ている ものがあ る場合があ り ます。 ス レーブ デバイ スは通常、 バイ ト デバイ スな ら最上位バイ ト レーンに、 ハーフ

ワード デバイ スな ら最上位ハーフ ワード レーンに接続される 「左揃え」 になっています。 MicroBlaze のステア リ ン

グ ロ ジ ッ クはこ の接続方法を完全サポー ト し ています。

ロ ッ クステ ッ プ イ ン ターフ ェ イスについて

MicroBlaze のロ ッ ク ステ ッ プ イ ン ターフ ェ イ スは、 1 つのマス ターおよび 1 つ以上のス レーブ MicroBlaze イ ン ス タ

ン ス を接続する よ う 設計されています。 MicroBlaze のロ ッ ク ステ ッ プ信号は、 表 3-13に リ ス ト されています。

表 3‐11: ビ ッ グ エンデ ィ アン書き込みデータ  ステア リ ング (レジス タ  rD からス ト ア)

Address[30:31]

Byte_Enable[0:3] 転送サイズ

書き込みデータ  バス バイ ト

バイ ト 0 バイ ト 1 バイ ト 2 バイ ト 3

11 0001 バイ ト rD[24:31]

10 0010 バイ ト rD[24:31]

01 0100 バイ ト rD[24:31]

00 1000 バイ ト rD[24:31]

10 0011 ハーフ ワード rD[16:23] rD[24:31]

00 1100 ハーフ ワード rD[16:23] rD[24:31]

00 1111 ワード rD[0:7] rD[8:15] rD[16:23] rD[24:31]

表 3‐12: リ ト ル エンデ ィ アン書き込みデータ  ステア リ ング (レジス タ  rD からス ト ア)

Address[30:31]

Byte_Enable[0:3] 転送サイズ

書き込みデータ  バス バイ ト

バイ ト 3 バイ ト 2 バイ ト 1 バイ ト 0

11 1000 バイ ト rD[24:31]

10 0100 バイ ト rD[24:31]

01 0010 バイ ト rD[24:31]

00 0001 バイ ト rD[24:31]

10 1100 ハーフ ワード rD[16:23] rD[24:31]

00 0011 ハーフ ワード rD[16:23] rD[24:31]

00 1111 ワード rD[0:7] rD[8:15] rD[16:23] rD[24:31]

表 3‐13: MicroBlaze ロ ッ クステ ッ プ信号

信号名 説明 VHDL タ イプ 方向

Lockstep_Master_Out マス ターから ス レーブ MicroBlaze への信号で出

力。 ス レーブでは接続されない。

std_logic 出力

Lockstep_Slave_In マス ターから ス レーブ MicroBlaze への信号で入

力。 マス ターでは接続されない。

std_logic 入力

Lockstep_Out マス ターと ス レーブ両方からのすべての比較信号

で出力。

std_logic 出力

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド 139UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 140: MicroBlaze プロセッサ リファレンス ガイド …...MicroBlaze プロセッサ リファレンス ガイド 3 UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com 2016

第 3 章: MicroBlaze 信号イ ン ターフ ェ イスの説明

Lockstep_Out で提供される比較信号は表 3-14 に リ ス ト されています。

表 3‐14: 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 68 ~ 131 std_logic_vector

Data_Write 132 ~ 163 std_logic_vector

D_AS 196 std_logic

Read_Strobe 197 std_logic

Write_Strobe 198 std_logic

Byte_Enable 199 ~ 202 std_logic_vector

M_AXI_IP_AWID 207 std_logic

M_AXI_IP_AWADDR 208 ~ 239 std_logic_vector

M_AXI_IP_AWLEN 272 ~ 279 std_logic_vector

M_AXI_IP_AWSIZE 280 ~ 282 std_logic_vector

M_AXI_IP_AWBURST 283 ~ 284 std_logic_vector

M_AXI_IP_AWLOCK 285 std_logic

M_AXI_IP_AWCACHE 286 ~ 289 std_logic_vector

M_AXI_IP_AWPROT 290 ~ 292 std_logic_vector

M_AXI_IP_AWQOS 293 ~ 296 std_logic_vector

M_AXI_IP_AWVALID 297 std_logic

M_AXI_IP_WDATA 298 ~ 329 std_logic_vector

M_AXI_IP_WSTRB 362 ~ 365 std_logic_vector

M_AXI_IP_WLAST 370 std_logic

M_AXI_IP_WVALID 371 std_logic

M_AXI_IP_BREADY 372 std_logic

M_AXI_IP_ARID 373 std_logic

M_AXI_IP_ARADDR 374 ~ 405 std_logic_vector

M_AXI_IP_ARLEN 438 ~ 445 std_logic_vector

M_AXI_IP_ARSIZE 446 ~ 448 std_logic_vector

M_AXI_IP_ARBURST 449 ~ 450 std_logic_vector

M_AXI_IP_ARLOCK 451 std_logic

M_AXI_IP_ARCACHE 452 ~ 455 std_logic_vector

M_AXI_IP_ARPROT 456 ~ 458 std_logic_vector

M_AXI_IP_ARQOS 459 ~ 462 std_logic_vector

M_AXI_IP_ARVALID 463 std_logic

M_AXI_IP_RREADY 464 std_logic

M_AXI_DP_AWID 465 std_logic

M_AXI_DP_AWADDR 466 ~ 529 std_logic_vector

M_AXI_DP_AWLEN 530 ~ 537 std_logic_vector

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド 140UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 141: MicroBlaze プロセッサ リファレンス ガイド …...MicroBlaze プロセッサ リファレンス ガイド 3 UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com 2016

第 3 章: MicroBlaze 信号イ ン ターフ ェ イスの説明

M_AXI_DP_AWSIZE 538 ~ 540 std_logic_vector

M_AXI_DP_AWBURST 541 ~ 542 std_logic_vector

M_AXI_DP_AWLOCK 543 std_logic

M_AXI_DP_AWCACHE 544 ~ 547 std_logic_vector

M_AXI_DP_AWPROT 548 ~ 550 std_logic_vector

M_AXI_DP_AWQOS 551 ~ 554 std_logic_vector

M_AXI_DP_AWVALID 555 std_logic

M_AXI_DP_WDATA 556 ~ 587 std_logic_vector

M_AXI_DP_WSTRB 620 ~ 623 std_logic_vector

M_AXI_DP_WLAST 628 std_logic

M_AXI_DP_WVALID 629 std_logic

M_AXI_DP_BREADY 630 std_logic

M_AXI_DP_ARID 631 std_logic

M_AXI_DP_ARADDR 632 ~ 695 std_logic_vector

M_AXI_DP_ARLEN 696 ~ 703 std_logic_vector

M_AXI_DP_ARSIZE 704 ~ 706 std_logic_vector

M_AXI_DP_ARBURST 707 ~ 708 std_logic_vector

M_AXI_DP_ARLOCK 709 std_logic

M_AXI_DP_ARCACHE 710 ~ 713 std_logic_vector

M_AXI_DP_ARPROT 714 ~ 716 std_logic_vector

M_AXI_DP_ARQOS 717 ~ 720 std_logic_vector

M_AXI_DP_ARVALID 721 std_logic

M_AXI_DP_RREADY 722 std_logic

Mn_AXIS_TLAST 723 + n * 35 std_logic

Mn_AXIS_TDATA 758 + n * 35 ~ 789 + n * 35

std_logic_vector

Mn_AXIS_TVALID 790 + n * 35 std_logic

Sn_AXIS_TREADY 791 + n * 35 std_logic

M_AXI_IC_AWID 1283 std_logic

M_AXI_IC_AWADDR 1284 ~ 1315 std_logic_vector

M_AXI_IC_AWLEN 1348 ~ 1355 std_logic_vector

M_AXI_IC_AWSIZE 1356 ~ 1358 std_logic_vector

M_AXI_IC_AWBURST 1359 ~ 1360 std_logic_vector

M_AXI_IC_AWLOCK 1361 std_logic

M_AXI_IC_AWCACHE 1362 ~ 1365 std_logic_vector

M_AXI_IC_AWPROT 1366 ~ 1368 std_logic_vector

M_AXI_IC_AWQOS 1369 ~ 1372 std_logic_vector

M_AXI_IC_AWVALID 1373 std_logic

M_AXI_IC_AWUSER 1374 ~ 1378 std_logic_vector

M_AXI_IC_AWDOMAIN1 1379 ~ 1380 std_logic_vector

M_AXI_IC_AWSNOOP1 1381 ~ 1383 std_logic_vector

表 3‐14: MicroBlaze ロ ッ クステ ッ プ比較信号 (続き)

信号名 バス イ ンデ ッ クス範囲 VHDL タ イプ

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド 141UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 142: MicroBlaze プロセッサ リファレンス ガイド …...MicroBlaze プロセッサ リファレンス ガイド 3 UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com 2016

第 3 章: MicroBlaze 信号イ ン ターフ ェ イスの説明

M_AXI_IC_AWBAR1 1384 ~ 1385 std_logic_vector

M_AXI_IC_WDATA 1386 ~ 1897 std_logic_vector

M_AXI_IC_WSTRB 1898 ~ 1961 std_logic_vector

M_AXI_IC_WLAST 1962 std_logic

M_AXI_IC_WVALID 1963 std_logic

M_AXI_IC_WUSER 1964 std_logic

M_AXI_IC_BREADY 1965 std_logic

M_AXI_IC_WACK 1966 std_logic

M_AXI_IC_ARID 1967 std_logic_vector

M_AXI_IC_ARADDR 1968 ~ 1999 std_logic_vector

M_AXI_IC_ARLEN 2032 ~ 2039 std_logic_vector

M_AXI_IC_ARSIZE 2040 ~ 2042 std_logic_vector

M_AXI_IC_ARBURST 2043 ~ 2044 std_logic_vector

M_AXI_IC_ARLOCK 2045 std_logic

M_AXI_IC_ARCACHE 2046 ~ 2049 std_logic_vector

M_AXI_IC_ARPROT 2050 ~ 2052 std_logic_vector

M_AXI_IC_ARQOS 2053 ~ 2056 std_logic_vector

M_AXI_IC_ARVALID 2057 std_logic

M_AXI_IC_ARUSER 2058 ~ 2062 std_logic_vector

M_AXI_IC_ARDOMAIN1 2063 ~ 2064 std_logic_vector

M_AXI_IC_ARSNOOP1 2065 ~ 2068 std_logic_vector

M_AXI_IC_ARBAR1 2069 ~ 2070 std_logic_vector

M_AXI_IC_RREADY 2071 std_logic

M_AXI_IC_RACK1 2072 std_logic

M_AXI_IC_ACREADY1 2073 std_logic

M_AXI_IC_CRVALID1 2074 std_logic

M_AXI_IC_CRRESP1 2075 ~ 2079 std_logic_vector

M_AXI_IC_CDVALID1 2080 std_logic

M_AXI_IC_CDLAST1 2081 std_logic

M_AXI_DC_AWID 2082 std_logic

M_AXI_DC_AWADDR 2083 ~ 2146 std_logic_vector

M_AXI_DC_AWLEN 2147 ~ 2154 std_logic_vector

M_AXI_DC_AWSIZE 2155 ~ 2157 std_logic_vector

M_AXI_DC_AWBURST 2158 ~ 2159 std_logic_vector

M_AXI_DC_AWLOCK 2160 std_logic

M_AXI_DC_AWCACHE 2161 ~ 2164 std_logic_vector

M_AXI_DC_AWPROT 2165 ~ 2167 std_logic_vector

M_AXI_DC_AWQOS 2168 ~ 2171 std_logic_vector

M_AXI_DC_AWVALID 2172 std_logic

M_AXI_DC_AWUSER 2172 ~ 2176 std_logic_vector

M_AXI_DC_AWDOMAIN1 2177 ~ 2178 std_logic_vector

表 3‐14: MicroBlaze ロ ッ クステ ッ プ比較信号 (続き)

信号名 バス イ ンデ ッ クス範囲 VHDL タ イプ

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド 142UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 143: MicroBlaze プロセッサ リファレンス ガイド …...MicroBlaze プロセッサ リファレンス ガイド 3 UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com 2016

第 3 章: MicroBlaze 信号イ ン ターフ ェ イスの説明

M_AXI_DC_AWSNOOP1 2179 ~ 2182 std_logic_vector

M_AXI_DC_AWBAR1 2183 ~ 2184 std_logic_vector

M_AXI_DC_WDATA 2185 ~ 2696 std_logic_vector

M_AXI_DC_WSTRB1 2697 ~ 2760 std_logic_vector

M_AXI_DC_WLAST 2761 std_logic

M_AXI_DC_WVALID 2762 std_logic

M_AXI_DC_WUSER 2863 std_logic

M_AXI_DC_BREADY 2764 std_logic

M_AXI_DC_WACK1 2765 std_logic

M_AXI_DC_ARID 2766 std_logic

M_AXI_DC_ARADDR 2767 ~ 2830 std_logic_vector

M_AXI_DC_ARLEN 2831 ~ 2838 std_logic_vector

M_AXI_DC_ARSIZE 2839 ~ 2841 std_logic_vector

M_AXI_DC_ARBURST 2842 ~ 2843 std_logic_vector

M_AXI_DC_ARLOCK 2844 std_logic

M_AXI_DC_ARCACHE 2845 ~ 2848 std_logic_vector

M_AXI_DC_ARPROT 2849 ~ 2851 std_logic_vector

M_AXI_DC_ARQOS 2852 ~ 2855 std_logic_vector

M_AXI_DC_ARVALID 2856 std_logic

M_AXI_DC_ARUSER 2857 ~ 2861 std_logic_vector

M_AXI_DC_ARDOMAIN1 2862 ~ 2863 std_logic_vector

M_AXI_DC_ARSNOOP1 2864 ~ 2867 std_logic_vector

M_AXI_DC_ARBAR1 2868 ~ 2869 std_logic_vector

M_AXI_DC_RREADY 2870 std_logic

M_AXI_DC_RACK1 2871 std_logic

M_AXI_DC_ACREADY1 2872 std_logic

M_AXI_DC_CRVALID1 2873 std_logic

M_AXI_DC_CRRESP1 2874 ~ 2878 std_logic_vector

M_AXI_DC_CDVALID1 2879 std_logic

M_AXI_DC_CDLAST1 2880 std_logic

Trace_Instruction 2881 ~ 2912 std_logic_vector

Trace_Valid_Instr 2913 std_logic

Trace_PC 2914 ~ 2945 std_logic_vector

Trace_Reg_Write 2978 std_logic

Trace_Reg_Addr 2979 ~ 2983 std_logic_vector

Trace_MSR_Reg 2984 ~ 2998 std_logic_vector

Trace_PID_Reg 2999 ~ 3006 std_logic_vector

Trace_New_Reg_Value 3007 ~ 3038 std_logic_vector

Trace_Exception_Taken 3071 std_logic

Trace_Exception_Kind 3072 ~ 3076 std_logic_vector

Trace_Jump_Taken 3077 std_logic

表 3‐14: MicroBlaze ロ ッ クステ ッ プ比較信号 (続き)

信号名 バス イ ンデ ッ クス範囲 VHDL タ イプ

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド 143UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 144: MicroBlaze プロセッサ リファレンス ガイド …...MicroBlaze プロセッサ リファレンス ガイド 3 UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com 2016

第 3 章: MicroBlaze 信号イ ン ターフ ェ イスの説明

デバッ グ イ ン ターフ ェ イスについて

MicroBlaze のデバッ グ イ ン ターフ ェ イ スは、 ザイ リ ン ク スの MDM (Microprocessor Debug Module) IP コ アを使用し て

機能する よ う に設計されています。 MDM は、 FPGA の JTAG ポー ト を介し XSDB (Xilinx System Debugger) によ って

制御されます。 MDM は 一度に複数の MicroBlaze プロセ ッサを制御でき ます。 デバッ グ信号は DEBUG バスにま と

められています。

デバッ グ イ ン ターフ ェ イ スは、JTAG シ リ アル信号 (C_DEBUG_INTERFACE = 0) または AXI4-Lite と互換性のあ るパ

ラ レル信号 (C_DEBUG_INTERFACE = 1) を使用し て、 DEBUG バスにま と める こ と ができ ます。 MDM コ ンフ ィ ギュ

レーシ ョ ン も それに従って設定でき ます。

MDM が使用されていない場合は、 AXI4 バスにま と められている AXI4-Lite パラ レル信号 (C_DEBUG_INTERFACE

= 2) のみを使用する こ と も可能です。 ただし、 この設定はツールではサポー ト されていません。

MicroBlaze のデバッ グ信号は、 表 3-15に リ ス ト されています。

Trace_Delay_Slot 3078 std_logic

Trace_Data_Address 3079 ~ 3142 std_logic_vector

Trace_Data_Write_Value 3143 ~ 3174 std_logic_vector

Trace_Data_Byte_Enable 3207 ~ 3210 std_logic_vector

Trace_Data_Access 3215 std_logic

Trace_Data_Read 3216 std_logic

Trace_Data_Write 3217 std_logic

Trace_DCache_Req 3218 std_logic

Trace_DCache_Hit 3219 std_logic

Trace_DCache_Rdy 3220 std_logic

Trace_DCache_Read 3221 std_logic

Trace_ICache_Req 3222 std_logic

Trace_ICache_Hit 3223 std_logic

Trace_ICache_Rdy 3224 std_logic

Trace_OF_PipeRun 3225 std_logic

Trace_EX_PipeRun 3226 std_logic

Trace_MEM_PipeRun 3227 std_logic

Trace_MB_Halted 3228 std_logic

Trace_Jump_Hit 3229 std_logic

将来使用するために予約 3230 ~ 4095

1. この信号は、 C_INTERCONNECT = 3 (ACE) の場合のみ使用し ます。

表 3‐15: MicroBlaze デバッ グ信号

信号名 説明 VHDL タ イプ 種類

Dbg_Clk MDM からの JTAG ク ロ ッ ク std_logic シ リ アル入力

Dbg_TDI MDM からの JTAG TDI std_logic シ リ アル入力

表 3‐14: MicroBlaze ロ ッ クステ ッ プ比較信号 (続き)

信号名 バス イ ンデ ッ クス範囲 VHDL タ イプ

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド 144UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 145: MicroBlaze プロセッサ リファレンス ガイド …...MicroBlaze プロセッサ リファレンス ガイド 3 UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com 2016

第 3 章: MicroBlaze 信号イ ン ターフ ェ イスの説明

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 シ リ アル入力

Debug_Rst1 MDM からの リ セ ッ ト 信号、 ア ク テ ィ ブ High。

最低 1 Clk ク ロ ッ ク サイ クル間保持する必要が

あ る。

std_logic 入力

Dbg_Trig_In2 MDM への ク ロ ス ト リ ガー イベン ト 入力 std_logic_vector 出力

Dbg_Trig_Ack_In2 MDM からの ク ロ ス ト リ ガー イベン ト 入力肯定

応答

std_logic_vector 入力

Dbg_Trig_Out2 MDM からの ク ロ ス ト リ ガー ア ク シ ョ ン出力 std_logic_vector 入力

Dbg_Trig_Ack_Out2 MDM への ク ロ ス ト リ ガー ア ク シ ョ ン出力肯定

応答

std_logic_vector 出力

Dbg_Trace_Data3 MDM への外部プロ グ ラ ム ト レース データ出力 std_logic_vector 出力

Dbg_Trace_Valid3 MDM への外部プロ グ ラ ム ト レース有効 std_logic 出力

Dbg_Trace_Ready3 MDM からの外部プロ グ ラ ム ト レース準備完了 std_logic 入力

Dbg_Trace_Clk3 MDM からの外部プロ グ ラ ム ト レース ク ロ ッ ク std_logic 入力

Dbg_ARADDR4 MDM からの読み出し ア ド レ ス std_logic_vector パラ レル入力

Dbg_ARREADY4 MDM へ読み出し ア ド レ ス レデ ィ std_logic パラ レル出力

Dbg_ARVALID4 MDM からの読み出し ア ド レ ス有効 std_logic パラ レル入力

Dbg_AWADDR4 MDM からの書き込みア ド レ ス std_logic_vector パラ レル入力

Dbg_AWREADY4 MDM へ書き込みア ド レ ス レデ ィ std_logic パラ レル出力

Dbg_AWVALID4 MDM から書き込みア ド レ ス有効 std_logic パラ レル入力

Dbg_BREADY4 MDM へ書き込み応答レデ ィ std_logic パラ レル出力

Dbg_BRESP4 MDM へ書き込み応答 std_logic_vector パラ レル出力

Dbg_BVALID4 MDM から書き込み応答有効 std_logic パラ レル入力

Dbg_RDATA4 MDM へ読み出しデータ std_logic_vector パラ レル出力

Dbg_RREADY4 MDM へ読み出しデータ レデ ィ std_logic パラ レル出力

Dbg_RRESP4 MDM へ読み出しデータ応答 std_logic_vector パラ レル出力

Dbg_RVALID4 MDM からの読み出しデータ有効 std_logic パラ レル入力

Dbg_WDATA4 MDM からの書き込みデータ std_logic_vector パラ レル入力

Dbg_WREADY4 MDM へ書き込みデータ レデ ィ std_logic パラ レル出力

Dbg_WVALID4 MDM からの書き込みデータ有効 std_logic パラ レル入力

DEBUG_ACLK4 デバッ グ ク ロ ッ ク、 Clk と同じであ る必要があ

る。

std_logic パラ レル入力

DEBUG_ARESET4 デバッ グ リ セ ッ ト 、 リ セ ッ ト と同じであ る必要

があ る。

std_logic パラ レル入力

1. MicroBlaze v7.00 でア ッ プデー ト : Dbg_Shift を追加、 Debug_Rst を DEBUG バスに含める

2. MicroBlaze v9.3 でア ッ プデー ト : Dbg_Trig 信号を DEBUG バスに追加

3. MicroBlaze v9.4 でア ッ プデー ト : 外部プロ グ ラ ム ト レース信号を DEBUG バスに追加

4. MicroBlaze v10.0 でア ッ プデー ト : パラ レル デバッ グ信号を DEBUG バスに追加

表 3‐15: MicroBlaze デバッ グ信号

信号名 説明 VHDL タ イプ 種類

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド 145UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 146: MicroBlaze プロセッサ リファレンス ガイド …...MicroBlaze プロセッサ リファレンス ガイド 3 UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com 2016

第 3 章: MicroBlaze 信号イ ン ターフ ェ イスの説明

ト レース イ ン ターフ ェ イスについて

MicroBlaze は ト レース目的でさ まざまな内部信号をエ ク スポー ト し ます。 この信号イ ン ターフ ェ イ スは標準化され

ておらず、 新しい リ ビジ ョ ンのプロセ ッ サでは、 信号選択や機能性において、 下位互換性が得られない可能性があ

り ます。 これらの信号のカ ス タ ム ロ ジ ッ ク を設計せず、 ザイ リ ン ク ス提供の解析 IP を介し て信号を使用する こ と を

推奨し ます。 ト レース信号は TRACE バスでグループにま と められます。 ト レース信号の現在のセ ッ ト は、

MicroBlaze v7.30 でア ッ プデー ト された もので、 表 3-16に リ ス ト されています。

MSR ビ ッ ト のマ ッ ピングは表 3-17にま と められています。 マシン ステータ ス レジス タ (MSR) の詳細は、 「特殊用途

レジス タ」 を参照し て く ださい。

ト レース例外タ イプは表 3-18を参照し て く ださい。 すべての未使用の ト レース例外タ イプは予約されています。

表 3‐16: MicroBlaze ト レース信号

信号名 説明 VHDL タ イプ 方向

Trace_Valid_Instr ト レース ポー ト での有効命令 std_logic 出力

Trace_Instruction 1 命令コード std_logic_vector (0 ~ 31) 出力

Trace_PC 1 プロ グ ラ ム カ ウ ン ター std_logic_vector (0 ~ 31) 出力

Trace_Reg_Write 1 レジス タ フ ァ イルへの命令書き込み std_logic 出力

Trace_Reg_Addr 1 デステ ィ ネーシ ョ ン レジス タ ア ド レ ス std_logic_vector (0 ~ 4) 出力

Trace_MSR_Reg1 マシン ステータ ス レジス タ。 レジス タ ビ ッ ト のマ ッ ピングは以下参照。

std_logic_vector (0 ~ 14)2 出力

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 側の メ モ リ ア ク セスのア ド レ ス、 N = 32 ~ 64、 C_ADDR_SIZE で決ま る。

std_logic_vector (0 ~ N-1) output

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 出力

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド 146UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 147: MicroBlaze プロセッサ リファレンス ガイド …...MicroBlaze プロセッサ リファレンス ガイド 3 UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com 2016

第 3 章: MicroBlaze 信号イ ン ターフ ェ イスの説明

Trace_DCache_Rdy データ ア ド レ スが D キ ャ ッ シュ範囲内にあ

り 、 ア ク セスが完了し ている

std_logic 出力

Trace_DCache_Read,4 D キ ャ ッ シュ リ ク エス ト は読み出し。 std_logic 出力

Trace_ICache_Req 命令 メ モ リ ア ド レ スが 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‐16: MicroBlaze ト レース信号 (続き)

信号名 説明 VHDL タ イプ 方向

表 3‐17: ト レース 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 処理中ブレーク

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド 147UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 148: MicroBlaze プロセッサ リファレンス ガイド …...MicroBlaze プロセッサ リファレンス ガイド 3 UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com 2016

第 3 章: MicroBlaze 信号イ ン ターフ ェ イスの説明

12 29 C 演算キ ャ リ ー

13 30 IE 割 り 込みイネーブル

14 31 Reserved 予約

表 3‐18: ト レース例外のタ イプ

Trace_Exception_Kind [0:4] 説明

00000 ス ト リ ーム例外

00001 ア ラ イ ン されていない例外

00010 無効なオペコード例外

00011 命令バス例外

00100 データ バス例外

00101 除算例外

00110 FPU 例外

00111 特権命令例外

01010 割 り 込み

01011 外部のマス ク不可能なブレーク

01100 外部のマス ク可能なブレーク

10000 データ ス ト レージ例外

10001 命令ス ト レージ例外

10010 データ TLB ミ ス例外

10011 命令 TLB ミ ス例外

表 3‐17: ト レース MSR のマ ッ ピング

Trace_MSR_Reg マシン  ステータ ス レジス タ

ビ ッ ト ビ ッ ト 名前 説明

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド 148UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 149: MicroBlaze プロセッサ リファレンス ガイド …...MicroBlaze プロセッサ リファレンス ガイド 3 UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com 2016

第 3 章: MicroBlaze 信号イ ン ターフ ェ イスの説明

MicroBlaze コ アのコ ン フ ィ ギュ レーシ ョ ン

MicroBlaze コ アは、 ユーザーが細か く 設定でき る よ う に開発されています。 つま り 、 具体的な コ ス ト やパフ ォーマ

ン スの要件を満たすこ と ができ る よ う に、 プロセ ッ サを設定でき ます。

コ ンフ ィ ギュ レーシ ョ ンは、 通常、 機能のオン/オフやサイ ズを決めた り 、 プロセ ッ サの機能を選択するためのパラ

メ ーターを使用し て実行し ます。 た と えば、 命令キ ャ ッ シュは C_USE_ICACHE パラ メ ーターを設定する と イネーブ

ルにな り ます。 命令キ ャ ッ シュのサイ ズ、 キ ャ ッ シュ可能な メ モ リ の範囲の設定は、 C_CACHE_BYTE_SIZE、

C_ICACHE_BASEADDR、 C_ICACHE_HIGHADDR をそれぞれ設定でき ます。

最新バージ ョ ンの MicroBlaze に有効なパラ メ ーターは表 3-19に リ ス ト されています。 こ の表に リ ス ト されているパ

ラ メ ーターがすべて古いバージ ョ ンの MicroBlaze で認識されるわけではあ り ませんが、 コ ンフ ィ ギュ レーシ ョ ンは

完全に下位互換性があ り ます。

注記: グレーで色分け されている行は、 パラ メ ーターの値が固定値であって、 変更でき ないこ と を示し ています。

表 3‐19: コ ン フ ィ ギュ レーシ ョ ン パラ メ ーター  

パラ メ ーター名 機能/説明 設定可能な値デフ ォル

ト 値

ツールで割り当て

VHDL タ イプ

C_FAMILY ターゲ ッ ト フ ァ ミ リ 表 3-20に リ ス ト virtex7 可 string

C_DATA_SIZE データ サイ ズ 32 32 該当

な し

integer

C_ADDR_SIZE データ側のア ド レ ス サイ

ズ32-64 32 該当

な し

integer

C_DYNAMIC_BUS_SIZING レガシ 1 1 該当

な し

integer

C_SCO ザイ リ ン ク ス内部 0 0 該当

な し

integer

C_AREA_OPTIMIZED イ ンプ リ メ ンテーシ ョ ン

最適化の選択: 0 = パフ ォーマン ス

1 = エ リ ア

2 = 周波数

0、 1、 2 0 integer

C_OPTIMIZATION 将来使用するために予約 0 0 該当

な しinteger

C_INTERCONNECT イ ン ターコネ ク ト を選択

2 = AXI4 のみ

3 = AXI4 および ACE

2、 3 2 integer

C_ENDIANNESS エンデ ィ アンを選択

1 = リ ト ル エンデ ィ アン1 1 可 integer

C_BASE_VECTORS1 コ ンフ ィ ギュ レーシ ョ ン

可能なベース ベク ター

0x00000000-

0xffffff80

0x00000

000

std_logic_vect

or

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド 149UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 150: MicroBlaze プロセッサ リファレンス ガイド …...MicroBlaze プロセッサ リファレンス ガイド 3 UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com 2016

第 3 章: MicroBlaze 信号イ ン ターフ ェ イスの説明

C_FAULT_TOLERANT フ ォール ト ト レ ラ ン ス を

イ ンプ リ メ ン ト0、 1 0 可 integer

C_ECC_USE_CE_EXCEPTION 訂正可能な ECC エラーに

対し例外を生成0、 1 0

integer

C_LOCKSTEP_SLAVE ロ ッ ク ステ ッ プ ス レーブ 0、 1 0 integer

C_AVOID_PRIMITIVES FPGA プ リ ミ テ ィ ブを使用

禁止

0 = な し 1 = SRL2 = LUTRAM3 = 両方

0、 1、 2、 3 0

integer

C_PVR プロセ ッ サ バージ ョ ン レジス タ モード の選択

0 = な し

1 = 基本

2 = フル

0、 1、 2 0

integer

C_PVR_USER1 プロセ ッ サ バージ ョ ン レジス タ USER1 定数 0x00-0xff 0x00

std_logic_vector(0 ~ 7)

C_PVR_USER2 プロセ ッ サ バージ ョ ン レジス タ USER2 定数

0x00000000-

0xffffffff

0x00000

000

std_logic_vector(0 ~ 31)

C_RESET_MSR_IE C_RESET_MSR_BIPC_RESET_MSR_ICE

C_RESET_MSR_DCEC_RESET_MSR_EE

C_RESET_MSR_EIP

MSR レジス タ ビ ッ ト (IE、

BIP、 ICE、 DCE、 EE、 お

よび EIP) の リ セ ッ ト 値。

個々のビ ッ ト の

どの組み合わせ

でも可。

0x0000 std_logic

C_INSTANCE イ ン ス タ ン ス名 任意のイ ン ス タ

ン ス名

micro

blaze可 string

C_D_AXI データ側 AXI イ ン ター

フ ェ イ ス0、 1 0

integer

C_D_LMB データ側 LMB イ ン ター

フ ェ イ ス0、 1 1

integer

C_I_AXI 命令側 AXI イ ン ターフ ェ

イ ス0、 1 0

integer

C_I_LMB 命令側 LMB イ ン ターフ ェ

イ ス0、 1 1

integer

C_USE_BARREL バレル シフ ターを含める 0、 1 0 integer

表 3‐19: コ ン フ ィ ギュ レーシ ョ ン パラ メ ーター (続き) 

パラ メ ーター名 機能/説明 設定可能な値デフ ォル

ト 値

ツールで割り当て

VHDL タ イプ

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド 150UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 151: MicroBlaze プロセッサ リファレンス ガイド …...MicroBlaze プロセッサ リファレンス ガイド 3 UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com 2016

第 3 章: MicroBlaze 信号イ ン ターフ ェ イスの説明

C_USE_DIV ハード ウ ェ ア ド ラ イバー

を含める0、 1 0

integer

C_USE_HW_MUL ハード ウ ェ ア乗算器を含

める

0 = な し 1 = Mul322 = Mul64

0、 1、 2 1

integer

C_USE_FPU ハード ウ ェ ア浮動小数点

ユニ ッ ト を含める

0 = な し

1 = 基本

2 = 拡張

0、 1、 2 0

integer

C_USE_MSR_INSTR MSRSET および MSRCLR 命令を使用

0、 1 1integer

C_USE_PCMP_INSTR CLZ、 PCMPBF、

PCMPEQ、 PCMPNE 命令

を使用

0、 1 1integer

C_USE_REORDER_INSTR 逆ロード、 逆ス ト ア、 ス

ワ ッ プ命令を使用0、 1 1

integer

C_UNALIGNED_EXCEPTIONS ア ラ イ ン されていない

データ ア ク セスの例外処

理を実行

0、 1 0integer

C_ILL_OPCODE_EXCEPTION 無効なオペコード の例外

処理を実行0、 1 0

integer

C_M_AXI_I_BUS_EXCEPTION M_AXI_I バス エラーの例

外処理を実行0、 1 0

integer

C_M_AXI_D_BUS_EXCEPTION M_AXI_D バス エラーの例

外処理を実行0、 1 0

integer

C_DIV_ZERO_EXCEPTION ゼロ除算または除算オー

バーフ ローの例外処理を

実行

0、 1 0integer

C_FPU_EXCEPTION ハード ウ ェ ア浮動小数点

ユニ ッ ト の例外処理を

実行

0、 1 0integer

C_OPCODE_0x0_ILLEGAL opcode 0x0 を無効な命令と

し て検出0、 1 0

integer

C_FSL_EXCEPTION ス ト リ ーム リ ン ク の例外

処理を実行0、 1 0

integer

表 3‐19: コ ン フ ィ ギュ レーシ ョ ン パラ メ ーター (続き) 

パラ メ ーター名 機能/説明 設定可能な値デフ ォル

ト 値

ツールで割り当て

VHDL タ イプ

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド 151UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 152: MicroBlaze プロセッサ リファレンス ガイド …...MicroBlaze プロセッサ リファレンス ガイド 3 UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com 2016

第 3 章: MicroBlaze 信号イ ン ターフ ェ イスの説明

C_ECC_USE_CE_EXCEPTION 訂正可能なエラーに対し

バス エラー例外を生成0、 1 0

integer

C_USE_STACK_PROTECTION ス タ ッ ク オーバーフ ロー

またはス タ ッ ク アンダー

フ ローに対し例外を生成

0、 1 0integer

C_IMPRECISE_EXCEPTIONS LMB メ モ リ の ECC 訂正可

能エラーに対し、 あいま

い例外を許可

0、 1 0integer

C_DEBUG_ENABLED MDM デバッ グ イ ン ター

フ ェ イ ス

0 = な し

1 = 基本

2 = 拡張

0、 1、 2 1

integer

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

C_DEBUG_PROFILE_SIZE プロ フ ァ イル バッ フ ァー サイ ズ

0、 4096、 8192、

16384、 32768、

65536、 131072

0 integer

C_DEBUG_EXTERNAL_TRACE 外部プロ グ ラ ム ト レース 0、 1 0 可 integer

C_DEBUG_INTERFACE デバッ グ イ ン ターフ ェ イ

ス : 0 = デバッ グ シ リ アル

1 = デバッ グ パラ レル 2 = AXI4-Lite

0、 1、 2 0 integer

表 3‐19: コ ン フ ィ ギュ レーシ ョ ン パラ メ ーター (続き) 

パラ メ ーター名 機能/説明 設定可能な値デフ ォル

ト 値

ツールで割り当て

VHDL タ イプ

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド 152UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 153: MicroBlaze プロセッサ リファレンス ガイド …...MicroBlaze プロセッサ リファレンス ガイド 3 UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com 2016

第 3 章: MicroBlaze 信号イ ン ターフ ェ イスの説明

C_ASYNC_INTERRUPT 非同期割 り 込み 0、 1 0 可 integer

C_ASYNC_WAKEUP 非同期ウ ェーク ア ッ プ 00,01,10,11 00 可 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

integer

C_USE_EXTENDED_FSL_INSTR 拡張ス ト リ ーム命令を

使用0、 1 0

integer

C_ICACHE_BASEADDR 命令キ ャ ッ シュ ベース アド レ ス

0x00000000 -

0xFFFFFFFF

0x00000

000

std_logic_vect

or

C_ICACHE_HIGHADDR 命令キ ャ ッ シュ ハイ ア ド

レ ス

0x00000000 -

0xFFFFFFFF

0x3FFF

FFFF

std_logic_vect

or

C_USE_ICACHE 命令キ ャ ッ シュ 0、 1 0 integer

C_ALLOW_ICACHE_WR 命令キ ャ ッ シュ ラ イ ト イネーブル

0、 1 1integer

C_ICACHE_LINE_LEN 命令キ ャ ッ シュ ラ イ ンの

長さ4、 8、 16 4

integer

C_ICACHE_ALWAYS_USED 命令キ ャ ッ シュ イ ン ター

フ ェ イ スが、 キ ャ ッ シュ

可能範囲内のすべての メ

モ リ ア ク セスに対し て使

用される

0、 1 1

integer

C_ICACHE_FORCE_TAG_LUTRAM 命令キ ャ ッ シュ タ グは分

散 RAM を使用し て常にイ

ンプ リ メ ン ト

0、 1 0integer

C_ICACHE_STREAMS 命令キ ャ ッ シュ ス ト リ ーム

0、 1 0integer

C_ICACHE_VICTIMS 命令キ ャ ッ シュ ビ ク テ ィ ム

0、 2、 4、 8 0integer

C_ICACHE_DATA_WIDTH 命令キ ャ ッ シュ データ幅

0 = 32 ビ ッ ト

1 = フル キ ャ ッ シュ ラ イ ン

2 = 512 ビ ッ ト

0、 1、 2 0

integer

C_ADDR_TAG_BITS 命令キ ャ ッ シュ ア ド レ ス タ グ

0 ~ 25 17 可 integer

表 3‐19: コ ン フ ィ ギュ レーシ ョ ン パラ メ ーター (続き) 

パラ メ ーター名 機能/説明 設定可能な値デフ ォル

ト 値

ツールで割り当て

VHDL タ イプ

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド 153UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 154: MicroBlaze プロセッサ リファレンス ガイド …...MicroBlaze プロセッサ リファレンス ガイド 3 UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com 2016

第 3 章: MicroBlaze 信号イ ン ターフ ェ イスの説明

C_CACHE_BYTE_SIZE 命令キ ャ ッ シュ サイ ズ 64、 128、 256、

512、 1024、

2048、 4096、

8192、 16384、

32768、 655362

8192

integer

C_DCACHE_BASEADDR データ キ ャ ッ シュ ベース ア ド レ ス

0x00000000 -

0xFFFFFFFF

0x00000

000

std_logic_vect

or

C_DCACHE_HIGHADDR データ キ ャ ッ シュ ハイ アド レ ス

0x00000000 -

0xFFFFFFFF

0x3FFF

FFFF

std_logic_vect

or

C_USE_DCACHE データ キ ャ ッ シュ 0、 1 0 integer

C_ALLOW_DCACHE_WR データ キ ャ ッ シュ ラ イ ト イネーブル

0、 1 1integer

C_DCACHE_LINE_LEN データ キ ャ ッ シュ ラ イ ン

の長さ4、 8、 16 4

integer

C_DCACHE_ALWAYS_USED データ キ ャ ッ シュ イ ン

ターフ ェ イ スが、 キ ャ ッ

シュ可能範囲内のすべて

のア ク セスに対し て使用

される

0、 1 1

integer

C_DCACHE_FORCE_TAG_LUTRAM データ キ ャ ッ シュ タ グは

分散 RAM を使用し て常に

イ ンプ リ メ ン ト

0、 1 0integer

C_DCACHE_USE_WRITEBACK データ キ ャ ッ シュ ラ イ ト

バッ ク ス ト レージ ポ リ

シーを使用 0、 1 0

integer

C_DCACHE_VICTIMS データ キ ャ ッ シュ ビ ク

テ ィ ム0、 2、 4、 8 0

integer

C_DCACHE_DATA_WIDTH データ キ ャ ッ シュ データ

0 = 32 ビ ッ ト

1 = フル キ ャ ッ シュ ラ イ ン

2 = 512 ビ ッ ト

0、 1、 2 0

integer

C_DCACHE_ADDR_TAG データ キ ャ ッ シュ ア ド レ

ス タ グ0 ~ 25 17 可 integer

表 3‐19: コ ン フ ィ ギュ レーシ ョ ン パラ メ ーター (続き) 

パラ メ ーター名 機能/説明 設定可能な値デフ ォル

ト 値

ツールで割り当て

VHDL タ イプ

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド 154UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 155: MicroBlaze プロセッサ リファレンス ガイド …...MicroBlaze プロセッサ リファレンス ガイド 3 UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com 2016

第 3 章: MicroBlaze 信号イ ン ターフ ェ イスの説明

C_DCACHE_BYTE_SIZE データ キ ャ ッ シュ サイ ズ 64、 128、 256、

512、 1024、

2048、 4096、

8192、 16384、

32768、 65536

8192

integer

C_USE_MMU3 メ モ リ 管理:

0 = な し

1 = ユーザー モード

2 = 保護

3 = 仮想

0、 1、 2、 3 0 integer

C_MMU_DTLB_SIZE3 データ シ ャ ド ウ変換ルッ

ク アサイ ド バッ フ ァー サイ ズ

1、 2、 4、 8 4 integer

C_MMU_ITLB_SIZE3 命令シャ ド ウ変換ルッ ク

アサイ ド バッ フ ァー サイ ズ

1、 2、 4、 8 2 integer

C_MMU_TLB_ACCESS3 メ モ リ 管理特殊レジス タ

へのア ク セス :

0 = 最小

1 = 読み出し

2 = 書き込み

3 = フル

0、 1、 2、 3 3 integer

C_MMU_ZONES3 メ モ リ 保護ゾーンの数 0 ~ 16 16 integer

C_MMU_PRIVILEGED_INSTR3 特権命令

0 = フル保護

1 = ス ト リ ーム命令を許可

0、 1 0 integer

C_USE_INTERRUPT 割 り 込み処理を使用

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_NON_SECURE 対応する非セキ ュ ア入力

を使用0-15 0 可 integer

C_USE_BRANCH_TARGET_CACHE3 分岐先キ ャ ッ シュ を使用 0、 1 0 integer

表 3‐19: コ ン フ ィ ギュ レーシ ョ ン パラ メ ーター (続き) 

パラ メ ーター名 機能/説明 設定可能な値デフ ォル

ト 値

ツールで割り当て

VHDL タ イプ

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド 155UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 156: MicroBlaze プロセッサ リファレンス ガイド …...MicroBlaze プロセッサ リファレンス ガイド 3 UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com 2016

第 3 章: MicroBlaze 信号イ ン ターフ ェ イスの説明

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 1integer

C_M_AXI_DP_DATA_WIDTH データ側 AXI データ幅 32 32 integer

C_M_AXI_DP_ADDR_WIDTH データ側 AXI ア ド レ ス幅 32-64 32 可 integer

C_M_AXI_DP_SUPPORTS_THREADS

データ側 AXI はス レ ッ ド

を使用0 0

integer

C_M_AXI_DP_SUPPORTS_READ 読み出し ア ク セスのため

のデータ側 AXI サポー ト1 1

integer

C_M_AXI_DP_SUPPORTS_WRITE 書き込みア ク セスのため

のデータ側 AXI サポー ト1 1

integer

C_M_AXI_DP_SUPPORTS_NARROW_BURST

データ側 AXI ナロー バー

ス ト サポー ト0 0

integer

C_M_AXI_DP_PROTOCOL データ側 AXI プロ ト コル AXI4、

AXI4LITE

AXI4

LITE可 string

C_M_AXI_DP_EXCLUSIVE_ACCESS

データ側 AXI 排他的ア ク

セス サポー ト0、 1 0

integer

C_M_AXI_IP_THREAD_ID_WIDTH

命令側 AXI ス レ ッ ド ID の幅

1 1integer

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

integer

C_M_AXI_IP_SUPPORTS_READ 読み出し ア ク セスのため

の命令側 AXI サポー ト1 1

integer

C_M_AXI_IP_SUPPORTS_WRITE 書き込みア ク セスのため

の命令側 AXI サポー ト0 0

integer

表 3‐19: コ ン フ ィ ギュ レーシ ョ ン パラ メ ーター (続き) 

パラ メ ーター名 機能/説明 設定可能な値デフ ォル

ト 値

ツールで割り当て

VHDL タ イプ

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド 156UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 157: MicroBlaze プロセッサ リファレンス ガイド …...MicroBlaze プロセッサ リファレンス ガイド 3 UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com 2016

第 3 章: MicroBlaze 信号イ ン ターフ ェ イスの説明

C_M_AXI_IP_SUPPORTS_NARROW_BURST

命令側 AXI ナロー バース

ト サポー ト0 0

integer

C_M_AXI_IP_PROTOCOL 命令側 AXI プロ ト コルAXI4LITE

AXI4

LITE

string

C_M_AXI_DC_THREAD_ID_WIDTH

データ キ ャ ッ シュ AXI ID の幅

1 1integer

C_M_AXI_DC_DATA_WIDTH データ キ ャ ッ シュ AXI データ幅

32、 64、 128、

256、 51232

integer

C_M_AXI_DC_ADDR_WIDTH データ キ ャ ッ シュ AXI アド レ ス幅

32-64 32 可integer

C_M_AXI_DC_SUPPORTS_THREADS

データ キ ャ ッ シュ AXI はス レ ッ ド を使用

0 0integer

C_M_AXI_DC_SUPPORTS_READ 読み出し ア ク セスのため

のデータ キ ャ ッ シュ AXI サポー ト

1 1integer

C_M_AXI_DC_SUPPORTS_WRITE 書き込みア ク セスのため

のデータ キ ャ ッ シュ AXI サポー ト

1 1integer

C_M_AXI_DC_SUPPORTS_NARROW_BURST

データ キ ャ ッ シュ AXI ナロー バース ト サポー ト

0 0integer

C_M_AXI_DC_SUPPORTS_USER_SIGNALS

データ キ ャ ッ シュ AXI ユーザー信号サポー ト

1 1integer

C_M_AXI_DC_PROTOCOL データ キ ャ ッ シュ AXI プロ ト コル

AXI4 AXI4string

C_M_AXI_DC_AWUSER_WIDTH データ キ ャ ッ シュ AXI ユーザー幅

5 5integer

C_M_AXI_DC_ARUSER_WIDTH データ キ ャ ッ シュ AXI ユーザー幅

5 5integer

C_M_AXI_DC_WUSER_WIDTH データ キ ャ ッ シュ AXI ユーザー幅

1 1integer

C_M_AXI_DC_RUSER_WIDTH データ キ ャ ッ シュ AXI ユーザー幅

1 1integer

C_M_AXI_DC_BUSER_WIDTH データ キ ャ ッ シュ AXI ユーザー幅

1 1integer

C_M_AXI_DC_EXCLUSIVE_ACCESS

データ キ ャ ッ シュ AXI 排他的ア ク セス サポー ト

0、 1 0integer

表 3‐19: コ ン フ ィ ギュ レーシ ョ ン パラ メ ーター (続き) 

パラ メ ーター名 機能/説明 設定可能な値デフ ォル

ト 値

ツールで割り当て

VHDL タ イプ

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド 157UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 158: MicroBlaze プロセッサ リファレンス ガイド …...MicroBlaze プロセッサ リファレンス ガイド 3 UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com 2016

第 3 章: MicroBlaze 信号イ ン ターフ ェ イスの説明

C_M_AXI_DC_USER_VALUE データ キ ャ ッ シュ AXI ユーザー値

0-31 31integer

C_M_AXI_IC_THREAD_ID_WIDTH

命令キ ャ ッ シュ AXI ID の幅

1 1integer

C_M_AXI_IC_DATA_WIDTH 命令キ ャ ッ シュ AXI デー

タ幅

32、 64、 128、

256、 51232

integer

C_M_AXI_IC_ADDR_WIDTH 命令キ ャ ッ シュ AXI デー

タ幅32 32

integer

C_M_AXI_IC_SUPPORTS_THREADS

データ キ ャ ッ シュ AXI はス レ ッ ド を使用

0 0integer

C_M_AXI_IC_SUPPORTS_READ 読み出し ア ク セスのため

の命令キ ャ ッ シュ AXI サポー ト

1 1integer

C_M_AXI_IC_SUPPORTS_WRITE 書き込みア ク セスのため

の命令キ ャ ッ シュ AXI サポー ト

0 0integer

C_M_AXI_IC_SUPPORTS_NARROW_BURST

命令キ ャ ッ シュ AXI ナロー バース ト サポー ト

0 0integer

C_M_AXI_IC_SUPPORTS_USER_SIGNALS

命令キ ャ ッ シュ AXI ユー

ザー信号サポー ト1 1

integer

C_M_AXI_IC_PROTOCOL 命令キ ャ ッ シュ AXI プロ

ト コルAXI4 AXI4

string

C_M_AXI_IC_AWUSER_WIDTH 命令キ ャ ッ シュ AXI ユー

ザー幅5 5

integer

C_M_AXI_IC_ARUSER_WIDTH 命令キ ャ ッ シュ AXI ユー

ザー幅5 5

integer

C_M_AXI_IC_WUSER_WIDTH 命令キ ャ ッ シュ AXI ユー

ザー幅1 1

integer

C_M_AXI_IC_RUSER_WIDTH 命令キ ャ ッ シュ AXI ユー

ザー幅1 1

integer

C_M_AXI_IC_BUSER_WIDTH 命令キ ャ ッ シュ AXI ユー

ザー幅1 1

integer

C_M_AXI_IC_USER_VALUE 命令キ ャ ッ シュ AXI ユー

ザー値0 ~ 31 31

integer

C_STREAM_INTERCONNECT AXI4-Stream イ ン ターコネ

ク ト を選択0、 1 0

integer

表 3‐19: コ ン フ ィ ギュ レーシ ョ ン パラ メ ーター (続き) 

パラ メ ーター名 機能/説明 設定可能な値デフ ォル

ト 値

ツールで割り当て

VHDL タ イプ

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド 158UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 159: MicroBlaze プロセッサ リファレンス ガイド …...MicroBlaze プロセッサ リファレンス ガイド 3 UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com 2016

第 3 章: MicroBlaze 信号イ ン ターフ ェ イスの説明

C_Mn_AXIS_PROTOCOL AXI4-Stream プロ ト コル GENERICGENERI

Cstring

C_Sn_AXIS_PROTOCOL AXI4-Stream プロ ト コル GENERICGENERI

Cstring

C_Mn_AXIS_DATA_WIDTH AXI4-Stream マス ター デー

タ幅32 32

該当

な し

integer

C_Sn_AXIS_DATA_WIDTH AXI4-Stream ス レーブ デー

タ幅32 32

該当

な し

integer

C_NUM_SYNC_FF_CLK リ セ ッ ト および Wakeup[0:1] の同期ステー

0- 2integer

C_NUM_SYNC_FF_CLK_IRQ 割 り 込み入力信号の同期

ステージ0- 1

integer

C_NUM_SYNC_FF_CLK_DEBUG Dbg_ シ リ アル信号の同期

ステージ0- 2

integer

C_NUM_SYNC_FF_DBG_CLK Dbg_Clk への内部同期ス

テージ0- 1

integer

1. 最下位ビ ッ ト から 7 つのビ ッ ト はすべて 0。

2. アーキテ クチャによ って指定でき るサイ ズは変わ り ます。 キ ャ ッ シ ュは、 0 から 32 までの RAMB プ リ ミ テ ィ ブを使用し ます (キ ャ ッ シ ュ サイ ズが 2048 未満の場合は 0)。

3. C_AREA_OPTIMIZED が 1 (エ リ ア) に設定されている と きは使用でき ません。

表 3‐19: コ ン フ ィ ギュ レーシ ョ ン パラ メ ーター (続き) 

パラ メ ーター名 機能/説明 設定可能な値デフ ォル

ト 値

ツールで割り当て

VHDL タ イプ

表 3‐20: パラ メ ーター C_FAMILY で使用可能な値

設定可能な値

Artix® aartix7 artix7 artix7l qartix7 qartix7l

Kintex® kintex7 kintex7l qkintex7 qkintex7l kintexu kintexuplus

Spartan® spartan7

Virtex® qvirtex7 virtex7 virtexu virtexuplus

Zynq® azynq zynq qzynq zynquplus

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド 159UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 160: MicroBlaze プロセッサ リファレンス ガイド …...MicroBlaze プロセッサ リファレンス ガイド 3 UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com 2016

第 4 章

MicroBlaze アプ リ ケーシ ョ ン  バイナ リ  イ ンターフ ェ イス

この章では、 MicroBlaze™用にアセンブ リ 言語でソ フ ト ウ ェ アを開発するのに重要なアプ リ ケーシ ョ ン バイナ リ イ

ン ターフ ェ イ ス (ABI) を説明し ます。 MicroBlaze の GNU コ ンパイ ラは、 この資料で説明されている規則に従います。

アセンブ リ プロ グ ラ ムによ って記述される コード もすべて、 コ ンパイ ラで生成されたコード と の互換性を保つため

に、 同じ規則に従います。 また、 割 り 込みおよび例外処理も手短に説明し ます。

データ型

MicroBlaze のアセンブ リ プロ グ ラ ムで使用されるデータ型は、 表 4-1にま と められています。 data8、 data16、 data32

などのデータ型が、 バイ ト 、 ハーフバイ ト 、 ワード レジス タの代わ り に使用されます。

レジス タの使用規則

MicroBlaze でのレジス タ使用規則は表 4-2にま と められています。

表 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

1. グ ローバル ポ イ ン ターでア ク セスでき る、 スモール データ エ リ アへのポ イ ン ターは data16 です。

2/4

表 4‐2: レジス タの使用規則

レジス タ 種類 SW/HW 用途

R0 専用 HW 値 0

R1 専用 SW ス タ ッ ク ポイ ン ター

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド 160UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 161: MicroBlaze プロセッサ リファレンス ガイド …...MicroBlaze プロセッサ リファレンス ガイド 3 UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com 2016

第 4章: MicroBlaze アプ リ ケーシ ョ ン バイナリ  イ ン ターフ ェ イス

MicroBlaze のアーキテ クチャは 32 個の汎用レジス タ (GPR) を定義し ます。 これらのレジス タは、 揮発性、 不揮発

性、 専用の 3 つに分類されます。

• 揮発性レジス タ (コーラーセーブ と もい う ) は、 一時的な もの と し て使用され、 関数コールの間は値を保持し ま

せん。 レジス タ R3 から R12 までは揮発性タ イプで、 R3 および R4 は、 あればコーラー フ ァ ン ク シ ョ ンに値を

返すために使用されます。 レジス タ R5 から R10 までは、 サブルーチン間のパラ メ ーター渡しに使用されます。

R2 専用 SW 読み出し専用のスモール データ エ リ ア アンカー

R3-R4 揮発性 SW 戻 り 値/暫定値

R5-R10 揮発性 SW パラ メ ーター /暫定値

R11-R12 揮発性 SW 暫定値

R13 専用 SW 読み出し -書き込みのスモール データ エ リ ア アンカー

R14 専用 HW 割 り 込みの戻 り ア ド レ ス

R15 専用 SW サブルーチンの戻 り ア ド レ ス

R16 専用 HW ト ラ ッ プ (デバッ ガー ) の戻 り ア ド レ ス

R17 専用 HW/SW 例外の戻 り ア ド レ ス

ハード ウ ェ ア例外をサポー ト する場合は HW、 そ う でなければ SW

R18 専用 SW アセンブラー /コ ンパイ ラの暫定値のため予約

R19 不揮発性 SW 関数コール全体で保存し てお く 必要があ る。 コー リ ーセーブ。

R20 専用

または

不揮発性

SW 位置独立コード (PIC) のグ ローバル オフセ ッ ト テーブル (GOT) への

ポイ ン ターを格納する ために予約。 非 PIC コード で不揮発性。 関数

コール全体で保存し てお く 必要があ る。 コー リ ーセーブ。

R21-R31 不揮発性 SW 関数コール全体で保存し てお く 必要があ る。 コー リ ーセーブ。

RPC 特殊 HW プロ グ ラ ム カ ウ ン ター

RMSR 特殊 HW マシン ステータ ス レジス タ

REAR 特殊 HW 例外ア ド レ ス レジス タ

RESR 特殊 HW 例外ステータ ス レジス タ

RFSR 特殊 HW 浮動小数点ステータ ス レジス タ

RBTR 特殊 HW 分岐先レジス タ

REDR 特殊 HW 例外データ レジス タ

RPID 特殊 HW プロセス ID レジス タ

RZPR 特殊 HW ゾーン保護レジス タ

RTLBLO 特殊 HW 変換ルッ ク アサイ ド バッ フ ァー ロ ウ レジス タ

RTLBHI 特殊 HW 変換ルッ ク アサイ ド バッ フ ァー ハイ レジス タ

RTLBX 特殊 HW 変換ルッ ク アサイ ド バッ フ ァー イ ンデッ ク ス レジス タ

RTLBSX 特殊 HW 変換ルッ ク アサイ ド バッ フ ァー検索イ ンデッ ク ス

RPVR0-12 特殊 HW プロセ ッサ バージ ョ ン レジス タ 0 から 12 まで

表 4‐2: レジス タの使用規則

レジス タ 種類 SW/HW 用途

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド 161UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 162: MicroBlaze プロセッサ リファレンス ガイド …...MicroBlaze プロセッサ リファレンス ガイド 3 UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com 2016

第 4章: MicroBlaze アプ リ ケーシ ョ ン バイナリ  イ ン ターフ ェ イス

• レジス タ R19 から R31 までは、 関数コールの間レジス タの内容を保持するので、 不揮発性レジス タ と呼ばれま

す (コー リ ーセーブ と もい う )。 コー リ ー関数は、 使用されている不揮発性レジス タに値を保存し ます。 通常、

プロ ローグ中にス タ ッ ク に保存され、 その後、 エピ ローグ中に リ ロード されます。

• 一部のレジス タは専用レジス タ と し て使用され、 プロ グ ラ マはその決められた目的以外のこ と でこのレジス タ

を使用する こ と はあ り ません。

¨ レジス タ 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 プロセ ッサ リ フ ァ レンス ガイ ド 162UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 163: MicroBlaze プロセッサ リファレンス ガイド …...MicroBlaze プロセッサ リファレンス ガイド 3 UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com 2016

第 4章: MicroBlaze アプ リ ケーシ ョ ン バイナリ  イ ン ターフ ェ イス

ス タ ッ ク規則

MicroBlaze によ って使用されている ス タ ッ ク規則は表 4-3 にま と められています。

表 4-3の赤枠で囲まれている箇所は、 コーラー関数のス タ ッ ク フ レームの一部を表し、 それ以外の箇所は、 コー

リ ー フ レーム関数を表し ています。 ス タ ッ ク フ レームの ABI 規則は、 パラ メ ーター渡し、 不揮発性レジス タの値の

保持、 関数のローカル変数のスペースの割 り 当てに関するプロ ト コルを定義し ています。

ほかのサブルーチンを呼び出すコールが含まれている関数は非 リ ーフ関数 と呼ばれます。 これらの非 リ ーフ関数は、

それ用に新たなス タ ッ ク フ レーム エ リ アを作成する必要があ り ます。 プロ グ ラ ムの実行が開始する と き、 ス タ ッ ク

ポイ ン ターの値は最大値です。 関数が呼び出されてい く と、 その値は、 ス タ ッ ク フ レームの各関数に必要なワード

数分デク リ メ ン ト し ていき ます。 コーラー関数のス タ ッ ク ポイ ン ターの値は、 常に、 コー リ ー関数よ り も大きな値

にな り ます。

表 4‐3: ス タ ッ ク規則

関数 1 が関数 2 を呼び出し、 その後、 関数 2 が関数 3 を呼び出す例を と ってみます。 それぞれのイ ン ス タ ン スでのス

タ ッ クは図 4-1のよ う にな り ます。関数 1 が関数 2 を呼び出し た後、 ス タ ッ ク ポイ ン ター (SP) の値はデク リ メ ン ト し

ます。 この SP の値は、 関数 3 のス タ ッ ク フ レーム分、 さ らにデク リ メ ン ト し ます。 関数 3 から戻る と、 この値は、

関数 2 での元の値にイ ン ク リ メ ン ト し ます。

図 4-1を見る と、 ス タ ッ ク がどのよ う に維持されているかがわか り ます。

上位ア ド レ ス

呼び出されたサブルーチンの関数パラ メ ーター (Arg n .. Arg1)

(オプシ ョ ン: 現在のプロ シージ ャから呼び出されたプロ シージ ャに

必要な引数の最大数)

古いス タ ッ ク ポイ ン ター

リ ン ク レジス タ (R15)

コー リ ー セーブ ド レジス タ (R31....R19)

(オプシ ョ ン: 現在のプロ シージ ャで使用される レジス タのみを保存)

現在のプロ シージ ャのローカル変数

(オプシ ョ ン: プロ シージ ャで定義されている ローカル変数の場合に

のみあ る )

フ ァ ン ク シ ョ ン パラ メ ーター (Arg n .. Arg 1)

(オプシ ョ ン: 現在のプロ シージ ャから呼び出されたプロ シージ ャに

必要な引数の最大数)

新しいス タ ッ ク ポイ ン ター

リ ン ク レジス タ

低位ア ド レ ス

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド 163UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 164: MicroBlaze プロセッサ リファレンス ガイド …...MicroBlaze プロセッサ リファレンス ガイド 3 UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com 2016

第 4章: MicroBlaze アプ リ ケーシ ョ ン バイナリ  イ ン ターフ ェ イス

呼び出し規則

コーラー関数は、 レジス タ (R5 から R10) を使用するか、 それ自体のス タ ッ ク フ レームで、 コー リ ー関数にパラ メ ー

ターを渡し ます。 コー リ ーに渡されたパラ メ ーターを格納するのに、 コー リ ーはコーラーのス タ ッ ク エ リ アを使用

し ます。

図 4-1を参照し て く ださい。 関数 2 のパラ メ ーターは R5 から R10 までのレジス タか、 または関数 1 に割 り 当て られ

ている ス タ ッ ク フ レームに格納されています。

関数 2 に 7 つ以上の整数パラ メ ーターがあ る場合、 最初の 6 つは R5 から R10 までのレジス タで渡すこ と ができ ます

が、 その後のパラ メ ーターは、 SP + 28 のオフセ ッ ト から、 関数 1 に割 り 当て られている ス タ ッ ク フ レームで渡す必

要があ り ます。

X-Ref Target - Figure 4-1

図 4‐1: ス タ ッ ク  フ レーム

ハイ メモリ

ロウ メモリ

SP

SP

SP

SP

関数 1 関数 1 関数 1 関数 1

関数 2 関数 2 関数 2

関数 3

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド 164UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 165: MicroBlaze プロセッサ リファレンス ガイド …...MicroBlaze プロセッサ リファレンス ガイド 3 UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com 2016

第 4章: MicroBlaze アプ リ ケーシ ョ ン バイナリ  イ ン ターフ ェ イス

メ モ リ  モデル

MicroBlaze の メ モ リ モデルは、 スモール データ エ リ ア、 データ エ リ ア、 共通の未初期化エ リ ア、 リ テ ラル/定数と

い う 4 つの箇所にデータ を分類し ます。

スモール データ  エ リ ア

グ ローバルな初期化された変数でサイ ズの小さ な ものが、 このエ リ アに格納されます。 変数を スモール データ エ リ

アに格納するかど う か決め手 と なるサイ ズは、 MicroBlaze の C コ ンパイ ラ (mb-gcc) で 8 バイ ト に設定されています

が、 コ ンパイ ラでコマン ド ラ イ ン オプシ ョ ンを指定する と変更でき ます。 このオプシ ョ ンの詳細は、 『エンベデッ

ド システム ツール リ フ ァ レ ン ス マニュ アル』 の 「GNU コ ンパイ ラ ツール」 の章で説明されています。 スモール

データ エ リ アには 64 KB の メ モ リ が割 り 当て られています。 このエ リ アには、読み出し -書き込みのスモール データ

エ リ ア アンカー (R13) および 16 ビ ッ ト のオフセ ッ ト を使用し て、 ア ク セス し ます。 こ のエ リ アに小さ な変数を割 り

当ててお く と、 グ ローバル変数にア ク セスするためのコード に IMM命令をあま り 追加せずに済みます。 スモール

データ エ リ アの変数には、 絶対ア ド レ ス を使用し てア ク セスする こ と もでき ます。

データ  エ リ ア

比較的大き な初期化された変数がデータ エ リ アに割 り 当て られます。 こ のエ リ アには、 コ ンパイ ラに指定する コマ

ン ド ラ イ ンのオプシ ョ ンによ って異な り ますが、 読み出し -書き込みの SDA アンカー R13、 または絶対ア ド レ ス を

使用し てア ク セスでき ます。

共通の未初期化エ リ ア

初期化されていないグ ローバル変数は共通エ リ アに割 り 当て られ、 絶対ア ド レ ス、 または読み出し -書き込みのス

モール データ エ リ ア アンカー (R13) を使用し て、 ア ク セスでき ます。

リ テ ラルまたは定数

定数は、 読み出し専用のスモール データ エ リ ア (SDA) に格納され、 読み出し専用の SDA アンカー R2 を使用し てア

ク セス し ます。

コ ンパイ ラは、 ベース ポイ ン ターと し て動作する適切なグ ローバル ポイ ン ターを生成し ます。 SDA アンカーの実際

の値は、 最終の リ ン ク ステージで、 リ ンカーによ って定められます。 メ モ リ のさ まざまなセ ク シ ョ ンに関し ては、

『エンベデッ ド システム ツール リ フ ァ レ ン ス マニュ アル』 の 「MicroBlaze リ ンカー ス ク リ プ ト 」 のセ ク シ ョ ンを参

照し て く ださい。 コ ンパイ ラは、 コマン ド ラ イ ンのオプシ ョ ンに従って適切なセ ク シ ョ ンを生成し ます。 これらの

オプシ ョ ンの詳細は、 『エンベデッ ド システム ツール リ フ ァ レ ン ス マニュ アル』 の 「GNU コ ンパイ ラ ツール」 の

章を参照し て く ださい。

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド 165UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 166: MicroBlaze プロセッサ リファレンス ガイド …...MicroBlaze プロセッサ リファレンス ガイド 3 UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com 2016

第 4章: MicroBlaze アプ リ ケーシ ョ ン バイナリ  イ ン ターフ ェ イス

割り込み、 ブレーク、 例外処理

MicroBlaze は、 表 4-4にあ る よ う に、 割 り 込みおよび例外処理のためのア ド レ ス ロ ケーシ ョ ンを想定し ます。 これら

のロ ケーシ ョ ンで、 コード は適切なハン ド ラーにジャ ンプする よ う に記述されています。

これらのロ ケーシ ョ ンで予期される コード は、 次のよ う にな り ます。 crt0.o 初期化フ ァ イルは、 mb-gcc コ ンパイ

ラによ り 、 リ ンキングのため mb-ld に渡されます。 こ のフ ァ イルは、 例外ハン ド ラーに適切なア ド レ ス を設定し ま

す。

次のコード は、 例外、 ブレーク、 割 り 込みハン ド ラーに制御を渡すコード で、 C_BASE_VECTORS にはデフ ォル ト

の 0x00000000 が設定されている もの と し ます。

0x00: bri _start10x04: nop0x08: imm high bits of address (user exception handler)0x0c: bri _exception_handler0x10: imm high bits of address (interrupt handler)0x14: bri _interrupt_handler0x18: imm high bits of address (break handler)0x1c: bri low bits of address (break handler)0x20: imm high bits of address (HW exception handler0x24: bri _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 と い う ラベルで始ま り ます。

表 4‐4: 割り込みおよび例外処理

イベン ト ハー ド ウ ェ アがジャ ンプする位置 ソ フ ト ウェ ア ラベル

開始/ リ セ ッ ト C_BASE_VECTORS + 0x0 _start

ユーザー例外 C_BASE_VECTORS + 0x8 _exception_handler

割 り 込み C_BASE_VECTORS + 0x101

1. 低レ イ テンシ割 り 込みモード の場合、 ベク ター ア ド レ スは割 り 込みコ ン ト ローラーによ り 提供されます。

_interrupt_handler

ブレーク (HW/SW) C_BASE_VECTORS + 0x18 -

ハード ウ ェア例外 C_BASE_VECTORS + 0x20 _hw_exception_handler

今後のサポー ト のためザイ リ ン ク スによ

り 予約

C_BASE_VECTORS + 0x28 -

C_BASE_VECTORS + 0x4F-

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド 166UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 167: MicroBlaze プロセッサ リファレンス ガイド …...MicroBlaze プロセッサ リファレンス ガイド 3 UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com 2016

第 4章: MicroBlaze アプ リ ケーシ ョ ン バイナリ  イ ン ターフ ェ イス

現在の MicroBlaze システムには、 割 り 込み、 ブレーク、 ユーザー例外処理に対し ダ ミ ー ルーチンがあ り 、 ユーザー

が変更でき ます。 これらのルーチンを上書き し、 ユーザーの割 り 込みおよび例外ハン ド ラーを リ ン クするには、 特

定の属性を使用し てハン ド ラー コード を定義する必要があ り ます。

使用されている レジス タ を格納および復帰させ、 ハン ド ラーから戻る ための rtid 命令を省 く コード を コ ンパイ ラ

が生成する よ う に、 interrupt_handler と い う 属性を使用し て、 割 り 込みハン ド ラー コード を定義する必要があ

り ます。

void function_name() __attribute__((interrupt_handler));

使用されている レジス タ を格納および復帰させ、 ハン ド ラーから戻る ための rtid 命令を省 く コード を コ ンパイ ラが生成する よ う に、 break_handler と い う 属性を使用し て、 ブレーク ハン ド ラー コード を定義する必要があ り ます。

void function_name() __attribute__((break_handler));

割 り 込みハン ド ラーの属性の使用方法や構文に関し ては、 『エンベデッ ド システム ツール リ フ ァ レ ン ス マニュ ア

ル』 の 「GNU コ ンパイ ラ ツール」 の章を参照し て く ださい。

XSDB (Xilinx System Debugger) または SDK (Software Development Kit) でソ フ ト ウ ェ ア ブレーク ポイ ン ト が使用される

場合は、 ブレーク (HW/SW) ア ド レ ス ロ ケーシ ョ ンは、 ソ フ ト ウ ェ ア ブレーク ポイ ン ト を処理する ために予約され

ます。

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド 167UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 168: MicroBlaze プロセッサ リファレンス ガイド …...MicroBlaze プロセッサ リファレンス ガイド 3 UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com 2016

第 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

Mem(x) ア ド レ ス x での メ モ リ ロ ケーシ ョ ン

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド 168UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 169: MicroBlaze プロセッサ リファレンス ガイド …...MicroBlaze プロセッサ リファレンス ガイド 3 UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com 2016

第 5章: MicroBlaze 命令セ ッ ト  アーキテ クチャ

FSLx 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 な ら - を返す

表 5‐1: 記号の説明 (続き)

記号 意味

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド 169UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 170: MicroBlaze プロセッサ リファレンス ガイド …...MicroBlaze プロセッサ リファレンス ガイド 3 UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com 2016

第 5章: MicroBlaze 命令セ ッ ト  アーキテ クチャ

フ ォーマ ッ ト

MicroBlaze はタ イプ A およびタ イプ B と い う 2 つの命令フ ォーマ ッ ト を使用し ます。

タ イプ A

タ イプ A はレジス タ間の命令に使用されます。 オペコード 、 デステ ィ ネーシ ョ ン レジス タ を 1 つ、 ソース レジス タ を 2 つ含んでいます。

タ イプ B

タ イプ B はレジス タ と即値の命令に使用されます。 オペコー ド、 デステ ィ ネーシ ョ ン レジス タ を 1 つ、ソース レジス タ を 1 つ、 ソースの 16 ビ ッ ト の即値を含んでいます。

命令

このセ ク シ ョ ンでは MicroBlaze の命令について説明し ます。 命令はアルフ ァベッ ト 順に リ ス ト されています。 各命令に対し、 ニーモニ ッ ク、 エン コーデ ィ ング、 説明、 セマンテ ィ ク スの擬似コード、 変更される レジス タの リ ス ト がザイ リ ン ク スから提供されています。

オペコー ドデステ ィ ネーシ ョ

ン  レジス タソース レジス タ  A ソース レジス タ  B 0 0 0 0 0 0 0 0 0 0 0

0 6 11 16 21 31

オペコー ドデステ ィ ネーシ ョ

ン  レジス タソース レジス タ  A 即値

0 6 11 16 31

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド 170UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 171: MicroBlaze プロセッサ リファレンス ガイド …...MicroBlaze プロセッサ リファレンス ガイド 3 UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com 2016

第 5章: MicroBlaze 命令セ ッ ト  アーキテ クチャ

add Arithmetic Add

説明レジス タ 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 thenMSR[C] CarryOut

変更されるレジス タ• rD

• MSR[C]

レ イテンシ1 サイ クル

注記命令オペコード の C ビ ッ ト は、 MSB のキ ャ リ ー ビ ッ ト と は同じではあ り ません。

“add r0, r0, r0” (= 0x00000000) 命令は、 コ ンパイ ラでは決し て使用されず、 通常、 メ モ リ が初期化されていない こ と を示し ます。 無効な命令例外を使用し ている場合は、 MicroBlaze のパラ メ ーターを C_OPCODE_0x0_ILLEGAL=1 に設定し て、 これらの命令を補足でき ます。

add rD、 rA、 rB 加算

addc rD、 rA、 rB キ ャ リ ー付き加算

addk rD、 rA、 rB 加算およびキ ャ リ ー保持

addkc rD、 rA、 rB キ ャ リ ー付き加算およびキ ャ リ ー保持

0 0 0 K C 0 rD rA rB 0 0 0 0 0 0 0 0 0 0 0

0 6 1

1

1

6

2

1

3

1

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド 171UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 172: MicroBlaze プロセッサ リファレンス ガイド …...MicroBlaze プロセッサ リファレンス ガイド 3 UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com 2016

第 5章: MicroBlaze 命令セ ッ ト  アーキテ クチャ

addi Arithmetic Add Immediate

説明レジス タ 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 thenMSR[C] CarryOut

変更されるレジス タ• rD

• MSR[C]

レ イテンシ

1 サイ クル

注記命令オペコード の C ビ ッ ト は、 MSB のキ ャ リ ー ビ ッ ト と は同じではあ り ません。

デフ ォル ト で、 タ イプ B 命令は 16 ビ ッ ト の IMM フ ィ ール ド 値を取 り 込み、 それを 32 ビ ッ ト に符号拡張し て、 即値オぺラ ン ド と し て使用し ます。 この動作は、 IMM 命令を使用し て タ イプ B 命令を先行させるこ と で、 上書きでき ます。 32 ビ ッ ト の即値の使用に関し ては、 213 ページの 「imm」 を参照し て く だ さい。

addi rD、 rA、 IMM 即値加算

addic rD、 rA、 IMM キ ャ リ ー付き即値加算

addik rD、 rA、 IMM 即値加算およびキ ャ リ ー保持

addikc rD、 rA、 IMM キ ャ リ ー付き即値加算およびキ ャ リ ー保持

0 0 1 K C 0 rD rA IMM

0 6 1

1

1

6

3

1

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド 172UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 173: MicroBlaze プロセッサ リファレンス ガイド …...MicroBlaze プロセッサ リファレンス ガイド 3 UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com 2016

第 5章: MicroBlaze 命令セ ッ ト  アーキテ クチャ

and Logical AND

説明レジス タ rA の内容がレジス タ rB の内容 と一緒に AND されていて、 その結果がレジス タ rD に配置されます。

擬似コー ド(rD) (rA) (rB)

変更されるレジス タ• rD

レ イテンシ

1 サイ クル

and rD、 rA、 rB

1 0 0 0 0 1 rD rA rB 0 0 0 0 0 0 0 0 0 0 0

0 6 1

1

1

6

2

1

3

1

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド 173UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 174: MicroBlaze プロセッサ リファレンス ガイド …...MicroBlaze プロセッサ リファレンス ガイド 3 UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com 2016

第 5章: MicroBlaze 命令セ ッ ト  アーキテ クチャ

andi Logial AND with Immediate

説明レジス タ rA の内容が IMM フ ィ ール ド の値 (32 ビ ッ ト に符号拡張された もの) と一緒に AND されていて、その結果がレジス タ rD に配置されます。

擬似コー ド(rD) (rA) sext(IMM)

変更されるレジス タ• rD

レ イテンシ1 サイ クル

注記デフ ォル ト で、 タ イプ B 命令は 16 ビ ッ ト の IMM フ ィ ール ド 値を取 り 込み、 それを 32 ビ ッ ト に符号拡張し て、 即値オぺラ ン ド と し て使用し ます。 この動作は、 IMM 命令を使用し て タ イプ B 命令を先行させるこ と で、 上書きでき ます。 32 ビ ッ ト の即値の使用に関し ては、 213 ページの 「imm」 を参照し て く だ さい。

andi rD、 rA、 IMM

1 0 1 0 0 1 rD rA IMM

0 6 1

1

1

6

3

1

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド 174UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 175: MicroBlaze プロセッサ リファレンス ガイド …...MicroBlaze プロセッサ リファレンス ガイド 3 UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com 2016

第 5章: MicroBlaze 命令セ ッ ト  アーキテ クチャ

andn Logical AND NOT

説明レジス タ rA の内容がレジス タ rB の内容の論理補数と一緒に AND されていて、 その結果がレジス タ rD に配置されます。

擬似コー ド(rD) (rA) (rB)

変更されるレジス タ• rD

レ イテンシ1 サイ クル

andn rD、 rA、 rB

1 0 0 0 1 1 rD rA rB 0 0 0 0 0 0 0 0 0 0 0

0 6 1

1

1

6

2

1

3

1

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド 175UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 176: MicroBlaze プロセッサ リファレンス ガイド …...MicroBlaze プロセッサ リファレンス ガイド 3 UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com 2016

第 5章: MicroBlaze 命令セ ッ ト  アーキテ クチャ

andni Logical AND NOT with Immediate

説明IMM フ ィ ール ド は 32 ビ ッ ト に符号拡張されています。 レジス タ rA の内容が拡張された IMM フ ィ ール ド の論理補数と一緒に AND されていて、 その結果がレジス タ rD に配置されます。

擬似コー ド(rD) (rA) (sext(IMM))

変更されるレジス タ• rD

レ イテンシ

1 サイ クル

注記デフ ォル ト で、 タ イプ B 命令は 16 ビ ッ ト の IMM フ ィ ール ド値を取 り 込み、 それを 32 ビ ッ ト に符号拡張し て、 即値オぺラ ン ド と し て使用し ます。 この動作は、 IMM 命令を使用し て タ イプ B 命令を先行させる こ と で、 上書きでき ます。 32 ビ ッ ト の即値の使用に関し ては、 213 ページの 「imm」 を参照し て く だ さい。

andni rD、 rA、 IMM

1 0 1 0 1 1 rD rA IMM

0 6 1

1

1

6

3

1

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド 176UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 177: MicroBlaze プロセッサ リファレンス ガイド …...MicroBlaze プロセッサ リファレンス ガイド 3 UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com 2016

第 5章: MicroBlaze 命令セ ッ ト  アーキテ クチャ

beq Branch if Equal

説明rA が 0 な らば、 rB のオフセ ッ ト 値にあ る命令に分岐し ます。 分岐先は、 ア ド レ ス PC + rB にあ る命令にな り ます。

ニーモニ ッ ク beqd は D ビ ッ ト をセ ッ ト し ます。 D ビ ッ ト は、 分岐遅延ス ロ ッ ト があ るかないかを判断します。 D ビ ッ ト がセ ッ ト されている場合、 遅延ス ロ ッ ト があ り 、 分岐の後に続 く 命令 (すなわち分岐遅延ス ロ ッ ト にあ る命令) は、 分岐先の命令を実行する前に実行完了でき ます。 D ビ ッ ト がセ ッ ト されていない場合は、 遅延ス ロ ッ ト はな く 、 分岐後に実行される命令は、 分岐先の命令にな り ます。

擬似コー ドIf rA = 0 thenPC PC + rB

elsePC PC + 4

if D = 1 thenallow following instruction to complete execution

変更されるレジス タ• PC

レ イテンシ• 1 サイ クル (分岐し ていない場合)

• 2 サイ クル (分岐し ていて D ビ ッ ト がセ ッ ト されている場合)

• 3 サイ クル (分岐し ていて D ビ ッ ト がセ ッ ト されていない場合)

注記遅延ス ロ ッ ト は、 IMM、 分岐、 またはブレーク の命令で使用する こ と はでき ません。 割 り 込みおよび外部ハード ウ ェ ア ブレークは、 遅延ス ロ ッ ト の分岐が完了する まで先送 り されます。

beq rA、 rB 等し い場合は分岐

beqd rA、 rB 遅延を含めて等し い場合は分岐

1 0 0 1 1 1 D 0 0 0 0 rA rB 0 0 0 0 0 0 0 0 0 0 0

0 6 1

1

1

6

2

1

3

1

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド 177UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 178: MicroBlaze プロセッサ リファレンス ガイド …...MicroBlaze プロセッサ リファレンス ガイド 3 UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com 2016

第 5章: MicroBlaze 命令セ ッ ト  アーキテ クチャ

beqi Branch Immediate if Equal

説明rA が 0 な らば、 IMM のオフセ ッ ト 値にあ る命令に分岐し ます。 分岐先は、 ア ド レ ス PC + IMM にあ る命令にな り ます。

ニーモニ ッ ク beqid は D ビ ッ ト をセ ッ ト し ます。 D ビ ッ ト は、 分岐遅延ス ロ ッ ト があ るかないかを判断し ます。 D ビ ッ ト がセ ッ ト されている場合、 遅延ス ロ ッ ト があ り 、 分岐の後に続 く 命令 (すなわち分岐遅延ス ロ ッ ト にあ る命令) は、 分岐先の命令を実行する前に実行完了でき ます。 D ビ ッ ト がセ ッ ト されていない場合は、 遅延ス ロ ッ ト はな く 、 分岐後に実行される命令は、 分岐先の命令にな り ます。

擬似コー ドIf rA = 0 thenPC PC + sext(IMM)

elsePC PC + 4

if D = 1 thenallow following instruction to complete execution

変更されるレジス タ• PC

レ イテンシ• 1 サイ クル (分岐し ていない、 または正し く 分岐予測される場合)

• 2 サイ クル (分岐し ていて D ビ ッ ト がセ ッ ト されている場合)

• 3 サイ クル (分岐し ていて D ビ ッ ト がセ ッ ト されていない場合、 または C_AREA_OPTIMIZED=0 で分岐予測が間違っている場合)

• 7 ~ 9 サイ クル (C_AREA_OPTIMIZED=2 で分岐予測が間違っている場合)

注記:デフ ォル ト で、 タ イプ B 命令は 16 ビ ッ ト の IMM フ ィ ール ド 値を取 り 込み、 それを 32 ビ ッ ト に符号拡張し て、 即値オぺラ ン ド と し て使用し ます。 この動作は、 IMM 命令を使用し て タ イプ B 命令を先行させるこ と で、 上書きでき ます。 32 ビ ッ ト の即値の使用に関し ては、 213 ページの 「imm」 を参照し て く だ さい。

遅延ス ロ ッ ト は、 IMM、 分岐、 またはブレーク の命令で使用する こ と はでき ません。 割 り 込みおよび外部ハード ウ ェ ア ブレークは、 遅延ス ロ ッ ト の分岐が完了する まで先送 り されます。

beqi rA、 IMM 等し い場合は即値分岐

beqid rA、 IMM 遅延を含めて等し い場合は即値分岐

1 0 1 1 1 1 D 0 0 0 0 rA IMM

0 6 1

1

1

6

3

1

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド 178UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 179: MicroBlaze プロセッサ リファレンス ガイド …...MicroBlaze プロセッサ リファレンス ガイド 3 UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com 2016

第 5章: MicroBlaze 命令セ ッ ト  アーキテ クチャ

bge Branch if Greater or Equal

説明rA が 0 以上な らば、 rB のオフセ ッ ト 値にあ る命令に分岐し ます。 分岐先は、 ア ド レ ス PC + rB にあ る命令にな り ます。

ニーモニ ッ ク bged は D ビ ッ ト をセ ッ ト し ます。 D ビ ッ ト は、 分岐遅延ス ロ ッ ト があ るかないかを判断します。 D ビ ッ ト がセ ッ ト されている場合、 遅延ス ロ ッ ト があ り 、 分岐の後に続 く 命令 (すなわち分岐遅延ス ロ ッ ト にあ る命令) は、 分岐先の命令を実行する前に実行完了でき ます。 D ビ ッ ト がセ ッ ト されていない場合は、 遅延ス ロ ッ ト はな く 、 分岐後に実行される命令は、 分岐先の命令にな り ます。

擬似コー ドIf rA >= 0 thenPC PC + rB

elsePC PC + 4

if D = 1 thenallow following instruction to complete execution

変更されるレジス タ• PC

レ イテンシ• 1 サイ クル (分岐し ていない場合)

• 2 サイ クル (分岐し ていて D ビ ッ ト がセ ッ ト されている場合)

• 3 サイ クル (分岐し ていて D ビ ッ ト がセ ッ ト されていない場合)

注記遅延ス ロ ッ ト は、 IMM、 分岐、 またはブレーク の命令で使用する こ と はでき ません。 割 り 込みおよび外部ハード ウ ェ ア ブレークは、 遅延ス ロ ッ ト の分岐が完了する まで先送 り されます。

bge rA、 rB その値以上の場合は分岐

bged rA、 rB 遅延を含めてその値以上の場合は分岐

1 0 0 1 1 1 D 0 1 0 1 rA rB 0 0 0 0 0 0 0 0 0 0 0

0 6 1

1

1

6

2

1

3

1

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド 179UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 180: MicroBlaze プロセッサ リファレンス ガイド …...MicroBlaze プロセッサ リファレンス ガイド 3 UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com 2016

第 5章: MicroBlaze 命令セ ッ ト  アーキテ クチャ

bgei Branch Immediate if Greater or Equal

説明rA が 0 以上な らば、 IMM のオフセ ッ ト 値にあ る命令に分岐し ます。 分岐先は、 ア ド レ ス PC + IMM にある命令にな り ます。

ニーモニ ッ ク bgeid は D ビ ッ ト をセ ッ ト し ます。 D ビ ッ ト は、 分岐遅延ス ロ ッ ト があ るかないかを判断し ます。 D ビ ッ ト がセ ッ ト されている場合、 遅延ス ロ ッ ト があ り 、 分岐の後に続 く 命令 (すなわち分岐遅延ス ロ ッ ト にあ る命令) は、 分岐先の命令を実行する前に実行完了でき ます。 D ビ ッ ト がセ ッ ト されていない場合は、 遅延ス ロ ッ ト はな く 、 分岐後に実行される命令は、 分岐先の命令にな り ます。

擬似コー ドIf rA >= 0 thenPC PC + sext(IMM)

elsePC PC + 4

if D = 1 thenallow following instruction to complete execution

変更されるレジス タ• PC

レ イテンシ• 1 サイ クル (分岐し ていない、 または正し く 分岐予測される場合)

• 2 サイ クル (分岐し ていて D ビ ッ ト がセ ッ ト されている場合)

• 3 サイ クル (分岐し ていて D ビ ッ ト がセ ッ ト されていない場合、 または C_AREA_OPTIMIZED=0 で分岐予測が間違っている場合)

• 7 ~ 9 サイ クル (C_AREA_OPTIMIZED=2 で分岐予測が間違っている場合)

注記:デフ ォル ト で、 タ イプ B 命令は 16 ビ ッ ト の IMM フ ィ ール ド 値を取 り 込み、 それを 32 ビ ッ ト に符号拡張し て、 即値オぺラ ン ド と し て使用し ます。 この動作は、 IMM 命令を使用し て タ イプ B 命令を先行させるこ と で、 上書きでき ます。 32 ビ ッ ト の即値の使用に関し ては、 213 ページの 「imm」 を参照し て く だ さい。

遅延ス ロ ッ ト は、 IMM、 分岐、 またはブレーク の命令で使用する こ と はでき ません。 割 り 込みおよび外部ハード ウ ェ ア ブレークは、 遅延ス ロ ッ ト の分岐が完了する まで先送 り されます。

bgei rA、 IMM その値以上の場合は即値分岐

bgeid rA、 IMM 遅延を含めてその値以上の場合は即値分岐

1 0 1 1 1 1 D 0 1 0 1 rA IMM

0 6 1

1

1

6

3

1

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド 180UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 181: MicroBlaze プロセッサ リファレンス ガイド …...MicroBlaze プロセッサ リファレンス ガイド 3 UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com 2016

第 5章: MicroBlaze 命令セ ッ ト  アーキテ クチャ

bgt Branch if Greater Than

説明rA が 0 よ り 大き ければ、 rB のオフセ ッ ト 値にあ る命令に分岐し ます。 分岐先は、 ア ド レ ス PC + rB にある命令にな り ます。

ニーモニ ッ ク bgtd は D ビ ッ ト をセ ッ ト し ます。 D ビ ッ ト は、 分岐遅延ス ロ ッ ト があ るかないかを判断します。 D ビ ッ ト がセ ッ ト されている場合、 遅延ス ロ ッ ト があ り 、 分岐の後に続 く 命令 (すなわち分岐遅延ス ロ ッ ト にあ る命令) は、 分岐先の命令を実行する前に実行完了でき ます。 D ビ ッ ト がセ ッ ト されていない場合は、 遅延ス ロ ッ ト はな く 、 分岐後に実行される命令は、 分岐先の命令にな り ます。

擬似コー ドIf rA > 0 thenPC PC + rB

elsePC PC + 4

if D = 1 thenallow following instruction to complete execution

変更されるレジス タ• PC

レ イテンシ• 1 サイ クル (分岐し ていない場合)

• 2 サイ クル (分岐し ていて D ビ ッ ト がセ ッ ト されている場合)

• 3 サイ クル (分岐し ていて D ビ ッ ト がセ ッ ト されていない場合)

注記遅延ス ロ ッ ト は、 IMM、 分岐、 またはブレーク の命令で使用する こ と はでき ません。 割 り 込みおよび外部ハード ウ ェ ア ブレークは、 遅延ス ロ ッ ト の分岐が完了する まで先送 り されます。

bgt rA、 rB その値よ り 大きい場合は分岐

bgtd rA、 rB 遅延を含めてその値よ り 大きい場合は分岐

1 0 0 1 1 1 D 0 1 0 0 rA rB 0 0 0 0 0 0 0 0 0 0 0

0 6 1

1

1

6

2

1

3

1

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド 181UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 182: MicroBlaze プロセッサ リファレンス ガイド …...MicroBlaze プロセッサ リファレンス ガイド 3 UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com 2016

第 5章: MicroBlaze 命令セ ッ ト  アーキテ クチャ

bgti Branch Immediate if Greater Than

説明rA が 0 よ り 大き ければ、 IMM のオフセ ッ ト 値にあ る命令に分岐し ます。 分岐先は、 ア ド レ ス PC + IMM にあ る命令にな り ます。

ニーモニ ッ ク bgtid は D ビ ッ ト をセ ッ ト し ます。 D ビ ッ ト は、 分岐遅延ス ロ ッ ト があ るかないかを判断します。 D ビ ッ ト がセ ッ ト されている場合、 遅延ス ロ ッ ト があ り 、 分岐の後に続 く 命令 (すなわち分岐遅延ス ロ ッ ト にあ る命令) は、 分岐先の命令を実行する前に実行完了でき ます。 D ビ ッ ト がセ ッ ト されていない場合は、 遅延ス ロ ッ ト はな く 、 分岐後に実行される命令は、 分岐先の命令にな り ます。

擬似コー ドIf rA > 0 thenPC PC + sext(IMM)

elsePC PC + 4

if D = 1 thenallow following instruction to complete execution

変更されるレジス タ• PC

レ イテンシ• 1 サイ クル (分岐し ていない、 または正し く 分岐予測される場合)

• 2 サイ クル (分岐し ていて D ビ ッ ト がセ ッ ト されている場合)

• 3 サイ クル (分岐し ていて D ビ ッ ト がセ ッ ト されていない場合、 または C_AREA_OPTIMIZED=0 で分岐予測が間違っている場合)

• 7 ~ 9 サイ クル (C_AREA_OPTIMIZED=2 で分岐予測が間違っている場合)

注記:デフ ォル ト で、 タ イプ B 命令は 16 ビ ッ ト の IMM フ ィ ール ド 値を取 り 込み、 それを 32 ビ ッ ト に符号拡張し て、 即値オぺラ ン ド と し て使用し ます。 この動作は、 IMM 命令を使用し て タ イプ B 命令を先行させるこ と で、 上書きでき ます。 32 ビ ッ ト の即値の使用に関し ては、 213 ページの 「imm」 を参照し て く だ さい。

遅延ス ロ ッ ト は、 IMM、 分岐、 またはブレーク の命令で使用する こ と はでき ません。 割 り 込みおよび外部ハード ウ ェ ア ブレークは、 遅延ス ロ ッ ト の分岐が完了する まで先送 り されます。

bgti rA、 IMM その値よ り 大きい場合は即値分岐

bgtid rA、 IMM 遅延を含めてその値よ り 大きい場合は即値分岐

1 0 1 1 1 1 D 0 1 0 0 rA IMM

0 6 1

1

1

6

3

1

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド 182UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 183: MicroBlaze プロセッサ リファレンス ガイド …...MicroBlaze プロセッサ リファレンス ガイド 3 UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com 2016

第 5章: MicroBlaze 命令セ ッ ト  アーキテ クチャ

ble Branch if Less or Equal

説明rA が 0 以下な らば、 rB のオフセ ッ ト 値にあ る命令に分岐し ます。 分岐先は、 ア ド レ ス PC + rB にあ る命令にな り ます。

ニーモニ ッ ク bled は D ビ ッ ト をセ ッ ト し ます。 D ビ ッ ト は、 分岐遅延ス ロ ッ ト があ るかないかを判断します。 D ビ ッ ト がセ ッ ト されている場合、 遅延ス ロ ッ ト があ り 、 分岐の後に続 く 命令 (すなわち分岐遅延ス ロ ッ ト にあ る命令) は、 分岐先の命令を実行する前に実行完了でき ます。 D ビ ッ ト がセ ッ ト されていない場合は、 遅延ス ロ ッ ト はな く 、 分岐後に実行される命令は、 分岐先の命令にな り ます。

擬似コー ドIf rA <= 0 thenPC PC + rB

elsePC PC + 4

if D = 1 thenallow following instruction to complete execution

変更されるレジス タ• PC

レ イテンシ• 1 サイ クル (分岐し ていない場合)

• 2 サイ クル (分岐し ていて D ビ ッ ト がセ ッ ト されている場合)

• 3 サイ クル (分岐し ていて D ビ ッ ト がセ ッ ト されていない場合)

注記遅延ス ロ ッ ト は、 IMM、 分岐、 またはブレーク の命令で使用する こ と はでき ません。 割 り 込みおよび外部ハード ウ ェ ア ブレークは、 遅延ス ロ ッ ト の分岐が完了する まで先送 り されます。

ble rA、 rB その値以下の場合は分岐

bled rA、 rB 遅延を含めてその値以下の場合は分岐

1 0 0 1 1 1 D 0 0 1 1 rA rB 0 0 0 0 0 0 0 0 0 0 0

0 6 1

1

1

6

2

1

3

1

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド 183UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 184: MicroBlaze プロセッサ リファレンス ガイド …...MicroBlaze プロセッサ リファレンス ガイド 3 UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com 2016

第 5章: MicroBlaze 命令セ ッ ト  アーキテ クチャ

blei Branch Immediate if Less or Equal

説明rA が 0 以下な らば、 IMM のオフセ ッ ト 値にあ る命令に分岐し ます。 分岐先は、 ア ド レ ス PC + IMM にある命令にな り ます。

ニーモニ ッ ク bleid は D ビ ッ ト をセ ッ ト し ます。 D ビ ッ ト は、 分岐遅延ス ロ ッ ト があ るかないかを判断します。 D ビ ッ ト がセ ッ ト されている場合、 遅延ス ロ ッ ト があ り 、 分岐の後に続 く 命令 (すなわち分岐遅延ス ロ ッ ト にあ る命令) は、 分岐先の命令を実行する前に実行完了でき ます。 D ビ ッ ト がセ ッ ト されていない場合は、 遅延ス ロ ッ ト はな く 、 分岐後に実行される命令は、 分岐先の命令にな り ます。

擬似コー ドIf rA <= 0 thenPC PC + sext(IMM)

elsePC PC + 4

if D = 1 thenallow following instruction to complete execution

変更されるレジス タ• PC

レ イテンシ• 1 サイ クル (分岐し ていない、 または正し く 分岐予測される場合)

• 2 サイ クル (分岐し ていて D ビ ッ ト がセ ッ ト されている場合)

• 3 サイ クル (分岐し ていて D ビ ッ ト がセ ッ ト されていない場合、 または C_AREA_OPTIMIZED=0 で分岐予測が間違っている場合)

• 7 ~ 9 サイ クル (C_AREA_OPTIMIZED=2 で分岐予測が間違っている場合)

注記:デフ ォル ト で、 タ イプ B 命令は 16 ビ ッ ト の IMM フ ィ ール ド 値を取 り 込み、 それを 32 ビ ッ ト に符号拡張し て、 即値オぺラ ン ド と し て使用し ます。 この動作は、 IMM 命令を使用し て タ イプ B 命令を先行させるこ と で、 上書きでき ます。 32 ビ ッ ト の即値の使用に関し ては、 213 ページの 「imm」 を参照し て く だ さい。

遅延ス ロ ッ ト は、 IMM、 分岐、 またはブレーク の命令で使用する こ と はでき ません。 割 り 込みおよび外部ハード ウ ェ ア ブレークは、 遅延ス ロ ッ ト の分岐が完了する まで先送 り されます。

blei rA、 IMM その値以下の場合は即値分岐

bleid rA、 IMM 遅延を含めてその値以下の場合は即値分岐

1 0 1 1 1 1 D 0 0 1 1 rA IMM

0 6 1

1

1

6

3

1

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド 184UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 185: MicroBlaze プロセッサ リファレンス ガイド …...MicroBlaze プロセッサ リファレンス ガイド 3 UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com 2016

第 5章: MicroBlaze 命令セ ッ ト  アーキテ クチャ

blt Branch if Less Than

説明rA が 0 よ り 小さ ければ、 rB のオフセ ッ ト 値にあ る命令に分岐し ます。 分岐先は、 ア ド レ ス PC + rB にある命令にな り ます。

ニーモニ ッ ク bltd は D ビ ッ ト をセ ッ ト し ます。 D ビ ッ ト は、 分岐遅延ス ロ ッ ト があ るかないかを判断します。 D ビ ッ ト がセ ッ ト されている場合、 遅延ス ロ ッ ト があ り 、 分岐の後に続 く 命令 (すなわち分岐遅延ス ロ ッ ト にあ る命令) は、 分岐先の命令を実行する前に実行完了でき ます。 D ビ ッ ト がセ ッ ト されていない場合は、 遅延ス ロ ッ ト はな く 、 分岐後に実行される命令は、 分岐先の命令にな り ます。

擬似コー ドIf rA < 0 thenPC PC + rB

elsePC PC + 4

if D = 1 thenallow following instruction to complete execution

変更されるレジス タ• PC

レ イテンシ• 1 サイ クル (分岐し ていない場合)

• 2 サイ クル (分岐し ていて D ビ ッ ト がセ ッ ト されている場合)

• 3 サイ クル (分岐し ていて D ビ ッ ト がセ ッ ト されていない場合)

注記遅延ス ロ ッ ト は、 IMM、 分岐、 またはブレーク の命令で使用する こ と はでき ません。 割 り 込みおよび外部ハード ウ ェ ア ブレークは、 遅延ス ロ ッ ト の分岐が完了する まで先送 り されます。

blt rA、 rB その値よ り 小さ い場合は分岐

bltd rA、 rB 遅延を含めてその値未満の場合は分岐

1 0 0 1 1 1 D 0 0 1 0 rA rB 0 0 0 0 0 0 0 0 0 0 0

0 6 1

1

1

6

2

1

3

1

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド 185UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 186: MicroBlaze プロセッサ リファレンス ガイド …...MicroBlaze プロセッサ リファレンス ガイド 3 UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com 2016

第 5章: MicroBlaze 命令セ ッ ト  アーキテ クチャ

blti Branch Immediate if Less Than

説明rA が 0 よ り 小さ ければ、 IMM のオフセ ッ ト 値にあ る命令に分岐し ます。 分岐先は、 ア ド レ ス PC + IMM にあ る命令にな り ます。

ニーモニ ッ ク bltid は D ビ ッ ト をセ ッ ト し ます。 D ビ ッ ト は、 分岐遅延ス ロ ッ ト があ るかないかを判断します。 D ビ ッ ト がセ ッ ト されている場合、 遅延ス ロ ッ ト があ り 、 分岐の後に続 く 命令 (すなわち分岐遅延ス ロ ッ ト にあ る命令) は、 分岐先の命令を実行する前に実行完了でき ます。 D ビ ッ ト がセ ッ ト されていない場合は、 遅延ス ロ ッ ト はな く 、 分岐後に実行される命令は、 分岐先の命令にな り ます。

擬似コー ドIf rA < 0 thenPC PC + sext(IMM)

elsePC PC + 4

if D = 1 thenallow following instruction to complete execution

変更されるレジス タ• PC

レ イテンシ• 1 サイ クル (分岐し ていない、 または正し く 分岐予測される場合)

• 2 サイ クル (分岐し ていて D ビ ッ ト がセ ッ ト されている場合)

• 3 サイ クル (分岐し ていて D ビ ッ ト がセ ッ ト されていない場合、 または C_AREA_OPTIMIZED=0 で分岐予測が間違っている場合)

• 7 ~ 9 サイ クル (C_AREA_OPTIMIZED=2 で分岐予測が間違っている場合)

注記:デフ ォル ト で、 タ イプ B 命令は 16 ビ ッ ト の IMM フ ィ ール ド 値を取 り 込み、 それを 32 ビ ッ ト に符号拡張し て、 即値オぺラ ン ド と し て使用し ます。 この動作は、 IMM 命令を使用し て タ イプ B 命令を先行させるこ と で、 上書きでき ます。 32 ビ ッ ト の即値の使用に関し ては、 213 ページの 「imm」 を参照し て く だ さい。

遅延ス ロ ッ ト は、 IMM、 分岐、 またはブレーク の命令で使用する こ と はでき ません。 割 り 込みおよび外部ハード ウ ェ ア ブレークは、 遅延ス ロ ッ ト の分岐が完了する まで先送 り されます。

blti rA、 IMM その値よ り 小さ い場合は即値分岐

bltid rA、 IMM 遅延を含めてその値未満の場合は即値分岐

1 0 1 1 1 1 D 0 0 1 0 rA IMM

0 6 1

1

1

6

3

1

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド 186UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 187: MicroBlaze プロセッサ リファレンス ガイド …...MicroBlaze プロセッサ リファレンス ガイド 3 UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com 2016

第 5章: MicroBlaze 命令セ ッ ト  アーキテ クチャ

bne Branch if Not Equal

説明rA が 0 でないな らば、 rB のオフセ ッ ト 値にあ る命令に分岐し ます。 分岐先は、 ア ド レ ス PC + rB にあ る命令にな り ます。

ニーモニ ッ ク bned は D ビ ッ ト をセ ッ ト し ます。 D ビ ッ ト は、 分岐遅延ス ロ ッ ト があ るかないかを判断します。 D ビ ッ ト がセ ッ ト されている場合、 遅延ス ロ ッ ト があ り 、 分岐の後に続 く 命令 (すなわち分岐遅延ス ロ ッ ト にあ る命令) は、 分岐先の命令を実行する前に実行完了でき ます。 D ビ ッ ト がセ ッ ト されていない場合は、 遅延ス ロ ッ ト はな く 、 分岐後に実行される命令は、 分岐先の命令にな り ます。

擬似コー ドIf rA 0 thenPC PC + rB

elsePC PC + 4

if D = 1 thenallow following instruction to complete execution

変更されるレジス タ• PC

レ イテンシ• 1 サイ クル (分岐し ていない場合)

• 2 サイ クル (分岐し ていて D ビ ッ ト がセ ッ ト されている場合)

• 3 サイ クル (分岐し ていて D ビ ッ ト がセ ッ ト されていない場合)

注記遅延ス ロ ッ ト は、 IMM、 分岐、 またはブレーク の命令で使用する こ と はでき ません。 割 り 込みおよび外部ハード ウ ェ ア ブレークは、 遅延ス ロ ッ ト の分岐が完了する まで先送 り されます。

bne rA、 rB 等し く ない場合は分岐

bned rA、 rB 遅延を含めて等し く ない場合は分岐

1 0 0 1 1 1 D 0 0 0 1 rA rB 0 0 0 0 0 0 0 0 0 0 0

0 6 1

1

1

6

2

1

3

1

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド 187UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 188: MicroBlaze プロセッサ リファレンス ガイド …...MicroBlaze プロセッサ リファレンス ガイド 3 UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com 2016

第 5章: MicroBlaze 命令セ ッ ト  アーキテ クチャ

bnei Branch Immediate if Not Equal

説明rA が 0 でないな らば、 IMM のオフセ ッ ト 値にあ る命令に分岐し ます。 分岐先は、 ア ド レ ス PC + IMM にあ る命令にな り ます。

ニーモニ ッ ク bneid は D ビ ッ ト をセ ッ ト し ます。 D ビ ッ ト は、 分岐遅延ス ロ ッ ト があ るかないかを判断し ます。 D ビ ッ ト がセ ッ ト されている場合、 遅延ス ロ ッ ト があ り 、 分岐の後に続 く 命令 (すなわち分岐遅延ス ロ ッ ト にあ る命令) は、 分岐先の命令を実行する前に実行完了でき ます。 D ビ ッ ト がセ ッ ト されていない場合は、 遅延ス ロ ッ ト はな く 、 分岐後に実行される命令は、 分岐先の命令にな り ます。

擬似コー ドIf rA 0 thenPC PC + sext(IMM)

elsePC PC + 4

if D = 1 thenallow following instruction to complete execution

変更されるレジス タ• PC

レ イテンシ• 1 サイ クル (分岐し ていない、 または正し く 分岐予測される場合)

• 2 サイ クル (分岐し ていて D ビ ッ ト がセ ッ ト されている場合)

• 3 サイ クル (分岐し ていて D ビ ッ ト がセ ッ ト されていない場合、 または C_AREA_OPTIMIZED=0 で分岐予測が間違っている場合)

• 7 ~ 9 サイ クル (C_AREA_OPTIMIZED=2 で分岐予測が間違っている場合)

注記:デフ ォル ト で、 タ イプ B 命令は 16 ビ ッ ト の IMM フ ィ ール ド 値を取 り 込み、 それを 32 ビ ッ ト に符号拡張し て、 即値オぺラ ン ド と し て使用し ます。 この動作は、 IMM 命令を使用し て タ イプ B 命令を先行させるこ と で、 上書きでき ます。 32 ビ ッ ト の即値の使用に関し ては、 213 ページの 「imm」 を参照し て く だ さい。

遅延ス ロ ッ ト は、 IMM、 分岐、 またはブレーク の命令で使用する こ と はでき ません。 割 り 込みおよび外部ハード ウ ェ ア ブレークは、 遅延ス ロ ッ ト の分岐が完了する まで先送 り されます。

bnei rA、 IMM 等し く ない場合は即値分岐

bneid rA、 IMM 遅延を含めて等し く ない場合は即値分岐

1 0 1 1 1 1 D 0 0 0 1 rA IMM

0 6 1

1

1

6

3

1

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド 188UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 189: MicroBlaze プロセッサ リファレンス ガイド …...MicroBlaze プロセッサ リファレンス ガイド 3 UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com 2016

第 5章: MicroBlaze 命令セ ッ ト  アーキテ クチャ

br Unconditional Branch

説明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 thenPC (rB)

elsePC PC + (rB)

if D = 1 then allow following instruction to complete execution

変更されるレジス タ• rD

• PC

レ イテンシ• 2 サイ クル (D ビ ッ ト がセ ッ ト されている場合)

• 3 サイ クル (D ビ ッ ト がセ ッ ト されていない場合)

注記命令 brl および bral は使用でき ません。 遅延ス ロ ッ ト は、 IMM、 分岐、 またはブレーク の命令で使用するこ と はでき ません。 割 り 込みおよび外部ハード ウ ェ ア ブレークは、 遅延ス ロ ッ ト の分岐が完了する まで先送 り されます。

br rB 分岐

bra rB 絶対分岐

brd rB 遅延付き分岐

brad rB 遅延付き絶対分岐

brld rD、 rB 遅延付き分岐と リ ン ク

brald rD、 rB 遅延付き絶対分岐と リ ン ク

1 0 0 1 1 0 rD D A L 0 0 rB 0 0 0 0 0 0 0 0 0 0 0

0 6 1

1

1

6

2

1

3

1

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド 189UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 190: MicroBlaze プロセッサ リファレンス ガイド …...MicroBlaze プロセッサ リファレンス ガイド 3 UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com 2016

第 5章: MicroBlaze 命令セ ッ ト  アーキテ クチャ

bri Unconditional Branch Immediate

説明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 thenPC sext(IMM)

elsePC PC + sext(IMM)

if D = 1 thenallow following instruction to complete execution

if D = 1 and A = 1 and L = 1 and IMM = C_BASE_VECTORS+0x8 thenMSR[UMS] MSR[UM]MSR[VMS] MSR[VM]MSR[UM] 0MSR[VM] 0

変更されるレジス タ• rD

bri IMM 即値分岐

brai IMM 絶対即値分岐

brid IMM 遅延付き即値分岐

braid IMM 遅延付き絶対即値分岐

brlid rD、 IMM 遅延付き分岐と即値 リ ン ク

bralid rD、 IMM 遅延付き絶対分岐と即値 リ ン ク

1 0 1 1 1 0 rD D A L 0 0 IMM

0 6 1

1

1

6

3

1

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド 190UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 191: MicroBlaze プロセッサ リファレンス ガイド …...MicroBlaze プロセッサ リファレンス ガイド 3 UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com 2016

第 5章: MicroBlaze 命令セ ッ ト  アーキテ クチャ

• PC

• MSR[UM]、 MSR[VM]

レ イテンシ• 1 サイ クル (正し く 分岐予測がされる場合)

• 2 サイ クル (D ビ ッ ト がセ ッ ト されている場合)

• 3 サイ クル (D ビ ッ ト がセ ッ ト されていない場合、 または C_AREA_OPTIMIZED=0 で分岐予測が間違っている場合)

• 7 ~ 9 サイ クル (C_AREA_OPTIMIZED=2 で分岐予測が間違っている場合)

注記命令 brli および brali は使用でき ません。

デフ ォル ト で、 タ イプ B 命令は 16 ビ ッ ト の IMM フ ィ ール ド 値を取 り 込み、 それを 32 ビ ッ ト に符号拡張し て、 即値オぺラ ン ド と し て使用し ます。 この動作は、 IMM 命令を使用し て タ イプ B 命令を先行させるこ と で、 上書きでき ます。 32 ビ ッ ト の即値の使用に関し ては、 213 ページの 「imm」 を参照し て く だ さい。

遅延ス ロ ッ ト は、 IMM、 分岐、 またはブレーク の命令で使用する こ と はでき ません。 割 り 込みおよび外部ハード ウ ェ ア ブレークは、 遅延ス ロ ッ ト の分岐が完了する まで先送 り されます。

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド 191UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 192: MicroBlaze プロセッサ リファレンス ガイド …...MicroBlaze プロセッサ リファレンス ガイド 3 UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com 2016

第 5章: MicroBlaze 命令セ ッ ト  アーキテ クチャ

brk Break

説明rB のア ド レ ス値にあ る命令に分岐および リ ン ク し ます。 PC の現在値は rD に格納されます。 MSR の BIP フ ラ グがセ ッ ト され、 予約ビ ッ ト が ク リ アにな り ます。

MicroBlaze が MMU を使用する よ う に (C_USE_MMU >= 1) 設定されている場合、 この命令は特権命令です。 つま り 、 命令がユーザー モード (MSR[UM] = 1) で実行される と、 特権命令例外が発生し ます。

擬似コー ドif MSR[UM] = 1 thenESR[EC] 00111

else(rD) PCPC (rB)MSR[BIP] Reservation

変更されるレジス タ• rD

• PC

• MSR[BIP]

• ESR[EC] (特権命令例外が生成される場合)

レ イテンシ• 3 サイ クル

brk rD、 rB

1 0 0 1 1 0 rD 0 1 1 0 0 rB 0 0 0 0 0 0 0 0 0 0 0

0 6 11 16 21 31

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド 192UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 193: MicroBlaze プロセッサ リファレンス ガイド …...MicroBlaze プロセッサ リファレンス ガイド 3 UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com 2016

第 5章: MicroBlaze 命令セ ッ ト  アーキテ クチャ

brki Break Immediate

説明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 thenESR[EC] 00111

else(rD) PCPC sext(IMM)MSR[BIP] Reservation if IMM = C_BASE_VECTORS+0x8 or IMM = C_BASE_VECTORS+0x18 thenMSR[UMS] MSR[UM]MSR[UM] 0MSR[VMS] MSR[VM]MSR[VM] 0

変更されるレジス タ• rD (例外が生成されない場合。 例外が生成される と こ のレジス タは変更されません)

• PC

• MSR[BIP]、 MSR[UM]、 MSR[VM]

• ESR[EC] (特権命令例外が生成される場合)

レ イテンシ• 3 サイ クル

注記デフ ォル ト で、 タ イプ B 命令は 16 ビ ッ ト の IMM フ ィ ール ド 値を取 り 込み、 それを 32 ビ ッ ト に符号拡張し て、 即値オぺラ ン ド と し て使用し ます。 この動作は、 IMM 命令を使用し て タ イプ B 命令を先行させるこ と で、 上書きでき ます。 32 ビ ッ ト の即値の使用に関し ては、 213 ページの 「imm」 を参照し て く だ さい。

特殊なケース と し て、 IMM 命令の後に ソ フ ト ウ ェ ア ブレーク を許可する C_BASE_VECTORS の値に関係な く 、 C_USE_DEBUG が設定されている と、 IMM 命令はソ フ ト ウ ェ ア ブレーク 「brki rD, 0x18」 を上書きし ません。

brki rD、 IMM

1 0 1 1 1 0 rD 0 1 1 0 0 IMM

0 6 11 16 31

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド 193UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 194: MicroBlaze プロセッサ リファレンス ガイド …...MicroBlaze プロセッサ リファレンス ガイド 3 UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com 2016

第 5章: MicroBlaze 命令セ ッ ト  アーキテ クチャ

bs Barrel Shift

説明レジス タ rB で指定し た値分、 レジス タ rA の内容をシフ ト し、 レジス タ rD に結果を出力し ます。

ニーモニ ッ ク bsll は S ビ ッ ト (サイ ド ビ ッ ト ) をセ ッ ト し ます。 S ビ ッ ト がセ ッ ト されている場合は、 バレル シフ ト は左にシフ ト し ます。 ニーモニ ッ クの bsrl および bsra は S ビ ッ ト を ク リ アにし、 右にシフ トし ます。

ニーモニ ッ ク bsra は T ビ ッ ト (タ イプ ビ ッ ト ) をセ ッ ト し ます。 T ビ ッ ト がセ ッ ト されている場合、 バレル シフ ト は算術型にな り ます。 ニーモニ ッ ク の bsrl および bsll は T ビ ッ ト を ク リ アにし、 シフ ト は論理型な り ます。

擬似コー ドif S = 1 then(rD) (rA) (rB)[27:31]

elseif T = 1 thenif ((rB)[27:31]) 0 then(rD)[0:(rB)[27:31]-1] (rA)](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)

• 2 サイ クル (C_AREA_OPTIMIZED=1)

注記これらの命令はオプシ ョ ンです。 これらの命令を使用するには、 バレル シフ ト 命令を使用する よ う に (C_USE_BARREL=1)、 MicroBlaze を設定する必要があ り ます。

bsrl rD、 rA、 rB バレル シ フ ト ( 右、 論理 )

bsra rD、 rA、 rB バレル シ フ ト ( 右、 算術 )

bsll rD、 rA、 rB バレル シ フ ト ( 左、 論理 )

0 1 0 0 0 1 rD rA rB S T 0 0 0 0 0 0 0 0 0

0 6 1

1

1

6

2

1

3

1

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド 194UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 195: MicroBlaze プロセッサ リファレンス ガイド …...MicroBlaze プロセッサ リファレンス ガイド 3 UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com 2016

第 5章: MicroBlaze 命令セ ッ ト  アーキテ クチャ

bsi Barrel Shift Immediate

説明最初の 3 つの命令は、 IMM で指定し た値分レジス タ rA の内容をシフ ト し、 レジス タ rD に結果を出力します。

バレル シフ ト 抽出フ ィ ール ド は、 レジス タ rA から ビ ッ ト フ ィ ール ド を抽出し、 レジス タ rD に結果を出力し ます。 ビ ッ ト フ ィ ール ド 幅は IMMW で指定され、 シフ ト 量は IMMS で指定されます。 ビ ッ ト フ ィ ール ド 幅の範囲は 1 から 31 までで、 IMMW + IMMS≤32 と い う 条件を適用する必要があ り ます。

バレル シフ ト 挿入フ ィ ール ド は、 レジス タ rA から ビ ッ ト フ ィ ール ド を レジス タ rD に挿入し、 レジス タ rD にあ る既存の値を変更し ます。 ビ ッ ト フ ィ ール ド幅は IMMW - IMMS + 1 で定義され、 シフ ト 量は IMMS で指定されます。 IMMW > IMMS と い う 条件を適用する必要があ り ます。

ニーモニ ッ ク bsll は S ビ ッ ト (サイ ド ビ ッ ト ) をセ ッ ト し ます。 S ビ ッ ト がセ ッ ト されている場合は、 バレル シフ ト は左にシフ ト し ます。 ニーモニ ッ クの bsrl および bsra は S ビ ッ ト を ク リ アにし、 右にシフ トし ます。

ニーモニ ッ ク bsra は T ビ ッ ト (タ イプ ビ ッ ト ) をセ ッ ト し ます。 T ビ ッ ト がセ ッ ト されている場合、 バレル シフ ト は算術型にな り ます。 ニーモニ ッ ク の bsrl および bsll は T ビ ッ ト を ク リ アにし、 シフ ト は論理型な り ます。

ニーモニ ッ ク bsefi は E ビ ッ ト (抽出ビ ッ ト ) をセ ッ ト し ます。 この場合、 S および T ビ ッ ト は使用されません。

ニーモニ ッ ク bsifi は I ビ ッ ト (挿入ビ ッ ト ) をセ ッ ト し ます。 この場合、 S および T ビ ッ ト は使用されません。

bsrli rD、 rA、 IMM バレル シ フ ト ( 右、 論理即値 )

bsrai rD、 rA、 IMM バレル シ フ ト ( 右、 算術即値 )

bslli rD、 rA、 IMM バレル シ フ ト ( 左、 論理即値 )

bsefi rD、 rA、 IMMW、 IMMS バレル シ フ ト 抽出フ ィ ール ド ( 論理即値 )

bsifi rD、 rA、 Width1、 IMMS

1. Width = IMMW - IMMS + 1

バレル シ フ ト 挿入フ ィ ール ド ( 論理即値 )

0 1 1 0 0 1 rD rA 0 0 0 0 0 S T 0 0 0 0 IMM

0 6 11 16 21 27 31

0 1 1 0 0 1 rD rA I E 0 0 0 IMMW 0 IMMS

0 6 11 16 21 25 27 31

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド 195UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 196: MicroBlaze プロセッサ リファレンス ガイド …...MicroBlaze プロセッサ リファレンス ガイド 3 UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com 2016

第 5章: MicroBlaze 命令セ ッ ト  アーキテ クチャ

擬似コー ドif E = 1 then(rD)[0:31-IMMW] 0(rD)[32-IMMW:31] (rA) >> IMMS

else if I = 1 thenmask (0xffffffff << (IMMW + 1)) (0xffffffff << IMMS)(rD) ((rA) << IMMS) mask) ((rD) mask)

else if S = 1 then(rD) (rA) IMM

else if T = 1 thenif IMM 0 then(rD)[0:IMM-1] (rA)](rD)[IMM:31] (rA) IMM

else(rD) (rA)

else(rD) (rA) IMM

変更されるレジス タ• rD

レ イテンシ• 1 サイ クル (C_AREA_OPTIMIZED=0 または 2)

• 2 サイ クル (C_AREA_OPTIMIZED=1)

注記これらはタ イプ B の命令ではあ り ません。 先行する IMM 命令からの影響はあ り ません。

これらの命令はオプシ ョ ンです。 これらの命令を使用するには、 バレル シフ ト 命令を使用する よ う に (C_USE_BARREL=1)、 MicroBlaze を設定する必要があ り ます。

「bsifi rD, rA, width, shift」 と い う アセンブラー コー ド は、 IMMW フ ィ ール ド ではな く 、 実際のビ ッ ト フ ィ ール ド 幅を表し、 IMMW = シフ ト + 幅 - 1 で計算されます。

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド 196UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 197: MicroBlaze プロセッサ リファレンス ガイド …...MicroBlaze プロセッサ リファレンス ガイド 3 UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com 2016

第 5章: MicroBlaze 命令セ ッ ト  アーキテ クチャ

clz Count Leading Zeros

説明この命令は、 レジス タ rA にあ る前ゼロ を最下位ビ ッ ト から カ ウ ン ト し ます。 0 から 32 までのカ ウ ン ト 値はレジス タ rD に格納されます。

rA が 0 の と き rD の結果値は 32 で、 rA が 0xFFFFFFFF の と き結果値は 0 にな り ます。

擬似コー ドn 0while (rA)[n] = 0

n n + 1(rD) n

変更されるレジス タ• rD

レ イテンシ• 1 サイ クル

注記この命令は C_USE_PCMP_INSTR を 1 に設定し ている場合のみ使用可能です。

clz rD、 rA rA で前ゼロ をカ ウ ン ト

1 0 0 1 0 0 rD rA 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0

0 6 1

1

1

6

2

1

3

1

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド 197UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 198: MicroBlaze プロセッサ リファレンス ガイド …...MicroBlaze プロセッサ リファレンス ガイド 3 UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com 2016

第 5章: MicroBlaze 命令セ ッ ト  アーキテ クチャ

cmp Integer Compare

説明レジス タ rA の内容がレジス タ rB の内容から差し引かれ、 その結果がレジス タ rD に配置されます。

rD の MSB ビ ッ ト は、 rA と rB の真の関係を示すため調節されます。 U ビ ッ ト がセ ッ ト されている場合、rA および rB は符号な しの値とみな されます。 U ビ ッ ト が ク リ アの場合、 rA および rB は符号付きの値 とみな されます。

擬似コー ド(rD) (rB) + (rA) + 1(rD)(MSB) (rA) > (rB)

変更されるレジス タ• rD

レ イテンシ• 1 サイ クル

cmp rD、 rA、 rB rB を rA と比較 (符号付き )

cmpu rD、 rA、 rB rB を rA と比較 (符号な し )

0 0 0 1 0 1 rD rA rB 0 0 0 0 0 0 0 0 0 U 1

0 6 1

1

1

6

2

1

3

1

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド 198UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 199: MicroBlaze プロセッサ リファレンス ガイド …...MicroBlaze プロセッサ リファレンス ガイド 3 UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com 2016

第 5章: MicroBlaze 命令セ ッ ト  アーキテ クチャ

fadd Floating Point Arithmetic Add

説明レジス タ rA および rB の浮動小数点数の和は、 レジス タ rD に配置されます。

擬似コー ドif isDnz(rA) or isDnz(rB) then(rD) 0xFFC00000FSR[DO] 1ESR[EC] 00110

else if isSigNaN(rA) or isSigNaN(rB)or (isPosInfinite(rA) and isNegInfinite(rB)) or(isNegInfinite(rA) and isPosInfinite(rB))) then

(rD) 0xFFC00000FSR[IO] 1ESR[EC] 00110

else if isQuietNaN(rA) or isQuietNaN(rB) then(rD) 0xFFC00000

else if isDnz((rA)+(rB)) then(rD) signZero((rA)+(rB))FSR[UF] 1ESR[EC] 00110

else if isNaN((rA)+(rB)) then(rD) signInfinite((rA)+(rB))FSR[OF] 1ESR[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)

• 1 サイ クル (C_AREA_OPTIMIZED=2)

注記この命令は、 MicroBlaze のパラ メ ーター C_USE_FPU が 0 よ り 大きい場合のみ使用可能です。

fadd rD、 rA、 rB 加算

0 1 0 1 1 0 rD rA rB 0 0 0 0 0 0 0 0 0 0 0

0 6 11 16 21 31

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド 199UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 200: MicroBlaze プロセッサ リファレンス ガイド …...MicroBlaze プロセッサ リファレンス ガイド 3 UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com 2016

第 5章: MicroBlaze 命令セ ッ ト  アーキテ クチャ

frsub Reverse Floating Point Arithmetic Subtraction

説明レジス タ rA の浮動小数点値がレジス タ rB の浮動小数点値から差し引かれ、その結果がレジス タ rD に配置されます。

擬似コー ドif isDnz(rA) or isDnz(rB) then(rD) 0xFFC00000FSR[DO] 1ESR[EC] 00110

else if (isSigNaN(rA) or isSigNaN(rB) or (isPosInfinite(rA) and isPosInfinite(rB)) or(isNegInfinite(rA) and isNegInfinite(rB))) then

(rD) 0xFFC00000FSR[IO] 1ESR[EC] 00110

else if isQuietNaN(rA) or isQuietNaN(rB) then(rD) 0xFFC00000

else if isDnz((rB)-(rA)) then(rD) signZero((rB)-(rA))FSR[UF] 1ESR[EC] 00110

else if isNaN((rB)-(rA)) then(rD) signInfinite((rB)-(rA))FSR[OF] 1ESR[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)

• 1 サイ クル (C_AREA_OPTIMIZED=2)

注記こ の命令は、 MicroBlaze のパラ メ ーター C_USE_FPU が 0 よ り 大きい場合のみ使用可能です。

frsub rD、 rA、 rB 逆減算

0 1 0 1 1 0 rD rA rB 0 0 0 1 0 0 0 0 0 0 0

0 6 11 16 21 31

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド 200UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 201: MicroBlaze プロセッサ リファレンス ガイド …...MicroBlaze プロセッサ リファレンス ガイド 3 UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com 2016

第 5章: MicroBlaze 命令セ ッ ト  アーキテ クチャ

fmul Floating Point Arithmetic Multiplication

説明レジス タ rA の浮動小数点値と レジス タ rB の浮動小数点値と を掛け、その結果がレジス タ rD に配置されます。

擬似コー ドif isDnz(rA) or isDnz(rB) then(rD) 0xFFC00000FSR[DO] 1ESR[EC] 00110

else if isSigNaN(rA) or isSigNaN(rB) or (isZero(rA) and isInfinite(rB)) or

(isZero(rB) and isInfinite(rA))then(rD) 0xFFC00000FSR[IO] 1ESR[EC] 00110

else if isQuietNaN(rA) or isQuietNaN(rB) then(rD) 0xFFC00000

else if isDnz((rB)*(rA)) then(rD) signZero((rA)*(rB))FSR[UF] 1ESR[EC] 00110

else if isNaN((rB)*(rA)) then(rD) signInfinite((rB)*(rA))FSR[OF] 1ESR[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)

• 1 サイ クル (C_AREA_OPTIMIZED=2)

注記こ の命令は、 MicroBlaze のパラ メ ーター C_USE_FPU が 0 よ り 大きい場合のみ使用可能です。

fmul rD、 rA、 rB 乗算

0 1 0 1 1 0 rD rA rB 0 0 1 0 0 0 0 0 0 0 0

0 6 11 16 21 31

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド 201UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 202: MicroBlaze プロセッサ リファレンス ガイド …...MicroBlaze プロセッサ リファレンス ガイド 3 UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com 2016

第 5章: MicroBlaze 命令セ ッ ト  アーキテ クチャ

fdiv Floating Point Arithmetic Division

説明レジス タ rB の浮動小数点値を レジス タ rA の浮動小数点値で割 り 、 その結果がレジス タ rD に配置されます。

擬似コー ドif isDnz(rA) or isDnz(rB) then(rD) 0xFFC00000FSR[DO] 1ESR[EC] 00110

else if isSigNaN(rA) or isSigNaN(rB) or (isZero(rA) and isZero(rB)) or

(isInfinite(rA) and isInfinite(rB)) then(rD) 0xFFC00000FSR[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] 1ESR[EC] 00110

else if isDnz((rB) / (rA)) then(rD) signZero((rB) / (rA))FSR[UF] 1ESR[EC] 00110

else if isNaN((rB)/(rA)) then(rD) signInfinite((rB) / (rA))FSR[OF] 1ESR[EC] 00110

else(rD) (rB) / (rA)

変更されるレジス タ• rD (FP 例外が生成されない場合。 例外が生成される と こ のレジス タは変更されません)

• ESR[EC] (FP 例外が生成される場合)

• FSR[IO,UF,OF,DO,DZ]

レ イテンシ• C_AREA_OPTIMIZED=0 で 28 サイ クル、 C_AREA_OPTIMIZED=1 で 30 サイ クル、 C_AREA_OPTIMIZED=2

で 24 サイ クルです。

注記この命令は、 MicroBlaze のパラ メ ーター C_USE_FPU が 0 よ り 大きい場合のみ使用可能です。

fdiv rD、 rA、 rB 除算

0 1 0 1 1 0 rD rA rB 0 0 1 1 0 0 0 0 0 0 0

0 6 11 16 21 31

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド 202UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 203: MicroBlaze プロセッサ リファレンス ガイド …...MicroBlaze プロセッサ リファレンス ガイド 3 UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com 2016

第 5章: MicroBlaze 命令セ ッ ト  アーキテ クチャ

fcmp Floating Point Number Comparison

説明レジス タ rB の浮動小数点値を レジス タ rA の浮動小数点値と比較し、その結果がレジス タ rD に配置されます。 命令コード の OpSel フ ィ ール ド は、 実行される比較のタ イプを決定し ます。

擬似コー ドif isDnz(rA) or isDnz(rB) then(rD) 0FSR[DO] 1ESR[EC] 00110

else{read out behavior from 表 5-2}

変更されるレジス タ• rD (FP 例外が生成されない場合。 例外が生成される と このレジス タは変更されません)

• ESR[EC] (FP 例外が生成される場合)

• FSR[IO,DO]

レ イテンシ• 1 サイ クル (C_AREA_OPTIMIZED=0 または 2)

• 3 サイ クル (C_AREA_OPTIMIZED=1)

注記これたの命令は、 MicroBlaze のパラ メ ーター C_USE_FPU が 0 よ り 大きい場合のみ使用可能です。

204 ページの表 5-2には、 浮動小数点の比較演算が リ ス ト されています。

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 浮動小数点数の比較 (以上)

0 1 0 1 1 0 rD rA rB 0 1 0 0 OpSel 0 0 0 0

0 6 11 16 21 25 28 31

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド 203UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 204: MicroBlaze プロセッサ リファレンス ガイド …...MicroBlaze プロセッサ リファレンス ガイド 3 UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com 2016

第 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) 0FSR[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) 1FSR[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 プロセ ッサ リ フ ァ レンス ガイ ド 204UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 205: MicroBlaze プロセッサ リファレンス ガイド …...MicroBlaze プロセッサ リファレンス ガイド 3 UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com 2016

第 5章: MicroBlaze 命令セ ッ ト  アーキテ クチャ

flt Floating Point Convert Integer to Float

説明レジス タ rA の符号付き整数を浮動小数点に変換し、 その結果を レジス タ rD に配置し ます。 これは 32 ビ ッ ト の丸め符号付き変換で、 32 ビ ッ ト の浮動小数点値を出力し ます。

擬似コー ド(rD) float ((rA))

変更されるレジス タ• rD

レ イテンシ• 4 サイ クル (C_AREA_OPTIMIZED=0)

• 6 サイ クル (C_AREA_OPTIMIZED=1)

• 1 サイ クル (C_AREA_OPTIMIZED=2)

注記この命令は、 MicroBlaze のパラ メ ーター C_USE_FPU が 2 (拡張) 場合のみ使用可能です。

flt rD、 rA

0 1 0 1 1 0 rD rA 0 0 1 0 1 0 0 0 0 0 0 0

0 6 11 16 21 31

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド 205UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 206: MicroBlaze プロセッサ リファレンス ガイド …...MicroBlaze プロセッサ リファレンス ガイド 3 UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com 2016

第 5章: MicroBlaze 命令セ ッ ト  アーキテ クチャ

fint Floating Point Convert Float to Integer

説明レジス タ rA の浮動小数点数を符号付き整数に変換し、 その結果を レジス タ rD に配置し ます。 これは 32 ビ ッ ト の符号付き変換で、 32 ビ ッ ト の整数値を出力し ます。

擬似コー ドif isDnz(rA) then(rD) 0xFFC00000FSR[DO] 1ESR[EC] 00110

else if isNaN(rA) then(rD) 0xFFC00000FSR[IO] 1ESR[EC] 00110

else if isInf(rA) or (rA) < -231 or (rA) > 231 - 1 then(rD) 0xFFC00000FSR[IO] 1ESR[EC] 00110

else(rD) int ((rA))

変更されるレジス タ• rD (FP 例外が生成されない場合。 例外が生成される と こ のレジス タは変更されません)

• ESR[EC] (FP 例外が生成される場合)

• FSR[IO,DO]

レ イテンシ• 5 サイ クル (C_AREA_OPTIMIZED=0)

• 7 サイ クル (C_AREA_OPTIMIZED=1)

• 2 サイ クル (C_AREA_OPTIMIZED=2)

注記この命令は、 MicroBlaze のパラ メ ーター C_USE_FPU が 2 (拡張) 場合のみ使用可能です。

fint rD、 rA

0 1 0 1 1 0 rD rA 0 0 1 1 0 0 0 0 0 0 0 0

0 6 11 16 21 31

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド 206UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 207: MicroBlaze プロセッサ リファレンス ガイド …...MicroBlaze プロセッサ リファレンス ガイド 3 UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com 2016

第 5章: MicroBlaze 命令セ ッ ト  アーキテ クチャ

fsqrt Floating Point Arithmetic Square Root

説明rA の値で浮動小数点の平方根計算を実行し、 結果を rD に配置し ます。

擬似コー ドif isDnz(rA) then(rD) 0xFFC00000FSR[DO] 1ESR[EC] 00110

else if isSigNaN(rA) then(rD) 0xFFC00000FSR[IO] 1ESR[EC] 00110

else if isQuietNaN(rA) then(rD) 0xFFC00000

else if (rA) < 0 then(rD) 0xFFC00000FSR[IO] 1ESR[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)

• 23 サイ クル (C_AREA_OPTIMIZED=2)

注記こ の命令は、 MicroBlaze のパラ メ ーター C_USE_FPU が 2 (拡張) 場合のみ使用可能です。

fsqrt rD、 rA 平方根

0 1 0 1 1 0 rD rA 0 0 1 1 1 0 0 0 0 0 0 0

0 6 11 16 21 31

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド 207UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 208: MicroBlaze プロセッサ リファレンス ガイド …...MicroBlaze プロセッサ リファレンス ガイド 3 UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com 2016

第 5章: MicroBlaze 命令セ ッ ト  アーキテ クチャ

get get from stream interface

説明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) で実行される と、 特権命令例外が発生し ます。

tneaget rD、 FSLx リ ン ク x からデータ を取得

t = テス ト のみ

n = ノ ンブロ ッ キング

e = 制御ビ ッ ト がセ ッ ト されている場合は

例外

a = ア ト ミ ッ ク

tnecaget rD、 FSLx リ ン ク x から制御を取得

t = テス ト のみ

n = ノ ンブロ ッ キング

e = 制御ビ ッ ト がセ ッ ト されていない場合

は例外

a = ア ト ミ ッ ク

0 1 1 0 1 1 rD 0 0 0 0 0 0 n c t a e 0 0 0 0 0 0 FSLx

0 6 11 16 28 31

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド 208UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 209: MicroBlaze プロセッサ リファレンス ガイド …...MicroBlaze プロセッサ リファレンス ガイド 3 UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com 2016

第 5章: MicroBlaze 命令セ ッ ト  アーキテ クチャ

擬似コー ドif MSR[UM] = 1 thenESR[EC] 00111

elsex FSLxif x >= C_FSL_LINKS thenx 0

(rD) Sx_AXIS_TDATAif (n = 1) thenMSR[Carry] Sx_AXIS_TVALID

if Sx_AXIS_TLAST c and Sx_AXIS_TVALID thenMSR[FSL] 1if (e = 1) thenESR[EC] 00000ESR[ESS]instruction bits [28:31]EDR Sx_AXIS_TDATA

変更されるレジス タ• rD (例外が生成されない場合。 例外が生成される と このレジス タは変更されません)

• MSR[FSL]

• MSR[Carry]

• ESR[EC] (ス ト リ ーム例外または特権命令例外が生成される場合)

• ESR[ESS] (ス ト リ ーム例外が生成される場合)

• EDR (ス ト リ ーム例外が生成される場合)

レ イテンシ• 1 サイ クル (C_AREA_OPTIMIZED=0 または 2)

• 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 プロセ ッサ リ フ ァ レンス ガイ ド 209UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 210: MicroBlaze プロセッサ リファレンス ガイド …...MicroBlaze プロセッサ リファレンス ガイド 3 UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com 2016

第 5章: MicroBlaze 命令セ ッ ト  アーキテ クチャ

getd get from stream interface dynamic

説明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) で実行される と、 特権命令例外が発生し ます。

tneagetd rD、 rB リ ン ク rB[28:31] からデータ を取得

t = テス ト のみ

n = ノ ンブロ ッ キング

e = 制御ビ ッ ト がセ ッ ト されている場合は

例外

a = ア ト ミ ッ ク

tnecagetd rD、 rB リ ン ク rB[28:31] から制御を取得

t = テス ト のみ

n = ノ ンブロ ッ キング

e = 制御ビ ッ ト がセ ッ ト されていない場合

は例外

a = ア ト ミ ッ ク

0 1 0 0 1 1 rD 0 0 0 0 0 rB 0 n c t a e 0 0 0 0 0

0 6 11 16 21 31

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド 210UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 211: MicroBlaze プロセッサ リファレンス ガイド …...MicroBlaze プロセッサ リファレンス ガイド 3 UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com 2016

第 5章: MicroBlaze 命令セ ッ ト  アーキテ クチャ

擬似コー ドif MSR[UM] = 1 thenESR[EC] 00111

elsex rB[28:31]if x >= C_FSL_LINKS thenx 0

(rD) Sx_AXIS_TDATAif (n = 1) thenMSR[Carry] Sx_AXIS_TVALID

if Sx_AXIS_TLAST c and Sx_AXIS_TVALID thenMSR[FSL] 1if (e = 1) thenESR[EC] 00000ESR[ESS]rB[28:31]EDR Sx_AXIS_TDATA

変更されるレジス タ• rD (例外が生成されない場合。 例外が生成される と こ のレジス タは変更されません)

• MSR[FSL]

• MSR[Carry]

• ESR[EC] (ス ト リ ーム例外または特権命令例外が生成される場合)

• ESR[ESS] (ス ト リ ーム例外が生成される場合)

• EDR (ス ト リ ーム例外が生成される場合)

レ イテンシ• 1 サイ クル (C_AREA_OPTIMIZED=0 または 2)

• 2 サイ クル (C_AREA_OPTIMIZED=1)

この命令のブロ ッ キング バージ ョ ンは、 命令が完了でき る まで MicroBlaze のパイプラ イ ンを ス ト ールさせます。 命令がア ト ミ ッ ク でなければ割 り 込みは実行されます。 ア ト ミ ッ クだ と割 り 込みは実行されません。

注記割 り 込みが実行されな く なって し ま う ので、 こ の命令のブロ ッ キング バージ ョ ンは、 遅延ス ロ ッ ト に配置し ないで く ださ い。

ノ ンブロ ッ キング バージ ョ ンの場合は、 イ ンデッ ク ス変数をデク リ メ ン ト するのに rsubc 命令を使用でき ます。

C_FSL_EXCEPTION が 1 でない限 り 、 e ビ ッ ト に効力はあ り ません。

MicroBlaze パラ メ ーター C_FSL_LINKS が 0 よ り 大き く 、パラ メ ーター C_USE_EXTENDED_FSL_INSTR が 1 に設定されている場合にのみ、 これらの命令は使用可能です。

パフ ォーマン ス上の理由から ど う し て も この命令をユーザー モード で実行し なければな ら ない場合を除き、 こ の命令をユーザー モード で実行し ないよ う にし て く だ さい。 リ ン クの誤用を防ぐためのハードウ ェ ア保護がすべて削除されて し まいます。

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド 211UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 212: MicroBlaze プロセッサ リファレンス ガイド …...MicroBlaze プロセッサ リファレンス ガイド 3 UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com 2016

第 5章: MicroBlaze 命令セ ッ ト  アーキテ クチャ

idiv Integer Divide

説明レジス タ 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) <- 0MSR[DZO] <- 1ESR[EC] <- 00101ESR[DEC] <- 0

else if U = 0 and (rA) = -1 and (rB) = -2147483648 then(rD) <- -2147483648MSR[DZO] <- 1ESR[EC] <- 00101ESR[DEC] <- 1

else(rD) (rB) / (rA)

変更されるレジス タ• rD (除算例外が生成されない場合。 例外が生成される と こ のレジス タは変更されません)

• MSR[DZO] (ゼロによ る除算または除算オーバーフ ローが発生し た場合)

• ESR[EC] (ゼロによ る除算または除算オーバーフ ローが発生し た場合)

レ イテンシ• 1 サイ クル ((rA) = 0 の場合)、 そ う でない場合は 34 サイ クル (C_AREA_OPTIMIZED=0)

• 1 サイ クル ((rA) = 0 の場合)、 そ う でない場合は 35 サイ クル (C_AREA_OPTIMIZED=1)

• 1 サイ クル ((rA) = 0 の場合)、 そ う でない場合は 30 サイ クル (C_AREA_OPTIMIZED=2)

注記MicroBlaze がハード ウ ェ ア除算を使用する よ う に設定されている場合にのみ (C_USE_DIV = 1)、 こ の命令は有効です。

idiv rD、 rA、 rB rB を rA で割る (符号付き )

idivu rD、 rA、 rB rB を rA で割る (符号な し )

0 1 0 0 1 0 rD rA rB 0 0 0 0 0 0 0 0 0 U 0

0 6 1

1

1

6

2

1

3

1

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド 212UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 213: MicroBlaze プロセッサ リファレンス ガイド …...MicroBlaze プロセッサ リファレンス ガイド 3 UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com 2016

第 5章: MicroBlaze 命令セ ッ ト  アーキテ クチャ

imm Immediate

説明

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 命令を挿入し ます。

imm IMM

1 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 IMM

0 6 1

1

1

6

3

1

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド 213UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 214: MicroBlaze プロセッサ リファレンス ガイド …...MicroBlaze プロセッサ リファレンス ガイド 3 UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com 2016

第 5章: MicroBlaze 命令セ ッ ト  アーキテ クチャ

lbu Load Byte Unsigned

説明

レジス タ rA および rB の内容を加算し た結果の メ モ リ ロ ケーシ ョ ンから 1 バイ ト (8 ビ ッ ト ) ロード し ます。 データはレジス タ rD の最下位バイ ト に配置され、 rD のほかの 3 バイ ト はク リ アにな り ます。

R ビ ッ ト がセ ッ ト されている場合、 バイ ト 反転 メ モ リ ロ ケーシ ョ ンが使用され、 E ビ ッ ト で定義されているエンデ ィ アン と は逆のものでデータ を ロード し ます (仮想保護モード がイ ネーブルになっている場合)。

EA ビ ッ ト がセ ッ ト されている場合、 拡張ア ド レ スが使用され、 rA と rB を足すのではな く 連結させて形成されます。

仮想保護モード がイ ネーブルになっている場合、 データ TLB ミ ス例外が発生し、 ア ド レ スに対応する有効な変換エン ト リ は TLB では検出されません。

ノ ー ア ク セス ゾーン保護によ り ア ク セスが禁止されている場合は、 データ ス ト レージ例外が発生し ます。 これはユーザー モードおよび仮想保護モード がイ ネーブルになっている ア ク セスのみに適用されます。

擬似コー ドif EA = 1 thenAddr rA) & (rB)

elseAddr rA) + (rB)

if TLB_Miss(Addr) and MSR[VM] = 1 thenESR[EC] 10010;ESR[S] 0MSR[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 thenESR[EC] 10000;ESR[S] 0; ESR[DIZ] 1MSR[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] (データ ス ト レージ例外が生成される場合)

lbu rD、 rA、 rB

lbur rD、 rA、 rB

lbuea rD、 rA、 rB

1 1 0 0 0 0 rD rA rB 0 R 0 EA 0 0 0 0 0 0 0

0 6 11 16 21 31

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド 214UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 215: MicroBlaze プロセッサ リファレンス ガイド …...MicroBlaze プロセッサ リファレンス ガイド 3 UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com 2016

第 5章: MicroBlaze 命令セ ッ ト  アーキテ クチャ

レ イテンシ• 1 サイ クル (C_AREA_OPTIMIZED=0 または 2)

• 2 サイ クル (C_AREA_OPTIMIZED=1)

注記

MicroBlaze が再順序付け命令を使用する よ う に設定されている場合にのみ (C_USE_REORDER_INSTR = 1)、このバイ ト 反転命令は有効です。

MicroBlaze が拡張ア ド レ ス命令を使用する よ う に設定されている場合にのみ (C_ADDR_SIZE > 32)、 拡張ア ド レ ス命令は有効です。

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド 215UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 216: MicroBlaze プロセッサ リファレンス ガイド …...MicroBlaze プロセッサ リファレンス ガイド 3 UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com 2016

第 5章: MicroBlaze 命令セ ッ ト  アーキテ クチャ

lbui Load Byte Unsigned Immediate

説明

レジス タ rA の内容に IMM の 32 ビ ッ ト へ符号拡張し た ものを加算し た結果の メ モ リ ロ ケーシ ョ ンから 1 バイ ト (8 ビ ッ ト ) ロード し ます。 データはレジス タ rD の最下位バイ ト に配置され、 rD のほかの 3 バイ トはク リ アにな り ます。

仮想保護モード がイ ネーブルになっている場合、 データ TLB ミ ス例外が発生し、 ア ド レ スに対応する有効な変換エン ト リ は TLB では検出されません。

ノ ー ア ク セス ゾーン保護によ り ア ク セスが禁止されている場合は、 データ ス ト レージ例外が発生し ます。 これはユーザー モードおよび仮想保護モード がイ ネーブルになっている ア ク セスのみに適用されます。

擬似コー ドAddr rA) + sext(IMM)if TLB_Miss(Addr) and MSR[VM] = 1 thenESR[EC] 10010;ESR[S] 0MSR[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 thenESR[EC] 10000;ESR[S] 0; ESR[DIZ] 1MSR[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)

• 2 サイ クル (C_AREA_OPTIMIZED=1)

注記

デフ ォル ト で、 タ イプ B 命令は 16 ビ ッ ト の IMM フ ィ ール ド 値を取 り 込み、 それを 32 ビ ッ ト に符号拡張し て、 即値オぺラ ン ド と し て使用し ます。 この動作は、 IMM 命令を使用し て タ イプ B 命令を先行させるこ と で、 上書きでき ます。 32 ビ ッ ト の即値の使用に関し ては、 213 ページの 「imm」 を参照し て く だ さい。

lbui rD、 rA、 IMM

1 1 1 0 0 0 rD rA IMM

0 6 11 16 31

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド 216UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 217: MicroBlaze プロセッサ リファレンス ガイド …...MicroBlaze プロセッサ リファレンス ガイド 3 UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com 2016

第 5章: MicroBlaze 命令セ ッ ト  アーキテ クチャ

lhu Load Halfword Unsigned

説明

レジス タ rA および rB の内容を加算し た、ハーフ ワード ア ラ イ ン された結果の メ モ リ ロ ケーシ ョ ンから 1 ハーフ ワード (16 ビ ッ ト ) ロード し ます。 データはレジス タ rD の最下位ハーフ ワード に配置され、 rD の最上位ハーフ ワード はク リ アにな り ます。

R ビ ッ ト がセ ッ ト されている場合、 ハーフ ワード反転 メ モ リ ロ ケーシ ョ ンが使用され、 ハーフ ワード の 2 バイ ト が反転し、 E ビ ッ ト で定義されているエンデ ィ アン と は逆のものでデータ を ロード し ます (仮想保護モード がイネーブルになっている場合)。

EA ビ ッ ト がセ ッ ト されている場合、 拡張ア ド レ スが使用され、 rA と rB を足すのではな く 連結させて形成されます。

仮想保護モード がイ ネーブルになっている場合、 データ TLB ミ ス例外が発生し、 ア ド レ スに対応する有効な変換エン ト リ は TLB では検出されません。

ノ ー ア ク セス ゾーン保護によ り ア ク セスが禁止されている場合は、 データ ス ト レージ例外が発生し ます。 これはユーザー モードおよび仮想保護モード がイ ネーブルになっている ア ク セスのみに適用されます。

ア ド レ スの最下位ビ ッ ト がゼロでない場合は、 ア ラ イ ン されていないデータ ア ク セス例外が発生し ます。

擬似コー ドif EA = 1 thenAddr rA) & (rB)

elseAddr (rA) + (rB)

if TLB_Miss(Addr) and MSR[VM] = 1 thenESR[EC] 10010;ESR[S] 0MSR[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 thenESR[EC] 10000;ESR[S] 0; ESR[DIZ] 1MSR[UMS] MSR[UM]; MSR[VMS] MSR[VM]; MSR[UM] 0; MSR[VM] 0

else if Addr[31] 0 thenESR[EC] 00001; ESR[W] 0; ESR[S] 0; ESR[Rx] rD

else if (VM = 0 and R = 1) or (VM = 1 and R = 1 and E = 1) or (VM = 1 and R = 0 and E = 0) then

(rD)[16:23] Mem(Addr); (rD)[24:31] Mem(Addr+1); (rD)[0:15] 0else(rD)[16:23] Mem(Addr+1); (rD)[24:31] Mem(Addr); (rD)[0:15] 0

lhu rD、 rA、 rB

lhur rD、 rA、 rB

lhuea rD、 rA、 rB

1 1 0 0 0 1 rD rA rB 0 R 0 EA 0 0 0 0 0 0 0

0 6 11 16 21 31

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド 217UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 218: MicroBlaze プロセッサ リファレンス ガイド …...MicroBlaze プロセッサ リファレンス ガイド 3 UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com 2016

第 5章: MicroBlaze 命令セ ッ ト  アーキテ クチャ

変更されるレジス タ• 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)• 2 サイ クル (C_AREA_OPTIMIZED=1)

注記

MicroBlaze が再順序付け命令を使用する よ う にコ ンフ ィ ギ ュ レー ト されている場合にのみ (C_USE_REORDER_INSTR = 1)、 こ のハーフ ワード反転命令は有効です。

MicroBlaze が拡張ア ド レ ス命令を使用する よ う に設定されている場合にのみ (C_ADDR_SIZE > 32)、 拡張ア ド レ ス命令は有効です。

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド 218UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 219: MicroBlaze プロセッサ リファレンス ガイド …...MicroBlaze プロセッサ リファレンス ガイド 3 UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com 2016

第 5章: MicroBlaze 命令セ ッ ト  アーキテ クチャ

lhui Load Halfword Unsigned Immediate

説明

レジス タ rA の内容 と IMM の 32 ビ ッ ト に符号拡張し た ものを加算し た結果の、ハーフ ワード ア ラ イ ン された メ モ リ ロ ケーシ ョ ンから、 1 ハーフ ワード (16 ビ ッ ト ) ロー ド し ます。 データはレジス タ rD の最下位ハーフ ワード に配置され、 rD の最上位ハーフ ワード はク リ アにな り ます。

仮想保護モード がイ ネーブルになっている場合、 データ TLB ミ ス例外が発生し、 ア ド レ スに対応する有効な変換エン ト リ は TLB では検出されません。 ノ ー ア ク セス ゾーン保護によ り ア ク セスが禁止されている場合は、 データ ス ト レージ例外が発生し ます。 これはユーザー モード および仮想保護モード がイネーブルになっている ア ク セスのみに適用されます。 ア ド レ スの最下位ビ ッ ト がゼロでない場合は、 アラ イ ン されていないデータ ア ク セス例外が発生し ます。

擬似コー ドAddr (rA) + sext(IMM)if TLB_Miss(Addr) and MSR[VM] = 1 thenESR[EC] 10010;ESR[S] 0MSR[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 thenESR[EC] 10000;ESR[S] 0; ESR[DIZ] 1MSR[UMS] MSR[UM]; MSR[VMS] MSR[VM]; MSR[UM] 0; MSR[VM] 0

else if Addr[31] 0 thenESR[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)

• 2 サイ クル (C_AREA_OPTIMIZED=1)

注記

デフ ォル ト で、 タ イプ B 命令は 16 ビ ッ ト の IMM フ ィ ール ド 値を取 り 込み、 それを 32 ビ ッ ト に符号拡張し て、 即値オぺラ ン ド と し て使用し ます。 この動作は、 IMM 命令を使用し て タ イプ B 命令を先行させるこ と で、 上書きでき ます。 32 ビ ッ ト の即値の使用に関し ては、 213 ページの 「imm」 を参照し て く だ さい。

lhui rD、 rA、 IMM

1 1 1 0 0 1 rD rA IMM

0 6 11 16 31

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド 219UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 220: MicroBlaze プロセッサ リファレンス ガイド …...MicroBlaze プロセッサ リファレンス ガイド 3 UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com 2016

第 5章: MicroBlaze 命令セ ッ ト  アーキテ クチャ

lw Load Word

説明

レジス タ rA および rB の内容を加算し た、 ワード ア ラ イ ン された結果の メ モ リ ロ ケーシ ョ ンから 1 ワード (32 ビ ッ ト ) ロード し ます。 データはレジス タ rD に配置されます。

R ビ ッ ト がセ ッ ト されている場合、 ロード されたワード のバイ ト が反転され、 E ビ ッ ト で定義されているエンデ ィ アン と は逆の ものでデータ を ロード し ます (仮想保護モード がイ ネーブルになっている場合)。

EA ビ ッ ト がセ ッ ト されている場合、 拡張ア ド レ スが使用され、 rA と rB を足すのではな く 連結させて形成されます。

仮想保護モード がイ ネーブルになっている場合、 データ TLB ミ ス例外が発生し、 ア ド レ スに対応する有効な変換エン ト リ は TLB では検出されません。

ノ ー ア ク セス ゾーン保護によ り ア ク セスが禁止されている場合は、 データ ス ト レージ例外が発生し ます。 これはユーザー モードおよび仮想保護モード がイ ネーブルになっている ア ク セスのみに適用されます。

ア ド レ スの最下位ビ ッ ト 2 つがゼロでない場合は、 ア ラ イ ン されていないデータ ア ク セス例外が発生します。

擬似コー ドif EA = 1 thenAddr rA) & (rB)

elseAddr (rA) + (rB)

if TLB_Miss(Addr) and MSR[VM] = 1 thenESR[EC] 10010;ESR[S] 0MSR[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 thenESR[EC] 10000;ESR[S] 0; ESR[DIZ] 1MSR[UMS] MSR[UM]; MSR[VMS] MSR[VM]; MSR[UM] 0; MSR[VM] 0

else if Addr[30:31] 0 thenESR[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] (ア ラ イ ン されていないデータ ア ク セス例外が生成される場合)

lw rD、 rA、 rB

lwr rD、 rA、 rB

lwea rD、 rA、 rB

1 1 0 0 1 0 rD rA rB 0 R 0 EA 0 0 0 0 0 0 0

0 6 11 16 21 31

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド 220UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 221: MicroBlaze プロセッサ リファレンス ガイド …...MicroBlaze プロセッサ リファレンス ガイド 3 UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com 2016

第 5章: MicroBlaze 命令セ ッ ト  アーキテ クチャ

レ イテンシ• 1 サイ クル (C_AREA_OPTIMIZED=0 または 2)• 2 サイ クル (C_AREA_OPTIMIZED=1)

注記

MicroBlaze が再順序付け命令を使用する よ う に設定されている場合にのみ (C_USE_REORDER_INSTR = 1)、このワード 反転命令は有効です。

MicroBlaze が拡張ア ド レ ス命令を使用する よ う に設定されている場合にのみ (C_ADDR_SIZE > 32)、 拡張ア ド レ ス命令は有効です。

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド 221UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 222: MicroBlaze プロセッサ リファレンス ガイド …...MicroBlaze プロセッサ リファレンス ガイド 3 UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com 2016

第 5章: MicroBlaze 命令セ ッ ト  アーキテ クチャ

lwi Load Word Immediate

説明

レジス タ rA の内容と IMM の 32 ビ ッ ト に符号拡張し た ものを加算し た結果の、 ワード ア ラ イ ン されたメ モ リ ロ ケーシ ョ ンから、 1 ワード (32 ビ ッ ト ) ロード し ます。 データはレジス タ rD に配置されます。仮想保護モード がイネーブルになっている場合、 データ TLB ミ ス例外が発生し、 また、 ノ ー ア ク セス ゾーン保護によ り ア ク セスが禁止されている場合は、 ア ド レ スに対応する有効な変換エン ト リ は TLB データ ス ト レージ例外では検出されません これはユーザー モード および仮想保護モード がイネーブルになっている ア ク セスのみに適用されます。 ア ド レ スの最下位ビ ッ ト 2 つがゼロでない場合は、 ア ライ ン されていないデータ ア ク セス例外が発生し ます。

擬似コー ドAddr (rA) + sext(IMM)if TLB_Miss(Addr) and MSR[VM] = 1 thenESR[EC] 10010;ESR[S] 0MSR[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 thenESR[EC] 10000;ESR[S] 0; ESR[DIZ] 1MSR[UMS] MSR[UM]; MSR[VMS] MSR[VM]; MSR[UM] 0; MSR[VM] 0

else if Addr[30:31] 0 thenESR[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)

• 2 サイ クル (C_AREA_OPTIMIZED=1)

注記

デフ ォル ト で、 タ イプ B 命令は 16 ビ ッ ト の IMM フ ィ ール ド値を取 り 込み、 それを 32 ビ ッ ト に符号拡張し て、 即値オぺラ ン ド と し て使用し ます。 この動作は、 IMM 命令を使用し て タ イプ B 命令を先行させる こ と で、 上書きでき ます。 32 ビ ッ ト の即値の使用に関し ては、 213 ページの 「imm」 を参照し てく だ さい。

lwi rD、 rA、 IMM

1 1 1 0 1 0 rD rA IMM

0 6 11 16 31

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド 222UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 223: MicroBlaze プロセッサ リファレンス ガイド …...MicroBlaze プロセッサ リファレンス ガイド 3 UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com 2016

第 5章: MicroBlaze 命令セ ッ ト  アーキテ クチャ

lwx Load Word Exclusive

説明

レジス タ 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] 0MSR[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 thenESR[EC] 10000;ESR[S] 0; ESR[DIZ] 1MSR[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] thenESR[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 thenMSR[C] 1

elseMSR[C] 0

lwx rD、 rA、 rB

1 1 0 0 1 0 rD rA rB 1 0 0 0 0 0 0 0 0 0 0

0 6 11 16 21 31

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド 223UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 224: MicroBlaze プロセッサ リファレンス ガイド …...MicroBlaze プロセッサ リファレンス ガイド 3 UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com 2016

第 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)

• 2 サイ クル (C_AREA_OPTIMIZED=1)

注記

この命令は、 セマフ ォやス ピン ロ ッ ク など、 排他的ア ク セス を イ ンプ リ メ ン ト する ために、 SWX と一緒に使用されます。

キ ャ リ ー フ ラ グ (MSR[C]) はすぐにはセ ッ ト されない可能性があ り ます (パイプラ イ ン ス ト ールの動作によ る )。 キ ャ リ ー フ ラ グの正しい値を得る ため、 LWX 命令は、 MSRCLR、 MSRSET、 MTS、 または SRC 命令のすぐ後に続ける こ と はでき ません。

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド 224UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 225: MicroBlaze プロセッサ リファレンス ガイド …...MicroBlaze プロセッサ リファレンス ガイド 3 UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com 2016

第 5章: MicroBlaze 命令セ ッ ト  アーキテ クチャ

mbar Memory Barrier

説明

こ の命令は、 メ モ リ イ ン ターフ ェ イ スの未処理の メ モ リ ア ク セスが、 後に続 く 命令が実行される前に完了する よ う にし ます。 これは、 自己変更コード が正し く 処理される よ う にする ため、 そ し て DMA 転送が問題な く 開始でき る よ う にする ために必要です。

自己変更コード の場合、 まず、 データ ア ク セスがあ る まで待機する ため、 IMM を 1 に設定し、 MBAR 命令を使用する必要があ り ます。 次に、 分岐先キ ャ ッ シ ュ を ク リ アにし、 命令プ リ フ ェ ッ チ バッフ ァーを空にする ために、 IMM を 2 に設定し、 別の MBAR 命令を使用する必要があ り ます。

DMA ユニ ッ ト によ って読み出されるデータが メ モ リ に書き込まれた こ と を確認するには、 IMM を 1 に設定し、 データ ア ク セスがあ る まで待機するだけです。

MicroBlaze を MMU を使用する よ う にコ ンフ ィ ギュ レー ト する と (C_USE_MMU >= 1)、 IMM の最上位ビ ッ ト が 1 にセ ッ ト されている場合、 この命令は特権命令にな り ます。 つま り 、 命令がユーザー モード (MSR[UM] = 1) で実行される と、 特権命令例外が発生し ます。

IMM の最上位ビ ッ ト が 10 (ス リ ープ)、 01 (ハイバーネー ト )、 または 11 (サスペン ド ) にセ ッ ト されていて、 例外が発生し ない場合、 未処理ア ク セスがすべて完了し た後に、 MicroBlaze はス リ ープ モードに入 り 、 それを示すために Sleep、 Hibernate または Suspend 出力信号をそれぞれセ ッ ト し ます。パイプラ イ ンは停止し、 Wakeup 入力信号の 1 ビ ッ ト がアサー ト される まで、 MicroBlaze は実行を継続し ません。

擬似コー ドif (IMM & 1) = 0 thenwait for instruction side memory accesses

if (IMM & 2) = 0 thenwait for data side memory accesses

PC PC + 4if (IMM & 24)!= 0 thenenter sleep mode

変更されるレジス タ• PC• ESR[EC] (特権命令例外が生成される場合)

レ イテンシ• 2 + N cycles when C_INTERCONNECT = 2 (AXI)• 8 + N cycles when C_INTERCONNECT = 3 (ACE)

(N は メ モ リ ア ク セスが完了するのを待機するサイ クル数)

注記

こ の命令の前に imm 命令を先行させる こ と はでき ません。 また遅延ス ロ ッ ト に配置する こ と も でき ません。

ス リ ープ モード に入るには、 mbar 16、 mbar 8、 mbar 24 の代わ り に、 アセンブラー疑似命令の sleep、hibernate、 suspend を使用でき ます。

mbar IMM メ モ リ バ リ ア

1 0 1 1 1 0 IMM 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0

0 6 11 16 31

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド 225UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 226: MicroBlaze プロセッサ リファレンス ガイド …...MicroBlaze プロセッサ リファレンス ガイド 3 UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com 2016

第 5章: MicroBlaze 命令セ ッ ト  アーキテ クチャ

mfs Move From Special Purpose Register

説明

特殊レジス タ rS の内容を レジス タ rD にコ ピーし ます。特殊レジス タ TLBLO および TLBHI は、TLBX によ り イ ンデッ ク ス化された統合 TLB エン ト リ の内容を コ ピーするのに使用されます。

E ビ ッ ト がセ ッ ト されている場合、 特殊レジス タの拡張部分は移動されます。 拡張ア ド レ ス指定がイネーブルになっている と、 EAR、 PVR[8] および PVR[9} レジス タには拡張部分が含まれます (C_ADDR_SIZE > 32)。

擬似コー ドif E = 1 thenswitch (rS):case 0x0003 : (rD) EAR[0:C_ADDR_SIZE-32-1]case 0x2008 : (rD) PVR8[0:C_ADDR_SIZE-32-1]case 0x2009 : (rD) PVR9[0:C_ADDR_SIZE-32-1]default : (rD) Undefined

elseswitch (rS):case 0x0000 : (rD) PCcase 0x0001 : (rD) MSRcase 0x0003 : (rD) EAR[C_ADDR_SIZE-32:C_ADDR_SIZE-1]case 0x0005 : (rD) ESRcase 0x0007 : (rD) FSRcase 0x000B : (rD) BTRcase 0x000D : (rD) EDRcase 0x0800 : (rD) SLRcase 0x0802 : (rD) SHRcase 0x1000 : (rD) PIDcase 0x1001 : (rD) ZPRcase 0x1002 : (rD) TLBXcase 0x1003 : (rD) TLBLOcase 0x1004 : (rD) TLBHIcase 0x200x : (rD) PVRx[C_ADDR_SIZE-32:C_ADDR_SIZE-1] (where x = 0 to 12)default : (rD) Undefined

変更されるレジス タ• rD

レ イテンシ• 1 サイ クル

mfs rD、 rS

mfse rD、 rS

1 0 0 1 0 1 rD 0 E 0 0 0 1 0 rS

0 6 11 16 18 31

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド 226UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 227: MicroBlaze プロセッサ リファレンス ガイド …...MicroBlaze プロセッサ リファレンス ガイド 3 UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com 2016

第 5章: MicroBlaze 命令セ ッ ト  アーキテ クチャ

注記

アセンブ リ 言語で特殊レジス タ を参照するには、 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 のパラ メ ーター 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 が拡張命令を使用する よ う にコ ンフ ィ ギ ュ レー ト されている場合にのみ (C_ADDR_SIZE > 32)、拡張ア ド レ ス命令は有効です。

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド 227UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 228: MicroBlaze プロセッサ リファレンス ガイド …...MicroBlaze プロセッサ リファレンス ガイド 3 UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com 2016

第 5章: MicroBlaze 命令セ ッ ト  アーキテ クチャ

msrclr Read MSR and clear bits in MSR

説明

特殊レジス タ 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 thenESR[EC] 00111

else(rD) (MSR)(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 などの同期分岐命令が続 く 必要があり ます。

msrclr rD、 Imm

1 0 0 1 0 1 rD 1 0 0 0 1 0 Imm15

0 6 11 16 17 31

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド 228UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 229: MicroBlaze プロセッサ リファレンス ガイド …...MicroBlaze プロセッサ リファレンス ガイド 3 UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com 2016

第 5章: MicroBlaze 命令セ ッ ト  アーキテ クチャ

msrset Read MSR and set bits in MSR

説明

特殊レジス タ 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 thenESR[EC] 00111

else(rD) (MSR)(MSR) (MSR) (IMM)if (IMM) & 2Interrupt_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 などの同期分岐命令が続 く 必要があ ります。

msrset rD、 Imm

1 0 0 1 0 1 rD 1 0 0 0 0 0 IMM

0 6 11 16 17 31

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド 229UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 230: MicroBlaze プロセッサ リファレンス ガイド …...MicroBlaze プロセッサ リファレンス ガイド 3 UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com 2016

第 5章: MicroBlaze 命令セ ッ ト  アーキテ クチャ

mts Move To Special Purpose Register

説明

レジス タ 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 thenESR[EC] 00111

elseswitch (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) & 2Interrupt_Ack 11

変更されるレジス タ• rS

• ESR[EC] (特権命令例外が生成される場合)

レ イテンシ• 1 サイ クル

注記

MTS を使用し て MSR を書き込むと き、 こ の命令の実行後 1 サイ クルで、 すべてのビ ッ ト が効力を持ちます。 MSR を書き込む MTS 命令の後に、 MSR の内容を使用する命令が連続し て続 く こ と はでき ません。 IE ビ ッ ト を ク リ アにする と、 後続の命令に対する割 り 込みにはプロセ ッ サは反応し な くな り ます。 EIP または BIP ビ ッ ト をセ ッ ト する と、 後続の命令に対する割 り 込みまたは標準ハードウ ェ ア ブレーク にはプロセ ッ サは反応し な く な り ます。

mts rS、 rA

1 0 0 1 0 1 0 0 0 0 0 rA 1 1 rS

0 6 11 16 18 31

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド 230UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 231: MicroBlaze プロセッサ リファレンス ガイド …...MicroBlaze プロセッサ リファレンス ガイド 3 UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com 2016

第 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 プロセ ッサ リ フ ァ レンス ガイ ド 231UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 232: MicroBlaze プロセッサ リファレンス ガイド …...MicroBlaze プロセッサ リファレンス ガイド 3 UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com 2016

第 5章: MicroBlaze 命令セ ッ ト  アーキテ クチャ

mul Multiply

説明

レジス タ rA および rB の内容を乗算し、 レジス タ rD に結果を出力し ます。 これは 32 ビ ッ ト 値を 32 ビ ッ ト の値で乗算し た もので、 64 ビ ッ ト を出力し ます。 この値の最下位ワード は rD に配置されます。 最上位ワード は破棄されます。

擬似コー ド(rD) LSW( (rA) (rB) )

変更されるレジス タ• rD

レ イテンシ• 1 サイ クル (C_AREA_OPTIMIZED=0 または 2)

• 3 サイ クル (C_AREA_OPTIMIZED=1)

注記

こ の命令は、 ターゲ ッ ト アーキテ クチャに乗算器プ リ ミ テ ィ ブがあ る場合にのみ有効で、 も しそのプ リ ミ テ ィ ブがあ る場合は、 MicroBlaze のパラ メ ーター C_USE_HW_MUL は 0 よ り も大き な値にな ります。

mul rD、 rA、 rB

0 1 0 0 0 0 rD rA rB 0 0 0 0 0 0 0 0 0 0 0

0 6 1

1

1

6

2

1

3

1

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド 232UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 233: MicroBlaze プロセッサ リファレンス ガイド …...MicroBlaze プロセッサ リファレンス ガイド 3 UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com 2016

第 5章: MicroBlaze 命令セ ッ ト  アーキテ クチャ

mulh Multiply High

説明

レジス タ rA および rB の内容を乗算し、 レジス タ rD に結果を出力し ます。 これは 32 ビ ッ ト 値を 32 ビ ッ ト の符号付きの値で乗算し た もので、 64 ビ ッ ト を出力し ます。 こ の値の最上位ワード は rD に配置されます。 最下位ワード は破棄されます。

擬似コー ド(rD) MSW( (rA) (rB) ), signed

変更されるレジス タ• rD

レ イテンシ• 1 サイ クル (C_AREA_OPTIMIZED=0 または 2)

• 3 サイ クル (C_AREA_OPTIMIZED=1)

注記

こ の命令は、 ターゲ ッ ト アーキテ クチャに乗算器プ リ ミ テ ィ ブがあ る場合にのみ有効で、 も しそのプリ ミ テ ィ ブがあ る場合は、 MicroBlaze のパラ メ ーター C_USE_HW_MUL は 2 (Mul64) に設定されます。

MULH が使用されている場合は、 MUL 命令のビ ッ ト 30 および 31 は、 こ の 2 つの命令を区別する ため、 0 にする必要があ り ます。 古いバージ ョ ンの MicroBlaze では、 これらのビ ッ ト は 0 に定義されていま し たが、 実際の値は関係があ り ませんでし た。

mulh rD、 rA、 rB

0 1 0 0 0 0 rD rA rB 0 0 0 0 0 0 0 0 0 0 1

0 6 1

1

1

6

2

1

3

1

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド 233UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 234: MicroBlaze プロセッサ リファレンス ガイド …...MicroBlaze プロセッサ リファレンス ガイド 3 UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com 2016

第 5章: MicroBlaze 命令セ ッ ト  アーキテ クチャ

mulhuMultiply High Unsigned

説明

レジス タ rA および rB の内容を乗算し、 レジス タ rD に結果を出力し ます。 これは 32 ビ ッ ト の値を 32 ビ ッ ト の符号な しの値で乗算し た もので、 符号な し 64 ビ ッ ト を出力し ます。 こ の値の最上位ワードは rD に配置されます。 最下位ワード は破棄されます。

擬似コー ド(rD) MSW( (rA) (rB) ), unsigned

変更されるレジス タ• rD

レ イテンシ• 1 サイ クル (C_AREA_OPTIMIZED=0 または 2)

• 3 サイ クル (C_AREA_OPTIMIZED=1)

注記

こ の命令は、 ターゲ ッ ト アーキテ クチャに乗算器プ リ ミ テ ィ ブがあ る場合にのみ有効で、 も しそのプリ ミ テ ィ ブがあ る場合は、 MicroBlaze のパラ メ ーター C_USE_HW_MUL は 2 (Mul64) に設定されます。

MULHU が使用されている場合は、 MUL 命令のビ ッ ト 30 および 31 は、 この 2 つの命令を区別する ため、 0 にする必要があ り ます。 古いバージ ョ ンの MicroBlaze では、 これらのビ ッ ト は 0 に定義されていま し たが、 実際の値は関係があ り ませんでし た。

mulhu rD、 rA、 rB

0 1 0 0 0 0 rD rA rB 0 0 0 0 0 0 0 0 0 1 1

0 6 1

1

1

6

2

1

3

1

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド 234UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 235: MicroBlaze プロセッサ リファレンス ガイド …...MicroBlaze プロセッサ リファレンス ガイド 3 UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com 2016

第 5章: MicroBlaze 命令セ ッ ト  アーキテ クチャ

mulhsuMultiply High Signed Unsigned

説明

レジス タ rA および rB の内容を乗算し、 レジス タ rD に結果を出力し ます。 これは 32 ビ ッ ト の符号付きの値を 32 ビ ッ ト の符号な しの値で乗算し た もので、 符号な し 64 ビ ッ ト を出力し ます。 この値の最上位ワード は rD に配置されます。 最下位ワード は破棄されます。

擬似コー ド(rD) MSW( (rA), signed (rB), unsigned ), signed

変更されるレジス タ• rD

レ イテンシ• 1 サイ クル (C_AREA_OPTIMIZED=0 または 2)

• 3 サイ クル (C_AREA_OPTIMIZED=1)

注記

こ の命令は、 ターゲ ッ ト アーキテ クチャに乗算器プ リ ミ テ ィ ブがあ る場合にのみ有効で、 も しそのプ リ ミ テ ィ ブがあ る場合は、 MicroBlaze のパラ メ ーター C_USE_HW_MUL は 2 (Mul64) に設定されます。

MULHSU が使用されている場合は、 MUL 命令のビ ッ ト 30 および 31 は、 この 2 つの命令を区別するため、 0 にする必要があ り ます。 古いバージ ョ ンの MicroBlaze では、 これらのビ ッ ト は 0 に定義されていま し たが、 実際の値は関係があ り ませんでし た。

mulhsu rD、 rA、 rB

0 1 0 0 0 0 rD rA rB 0 0 0 0 0 0 0 0 0 1 0

0 6 1

1

1

6

2

1

3

1

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド 235UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 236: MicroBlaze プロセッサ リファレンス ガイド …...MicroBlaze プロセッサ リファレンス ガイド 3 UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com 2016

第 5章: MicroBlaze 命令セ ッ ト  アーキテ クチャ

muli Multiply Immediate

説明

レジス タ rA の内容と IMM の 32 ビ ッ ト に符号拡張された値を乗算し、 レジス タ rD に結果を出力します。 これは 32 ビ ッ ト 値を 32 ビ ッ ト の値で乗算し た もので、 64 ビ ッ ト を出力し ます。 この値の最下位ワード は rD に配置されます。 最上位ワード は破棄されます。

擬似コー ド(rD) LSW( (rA) sext(IMM) )

変更されるレジス タ• rD

レ イテンシ• 1 サイ クル (C_AREA_OPTIMIZED=0 または 2)

• 3 サイ クル (C_AREA_OPTIMIZED=1)

注記

デフ ォル ト で、 タ イプ B 命令は 16 ビ ッ ト の IMM フ ィ ール ド 値を取 り 込み、 それを 32 ビ ッ ト に符号拡張し て、 即値オぺラ ン ド と し て使用し ます。 この動作は、 IMM 命令を使用し て タ イプ B 命令を先行させる こ と で、 上書きでき ます。 32 ビ ッ ト の即値の使用に関し ては、 213 ページの 「imm」 を参照し て く だ さい。

こ の命令は、 ターゲ ッ ト アーキテ クチャに乗算器プ リ ミ テ ィ ブがあ る場合にのみ有効で、 も しそのプ リ ミ テ ィ ブがあ る場合は、 MicroBlaze のパラ メ ーター C_USE_HW_MUL は 0 よ り も大き な値にな ります。

muli rD、 rA、 IMM

0 1 1 0 0 0 rD rA IMM

0 6 1

1

1

6

3

1

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド 236UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 237: MicroBlaze プロセッサ リファレンス ガイド …...MicroBlaze プロセッサ リファレンス ガイド 3 UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com 2016

第 5章: MicroBlaze 命令セ ッ ト  アーキテ クチャ

or Logical OR

説明

レジス タ rA の内容がレジス タ rB の内容 と OR されていて、 その結果がレジス タ rD に配置されます。

擬似コー ド(rD) (rA) (rB)

変更されるレジス タ• rD

レ イテンシ• 1 サイ クル

注記

アセンブラーの擬似命令 nop は 「or r0, r0, r0」 と し て イ ンプ リ メ ン ト されます。

or rD、 rA、 rB

1 0 0 0 0 0 rD rA rB 0 0 0 0 0 0 0 0 0 0 0

0 6 1

1

1

6

2

1

3

1

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド 237UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 238: MicroBlaze プロセッサ リファレンス ガイド …...MicroBlaze プロセッサ リファレンス ガイド 3 UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com 2016

第 5章: MicroBlaze 命令セ ッ ト  アーキテ クチャ

ori Logical OR with Immediate

説明

レジス タ rA の内容が IMM フ ィ ール ド の値 (32 ビ ッ ト に符号拡張された もの) で OR され、 その結果がレジス タ rD に配置されます。

擬似コー ド(rD) (rA) sext(IMM)

変更されるレジス タ• rD

レ イテンシ• 1 サイ クル

注記

デフ ォル ト で、 タ イプ B 命令は 16 ビ ッ ト の IMM フ ィ ール ド値を取 り 込み、 それを 32 ビ ッ ト に符号拡張し て、 即値オぺラ ン ド と し て使用し ます。 こ の動作は、 IMM 命令を使用し て タ イプ B 命令を先行させる こ と で、 上書きでき ます。 32 ビ ッ ト の即値の使用に関し ては、 213 ページの 「imm」を参照し て く だ さい。

ori rD、 rA、 IMM

1 0 1 0 0 0 rD rA IMM

0 6 1

1

1

6

3

1

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド 238UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 239: MicroBlaze プロセッサ リファレンス ガイド …...MicroBlaze プロセッサ リファレンス ガイド 3 UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com 2016

第 5章: MicroBlaze 命令セ ッ ト  アーキテ クチャ

pcmpbf Pattern Compare Byte Find

説明

レジス タ rA の内容がレジス タ rB の内容 と ビ ッ ト 単位で比較されます。

• rD は最初に一致し たバイ ト のペアの位置でロード され、 位置 1 の MSB から始ま り 、 位置 4 の LSB まで

比較されます。

• バイ ト ペアがどれも一致し ない場合は、 rD は 0 にセ ッ ト されます。

擬似コー ドif rB[0:7] = rA[0:7] then(rD) 1

elseif rB[8:15] = rA[8:15] then(rD) 2

elseif rB[16:23] = rA[16:23] then(rD) 3

elseif rB[24:31] = rA[24:31] then(rD) 4

else(rD) 0

変更されるレジス タ• rD

レ イテンシ• 1 サイ クル

注記

こ の命令は C_USE_PCMP_INSTR を 1 に設定し ている場合のみ使用可能です。

pcmpbf rD、 rA、 rB バイ ト 単位の比較で、 最初に一致し た位

置を返す

1 0 0 0 0 0 rD rA rB 1 0 0 0 0 0 0 0 0 0 0

0 6 1

1

1

6

2

1

3

1

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド 239UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 240: MicroBlaze プロセッサ リファレンス ガイド …...MicroBlaze プロセッサ リファレンス ガイド 3 UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com 2016

第 5章: MicroBlaze 命令セ ッ ト  アーキテ クチャ

pcmpeq Pattern Compare Equal

説明

レジス タ rA の内容がレジス タ rB の内容 と比較されます。

• こ の 2 つが一致し ない と、 rD は 1 でロード され、 そ う でない場合は 0 でロード されます。

擬似コー ドif (rB) = (rA) then(rD) 1

else(rD) 0

変更されるレジス タ• rD

レ イテンシ• 1 サイ クル

注記

こ の命令は C_USE_PCMP_INSTR を 1 に設定し ている場合のみ使用可能です。

pcmpeq rD、 rA、 rB 正のブール値に等しいかど う かを比較

1 0 0 0 1 0 rD rA rB 1 0 0 0 0 0 0 0 0 0 0

0 6 1

1

1

6

2

1

3

1

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド 240UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 241: MicroBlaze プロセッサ リファレンス ガイド …...MicroBlaze プロセッサ リファレンス ガイド 3 UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com 2016

第 5章: MicroBlaze 命令セ ッ ト  アーキテ クチャ

pcmpne Pattern Compare Not Equal

説明

レジス タ rA の内容がレジス タ rB の内容 と比較されます。

• こ の 2 つが一致し ない と、 rD には 0 がロード され、 そ う でない場合は 1 がロード されます。

擬似コー ドif (rB) = (rA) then(rD) 0

else(rD) 1

変更されるレジス タ• rD

レ イテンシ• 1 サイ クル

注記

こ の命令は C_USE_PCMP_INSTR を 1 に設定し ている場合のみ使用可能です。

pcmpne rD、 rA、 rB 負のブール値に等しいかど う かを比較

1 0 0 0 1 1 rD rA rB 1 0 0 0 0 0 0 0 0 0 0

0 6 1

1

1

6

2

1

3

1

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド 241UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 242: MicroBlaze プロセッサ リファレンス ガイド …...MicroBlaze プロセッサ リファレンス ガイド 3 UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com 2016

第 5章: MicroBlaze 命令セ ッ ト  アーキテ クチャ

put Put to stream interface

説明

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) で実行される と、 特権命令例外が発生し ます。

naput rA、 FSLx リ ン ク x にデータ を配置

n = ノ ンブロ ッ キング

a = ア ト ミ ッ ク

tnaput FSLx リ ン ク x にデータ を配置 (テス ト のみ)n = ノ ンブロ ッ キング

a = ア ト ミ ッ ク

ncaput rA、 FSLx リ ン ク x に制御を配置

n = ノ ンブロ ッ キング

a = ア ト ミ ッ ク

tncaput FSLx リ ン ク x に制御を配置 (テス ト のみ)n = ノ ンブロ ッ キング

a = ア ト ミ ッ ク

0 1 1 0 1 1 0 0 0 0 0 rA 1 n c t a 0 0 0 0 0 0 0 FSLx

0 6 11 16 28 31

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド 242UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 243: MicroBlaze プロセッサ リファレンス ガイド …...MicroBlaze プロセッサ リファレンス ガイド 3 UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com 2016

第 5章: MicroBlaze 命令セ ッ ト  アーキテ クチャ

擬似コー ドif MSR[UM] = 1 thenESR[EC] 00111

elsex FSLxif x >= C_FSL_LINKS thenx 0

Mx_AXIS_TDATA (rA)if (n = 1) thenMSR[Carry] Mx_AXIS_TVALID Mx_AXIS_TREADY

Mx_AXIS_TLAST C

変更されるレジス タ• MSR[Carry]

• ESR[EC] (特権命令例外が生成される場合)

レ イテンシ• 1 サイ クル (C_AREA_OPTIMIZED=0 または 2)

• 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 プロセ ッサ リ フ ァ レンス ガイ ド 243UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 244: MicroBlaze プロセッサ リファレンス ガイド …...MicroBlaze プロセッサ リファレンス ガイド 3 UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com 2016

第 5章: MicroBlaze 命令セ ッ ト  アーキテ クチャ

putd Put to stream interface dynamic

説明

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) で実行される と、 特権命令例外が発生し ます。

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 1 1 0 0 0 0 0 rA rB 1 n c t a 0 0 0 0 0 0

0 6 11 16 21 31

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド 244UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 245: MicroBlaze プロセッサ リファレンス ガイド …...MicroBlaze プロセッサ リファレンス ガイド 3 UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com 2016

第 5章: MicroBlaze 命令セ ッ ト  アーキテ クチャ

擬似コー ドif MSR[UM] = 1 thenESR[EC] 00111

elsex rB[28:31]if x >= C_FSL_LINKS thenx 0

Mx_AXIS_TDATA (rA)if (n = 1) thenMSR[Carry] Mx_AXIS_TVALID Mx_AXIS_TREADY

Mx_AXIS_TLAST C

変更されるレジス タ• MSR[Carry]

• ESR[EC] (特権命令例外が生成される場合)

レ イテンシ• 1 サイ クル (C_AREA_OPTIMIZED=0 または 2)

• 2 サイ クル (C_AREA_OPTIMIZED=1)

この命令のブロ ッ キング バージ ョ ンは、 命令が完了でき る まで MicroBlaze のパイプラ イ ンを ス ト ールさせます。 命令がア ト ミ ッ ク でなければ割 り 込みは実行されます。 ア ト ミ ッ クだ と割 り 込みは実行されません。

注記

割 り 込みが実行されな く なって し ま う ので、 こ の命令のブロ ッ キング バージ ョ ンは、 遅延ス ロ ッ ト に配置し ないで く ださ い。

MicroBlaze パラ メ ーター C_FSL_LINKS が 0 よ り 大き く 、パラ メ ーター C_USE_EXTENDED_FSL_INSTR が 1 に設定されている場合にのみ、 これらの命令は使用可能です。

パフ ォーマン ス上の理由から ど う し て も この命令をユーザー モード で実行し なければな ら ない場合を除き、 こ の命令をユーザー モード で実行し ないよ う にし て く だ さい。 リ ン クの誤用を防ぐためのハードウ ェ ア保護がすべて削除されて し まいます。

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド 245UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 246: MicroBlaze プロセッサ リファレンス ガイド …...MicroBlaze プロセッサ リファレンス ガイド 3 UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com 2016

第 5章: MicroBlaze 命令セ ッ ト  アーキテ クチャ

rsub Arithmetic Reverse Subtract

説明

レジス タ 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 thenMSR[C] CarryOut

変更されるレジス タ• rD

• MSR[C]

レ イテンシ• 1 サイ クル

注記

減算では、 キ ャ リ ー = (ボロー ) です。 減算でキ ャ リ ー (繰 り 上が り ) が設定される場合は、 ボロー (繰り 下が り ) がない と い う こ と で、 キ ャ リ ーが ク リ アになる と、 ボローがあ る と い う こ と にな り ます。

rsub rD、 rA、 rB 減算

rsubc rD、 rA、 rB キ ャ リ ー付き減算

rsubk rD、 rA、 rB 減算およびキ ャ リ ー保持

rsubkc rD、 rA、 rB キ ャ リ ー付き減算およびキ ャ リ ー保持

0 0 0 K C 1 rD rA rB 0 0 0 0 0 0 0 0 0 0 0

0 6 1

1

1

6

2

1

3

1

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド 246UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 247: MicroBlaze プロセッサ リファレンス ガイド …...MicroBlaze プロセッサ リファレンス ガイド 3 UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com 2016

第 5章: MicroBlaze 命令セ ッ ト  アーキテ クチャ

rsubi

Arithmetic Reverse Subtract Immediate

説明

レジス タ 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 thenMSR[C] CarryOut

変更されるレジス タ• rD

• MSR[C]

レ イテンシ• 1 サイ クル

注記

減算では、 キ ャ リ ー = (ボロー ) です。 減算でキ ャ リ ー (繰 り 上が り ) が設定される場合は、 ボロー (繰 り下が り ) がない と い う こ と で、 キ ャ リ ーが ク リ アにな る と、 ボローがあ る と い う こ と にな り ます。 デフ ォル ト で、 タ イプ B 命令は 16 ビ ッ ト の IMM フ ィ ール ド値を取 り 込み、 それを 32 ビ ッ ト に符号拡張し て、即値オぺラ ン ド と し て使用し ます。 この動作は、 IMM 命令を使用し て タ イプ B 命令を先行させる こ とで、 上書きでき ます。 32 ビ ッ ト の即値の使用に関し ては、 213 ページの 「imm」 を参照し て く だ さい。

rsubi rD、 rA、 IMM 即値減算

rsubic rD、 rA、 IMM キ ャ リ ー付き即値減算

rsubik rD、 rA、 IMM 即値減算およびキ ャ リ ー保持

rsubikc rD、 rA、 IMM キ ャ リ ー付き即値減算およびキ ャ リ ー保持

0 0 1 K C 1 rD rA IMM

0 6 1

1

1

6

3

1

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド 247UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 248: MicroBlaze プロセッサ リファレンス ガイド …...MicroBlaze プロセッサ リファレンス ガイド 3 UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com 2016

第 5章: MicroBlaze 命令セ ッ ト  アーキテ クチャ

rtbd Return from Breakrn from Interrupt

説明

ブレーク から戻る と、 rA の内容 と IMM フ ィ ール ド (32 ビ ッ ト に符号拡張された もの) で指定された ロケーシ ョ ンに分岐し ます。 また、 MSR の BIP フ ラ グを ク リ アにする こ と によ り 実行後ブレーク を イネーブルにし ます。

こ の命令には常に遅延ス ロ ッ ト があ り ます。 RTBD の後に続 く 命令は、 常に、 分岐先の前に実行されます。 その遅延ス ロ ッ ト 命令ではブレークはデ ィ スエーブルになっています。

MicroBlaze が MMU を使用する よ う に (C_USE_MMU >= 1) 設定されている場合、 この命令は特権命令です。 つま り 、 命令がユーザー モード (MSR[UM] = 1) で実行される と、 特権命令例外が発生し ます。

擬似コー ドif MSR[UM] = 1 thenESR[EC] 00111

elsePC (rA) sext(IMM)allow following instruction to complete executionMSR[BIP] 0MSR[UM] MSR[UMS]MSR[VM] MSR[VMS]

変更されるレジス タ• PC

• MSR[BIP]、 MSR[UM]、 MSR[VM]

• ESR[EC] (特権命令例外が生成される場合)

レ イテンシ• 2 サイ クル

注記

変換は汎用レジス タ r16 を rA と し て使用する ための ものです。

遅延ス ロ ッ ト は、 IMM、 分岐、 またはブレーク の命令で使用する こ と はでき ません。 割 り 込みおよび外部ハード ウ ェ ア ブレークは、 遅延ス ロ ッ ト の分岐が完了する まで先送 り されます。

rtbd rA、 IMM

1 0 1 1 0 1 1 0 0 1 0 rA IMM

0 6 11 16 31

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド 248UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 249: MicroBlaze プロセッサ リファレンス ガイド …...MicroBlaze プロセッサ リファレンス ガイド 3 UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com 2016

第 5章: MicroBlaze 命令セ ッ ト  アーキテ クチャ

rtid Return from Interruptrn from Interrupt

説明

割 り 込みから戻る と、 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 thenESR[EC] 00111

elsePC (rA) sext(IMM)Interrupt_Ack 10allow following instruction to complete executionMSR[IE] 1MSR[UM] MSR[UMS]MSR[VM] MSR[VMS]Interrupt_Ack 11

変更されるレジス タ• PC

• MSR[IE]、 MSR[UM]、 MSR[VM]

• ESR[EC] (特権命令例外が生成される場合)

レ イテンシ• 2 サイ クル

注記

変換は汎用レジス タ r14 を rA と し て使用する ためのものです。

遅延ス ロ ッ ト は、 IMM、 分岐、 またはブレーク の命令で使用する こ と はでき ません。 割 り 込みおよび外部ハード ウ ェ ア ブレークは、 遅延ス ロ ッ ト の分岐が完了する まで先送 り されます。

rtid rA、 IMM

1 0 1 1 0 1 1 0 0 0 1 rA IMM

0 6 11 16 31

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド 249UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 250: MicroBlaze プロセッサ リファレンス ガイド …...MicroBlaze プロセッサ リファレンス ガイド 3 UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com 2016

第 5章: MicroBlaze 命令セ ッ ト  アーキテ クチャ

rted Return from Exception

説明

例外から戻る と、 rA の内容 と IMM フ ィ ール ド (32 ビ ッ ト に符号拡張された もの) で指定された ロ ケーシ ョ ンに分岐し ます。 また、 実行後に例外がイ ネーブルにな り ます。

この命令には常に遅延ス ロ ッ ト があ り ます。 RTED の後に続 く 命令は、 常に、 分岐先の前に実行されます。

MicroBlaze が MMU を使用する よ う に (C_USE_MMU >= 1) 設定されている場合、 この命令は特権命令です。 つま り 、 命令がユーザー モード (MSR[UM] = 1) で実行される と、 特権命令例外が発生し ます。

擬似コー ドif MSR[UM] = 1 thenESR[EC] 00111

elsePC (rA) sext(IMM)allow following instruction to complete executionMSR[EE] 1MSR[EIP] 0MSR[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 のア ド レ スに戻 り ます。

rted rA、 IMM

1 0 1 1 0 1 1 0 1 0 0 rA IMM

0 6 11 16 31

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド 250UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 251: MicroBlaze プロセッサ リファレンス ガイド …...MicroBlaze プロセッサ リファレンス ガイド 3 UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com 2016

第 5章: MicroBlaze 命令セ ッ ト  アーキテ クチャ

rtsd Return from Subroutine

説明

サブルーチンから戻る と、 rA の内容と IMM フ ィ ール ド (32 ビ ッ ト に符号拡張された もの) で指定された ロ ケーシ ョ ンに分岐し ます。

こ の命令には常に遅延ス ロ ッ ト があ り ます。 RTSD の後に続 く 命令は、 常に、 分岐先の前に実行されます。

擬似コー ドPC (rA) sext(IMM)allow following instruction to complete execution

変更されるレジス タ• PC

レ イテンシ• 1 サイ クル (正し く 分岐予測がされる場合)

• 2 サイ クル (分岐先キ ャ ッ シュがデ ィ スエーブルの場合)

• 3 サイ クル (C_AREA_OPTIMIZED=0 で分岐予測が間違っている場合)

• 7 ~ 9 サイ クル (C_AREA_OPTIMIZED=2 で分岐予測が間違っている場合)

注記

変換は汎用レジス タ r15 を rA と し て使用する ための ものです。

遅延ス ロ ッ ト は、 IMM、 分岐、 またはブレーク の命令で使用する こ と はでき ません。 割 り 込みおよび外部ハード ウ ェ ア ブレークは、 遅延ス ロ ッ ト の分岐が完了する まで先送 り されます。

rtsd rA、 IMM

1 0 1 1 0 1 1 0 0 0 0 rA IMM

0 6 1

1

1

6

3

1

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド 251UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 252: MicroBlaze プロセッサ リファレンス ガイド …...MicroBlaze プロセッサ リファレンス ガイド 3 UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com 2016

第 5章: MicroBlaze 命令セ ッ ト  アーキテ クチャ

sb Store Byte

説明

レジス タ rD の最下位バイ ト の内容を、 レジス タ rA および rB の内容を足し た結果の メ モ リ ロ ケーシ ョ ンに格納し ます。

R ビ ッ ト がセ ッ ト されている場合、 バイ ト 反転 メ モ リ ロ ケーシ ョ ンが使用され、 E ビ ッ ト で定義されているエンデ ィ アン と は逆の ものでデータ を格納し ます (仮想保護モード がイネーブルになっている場合)。

EA ビ ッ ト がセ ッ ト されている場合、 拡張ア ド レ スが使用され、 rA と rB を足すのではな く 連結させて形成されます。

仮想保護モード がイネーブルになっている場合、 データ TLB ミ ス例外が発生し、 ア ド レ スに対応する有効な変換エン ト リ は TLB では検出されません。

仮想保護モード がイネーブルになっている とデータ ス ト レージ例外が発生し、 ノ ー ア ク セス または読み出し専用ゾーン保護によ ってア ク セスが禁止されます。 ノ ー ア ク セス許可はユーザー モード の場合にのみ発生し ます。

擬似コー ドif EA = 1 thenAddr rA) & (rB)

elseAddr (rA) + (rB)

if TLB_Miss(Addr) and MSR[VM] = 1 thenESR[EC] 10010;ESR[S] 1MSR[UMS] MSR[UM]; MSR[VMS] MSR[VM]; MSR[UM] 0; MSR[VM] 0

else if Access_Protected(Addr) and MSR[VM] = 1 thenESR[EC] 10000;ESR[S] 1; ESR[DIZ] No-access-allowedMSR[UMS] MSR[UM]; MSR[VMS] MSR[VM]; MSR[UM] 0; MSR[VM] 0

elseMem(Addr) rD)[24:31]

変更されるレジス タ• MSR[UM]、 MSR[VM]、 MSR[UMS]、 MSR[VMS] (例外が生成される場合)

• ESR[EC]、 ESR[S] (例外が生成される場合)

• ESR[DIZ] (データ ス ト レージ例外が生成される場合)

レ イテンシ• 1 サイ クル (C_AREA_OPTIMIZED=0 または 2)

• 2 サイ クル (C_AREA_OPTIMIZED=1)

sb rD、 rA、 rB

sbr rD、 rA、 rB

sbea rD、 rA、 rB

1 1 0 1 0 0 rD rA rB 0 R 0 EA 0 0 0 0 0 0 0

0 6 11 16 21 31

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド 252UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 253: MicroBlaze プロセッサ リファレンス ガイド …...MicroBlaze プロセッサ リファレンス ガイド 3 UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com 2016

第 5章: MicroBlaze 命令セ ッ ト  アーキテ クチャ

注記

MicroBlaze が再順序付け命令を使用する よ う に設定されている場合にのみ (C_USE_REORDER_INSTR = 1)、 このバイ ト 反転命令は有効です。

MicroBlaze が拡張ア ド レ ス命令を使用する よ う に設定されている場合にのみ (C_ADDR_SIZE > 32)、 拡張ア ド レ ス命令は有効です。

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド 253UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 254: MicroBlaze プロセッサ リファレンス ガイド …...MicroBlaze プロセッサ リファレンス ガイド 3 UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com 2016

第 5章: MicroBlaze 命令セ ッ ト  アーキテ クチャ

sbi Store Byte Immediate

説明

レジス タ rD の最下位バイ ト の内容に、 レジス タ rA の内容と IMM の 32 ビ ッ ト に符号拡張し た値を足し た結果の メ モ リ ロ ケーシ ョ ンに格納し ます。

仮想保護モード がイネーブルになっている場合、 データ TLB ミ ス例外が発生し、 ア ド レ スに対応する有効な変換エン ト リ は TLB では検出されません。

仮想保護モード がイネーブルになっている とデータ ス ト レージ例外が発生し、 ノ ー ア ク セス または読み出し専用ゾーン保護によ ってア ク セスが禁止されます。 ノ ー ア ク セス許可はユーザー モード の場合にのみ発生し ます。

擬似コー ドAddr (rA) sext(IMM)if TLB_Miss(Addr) and MSR[VM] = 1 thenESR[EC] 10010;ESR[S] 1MSR[UMS] MSR[UM]; MSR[VMS] MSR[VM]; MSR[UM] 0; MSR[VM] 0

else if Access_Protected(Addr) and MSR[VM] = 1 thenESR[EC] 10000;ESR[S] 1; ESR[DIZ] No-access-allowedMSR[UMS] MSR[UM]; MSR[VMS] MSR[VM]; MSR[UM] 0; MSR[VM] 0

elseMem(Addr) rD)[24:31]

変更されるレジス タ• MSR[UM]、 MSR[VM]、 MSR[UMS]、 MSR[VMS] (例外が生成される場合)

• ESR[EC]、 ESR[S] (例外が生成される場合)

• ESR[DIZ] (データ ス ト レージ例外が生成される場合)

レ イテンシ• 1 サイ クル (C_AREA_OPTIMIZED=0 または 2)

• 2 サイ クル (C_AREA_OPTIMIZED=1)

注記

デフ ォル ト で、 タ イプ B 命令は 16 ビ ッ ト の IMM フ ィ ール ド値を取 り 込み、 それを 32 ビ ッ ト に符号拡張し て、 即値オぺラ ン ド と し て使用し ます。 この動作は、 IMM 命令を使用し て タ イプ B 命令を先行させる こ と で、 上書きでき ます。 32 ビ ッ ト の即値の使用に関し ては、 213 ページの 「imm」 を参照し て く だ さい。

sbi rD、 rA、 IMM

1 1 1 1 0 0 rD rA IMM

0 6 11 16 31

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド 254UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 255: MicroBlaze プロセッサ リファレンス ガイド …...MicroBlaze プロセッサ リファレンス ガイド 3 UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com 2016

第 5章: MicroBlaze 命令セ ッ ト  アーキテ クチャ

sext16 Sign Extend Halfword

説明

こ の命令は 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 サイ クル

sext16 rD、 rA

1 0 0 1 0 0 rD rA 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 1

0 6 1

1

1

6

3

1

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド 255UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 256: MicroBlaze プロセッサ リファレンス ガイド …...MicroBlaze プロセッサ リファレンス ガイド 3 UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com 2016

第 5章: MicroBlaze 命令セ ッ ト  アーキテ クチャ

sext8 Sign Extend Byte

説明

こ の命令は 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 サイ クル

sext8 rD、 rA

1 0 0 1 0 0 rD rA 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0

0 6 1

1

1

6

3

1

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド 256UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 257: MicroBlaze プロセッサ リファレンス ガイド …...MicroBlaze プロセッサ リファレンス ガイド 3 UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com 2016

第 5章: MicroBlaze 命令セ ッ ト  アーキテ クチャ

sh Store Halfword

説明

レジス タ rD の最下位ハーフ ワード の内容を、 レジス タ rA および rB の内容を足し た結果の、 ハーフワード にア ラ イ ン された メ モ リ ロ ケーシ ョ ンに格納し ます。

R ビ ッ ト がセ ッ ト されている場合、 ハーフ ワー ド反転 メ モ リ ロ ケーシ ョ ンが使用され、 ハーフ ワードの 2 バイ ト が反転し、 E ビ ッ ト で定義されているエンデ ィ アン と は逆の ものでデータ を格納し ます (仮想保護モード がイ ネーブルになっている場合)。

EA ビ ッ ト がセ ッ ト されている場合、 拡張ア ド レ スが使用され、 rA と rB を足すのではな く 連結させて形成されます。

仮想保護モード がイネーブルになっている場合、 データ TLB ミ ス例外が発生し、 ア ド レ スに対応する有効な変換エン ト リ は TLB では検出されません。

仮想保護モード がイネーブルになっている とデータ ス ト レージ例外が発生し、 ノ ー ア ク セス または読み出し専用ゾーン保護によ ってア ク セスが禁止されます。 ノ ー ア ク セス許可はユーザー モード の場合にのみ発生し ます。

ア ド レ スの最下位ビ ッ ト がゼロでない場合は、 ア ラ イ ン されていないデータ ア ク セス例外が発生し ます。

擬似コー ドif EA = 1 thenAddr rA) & (rB)

elseAddr (rA) + (rB)

if TLB_Miss(Addr) and MSR[VM] = 1 thenESR[EC] 10010;ESR[S] 1MSR[UMS] MSR[UM]; MSR[VMS] MSR[VM]; MSR[UM] 0; MSR[VM] 0

else if Access_Protected(Addr) and MSR[VM] = 1 thenESR[EC] 10000;ESR[S] 1; ESR[DIZ] No-access-allowedMSR[UMS] MSR[UM]; MSR[VMS] MSR[VM]; MSR[UM] 0; MSR[VM] 0

else if Addr[31] 0 thenESR[EC] 00001; ESR[W] 0; ESR[S] 1; ESR[Rx] rD

elseMem(Addr) (rD)[16:31]

変更されるレジス タ• MSR[UM]、 MSR[VM]、 MSR[UMS]、 MSR[VMS] (TLB ミ ス例外またはデータ ス ト レージ例外が生成される

場合)• ESR[EC]、 ESR[S] (例外が生成される場合)• ESR[DIZ] (データ ス ト レージ例外が生成される場合)• ESR[W]、 ESR[Rx] (ア ラ イ ン されていないデータ ア ク セス例外が生成される場合)

sh rD、 rA、 rB

shr rD、 rA、 rB

shea rD、 rA、 rB

1 1 0 1 0 1 rD rA rB 0 R 0 EA 0 0 0 0 0 0 0

0 6 11 16 21 31

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド 257UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 258: MicroBlaze プロセッサ リファレンス ガイド …...MicroBlaze プロセッサ リファレンス ガイド 3 UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com 2016

第 5章: MicroBlaze 命令セ ッ ト  アーキテ クチャ

レ イテンシ• 1 サイ クル (C_AREA_OPTIMIZED=0 または 2)• 2 サイ クル (C_AREA_OPTIMIZED=1)

注記

MicroBlaze が再順序付け命令を使用する よ う に設定されている場合にのみ (C_USE_REORDER_INSTR = 1)、このハーフ ワード 反転命令は有効です。

MicroBlaze が拡張ア ド レ ス命令を使用する よ う に設定されている場合にのみ (C_ADDR_SIZE > 32)、 拡張ア ド レ ス命令は有効です。

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド 258UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 259: MicroBlaze プロセッサ リファレンス ガイド …...MicroBlaze プロセッサ リファレンス ガイド 3 UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com 2016

第 5章: MicroBlaze 命令セ ッ ト  アーキテ クチャ

shi Store Halfword Immediate

説明

レジス タ rD の最下位ハーフ ワード の内容を、 レジス タ rA の内容と IMM の 32 ビ ッ ト に符号拡張した値を足し た結果の、 ハーフ ワード にア ラ イ ン された メ モ リ ロ ケーシ ョ ンに格納し ます。

仮想保護モード がイネーブルになっている場合、 データ TLB ミ ス例外が発生し、 ア ド レ スに対応する有効な変換エン ト リ は TLB では検出されません。 仮想保護モード がイ ネーブルになっている とデータ ス ト レージ例外が発生し、 ノー ア ク セス または読み出し専用ゾーン保護によ ってア ク セスが禁止されます。 ノー ア ク セス許可はユーザー モード の場合にのみ発生し ます。 ア ド レ スの最下位ビ ッ ト がゼロでない場合は、 ア ラ イ ン されていないデータ ア ク セス例外が発生し ます。

擬似コー ドAddr (rA) + sext(IMM)if TLB_Miss(Addr) and MSR[VM] = 1 thenESR[EC] 10010;ESR[S] 1MSR[UMS] MSR[UM]; MSR[VMS] MSR[VM]; MSR[UM] 0; MSR[VM] 0

else if Access_Protected(Addr) and MSR[VM] = 1 thenESR[EC] 10000;ESR[S] 1; ESR[DIZ] No-access-allowedMSR[UMS] MSR[UM]; MSR[VMS] MSR[VM]; MSR[UM] 0; MSR[VM] 0

else if Addr[31] 0 thenESR[EC] 00001; ESR[W] 0; ESR[S] 1; ESR[Rx] rD

elseMem(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)

• 2 サイ クル (C_AREA_OPTIMIZED=1)

注記

デフ ォル ト で、 タ イプ B 命令は 16 ビ ッ ト の IMM フ ィ ール ド 値を取 り 込み、 それを 32 ビ ッ ト に符号拡張し て、 即値オぺラ ン ド と し て使用し ます。 この動作は、 IMM 命令を使用し て タ イプ B 命令を先行させる こ と で、 上書きでき ます。 32 ビ ッ ト の即値の使用に関し ては、 213 ページの 「imm」 を参照し て く だ さい。

shi rD、 rA、 IMM

1 1 1 1 0 1 rD rA IMM

0 6 11 16 31

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド 259UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 260: MicroBlaze プロセッサ リファレンス ガイド …...MicroBlaze プロセッサ リファレンス ガイド 3 UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com 2016

第 5章: MicroBlaze 命令セ ッ ト  アーキテ クチャ

sra Shift Right Arithmetic

説明

rA の内容を 1 ビ ッ ト 右にシフ ト させ、 結果を rD に配置し ます。 rA の最上位ビ ッ ト (つま り 符号ビ ッ ト ) は、 rD の最上位ビ ッ ト に配置されます。 シフ ト チェーンから出力される最下位ビ ッ ト はキ ャ リ ー フ ラ グに配置されます。

擬似コー ド(rD)[0] (rA)](rD)[1:31] (rA)[0:30]MSR[C] (rA)[31]

変更されるレジス タ• rD

• MSR[C]

レ イテンシ• 1 サイ クル

sra rD、 rA

1 0 0 1 0 0 rD rA 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1

0 6 1

1

1

6

3

1

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド 260UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 261: MicroBlaze プロセッサ リファレンス ガイド …...MicroBlaze プロセッサ リファレンス ガイド 3 UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com 2016

第 5章: MicroBlaze 命令セ ッ ト  アーキテ クチャ

src Shift Right with Carry

説明

rA の内容を 1 ビ ッ ト 右にシフ ト させ、 結果を rD に配置し ます。 キ ャ リ ー フ ラ グはシフ ト チェーンでシフ ト され、 rD の最上位ビ ッ ト に配置されます。 シフ ト チェーンから出力される最下位ビ ッ トはキ ャ リ ー フ ラ グに配置されます。

擬似コー ド(rD)[0] MSR[C](rD)[1:31] rA)[0:30]MSR[C] (rA)[31]

変更されるレジス タ• rD

• MSR[C]

レ イテンシ• 1 サイ クル

src rD、 rA

1 0 0 1 0 0 rD rA 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1

0 6 1

1

1

6

3

1

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド 261UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 262: MicroBlaze プロセッサ リファレンス ガイド …...MicroBlaze プロセッサ リファレンス ガイド 3 UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com 2016

第 5章: MicroBlaze 命令セ ッ ト  アーキテ クチャ

srl Shift Right Logical

説明

rA の内容を論理的に 1 ビ ッ ト 右にシフ ト させ、 結果を rD に配置し ます。 0 はシフ ト チェーンでシフ ト され、 rD の最上位ビ ッ ト に配置されます。 シフ ト チェーンから出力される最下位ビ ッ ト はキ ャ リ ー フ ラグに配置されます。

擬似コー ド(rD)[0] 0(rD)[1:31] rA)[0:30]MSR[C] (rA)[31]

変更されるレジス タ• rD

• MSR[C]

レ イテンシ• 1 サイ クル

srl rD、 rA

1 0 0 1 0 0 rD rA 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1

0 6 1

1

1

6

3

1

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド 262UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 263: MicroBlaze プロセッサ リファレンス ガイド …...MicroBlaze プロセッサ リファレンス ガイド 3 UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com 2016

第 5章: MicroBlaze 命令セ ッ ト  アーキテ クチャ

sw Store Word

説明

レジス タ rD の内容に、 レジス タ rA および rB の内容を足し た結果を、 ワード にア ラ イ ン された メ モ リ ロケーシ ョ ンに格納し ます。

R ビ ッ ト がセ ッ ト されている場合、 格納されたワード のバイ ト が反転され、 E ビ ッ ト で定義されているエンデ ィ アン と は逆のものでデータ を格納し ます (仮想保護モード がイ ネーブルになっている場合)。

EA ビ ッ ト がセ ッ ト されている場合、 拡張ア ド レ スが使用され、 rA と rB を足すのではな く 連結させて形成されます。

仮想保護モード がイ ネーブルになっている場合、 データ TLB ミ ス例外が発生し、 ア ド レ スに対応する有効な変換エン ト リ は TLB では検出されません。

仮想保護モード がイ ネーブルになっている とデータ ス ト レージ例外が発生し、 ノー ア ク セス または読み出し専用ゾーン保護によ ってア ク セスが禁止されます。 ノ ー ア ク セス許可はユーザー モード の場合にのみ発生し ます。

ア ド レ スの最下位ビ ッ ト 2 つがゼロでない場合は、 ア ラ イ ン されていないデータ ア ク セス例外が発生します。

擬似コー ドif EA = 1 thenAddr rA) & (rB)

elseAddr (rA) + (rB)

if TLB_Miss(Addr) and MSR[VM] = 1 thenESR[EC] 10010;ESR[S] 1MSR[UMS] MSR[UM]; MSR[VMS] MSR[VM]; MSR[UM] 0; MSR[VM] 0

else if Access_Protected(Addr) and MSR[VM] = 1 thenESR[EC] 10000;ESR[S] 1; ESR[DIZ] No-access-allowedMSR[UMS] MSR[UM]; MSR[VMS] MSR[VM]; MSR[UM] 0; MSR[VM] 0

else if Addr[30:31] 0 thenESR[EC] 00001; ESR[W] 1; ESR[S] 1; ESR[Rx] rD

elseMem(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)• 2 サイ クル (C_AREA_OPTIMIZED=1)

sw rD、 rA、 rB

swr rD、 rA、 rB

swea rD、 rA、 rB

1 1 0 1 1 0 rD rA rB 0 R 0 EA 0 0 0 0 0 0 0

0 6 11 16 21 31

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド 263UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 264: MicroBlaze プロセッサ リファレンス ガイド …...MicroBlaze プロセッサ リファレンス ガイド 3 UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com 2016

第 5章: MicroBlaze 命令セ ッ ト  アーキテ クチャ

注記

MicroBlaze が再順序付け命令を使用する よ う に設定されている場合にのみ (C_USE_REORDER_INSTR = 1)、このワード 反転命令は有効です。

MicroBlaze が拡張ア ド レ ス命令を使用する よ う に設定されている場合にのみ (C_ADDR_SIZE > 32)、 拡張ア ド レ ス命令は有効です。

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド 264UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 265: MicroBlaze プロセッサ リファレンス ガイド …...MicroBlaze プロセッサ リファレンス ガイド 3 UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com 2016

第 5章: MicroBlaze 命令セ ッ ト  アーキテ クチャ

swapb Swap Bytes

説明

4 バイ ト と し て処理されたレジス タ rA の内容を ス ワ ッ プし、 結果を rD に配置し ます。 リ ト ル エンデ ィ アンから ビ ッ グ エンデ ィ アン、 またはその逆へ、 レジス タのバイ ト シーケン スのフ ォーマ ッ トを効果的に変換し ます。

擬似コー ド(rD)[24:31] (rA)[0:7](rD)[16:23] (rA)[8:15](rD)[8:15] (rA)[16:23](rD)[0:7] (rA)[24:31]

変更されるレジス タ• rD

レ イテンシ• 1 サイ クル

注記

MicroBlaze が再順序付け命令を使用する よ う に設定されている場合にのみ (C_USE_REORDER_INSTR = 1)、 こ の命令は有効です。

swapb rD、 rA

1 0 0 1 0 0 rD rA 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0

0 6 1

1

1

6

3

1

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド 265UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 266: MicroBlaze プロセッサ リファレンス ガイド …...MicroBlaze プロセッサ リファレンス ガイド 3 UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com 2016

第 5章: MicroBlaze 命令セ ッ ト  アーキテ クチャ

swaph Swap Halfwords

説明

2 ハーフ ワード と し て処理されたレジス タ rA の内容を ス ワ ッ プし、結果を rD に配置し ます。 リ ト ル エンデ ィ アンから ビ ッ グ エンデ ィ アン、 またはその逆へ、 レジス タの 2 ハーフ ワード のフ ォーマ ット を効果的に変換し ます。

擬似コー ド(rD)[0:15] rA)[16:31](rD)[16:31] rA)[0:15]

変更されるレジス タ• rD

レ イテンシ• 1 サイ クル

注記

MicroBlaze が再順序付け命令を使用する よ う に設定されている場合にのみ (C_USE_REORDER_INSTR = 1)、 こ の命令は有効です。

swaph rD、 rA

1 0 0 1 0 0 rD rA 0 0 0 0 0 0 0 1 1 1 1 0 0 0 1 0

0 6 1

1

1

6

3

1

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド 266UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 267: MicroBlaze プロセッサ リファレンス ガイド …...MicroBlaze プロセッサ リファレンス ガイド 3 UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com 2016

第 5章: MicroBlaze 命令セ ッ ト  アーキテ クチャ

swi Store Word Immediate

説明

レジス タ rD の内容を、 レジス タ rA の内容と IMM の 32 ビ ッ ト に符号拡張し た値を足し た結果の、ワード にア ラ イ ン された メ モ リ ロ ケーシ ョ ンに格納し ます。

仮想保護モード がイネーブルになっている場合、 データ TLB ミ ス例外が発生し、 ア ド レ スに対応する有効な変換エン ト リ は TLB では検出されません。

仮想保護モード がイネーブルになっている とデータ ス ト レージ例外が発生し、 ノ ー ア ク セス または読み出し専用ゾーン保護によ ってア ク セスが禁止されます。 ノ ー ア ク セス許可はユーザー モード の場合にのみ発生し ます。

ア ド レ スの最下位ビ ッ ト 2 つがゼロでない場合は、 ア ラ イ ン されていないデータ ア ク セス例外が発生し ます。

擬似コー ドAddr (rA) + sext(IMM)if TLB_Miss(Addr) and MSR[VM] = 1 thenESR[EC] 10010;ESR[S] 1MSR[UMS] MSR[UM]; MSR[VMS] MSR[VM]; MSR[UM] 0; MSR[VM] 0

else if Access_Protected(Addr) and MSR[VM] = 1 thenESR[EC] 10000;ESR[S] 1; ESR[DIZ] No-access-allowedMSR[UMS] MSR[UM]; MSR[VMS] MSR[VM]; MSR[UM] 0; MSR[VM] 0

else if Addr[30:31] 0 thenESR[EC] 00001; ESR[W] 1; ESR[S] 1; ESR[Rx] rD

elseMem(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)• 2 サイ クル (C_AREA_OPTIMIZED=1)

注記

デフ ォル ト で、 タ イプ B 命令は 16 ビ ッ ト の IMM フ ィ ール ド 値を取 り 込み、 それを 32 ビ ッ ト に符号拡張し て、 即値オぺラ ン ド と し て使用し ます。 この動作は、 IMM 命令を使用し て タ イプ B 命令を先行させる こ と で、 上書きでき ます。 32 ビ ッ ト の即値の使用に関し ては、 213 ページの 「imm」 を参照し て く だ さい。

swi rD、 rA、 IMM

1 1 1 1 1 0 rD rA IMM

0 6 11 16 31

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド 267UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 268: MicroBlaze プロセッサ リファレンス ガイド …...MicroBlaze プロセッサ リファレンス ガイド 3 UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com 2016

第 5章: MicroBlaze 命令セ ッ ト  アーキテ クチャ

swx Store Word Exclusive

説明

レジス タ 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 thenMSR[C] 1

elseif TLB_Miss(Addr) and MSR[VM] = 1 thenESR[EC] 10010;ESR[S] 1MSR[UMS] MSR[UM]; MSR[VMS] MSR[VM]; MSR[UM] 0; MSR[VM] 0

else if Access_Protected(Addr) and MSR[VM] = 1 thenESR[EC] 10000;ESR[S] 1; ESR[DIZ] No-access-allowedMSR[UMS] MSR[UM]; MSR[VMS] MSR[VM]; MSR[UM] 0; MSR[VM] 0

elseReservation if AXI_Exclusive(Addr) and AXI_Response EXOKAY thenMSR[C]

elseMem(Addr) rD)[0:31]MSR[C]

swx rD、 rA、 rB

1 1 0 1 1 0 rD rA rB 1 0 0 0 0 0 0 0 0 0 0

0 6 11 16 21 31

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド 268UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 269: MicroBlaze プロセッサ リファレンス ガイド …...MicroBlaze プロセッサ リファレンス ガイド 3 UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com 2016

第 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)

• 2 サイ クル (C_AREA_OPTIMIZED=1)

注記

この命令は、 セマフ ォやス ピン ロ ッ ク など、 排他的ア ク セス を イ ンプ リ メ ン ト する ために、 LWX と一緒に使用されます。

キ ャ リ ー フ ラ グ (MSR[C]) はすぐにはセ ッ ト されない可能性があ り ます (パイプラ イ ン ス ト ールの動作によ る )。 キ ャ リ ー フ ラ グの正しい値を得る ため、 SWX 命令は、 MSRCLR、 MSRSET、 MTS、 または SRC 命令のすぐ後に続ける こ と はでき ません。

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド 269UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 270: MicroBlaze プロセッサ リファレンス ガイド …...MicroBlaze プロセッサ リファレンス ガイド 3 UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com 2016

第 5章: MicroBlaze 命令セ ッ ト  アーキテ クチャ

wdc Write to Data Cache

説明

キ ャ ッ シ ュ ラ イ ンを無効化またはフ ラ ッ シ ュする ため、 データ キ ャ ッ シュ タ グに書き込みます。 F ビ ット をセ ッ ト するにはニーモニ ッ ク wdc.flush を、 T ビ ッ ト をセ ッ ト するには wdc.clear を、 T ビ ッ ト および EA ビ ッ ト をセ ッ ト するのに wdc.clear.ea を、 E、 F、 T ビ ッ ト をセ ッ ト するには wdc.ext.flush を、 E および T ビ ッ ト をセ ッ ト するには wdc.ext.clear を使用し ます。

C_DCACHE_USE_WRITEBACK が 1 に設定された場合:

• F ビ ッ ト がセ ッ ト される場合は、 命令がキ ャ ッ シ ュ ラ イ ンを フ ラ ッ シ ュ し無効にし ます。

• それ以外の場合は、 命令はキ ャ ッ シュ ラ イ ンを無効にし、 メ モ リ に書き込まれていないデータ を破棄するだけです。

• T ビ ッ ト がセ ッ ト されている場合は、 一致し ている ア ド レ スのキ ャ ッ シ ュ ラ イ ンのみが無効にな ります。

° EA ビ ッ ト がセ ッ ト されている場合は、 rB と連結し ている レジス タ rA が、 対象のキ ャ ッ シ ュ ライ ン拡張ア ド レ スにな り ます。

° それ以外の場合は、 rB を加えたレジス タ rA は、 対象のキ ャ ッ シュ ラ イ ンのア ド レ スです。

° C_ADDR_SIZE > 32 に設定されている と きにのみ、 EA ビ ッ ト は考慮されます。

• E ビ ッ ト は考慮されません。

• F ビ ッ ト と T ビ ッ ト を同時に使用する こ と はでき ません。

C_DCACHE_USE_WRITEBACK が 0 に ク リ アになった場合:

• E ビ ッ ト がセ ッ ト される場合は、 命令がキ ャ ッ シ ュ ラ イ ンを無効にし ます。 レジス タ rA には関係する キ ャ ッ シ ュ ラ イ ンのア ド レ スが含まれ、 レジス タ rB の値は使用されません。

• それ以外の場合は、 E ビ ッ ト の値によ って、 外部キ ャ ッ シ ュの一致し ている ア ド レ ス を無効にするかフ ラ ッ シ ュする よ う に、 MicroBlaze から リ ク エス ト があ り ます。

• C_INTERCONNECT が 3 (ACE) に設定されている と きにのみ、 E ビ ッ ト は考慮されます。

MicroBlaze が MMU を使用する よ う に (C_USE_MMU >= 1) 設定されている場合、 この命令は特権命令です。 つま り 、 命令がユーザー モード (MSR[UM] = 1) で実行される と、 特権命令例外が発生し ます。

wdcwdc.flushwdc.clearwdc.clear.eawdc.ext.flushwdc.ext.clear

rA、 rBrA、 rBrA、 rBrA、 rBrA、 rBrA、 rB

1 0 0 1 0 0 0 0 0 0 0 rA rB E 0 0 EA 1 1 F 0 1 T 0

0 6 11 16 21 27 31

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド 270UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 271: MicroBlaze プロセッサ リファレンス ガイド …...MicroBlaze プロセッサ リファレンス ガイド 3 UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com 2016

第 5章: MicroBlaze 命令セ ッ ト  アーキテ クチャ

擬似コー ドif MSR[UM] = 1 thenESR[EC] 00111

elseif C_DCACHE_USE_WRITEBACK = 1 thenif T = 1 and EA = 1 thenaddress (rA) & (rB)

elseaddress (rA) + (rB)

elseaddress (rA)

if E = 0 thenif C_DCACHE_LINE_LEN = 4 thencacheline_mask (1 << log2(C_DCACHE_BYTE_SIZE) - 4) - 1cacheline (DCache Line)[(address >> 4) cacheline_mask]cacheline_addr address xfffffff0

if C_DCACHE_LINE_LEN = 8 thencacheline_mask (1 << log2(C_DCACHE_BYTE_SIZE) - 5) - 1cacheline (DCache Line)[(address >> 5) cacheline_mask]cacheline_addr address xffffffe0

if C_DCACHE_LINE_LEN = 16 thencacheline_mask (1 << log2(C_DCACHE_BYTE_SIZE) - 6) - 1cacheline (DCache Line)[(address >> 6) cacheline_mask]cacheline_addr address xffffffc0

if F = 1 and cacheline.Dirty thenfor i 0 .. C_DCACHE_LINE_LEN - 1 loopif cacheline.Valid[i] thenMem(cacheline_addr + i * 4) cacheline.Data[i]

if T = 0 thencacheline.Tag 0

else if cacheline.Address = cacheline_addr thencacheline.Tag 0

if E = 1 thenif F = 1 thenrequest external cache flush with address

elserequest external cache invalidate with address

変更されるレジス タ• ESR[EC] (特権命令例外が生成される場合)

レ イテンシ• 2 サイ クル (wdc.clear)• 2 サイ クル (wdc、 C_AREA_OPTIMIZED=0 または 2)• 3 サイ クル (wdc、 C_AREA_OPTIMIZED =0)• 2 + N サイ クル (wdc.flush。 N は随時 メ モ リ にキ ャ ッ シュ ラ イ ンをフ ラ ッ シュするのに必要な ク ロ ッ ク サイ クル

数)

注記

wdc、 wdc.flush、 wdc.clear、 および wdc.clear.ea 命令は、 データ キ ャ ッ シ ュ イ ネーブル (MSR[DCE]) からは独立し ていて、 データ キ ャ ッ シ ュがイ ネーブルになっていて もデ ィ スエーブルになっていて も使用でき ます。

wdc.clear および wdc.clear.ea 命令は、 ダ イ レ ク ト メ モ リ ア ク セス デバイ スによ って書き込まれるバッフ ァーなど、 メ モ リ の特定エ リ アを無効化する ための ものです。 こ の命令を使用する こ と によ り 、 ほか

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド 271UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 272: MicroBlaze プロセッサ リファレンス ガイド …...MicroBlaze プロセッサ リファレンス ガイド 3 UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com 2016

第 5章: MicroBlaze 命令セ ッ ト  アーキテ クチャ

のキ ャ ッ シ ュ ラ イ ンが誤って無効化された り 、 メ モ リ にまだ書き込まれていないデータ を破棄し て し まわないよ う にでき ます。

パラ メ ーター C_USE_MMU の設定にかかわらず、 また MMU が仮想モード であって も リ アル モード であって も、 影響する キ ャ ッ シ ュ ラ イ ンのア ド レ スは常に物理ア ド レ スです。

キ ャ ッ シ ュ全体を フ ラ ッ シ ュするのにループで wdc.flush を使用し ている場合、 キ ャ ッ シ ュ ベース ア ドレ スに rA、 ループ カ ウ ン ターに rB を使用する こ と によ り 、 ループを最適化でき ます。

addik r5,r0,C_DCACHE_BASEADDRaddik r6,r0,C_DCACHE_BYTE_SIZE-C_DCACHE_LINE_LEN*4

loop: wdc.flush r5,r6bgtid r6,loopaddik r6,r6,-C_DCACHE_LINE_LEN*4

キ ャ ッ シ ュのあ る メ モ リ エ リ アをするのにループで wdc.clear を使用し ている場合、 メ モ リ エ リ ア ベース ア ド レ スに rA、 ループ カ ウ ン ターに rB を使用する こ と によ り 、 ループを最適化でき ます。

addik r5,r0,memory_area_base_addressaddik r6,r0,memory_area_byte_size-C_DCACHE_LINE_LEN*4

loop: wdc.clear r5,r6bgtid r6,loopaddik r6,r6,-C_DCACHE_LINE_LEN*4

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド 272UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 273: MicroBlaze プロセッサ リファレンス ガイド …...MicroBlaze プロセッサ リファレンス ガイド 3 UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com 2016

第 5章: MicroBlaze 命令セ ッ ト  アーキテ クチャ

wic Write to Instruction Cache

説明

キ ャ ッ シ ュ ラ イ ンを無効化する ため、 命令キ ャ ッ シ ュ タ グに書き込みます。 レジス タ rB の値は使用されません。 レジス タ rA には関係する キ ャ ッ シュ ラ イ ンのア ド レ スが含まれます。

MicroBlaze が MMU を使用する よ う に (C_USE_MMU >= 1) 設定されている場合、 この命令は特権命令です。 つま り 、 命令がユーザー モード (MSR[UM] = 1) で実行される と、 特権命令例外が発生し ます。

擬似コー ドif MSR[UM] = 1 thenESR[EC] 00111

elseif C_ICACHE_LINE_LEN = 4 thencacheline_mask (1 << log2(C_CACHE_BYTE_SIZE) - 4) - 1(ICache Line)[((Ra) >> 4) cacheline_mask].Tag 0

if C_ICACHE_LINE_LEN = 8 thencacheline_mask (1 << log2(C_CACHE_BYTE_SIZE) - 5) - 1(ICache Line)[((Ra) >> 5) cacheline_mask].Tag 0

if C_ICACHE_LINE_LEN = 16 thencacheline_mask (1 << log2(C_CACHE_BYTE_SIZE) - 6) - 1(ICache Line)[((Ra) >> 6) cacheline_mask].Tag 0

変更されるレジス タ• ESR[EC] (特権命令例外が生成される場合)

レ イテンシ• 2 サイ クル

注記

WIC 命令は、 命令キ ャ ッ シ ュ イ ネーブル (MSR[ICE]) からは独立し ていて、 命令キ ャ ッ シ ュがイ ネーブルになっていて もデ ィ スエーブルになっていて も使用でき ます。

パラ メ ーターが C_USE_MMU = 3 で MMU が仮想モード の と き、 影響を受ける キ ャ ッ シ ュ ラ イ ンのア ド レスは仮想ア ド レ スにな り ます。 それ以外の と きは物理ア ド レ スです。

wic rA、 rB

1 0 0 1 0 0 0 0 0 0 0 rA rB 0 0 0 0 1 1 0 1 0 0 0

0 6 1

1

1

6

3

1

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド 273UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 274: MicroBlaze プロセッサ リファレンス ガイド …...MicroBlaze プロセッサ リファレンス ガイド 3 UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com 2016

第 5章: MicroBlaze 命令セ ッ ト  アーキテ クチャ

xor Logical Exclusive OR

説明

レジス タ rA の内容がレジス タ rB の内容 と XOR されていて、 その結果がレジス タ rD に配置されます。

擬似コー ド(rD) (rA) (rB)

変更されるレジス タ• rD

レ イテンシ• 1 サイ クル

xor rD、 rA、 rB

1 0 0 0 1 0 rD rA rB 0 0 0 0 0 0 0 0 0 0 0

0 6 1

1

1

6

2

1

3

1

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド 274UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 275: MicroBlaze プロセッサ リファレンス ガイド …...MicroBlaze プロセッサ リファレンス ガイド 3 UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com 2016

第 5章: MicroBlaze 命令セ ッ ト  アーキテ クチャ

xori Logical Exclusive OR with Immediate

説明

左側の 16 個の 0 ビ ッ ト を連結させて、 IMM フ ィ ール ド は 32 ビ ッ ト に拡張されます。 レジス タ rA の内容は拡張された IMM フ ィ ール ド と XOR されて、 その結果がレジス タ rD に配置されます。

擬似コー ド(rD) (rA) sext(IMM)

変更されるレジス タ• rD

レ イテンシ• 1 サイ クル

注記

デフ ォル ト で、 タ イプ B 命令は 16 ビ ッ ト の IMM フ ィ ール ド 値を取 り 込み、 それを 32 ビ ッ ト に符号拡張し て、 即値オぺラ ン ド と し て使用し ます。 この動作は、 IMM 命令を使用し て タ イプ B 命令を先行させるこ と で、 上書きでき ます。 32 ビ ッ ト の即値の使用に関し ては、 213 ページの 「imm」 を参照し て く だ さい。

xori rD、 rA、 IMM

1 0 1 0 1 0 rD rA IMM

0 6 1

1

1

6

3

1

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド 275UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 276: MicroBlaze プロセッサ リファレンス ガイド …...MicroBlaze プロセッサ リファレンス ガイド 3 UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com 2016

付録 A 

パフ ォーマンスおよびリ ソース使用率

パフ ォーマンス

このコ アのパフ ォーマン ス特性化には、 マージン システム手法が使用されています。 マージン システム手法につい

ての詳細は、 「IP 特性化および fMAX マージン システム手法」 を参照し て く ださい。

最大周波数

MicroBlaze™ コ アの最大周波数は、 表 A-1 に リ ス ト されています。

注記: Zynq®-7000 の結果は、 7 シ リ ーズの結果に似た ものになるはずです。

注記: Spartan®-7 の結果は Artix®-7 の結果に似た ものになるはずです。

表 A‐1: 最大周波数

フ ァ ミ リ Fmax (MHz)

Virtex®-7 397

Kintex®-7 393

Artix-7 252

Virtex UltraScale™ 452

Kintex UltraScale 457

Virtex UltraScale+™ 670

Kintex UltraScale+ 629

Zynq UltraScale+ 542

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド 276UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 277: MicroBlaze プロセッサ リファレンス ガイド …...MicroBlaze プロセッサ リファレンス ガイド 3 UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com 2016

付録 A: パフ ォーマンスおよびリ ソース使用率

リ ソース使用量

さ まざまなパラ メ ーター設定での MicroBlaze コ ア リ ソース使用量が次のデバイ スに対し て計測されています。

• Virtex-7 (表 A-2)

• Kintex-7 (表 A-3)

• Artix-7 (表 A-4)

• Virtex UltraScale (表 A-5)

• Kintex UltraScale (表 A-6)

• Virtex UltraScale+ (表 A-7)

• Kintex UltraScale+ (表 A-8)

• Zynq UltraScale+ (表 A-9)

注記: Zynq-7000 の結果は、 7 シ リ ーズの結果に似た ものになるはずです。

注記: Spartan-7 の結果は、 Artix-7 の結果に似た ものになるはずです。

計測された コ ンフ ィ ギュ レーシ ョ ンぞれそれのパラ メ ーター値は表 A-10に リ ス ト されています。 これらのコ ンフ ィ

ギュ レーシ ョ ンは、 MicroBlaze のコ ンフ ィ ギ ュ レーシ ョ ン ウ ィ ザード に含まれている テンプレー ト に直接対応し て

います。

表 A‐2: デバイス使用率 ‐ Virtex‐7 FPGA (XC7VX485T ffg1761‐3) 

コ ン フ ィ ギュ レーシ ョ ン

デバイス リ ソース

LUT FFFmax(MHz)

最小エ リ ア 626 226 389

最大パフ ォーマン ス 3817 2994 213

最大周波数 901 543 389

MMU を使用し た Linux 3452 3195 215

MMU を使用し た低性能 Linux 2861 2549 225

標準 1914 1512 252

周波数最適化 5939 5924 231

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド 277UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 278: MicroBlaze プロセッサ リファレンス ガイド …...MicroBlaze プロセッサ リファレンス ガイド 3 UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com 2016

付録 A: パフ ォーマンスおよびリ ソース使用率

表 A‐3: デバイス使用率 ‐ Kintex‐7 FPGA (XC7K325T ffg900‐3) 

コ ン フ ィ ギュ レーシ ョ ン

デバイス リ ソース

LUT FFFmax(MHz)

最小エ リ ア 620 217 357

最大パフ ォーマン ス 3809 2994 221

最大周波数 900 543 357

MMU を使用し た Linux 3446 3190 213

MMU を使用し た低性能 Linux 2868 2546 228

標準 1922 1512 252

周波数最適化 5937 5925 227

表 A‐4: デバイス使用率 ‐ Artix‐7 FPGA (XC7A200T fbg676‐3) 

コ ン フ ィ ギュ レーシ ョ ン

デバイス リ ソース

LUT FFFmax(MHz)

最小エ リ ア 619 217 240

最大パフ ォーマン ス 3809 2994 161

最大周波数 900 543 240

MMU を使用し た Linux 3459 3164 152

MMU を使用し た低性能 Linux 2868 2545 156

標準 1922 1517 190

周波数最適化 5880 5905 161

表 A‐5: デバイス使用率 ‐ Virtex UltraScale FPGA (XCVU095 ffvd1924‐3) 

コ ン フ ィ ギュ レーシ ョ ン

デバイス リ ソース

LUT FFFmax(MHz)

最小エ リ ア 550 223 431

最大パフ ォーマン ス 3813 2993 282

最大周波数 898 551 431

MMU を使用し た Linux 3417 3171 250

MMU を使用し た低性能 Linux 2874 2550 262

標準 1954 1512 316

周波数最適化 6035 5945 286

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド 278UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 279: MicroBlaze プロセッサ リファレンス ガイド …...MicroBlaze プロセッサ リファレンス ガイド 3 UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com 2016

付録 A: パフ ォーマンスおよびリ ソース使用率

表 A‐6: デバイス使用率 ‐ Kintex UltraScale FPGA (XCKU040 ffva1156‐3) 

コ ン フ ィ ギュ レーシ ョ ン

デバイス リ ソース

LUT FFFmax(MHz)

最小エ リ ア 564 227 422

最大パフ ォーマン ス 3822 2993 283

最大周波数 905 548 422

MMU を使用し た Linux 3410 3164 250

MMU を使用し た低性能 Linux 2862 2547 264

標準 1956 1514 307

周波数最適化 6038 5936 298

表 A‐7: デバイス使用率 ‐ Virtex UltraScale FPGA (XCVU3P ffvc1517‐3) 

コ ン フ ィ ギュ レーシ ョ ン

デバイス リ ソース

LUT FFFmax(MHz)

最小エ リ ア 556 227 598

最大パフ ォーマン ス 3851 2993 390

最大周波数 900 543 598

MMU を使用し た Linux 3418 3164 366

MMU を使用し た低性能 Linux 2891 2544 344

標準 1956 1512 452

周波数最適化 6070 5930 411

表 A‐8: デバイス使用率 ‐ Kintex UltraScale FPGA (XCKU15P ffva1156‐3) 

コ ン フ ィ ギュ レーシ ョ ン

デバイス リ ソース

LUT FFFmax(MHz)

最小エ リ ア 567 242 621

最大パフ ォーマン ス 3857 2993 352

最大周波数 909 548 621

MMU を使用し た Linux 3466 3218 367

MMU を使用し た低性能 Linux 2918 2587 325

標準 1966 1516 433

周波数最適化 6136 5949 401

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド 279UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 280: MicroBlaze プロセッサ リファレンス ガイド …...MicroBlaze プロセッサ リファレンス ガイド 3 UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com 2016

付録 A: パフ ォーマンスおよびリ ソース使用率

表 A‐9: デバイス使用率 ‐ Zynq UltraScale+ FPGA (XCZU9EG ffvb1156‐3) 

コ ン フ ィ ギュ レーシ ョ ン

デバイス リ ソース

LUT FFFmax(MHz)

最小エ リ ア 552 217 535

最大パフ ォーマン ス 3843 2996 339

最大周波数 901 543 535

MMU を使用し た Linux 3436 3163 317

MMU を使用し た低性能 Linux 2892 2545 323

標準 1966 1522 400

周波数最適化 6103 5950 358

表 A‐10: パラ メ ーター コ ン フ ィ ギュ レーシ ョ ン

パラ メ ーター

コ ン フ ィ ギュ レーシ ョ ン  パラ メ ーター値最

小 エ

リア

最大

 パフ

ォー

マン

最大

 周

波数

Linux 

(MMU を

使用)

低性

能 Linux

 (MMU を

使用)

標準

周波

数(最

適化

済み)

C_ALLOW_DCACHE_WR 1 1 1 1 1 1 1

C_ALLOW_ICACHE_WR 1 1 1 1 1 1 1

C_AREA_OPTIMIZED 1 0 0 0 0 0 2

C_CACHE_BYTE_SIZE 4096 32768 4096 16384 8192 8192 16384

C_DCACHE_BYTE_SIZE 4096 32768 4096 16384 8192 8192 16384

C_DCACHE_LINE_LEN 4 8 4 4 4 4 4

C_DCACHE_USE_WRITEBACK 0 1 0 0 0 0 1

C_DEBUG_ENABLED 0 1 0 1 1 1 1

C_DIV_ZERO_EXCEPTION 0 0 0 1 0 0 1

C_M_AXI_D_BUS_EXCEPTION 0 0 0 1 1 1 1

C_FPU_EXCEPTION 0 0 0 0 0 0 1

C_FSL_EXCEPTION 0 0 0 0 0 0 0

C_FSL_LINKS 0 0 1 0 0 0 0

C_ICACHE_LINE_LEN 4 8 4 8 4 8 8

C_ILL_OPCODE_EXCEPTION 0 0 0 1 1 0 1

C_M_AXI_I_BUS_EXCEPTION 0 0 0 1 1 0 1

C_MMU_DTLB_SIZE 2 4 2 4 4 4 4

C_MMU_ITLB_SIZE 1 2 1 2 2 2 2

C_MMU_TLB_ACCESS 3 3 3 3 3 3 3

C_MMU_ZONES 2 2 2 2 2 2 2

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド 280UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 281: MicroBlaze プロセッサ リファレンス ガイド …...MicroBlaze プロセッサ リファレンス ガイド 3 UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com 2016

付録 A: パフ ォーマンスおよびリ ソース使用率

C_NUMBER_OF_PC_BRK 0 1 1 1 1 2 1

C_NUMBER_OF_RD_ADDR_BRK 0 0 0 0 0 0 0

C_NUMBER_OF_WR_ADDR_BRK 0 0 0 0 0 0 0

C_OPCODE_0x0_ILLEGAL 0 0 0 1 1 0 1

C_PVR 0 0 0 2 0 0 2

C_UNALIGNED_EXCEPTIONS 0 0 0 1 1 0 1

C_USE_BARREL 0 1 0 1 1 1 1

C_USE_DCACHE 0 1 0 1 1 1 1

C_USE_DIV 0 1 0 1 0 0 1

C_USE_EXTENDED_FSL_INSTR 0 0 0 0 0 0 0

C_USE_FPU 0 2 0 0 0 0 2

C_USE_HW_MUL 0 2 0 2 1 1 2

C_USE_ICACHE 0 1 0 1 1 1 1

C_USE_MMU 0 0 0 3 3 0 3

C_USE_MSR_INSTR 0 1 0 1 1 1 1

C_USE_PCMP_INSTR 0 1 0 1 1 1 1

C_USE_REORDER_INSTR 0 1 1 1 1 1 1

C_USE_BRANCH_TARGET_CACHE 0 1 0 0 0 0 1

C_BRANCH_TARGET_CACHE_SIZE 0 0 0 0 0 0 0

C_ICACHE_STREAMS 0 1 0 1 0 0 0

C_ICACHE_VICTIMS 0 8 0 8 0 0 0

C_DCACHE_VICTIMS 0 8 0 8 0 0 0

C_ICACHE_FORCE_TAG_LUTRAM 0 0 0 0 0 0 0

C_DCACHE_FORCE_TAG_LUTRAM 0 0 0 0 0 0 0

C_ICACHE_ALWAYS_USED 0 1 0 1 1 0 1

C_DCACHE_ALWAYS_USED 0 1 0 1 1 0 1

C_D_AXI 0 1 0 1 1 0 1

C_USE_INTERRUPT 0 0 0 1 1 0 1

表 A‐10: パラ メ ーター コ ン フ ィ ギュ レーシ ョ ン (続き)

パラ メ ーター

コ ン フ ィ ギュ レーシ ョ ン  パラ メ ーター値

最小

 エリ

最大

 パフ

ォー

マン

最大

 周

波数

Linux 

(MMU を

使用)

低性

能 Linux

 (MMU を

使用)

標準

周波

数(最

適化

済み)

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド 281UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 282: MicroBlaze プロセッサ リファレンス ガイド …...MicroBlaze プロセッサ リファレンス ガイド 3 UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com 2016

付録 A: パフ ォーマンスおよびリ ソース使用率

IP 特性化および fMAX マージン システム手法

概要

このセ ク シ ョ ンでは、 システム デザイ ン内の IP 操作の最大周波数 (FMAX) を決める方法について説明し ます。 この

方法を利用する と、 どのザイ リ ン ク ス FPGA アーキテ クチャに対し て も現実的なパフ ォーマン ス を レポー ト する こ

と が可能にな り ます。 デザイ ンの最大周波数 と は、 タ イ ミ ングに関する問題がない状態でシステム全体を イ ンプ リ

メ ン ト でき る最大周波数を指し ます。

FMAX マージン  システム手法

IP パフ ォーマン スはユーザー システム と い う 文脈の中で決定するのが重要です。 MicroBlaze 特性化の場合、 システ

ムには次のア イ テムが含まれます。

• 被試験 IP (MicroBlaze プロセ ッサ)

• ローカル メ モ リ (LMB)

• 1 レベルのイ ン ターコネ ク ト (AXI4、 AXI4-Lite、 AXI4-Stream)

• メ モ リ コ ン ト ローラー (EMC)

• オンチッ プ BRAM コ ン ト ローラー

• ペ リ フ ェ ラル (UART、 タ イマー、 割 り 込み、 割 り 込みコ ン ト ローラー、 MDM)

これらのコ ンポーネン ト を も ったエンベデッ ド IP の FMAX を決定し てお く と、 さ らに現実的なパフ ォーマン ス を

ターゲ ッ ト にでき ます。

上記のシステムには、 3 タ イプの AXI イ ン ターコネ ク ト があ り ます。 ペ リ フ ェ ラル コマン ドおよび制御に使用され

る AXI4-Lite、 メ モ リ ア ク セスに使用される AXI4、 MicroBlaze ス ト リ ームに使用される AXI4-Stream の 3 つです。

FMAX マージン システム解析の場合、 システムのク ロ ッ ク周波数は、 タ イ ミ ング違反が発生し てシステムに問題が

起き て し ま う 最大周波数までイ ン ク リ メ ン ト されます (ワース ト ケースの負のス ラ ッ ク )。 レポー ト される周波数は、

このワース ト ケースの負のス ラ ッ ク をエラーが起き ている周波数から差し引いた ものです。

ツール オプシ ョ ンおよびその他の要因

ザイ リ ン ク ス ツールには、 デザイ ン パフ ォーマン ス、 リ ソース使用率、 イ ンプ リ メ ンテーシ ョ ン run タ イ ム、 メ モ

リ フ ッ ト プ リ ン ト を ト レード オフする ためのオプシ ョ ンや設定が多 く 用意されています。 あ るデザイ ンで最善の結

果が得られる設定が、 別のデザイ ンで う ま く い く と は限 り ません。

FMAX マージン システム解析のため、 IP デザイ ンは特定の制約な しに (ク ロ ッ キング制約を除 く ) デフ ォル ト 設定で

特性化されています。 この解析は、 すべての FPGA アーキテ クチャ と その最大ス ピード グレード で実行されます。

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド 282UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 284: MicroBlaze プロセッサ リファレンス ガイド …...MicroBlaze プロセッサ リファレンス ガイド 3 UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com 2016

付録 B 

その他のリ ソースおよび法的通知

ザイ リ ン クス リ ソース

アンサー、 資料、 ダウ ン ロード、 フ ォーラ ムなどのサポー ト リ ソースは、 ザイ リ ン ク ス サポー ト サイ ト を参照し て

く ださい。

ソ リ ューシ ョ ン  セン ター

デバイ ス、 ツール、 IP のサポー ト については、 ザイ リ ン ク ス ソ リ ューシ ョ ン セン ターを参照し て く ださい。 ト ピ ッ

ク には、 デザイ ン アシス タ ン ト 、 ア ド バイザ リ 、 ト ラブルシュー ト ヒ ン ト などが含まれます。

Documentation Navigator およびデザイ ン  ハブ

Xilinx Documentation Navigator (DocNav) を使用する と ザイ リ ン ク スの資料、 ビデオ、 およびサポー ト リ ソースにア ク

セス し て情報をフ ィ ルター、 検索でき ます。 Xilinx Documentation Navigator を開 く には、 次のいずれかを実行し ま

す。

• Vivado IDE で [Help] → [Documentation and Tutorials] を ク リ ッ ク し ます。

• Windows で [ス ター ト ] → [すべてのプロ グ ラ ム] → [Xilinx Design Tools] → [DocNav] を ク リ ッ ク し ます。

• Linux コマン ド プロ ンプ ト に 「docnav」 と入力し ます。

ザイ リ ン ク ス デザイ ン ハブには、 資料やビデオへの リ ン ク がデザイ ン タ ス クおよび ト ピ ッ ク ご と にま と められてお

り 、 これら を参照する こ と でキー コ ンセプ ト を学び、 よ く あ る質問を解決でき ます。 デザイ ン ハブにア ク セスする

には、 次のいずれかを実行し ます。

• Xilinx Documentation Navigator で [Design Hubs View] タブを ク リ ッ ク し ます。

• ザイ リ ン ク ス ウ ェブサイ ト のデザイ ン ハブ ページを参照し ます。

注記: Documentation Navigator の詳細は、 ザイ リ ン ク ス ウ ェブサイ ト の Documentation Navigator ページを参照し て く

ださい。

注意: Xilinx Documentation Navigator からは、 日本語版は参照でき ません。 ウ ェブサイ ト のデザイ ン ハブ ページの一

部は翻訳されてお り 、 日本語版が提供されている場合はその リ ン ク も追加されています。

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド 284UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 285: MicroBlaze プロセッサ リファレンス ガイド …...MicroBlaze プロセッサ リファレンス ガイド 3 UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com 2016

付録 B: その他のリ ソースおよび法的通知

参考資料

参考資料には次のものがあ り ます。

注記: 日本語版のバージ ョ ンは、 英語版よ り 古い場合があ り ます。

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. 『MicroBlaze Micro Controller System LogiCORE IP 製品ガイ ド』 (PG116: 英語版、 日本語版)

12. 『LogiCORE IP Processor LMB BRAM Interface Controller 製品ガイ ド』 (PG112)

13. 『階層デザイ ン設計手法ガイ ド』 (UG748)

次の追加資料には、 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 イ ンテグレーターを使用し た 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 プロセ ッサ リ フ ァ レンス ガイ ド 285UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com

Page 286: MicroBlaze プロセッサ リファレンス ガイド …...MicroBlaze プロセッサ リファレンス ガイド 3 UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com 2016

付録 B: その他のリ ソースおよび法的通知

お読み く だ さい: 重要な法的通知本通知に基づいて貴殿または貴社 (本通知の被通知者が個人の場合には 「貴殿」、 法人その他の団体の場合には 「貴社」。 以下同じ ) に開示される情報 (以下 「本情報」 と いいます) は、 ザイ リ ン ク スの製品を選択および使用する こ と のためにのみ提供されます。 適

用される法律が許容する最大限の範囲で、 (1) 本情報は 「現状有姿」、 およびすべて受領者の責任で (with all faults) と い う 状態で提供

され、 ザイ リ ン ク スは、 本通知を も って、 明示、 黙示、 法定を問わず (商品性、 非侵害、 特定目的適合性の保証を含みますが これ

らに限られません)、 すべての保証および条件を負わない (否認する ) もの と し ます。 また、 (2) ザイ リ ン ク スは、 本情報 (貴殿または

貴社によ る本情報の使用を含む) に関係し、 起因し、 関連する、 いかな る種類 ・ 性質の損失または損害について も、 責任を負わな

い (契約上、 不法行為上 (過失の場合を含む)、 その他のいかなる責任の法理によ るかを問わない) もの と し、 当該損失または損害に

は、 直接、 間接、 特別、 付随的、 結果的な損失または損害 (第三者が起こ し た行為の結果被った、 データ、 利益、 業務上の信用の

損失、 その他あ らゆる種類の損失や損害を含みます) が含まれる もの と し、 それは、 た と え当該損害や損失が合理的に予見可能で

あった り 、 ザイ リ ン ク スがそれらの可能性について助言を受けていた場合であった と し て も同様です。 ザイ リ ン ク スは、 本情報に

含まれるいかな る誤 り も訂正する義務を負わず、 本情報または製品仕様のア ッ プデー ト を貴殿または貴社に知らせる義務も負いま

せん。 事前の書面によ る同意のない限 り 、 貴殿または貴社は本情報を再生産、 変更、 頒布、 または公に展示し てはな り ません。 一

定の製品は、 ザイ リ ン ク スの限定的保証の諸条件に従 う こ と と な るので、 https://japan.xilinx.com/legal.htm#tos で見られるザイ リ ン ク

スの販売条件を参照し て く だ さい。 IP コ アは、 ザイ リ ン ク スが貴殿または貴社に付与し た ラ イセン スに含まれる保証と補助的条件

に従 う こ と にな り ます。 ザイ リ ン ク スの製品は、 フ ェ イルセーフ と し て、 または、 フ ェ イルセーフの動作を要求する アプ リ ケー

シ ョ ンに使用する ために、 設計された り 意図された り し ていません。 そのよ う な重大なアプ リ ケーシ ョ ンにザイ リ ン ク スの製品を

使用する場合の リ ス ク と 責任は、 貴殿または貴社が単独で負 う ものです。 https://japan.xilinx.com/legal.htm#tos で見られるザイ リ ン ク

スの販売条件を参照し て く だ さい。

自動車用のアプ リ ケーシ ョ ンの免責条項

オー ト モーテ ィ ブ製品 (製品番号に 「XA」 が含まれる ) は、

ISO 26262 自動車用機能安全規格に従った安全コ ンセプ ト または余剰性の機能 ( 「セーフテ ィ 設計」 ) がない限 り 、

エアバッ グの展開における使用または車両の制御に影響する アプ リ ケーシ ョ ン ( 「セーフテ ィ アプ リ ケーシ ョ ン」 ) における使用は

保証されていません。 顧客は、 製品を組み込むすべてのシステムについて、 その使用前または提供前に安全を目的と し て

十分なテス ト を行 う もの と し ます。 セーフテ ィ 設計な しにセーフテ ィ アプ リ ケーシ ョ ンで製品を使用する リ ス クはすべて

顧客が負い、 製品の責任の制限を規定する適用法令および規則にのみ

従 う もの と し ます。

© Copyright 2013-2016 Xilinx, Inc. Xilinx、 Xilinx のロ ゴ、 Artix、 ISE、 Kintex、 Spartan、 Virtex、 Vivado、 Zynq、 およびこ の文書に

含まれる その他の指定されたブ ラ ン ド は、 米国およびその他各国のザイ リ ン ク ス社の商標です。 すべてのその他の商標は、 それ

ぞれの保有者に帰属し ます。

こ の資料に関する フ ィ ード バッ クおよび リ ン ク などの問題につき ま し ては、 [email protected] まで、 または各ページの

右下にあ る [フ ィ ード バッ ク送信] ボ タ ンを ク リ ッ クする と 表示される フ ォームからお知らせ く ださい。 フ ィ ード バッ クは日本語で

入力可能です。 いただき ま し たご意見を参考に早急に対応させていただき ます。 なお、 こ の メ ール ア ド レ スへのお問い合わせは受

け付けてお り ません。 あ らかじめご了承 く ださい。

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド 286UG984 (v2016.3) 2016 年 10 月 5 日 japan.xilinx.com