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

MicroBlaze プロセッサ リファレンス ガイド …...M_ACE_IC M_ACE_DC M_AXI_DP DLMB UG984 (v2015.4) 2015 年 11 月 18 日 MicroBlaze プロセッサ リファレンス ガイド

  • Upload
    others

  • View
    2

  • Download
    0

Embed Size (px)

Citation preview

Page 1: MicroBlaze プロセッサ リファレンス ガイド …...M_ACE_IC M_ACE_DC M_AXI_DP DLMB UG984 (v2015.4) 2015 年 11 月 18 日 MicroBlaze プロセッサ リファレンス ガイド

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

UG984 (v2015.1) 2015 年 4 月 15 日

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

UG984 (v2015.4) 2015 年 11 月 18 日

Page 2: MicroBlaze プロセッサ リファレンス ガイド …...M_ACE_IC M_ACE_DC M_AXI_DP DLMB UG984 (v2015.4) 2015 年 11 月 18 日 MicroBlaze プロセッサ リファレンス ガイド

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド  (UG081) japan.xilinx.com 2UG984 (v2015.1) 2015 年 4 月 15 日

改訂履歴

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

日付 バージ ョ ン 改訂内容

2013/03/20 2013.1 初版。 UG081 を元に記述

2013/06/19 2013.2 Vivado 2013.2 リ リ ース用に更新

2013/10/02 2013.3 Vivado 2013.3 リ リ ース用に更新

2013/12/18 2013.4 Vivado 2013.4 リ リ ース用に更新

2014/04/02 2014.1 Vivado 2014.1 リ リ ース用に更新

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

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

2014/10/01 2014.3 Vivado 2014.3 リ リ ース用に更新

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

2015/04/15 2015.1 Vivado 2015.1 リ リ ース用に更新

• v9.5 の新機能であ る 16 ワード キ ャ ッ シ ュの説明を含める• PVR の MicroBlaze リ リ ース バージ ョ ン コード に v9.5 を追加• サポー ト されるデンデ ィ アンおよびパラ メ ーター C_ENDIANNESS の説明を訂正• 命令およびデータ キ ャ ッ シ ュの未処理読み出しの説明を訂正• FPGA コ ンフ ィ ギ ュ レーシ ョ ン メ モ リ 保護についての参照 [参照 10] をア ッ プデー ト• 表 3-12 のロ ッ ク ステ ッ プ比較のバス イ ンデッ ク ス範囲の定期を訂正• IDIV 命令で変更される レジス タ を明記• MFS 命令の PVR アセンブラ ニーモニ ッ ク を訂正• 2015.1 用にパフ ォーマン スおよび リ ソース使用率をア ッ プデー ト• ト レーニング リ ソースに参考資料を追加

UG984 (v2015.4) 2015 年 11 月 18 日

2015/11/18 : Vivado Design Suite 2015.4 リリース。内容の変更なし。

Page 3: MicroBlaze プロセッサ リファレンス ガイド …...M_ACE_IC M_ACE_DC M_AXI_DP DLMB UG984 (v2015.4) 2015 年 11 月 18 日 MicroBlaze プロセッサ リファレンス ガイド

目次

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

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

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

命令 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10

レジス タ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19

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

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

特権命令 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44

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

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

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

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

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

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

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

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

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

コ ヒ ーレンシ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99

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

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

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

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

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

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

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

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

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

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

ス タ ッ ク規則 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 146

メ モ リ モデル . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 148

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

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

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド japan.xilinx.com 3UG984 (v2015.1) 2015 年 4 月 15 日UG984 (v2015.4) 2015 年 11 月 18 日

Page 4: MicroBlaze プロセッサ リファレンス ガイド …...M_ACE_IC M_ACE_DC M_AXI_DP DLMB UG984 (v2015.4) 2015 年 11 月 18 日 MicroBlaze プロセッサ リファレンス ガイド

フ ォーマ ッ ト . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153

命令 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153

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

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

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

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

参考資料 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 257

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

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

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド japan.xilinx.com 4UG984 (v2015.1) 2015 年 4 月 15 日UG984 (v2015.4) 2015 年 11 月 18 日

Page 5: MicroBlaze プロセッサ リファレンス ガイド …...M_ACE_IC M_ACE_DC M_AXI_DP DLMB UG984 (v2015.4) 2015 年 11 月 18 日 MicroBlaze プロセッサ リファレンス ガイド

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド japan.xilinx.com 5UG984 (v2015.1) 2015 年 4 月 15 日

第 1 章

概要本書は、 Vivado リ リ ースに含まれる 32 ビ ッ ト のソ フ ト プロセ ッサ、 MicroBlaze™ に関する資料で、 MicroBlaze ハー ド ウ ェア アーキテ クチャの リ フ ァ レ ン ス ガイ ド です。

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

• 第 2 章 「MicroBlaze アーキテ クチャ」 では、 MicroBlaze の機能の概要をはじめ、 ビ ッ グ エンデ ィ アンおよび リ ト ル エンデ ィ アンのビ ッ ト 反転フ ォーマ ッ ト 、 32 ビ ッ ト の汎用レジス タ、 キ ャ ッ シュ ソ フ ト ウ ェ ア サポー ト 、 お よび高速シンプレ ッ ク ス リ ン ク イ ン ターフ ェ イ スなどの機能も説明し ます。

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

• 第 4 章 「MicroBlaze アプ リ ケーシ ョ ン バイナ リ イ ン ターフ ェ イ ス」 では、 MicroBlaze 用にアセンブ リ 言語でソ フ ト ウ ェアを開発するのに重要な、 アプ リ ケーシ ョ ン バイナ リ イ ン ターフ ェ イ ス を説明し ます。

• 第 5 章 「MicroBlaze 命令セ ッ ト アーキテ クチャ」 では、 MicroBlaze の命令セ ッ ト アーキテ クチャのシンボル、 フ ォーマ ッ ト 、 および命令について説明し ます。

• 付録 A 「パフ ォーマン スおよび リ ソース使用率」 では、 各コ ンフ ィ ギ ュ レーシ ョ ンの最大周波数および リ ソース 使用率を説明し ます。

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

UG984 (v2015.4) 2015 年 11 月 18 日

Page 6: MicroBlaze プロセッサ リファレンス ガイド …...M_ACE_IC M_ACE_DC M_AXI_DP DLMB UG984 (v2015.4) 2015 年 11 月 18 日 MicroBlaze プロセッサ リファレンス ガイド

第 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 プロセ ッサ リ フ ァ レンス ガイ ド japan.xilinx.com 6UG984 (v2015.1) 2015 年 4 月 15 日UG984 (v2015.4) 2015 年 11 月 18 日

Page 7: MicroBlaze プロセッサ リファレンス ガイド …...M_ACE_IC M_ACE_DC M_AXI_DP DLMB UG984 (v2015.4) 2015 年 11 月 18 日 MicroBlaze プロセッサ リファレンス ガイド

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

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

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

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

• 32 ビ ッ ト のア ド レ ス バス

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

これらの固定機能のほか、 MicroBlaze プロセ ッ サには追加機能を選択し て有効にでき るパラ メ ーター値があ り ます。 古いバージ ョ ン (サポー ト されな く なった も の) の MicroBlaze の場合は、 本書で説明するオプシ ョ ンの機能の一部だ けがサポー ト されます。 最新バージ ョ ンの MicroBlaze (v9.5) では、 すべてのオプシ ョ ンがサポー ト されます。

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

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

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

機能MicroBlaze バージ ョ ン

v9.0 v9.1 v9.2 v9.3 v9.4 v9.5

バージ ョ ン ステータ ス サポー ト 終了 サポー ト 終了 サポー ト 終了 サポー ト 終了 サポー ト 終了 推奨

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

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

ン ターフ ェ イ ス

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

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

ターフ ェ イ ス

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

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

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

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

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

マシン ステータ ス セッ ト およびク リ ア命令 オプシ ョ ン オプシ ョ ン オプシ ョ ン オプシ ョ ン オプシ ョ ン オプシ ョ ン

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

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

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

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

ハード ウ ェ ア乗算器のデ ィ スエーブル1 オプシ ョ ン オプシ ョ ン オプシ ョ ン オプシ ョ ン オプシ ョ ン オプシ ョ ン

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

ESR および EAR○ ○ ○ ○ ○ ○

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

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

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

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

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

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

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

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

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

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

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

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

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

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド japan.xilinx.com 7UG984 (v2015.1) 2015 年 4 月 15 日UG984 (v2015.4) 2015 年 11 月 18 日

Page 8: MicroBlaze プロセッサ リファレンス ガイド …...M_ACE_IC M_ACE_DC M_AXI_DP DLMB UG984 (v2015.4) 2015 年 11 月 18 日 MicroBlaze プロセッサ リファレンス ガイド

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

D キ ャ ッ シ ュのラ イ ト バッ ク キ ャ ッ シ ュ

ポ リ シーを使用

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

分岐先キ ャ ッ シ ュ (BTC) オプシ ョ ン オプシ ョ ン オプシ ョ ン オプシ ョ ン オプシ ョ ン オプシ ョ ン

I キ ャ ッ シ ュ用ス ト リ ーム オプシ ョ ン オプシ ョ ン オプシ ョ ン オプシ ョ ン オプシ ョ ン オプシ ョ ン

I キ ャ ッ シ ュ用ビ ク テ ィ ム処理 オプシ ョ ン オプシ ョ ン オプシ ョ ン オプシ ョ ン オプシ ョ ン オプシ ョ ン

D キ ャ ッ シ ュ用ビ ク テ ィ ム処理 オプシ ョ ン オプシ ョ ン オプシ ョ ン オプシ ョ ン オプシ ョ ン オプシ ョ ン

AXI4 (M_AXI_DP) データ側イ ン ターフ ェ

イ ス

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

AXI4 (M_AXI_IP) 命令側イ ン ターフ ェ イ ス オプシ ョ ン オプシ ョ ン オプシ ョ ン オプシ ョ ン オプシ ョ ン オプシ ョ ン

D キ ャ ッ シ ュ 用 AXI4 (M_AXI_DC) プ ロ

ト コル

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

I キ ャ ッ シ ュ用 AXI4 (M_AXI_IC) プ ロ ト

コル

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

ス ト リ ーム ア ク セス用 AXI4 プロ ト コル オプシ ョ ン オプシ ョ ン オプシ ョ ン オプシ ョ ン オプシ ョ ン オプシ ョ ン

フ ォール ト ト レ ラ ン ス オプシ ョ ン オプシ ョ ン オプシ ョ ン オプシ ョ ン オプシ ョ ン オプシ ョ ン

キ ャ ッ シ ュ タ グ用に分散 RAM を使用 オプシ ョ ン オプシ ョ ン オプシ ョ ン オプシ ョ ン オプシ ョ ン オプシ ョ ン

コ ンフ ィ ギ ャ ラブル キ ャ ッ シュ データ幅 オプシ ョ ン オプシ ョ ン オプシ ョ ン オプシ ョ ン オプシ ョ ン オプシ ョ ン

前ゼロのカ ウ ン ト 命令 オプシ ョ ン オプシ ョ ン オプシ ョ ン オプシ ョ ン オプシ ョ ン オプシ ョ ン

メ モ リ バ リ ア命令 ○ ○ ○ ○ ○ ○

ス タ ッ ク オーバーフ ローおよびアンダー

フ ローの検出

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

ユーザー モード のス ト リ ーム命令 オプシ ョ ン オプシ ョ ン オプシ ョ ン オプシ ョ ン オプシ ョ ン オプシ ョ ン

ロ ッ ク ステ ッ プ サポー ト オプシ ョ ン オプシ ョ ン オプシ ョ ン オプシ ョ ン オプシ ョ ン オプシ ョ ン

FPGA プ リ ミ テ ィ ブの コ ン フ ィ ギ ュ レー

シ ョ ン設定

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

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

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

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

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

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

ト コル

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

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

コル

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

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

グ ラ ム ト レース、 非侵入型プロ フ ァ イ リ

ング

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

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

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

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

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

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

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

機能MicroBlaze バージ ョ ン

v9.0 v9.1 v9.2 v9.3 v9.4 v9.5

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド japan.xilinx.com 8UG984 (v2015.1) 2015 年 4 月 15 日UG984 (v2015.4) 2015 年 11 月 18 日

Page 9: MicroBlaze プロセッサ リファレンス ガイド …...M_ACE_IC M_ACE_DC M_AXI_DP DLMB UG984 (v2015.4) 2015 年 11 月 18 日 MicroBlaze プロセッサ リファレンス ガイド

第 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 プロセ ッサ リ フ ァ レンス ガイ ド japan.xilinx.com 9UG984 (v2015.1) 2015 年 4 月 15 日UG984 (v2015.4) 2015 年 11 月 18 日

Page 10: MicroBlaze プロセッサ リファレンス ガイド …...M_ACE_IC M_ACE_DC M_AXI_DP DLMB UG984 (v2015.4) 2015 年 11 月 18 日 MicroBlaze プロセッサ リファレンス ガイド

第 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 プロセ ッサ リ フ ァ レンス ガイ ド japan.xilinx.com 10UG984 (v2015.1) 2015 年 4 月 15 日UG984 (v2015.4) 2015 年 11 月 18 日

Page 11: MicroBlaze プロセッサ リファレンス ガイド …...M_ACE_IC M_ACE_DC M_AXI_DP DLMB UG984 (v2015.4) 2015 年 11 月 18 日 MicroBlaze プロセッサ リファレンス ガイド

第 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 + 1Rd[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

ADDI Rd,Ra,Imm 001000 Rd Ra Imm Rd := s(Imm) + Ra

RSUBI Rd,Ra,Imm 001001 Rd Ra Imm Rd := s(Imm) + Ra + 1

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド japan.xilinx.com 11UG984 (v2015.1) 2015 年 4 月 15 日UG984 (v2015.4) 2015 年 11 月 18 日

Page 12: MicroBlaze プロセッサ リファレンス ガイド …...M_ACE_IC M_ACE_DC M_AXI_DP DLMB UG984 (v2015.4) 2015 年 11 月 18 日 MicroBlaze プロセッサ リファレンス ガイド

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

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 0N0TAE00000

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 0N0TA000000

FSL Rb[28:31] := Ra (data write)MSR[C] := FSL_M_Full if N = 1

TNECAGETD Rd,Rb 010011 Rd 00000 Rb 0N1TAE00000

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 0N1TA000000

FSL Rb[28:31] := Ra (control write)MSR[C] := FSL_M_Full if N = 1

FADD Rd,Ra,Rb 010110 Rd Ra Rb 00000000000 Rd := Rb+Ra, float1

FRSUB Rd,Ra,Rb 010110 Rd Ra Rb 00010000000 Rd := Rb-Ra, float1

FMUL Rd,Ra,Rb 010110 Rd Ra Rb 00100000000 Rd := Rb*Ra, float1

FDIV Rd,Ra,Rb 010110 Rd Ra Rb 00110000000 Rd := Rb/Ra, float1

FCMP.UN Rd,Ra,Rb 010110 Rd Ra Rb 01000000000 Rd := 1 if (Rb = NaN or Ra = NaN, float1) else Rd := 0

FCMP.LT Rd,Ra,Rb 010110 Rd Ra Rb 01000010000 Rd := 1 if (Rb < Ra, float1) else Rd := 0

FCMP.EQ Rd,Ra,Rb 010110 Rd Ra Rb 01000100000 Rd := 1 if (Rb = Ra, float1) else Rd := 0

FCMP.LE Rd,Ra,Rb 010110 Rd Ra Rb 01000110000 Rd := 1 if (Rb <= Ra, float1) else Rd := 0

FCMP.GT Rd,Ra,Rb 010110 Rd Ra Rb 01001000000 Rd := 1 if (Rb > Ra, float1) else Rd := 0

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

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

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

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド japan.xilinx.com 12UG984 (v2015.1) 2015 年 4 月 15 日UG984 (v2015.4) 2015 年 11 月 18 日

Page 13: MicroBlaze プロセッサ リファレンス ガイド …...M_ACE_IC M_ACE_DC M_AXI_DP DLMB UG984 (v2015.4) 2015 年 11 月 18 日 MicroBlaze プロセッサ リファレンス ガイド

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

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

TNEAGET Rd,FSLx 011011 Rd 00000 0N0TAE000000 & FSLx Rd := FSLx (data read, blocking if N = 0)MSR[FSL] := 1 if (FSLx_S_Control = 1)MSR[C] := not FSLx_S_Exists if N = 1

TNAPUT Ra,FSLx 011011 00000 Ra 1N0TA0000000 & FSLx FSLx := Ra (data write, blocking if N = 0)MSR[C] := FSLx_M_Full if N = 1

TNECAGET Rd,FSLx 011011 Rd 00000 0N1TAE000000 & FSLx Rd := FSLx (control read, blocking if N = 0)MSR[FSL] := 1 if (FSLx_S_Control = 0)MSR[C] := not FSLx_S_Exists if N = 1

TNCAPUT Ra,FSLx 011011 00000 Ra 1N1TA0000000 & FSLx FSLx := Ra (control write, blocking if N = 0)MSR[C] := FSLx_M_Full if N = 1

OR Rd,Ra,Rb 100000 Rd Ra Rb 00000000000 Rd := Ra or Rb

PCMPBF Rd,Ra,Rb 100000 Rd Ra Rb 10000000000 Rd := 1 if (Rb[0:7] = Ra[0:7]) 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

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])

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

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

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

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド japan.xilinx.com 13UG984 (v2015.1) 2015 年 4 月 15 日UG984 (v2015.4) 2015 年 11 月 18 日

Page 14: MicroBlaze プロセッサ リファレンス ガイド …...M_ACE_IC M_ACE_DC M_AXI_DP DLMB UG984 (v2015.4) 2015 年 11 月 18 日 MicroBlaze プロセッサ リファレンス ガイド

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

SEXT16 Rd,Ra 100100 Rd Ra 0000000001100001 Rd := s(Ra[16:31])

CLZ Rd, Ra 100100 Rd Ra 0000000011100000 Rd = clz(Ra)

SWAPB Rd, Ra 100100 Rd Ra 0000000111100000 Rd = (Ra)[24:31, 16:23, 8:15, 0:7]

SWAPH Rd, Ra 100100 Rd Ra 0000000111100010 Rd = (Ra)[16:31, 0:15]

WIC Ra,Rb 100100 00000 Ra Rb 00001101000 ICache_Line[Ra >> 4].Tag := 0 if (C_ICACHE_LINE_LEN = 4)ICache_Line[Ra >> 5].Tag := 0 if (C_ICACHE_LINE_LEN = 8)ICache_Line[Ra >> 6].Tag := 0 if (C_ICACHE_LINE_LEN = 16)

WDC Ra,Rb 100100 00000 Ra Rb 00001100100 キ ャ ッ シュ ラ イ ンはク リ ア、 格納されたデータ を破棄。DCache_Line[Ra >> 4].Tag := 0 if (C_DCACHE_LINE_LEN = 4)DCache_Line[Ra >> 5].Tag := 0 if (C_DCACHE_LINE_LEN = 8)DCache_Line[Ra >> 6].Tag := 0 if (C_DCACHE_LINE_LEN = 16)

WDC.FLUSH Ra,Rb 100100 00000 Ra Rb 00001110100 キ ャ ッ シュ ラ イ ンはフ ラ ッ シュ、 格納されたデータ を メ モ リ に書き込んでから、 ク リア。 C_DCACHE_USE_WRITEBACK = 1 のと き使用。

WDC.CLEAR Ra,Rb 100100 00000 Ra Rb 00001110110 一致し たア ド レ スのキ ャ ッ シ ュ ラ イ ンはク リ ア、 格 納 さ れ た デ ー タ を 破 棄。C_DCACHE_USE_WRITEBACK = 1 の と き 使用。

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

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

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

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

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド japan.xilinx.com 14UG984 (v2015.1) 2015 年 4 月 15 日UG984 (v2015.4) 2015 年 11 月 18 日

Page 15: MicroBlaze プロセッサ リファレンス ガイド …...M_ACE_IC M_ACE_DC M_AXI_DP DLMB UG984 (v2015.4) 2015 年 11 月 18 日 MicroBlaze プロセッサ リファレンス ガイド

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

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

· SPR[0x0000] は PC· SPR[0x0001] は MSR· SPR[0x0003] は EAR· SPR[0x0005] は ESR· SPR[0x0007] は FSR· SPR[0x000B] は BTR· SPR[0x000D] は EDR· SPR[0x0800] は SLR· SPR[0x0802] は SHR· SPR[0x1000] は PID· SPR[0x1001] は ZPR· SPR[0x1002] は TLBX· SPR[0x1003] は TLBLO· SPR[0x1004] は TLBHI· SPR[0x2000 to 0x200B] は PVR[0 to 12]

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

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

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

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

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

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド japan.xilinx.com 15UG984 (v2015.1) 2015 年 4 月 15 日UG984 (v2015.4) 2015 年 11 月 18 日

Page 16: MicroBlaze プロセッサ リファレンス ガイド …...M_ACE_IC M_ACE_DC M_AXI_DP DLMB UG984 (v2015.4) 2015 年 11 月 18 日 MicroBlaze プロセッサ リファレンス ガイド

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

BGTD Ra,Rb 100111 10100 Ra Rb 00000000000 PC := PC + Rb if Ra > 0

BGED Ra,Rb 100111 10101 Ra Rb 00000000000 PC := PC + Rb if Ra >= 0

ORI Rd,Ra,Imm 101000 Rd Ra Imm Rd := Ra or s(Imm)

ANDI Rd,Ra,Imm 101001 Rd Ra Imm Rd := Ra and s(Imm)

XORI Rd,Ra,Imm 101010 Rd Ra Imm Rd := Ra xor s(Imm)

ANDNI Rd,Ra,Imm 101011 Rd Ra Imm Rd := Ra and s(Imm)

IMM Imm 101100 00000 00000 Imm Imm[0:15] := Imm

RTSD Ra,Imm 101101 10000 Ra Imm PC := Ra + s(Imm)

RTID Ra,Imm 101101 10001 Ra Imm PC := Ra + s(Imm)MSR[IE] := 1

RTBD Ra,Imm 101101 10010 Ra Imm PC := Ra + s(Imm)MSR[BIP] := 0

RTED Ra,Imm 101101 10100 Ra Imm PC := Ra + s(Imm)MSR[EE] := 1, MSR[EIP] := 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

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

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

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

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド japan.xilinx.com 16UG984 (v2015.1) 2015 年 4 月 15 日UG984 (v2015.4) 2015 年 11 月 18 日

Page 17: MicroBlaze プロセッサ リファレンス ガイド …...M_ACE_IC M_ACE_DC M_AXI_DP DLMB UG984 (v2015.4) 2015 年 11 月 18 日 MicroBlaze プロセッサ リファレンス ガイド

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

セマフ ォ同期化

LWX および SWX 命令は、 テス ト と セ ッ ト 、 比較と ス ワ ッ プ、 メ モ リ 交換、 フ ェ ッチ と追加など、 共通セマフ ォ操作 を イ ンプ リ メ ン ト するために使用されます。 また、 ス ピン ロ ッ ク を イ ンプ リ メ ン ト するのにも使用されます。

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

LBU Rd,Ra,RbLBUR Rd,Ra,Rb

110000 Rd Ra Rb 0000000000001000000000

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

LHU Rd,Ra,RbLHUR Rd,Ra,Rb

110001 Rd Ra Rb 0000000000001000000000

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

SB Rd,Ra,RbSBR Rd,Ra,Rb

110100 Rd Ra Rb 0000000000001000000000

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

SH Rd,Ra,RbSHR Rd,Ra,Rb

110101 Rd Ra Rb 0000000000001000000000

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

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

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

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

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

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

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド japan.xilinx.com 17UG984 (v2015.1) 2015 年 4 月 15 日UG984 (v2015.4) 2015 年 11 月 18 日

Page 18: MicroBlaze プロセッサ リファレンス ガイド …...M_ACE_IC M_ACE_DC M_AXI_DP DLMB UG984 (v2015.4) 2015 年 11 月 18 日 MicroBlaze プロセッサ リファレンス ガイド

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

これらの命令は、 通常、 システム プロ グ ラ ムによ って使用され、 適宜アプ リ ケーシ ョ ン プロ グ ラ ムによ って呼び出 されます。 一般的には、 プロ グ ラ ムは、 メ モ リ からセマフ ォ を ロードするのに LWX を使用し、 予約が設定されます (プロセ ッ サは予約を内部で維持)。 プロ グ ラ ムは、 セマフ ォ値に基づいて結果を計算し、 SWX 命令を使用し て、 同じ メ モ リ ロ ケーシ ョ ンにその結果を条件付きでス ト ア し ます。 こ の条件付き ス ト アは、 その前の LWX 命令によ って設 定された予約に基づいて、 実行されます。 ス ト ア実行時に予約が存在する場合は、 ス ト アが実行され、 MSR[C] は 0 にク リ アにな り ます。 ス ト ア実行時に予約が存在し ない場合は、 ス ト アが実行され、 MSR[C] は 1 にセ ッ ト されます。

ス ト アが問題な く 実行される と、 セマフ ォのロード から セマフ ォのス ト アまで、 順番に命令が、 ほかの命令を差し挟むこ と な く 、 実行されます。 ほかのデバイ スが、 読み出しから ア ッ プデー ト までのセマフ ォ ロ ケーシ ョ ンを変更する こ と はあ り ません。 こ の操作中、 ほかのデバイ スはこ のセマフ ォ ロ ケーシ ョ ンか ら読み出し を実行でき ます。 セマ フ ォ操作が正し く 実行には、 LWX 命令を SWX 命令 と ペアにし、 その両方が同じ ア ド レ ス を指定する必要があ り ま す。 MicroBlaze での予約単位はワー ド です。 両方の命令に対し、 ア ド レ スはワー ド ア ラ イ ン し ている必要があ り ま す。 ア ラ イ ン されていない例外は、 これらの命令に対し ては生成されません。

条件付き ス ト アは、 ス ト ア ア ド レ スが、 予約を設定し た ロード ア ド レ スに一致し ていな く て も、 予約が存在し てい る と常に実行されます。

1 回につき、 1 予約のみが維持されます。 予約に関連付け られている ア ド レ スは、 後続の LWX 命令を実行する こ と で、 変更でき ます。 こ の条件付き ス ト アは、 その前の LWX 命令によ って設定された予約に基づいて、 実行されます。 LWX で設定されたア ド レ スに一致するかど う かに関わらず、 プロセ ッ サで保持されている予約は、 SWX 命令を実行 する と常にク リ アにな り ます。

リ セ ッ ト 、 割 り 込み、 例外、 ブレーク (BRK および BRKI 命令を含む) はすべて予約を ク リ ア し ます。

LWX および SWX 命令の使用に関する一般ガイ ド ラ イ ンは、 次のよ う になっています。

• LWX および SWX 命令はペアにし、 同じ ア ド レ ス を使用する よ う にし ます。

• LWX とペアになっていない SWX 命令で、任意ア ド レ スに割 り 当て られている ものは、 プロセ ッ サで保持されて いる予約を ク リ アするのに使用し ます。

• 条件付き シーケン スは LWX 命令から始ま り ます。 その後に、 メ モ リ ア ク セスが続 く か、 またはロード された値 に基づいた計算が続き ます。 シーケン スは SWX 命令で終わ り ます。 一般的には、 SWX 命令にエラーがあ る と、 分岐は LWX に戻って、 繰 り 返し命令が実行されます。

• LWX によ って ロード された値がゼロでなければ、一部の同期化プ リ ミ テ ィ ブを実行する と き、その LWX は SWX とペアにし な く て も よい場合があ り ます。 次は、 テス ト アン ド セ ッ ト のイ ンプ リ メ ンテーシ ョ ン例です。

loop: lwx r5,r3,r0 ; 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:

• パフ ォーマン スは、目的の値を返すこ と ができ ない 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 と の間で、 予約が失われる可能性が高 く な り ます。

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド japan.xilinx.com 18UG984 (v2015.1) 2015 年 4 月 15 日UG984 (v2015.4) 2015 年 11 月 18 日

Page 19: MicroBlaze プロセッサ リファレンス ガイド …...M_ACE_IC M_ACE_DC M_AXI_DP DLMB UG984 (v2015.4) 2015 年 11 月 18 日 MicroBlaze プロセッサ リファレンス ガイド

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

自己変更コー ド

自己変更コード を使用する場合は、 変更された命令を実行するのにフ ェ ッチする前に、 メ モ リ にその命令が書き込まれている こ と を ソ フ ト ウ ェアで確認する必要があ り ます。 次の点に注意する必要があ り ます。

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

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

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

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

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

古い未変更のコード ではな く 、 変更されたコード が常に実行されている こ と を確認するには、 ソ フ ト ウ ェアはこれらのすべてのケース を処理する必要があ り ます。

• 変更し たい命令が 1 つ以上分岐で、 分岐先キ ャ ッ シュが使用されている場合は、 分岐先ア ド レ スがキ ャ ッ シュ さ れている可能性があ り ます。

キ ャ ッ シュ された分岐先ア ド レ スの使用を避けるには、 変更されたコード を実行する前に、 分岐先キ ャ ッ シュがク リ アになっている こ と を ソ フ ト ウ ェ アで確認する必要があ り ます。

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

¨ 変更された命令は メ モ リ に書き込まれる手前で、イ ン ターコネ ク ト または メ モ リ コ ン ト ローラーの一時的な ス ト レージにあ る可能性があ り ます。

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

¨ ラ イ ト バッ ク キ ャ ッ シュおよびビ ク テ ィ ム バッ フ ァーが使用されている場合は、 変更された命令はビ ク テ ィ ム バッ フ ァーに格納されている可能性があ り ます。

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

次の注釈付き コード は、上記の問題のそれぞれがどのよ う に解決されるかを示し ています。このコード は、命令キ ャ ッシュおよびラ イ ト バッ ク データ キ ャ ッ シ ュの両方が使用されている こ と を前提にし ています。 使用されていない場 合は、 その部分の命令は省 く こ と ができ ます。

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

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 ビ ッ ト の特殊レジス タがあ り ます。

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド japan.xilinx.com 19UG984 (v2015.1) 2015 年 4 月 15 日UG984 (v2015.4) 2015 年 11 月 18 日

Page 20: MicroBlaze プロセッサ リファレンス ガイド …...M_ACE_IC M_ACE_DC M_AXI_DP DLMB UG984 (v2015.4) 2015 年 11 月 18 日 MicroBlaze プロセッサ リファレンス ガイド

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

汎用レジス タ

32 個の 32 ビ ッ ト の汎用レジス タには、 R0 から R31 までの番号が付いています。 レジス タ フ ァ イルは、 ビ ッ ト ス ト リ ーム ダウ ン ロード で リ セ ッ ト されます ( リ セ ッ ト 値は 0x00000000)。 図 2-2 は汎用レジス タ を表し てお り 、 表 2-7 に は、 各レジス タおよびレジス タ リ セ ッ ト 値 (あれば) がま と められています。

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

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

特殊用途レジス タ

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

プロ グ ラ ム カ ウ ン ター (PC) は実行命令の 32 ビ ッ ト ア ド レ スです。 これは、 MFS 命令で読み出しでき ますが、 MTS 命令で書き込むこ と はでき ません。 MFS 命令で使用される場合は、 PC レジス タは Sa = 0x0000 で指定されます。 PC は図 2-3 で図説され、 表 2-8 には、 その詳細および リ セ ッ ト 値がま と められています。

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 ビ ッ ト レジス タ

-

0:31 R17 MicroBlaze がハー ド ウ ェ ア例外をサポー ト する よ う に コ ン フ ィ ギュ レー ト されている場合は、 こ のレジス タには、 命令のア ド レスが ロー ド さ れ、 その命令の後にハー ド ウ ェ ア例外が発生し ます。 ただし、 BTR を使用する遅延ス ロ ッ ト の例外を除き ます ( 「分岐先レ ジス タ (BTR)」 を参照)。 ハー ド ウ ェ ア例外をサポー ト する よ う にコ ンフ ィ ギュ レー ト されていない場合は、 レジス タは汎用レジス タです。

-

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

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド japan.xilinx.com 20UG984 (v2015.1) 2015 年 4 月 15 日UG984 (v2015.4) 2015 年 11 月 18 日

Page 21: MicroBlaze プロセッサ リファレンス ガイド …...M_ACE_IC M_ACE_DC M_AXI_DP DLMB UG984 (v2015.4) 2015 年 11 月 18 日 MicroBlaze プロセッサ リファレンス ガイド

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

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

PC

図 2‐3 : PC

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

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

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

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

0x00000000

予約 VMS VM UMS UM PVR EIP EE DCE DZO ICE FSL 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 の場合)読み出し /書き込み

0

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド japan.xilinx.com 21UG984 (v2015.1) 2015 年 4 月 15 日UG984 (v2015.4) 2015 年 11 月 18 日

Page 22: MicroBlaze プロセッサ リファレンス ガイド …...M_ACE_IC M_ACE_DC M_AXI_DP DLMB UG984 (v2015.4) 2015 年 11 月 18 日 MicroBlaze プロセッサ リファレンス ガイド

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

18 VM 仮想保護モード

0 = C_USE_MMU = 3 (仮想) で、 MMU ア ド レ ス変換およびア ク セス保護が デ ィ スエーブル。C_USE_MMU = 2 (保護) で、ア ク セス保護はデ ィ スエーブル。

1 = C_USE_MMU = 3 (仮想)で、 MMU ア ド レ ス変換およびア ク セス保護がイ ネーブル。 C_USE_MMU = 2 (保護) で、 ア ク セス保護はイネーブル。

MMU でコ ンフ ィ ギュ レー ト し た場合にのみ使用可能。 (C_USE_MMU > 1 および C_AREA_OPTIMIZED = 0 の場合)読み出し /書き込み

0

19 UMS ユーザー モード保存

MMU でコ ンフ ィ ギュ レー ト し た場合にのみ使用可能。 (C_USE_MMU > 0 および C_AREA_OPTIMIZED = 0 の場合)読み出し /書き込み

0

20 UM ユーザー モード

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

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

MMU でコ ンフ ィ ギュ レー ト し た場合にのみ使用可能。 (C_USE_MMU > 0 および C_AREA_OPTIMIZED = 0 の場合)読み出し /書き込み

0

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

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

読み出し専用

パラ メ ーター C_PVR に基

づ く 。

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

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

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

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド japan.xilinx.com 22UG984 (v2015.1) 2015 年 4 月 15 日UG984 (v2015.4) 2015 年 11 月 18 日

Page 23: MicroBlaze プロセッサ リファレンス ガイド …...M_ACE_IC M_ACE_DC M_AXI_DP DLMB UG984 (v2015.4) 2015 年 11 月 18 日 MicroBlaze プロセッサ リファレンス ガイド

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

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

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

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

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

ハー ド ウ ェ ア除算器を使用す る よ う に コ ン フ ィ ギ ュ レー ト し てい る 場合(C_USE_DIV = 1) にのみ使用可能

読み出し /書き込み

0

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

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

命令 キ ャ ッ シ ュ を 使用す る よ う に コ ン フ ィ ギ ュ レ ー ト し て い る 場合(C_USE_ICACHE = 1) にのみ使用可能

読み出し /書き込み

0

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 プロセ ッサ リ フ ァ レンス ガイ ド japan.xilinx.com 23UG984 (v2015.1) 2015 年 4 月 15 日UG984 (v2015.4) 2015 年 11 月 18 日

Page 24: MicroBlaze プロセッサ リファレンス ガイド …...M_ACE_IC M_ACE_DC M_AXI_DP DLMB UG984 (v2015.4) 2015 年 11 月 18 日 MicroBlaze プロセッサ リファレンス ガイド

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

• ア ラ イ ン されていないア ク セス例外、 つま り ア ラ イ ン されていないア ク セス ア ド レ ス

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

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

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

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

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

ほかのすべての例外の場合は、 こ のレ ジ ス タ の内容は未定義です。 MFS 命令で読み出 さ れる場合は、 EAR は Sa = 0x0003 で指定されます。 EAR レジス タは 図 2-5 で図説され、 表 2-10 にはビ ッ ト の説明と リ セ ッ ト 値がま と められて います。

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

例外ステータ ス レジス タには、プロセ ッサのステータ ス ビ ッ ト が含まれています。MFS 命令で読み出される場合は、 ESR は Sa = 0x0005 で指定されます。 ESR レジス タは図 2-6 で図説され、 表 2-11 にはビ ッ ト の説明および リ セ ッ ト 値 が、 表 2-12 には例外別ステータ ス (ESS) がま と められています。

EAR

図 2‐5 : EAR

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

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

0:31 EAR 例外ア ド レ ス レジス タ 0x00000000

20

予約 DS ESS EC

図 2‐6 : ESR

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

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

0:18 予約

19 DS 遅延ス ロ ッ ト 例外

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

読み出し専用

0

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド japan.xilinx.com 24UG984 (v2015.1) 2015 年 4 月 15 日UG984 (v2015.4) 2015 年 11 月 18 日

Page 25: MicroBlaze プロセッサ リファレンス ガイド …...M_ACE_IC M_ACE_DC M_AXI_DP DLMB UG984 (v2015.4) 2015 年 11 月 18 日 MicroBlaze プロセッサ リファレンス ガイド

第 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

浮動小数点ユニ ッ ト

20:26 予約 0

特権命令 20:26 予約 0

ス タ ッ ク保護違反

20:26 予約 0

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

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

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド japan.xilinx.com 25UG984 (v2015.1) 2015 年 4 月 15 日UG984 (v2015.4) 2015 年 11 月 18 日

Page 26: MicroBlaze プロセッサ リファレンス ガイド …...M_ACE_IC M_ACE_DC M_AXI_DP DLMB UG984 (v2015.4) 2015 年 11 月 18 日 MicroBlaze プロセッサ リファレンス ガイド

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

分岐先レジス タ (BTR)

MicroBlaze プロセ ッサが例外を使用する よ う にコ ンフ ィ ギ ュ レー ト されている場合にのみ、分岐先レジス タは存在し ます。 このレジス タは、 MSR[EIP] = 0 の と きに実行されたすべての遅延ス ロ ッ ト の分岐命令の分岐先ア ド レ ス を格納 し ます。 例外が遅延ス ロ ッ ト の命令によ って引き起こ された場合 (つま り ESR[DS]=1)、 例外ハン ド ラーは、 R17 に格 納されている標準例外戻 り ア ド レ スではな く 、 BTR に格納されている ア ド レ スに実行を戻す必要があ り ます。 MFS 命令で読み出される場合は、 BTR は Sa = 0x000B で指定されます。 BTR レジス タは 図 2-7 で図説され、 表 2-13 には ビ ッ ト の説明 と リ セ ッ ト 値がま と められています。

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

浮動小数点ステータ ス レジス タには、 浮動小数点ユニ ッ ト のステータ ス ビ ッ ト が含まれています。 これは、 MFS 命 令で読み出しでき、 MTS 命令で書き込みでき ます。 読み出し または書き込みが実行される場合は、 こ のレジス タは

ス ト リ ーム 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) (続き)

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

BTR

図 2‐7 : BTR

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

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

0:31 BTR 遅延ス ロ ッ ト の例外に よ って引き起 こ さ れた例外か ら戻る と き に、ハン ド ラーによ り 使用される分岐先ア ド レ ス

読み出し専用

0x00000000

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド japan.xilinx.com 26UG984 (v2015.1) 2015 年 4 月 15 日UG984 (v2015.4) 2015 年 11 月 18 日

Page 27: MicroBlaze プロセッサ リファレンス ガイド …...M_ACE_IC M_ACE_DC M_AXI_DP DLMB UG984 (v2015.4) 2015 年 11 月 18 日 MicroBlaze プロセッサ リファレンス ガイド

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

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 に設定されている場合にのみ、 このレジス タはイ ンプ リ メ ン ト されます。 

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

ス タ ッ ク ロ ウ レジス タは、 ス タ ッ ク オーバーフ ローを検出するためのス タ ッ ク の最低値を格納し ます。 rA と し てス タ ッ ク ポ イ ン ター (レジス タ R1) を使用する ロー ド またはス ト ア命令のア ド レ スが、 ス タ ッ ク ロ ウ レジス タ よ り 小 さい と、 ス タ ッ ク オーバーフ ローが発生し、 MSR で例外がイネーブルになっている場合は、 ス タ ッ ク保護違反例外 にな り ます。

MFS 命令で読み出される場合は、 SLR は Sa = 0x0800 で指定されます。 SLR レジス タは 図 2-10 で図説され、 表 2-16 には、 ビ ッ ト の説明および リ セ ッ ト 値がま と められています。

予約 IO DZ OF UF DO

図 2‐8 : FSR

表 2‐14 : 浮動小数点ステータ ス レジス タ  (FSR) 

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

0:26 予約 未定義

27 IO 無効の操作 0

28 DZ ゼロ除算 0

29 OF オーバーフ ロー 0

30 UF アンダーフ ロー 0

31 DO 非正規オペラ ン ド エラー 0

EDR

図 2‐9 : EDR

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

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

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

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド japan.xilinx.com 27UG984 (v2015.1) 2015 年 4 月 15 日UG984 (v2015.4) 2015 年 11 月 18 日

Page 28: MicroBlaze プロセッサ リファレンス ガイド …...M_ACE_IC M_ACE_DC M_AXI_DP DLMB UG984 (v2015.4) 2015 年 11 月 18 日 MicroBlaze プロセッサ リファレンス ガイド

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

注記 : パラ メ ーター 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 ペー ジ ベースの メ モ リ を使用し て保護されます。 

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

プロセス ID レジス タは、 MMU ア ド レ ス変換中のソ フ ト ウ ェア プロセスの特定に使用されます。 これは、 MicroBlaze の C_USE_MMU コ ン フ ィ ギ ュ レーシ ョ ン オプシ ョ ンで制御されます。 C_USE_MMU が 1 よ り 大き く (ユーザー モー ド )、 C_AREA_OPTIMIZED が 0 に設定されている場合にのみ、 このレジス タはイ ンプ リ メ ン ト されます。 MFS および MTS

SLR

図 2‐10 : SLR

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

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

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

SHR

図 2‐11 : SHR

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

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

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

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド japan.xilinx.com 28UG984 (v2015.1) 2015 年 4 月 15 日UG984 (v2015.4) 2015 年 11 月 18 日

Page 29: MicroBlaze プロセッサ リファレンス ガイド …...M_ACE_IC M_ACE_DC M_AXI_DP DLMB UG984 (v2015.4) 2015 年 11 月 18 日 MicroBlaze プロセッサ リファレンス ガイド

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

命令でア クセス される場合は、 PID は Sa = 0x1000 で指定されます。 このレジス タには、 メ モ リ 管理特殊レジス タのパラ メーター C_MMU_TLB_ACCESS の設定に従ってア クセスでき ます。

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

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

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

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

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

ゾーン保護レジス タは、 TLB エン ト リ で定義されている MMU メ モ リ 保護を上書きする ために使用されます。 これ は、 MicroBlaze の C_USE_MMU コ ンフ ィ ギ ュ レーシ ョ ン オプシ ョ ンで制御されます。 C_USE_MMU が 1 よ り も大き く (ユーザー モード )、 C_AREA_OPTIMIZED が 0 に設定されていて、 さ らに指定されている メ モ リ 保護ゾーンの数 が 0 よ り も大きい (C_MMU_ZONES > 0) 場合にのみ、 このレジス タはイ ンプ リ メ ン ト されます。 イ ンプ リ メ ン ト され る レジス タ ビ ッ ト は、指定されている メ モ リ 保護ゾーンの数 (C_MMU_ZONES) に左右されます。MFS および MTS 命 令でア ク セス される場合は、 ZPR は Sa = 0x1001 で指定されます。 こ のレジス タには、 メ モ リ 管理特殊レジス タのパ ラ メ ーター C_MMU_TLB_ACCESS の設定に従ってア ク セスでき ます。 ZPR レジス タは 図 2-13 で図説され、 表 2-19 には、 ビ ッ ト の説明および リ セ ッ ト 値がま と められています。

予約 PID

図 2‐12 : PID

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

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

0:23 予約

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

読み出し /書き込み

0x00

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

図 2‐13 : ZPR

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド japan.xilinx.com 29UG984 (v2015.1) 2015 年 4 月 15 日UG984 (v2015.4) 2015 年 11 月 18 日

Page 30: MicroBlaze プロセッサ リファレンス ガイド …...M_ACE_IC M_ACE_DC M_AXI_DP DLMB UG984 (v2015.4) 2015 年 11 月 18 日 MicroBlaze プロセッサ リファレンス ガイド

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

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

変換ルッ ク アサイ ド バッ フ ァー ロ ウ レジス タは、 MMU の統合変換ルッ ク アサイ ド バッ フ ァー (UTLB) エン ト リ に ア ク セスする ために使用されます。 これは、 MicroBlaze の C_USE_MMU コ ン フ ィ ギ ュ レーシ ョ ン オプシ ョ ンで制御 されます。 C_USE_MMU が 1 よ り 大き く (ユーザー モード )、 C_AREA_OPTIMIZED が 0 に設定されている場合にの み、 このレジス タはイ ンプ リ メ ン ト されます。MFS および MTS 命令でア ク セス される場合は、TLBLO は Sa = 0x1003 で指定されます。 TLBLO を読み出し または書き込みする と きは、 TLBX レジス タでイ ンデッ ク ス化された UTLB エ ン ト リ にア ク セス し ます。 こ のレジス タは、 メ モ リ 管理特殊レジス タのパラ メ ーター C_MMU_TLB_ACCESS の設定 に従って、 読み出し可能です。

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

注記 : UTLB は、 外部 リ セ ッ ト 入力であ る Reset および Debug_Rst では リ セ ッ ト されません。 つま り 、 データの陳 腐化を避けるため、 リ セ ッ ト 後 UTLB 全体を初期化する必要があ り ます。

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

表 2‐19 : ゾーン保護レジス タ  (ZPR)  

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

0:12:3...30:31

ZP0ZP1...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

0 22 23 24 28 29 30 31

RPN EX WR ZSEL W I M G

図 2‐14 : TLBLO

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド japan.xilinx.com 30UG984 (v2015.1) 2015 年 4 月 15 日UG984 (v2015.4) 2015 年 11 月 18 日

Page 31: MicroBlaze プロセッサ リファレンス ガイド …...M_ACE_IC M_ACE_DC M_AXI_DP DLMB UG984 (v2015.4) 2015 年 11 月 18 日 MicroBlaze プロセッサ リファレンス ガイド

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

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

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

0:21 RPN 実ページ番号または物理ページ番号 TLB ヒ ッ ト が発生する と、こ のフ ィ ール ド は TLB エン ト リ から読み出され、 物理ア ド レ ス を作成する ために使用されます。 SIZE フ ィ ール ド の値によ り ますが、RPN ビ ッ ト の一部は物理ア ド レ スでは使用されません。 ソ フ ト ウ ェ アは、 こ のフ ィ ール ド の未使用ビ ッ ト をゼ ロ に ク リ アにする必要があ り ます。

C_USE_MMU=3 (仮想) の場合のみ定義されます。

読み出し /書き込み

0x000000

22 EX 実行フ ァ イル

ビ ッ ト が 1 にセ ッ ト されている場合、ページには実行可能コード が含まれて いて、 ページから命令をフ ェ ッチでき ます。 ビ ッ ト が 0 にク リ ア されている 場合は、 命令はページから フ ェ ッチでき ません。 ク リ ア EX ビ ッ ト でページ から命令をフ ェ ッチし よ う とする と、 命令ス ト レージ例外が発生し ます。

読み出し /書き込み

0

23 WR 書き込み可能

ビ ッ ト が 1 にセ ッ ト されている場合、 ページは書き込み可能で、 ス ト ア命令 をページ内のア ド レ スでデータ を格納するのに使用でき ます。 ビ ッ ト が 0 にク リ ア されている場合は、 ページは読み出し専用 (書き込み不 可) です。 ク リ ア WR ビ ッ ト でページにデータ を格納し よ う とする と、 デー タ ス ト レージ例外が発生し ます。

読み出し /書き込み

0

24:27 ZSEL ゾーン選択

このフ ィ ール ド は、 ゾーン保護レジス タ (ZPR) の Z0 から Z15 までの 16 個 のゾーンから 1 つ選択し ます。 た と えば、 ZSEL 0x5 の場合、 ゾーン フ ィ ール ド Z5 が選択されます。 選択 された ZPR フ ィ ール ド は、 TLB エン ト リ の EX および WR フ ィ ール ド によ り 指定されている ア ク セス保護を変更するのに使用されます。 また、 TLB V (有効) フ ィ ール ド を上書きする こ と によ り 、ページへのア ク セス を防ぐのに も使用されます。

読み出し /書き込み

0x0

28 W ラ イ ト スルー

パラ メ ーター C_DCACHE_USE_WRITEBACK が 1 に設定されている場合、 こ のビ ッ ト がキ ャ ッ シング ポ リ シーを制御し ます。 これが 1 に設定されて いる場合ラ イ ト スルー ポ リ シーが選択され、 それ以外の場合はラ イ ト バ ッ ク ポ リ シーが選択されます。

C_DCACHE_USE_WRITEBACK が 0 にク リ アにされている と、 このビ ッ ト は 1 に固定され、 ラ イ ト スルーは常に使用されます。

読み出し /書き込み

0/1

29 I キ ャ ッ シングの禁止

ビ ッ ト が 1 にセ ッ ト されている場合は、ページへのア ク セスはキ ャ ッ シュ さ れません (キ ャ ッ シングの禁止) ビ ッ ト が 0 にク リ ア されている場合は、ページへのア ク セスはキ ャ ッ シュ可 能です。

読み出し /書き込み

0

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド japan.xilinx.com 31UG984 (v2015.1) 2015 年 4 月 15 日UG984 (v2015.4) 2015 年 11 月 18 日

Page 32: MicroBlaze プロセッサ リファレンス ガイド …...M_ACE_IC M_ACE_DC M_AXI_DP DLMB UG984 (v2015.4) 2015 年 11 月 18 日 MicroBlaze プロセッサ リファレンス ガイド

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

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

変換ルッ ク アサイ ド バッ フ ァー ハイ レジス タは、 MMU の統合変換ルッ ク アサイ ド バッ フ ァー (UTLB) エン ト リ に ア ク セスするために使用されます。 これは、 MicroBlaze の C_USE_MMU コ ンフ ィ ギ ュ レーシ ョ ン オプシ ョ ンで制御 されます。 C_USE_MMU が 1 よ り 大き く (ユーザー モー ド )、 C_AREA_OPTIMIZED が 0 に設定されている場合に のみ、このレジス タはイ ンプ リ メ ン ト されます。MFS および MTS 命令でア ク セス される場合は、TLBHI は Sa = 0x1003 で指定されます。 TLBHI を読み出し または書き込みする と きは、 TLBX レジス タでイ ンデッ ク ス化された UTLB エン ト リ にア ク セス し ます。 このレジス タは、 メ モ リ 管理特殊レジス タのパラ メ ーター C_MMU_TLB_ACCESS の設定に 従って、 読み出し可能です。

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

• TLBHI を書き込むと、 PID の値は、 TLB エン ト リ の TID フ ィ ール ド に格納されます。

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

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

注記 : UTLB は、 外部 リ セ ッ ト 入力 Reset および Debug_Rst によ って リ セ ッ ト されません。

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

30 M メ モ リ コ ヒ ーレン ト

メ モ リ コ ヒ ーレ ンシは MicroBlaze にはイ ンプ リ メ ン ト さ れていないため、 このビ ッ ト は 0 に固定されています。

読み出し専用

0

31 G ガード

ビ ッ ト が 1 にセ ッ ト されている場合、 投機的ページ ア ク セスは許可されま せん ( メ モ リ がガード されている )。 ビ ッ ト が 0 に ク リ ア されている場合、 投機的ページ ア ク セスは許可されま す。 G 属性は、メ モ リ マ ッ プ された I/O を不正な命令ア ク セスから保護する ため に使用でき ます。

読み出し /書き込み

0

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

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

0 22 25 26 27 28 31

TAG SIZE V E U0 予約

図 2‐15 : TLBHI

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド japan.xilinx.com 32UG984 (v2015.1) 2015 年 4 月 15 日UG984 (v2015.4) 2015 年 11 月 18 日

Page 33: MicroBlaze プロセッサ リファレンス ガイド …...M_ACE_IC M_ACE_DC M_AXI_DP DLMB UG984 (v2015.4) 2015 年 11 月 18 日 MicroBlaze プロセッサ リファレンス ガイド

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

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

変換ルッ ク アサイ ド バッ フ ァー イ ンデッ ク ス レジス タは、 TLBLO および TLBHI レジス タにア ク セスする と き、 統 合変換ルッ ク アサイ ド バッ フ ァー (UTLB) へのイ ンデッ ク ス と し て使用されます。これは、MicroBlaze の C_USE_MMU コ ン フ ィ ギ ュ レ ー シ ョ ン オ プ シ ョ ン で制御 さ れ ま す。 C_USE_MMU が 1 よ り 大 き く (ユーザー モー ド )、 C_AREA_OPTIMIZED が 0 に設定されている場合にのみ、このレジス タはイ ンプ リ メ ン ト されます。MFS および MTS 命令でア ク セス される場合は、 TLBX は Sa = 0x1002 で指定されます。 TLBX レジス タは 図 2-16 で図説され、 表 2-22 には、 ビ ッ ト の説明および リ セ ッ ト 値がま と められています。

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

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

0:21 TAG TLB エン ト リ タ グ

SIZE フ ィ ール ド の制御の下、仮想 メ モ リ ア ド レ スのページ番号の部分と比 較されます。

読み出し /書き込み

0x000000

22:24 SIZE サイ ズ

ページ サイ ズを指定し ます。 SIZE フ ィ ール ド は、 TAG フ ィ ール ド を仮想 メ モ リ ア ド レ スのページ番号部分と比較する と きに使用される ビ ッ ト 範囲 を制御し ます。このフ ィ ール ド で定義されるページ サイ ズは表 2-37 に リ ス ト されています。

読み出し /書き込み

000

25 V 有効

こ のビ ッ ト が 1 にセ ッ ト されている場合、 TLB エン ト リ は有効で、 ページ 変換エン ト リ が含まれています。 0 にク リ ア されている場合は、 TLB エン ト リ は無効です。

読み出し /書き込み

0

26 E エンデ ィ アン

こ のビ ッ ト が 1 にセ ッ ト さ れてい る場合、 ページはビ ッ グ エンデ ィ ア ン ページ と し てア ク セス されます。

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

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

E ビ ッ ト は、C_USE_REORDER_INSTR が 1 に設定されている場合にのみイ ンプ リ メ ン ト され、 それ以外の場合は 0 に固定されます。

読み出し /書き込み

0

27 U0 ユーザー定義

MicroBlaze にはユーザー定義のス ト レージ属性がないため、 こ のビ ッ ト は 0 に固定されています。

読み出し専用

0

28:31 予約

ミ ス 予約 イ ンデッ クス

図 2‐16 : TLBX

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド japan.xilinx.com 33UG984 (v2015.1) 2015 年 4 月 15 日UG984 (v2015.4) 2015 年 11 月 18 日

Page 34: MicroBlaze プロセッサ リファレンス ガイド …...M_ACE_IC M_ACE_DC M_AXI_DP DLMB UG984 (v2015.4) 2015 年 11 月 18 日 MicroBlaze プロセッサ リファレンス ガイド

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

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

変換ルッ ク アサイ ド バッ フ ァー検索イ ンデッ ク ス レジス タは、 統合変換ルッ ク アサイ ド バッ フ ァー (UTLB) で仮想 ページ番号を検索する ために使用されます。 これは、 MicroBlaze の C_USE_MMU コ ンフ ィ ギ ュ レーシ ョ ン オプシ ョ ンで制御されます。 C_USE_MMU が 1 よ り 大き く (ユーザー モード )、 C_AREA_OPTIMIZED が 0 に設定されている 場合にのみ、 このレジス タはイ ンプ リ メ ン ト されます。 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

VPN 予約

図 2‐17 : TLBSX

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド japan.xilinx.com 34UG984 (v2015.1) 2015 年 4 月 15 日UG984 (v2015.4) 2015 年 11 月 18 日

Page 35: MicroBlaze プロセッサ リファレンス ガイド …...M_ACE_IC M_ACE_DC M_AXI_DP DLMB UG984 (v2015.4) 2015 年 11 月 18 日 MicroBlaze プロセッサ リファレンス ガイド

第 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 命令で読み出される場合、 PVR は Sa = 0x200x で指定されます。 こ の場合 x には 0x0 から 0xB までのレジス タ 番号が入 り ます。

ビ ッ ト の説明および値は、 表 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

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

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

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

14:15 予約 0

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

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド japan.xilinx.com 35UG984 (v2015.1) 2015 年 4 月 15 日UG984 (v2015.4) 2015 年 11 月 18 日

Page 36: MicroBlaze プロセッサ リファレンス ガイド …...M_ACE_IC M_ACE_DC M_AXI_DP DLMB UG984 (v2015.4) 2015 年 11 月 18 日 MicroBlaze プロセッサ リファレンス ガイド

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

0x19 = v8.40.b0x1B = v9.00x1D = v9.10x1F = v9.2

0x20 = v9.30x21 = v9.40x22 = v9.5

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

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

16 AREA 低い命令スループ ッ ト でエ リ ア を最適化するためのイ ンプ リ メ ンテーシ ョ ンを選択

C_AREA_OPTIMIZED

17 BS バレル シフ ターを使用 C_USE_BARREL

18 DIV 除算器を使用 C_USE_DIV

19 MUL ハード ウ ェ ア乗算器を使用 C_USE_HW_MUL > 0 (None)

20 FPU FPU を使用 C_USE_FPU > 0 (None)

21 MUL64 64 ビ ッ ト ハード ウ ェア乗算器を使用 C_USE_HW_MUL = 2 (Mul64)

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

ビ ッ ト 名前 説明 値

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド japan.xilinx.com 36UG984 (v2015.1) 2015 年 4 月 15 日UG984 (v2015.4) 2015 年 11 月 18 日

Page 37: MicroBlaze プロセッサ リファレンス ガイド …...M_ACE_IC M_ACE_DC M_AXI_DP DLMB UG984 (v2015.4) 2015 年 11 月 18 日 MicroBlaze プロセッサ リファレンス ガイド

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

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_DEBUG

拡張デバッ グ ロ ジ ッ ク を使用 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 プロセ ッサ リ フ ァ レンス ガイ ド japan.xilinx.com 37UG984 (v2015.1) 2015 年 4 月 15 日UG984 (v2015.4) 2015 年 11 月 18 日

Page 38: MicroBlaze プロセッサ リファレンス ガイド …...M_ACE_IC M_ACE_DC M_AXI_DP DLMB UG984 (v2015.4) 2015 年 11 月 18 日 MicroBlaze プロセッサ リファレンス ガイド

第 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 プロセ ッサ リ フ ァ レンス ガイ ド japan.xilinx.com 38UG984 (v2015.1) 2015 年 4 月 15 日UG984 (v2015.4) 2015 年 11 月 18 日

Page 39: MicroBlaze プロセッサ リファレンス ガイド …...M_ACE_IC M_ACE_DC M_AXI_DP DLMB UG984 (v2015.4) 2015 年 11 月 18 日 MicroBlaze プロセッサ リファレンス ガイド

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

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

ビ ッ ト 名前 説明 値

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

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

ビ ッ ト 名前 説明 値

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

0xF0x100x11 0x12

0x130x14

===

=

==

Virtex-7、 防衛グレード Virtex-7 QKintex™-7、 防衛グレード Kintex-7 QArtix™-7、 オー ト モーテ ィ ブ Artix-7、 防 衛グレード Artix-7 QZynq™-7000、 オー ト モーテ ィ ブ Zynq- 7000防衛グレード Zynq-7000 QUltraScale™ VirtexUltraScale Kintex

8:31 予約 0

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

ビ ッ ト 名前 説明 値

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド japan.xilinx.com 39UG984 (v2015.1) 2015 年 4 月 15 日UG984 (v2015.4) 2015 年 11 月 18 日

Page 40: MicroBlaze プロセッサ リファレンス ガイド …...M_ACE_IC M_ACE_DC M_AXI_DP DLMB UG984 (v2015.4) 2015 年 11 月 18 日 MicroBlaze プロセッサ リファレンス ガイド

第 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

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

ビ ッ ト 名前 説明 値

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

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド japan.xilinx.com 40UG984 (v2015.1) 2015 年 4 月 15 日UG984 (v2015.4) 2015 年 11 月 18 日

Page 41: MicroBlaze プロセッサ リファレンス ガイド …...M_ACE_IC M_ACE_DC M_AXI_DP DLMB UG984 (v2015.4) 2015 年 11 月 18 日 MicroBlaze プロセッサ リファレンス ガイド

第 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 段に分け られます。

分岐

通常、 フ ェ ッ チおよびデコー ド 段の命令は (プ リ フ ェ ッ チ バ ッ フ ァーも )、 分岐し ている分岐を実行する と きに、 フ ラ ッ シュ されます。 フ ラ ッ シュ後、 フ ェ ッチ パイプラ イ ン段は、 算出された分岐ア ド レ スからの新しい命令で リ ロー ド されます。 MicroBlaze で分岐し ている分岐は実行に 3 ク ロ ッ ク サイ クル要し ます。 その う ち 2 サイ クルは、 パイプ ラ イ ンを再度埋めるのに必要です。 このレ イ テンシ オーバーヘッ ド を抑え るため、MicroBlaze は遅延ス ロ ッ ト のあ る 分岐をサポー ト し ます。

サイ クル 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 プロセ ッサ リ フ ァ レンス ガイ ド japan.xilinx.com 41UG984 (v2015.1) 2015 年 4 月 15 日UG984 (v2015.4) 2015 年 11 月 18 日

Page 42: MicroBlaze プロセッサ リファレンス ガイド …...M_ACE_IC M_ACE_DC M_AXI_DP DLMB UG984 (v2015.4) 2015 年 11 月 18 日 MicroBlaze プロセッサ リファレンス ガイド

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

遅延スロ ッ ト

分岐し ている遅延ス ロ ッ ト のあ る分岐を実行する場合は、MicroBlaze のフ ェ ッチ パイプラ イ ン段のみがフ ラ ッ シュ さ れ、 デコード段の命令 (分岐遅延ス ロ ッ ト ) を完了でき る よ う にな り ます。 このテ ク ニ ッ クによ り 、 分岐ペナルテ ィ を 2 ク ロ ッ ク サイ クルか ら 1 ク ロ ッ ク サイ クルに低減する こ と ができ ます。 遅延ス ロ ッ ト のあ る分岐命令には、 命令 ニーモニ ッ ク に D が付いています。 た と えば、 BNE 命令は後に続 く 命令 (遅延ス ロ ッ ト がない) を実行し ませんが、 BNED は、 制御が分岐位置に送られる前に、 次の命令を実行し ます。

遅延ス ロ ッ ト には、 IMM、 分岐、 ま たはブレーク の命令が含まれていてはいけません。 割 り 込みおよび外部ハー ドウ ェア ブレークは、 遅延ス ロ ッ ト の分岐が完了する まで先送 り されます。

リ カバ リ 可能な例外を引き起こす可能性のあ る命令 (ア ラ イ ン されていないワード やハーフ ワード のロード およびス ト ア) は遅延ス ロ ッ ト で処理されます。 遅延ス ロ ッ ト で例外が発生する し ESR[DS] ビ ッ ト がセ ッ ト される と、 例外ハ ン ド ラーがその実行を分岐先に戻さ なければな り ません (特殊レジス タ BTR に格納)。 ESR[DS] ビ ッ ト がセ ッ ト され ている場合、 レジス タ R17 は無効です (そ う でない場合は、 例外を引き起こす命令の後に続いてア ド レ スが含まれま す)。

分岐先キャ ッ シュ

分岐パフ ォーマン ス を向上させる ため、 MicroBlaze には、 分岐予測機能のあ る分岐先キ ャ ッ シ ュ (BTC) があ り ます。 こ の BTC がイ ネーブルになっている と、 正し く 予測された直近の分岐または戻 り 命令にはオーバーヘッ ド が発生し ません。

BTC は、 命令が初めて処理された と き、 直近の分岐および戻 り 命令のターゲ ッ ト ア ド レ ス を保存し ます。 次にその 命令が処理される と きは、 通常、 分岐先キ ャ ッ シ ュにそのア ド レ スが格納されていて、 その分岐が分岐する場合は、命令フ ェ ッチ プロ グ ラ ム カ ウ ン ターがその格納されている ターゲ ッ ト ア ド レ スに変わ り ます。 条件な し分岐および 戻 り 命令は常に分岐し ますが、 条件付き分岐は、 分岐すべきでないものを分岐させて し ま う のを避けるため、 分岐予測を使用し ます。

メ モ リ バ リ ア (MBAR 0) または同期分岐 (BRI 4) が実行される と、BTC はク リ アにな り ます。た と え分岐し ていて も、 分岐命令のすぐ後に メ モ リ バ リ アまたは同期分岐が続 く と きにも、 BTC はク リ アにな り ます。 間違って BTC を ク リ アにするのを避けるため、 分岐命令のすぐ後に メ モ リ バ リ アまたは同期分岐を配置し ないで く ださい。

分岐予測で間違って予測されて し ま う ケースには、 次のよ う な 3 つのケースがあ り ます。

• 分岐し てはいけないはずの条件付き分岐が、 実際に分岐し ている。

• 分岐し ているべき条件付き分岐が分岐し ていない。

• 戻 り 命令のターゲ ッ ト ア ド レ スが間違っている (これはコード の別の位置から読み出された関数から戻る と き に発生する可能性があ り ます)。

こ う し たケースのすべては、 分岐または戻 り 命令が実行段に達し た と きに検出および訂正され、 分岐予測ビ ッ ト またはターゲ ッ ト ア ド レ スは、 実際の命令の動作を反映させる ため、 BTC でア ッ プデー ト されます。 こ の訂正は、 2 ク ロ ッ ク サイ クルのペナルテ ィ にな り ます。

BTC のサ イ ズは、 C_BRANCH_TARGET_CACHE_SIZE で選択で き ます。 デフ ォル ト の推奨設定には、 1 ブ ロ ッ ク RAM が使用され、 これで 512 エン ト リ にな り ます。 64 以下のエン ト リ を選択する場合は、 BTC のイ ンプ リ メ ン ト に 分散 RAM が使用されます。 それ以外の場合はブロ ッ ク RAM が使用されます。

BTC がブロ ッ ク RAM を使用し、C_FAULT_TOLERANT が 1 に設定されている場合は、 ブロ ッ ク RAM はパ リ テ ィ で 保護されます。 パ リ テ ィ エラーが発生し た場合は、 分岐は予測されません。 このケースでエラーを重ねるのを避ける には、 同期分岐で定期的に BTC を ク リ アにする必要があ り ます。

分岐先キ ャ ッ シ ュは C_USE_BRANCH_TARGET_CACHE が 1、 C_AREA_OPTIMIZED が 0 に設定されている と きに 使用でき ます。

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド japan.xilinx.com 42UG984 (v2015.1) 2015 年 4 月 15 日UG984 (v2015.4) 2015 年 11 月 18 日

Page 43: MicroBlaze プロセッサ リファレンス ガイド …...M_ACE_IC M_ACE_DC M_AXI_DP DLMB UG984 (v2015.4) 2015 年 11 月 18 日 MicroBlaze プロセッサ リファレンス ガイド

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

メ モ リ  アーキテ クチャMicroBlaze は、 命令およびデータのア ク セスがそれぞれ別のア ド レ ス空間で行われるハーバー ド メ モ リ アーキテ ク チャでイ ンプ リ メ ン ト されています。各ア ド レ ス空間は 32 ビ ッ ト です (つま り 、命令 とデータ メ モ リ それぞれに 4GB まで処理する と い う こ と です)。命令およびデータ メ モ リ の範囲は、両方を同じ物理 メ モ リ にマ ッ ピング し てオーバー ラ ッ プ させる こ と ができ ます。 後者はソ フ ト ウ ェ ア デバッ グに便利です。

MicroBlaze の命令およびデータ イ ン ターフ ェ イ スはどち ら も、 幅はデフ ォル ト 32 ビ ッ ト で、 どのエンデ ィ アンが設 定されているかによ って異な り ますが、 ビ ッ グ エンデ ィ アン、 リ ト ル エンデ ィ アン、 ビ ッ ト 反転フ ォーマ ッ ト を使 用し ます。 MicroBlaze は、 データ メ モ リ へのア ク セスにワード、 ハーフ ワード、 バイ ト をサポー ト し ます。

ア ラ イ ン されていない例外をサポー ト する よ う プロセ ッ サがコ ンフ ィ ギュ レー ト されていない限 り 、データ ア ク セス はア ラ イ ン されている必要があ り ます (ワード ア ク セスな ら ワード の境界で、 ハーフ ワード な らハーフ ワード の境界 でア ラ イ ン されている必要があ る )。 命令ア ク セスはすべてワード でア ラ イ ン されている必要があ り ます。

MicroBlaze は、 命令プ リ フ ェ ッチ バッ フ ァーおよび (イネーブルになっていれば) 命令キ ャ ッ シ ュ ス ト リ ームを使用 し て、 パフ ォーマン ス を向上させるため、 命令をプ リ フ ェ ッチし ます。 物理 メ モ リ の終わ り を越えて メ モ リ が命令をプ リ フ ェ ッ チする と、 命令バス エ ラーやプ ロ セ ッ サ ス ト ールが発生する可能性があ る ため、 そ う い う 命令をプ リ フ ェ ッチするのを防ぐため、 物理 メ モ リ の終わ り に近い位置に命令を配置し ないよ う にする必要があ り ます。 命令プリ フ ェ ッチ バッ フ ァーには 16 バイ ト のマージンが必要で、 命令キ ャ ッ シュ ス ト リ ームを使用する と、 さ らに 2 つの キ ャ ッ シュ ラ イ ン (32、 64、 または 128 バイ ト ) が追加されます。

MicroBlaze は、 I/O へのデータ ア ク セス と メ モ リ へのデータ ア ク セス を分けません ( メ モ リ マ ッ プされた I/O を使用 )。 メ モ リ ア ク セスには最高 3 つのイ ン ターフ ェ イ スがあ り ます。

• ローカル メ モ リ バス (LMB)

• ペ リ フ ェ ラル ア ク セス用の AXI4 (Advanced eXtensible Interface)

• キ ャ ッ シュ ア ク セス用の AXI4 または AXI4 コ ヒ ーレ ンシ拡張 (ACE)

LMB メ モ リ ア ド レ ス範囲は、 AXI4 の範囲 と オーバーラ ッ プさせる こ と はでき ません。

C_ENDIANNESS パラ メ ーターは常に リ ト ル エンデ ィ アンに設定されています。

ローカル メ モ リ (LMB) へのア ク セスおよびキ ャ ッ シ ュ読み出し ヒ ッ ト に対し、 MicroBlaze には 1 サイ クル レ イ テン シがあ り ます。 例外は、 C_AREA_OPTIMIZED が 1 で、 データ側のア ク セスおよびデータ キ ャ ッ シュ読み出し ヒ ッ ト に 2 ク ロ ッ ク サイ クル必要な場合、 また C_FAULT_TOLERANT が 1 に設定されていて、 LMB へのバイ ト 書き込 みおよびハーフ ワード書き込みに 2 ク ロ ッ ク サイ クル必要な場合です。

データ キ ャ ッ シュ書き込みレ イ テンシは、 C_DCACHE_USE_WRITEBACK に左右されます。C_DCACHE_USE_WRITEBACK が 1 に設定されている場合、 書き込みレ イ テンシは通常 1 サイ クルです (キ ャ ッ シュが メ モ リ にア ク セスする場合はレ イ テンシは増え る )。 C_DCACHE_USE_WRITEBACK が 0 に設定されている場合、書き込みレ イ テンシは通常 2 サイ クルです ( メ モ リ コ ン ト ローラーのポステ ッ ド書き込みバッ フ ァーがいっぱいの場合はレ イ テンシは増え る )。

MicroBlaze の命令およびデータのキ ャ ッ シュは、4、8、または 16 ワード のキ ャ ッ シュ ラ イ ンを使用する よ う コ ンフ ィ ギュ レー ト でき ます。 長いキ ャ ッ シュ ラ イ ンを使用する場合、 よ り 多 く のバイ ト がフ ェ ッチされ、 一般的には順次ア ク セス パターンで ソ フ ト ウ ェ アのパフ ォーマン ス を向上させます。 しかし、 よ り ラ ンダムなア ク セス パターンの ソ フ ト ウ ェアだ と、 パフ ォーマン スは落ちる可能性があ り ます。 利用可能なキ ャ ッ シュ ラ イ ン数が少ないため、 キ ャ ッ シュ ヒ ッ ト 率が低 く なる ため、 パフ ォーマン スが低下し ます。

さ まざまな メ モ リ イ ン ターフ ェ イ スの詳細については、 第 3 章 「MicroBlaze 信号イ ン ターフ ェ イ スの説明」 を参照し て く ださい。

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド japan.xilinx.com 43UG984 (v2015.1) 2015 年 4 月 15 日UG984 (v2015.4) 2015 年 11 月 18 日

Page 44: MicroBlaze プロセッサ リファレンス ガイド …...M_ACE_IC M_ACE_DC M_AXI_DP DLMB UG984 (v2015.4) 2015 年 11 月 18 日 MicroBlaze プロセッサ リファレンス ガイド

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

特権命令次の MicroBlaze 命令は特権命令です。

• GET、 GETD、 PUT、 PUTD (明示的に許可されている場合を除 く )

• WIC、 WDC

• MTS

• MSRCLR、 MSRSET (C ビ ッ ト のみが影響を受ける場合を除 く )

• BRK

• RTID、 RTBD、 RTED

• BRKI (物理ア ド レ スC_BASE_VECTORS + 0x8 または C_BASE_VECTORS + 0x18 にジャ ンプする場合を除 く )

• SLEEP

ユーザー モード でこれらの命令を実行し よ う とする と、 特権命令例外が発生し ます。

パラ メ ーター C_MMU_PRIVILEGED_INSTR を 1 に設定し ている場合、 命令 GET、 GETD、 PUT、 および PUTD は特 権命令 と はみな されず、 ユーザー モード で実行する こ と ができ ます。 しかし、 そ う する と アプ リ ケーシ ョ ンが互いに 干渉し合 う こ と になって し ま う ので、 パフ ォーマン ス上の理由でど う し て も必要でない限 り は、 この設定にし ないでく ださい。

ユーザー モードおよび仮想モード から離れるには、 次の 6 つの方法があ り ます。

1. ハード ウ ェア生成された リ セ ッ ト (デバッ グ リ セ ッ ト を含む)

2. ハード ウ ェア例外

3. マス ク でき ないブレーク またはハード ウ ェ ア ブレーク

4. 割 り 込み

5. ユーザー ベク ター例外を実行する ため 「BRALID Re,C_BASE_VECTORS + 0x8」 を実行

6. ソ フ ト ウ ェア ブレーク命令 BRKI を実行し て、 物理ア ド レ ス C_BASE_VECTORS + 0x8 または C_BASE_VECTORS + 0x18 にジャ ンプ

ハード ウ ェア生成された リ セ ッ ト を除き、 上記のすべての方法で、 ユーザー モードおよび仮想モード ステータ スは、 MSR UMS および VMS ビ ッ ト に保存されます。

ア プ リ ケ ー シ ョ ン (ユーザー モー ド ) プ ロ グ ラ ム は、 BRALID ま た は BRKI 命令 を 使用 し て、 物理 ア ド レ ス C_BASE_VECTORS + 0x8 にジャ ンプし て、 システム サービ ス ルーチン (特権モード プロ グ ラ ム) へ制御を移行させ ます。 この命令を実行する と、 システム コール例外が発生し ます。 例外ハン ド ラーは、 どのシステム サービ ス ルー チンを呼び出すかを判断し、 そのサービ ス を呼び出すための権限が呼び出し を し ている アプ リ ケーシ ョ ンにあ るかどう か確認し ます。 権限が認められた場合は、 例外ハン ド ラーは、 アプ リ ケーシ ョ ン プロ グ ラ ムの代わ り に、 システム サービ ス ルーチンへの実際のプロ シージ ャ コールを実行し ます。

システム サービ ス ルーチンの実行環境を設定するには、 プロ ローグ命令を実行する必要があ り ます。 これらの命令 は、 通常、 プロ シージャ情報の (ア ク テ ィ ベーシ ョ ン レ コード ) の保持、 ポイ ン ターのア ッ プデー ト および初期化、 揮 発性レジス タ (システム サービ ス ルーチンが使用する レジス タ ) の保存を行 う ス ト レージを作成し ます。 実行可能な モジ ュールを作成する と き、 リ ンカーでプロ ローグ コード を挿入するか、 または、 システム コール割 り 込みハン ド ラーかシステム ラ イブラ リ ルーチンのどち らかにス タブ コード と し てプロ ローグ コード を含める こ と ができ ます。

システム サービ ス ルーチンからの リ ターンは、前出のプロセスの逆にな り ます。エピ ローグ コード は、ア ク テ ィ ベー シ ョ ン レ コード を逆にし て割 り 当てを解放し、 ポイ ン ターを元に戻し、 揮発性レジス タ を元に戻し ます。 割 り 込みハ ン ド ラーは、 アプ リ ケーシ ョ ンに戻るために例外命令 (RTED) からの リ ターンを実行し ます。

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド japan.xilinx.com 44UG984 (v2015.1) 2015 年 4 月 15 日UG984 (v2015.4) 2015 年 11 月 18 日

Page 45: MicroBlaze プロセッサ リファレンス ガイド …...M_ACE_IC M_ACE_DC M_AXI_DP DLMB UG984 (v2015.4) 2015 年 11 月 18 日 MicroBlaze プロセッサ リファレンス ガイド

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

仮想メ モ リ管理MicroBlaze で実行し ているプロ グ ラ ムは、 フ ラ ッ ト な 4GB ア ド レ ス空間にア ク セスする ため、 実効ア ド レ ス を使用 し ます。 プロセ ッ サはこのア ド レ ス空間を、 どの変換モード が指定されているかによ り 、 次のいずれかの方法で解釈し ます。

• リ アル モード の場合、 実効ア ド レ スは物理 メ モ リ に直接ア ク セスする ために使用されます。

• 仮想モード の場合、 プロセ ッサの仮想 メ モ リ 管理ハード ウ ェ アによ り 、 実効ア ド レ スは物理ア ド レ スへ変換されます。

仮想モード の場合、システム ソ フ ト ウ ェ アは、物理ア ド レ ス空間の任意の位置にプロ グ ラ ムおよびデータ を移動させ る こ と ができ ます。 ア ク テ ィ ブなプロ グ ラ ムおよびデータに空間が必要にな る と、 システム ソ フ ト ウ ェ アが非ア ク テ ィ ブなプロ グ ラ ムおよびデータ を物理 メ モ リ から移し ます。

この位置換えによ り 、実際にシステムにイ ンプ リ メ ン ト されている よ り も多 く の メ モ リ が存在し ている よ う にプロ グラ ムには見えます。 システムにあ る物理 メ モ リ 量の制限内で、 プロ グ ラ ムを う ま く 実行する こ と ができ る よ う にな ります。 どの物理 メ モ リ ア ド レ スがほかのソ フ ト ウ ェア プロセスやハード ウ ェア デバイ スに割 り 当て られているかを プロ グ ラ マーが知ってお く 必要はあ り ません。 プロ グ ラ ムに見えている ア ド レ スは、 プロセ ッ サによ り 、 適切な物理ア ド レ スに変換されます。

仮想モード だ と、 メ モ リ 保護を さ らに制御する こ と ができ ます。 1KB 程度の メ モ リ のブロ ッ クは、 個別に不正ア ク セ スか ら保護する こ と ができ ます。 メ モ リ の保護 と 位置換えによ り 、 シス テム ソ フ ト ウ ェ アでマルチタ ス ク機能をサ ポー ト する こ と ができ ます。 複数のプロ グ ラ ムは同時実行し ているか、 またはほぼ同時に近い状態で実行し ている よう に見えます。

MicroBlaze では、 C_USE_MMU が 3 (仮想)、 C_AREA_OPTIMIZED が 0 に設定されている と きに、 メ モ リ 管理ユニ ッ ト (MMU) によ って、 仮想モー ド がイ ンプ リ メ ン ト されます。 MMU は、 実効ア ド レ ス を物理ア ド レ スにマ ッ ピング し、 メ モ リ 保護をサポー ト し ます。 これらの機能を使用する こ と によ り 、 システム ソ フ ト ウ ェ アはデマン ド ページ の仮想 メ モ リ およびほかの メ モ リ 管理機能を イ ンプ リ メ ン ト する こ と ができ ます。

MicroBlaze の MMU のイ ンプ リ メ ン ト は PowerPC™ 405 をベースにし ています。詳細は、『PowerPC プロセ ッサ リ フ ァ レ ン ス ガイ ド』 (UG011) を参照し て く ださい。

MMU の機能は次のよ う にま と められます。

• 実効ア ド レ ス を物理ア ド レ スに変換

• ア ド レ ス変換中にページ レベルのア ク セス を コ ン ト ロール

• ゾーンを使用し た、 追加仮想モード保護を提供

• 命令/ア ド レ ス、 データ /ア ド レ スの変換および保護を個別にコ ン ト ロール

• 1kB、 4kB、 64kB、 1MB、 4MB、 16MB の 8 つのページ サイ ズをサポー ト 。 ページ サイ ズのどの組み合わせでも システム ソ フ ト ウ ェ アで使用でき ます。

• ページ置き換えス ト ラ テジを ソ フ ト ウ ェ アでコ ン ト ロール

リ アル モー ド

プロセ ッ サが メ モ リ をフ ェ ッチし、 ロード またはス ト ア命令でデータにア ク セスする と き、 プロセ ッ サは メ モ リ を参照し ます。 プロセ ッ サで計算される 32 ビ ッ ト の実効ア ド レ ス を使用し て、 プロ グ ラ ムは メ モ リ ロ ケーシ ョ ンを参照 し ます。 リ アル モード がイネーブルになっている場合、 物理ア ド レ スは実効ア ド レ ス と同じにな り 、 プロセ ッ サはそ れを使用し て、 物理 メ モ リ にア ク セス し ます。 プロセ ッ サ リ セ ッ ト の後、 プロセ ッサは リ アル モード で動作し ます。 リ アル モード は、 MSR の VM ビ ッ ト を ク リ アにし て、 イネーブルにする こ と もでき ます。

物理 メ モ リ のデータ ア ク セス (ロードおよびス ト ア) は、 実効ア ド レ ス を使用し て リ アル モード で実行されます。 リ アル モード では、 システム ソ フ ト ウ ェ アで仮想ア ド レ ス変換はでき ませんが、C_USE_MMU > 1 (ユーザー モード ) お よび C_AREA_OPTIMIZED = 0 の と きに、 フル メ モ リ ア ク セス保護はイ ンプ リ メ ン ト されて使用可能にな り ます。

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド japan.xilinx.com 45UG984 (v2015.1) 2015 年 4 月 15 日UG984 (v2015.4) 2015 年 11 月 18 日

Page 46: MicroBlaze プロセッサ リファレンス ガイド …...M_ACE_IC M_ACE_DC M_AXI_DP DLMB UG984 (v2015.4) 2015 年 11 月 18 日 MicroBlaze プロセッサ リファレンス ガイド

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

リ アル モード の メ モ リ マネージ ャーのイ ンプ リ メ ンテーシ ョ ンは、 仮想モード のものよ り も簡単です。 リ アル モー ド は、 ア ク セス保護が必要で、 仮想ア ド レ ス変換は不要な と き、 簡単なエンベデッ ド環境での メ モ リ 管理のソ リ ューシ ョ ン と し て適切です。

仮想モー ド

仮想モー ド では、 図 2-18 で説明されているプロセス を使用し、 プロセ ッ サが実効ア ド レ ス を物理ア ド レ スに変換し ます。 仮想モード は、 MSR の VM ビ ッ ト をセ ッ ト し て、 イネーブルにする こ と ができ ます。

図 2-18 にあ る各ア ド レ スには、ページ番号フ ィ ール ド と オフセ ッ ト フ ィ ール ド があ り ます。ページ番号は、MMU に よ って変換されたア ド レ ス部分です。オフセ ッ ト は、ページへのバイ ト オフセ ッ ト で、MMU で変換されていません。 仮想ア ド レ スには、 プロセス ID (PID) と呼ばれる追加フ ィ ール ド があ り ます。 これは PID レジス タからの情報です (プロセス ID レジス タの詳細は29を参照)。 PID と 実効ページ番号 (EPN) の組み合わせは、 仮想ページ番号 (VPN) と 呼ばれます。 値 n は、 表 2-37 にあ る よ う に、 ページ サイ ズによ って決められます。

システム ソ フ ト ウ ェ アはページ変換テーブルを管理するのですが、 このテーブルには、各仮想ページを物理ページに 変換するために使用されるエン ト リ が含まれています。ページ変換エン ト リ で定義されるページ サイ ズで、ページ番 号およびオフセ ッ ト フ ィ ール ド のサイ ズが決ま り ます。 た と えば、 4kB のページ サイ ズが使用される場合、 ページ 番号フ ィ ール ド は 20 ビ ッ ト で、 オフセ ッ ト フ ィ ール ド は 12 ビ ッ ト にな り ます。 この場合の VPN は 28 ビ ッ ト です。

その後、 最も頻繁に使用されるページ変換が、 変換ル ッ ク アサイ ド バッ フ ァー (TLB) に格納されます。 仮想ア ド レ ス を変換する と き、 MMU は、 一致する VPN (PID および EPN) をページ変換エン ト リ の中から検索し ます。 テーブル のすべてのエン ト リ を検索するのではな く 、 プロセ ッ サ TLB に含まれているエン ト リ のみを確認し ます。 一致する VPN のあ るページ変換エン ト リ が検出される と、対応する物理ページ番号がそのエン ト リ から読み出され、オフセ ッ ト と 組み合わせて 32 ビ ッ ト の物理ア ド レ スに変換し ます。 こ の物理ア ド レ スはプロセ ッ サが メ モ リ を参照する と き に使用されます。

システム ソ フ ト ウ ェ アは、 PID を使用し て、 プロセ ッ サ上で実行し ている ソ フ ト ウ ェ ア プロセス (タ ス ク、 サブルー チン、 ス レ ッ ド ) を特定する こ と ができ ます。 個々にコ ンパイルされているプロセスは、 互いにオーバーラ ッ プする 実効ア ド レ ス領域で動作する可能性があ り ます。 こ のオーバーラ ッ プは、 マルチタ ス ク機能がサポー ト されている場

図 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 プロセ ッサ リ フ ァ レンス ガイ ド japan.xilinx.com 46UG984 (v2015.1) 2015 年 4 月 15 日UG984 (v2015.4) 2015 年 11 月 18 日

Page 47: MicroBlaze プロセッサ リファレンス ガイド …...M_ACE_IC M_ACE_DC M_AXI_DP DLMB UG984 (v2015.4) 2015 年 11 月 18 日 MicroBlaze プロセッサ リファレンス ガイド

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

合は、 システム ソ フ ト ウ ェ アで解決する必要があ り ます。 PID を各プロセスに割 り 当て る こ と で、 シス テム ソ フ ト ウ ェアは、 各プロセス を仮想ア ド レ ス空間の 1 領域に移動させて、 オーバーラ ッ プを解決する こ と ができ ます。 仮想 ア ド レ ス空間マ ッ ピングは、 各プロセス を物理ア ド レ ス空間に個別に変換させる こ と ができ ます。

ページ変換テーブル

ページ変換テーブルは、 ソ フ ト ウ ェ アで定義および管理される、 ページ変換情報を含んだデータ構造です。 エンベデッ ド システム アプ リ ケーシ ョ ンを ターゲ ッ ト にし たアーキテ クチャ上の ト レー ド オフ と し て、 ソ フ ト ウ ェ ア管理 のページ変換が必要にな り ます。 エンベデッ ド システムには、 厳し く 管理された環境 と、 アプ リ ケーシ ョ ン ソ フ ト ウ ェアを細か く 定義し たセ ッ ト があ る こ と が多 く 、 そ う い う 環境では、 次のよ う な方法で、 各エンベデッ ド システム 用に仮想 メ モ リ 管理を最適化する こ と ができ ます。

• ページ変換エン ト リ をすばや く 検索でき る よ う に、 ページ テーブル検索 (テーブルウ ォーク と も言われる ) の速 度を最大限にするため、 ページ変換テーブルを構成する こ と ができ ます。 最も一般的なプロセ ッ サは、 イ ンデック ス テーブル (ページ テーブル サイ ズが大き く 、簡単な検索方法) か、ハッ シュ テーブル (ページ テーブル サイ ズが小さ く 、 複雑な検索方法) のどち ら かを イ ンプ リ メ ン ト し ます。 ソ フ ト ウ ェ アでテーブルを辿る こ と で、 特 定のエンベデッ ド システムに合わせ、 どんな組み合わせでテーブルでも構成でき ます。 ページ テーブル サイ ズ およびア ク セス時間の両方を最適化でき ます。

• アプ リ ケーシ ョ ン モジュール、 デバイ ス ド ラ イバー、 システム サービ ス ルーチン、 およびデータに対し、 ペー ジを個別に使用する こ と ができ ます。 個別にページ サイ ズを選択する こ と で、 フ ラ グ メ ンテーシ ョ ン (未使用の メ モ リ ) を低減し て、 シ ス テム ソ フ ト ウ ェ アが効率よ く メ モ リ を使用する こ と がで き ます。 た と えば、 大き な データ構造な ら 16MB のページに、 小さ な I/O デバイ ス ド ラ イバーな ら 1KB ページに割 り 当て る こ と ができ ま す。

• ページ変換が見つから ないケース を最小限に抑え るため、 ページ置き換えを調節する こ と ができ ます。 この後のセ ク シ ョ ンで説明する よ う に、 最も頻繁に使用されるページ変換は、 変換ル ッ ク アサイ ド バ ッ フ ァー (TLB) に 格納されます。 どの変換が TLB に格納され、 新しい変換が必要な場合、 どの変換が置き換え られるかを判断す るのはソ フ ト ウ ェ アです。 ページ変換エン ト リ は常に TLB に格納された り 、 TLB から移動させた り と、 転送さ れています。 そのス ラ ッ シングを避け るため、 置き換えス ト ラ テジを設定する こ と ができ ます。 また、 置き換えス ト ラ テジは、 ク リ テ ィ カルなページ変換を置き換え られるのを防ぐために、 設定する こ と も でき ます。 これはページ ロ ッ キング と も呼ばれるプロセスです。

統合された 64 エン ト リ の TLB は、 ソ フ ト ウ ェアによ り 管理され、 MMU でア ク セスでき る命令およびデータのペー ジ変換エン ト リ のサブセ ッ ト をキ ャ ッ シュ し ます。 システム メ モ リ のページ変換テーブルからエン ト リ を読み出し、 TLB にそれを格納するのは ソ フ ト ウ ェ アです。 次のセ ク シ ョ ンでは、 統合 TLB を詳し く 説明し ます。 内部的には、 C_MMU_ITLB_SIZE と C_MMU_DTLB_SIZE でそれぞれにサイ ズをを コ ンフ ィ ギ ュ レー ト し た命令およびデータの シャ ド ウ TLB も含まれています。

これらのシャ ド ウ TLB は、 プロセ ッサですべて管理され (ソ フ ト ウ ェ アには透過的)、 統合 TLB と のア ク セス衝突を 最小限に抑え るために使用されます。

変換ルッ クアサイ ド  バッ フ ァー

変換ルッ ク アサイ ド バッ フ ァー (TLB) は、MicroBlaze が仮想モード で実行し ていて、 メ モ リ 保護およびス ト レージ制 御が行われている と きのア ド レ ス変換のために、 MMU によ って使用されます。 TLB 内の各エン ト リ には、 仮想ペー ジ (PID および実効ページ番号) を特定し、 物理ページに変換し、 ページの保護特性を決め、 ページに関連付け られて いる ス ト レージ属性を指定するために必要な情報が含まれています。

MicroBlaze の TLB は物理的に次の 3 つの TLB と し て イ ンプ リ メ ン ト されています。

• 統合 TLB (UTLB) : 64 個のエン ト リ が含まれていて、 擬似連想型です。 命令ページおよびデータ ページの変換は どの UTLB にも格納でき ます。 UTLB の初期化および管理は、 ソ フ ト ウ ェアによ って完全に行われます。

• 命令シャ ド ウ TLB (ITLB) : 命令ページ変換エン ト リ が含まれていて、 完全連想型です。 ITLB に格納されるペー ジ変換エン ト リ は、UTLB から最近ア ク セス された命令ページ変換です。 ITLB は、命令変換と UTLB ア ッ プデー ト 操作 と の間の衝突を最小限に抑え るのに使用されます。 I TLB の初期化および管理は、 ハード ウ ェアによ って 完全に行われ、 ソ フ ト ウ ェ アには透過的です。

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド japan.xilinx.com 47UG984 (v2015.1) 2015 年 4 月 15 日UG984 (v2015.4) 2015 年 11 月 18 日

Page 48: MicroBlaze プロセッサ リファレンス ガイド …...M_ACE_IC M_ACE_DC M_AXI_DP DLMB UG984 (v2015.4) 2015 年 11 月 18 日 MicroBlaze プロセッサ リファレンス ガイド

第 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 プロセ ッサ リ フ ァ レンス ガイ ド japan.xilinx.com 48UG984 (v2015.1) 2015 年 4 月 15 日UG984 (v2015.4) 2015 年 11 月 18 日

Page 49: MicroBlaze プロセッサ リファレンス ガイド …...M_ACE_IC M_ACE_DC M_AXI_DP DLMB UG984 (v2015.4) 2015 年 11 月 18 日 MicroBlaze プロセッサ リファレンス ガイド

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

TLB エン ト リ  フ ォーマ ッ ト

図 2-20 は TLB エン ト リ のフ ォーマ ッ ト を示し ています。 各 TLB エン ト リ は 68 ビ ッ ト で、 TLBLO (データ エン ト リ と も言われる) および TLBHI (タ グ エン ト リ と も言われる ) と い う 2 部から構成されています。

図 2‐20 : TLB エン ト リ  フ ォーマ ッ ト

TLB エン ト リ の内容は、 31 ページの表 2-20 および33 ページの表 2-21 で説明されています。

TLB エン ト リ 内のフ ィ ール ド は次のよ う に分類されています。

• 仮想ページの識別 (TAG、 SIZE、 V、 TID) : ページ変換エン ト リ を特定し ます。 変換プロセス中に仮想ページ番号 と比較されます。

• 物理ページの識別 (RPN、 SIZE) : 物理 メ モ リ の変換されたページを特定し ます。

• ア ク セス制御 (EX、 WR、 ZSEL) : ページで許可される ア ク セス タ イプを指定し、 不正ア ク セスからページを保護 するのに使用されます。

• ス ト レージ属性 (W、 I、 M、 G、 E、 U0) : データ キ ャ ッ シュのキ ャ ッ シング ポ リ シー (ラ イ ト バッ クやラ イ ト ス ルー )、 ページがキ ャ ッ シュ可能かど う か、 バイ ト の順序付け (エンデ ィ アンの設定) などのス ト レージ制御属性 を指定し ます。

表 2-37 は TLB エン ト リ の SIZE フ ィ ール ド と、 変換されたページ サイ ズ と の関係を示し ています。 また、 この表で は、 タ グ比較にどのア ド レ ス ビ ッ ト が関与するか、 どのア ド レ ス ビ ッ ト がページ オフセ ッ ト と し て使用されるか、 物理ページ番号のどのビ ッ ト が物理ア ド レ スで使用されるか、どのよ う にページ サイ ズによ って決ま るかが説明され ています。

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 にク リ ア)

1KB 000 TAG[0:21] - Address[0:21] Address[22:31] RPN[0:21] -

4KB 001 TAG[0:19] - Address[0:19] Address[20:31] RPN[0:19] 20:21

16KB 010 TAG[0:17] - Address[0:17] Address[18:31] RPN[0:17] 18:21

64KB 011 TAG[0:15] - Address[0:15] Address[16:31] RPN[0:15] 16:21

256 KB 100 TAG[0:13] - Address[0:13] Address[14:31] RPN[0:13] 14:21

1MB 101 TAG[0:11] - Address[0:11] Address[12:31] RPN[0:11] 12:21

4MB 110 TAG[0:9] - Address[0:9] Address[10:31] RPN[0:9] 10:21

16MB 111 TAG[0:7] - Address[0:7] Address[8:31] RPN[0:7] 8:21

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド japan.xilinx.com 49UG984 (v2015.1) 2015 年 4 月 15 日UG984 (v2015.4) 2015 年 11 月 18 日

Page 50: MicroBlaze プロセッサ リファレンス ガイド …...M_ACE_IC M_ACE_DC M_AXI_DP DLMB UG984 (v2015.4) 2015 年 11 月 18 日 MicroBlaze プロセッサ リファレンス ガイド

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

TLB ア クセス

MMU が仮想ア ド レ ス (PID と実効ア ド レ スの組み合わせ) を物理ア ド レ スに変換する場合、 まず、 ページ変換エン ト リ を検索する ため、 該当する シ ャ ド ウ TLB を確認し ます。 エン ト リ が見つかれば、 物理 メ モ リ へア ク セスする ため にそれが使用されます。 エン ト リ が見つか ら なければ、 MMU は今度は UTLB を確認し ます。 シ ャ ド ウ TLB ミ スが あって UTLB にア ク セスする必要があ る と、 その都度遅延が発生し ます。 この ミ ス レ イ テンシは 2 から 32 サイ クル の範囲にな り ます。DTLB と ITLB の両方が UTLB に同時にア ク セスする場合、DTLB のほ う が ITLB よ り も優先され ます。

51 ページの図 2-21は、 シ ャ ド ウ TLB の 1 つまたは UTLB のページ変換エン ト リ を確認する と きの、 MMU の論理プ ロセス を示し ています。 TLB の有効エン ト リ はすべてチェ ッ ク されます。

TLB エン ト リ で次の条件がすべて満た される と、 TLB ビ ッ ト にな り ます。

• エン ト リ が有効であ る

• エン ト リ の TAG フ ィ ール ド が実効ア ド レ ス EPN と一致する (エン ト リ の SIZE フ ィ ール ド の制御の下)

• エン ト リ の TID が PID と一致する

上記の条件のいずれかが満た されていない と、 TLB ミ スにな り ます。 TLB ミ スが発生する と、 次のよ う な例外が発生 し ます。

TID の値が 0x00 だ と、 TID と PID の比較が MMU で無視され、 TAG および EA[EPN] のみが比較されます。 TID=0x00 の TLB エン ト リ は、プロセスに依存し ない変換を表し ています。すべてのプロセスがグ ローバルにア ク セスするペー ジには、 TID に 0x00 を割 り 当てる必要があ り ます。 PID の値が 0x00 の場合、 どのページにも ア ク セスでき るプロセ スは特定されません。 PID=0x00 の場合、 TID=0x00 の と きにのみページ変換 ヒ ッ ト が発生し ます。 EA[EPN] と PID の 1 組み合わせに一致するエン ト リ が複数あ る TLB を ソ フ ト ウ ェ アがロードする こ と は可能です。 しかし、 これはプロ グ ラ ミ ング エラーと見な され、 動作が未定義にな り ます。

ヒ ッ ト が発生する と、 MMU は対応する TLB エン ト リ から RPN フ ィ ール ド を読み出し ます。 SIZE フ ィ ール ド の値に よ り ますが、 このフ ィ ール ド の一部またはすべてのビ ッ ト が使用されます (表 2-37 参照)。 た と えば、 SIZE フ ィ ール ド が 256KB のページ サイ ズを指定する場合、RPN[0:13] は物理ページ番号を表し、物理ア ド レ ス を形成するのに使用 されます。 TLB エン ト リ を初期化する と きは、 RPN[14:21] は使用されず、 ソ フ ト ウ ェ アはこれらのビ ッ ト を 0 にク リ アにする必要があ り ます。 物理ア ド レ スの残 り の部分は EA のページ オフセ ッ ト 部分か ら取られます。 ページ サイ ズが 256KB の場合、 実効ア ド レ スのビ ッ ト 14:31 と RPN[0:13] を連結させて、 32 ビ ッ ト の物理ア ド レ スは形成され ます。

物理 メ モ リ にア ク セスする前に、 MMU は TLB エン ト リ ア ク セス制御フ ィ ール ド を確認し ます。 これら のフ ィ ール ド は、 現在実行中のプロ グ ラ ムが リ ク エス ト された メ モ リ ア ク セス を実行でき るかど う かを示し ます。

ア ク セスが許可された場合、MMU はページにア ク セスする方法を決定する ため、ス ト レージ属性フ ィ ール ド をチェ ッ ク し ます。 ス ト レージ属性フ ィ ール ド は、 メ モ リ ア ク セスのキ ャ ッ シング ポ リ シーを指定し ます。

TLB ア クセス エラー

TLB ア ク セス エラーがあ る と、 例外が発生し ます。 そ う する と、 エラーを引き起こ し た命令の実行が割 り 込まれ、 エ ラーを解決するため、 割 り 込みハン ド ラーにコ ン ト ロールが渡されます。 TLB ア ク セスは次の 2 つの理由からエラー になる可能性があ り ます。

• 一致する TLB エン ト リ が見つからず、 TLB ミ スになる

• 一致する TLB エン ト リ が見つかったが、 ス ト レージ属性またはゾーン保護によ り ページへア ク セスでき ない

割 り 込みが発生する と、 プロセ ッ サは、 MSR[VM] を 0 に ク リ アにし て、 リ アル モード にな り ます。 リ アル モード で は、 MMU で実行されるすべてのア ド レ ス変換および メ モ リ 保護チェ ッ ク がデ ィ スエーブルにな り ます。 システム ソ フ ト ウ ェ アがページ変換エン ト リ で UTLB を初期化し た後、 MicroBlaze の UTLB は、 通常、 リ アル モー ド で実行し ている割 り 込みハン ド ラーを使用し て管理されます。

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド japan.xilinx.com 50UG984 (v2015.1) 2015 年 4 月 15 日UG984 (v2015.4) 2015 年 11 月 18 日

Page 51: MicroBlaze プロセッサ リファレンス ガイド …...M_ACE_IC M_ACE_DC M_AXI_DP DLMB UG984 (v2015.4) 2015 年 11 月 18 日 MicroBlaze プロセッサ リファレンス ガイド

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

図 2-21 は、 TLB エン ト リ を検索する一般プロセス を示し ています。

 

次のセ ク シ ョ ンでは、 TLB ア ク セス エラーが原因で例外が発生する条件を説明し ます。

データ  ス ト レージ例外

仮想モー ド が イ ネーブルの場合 (MSR[VM]=1)、 次のいずれかの理由でページへのア ク セスが許可さ れない と き に、 データ ス ト レージ例外が発生し ます。

• ユーザー モード から

¨ ページへのア ク セス を妨げる ゾーン フ ィ ール ド を TLB エン ト リ が指定し ます (ZPR[Zn]=00)。 これはロード およびス ト ア命令に適用し ます。

¨ 特に指定がなければゾーン フ ィ ール ド (ZPR[Zn]‚ 11) で上書き される、読み出し専用ページ (TLBLO[WR]=0) を TLB エン ト リ が指定し ます。 これはス ト ア命令に適用し ます。

• 特権モード から

¨ 特に指定がなければゾーン フ ィ ール ド (ZPR[Zn]‚ 10 および ZPR[Zn]‚ 11) で上書き される、読み出し専用ペー ジ (TLBLO[WR]=0) を TLB エン ト リ が指定し ます。 これはス ト ア命令に適用し ます。

図 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 プロセ ッサ リ フ ァ レンス ガイ ド japan.xilinx.com 51UG984 (v2015.1) 2015 年 4 月 15 日UG984 (v2015.4) 2015 年 11 月 18 日

Page 52: MicroBlaze プロセッサ リファレンス ガイド …...M_ACE_IC M_ACE_DC M_AXI_DP DLMB UG984 (v2015.4) 2015 年 11 月 18 日 MicroBlaze プロセッサ リファレンス ガイド

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

命令ス ト レージ例外

仮想モード がイネーブルの場合 (MSR[VM]=1)、次のいずれかの理由でページへのア ク セスが許可されない と きに、命 令ス ト レージ例外が発生し ます。

• ユーザー モード から

¨ ページへのア ク セス を妨げる ゾーン フ ィ ール ド を TLB エン ト リ が指定し ます (ZPR[Zn]=00)。

¨ 特に指定がなければゾーン フ ィ ール ド (ZPR[Zn]‚ 11) で上書き される、 実行可能でないページ (TLBLO[EX]=0) を TLB エン ト リ が指定し ます。

¨ TLB エン ト リ が保護されたス ト レージ ページ (TLBLO[G]=1) を指定し ます。

• 特権モード から

¨ 特に指定がなければゾーン フ ィ ール ド (ZPR[Zn]‚ 10 および ZPR[Zn]‚ 11) で上書き される、 実行可能でないページ (TLBLO[EX]=0) を TLB エン ト リ が指定し ます。

¨ TLB エン ト リ が保護されたス ト レージ ページ (TLBLO[G]=1) を指定し ます。

データ  TLB ミ ス例外

仮想モード がイネーブルの場合 (MSR[VM]=1)、 有効で一致する TLB エン ト リ が、 TLB (シ ャ ド ウおよび UTLB) で見 つから ない と、 データ TLB ミ ス例外が発生し ます。 任意のロード またはス ト ア命令がデータ TLB ミ ス例外を引き起 こす可能性があ り ます。

命令 TLB ミ ス例外

仮想モード がイネーブルの場合 (MSR[VM]=1)、 有効で一致する TLB エン ト リ が、 TLB (シ ャ ド ウおよび UTLB) で見 つから ない と、 命令 TLB ミ ス例外が発生し ます。 任意の命令フ ェ ッチで命令 TLB ミ ス例外を引き起こす可能性があ り ます。

アクセス保護

不正ア ク セスから慎重に扱 う べき メ モ リ ロ ケーシ ョ ンを保護する ため、 システム ソ フ ト ウ ェ アはア ク セス保護を使 用し ます。 システム ソ フ ト ウ ェアは、 ユーザー モード でも特権モード でも、 メ モ リ ア ク セスに制限を加え る こ と が でき ます。 制限は、 読み出し、 書き込み、 および命令フ ェ ッチに設ける こ と が可能です。 仮想保護モード がイネーブルになっている と、 ア ク セス保護を使用でき ます。

ア ク セス制御は、 命令フ ェ ッチ、 データ ロード、 およびデータ格納に適用されます。 仮想ページの TLB エン ト リ が、 ページに許可されている ア ク セス タ イプを指定し ます。 また、 TLB エン ト リ によ って指定される ア ク セス制御を上 書きするのに使用される ゾーン保護レジス タにあ る ゾーン保護フ ィ ール ド も、 TLB エン ト リ が指定し ます。

TLB ア クセス保護制御

各 TLB エン ト リ は次の 3 タ イプのア ク セス を制御し ます。

• プロセス : 各プロセスにプロセス ID (PID) を割 り 当て る こ と によ り 、 プロセス を不正ア ク セスから保護し ます。 システム ソ フ ト ウ ェアがユーザー モード アプ リ ケーシ ョ ンを開始する と、 そのアプ リ ケーシ ョ ンの PID が PID レ ジ ス タ に読み込まれます。 アプ リ ケーシ ョ ンが実行する と、 その PID に一致する変換ル ッ ク アサ イ ド バ ッ フ ァー ハイ (TLBHI) の TID フ ィ ール ド のあ る TLB エン ト リ のみを使用し て、 メ モ リ ア ド レ ス を変換し ます。 こ れによ り 、システム ソ フ ト ウ ェ アが、仮想 メ モ リ の特定エ リ アにアプ リ ケーシ ョ ンのア ク セス を制限する こ と が でき ます。

TID=0x00 の TLB エン ト リ は、 プロセスに依存し ない変換を表し ています。 すべてのプロセスがグ ローバルにア ク セスするページには、 TID に 0x00 を割 り 当てる必要があ り ます。

• 実行 : 実行可能に指定されている仮想ページ (TLBLO[EX]=1) から命令がフ ェ ッチされる場合のみ、プロセ ッ サは 命令を実行し ます。TLBLO[EX] を 0 にク リ アにする と、ページから フ ェ ッチされた命令は実行されな く な り 、命 令ス ト レージ割 り 込み (ISI) は発生し ません。 ISI は命令がフ ェ ッチされた と きには発生し ませんが、 命令が実行

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド japan.xilinx.com 52UG984 (v2015.1) 2015 年 4 月 15 日UG984 (v2015.4) 2015 年 11 月 18 日

Page 53: MicroBlaze プロセッサ リファレンス ガイド …...M_ACE_IC M_ACE_DC M_AXI_DP DLMB UG984 (v2015.4) 2015 年 11 月 18 日 MicroBlaze プロセッサ リファレンス ガイド

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

された と きに発生し ます。 これによ り 、後で破棄される (実行されるのではな く ) 投機的にフ ェ ッチされた命令が ISI を引き起こすのを防ぐ こ と ができ ます。

ゾーン保護レジス タは実行保護を上書きする こ と ができ ます。

• 読み出し /書き込み : データは書き込み可能に指定されている仮想ページ (TLBLO[WR]=1) にのみ書き込まれま す。 TLBLO[WR] を 0 にク リ アにする と、 ページは読み出し専用にな り ます。 読み出し専用ページに書き込みを 実行し よ う とする と、 データ ス ト レージ割 り 込み (DSI) が発生し ます。

ゾーン保護レジス タは書き込み保護を上書きする こ と ができ ます。

TLB エン ト リ を使用し て、 プロ グ ラ ムによ るページの読み出し を防ぐ こ と はでき ません。 仮想モード では、 ゾーン保 護を使用し て、 ページが読み出されないよ う にし ます。 まず、 ア ク セスでき ないゾーンを定義し (ZPR[Zn] = 00)、 そ れを使用し て TLB エン ト リ ア ク セス保護を上書き し ます。 ユーザー モード で実行し ているプロ グ ラ ムのみをページ を読み出さ ないよ う にする こ と ができ ます。特権モード のプロ グ ラ ムには常にページへの読み出し ア ク セスがあ り ます。

ゾーン保護

ゾーン保護は、 TLB エン ト リ に指定されている ア ク セス保護を上書きするのに使用されます。 ゾーンは、 共通のア ク セス保護が設定されている仮想ページを任意にま と めた ものです。 ゾーンには、いろいろなページ サイ ズを組み合わ せて指定し、 任意ページ数含める こ と ができ ます。 ゾーンには、 近接するページを含める必要はあ り ません。

ゾーン保護レジス タ (ZPR) は 32 ビ ッ ト のレジス タで、 16 個あ る ゾーンのそれぞれに適用される保護上書き タ イプを 指定するのに使用されます。 ゾーンの保護上書きは、 2 ビ ッ ト フ ィ ール ド と し て ZPR にエン コー ド されます。 TLB エン ト リ の 4 ビ ッ ト ゾーン選択フ ィ ール ド (TLBLO[ZSEL]) は、 ZPR (Z0–Z15) の 16 個あ る ゾーン フ ィ ール ド の 1 つ を選択し ます。 た と えば、 ゾーン Z5 は、 ZSEL = 0101 の と きに選択されます。

ZPR の 1 ゾーンを変更する と、 そのゾーンのすべてのページに保護上書きが適用されます。 ZPR を使用し ないで、 保 護を変更する場合は、 そのゾーン内の各ページ変換エン ト リ を個別に変更する必要があ り ます。

イ ンプ リ メ ン ト されていないゾーン (C_MMU_ZONES < 16) は、 ゾーン フ ィ ール ド が 11 個含まれている もの と し て処 理されます。

UTLB 管理

UTLB は、 プロセ ッ サの MMU と メ モ リ 管理ソ フ ト ウ ェア と のイ ン ターフ ェ イ スの役割を果た し ます。 システム ソ フ ト ウ ェ アが UTLB を管理し、 仮想ア ド レ ス を物理ア ド レ スに変換する方法を MMU に伝え ます。 変換でき なかった り 、 ア ク セス違反が原因で問題が発生する と、 MMU は、 例外を使用し てシステム ソ フ ト ウ ェアに問題が起きた こ と を伝えます。 MMU が メ モ リ 変換を継続実行でき る よ う に、 これらの問題を修正する ための割 り 込みハン ド ラーを提 供するのはシステム ソ フ ト ウ ェ アの役目です。

ソ フ ト ウ ェアは、 MFS および MTS 命令を使用し て、 UTLB エン ト リ をそれぞれ読み出し、 あ るいは書き込みし ます。 これらの命令は、 UTLB の 64 個のエン ト リ の 1 つに対応する、 TLBX レジス タ イ ンデッ ク ス (0 から 63 まで付番さ れている ) を使用し ます。 タ グ と データの部分は別々に読み出され、 また書き込まれる ため、 ソ フ ト ウ ェ アは、 エン ト リ へ完全にア ク セスするのに、 MFS 命令を 2 つ、 または MTS 命令を 2 つ実行する必要があ り ます。 TLBSX レジス タ を使用し て特定の変換を見つけ出すため、UTLB が検索されます。TLBSX は実効ア ド レ ス を使用し て変換を見つけ 出し、 対応する UTLB イ ンデッ ク ス を TLBX レジス タにロード し ます。

TLB エン ト リ のタ グ部分の有効ビ ッ ト (TLBHI[V]) を ク リ アにする MTS 命令を使用し て、 個々の UTLB エン ト リ を 無効化し ます。

C_FAULT_TOLERANT が 1 に設定されている場合は、 UTLB のブロ ッ ク RAM はパ リ テ ィ によ り 保護されます。 パ リ テ ィ エラーが発生し た場合は、 TLB ミ ス例外が発生し ます。 こ のケースでエラーが累積するのを避ける ため、 UTLB の各エン ト リ は定期的に無効化にする必要があ り ます。

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド japan.xilinx.com 53UG984 (v2015.1) 2015 年 4 月 15 日UG984 (v2015.4) 2015 年 11 月 18 日

Page 54: MicroBlaze プロセッサ リファレンス ガイド …...M_ACE_IC M_ACE_DC M_AXI_DP DLMB UG984 (v2015.4) 2015 年 11 月 18 日 MicroBlaze プロセッサ リファレンス ガイド

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

ページ アクセスおよびページ変更の記録

仮想 メ モ リ のソ フ ト ウ ェア管理にはい く つか問題があ り ます。

• 仮想 メ モ リ 環境では、 ソ フ ト ウ ェ アおよびデータが使用する メ モ リ 量が、 物理的に利用可能な メ モ リ 容量を超えて し ま う こ と がよ く あ り ます。 そ こ で、 ソ フ ト ウ ェ アやデータ ページが使用されていない場合は、 ハード ド ラ イブなど、 外部物理 メ モ リ にその一部を格納し てお く 必要があ り ます。 理想的には、 頻繁に使用されるページを物理 メ モ リ に残し、 あま り 使用されないページをど こ か別の場所に格納し ておき ます。

• 物理 メ モ リ のページを、新しいページを読み込むためにど こ かに移動させる場合は、移動させる (古い) ページが 変更されていないかど う か知ってお く こ と が重要です。 変更されている場合は、 新しいページを読み込む前に、古いページを保存し てお く 必要があ り ます。 古いページが変更されていない場合は、 それを保存せずに新し いページを読み込むこ と ができ ます。

• UTLB に格納されるページ変換の数は限られています。 こ こに格納できない変換はページ変換テーブルに格納す る必要があ り ます。 変換が UTLB にない場合 ( ミ スなどの理由で)、 システム ソ フ ト ウ ェ アは、 どの UTLB エン ト リ を破棄するか決めて、 その変換が見つかる よ う に別の変換を読み込む必要があ り ます。 その場合は、 頻繁に使用される変換ではな く 、 あま り 使用されない変換を別の場所に移動させる こ と が望ま し く な り ます。

上記の問題を効率よ く 解決するには、 ページ ア ク セスおよびページ変換を記録し てお く 必要があ り ます。 MicroBlaze の場合、 ハード ウ ェ アではページ ア ク セス とページ変更を記録し ません。 代わ り に、 システム ソ フ ト ウ ェ アが TLB ミ ス例外 とデータ ス ト レージ例外を使用し て、 この情報を収集し ます。 収集された情報は、 ページ変換テーブルに関 連付け られているデータ構造に格納でき ます。

ページ ア ク セス情報は、 どのページを物理 メ モ リ に置いてお く か、物理 メ モ リ 空間が必要になった と きにどのページ を移動させるかを決めるために使用されます。 システム ソ フ ト ウ ェ アは、 TLB エン ト リ の有効ビ ッ ト (TLBHI[V]) を 使用し て、 ページ ア ク セス を監視し ます。 この場合、 ページにア ク セスがないこ と を示すため、 ページ変換を無効に 初期化する必要があ り ます (TLBHI[V]=0)。 最初にページにア ク セス し よ う とする と、 TLB ミ ス例外が発生し ますが、 これは、 UTLB エン ト リ が無効になっているか、 またはページ変換が UTLB にないからです。 UTLB ミ ス ハン ド ラー は、 有効な変換 (TLBHI[V]=1) で UTLB をア ッ プデー ト し ます。 セ ッ ト された有効ビ ッ ト は、 ページおよびその変換 がア ク セス された こ と を記録し ます。 また、 TLB ミ ス ハン ド ラーも、 ページ変換エン ト リ に関連付け られている別 のデータ構造にこの情報を記録でき ます。

ページ変更情報は、古いページを新しいページで上書きでき るかど う か、 または古いページを まずハード デ ィ ス ク に 格納する必要があ るかど う かを示すために使用されます。 システム ソ フ ト ウ ェ アは、 TLB エン ト リ の書き込み保護 ビ ッ ト (TLBLO[WR]) を使用し て、 ページ変更を監視し ます。 こ の場合、 ページが変更されていないこ と を示すため、 ページ変換を読み出し専用に初期化する必要があ り ます (TLBLO[WR]=0)。 ページに既にア ク セスがあ り 、 上記のよ う に有効 と指定されている と仮定し て、最初にページにデータ を書き込も う とする と、データ ス ト レージ例外が発生 し ます。 ソ フ ト ウ ェ アにページへの書き込み権限があ る場合、 データ ス ト レージ ハン ド ラーは、 そのページを書き 込み可能に設定し (TLBLO[WR]=1)、 戻 り ます。 セ ッ ト された書き込み保護ビ ッ ト は、 ページが変更された記録にな り ます。 また、 データ ス ト レージ ハン ド ラーも、 ページ変換エン ト リ に関連付け られている別のデータ構造に こ の 情報を記録でき ます。

仮想モード に最初に入った と き、 新しいプロセス を開始し た と きに、 ページ変更を記録し てお く と便利です。

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド japan.xilinx.com 54UG984 (v2015.1) 2015 年 4 月 15 日UG984 (v2015.4) 2015 年 11 月 18 日

Page 55: MicroBlaze プロセッサ リファレンス ガイド …...M_ACE_IC M_ACE_DC M_AXI_DP DLMB UG984 (v2015.4) 2015 年 11 月 18 日 MicroBlaze プロセッサ リファレンス ガイド

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

リ セ ッ ト 、 割り込み、 例外、 およびブレークMicroBlaze は、 リ セ ッ ト 、 割 り 込み、 ユーザー例外、 ブレーク、 およびハード ウ ェ ア例外をサポー ト し ます。 次のセ ク シ ョ ンでは、 これらのイベン ト それぞれに関連付け られている実行フ ローを説明し ます。

これらのイベン ト の優先順位は高いものから次のよ う になっています。

1. リ セ ッ ト

2. ハード ウ ェア例外

3. マス ク可能でないブレーク

4. ブレーク

5. 割 り 込み

6. ユーザー ベク ター (例外)

表 2-38 は、 関連付け られているベク ターの メ モ リ ア ド レ ス ロ ケーシ ョ ンおよび戻 り ア ド レ スのハード ウ ェアのレジ ス タ フ ァ イル ロ ケーシ ョ ンを定義し ています。 各ベク ターはア ド レ ス を 2 つ割 り 当てて、 フル ア ド レ ス範囲での分 岐を可能にし ます (IMM の後に BRAI 命令を続ける必要があ り ます)。 通常、 ベク ターはア ド レ ス 0x00000000 で始ま り ますが、 パラ メ ーター C_BASE_VECTORS を使用し て、 ベク ターを メ モ リ の任意の位置に移動させる こ と ができ ます。

0x28 から 0x4F までは、 今後のソ フ ト ウ ェア サポー ト のため、 ザイ リ ン ク スによ って予約されています。 ユーザー ア プ リ ケーシ ョ ンにこの範囲内のア ド レ ス を割 り 当てる と、 今後の SDK ソ フ ト ウ ェア サポー ト で競合が起き る可能性 が高 く な り ます。

セマフ ォやス ピン ロ ッ ク など、 相互排他機能を イ ンプ リ メ ン ト する ため LWX と SWX 命令 と一緒にする と、 これら のイベン ト はすべて予約ビ ッ ト を ク リ アにし ます。

リ セ ッ ト

Reset または Debug_Rst (1) が発生する と、 MicroBlaze はパイプラ イ ンを フ ラ ッ シ ュ し、 リ セ ッ ト ベク ター (ア ド レ ス 0x0) から命令をフ ェ ッチし始めます。両方の外部 リ セ ッ ト 信号がア ク テ ィ ブ High で、最低 16 サイ クル間アサー ト する必要があ り ます。

表 2‐38 : ベク ターおよび戻り ア ド レス レジス タ  フ ァ イルのロケーシ ョ ン

イベン ト ベク ター ア ド レスレジス タ  フ ァ イル

戻り ア ド レス

リ セ ッ ト C_BASE_VECTORS + 0x00000000 - C_BASE_VECTORS + 0x00000004

-

ユーザー ベク ター (例外) C_BASE_VECTORS + 0x00000008 - C_BASE_VECTORS + 0x0000000C

Rx

割 り 込み1

1. 低レ イ テンシ割 り 込みモード の場合、 ベク ター ア ド レ スは割 り 込みコ ン ト ローラーによ り 提供されます。

C_BASE_VECTORS + 0x00000010 - C_BASE_VECTORS + 0x00000014

R14

ブレーク : マス ク可能でない ハード ウ ェア C_BASE_VECTORS + 0x00000018 - C_BASE_VECTORS +

0x0000001CR16

ブレーク : ハード ウ ェ ア

ブレーク : ソ フ ト ウ ェ ア

ハード ウ ェア例外 C_BASE_VECTORS + 0x00000020 - C_BASE_VECTORS + 0x00000024 R17 または BTR

今後のサポー ト のためザ イ リ ンク スによ り 予約

C_BASE_VECTORS + 0x00000028 - C_BASE_VECTORS + 0x0000004F

-

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド japan.xilinx.com 55UG984 (v2015.1) 2015 年 4 月 15 日UG984 (v2015.4) 2015 年 11 月 18 日

Page 56: MicroBlaze プロセッサ リファレンス ガイド …...M_ACE_IC M_ACE_DC M_AXI_DP DLMB UG984 (v2015.4) 2015 年 11 月 18 日 MicroBlaze プロセッサ リファレンス ガイド

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

等価擬似コー ド

PC C_BASE_VECTORS + 0x00000000MSR C_RESET_MSR (第 3 章の 「MicroBlaze コ アのコ ンフ ィ ギュ レーシ ョ ン」 を参照)EAR 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 命令を実行する と きに自動的に戻されます。

MSR の VM および UM ビ ッ ト は、 RTED、 RTBD、 および RTID 命令を実行する と きに、 自動的に VMS および UMS から戻されます。

例外の優先順位

複数の例外が同時に発生する場合は、 優先順位の高いものから低いものへ と、 次の順序で処理されます。

• 命令バス例外

• 命令 TLB ミ ス例外

• 命令ス ト レージ例外

• 無効なオペコード例外

• 特権命令例外またはス タ ッ ク保護違反例外

• データ TLB ミ ス例外

• データ ス ト レージ例外

• ア ラ イ ン されていない例外

1. リ セ ッ ト 入力は、 MDM を介し てデバッ ガーで制御されます。

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド japan.xilinx.com 56UG984 (v2015.1) 2015 年 4 月 15 日UG984 (v2015.4) 2015 年 11 月 18 日

Page 57: MicroBlaze プロセッサ リファレンス ガイド …...M_ACE_IC M_ACE_DC M_AXI_DP DLMB UG984 (v2015.4) 2015 年 11 月 18 日 MicroBlaze プロセッサ リファレンス ガイド

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

• データ バス例外

• 除算例外

• 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 に等しい と、 無効なオペコード例外が発生し ます。

• データ バス例外

メ モ リ からデータ を読み出す と き、 またはデータ を メ モ リ に書き込むと きのエラーによ り 、データ バス例外が発 生し ます。

¨ データ ペ リ フ ェ ラル AXI4 イ ン ターフ ェ イ ス (M_AXI_DP) は、 M_AXI_DP_RRESP または M_AXI_DP_BRESP でのエラー応答が原因で発生し ます。

¨ データ キ ャ ッ シュ AXI4 イ ン ターフ ェ イ ス (M_AXI_DC) 例外は次のものが原因で発生し ます。

- M_AXI_DC_RRESP または M_AXI_DC_BRESP のエラー応答

- LWX を使用し た排他的ア ク セスの場合は、 M_AXI_DC_RRESP の OKAY 応答

この例外は、C_DCACHE_ALWAYS_USED が 1 に設定されていて、キ ャ ッ シ ュがオフになっている と き、LWX または SWX がを使用し て排他的ア ク セスが行われている と き、 または MMU 抑止キ ャ ッ シング ビ ッ ト がア ド レ スに対し てセ ッ ト されている場合にのみ発生し ます。 それ以外のケースでは応答は無視されます。

¨ データ側のローカル メ モ リ (DLMB) は、 DUE 信号に示されている よ う に、 LMB メ モ リ で訂正不可能なエ ラーが発生し た と き、 または DCE 信号に示されている よ う に、 C_ECC_USE_CE_EXCEPTION が 1 に設定 されていて、 LMB メ モ リ で訂正可能なエ ラーが発生し た と きにのみ、 データ バス例外を引き起こ し ます。 すべての読み出し ア ク セス、 バイ ト およびハーフバイ ト の書き込みア ク セスに対し、 エラーが発生する可能性があ り ます。

• ア ラ イ ン されていない例外

データ バスへのア ド レ スにビ ッ ト 30 または 31 が設定されている ワード ア ク セス、 またはビ ッ ト 31 が設定され ているハーフ ワード ア ク セスによ って、 ア ラ イ ン されていない例外が発生し ます。

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド japan.xilinx.com 57UG984 (v2015.1) 2015 年 4 月 15 日UG984 (v2015.4) 2015 年 11 月 18 日

Page 58: MicroBlaze プロセッサ リファレンス ガイド …...M_ACE_IC M_ACE_DC M_AXI_DP DLMB UG984 (v2015.4) 2015 年 11 月 18 日 MicroBlaze プロセッサ リファレンス ガイド

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

• 除算例外

除数が 0 の整数除算 (idiv または idivu) によ って、 またはオーバーフ ローが発生する符号付き整数除算 (idiv) (-2147483648 / -1) によ って、 除算例外が発生し ます。

• FPU 例外

アンダーフ ロー、 オーバーフ ロー、 ゼロ除算、 無効な操作、 または浮動小数点の命令で起き る非正規オペラ ン ドによ って、 FPU 例外は発生し ます。

¨ 結果が非正規化数の場合アンダーフ ローが発生し ます。

¨ 結果が非数の場合 (NaN) オーバーフ ローが発生し ます。

¨ rB が無限大でない と きに、 fdiv の rA オペラ ン ド がゼロになっている と、 ゼロ除算例外が発生し ます。

¨ NaN オペラ ン ド を使用するか、 または無効の無限大やゼロ オペラ ン ド の組み合わせによ って、 無効な操作 が発生し ます。

• 特権命令例外

ユーザー モード で特権命令を実行し よ う とする と、 特権命令例外が発生し ます。

• ス タ ッ ク保護違反例外

特殊な ス タ ッ ク ロ ウおよびス タ ッ ク ハイのレ ジス タ で定義されている ス タ ッ ク境界の外側にあ る ア ド レ スで、 rA にス タ ッ ク ポイ ン ター (レジス タ R1) を使用し た ロード またはス ト ア命令を実行する と、ス タ ッ ク保護違反例 外が発生し、 ス タ ッ ク オーバーフ ローまたはス タ ッ ク アンダーフ ローが発生し ます。

• データ ス ト レージ例外

メ モ リ 保護違反になる メ モ リ のデータにア ク セス し よ う とする と、 データ ス ト レージ例外が発生し ます。

• 命令ス ト レージ例外

メ モ リ 保護違反になる メ モ リ の命令にア ク セス し よ う とする と、 命令ス ト レージ例外が発生し ます。

• データ TLB ミ ス例外

有効な変換ルッ ク アサイ ド バッ フ ァー エン ト リ がな く 、仮想保護モード がイネーブルになっている と きに、デー タにア ク セス し よ う とする と、 データ TLB ミ ス例外が発生し ます。

• 命令 TLB ミ ス例外

有効な変換ルッ ク アサイ ド バッ フ ァー エン ト リ がな く 、 仮想保護モード がイ ネーブルになっている と きに、 命 令にア ク セス し よ う とする と、 命令 TLB ミ ス例外が発生し ます。

C_FAULT_TOLERANT が 1 に設定され、 例外が発生中の と きに (MSR[EIP] がセ ッ ト され、 MSR[EE] がク リ アになっ ている など)、 命令バス例外、 無効なオペコー ド 例外、 またはデータ バス例外が発生し た場合は、 パイプラ イ ンが停 止し、 外部信号 MB_Error がセ ッ ト されます。

不明瞭な例外

通常、 MicroBlaze の例外はすべて明瞭です。 つま り 、 例外を引き起こす命令の後のパイプラ イ ンにあ る命令はすべて 無効化されていて、 影響がない と い う こ と です。

C_IMPRECISE_EXCEPTIONS が 1 (ECC) に設定されている と、 LMB メ モ リ の ECC エラーによ って発生する命令バ ス例外またはデータ バス例外は不明瞭です。 つま り 、 パイプラ イ ンにあ る後続の メ モ リ ア ク セス命令が実行される 可能性があ る と い う こ と です。 この動作が許容でき る場合は、 このパラ メ ーターを 1 に設定する と、 最大周波数を向 上させる こ と ができ ます。

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド japan.xilinx.com 58UG984 (v2015.1) 2015 年 4 月 15 日UG984 (v2015.4) 2015 年 11 月 18 日

Page 59: MicroBlaze プロセッサ リファレンス ガイド …...M_ACE_IC M_ACE_DC M_AXI_DP DLMB UG984 (v2015.4) 2015 年 11 月 18 日 MicroBlaze プロセッサ リファレンス ガイド

第 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 プロセ ッサ リ フ ァ レンス ガイ ド japan.xilinx.com 59UG984 (v2015.1) 2015 年 4 月 15 日UG984 (v2015.4) 2015 年 11 月 18 日

Page 60: MicroBlaze プロセッサ リファレンス ガイド …...M_ACE_IC M_ACE_DC M_AXI_DP DLMB UG984 (v2015.4) 2015 年 11 月 18 日 MicroBlaze プロセッサ リファレンス ガイド

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

ソ フ ト ウ ェ ア ブレーク

ソ フ ト ウ ェア ブレーク を実行するには、 brk および brki 命令を使用し ます。 ソ フ ト ウ ェ ア ブレーク の詳細は、 第 5 章 「MicroBlaze 命令セ ッ ト アーキテ クチャ」 を参照し て く ださい。

特殊なケース と し て、 C_USE_DEBUG がセ ッ ト されていて、 「brki rD, 0x18」 が実行される場合、 ソ フ ト ウ ェアブレー ク ポイ ン ト は、C_BASE_VECTORS の値にかかわらず、 XMD (Xilinx Microprocessor 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 になった と きにすぐに実行されます。

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

Interrupt_Address 入力ポー ト を介し て、 各割 り 込みに対し、 割 り 込みコ ン ト ローラーが直接割 り 込みベク ターを供給 する こ と ができ る、 低レ イ テンシ モード が利用でき ます。

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド japan.xilinx.com 60UG984 (v2015.1) 2015 年 4 月 15 日UG984 (v2015.4) 2015 年 11 月 18 日

Page 61: MicroBlaze プロセッサ リファレンス ガイド …...M_ACE_IC M_ACE_DC M_AXI_DP DLMB UG984 (v2015.4) 2015 年 11 月 18 日 MicroBlaze プロセッサ リファレンス ガイド

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

割 り 込みシステムを初期化する と き、 それぞれの高速割 り 込みハン ド ラーのア ド レ ス を割 り 込みコ ン ト ローラーに渡す必要があ り ます。 特定の割 り 込みが発生する と、 こ の割 り 込みア ド レ スは割 り 込みコ ン ト ローラーによ って提供され、 MicroBlaze はハン ド ラー コード に直接ジャ ンプする こ と ができ ます。

このモード な ら、 MicroBlaze は割 り 込みコ ン ト ローラーへ、 適切な割 り 込み肯定応答を直接送信する こ と も でき ます (Interrupt_Ack 出力ポー ト を介す) が、 ソースでレベル センシテ ィ ブの割 り 込みを肯定応答するのは、 やは り 割 り 込み サービ ス ルーチンの役目です。

こ の情報によ り 、 割 り 込みコ ン ト ローラーは、 レベル センシテ ィ ブの割 り 込み と エ ッ ジ ト リ ガーの割 り 込みの両方 に対し て、 適切に割 り 込みを肯定応答でき ます。

割 り 込み処理イベン ト を割 り 込みコ ン ト ローラーに通知するには、 Interrupt_Ack を次のよ う に設定し ます。

• 01 : MicroBlaze が割 り 込みハン ド ラー コード にジャ ンプする

• 10 : RTID 命令が割 り 込みから戻る よ う に実行される

• 11 : MSR[IE] が 0 から 1 へと変更される。 つま り 割 り 込みが再びイ ネーブルになる。

Interrupt_Ack 出力ポー ト は、 1 ク ロ ッ ク サイ クル間ア ク テ ィ ブにな り 、 それから 00 に リ セ ッ ト されます。

レ イテンシ

MicroBlaze が割 り 込み発生時か ら割 り 込みサービ ス ルーチン (ISR) に入る までにかかる時間は、 プ ロ セ ッ サのコ ン フ ィ ギ ュ レ ーシ ョ ン と、 割 り 込みベ ク タ ー を 格納す る メ モ リ コ ン ト ロ ー ラ ーの レ イ テ ン シ に左右 さ れ ま す。 MicroBlaze にハード ウ ェア ド ラ イバーがコ ンフ ィ ギュ レー ト されている場合は、除算命令の実行中に割 り 込みが発生 する と き、 レ イ テンシが最大にな り ます。

低レ イ テンシ割 り 込みモード では、各割 り 込みの割 り 込みベク ターが割 り 込みコ ン ト ローラーによ り 直接供給されるので、 ISR に入る時間が大幅に短縮されます。 高速割 り 込みにはコ ンパイ ラ サポー ト があ るので、 共通 ISR の必要は ま った く あ り ません。 代わ り に、 個々の割 り 込みの ISR は直接読み出され、 コ ンパイ ラは ISR で使用される レジス タ の保存 と復元を行います。

等価擬似コー ドr14 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

ユーザー ベク ター (例外)

ユーザー例外ベク ターはア ド レ ス 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

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド japan.xilinx.com 61UG984 (v2015.1) 2015 年 4 月 15 日UG984 (v2015.4) 2015 年 11 月 18 日

Page 62: MicroBlaze プロセッサ リファレンス ガイド …...M_ACE_IC M_ACE_DC M_AXI_DP DLMB UG984 (v2015.4) 2015 年 11 月 18 日 MicroBlaze プロセッサ リファレンス ガイド

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

命令キャ ッ シュ

概要

MicoBlaze にオプシ ョ ンで命令キ ャ ッ シ ュ を使用する と、LMB ア ド レ ス範囲外にあ る コード を実行する際のパフ ォー マン ス を改善でき ます。

命令キ ャ ッ シュの機能は、 次の とお り です。

• 直接マ ッ プ (一方向のア ソ シエイ テ ィ ブ)

• 選択可能なキ ャ ッ シュ可能な メ モ リ ア ド レ ス範囲

• コ ンフ ィ ギュ レーシ ョ ン可能なキ ャ ッ シュおよびタ グ サイ ズ

• AXI4 イ ン ターフ ェ イ スでのキ ャ ッ シング (M_AXI_IC)

• 4、 8、 または 16 ワード のキ ャ ッ シュ ラ イ ンを使用するオプシ ョ ン

• MSR のビ ッ ト を使用し てキ ャ ッ シ ュのオン/オフを制御

• オプシ ョ ンの WIC 命令で命令キ ャ ッ シュ ラ イ ンを無効化

• オプシ ョ ンのス ト リ ーム バッ フ ァーで命令をプ リ フ ェ ッチし てパフ ォーマン ス を改善

• オプシ ョ ンのビ ク テ ィ ム キ ャ ッ シュで追い出されたキ ャ ッ シュ ラ イ ン データ を保存し てパフ ォーマン ス を改善

• オプシ ョ ンのパ リ テ ィ 保護で、 ブロ ッ ク RAM ビ ッ ト エラーが検出された場合にキ ャ ッ シ ュ ラ イ ンを無効化

• オプシ ョ ンでデータ幅を 32 ビ ッ ト にするか、 キ ャ ッ シ ュ ラ イ ン全体にするか、 または 512 ビ ッ ト にするか選択

一般的な命令キャ ッ シュの機能

命令キ ャ ッ シュが使用される場合、 メ モ リ ア ド レ ス空間は、 キ ャ ッ シ ュ可能なセグ メ ン ト と キ ャ ッ シュ不可能なセグ メ ン ト に分け られます。キ ャ ッ シュ可能なセグ メ ン ト は、C_ICACHE_BASEADDR および C_ICACHE_HIGHADDR と い う 2 つのパラ メ ーターで決められます。 こ の範囲内のア ド レ スはすべて、 キ ャ ッ シュ可能なア ド レ ス セグ メ ン ト に 対応し ます。 その他のア ド レ スはみなキ ャ ッ シュ不可能なセグ メ ン ト です。

キ ャ ッ シュ可能なセグ メ ン ト サイ ズは 2N であ る必要があ り ます。 この と き N は正の整数です。C_ICACHE_BASEADDR および C_ICACHE_HIGHADDR で指定される範囲は、 2 のべき乗 (= 2N) で、C_ICACHE_BASEADDR の N 個の最下位ビ ッ ト はゼロであ る必要があ り ます。

キ ャ ッ シュ可能な命令ア ド レ スは、 キ ャ ッ シュ ア ド レ ス と タ グ ア ド レ スの 2 つの部分で構成されています。MicroBlaze 命令キ ャ ッ シュは、 64 バイ ト から 64kB までの範囲でコ ンフ ィ ギュ レー ト でき ます。 これは、 6 から 16 ビ ッ ト までのキ ャ ッ シュ ア ド レ スに対応し ています。 キ ャ ッ シュ ア ド レ ス と合わせた タ グ ア ド レ スは、 キ ャ ッ シュ可能な メ モ リ のフル ア ド レ ス と一致し ている必要があ り ます。 2kB 未満のキ ャ ッ シ ュ サイ ズを選択する場合、 タ グ RAM と命令 RAM を イ ンプ リ メ ン ト するのに、 分散 RAM が使用されます。 パラ メ ーター C_ICACHE_FORCE_TAG_LUTRAM が 1 に設定されている場合は、タ グ RAM を イ ンプ リ メ ン ト するのに分散 RAM が常に使用されます。 このパラ メ ーターは、 4 ワード のキ ャ ッ シュ ラ イ ンの場合は 8kB 以下、 8 ワード のキ ャ ッ シュ ラ イ ンの場合は 16kB 以下、16 ワード のキ ャ ッ シュ ラ イ ンの場合は 32kB 以下のキ ャ ッ シュ サイ ズでのみ使用でき ます。

た と えば、 C_ICACHE_BASEADDR= 0x00300000、 C_ICACHE_HIGHADDR=0x0030ffff、C_CACHE_BYTE_SIZE=4096、 C_ICACHE_LINE_LEN=8、 および C_ICACHE_FORCE_TAG_LUTRAM=0 でコ ンフ ィ ギュ レー ト されている MicroBlaze では、 64kB のキ ャ ッ シュ可能 メ モ リ はバイ ト ア ド レ スの 16 ビ ッ ト を、 4kB のキ ャ ッ シュはバイ ト ア ド レ スの 12 ビ ッ ト のを使用するので、 ア ド レ スのタ グ幅は 16-12=4 ビ ッ ト にな り ます。 このコ ンフ ィ ギュ レーシ ョ ンに必要なブロ ッ ク RAM プ リ ミ テ ィ ブの総数は、 1024 の命令ワード を格納するのに RAMB16 を 2 つ、 128 のキ ャ ッ シュ ラ イ ン エン ト リ に RAMB16 を 1 つで、 それぞれ、 4 ビ ッ ト のタ グ、 8 ワード の有効ビ ッ ト 、 1 ラ イ ン有効ビ ッ ト で構成されています。 合計で 3 つの RAMB16 プ リ ミ テ ィ ブにな り ます。

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド japan.xilinx.com 62UG984 (v2015.1) 2015 年 4 月 15 日UG984 (v2015.4) 2015 年 11 月 18 日

Page 63: MicroBlaze プロセッサ リファレンス ガイド …...M_ACE_IC M_ACE_DC M_AXI_DP DLMB UG984 (v2015.4) 2015 年 11 月 18 日 MicroBlaze プロセッサ リファレンス ガイド

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

63 ページの図 2-22 は、 命令キ ャ ッ シュの構成を示し ています。

 

命令キャ ッ シュ操作

フ ェ ッチされる どの命令に対し て も、命令ア ド レ スがキ ャ ッ シ ュ可能なセグ メ ン ト にあ るかど う かを命令キ ャ ッ シュが検出し ます。 ア ド レ スがキ ャ ッ シュでき ない場合、 キ ャ ッ シュ コ ン ト ローラーは命令を無視し、 M_AXI_IP または LMB に リ ク エス ト を完了させます。 ア ド レ スがキ ャ ッ シ ュでき る場合は、 リ ク エス ト されたア ド レ スが現在キ ャ ッ シ ュ されている こ と をチェ ッ クする ため、 タ グ メ モ リ でル ッ ク ア ッ プが実行されます。 ワー ド およびラ イ ンの有効 ビ ッ ト がセ ッ ト されていて、 タ グ ア ド レ スが命令ア ド レ スのタ グ セグ メ ン ト と一致し ていれば、 ル ッ ク ア ッ プは成 功です。 キ ャ ッ シュ ミ スの場合、 キ ャ ッ シ ュ コ ン ト ローラーは命令 AXI4 イ ン ターフ ェ イ ス (M_AXI_IC) を介し て新 しい命令を リ ク エス ト し、 メ モ リ コ ン ト ローラーが関連付け られている キ ャ ッ シュ ラ イ ンを返すまで待機し ます。

C_ICACHE_DATA_WIDTH はバス データ幅を指定し ますが、 32 ビ ッ ト 、 キ ャ ッ シ ュ ラ イ ン全体 (128、 256、 または 512)、 または 512 ビ ッ ト を選択し ます。

C_FAULT_TOLERANT が 1 に設定されている場合、 タ グ または命令ブロ ッ ク RAM でパ リ テ ィ エラーが検出される と、 キ ャ ッ シュ ミ ス も発生し ます。

命令キ ャ ッ シュは、 32 ビ ッ ト のデータ幅が選択されている場合、 AXI4 イ ン ターフ ェ イ スに対しバース ト ア ク セス を 実行し ますが、 それ以外の場合はシングル ア ク セスにな り ます。

ス ト リーム バッ フ ァー

C_ICACHE_STREAMS を 1 に設定し てス ト リ ーム バッ フ ァーを イ ネーブルにし ている場合、 ス ト リ ーム バッ フ ァー がいっぱいにな る まで、 最後に リ ク エス ト されたア ド レ スに続いて、 順次、 前も って投機的にキ ャ ッ シ ュ ラ イ ンが フ ェ ッチされます。 ス ト リ ーム バッ フ ァーはキ ャ ッ シュ ラ イ ンを 2 つまで保持でき ます。 その後、 ス ト リ ーム バッ フ ァーによ り プ リ フ ェ ッチされたキ ャ ッ シュ ラ イ ンから、プロセ ッ サが命令を リ ク エス ト する と ( リ ニア コード で起 き る )、 命令はすぐに使用可能にな り ます。

ス ト リ ーム バッ フ ァーを イ ネーブルにする と、プロセ ッ サが メ モ リ から命令をフ ェ ッチするのにかかる時間が短 く な るため、 パフ ォーマン スが改善される こ と がよ く あ り ます。

C_ICACHE_DATA_WIDTH は、 各ク ロ ッ ク サイ クルでス ト リ ーム バッ フ ァーから転送されるデータ量を指定し ます (32 ビ ッ ト またはキ ャ ッ シュ ラ イ ン全体のどち らかを指定)。

図 2‐22 : 命令キャ ッ シュの構成

命令ア ド レス ビ ッ ト

0 3031

キャ ッ シュ ア ド レスタグ ア ド レス --

タグ

命令

RAM

RAMラ イ ン ア ド レス

ワー ド ア ド レス

=タグ

有効 ( ワー ド と ラ イ ン )

キャ ッ シュ ヒ ッ ト

キャ ッ シュ命令データ

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド japan.xilinx.com 63UG984 (v2015.1) 2015 年 4 月 15 日UG984 (v2015.4) 2015 年 11 月 18 日

Page 64: MicroBlaze プロセッサ リファレンス ガイド …...M_ACE_IC M_ACE_DC M_AXI_DP DLMB UG984 (v2015.4) 2015 年 11 月 18 日 MicroBlaze プロセッサ リファレンス ガイド

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

命令キ ャ ッ シ ュ ス ト リ ーム バッ フ ァーを使用でき る よ う にするには、 エ リ ア最適化を イ ネーブルにし ないで く だ さ い。

ビ ク テ ィ ム キャ ッ シュ

C_ICACHE_VICTIMS を 2、 4、 または 8 に設定する と、 ビ ク テ ィ ム キ ャ ッ シュはイネーブルにな り ます。 このパラ メ ーターはビ ク テ ィ ム キ ャ ッ シ ュに格納でき る キ ャ ッ シ ュ ラ イ ンの数を定義し ます。 キ ャ ッ シ ュ ラ イ ンがキ ャ ッ シュから追い出される と、 常にビ ク テ ィ ム キ ャ ッ シュに格納されます。 最近のラ イ ンを格納し てお く と、 プロセ ッ サ がそれを リ ク エス ト し た場合、 よ り 高速にフ ェ ッ チでき るので、 パフ ォーマン スが改善し ます。 ビ ク テ ィ ム キ ャ ッ シュが使用されない場合、 追い出されたキ ャ ッ シュ ラ イ ンは、 必要になった と きに、 も う 1 度 メ モ リ から読み出す必 要があ り ます。

C_ICACHE_DATA_WIDTH は、 各ク ロ ッ ク サイ クルで、 ビ ク テ ィ ム キ ャ ッ シュから、 またはビ ク テ ィ ム キ ャ ッ シュ へ転送されるデータ量を指定し ます (32 ビ ッ ト またはキ ャ ッ シュ ラ イ ン全体のどち らかを指定)。

ビ ク テ ィ ム キ ャ ッ シュ を使用でき る よ う にするには、 エ リ ア最適化を イネーブルにし ないで く ださい。

命令キャ ッ シュ  ソ フ ト ウ ェ ア サポー ト

MSR ビ ッ ト

MSR の ICE ビ ッ ト を使用し、 ソ フ ト ウ ェ ア制御でキ ャ ッ シュ を イネーブルおよびデ ィ スエーブルにでき ます。

キ ャ ッ シ ュ がデ ィ スエーブルの場合は、 デフ ォル ト で、 キ ャ ッ シ ュ の内容は保持さ れます。 キ ャ ッ シ ュ ラ イ ンは、 WIC 命令を使用するか、 MicroBlaze のハード ウ ェ ア デバッ グ ロ ジ ッ ク を使用し て、 無効化する こ と ができ ます。

WIC 命令

オプシ ョ ンの WIC 命令 (C_ALLOW_ICACHE_WR=1) は、 アプ リ ケーシ ョ ンから命令キ ャ ッ シュのキ ャ ッ シュ ラ イ ン を無効化するのに使用し ます。 詳細は、 第 5 章 「MicroBlaze 命令セ ッ ト アーキテ クチャ」 を参照し て く ださい。

WIC 命令をパ リ テ ィ 保護と一緒に使用する と、 エラーを累積するのを避けるため、定期的にキ ャ ッ シュのエン ト リ を 無効化する こ と ができ ます。

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド japan.xilinx.com 64UG984 (v2015.1) 2015 年 4 月 15 日UG984 (v2015.4) 2015 年 11 月 18 日

Page 65: MicroBlaze プロセッサ リファレンス ガイド …...M_ACE_IC M_ACE_DC M_AXI_DP DLMB UG984 (v2015.4) 2015 年 11 月 18 日 MicroBlaze プロセッサ リファレンス ガイド

第 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 プロセ ッサ リ フ ァ レンス ガイ ド japan.xilinx.com 65UG984 (v2015.1) 2015 年 4 月 15 日UG984 (v2015.4) 2015 年 11 月 18 日

Page 66: MicroBlaze プロセッサ リファレンス ガイド …...M_ACE_IC M_ACE_DC M_AXI_DP DLMB UG984 (v2015.4) 2015 年 11 月 18 日 MicroBlaze プロセッサ リファレンス ガイド

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

 

キ ャ ッ シ ュ 可能なデー タ ア ド レ ス は、 キ ャ ッ シ ュ ア ド レ ス と タ グ ア ド レ ス の 2 つの部分で構成 さ れてい ます。 MicroBlaze データ キ ャ ッ シュは、 64 バイ ト から 64kB までの範囲でコ ンフ ィ ギ ュ レー ト でき ます。 これは、 6 から 16 ビ ッ ト までのキ ャ ッ シュ ア ド レ スに対応し ています。 キ ャ ッ シュ ア ド レ ス と合わせた タ グ ア ド レ スは、 キ ャ ッ シュ 可能な メ モ リ のフル ア ド レ ス と 一致し ている必要があ り ます。 2kB 未満のキ ャ ッ シ ュ サイ ズを選択する場合は、 タ グ RAM お よ びデー タ RAM を イ ン プ リ メ ン ト す る のに分散 RAM が使用 さ れ ま すが、 例外が あ っ て、 C_AREA_OPTIMIZED が設定されていて、C_DCACHE_USE_WRITEBACK が設定されていない場合は、データ RAM には常にブロ ッ ク RAM が使用されます。パラ メ ーター C_DCACHE_FORCE_TAG_LUTRAM が 1 に設定されている場 合は、 タ グ RAM を イ ンプ リ メ ン ト するのに分散 RAM が常に使用されます。 こ のパラ メ ーターは、 4 ワード のキ ャ ッ シュ ラ イ ンの場合は 8kB 以下、 8 ワード のキ ャ ッ シュ ラ イ ンの場合は 16kB 以下、 16 ワード のキ ャ ッ シュ ラ イ ンの 場合は 32kB 以下のキ ャ ッ シュ サイ ズでのみ使用でき ます。

た と えば、 C_DCACHE_BASEADDR=0x00400000、 C_DCACHE_HIGHADDR=0x00403fff、C_DCACHE_BYTE_SIZE=2048、 C_DCACHE_LINE_LEN=4、 および C_DCACHE_FORCE_TAG_LUTRAM=0 でコンフ ィ ギュ レー ト されている MicroBlaze では、 16 kB のキ ャ ッ シュ可能 メ モ リ はバイ ト ア ド レ スの 14 ビ ッ ト を、 2 kB のキ ャ ッ シュはバイ ト ア ド レ スの 11 ビ ッ ト を使用するので、 ア ド レ スのタ グ幅は 14-11=3 ビ ッ ト にな り ます。 このコ ンフ ィ ギュ レーシ ョ ンに必要なブロ ッ ク RAM プ リ ミ テ ィ ブの総数は、 512 のデータ ワード を格納するのに RAMB16 を 1 つ、 128 のキ ャ ッ シュ ラ イ ン エン ト リ に RAMB16 を 1 つで、 それぞれ、 3 ビ ッ ト のタ グ、 4 ワード の有効ビ ッ ト 、 1 ラ イ ン有効ビ ッ ト で構成されています。 合計で 2 つの RAMB16 プ リ ミ テ ィ ブにな り ます。

データ  キャ ッ シュ操作

MicroBlaze のデータ キ ャ ッ シュで使用される キ ャ ッ シング ポ リ シー (ラ イ ト バッ ク またはラ イ ト スルー ) は、C_DCACHE_USE_WRITEBACK で決ま り ます。 こ のパラ メ ーターが設定されている と、 ラ イ ト バッ ク プロ ト コルがイ ンプ リ メ ン ト され、 また、 設定されていなければ、 ラ イ ト スルーがイ ンプ リ メ ン ト されます。 しかし、 MMU を使用し てコ ンフ ィ ギュ レー ト されている場合 (C_USE_MMU > 1、 C_AREA_OPTIMIZED = 0、C_DCACHE_USE_WRITEBACK = 1) は、仮想モード のキ ャ ッ シング ポ リ シーは TLB エン ト リ の W ス ト レージ属性で決ま り ます。 リ アル モード の場合はラ イ ト バッ ク が使用されます。

ラ イ ト バ ッ ク プロ ト コルの場合、 キ ャ ッ シ ュ可能な範囲にあ る ア ド レ スにス ト ア命令があ る と、 キ ャ ッ シ ュ された データが常にア ッ プデー ト されます。 ターゲ ッ ト ア ド レ ス ワー ド がキ ャ ッ シ ュにな く (すなわちア ク セスはキ ャ ッ シュ ミ ス)、キ ャ ッ シュのロ ケーシ ョ ンにまだ メ モ リ に書き込まれていないデータが含まれている (キ ャ ッ シュ ロ ケー シ ョ ンがダーテ ィ ) 場合、新しいデータでキ ャ ッ シュがア ッ プデー ト される前に、古いデータがデータ AXI4 イ ン ター フ ェ イ ス (M_AXI_DC) を介し て外部 メ モ リ に書き込まれます。 1 ワード のみを書き込む必要があ る場合は、 1 ワード 書き込みが使用され、そ う でなければバース ト 書き込みが使用されます。バイ ト またはハーフバイ ト のス ト アの場合、キ ャ ッ シュ ミ スがあ る と、 まずア ド レ スがデータ AXI4 イ ン ターフ ェ イ ス を介し て リ ク エス ト され、 ワード ス ト アは キ ャ ッ シュだけをア ッ プデー ト し ます。

図 2‐23 : データ  キャ ッ シュの構成

データ ア ド レス ビ ッ ト

0 3031

キャ ッ シュ ワー ド ア ド レスタグ ア ド レス --

タグ

データ

RAM

RAMア ド レス

ア ド レス

=タグ

有効キャ ッ シュ ヒ ッ ト

キャ ッ シュ データ

ロー ド命令

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド japan.xilinx.com 66UG984 (v2015.1) 2015 年 4 月 15 日UG984 (v2015.4) 2015 年 11 月 18 日

Page 67: MicroBlaze プロセッサ リファレンス ガイド …...M_ACE_IC M_ACE_DC M_AXI_DP DLMB UG984 (v2015.4) 2015 年 11 月 18 日 MicroBlaze プロセッサ リファレンス ガイド

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

ラ イ ト スルー プロ ト コルの場合、 キ ャ ッ シ ュ可能な範囲にあ る ア ド レ スへのス ト ア命令は、 等価のバイ ト 、 ハーフ ワード、 ワード の書き込みをデータ AXI4 イ ン ターフ ェ イ ス を外部 メ モ リ に対し て生成し ます。 ターゲ ッ ト ア ド レ ス ワード がキ ャ ッ シュにあ る場合 (つま り 書き込みがキ ャ ッ シュ ヒ ッ ト )、書き込みも キ ャ ッ シ ュ されたデータ をア ッ プ デー ト し ます。 書き込みキ ャ ッ シュ ミ スは、 関連付け られたキ ャ ッ シュ ラ イ ンをキ ャ ッ シュにはロード し ません。

キ ャ ッ シュがイネーブルになっている もの と し て、 リ ク エス ト されたデータが現在キ ャ ッ シ ュ されているかど う かを判断する ためのチェ ッ ク が、 キ ャ ッ シ ュ可能範囲にあ る ア ド レ スか ら のロー ド 命令によ って実行されます。 キ ャ ッシュ されていれば (すなわちキ ャ ッ シュ ヒ ッ ト )、 リ ク エス ト されたデータはキ ャ ッ シ ュから読み出されます。 キ ャ ッ シュ されていなければ (すなわちキ ャ ッ シュ ミ ス)、 バース ト 読み出し を使用し てデータ AXI4 イ ン ターフ ェ イ ス を介 し てア ド レ スが リ ク エス ト され、 リ ク エス ト されたア ド レ スに関連付け られている キ ャ ッ シ ュ ラ イ ンが外部 メ モ リ コ ン ト ローラーから返される まで、 プロセ ッ サのパイプラ イ ンはス ト ールし ます。

C_DCACHE_DATA_WIDTH はバス データ幅を指定し ますが、 32 ビ ッ ト 、 キ ャ ッ シ ュ ラ イ ン全体 (128、 256、 または 512)、 または 512 ビ ッ ト を選択し ます。

C_FAULT_TOLERANT が 1 に設定され、 ラ イ ト スルー プロ ト コルが使用されている場合、 タ グまたはデータ ブロ ッ ク RAM でパ リ テ ィ エラーが検出される と、 キ ャ ッ シュ ミ ス も発生し ます。

データ キ ャ ッ シュ AXI4 イ ン ターフ ェ イ スで処理される ア ク セス タ イプはすべて、 表 2-39 にま と められています。

ビ ク テ ィ ム キャ ッ シュ

C_DCACHE_VICTIMS を 2、 4、 または 8 に設定する と、 ビ ク テ ィ ム キ ャ ッ シュはイネーブルにな り ます。 このパラ メ ーターはビ ク テ ィ ム キ ャ ッ シ ュ に格納で き る キ ャ ッ シ ュ ラ イ ンの数を定義 し ます。 キ ャ ッ シ ュ ラ イ ン全体が キ ャ ッ シュから追い出される と、 常にビ ク テ ィ ム キ ャ ッ シュに格納されます。 最近のラ イ ンを格納し てお く と、 プロ セ ッ サがそれを リ ク エス ト し た場合、 よ り 高速にフ ェ ッ チでき るので、 パフ ォーマン スが改善し ます。 ビ ク テ ィ ムキ ャ ッ シュが使用されない場合、 追い出されたキ ャ ッ シュ ラ イ ンは、 必要になった と きに、 も う 1 度 メ モ リ から読み 出す必要があ り ます。

AXI4 イ ン ターフ ェ イ スの場合、 C_DCACHE_DATA_WIDTH は、 各ク ロ ッ ク サイ ク ルで、 ビ ク テ ィ ム キ ャ ッ シ ュか ら、 またはビ ク テ ィ ム キ ャ ッ シ ュへ転送されるデータ量を指定し ます (32 ビ ッ ト またはキ ャ ッ シ ュ ラ イ ン全体のど ち らかを指定)。

表 2‐39 : データ  キャ ッ シュ  イ ン ターフ ェ イス アクセス

ポ リ シー ステー ト 方向 アクセス タ イプ

ラ イ ト スルー キ ャ ッシュはイネーブル

読み出し 32 ビ ッ ト イ ン ターフ ェ イ スの非排他的ア ク セスおよ び ACE が イ ネーブルになっている排他的なア ク セス の場合はバース ト 、それ以外の場合はシングル ア ク セ ス

書き込み シングル ア ク セス

キ ャ ッシュはデ ィ ス

エーブル

読み出し ACE が イ ネーブルにな っ てい る 32 ビ ッ ト イ ン ター フ ェ イ スの排他的なア ク セスの場合はバース ト 、 それ以外の場合はシングル ア ク セス

書き込み シングル ア ク セス

ラ イ ト バッ ク キ ャ ッシュはイネーブル

読み出し 32 ビ ッ ト イ ン ターフ ェ イ スの場合はバース ト 、 それ 以外の場合はシングル ア ク セス

書き込み 複数の有効ワー ド があ る 32 ビ ッ ト イ ン ターフ ェ イ ス のキ ャ ッ シュ ラ イ ンの場合はバース ト 、それ以外はシ ングル ア ク セス

キ ャ ッシュはデ ィ ス

エーブル

読み出し 32 ビ ッ ト イ ン ターフ ェ イ スの非排他的ア ク セスの場 合はバース ト で目的のデータ以外はすべて破棄、 それ以外の場合はシングル ア ク セス

書き込み シングル ア ク セス

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド japan.xilinx.com 67UG984 (v2015.1) 2015 年 4 月 15 日UG984 (v2015.4) 2015 年 11 月 18 日

Page 68: MicroBlaze プロセッサ リファレンス ガイド …...M_ACE_IC M_ACE_DC M_AXI_DP DLMB UG984 (v2015.4) 2015 年 11 月 18 日 MicroBlaze プロセッサ リファレンス ガイド

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

ビ ク テ ィ ム キ ャ ッ シュ を使用でき る よ う にするには、 ラ イ ト バッ ク を必ずイネーブルにし、エ リ ア最適化を イネーブ ルにし ないで く ださい。

データ  キャ ッ シュ  ソ フ ト ウ ェ ア サポー ト

MSR ビ ッ ト

キ ャ ッ シュ を イネーブルにするかど う かは、 MSR の DCE ビ ッ ト で制御し ます。 キ ャ ッ シ ュ をデ ィ スエーブルにする 場合は、 M_AXI_DP を介し て リ ード バッ ク をする前に、 キ ャ ッ シュ可能な範囲内のこれまでの書き込みすべてが、 外 部 メ モ リ で完了し ている こ と をユーザーが確認する必要があ り ます。 これには、 まずキ ャ ッ シュ をオフにする直前にセマフ ォに書き込みを し てから、 書き込みが完了する までループでポー リ ング し ます。

キ ャ ッ シュがデ ィ スエーブルの場合は、 デキ ャ ッ シュの内容は保持されます。

WDC 命令

オプシ ョ ンの WDC 命令 (C_ALLOW_DCACHE_WR=1) は、 アプ リ ケーシ ョ ンからデータ キ ャ ッ シ ュのキ ャ ッ シ ュ ラ イ ンを無効化またはフ ラ ッ シュするのに使用し ます。 詳細は、 第 5 章 「MicroBlaze 命令セ ッ ト アーキテ クチャ」 を参 照し て く ださい。

WDC 命令をパ リ テ ィ 保護 と一緒に使用する と、 エラーを累積するのを避け る ため、 定期的にキ ャ ッ シュのエン ト リ を無効化する こ と ができ ます。

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド japan.xilinx.com 68UG984 (v2015.1) 2015 年 4 月 15 日UG984 (v2015.4) 2015 年 11 月 18 日

Page 69: MicroBlaze プロセッサ リファレンス ガイド …...M_ACE_IC M_ACE_DC M_AXI_DP DLMB UG984 (v2015.4) 2015 年 11 月 18 日 MicroBlaze プロセッサ リファレンス ガイド

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

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

概要

MicroBlaze の浮動小数点ユニ ッ ト は、 IEEE 754-1985 standard に基づいています。

• 無限大、 非数 (NaN) および 0 も含めて、 IEEE 754 の単精度浮動小数点フ ォーマ ッ ト を使用

• 加算、 減算、 乗算、 除算、 比較、 変換、 平方根の命令をサポー ト

• 近似値に丸めるモード を イ ンプ リ メ ン ト

• アンダーフ ロー、 オーバーフ ロー、 ゼロ除算、 無効な操作に対し、 ステ ィ ッ キーステータ ス ビ ッ ト を生成

パフ ォーマン ス を向上させる場合は、 規格外で次のよ う な簡素化が行われています。

• 非正規化 (1) オペラ ン ド がサポー ト されていません。 非正規化数のハード ウ ェア浮動小数点演算は、 quiet NaN を 返し、 ステ ィ ッ キーな非正規化オペラ ン ド エラー ビ ッ ト を FSR にセ ッ ト し ます。 詳細は26 ページの 「浮動小数 点ステータ ス レジス タ (FSR)」 を参照し て く ださい。

• 非正規数の結果は、 符号付きの 0 と し て格納され、 FSR にアンダーフ ロー ビ ッ ト をセ ッ ト し ます。 この方法は、 一般的にゼロにフ ラ ッ シュ (FTZ) と呼ばれます。

• quiet NaN での操作は、 NaN オペラ ン ド の 1つではな く 、 fixed NaN (0xFFC00000) を返し ます。

• 浮動小数点演算の結果発生するオーバーフ ローは常に符号付きの ¥ を返し ます。

フ ォーマ ッ ト

IEEE 754 の単精度浮動小数点数は、 次の 3 つのフ ィ ール ド から構成されています。

1. 符号部 : 1 ビ ッ ト

2. 指数部 : バイヤス し た 8 ビ ッ ト

3. 仮数部 : 23 ビ ッ ト

図 2-24 に定義されている よ う に、 これらのフ ィ ール ド は 32 ビ ッ ト ワード に格納されます。

MicroBlaze での浮動小数点数の値 v は次のよ う に解釈されます。

1. 指数 = 255 で 仮数 <> 0 な らば、 符号ビ ッ ト に関係な く v= NaN にな り ます。

2. 指数 = 255 で 仮数 = 0 な らば、 v= (-1)符号 * ¥ にな り ます。

3. 0 < 指数 < 255 な らば、 v = (-1)符号 * 2(指数-127) * (1. 仮数) にな り ます。

4. 指数 = 0 で 仮数 <> 0 な らば、 v = (-1)符号 * 2-126 * (0. 仮数) にな り ます。

5. 指数 = 0 で 仮数 = 0 な らば、 v= (-1)sign * * 0 にな り ます。

1. 全精度で表現でき ない 0 の近似値は、 ( 1.17549*10-38 > n > 0 ) または ( 0 > n > -1.17549 * 10-38 ) の範囲内の任意数 n です。

符号

部指数部 仮数部

図 2‐24 : IEEE 754 単精度フ ォーマ ッ ト

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド japan.xilinx.com 69UG984 (v2015.1) 2015 年 4 月 15 日UG984 (v2015.4) 2015 年 11 月 18 日

Page 70: MicroBlaze プロセッサ リファレンス ガイド …...M_ACE_IC M_ACE_DC M_AXI_DP DLMB UG984 (v2015.4) 2015 年 11 月 18 日 MicroBlaze プロセッサ リファレンス ガイド

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

実際には、 3 および 5 のみが有用で、 後のものはエラーか、 32 ビ ッ ト フ ォーマ ッ ト の全精度では表現でき な く なった 数値を表し ています。

丸め

MicroBlaze の FPU は、 IEEE 754 で指定されているデフ ォル ト の丸めモー ド 「近似値へ丸め」 のみを イ ンプ リ メ ン ト し ます。 定義上、 任意の浮動小数点数の演算結果は、 単精度の近似値を無限大に返し ます。 2 つの近似値がどち ら も 同じ近さ であ る場合、 最下位ビ ッ ト 0 のあ るほ う が返されます。

演算

MicroBlaze の FPU 演算はすべて、 専用の浮動小数点レジス タ フ ァ イルではな く 、 プロセ ッ サの汎用レジス タ を使用 し ます。 詳細は、 「汎用レジス タ」 を参照し て く ださい。

算術演算

FPU は次の浮動小数点数演算を イ ンプ リ メ ン ト し ます。

• 加算、 fadd

• 減算、 fsub

• 乗算、 fmul

• 減算、 fdiv

• 平方根、 fsqrt (C_USE_FPU = 2, EXTENDED の場合に使用可能)

比較

FPU は次の浮動小数点数比較を イ ンプ リ メ ン ト し ます。

• 小な り 比較、 fcmp.lt

• 相当比較、 fcmp.eq

• 以下の比較、 fcmp.le

• 大な り 比較、 fcmp.gt

• 不等比較、 fcmp.ne

• 以上の比較、 fcmp.ge

• 不順比較、 fcmp.un (NaN に対し使用)

変換

FPU は次の変換を イ ンプ リ メ ン ト し ます (C_USE_FPU = 2, EXTENDED の場合に使用可能)。

• 符号付き整数を浮動小数点数に変換、 flt

• 浮動小数点数を符号付き整数に変換、 fint

例外

浮動小数点ユニ ッ ト は、 MicroBlaze の一般的なハード ウ ェア例外 メ カニズムを使用し ます。 イネーブルになっている 場合は、 アンダーフ ロー、 オーバーフ ロー、 ゼロ除算、 無効な操作 と いったすべての IEEE 規格のコ ンデ ィ シ ョ ン、 および MicroBlaze の例外であ る非正規化オペラ ン ド エラーに対し て、 例外が投げられます。

浮動小数点の例外は、 デステ ィ ネーシ ョ ン レジス タ (Rd) への書き込みを抑止し ます。 こ のため、 浮動小数点例外ハ ン ド ラーが、 破損し ていないレジス タ フ ァ イルで操作でき ます。

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド japan.xilinx.com 70UG984 (v2015.1) 2015 年 4 月 15 日UG984 (v2015.4) 2015 年 11 月 18 日

Page 71: MicroBlaze プロセッサ リファレンス ガイド …...M_ACE_IC M_ACE_DC M_AXI_DP DLMB UG984 (v2015.4) 2015 年 11 月 18 日 MicroBlaze プロセッサ リファレンス ガイド

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

ソ フ ト ウ ェ ア サポー ト

GCC をベースにし た、 SDK コ ンパイ ラ システムでは、 MicroBlaze API に準拠し た浮動小数点ユニ ッ ト がサポー ト さ れています。 SDK を使用する場合、 システムにあ る FPU の種類に基づいて、 GCC コマン ド ラ イ ンにコ ンパイ ラ フ ラ グが自動的に追加されます。

倍精度演算はすべて ソ フ ト ウ ェ アでエ ミ ュ レー ト されます。 xil_printf() は浮動小数点数の出力をサポー ト し ないので 注意が必要です。 標準 C ラ イブラ リ の printf() および関連関数は、 浮動小数点数の出力をサポー ト し ていますが、 プ ロ グ ラ ムのコード サイ ズが大き く な り ます。

ラ イブ ラ リ およびバイナ リの互換性

SDK コ ンパイ ラ システムには、 ソ フ ト ウ ェ アの浮動小数点 C ラ イ ン タ イ ム ラ イブラ リ のみが含まれています。 ハー ド ウ ェ アの FPU を利用するには、 これらのラ イブラ リ を適切な コ ンパイ ラ オプシ ョ ンを使用し て再コ ンパイルする 必要があ り ます。

異な る コ ンパイルが使用されている場合は常に、 ビル ド 全体で FPU コ ンパイ ラ フ ラ グが一貫し ている こ と を必ず確 認し て く ださい。

演算子レ イテンシ

FPU でサポー ト されている さ まざまな演算のレ イ テンシは、 第 5 章 「MicroBlaze 命令セ ッ ト アーキテ クチャ」 にま と められています。 FPU 命令はパイプラ イ ン化されていないため、 1 回に 1 つの演算しか実行でき ません。

C 言語プログラ ミ ング

下位のアセンブ リ 言語のプロ グ ラ ミ ングを使用せずに、 FPU の機能を最大限に活用するには、 ソース コー ド が C コ ンパイ ラにどのよ う に処理されるのかを考え る こ と が重要です。 同じ アルゴ リ ズムでも表現方法は複数あって、 記述のしかたによ っては効率のよいアルゴ リ ズムになる こ と がよ く あ り ます。

即値定数

C の浮動小数点定数はデフ ォル ト で倍精度です。 単精度の FPU を使用する場合は、 注意し てコード を記述し ない と、 ネイ テ ィ ブの単精度命令ではな く 、倍精度のソ フ ト ウ ェア エ ミ ュ レーシ ョ ン ルーチンが使用される こ と があ り ます。 これを避けるには、 演算式で即値定数に単精度値を明示的に指定し ます (キ ャ ス ト または接尾辞を使用)。

例 :

float x = 0.0;...x += (float)1.0; /* float addition */x += 1.0F; /* alternative to above */x += 1.0; /* warning - uses double addition! */

-fsingle-precision-constants と い う コ ンパイ ラ フ ラ グを使用し て、 GNU C コ ンパイ ラですべての浮動小数点定数を単精 度 と し て処理する よ う に指定する こ と ができ ます (ANSI C 規格と は異な る )。

不必要なキャス ト の回避

C_USE_FPU が 2 に設定されている場合 (拡張)、浮動小数点 と整数の変換は FPU によ り ハード ウ ェアでサポー ト され ていますが、 でき る限 り その変換は避けて く ださい。

次の例は悪い例で、 浮動小数点を使用し て 1 から 10 の整数の平方根の和を計算し ています。

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド japan.xilinx.com 71UG984 (v2015.1) 2015 年 4 月 15 日UG984 (v2015.4) 2015 年 11 月 18 日

Page 72: MicroBlaze プロセッサ リファレンス ガイド …...M_ACE_IC M_ACE_DC M_AXI_DP DLMB UG984 (v2015.4) 2015 年 11 月 18 日 MicroBlaze プロセッサ リファレンス ガイド

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

float sum, t;int i;sum = 0.0f;for (i = 1; i <= 10; i++) {t = (float)i;sum += t * t;

}

上記のコード では、 各ループ反復で、 整数から浮動小数点数へのキ ャ ス ト が必要にな り ます。 これは次のよ う に書き換え る こ と ができ ます。

float sum, t;int i;t = sum = 0.0f;for(i = 1; i <= 10; i++) {t += 1.0f;sum += t * t;

}

上記の 2 つのコー ド の抜粋は、 場合によ っては異な る結果を出力する可能性があ るので (非常に大き な t が出力され る など)、 通常、 この最適化はコ ンパイ ラでは実行されません。

平方根ラ ン タ イム ラ イブ ラ リ関数

標準 C ラ ン タ イ ム数学ラ イブラ リ 関数は、 倍精度演算を使用し て計算を行います。 平方根関数 (sqrt()) への単精度の FPU コールを使用する場合、 FPU 命令ではな く 、 非効率的なエ ミ ュ レーシ ョ ン ルーチンが代わ り に使用されます。

#include <math.h>...float x=-1.0F;...x = sqrt(x); /* uses double precision */

こ こ では、 コ ンパイ ラから警告 メ ッ セージが表示されるのを避けるため、 math.h ヘッ ダーが含まれています。

単精度のデータ型で使用する と、 結果は倍精度へキ ャ ス ト され、 ラ ン タ イ ム ラ イブラ リ (FPU を使用し ない) が呼び 出され、 浮動小数点への切 り 捨てが実行されます。

解決方法 と し ては、 非 ANSI 関数 sqrtf() を代わ り に使用し ます。 これは、 単精度を使用し て演算を行い、 FPU を使用 し て実行する こ と が可能です。 次はその例です。

#include <math.h>...float x=-1.0F;...x = sqrtf(x); /* uses single precision */

このコード を コ ンパイルする場合は、 コ ンパイ ラ フ ラ グ -fno-math-errno (-mhard-float and -mxl-float-sqrt に加えて) を必 ず使用し、 errno 変数をア ッ プデー ト し て、 エラー コ ンデ ィ シ ョ ンを処理する ための不必要な コード を コ ンパイ ラが 生成し ないよ う にし て く ださい。

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド japan.xilinx.com 72UG984 (v2015.1) 2015 年 4 月 15 日UG984 (v2015.4) 2015 年 11 月 18 日

Page 73: MicroBlaze プロセッサ リファレンス ガイド …...M_ACE_IC M_ACE_DC M_AXI_DP DLMB UG984 (v2015.4) 2015 年 11 月 18 日 MicroBlaze プロセッサ リファレンス ガイド

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

ス ト リーム リ ン ク  イ ン ターフ ェ イスMicroBlaze は、 最大 16 個の AXI4-Stream イ ン ターフ ェ イ ス を使用し て コ ンフ ィ ギ ュ レー ト でき、 各イ ン ターフ ェ イ スには入力ポー ト と出力ポー ト が 1 つずつあ り ます。 チャネルは専用の単一方向のポイ ン ト ツー ポイ ン ト のデータ ス ト リ ー ミ ング イ ン ターフ ェ イ スです。

AXI4-Stream イ ン ターフ ェ イ スの詳細については、 『AMBA 4 AXI4-Stream Protocol Specification, Version 1.0』 (ARM IHI 0051A) を参照し て く ださい。

MicroBlaze のイ ン ターフ ェ イ スは 32 ビ ッ ト 幅です。 別の 1 ビ ッ ト が送/受信されたワード が制御タ イプなのかデータ タ イプなのかを示し ます。 MicroBlaze ISA の get 命令は、 ポー ト から汎用レジス タ まで情報を伝送するのに使用され ます。put 命令はその逆方向にデータ を伝送するのに使用されます。両方の命令に、ブロ ッ キング データ、 ノ ンブロ ッ キング データ、 ブロ ッ キング制御、 ノ ンブロ ッ キング制御 と い う 4 つのタ イプがあ り ます。 get および put 命令の詳 細については、 第 5 章 「MicroBlaze 命令セ ッ ト アーキテ クチャ」 を参照し て く ださい。

ハー ド ウ ェ ア アクセラ レーシ ョ ン

プロセ ッ サ パイプラ イ ンへの低レ イ テンシ専用イ ン ターフ ェ イ ス を各 リ ン ク が提供し ています。 し たがって、 カ ス タ ムのハー ド ウ ェ ア ア ク セ ラ レー タ を使用 し たプ ロ セ ッ サ実行ユニ ッ ト を拡張す る のに理想的です。 簡単な例を 図 2-25 に示し ます。 こ のコード は、 使用 リ ン ク を示すため RFSLx を使用し ています。

図 2‐25 : ス ト リーム リ ン ク  (ハー ド ウ ェ ア アクセラ レー ト された関数 fx を使用)

この方法は、 カス タ ム命令で ISA を拡張するのに似ていますが、 プロセ ッ サのパイプラ イ ンの全体的なス ピード をカ ス タ ム関数に依存させない と い う 利点があ り ます。 また、 このタ イプの機能拡張な らば、 ソ フ ト ウ ェア ツール チェー ンへの追加要件も あ り ません。

デバッ グおよび ト レース

デバッ グの概要

MicroBlaze には、 一般的に BDM ま たはバ ッ ク グ ラ ン ド デバ ッ グ モー ド デバ ッ ガー と 呼ばれ る、 XMD (Xilinx Microprocessor Debug ) などの JTAG ベースのソ フ ト ウ ェ ア デバッ グ ツールをサポー ト する ため、 デバッ グ イ ン ター

MicroBlaze

カス タム ハー ド ウ ェ ア リ ン ク x// Configure fx

cput Rc,RFSLx

// Store operands

put Ra, RFSLx // op 1

put Rb, RFSLx // op 2

// Load result

get Rt, RFSLx

コー ド例

レジス タ

フ ァ イルConfigReg

Op1Reg Op2Reg

fx

ResultReg

リ ン ク x

アクセラ レータ

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド japan.xilinx.com 73UG984 (v2015.1) 2015 年 4 月 15 日UG984 (v2015.4) 2015 年 11 月 18 日

Page 74: MicroBlaze プロセッサ リファレンス ガイド …...M_ACE_IC M_ACE_DC M_AXI_DP DLMB UG984 (v2015.4) 2015 年 11 月 18 日 MicroBlaze プロセッサ リファレンス ガイド

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

フ ェ イ スがあ り ます。 デバ ッ グ イ ン ターフ ェ イ スは、 ザイ リ ン ク ス FPGA の JTAG ポー ト と イ ン ターフ ェ イ スする MDM (Microprocessor Debug Module) コ アに接続する ために設計されています。 マルチプロセ ッ サ デバッ グを イ ネー ブルにするため、 1 つの MDM に複数の MicroBlaze イ ン ス タ ン ス を接続する こ と ができ ます。

デバ ッ グ レジ ス タには、 JTAG デバ ッ グ イ ン ターフ ェ イ ス を介し てア ク セス し ます。 これら のレジス タは、 ソ フ ト ウ ェ アがユーザー ア ク セス可能なデバッ グ レジス タにア ク セスでき る よ う MDM がコ ンフ ィ ギ ュ レー ト されていな い限 り 、 プロセ ッ サで実行されている ソ フ ト ウ ェ アには直接は見えません。

MDM の機能については、 『MicroBlaze Debug Module (MDM) 製品ガ イ ド』 (PG115) を参照し て く ださい。

C_DEBUG_ENABLED を 1 (基本) に設定し て イネーブルになる基本デバッ グ機能には次のものがあ り ます。

• ハード ウ ェア ブレーク ポイ ン ト およびウ ォ ッチポイ ン ト の数、 無制限のソ フ ト ウ ェ ア プレーク ポイ ン ト の数を 設定可能

• 外部プロセ ッ サ制御によ り 、 デバッ グ ツールの停止、 リ セ ッ ト 、 MicroBlaze のシングル ステ ッ プを設定可能

• メ モ リ 、 汎用レジス タ、 特殊レジス タからの読み出しおよび書き込み (但し、 EAR、 EDR、 ESR、 BTR、 および PVR0 から PVR12 までは読み出し専用)

• 複数のプロセ ッ サをサポー ト

C_DEBUG_ENABLED を 2 (拡張) に設定し て イネーブルになる拡張デバッ グ機能には次のものがあ り ます。

• パフ ォーマン ス監視イベン ト およびレ イ テンシ カ ウ ン ターの数を設定可能

• プロ グ ラ ム ト レース

° エンベデッ ド プロ グ ラ ム ト レース ( ト レース バッ フ ァー サイ ズは設定可能)

° MDM で接続されている複数プロセ ッ サに対し外部プロ グ ラ ム ト レース

• 設定可能なプロ フ ァ イ リ ング バッ フ ァー サイ ズで非侵入型プロ フ ァ イ リ ング サポー ト

• 複数のプロセ ッ サ間のク ロ ス ト リ ガー サポー ト 、 さ らに MDM によ り 提供される外部ク ロ ス ト リ ガーの入力お よび出力

パフ ォーマンス監視

MicroBlaze の拡張デバッ グを使用する場合は、 パフ ォーマン ス監視カ ウ ン ターが提供されてお り 、 さ まざまな イベン ト をカ ウ ン ト し、プロ グ ラ ム実行中のレ イ テンシを測定する こ と ができ ます。 イベン ト カ ウ ン ターおよびレ イ テンシ カ ウ ン ターの数は、 それぞれ、C_DEBUG_EVENT_COUNTERS および C_DEBUG_LATENCY_COUNTERS で設定でき、 カ ウ ン ター幅は C_DEBUG_COUNTER_WIDTH で、 32、 48、 または 64 ビ ッ ト に設定でき ます。 デフ ォル ト コ ンフ ィ ギュ レーシ ョ ンでは、 カ ウ ン ター幅が 32 ビ ッ ト に、 イベン ト カ ウ ン ターは 5 つ、 レ イ テンシ カ ウ ン ターは 1 つに設定さ れます。

イベン ト カ ウ ン ターは、 単に、 イベン ト が発生し た回数をカ ウ ン ト し ますが、 レ イ テンシ カ ウ ン ターは次の情報を 計測し ます。

• イベン ト が発生し た回数 (N)

• イベン ト 開始から イベン ト 終了までのク ロ ッ ク サイ クルをカ ウ ン ト し て計測された各イベン ト レ イ テンシの合 計 (ΣL)。 平均レ イ テンシを計算するのに使用し ます。

• 各イベン ト レ イ テンシの平方の合計 (ΣL2)。 レ イ テンシの標準偏差を計算するのに使用し ます。

• すべてのイベン ト のレ イ テンシの最小計測値 (Lmin)

• すべてのイベン ト のレ イ テンシの最大計測値 (Lmax)

平均レ イ テンシ (μ) は次の式で計算されます。

レ イ テンシの標準偏差 (σ) は、 次の式で求められます。

LN‐‐‐‐‐‐‐=

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド japan.xilinx.com 74UG984 (v2015.1) 2015 年 4 月 15 日UG984 (v2015.4) 2015 年 11 月 18 日

Page 75: MicroBlaze プロセッサ リファレンス ガイド …...M_ACE_IC M_ACE_DC M_AXI_DP DLMB UG984 (v2015.4) 2015 年 11 月 18 日 MicroBlaze プロセッサ リファレンス ガイド

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

カ ウ ン ト の開始/停止は、 パフ ォーマン ス カ ウ ン ター コマン ド レジス タ またはク ロ ス ト リ ガー イベン ト で制御し ま す (表 2-61 を参照)。

カ ウ ン ターを コ ンフ ィ ギ ュ レー ト し た り 、 読み出しや書き込みを実行する と き、 パフ ォーマン ス カ ウ ン ター レジス タ を介し て、 カ ウ ン ターに順次ア ク セス し ていき ます。 各ア ク セスの後、 選択されたカ ウ ン ター ア イ テムはイ ン ク リ メ ン ト し ます。

パフ ォーマン ス カ ウ ン ター コマン ド レジス タ を介し て読み出し をするため、 すべてのカ ウ ン ターは同時にサンプル されます。 これは、 カ ウ ン ト 中またはカ ウ ン ト 停止後に行われます。

イ ベン ト カ ウ ン タ ーが最大値に達す る と、 オーバーフ ロ ー ス テー タ ス ビ ッ ト がセ ッ ト さ れ、 外部割 り 込み信号 Dbg_Intr が 1 に設定されます。 パフ ォーマン ス カ ウ ン ター コマン ド レジス タ を介し てカ ウ ン ターを ク リ アにする と、 割 り 込み信号は 0 に リ セ ッ ト されます。

イベン ト カ ウ ン ターの 1 つを ク ロ ッ ク サイ クル数をカ ウ ン ト する ために使用し、 こ のカ ウ ン ターを、 あ ら かじめ設 定されているサンプ リ ング間隔が過ぎ る と オーバーフ ローに初期化する こ と で、パフ ォーマン ス カ ウ ン ターを定期的 にサンプルするために外部割 り 込みを使用でき ます。

使用可能な イベン ト は表 2-40 に説明されてお り 、 順番に リ ス ト されています。

パフ ォーマン ス監視カ ウ ン ターを初期化し て使用する手順は、 通常次のよ う にな り ます。

• イベン ト を監視でき る よ う に初期化し ます。

° パフ ォーマン ス コマン ド レジス タ (表 2-43) を使用し て、 リ セ ッ ト ビ ッ ト をセ ッ ト し、 選択し たカ ウ ン ター を最初のカ ウ ン タに リ セ ッ ト し ます。

° パフ ォーマン ス制御レジス タ を使用し て、 すべてのカ ウ ン ターに対し順番に、 目的のイベン ト 数を書き込みます (表 2-42)。 デフ ォル ト コ ンフ ィ ギ ュ レーシ ョ ンであれば、 イベン ト カ ウ ン ターの場合は 5 回、 レ イ テ ンシの場合は 1 回、 レジス タに書き込みを実行し ます。

• ク リ ア ビ ッ ト および開始ビ ッ ト をセ ッ ト し て、 パフ ォーマン ス コマン ド レジス タ を使用し て、 すべてのカ ウ ン ターを ク リ アにし、 監視を開始し ます。

• 監視し たいプロ グ ラ ム またはフ ァ ン ク シ ョ ンを実行し ます。

• サンプル ビ ッ ト および停止ビ ッ ト をセ ッ ト し て、 パフ ォーマン ス コマン ド レジス タ を使用し て、 カ ウ ン ターを サンプルし、 監視を停止し ます。

• すべてのカ ウ ン ターから結果を読み出し ます。

° パフ ォーマン ス コマン ド レジス タ を使用し て、 リ セ ッ ト ビ ッ ト をセ ッ ト し、 選択し たカ ウ ン ターを最初の カ ウ ン タに リ セ ッ ト し ます。

° パフ ォーマン ス カ ウ ン ター ステータ ス レジス タ を使用し て、 すべてのカ ウ ン ターのステータ ス を順番に読 み出し ます (表 2-44)。デフ ォル ト コ ンフ ィ ギュ レーシ ョ ンであれば、 イベン ト カ ウ ン ターの場合は 5 回、 レ イ テンシ カ ウ ン ターの場合は 1 回、 レジス タ を読み出し ます。 オーバーフ ロー ビ ッ ト およびフル ビ ッ ト が セ ッ ト されていないこ と をチェ ッ ク し、 結果が有効であ る こ と を確認し ます。

° パフ ォーマン ス コマン ド レジス タ を使用し て、 リ セ ッ ト ビ ッ ト をセ ッ ト し、 選択し たカ ウ ン ターを最初の カ ウ ン タに リ セ ッ ト し ます。

° パフ ォーマン ス カ ウ ン ター データ読み出し レジス タ を使用し て、 すべてのカ ウ ン ターのカ ウ ン ター ア イ テ ムを順番に読み出し ます (表 2-52)。 表 2-53 にあ る よ う に、 デフ ォル ト コ ン フ ィ ギ ュ レーシ ョ ンであれば、 イベン ト カ ウ ン ターの場合は 5 回、 レ イ テンシ カ ウ ン ターの場合は 4 回、 レジス タ を読み出し ます。

• 計測された イベン ト によ り ますが、 最終結果を計算し ます。 た と えば、

° 計測されたレ イ テンシの平均レ イ テンシおよび標準偏差を求めるには、 上記の式を使用し ます。

° 命令ご と のク ロ ッ ク サイ クル (CPI) は、 E30 / E0 で求める こ と ができ ます。

° 命令およびデータ キ ャ ッ シュ ヒ ッ ト 率は、 E11 / E10 および E47 / E46 で求める こ と ができ ます。

° 命令キ ャ ッ シュ ミ ス レ イ テンシは、 (E60(ΣL) - E60(N)) / (E10 - E11) で求められ、 同等の式を使って、 データ キ ャ ッ シュ読み出しおよび書き込みの ミ ス レ イ テンシを求める こ と ができ ます。

NL2 L 2–N

‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐=

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド japan.xilinx.com 75UG984 (v2015.1) 2015 年 4 月 15 日UG984 (v2015.4) 2015 年 11 月 18 日

Page 76: MicroBlaze プロセッサ リファレンス ガイド …...M_ACE_IC M_ACE_DC M_AXI_DP DLMB UG984 (v2015.4) 2015 年 11 月 18 日 MicroBlaze プロセッサ リファレンス ガイド

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

° プロ グ ラ ムの浮動小数点命令の比率は E29/E0 です。

表 2‐40 : MicroBlaze パフ ォーマンス監視イベン ト

イベント

説明イベン ト

説明

イベン ト カ ウ ン ターのイベン ト

0 任意の有効命令実行 29 浮動小数点(fadd、 ...、 fsqrt)

1 ロード ワード (lw、 lwi、 lwx) 実行 30 ク ロ ッ ク サイ クル数

2 ロード ハーフ ワード (lhu、 hui) 実行 31 Immediate (imm) 実行

3 ロード バイ ト (lbu, lbui) 実行 32 パターン比較 (pcmpbf、 pcmpeq、 pcmpne)

4 ス ト ア ワード (sw、 swi、 swx) 実行 33 符号拡張命令 (sext8、 sext16) 実行

5 ス ト ア ハーフ ワード (sh、 shi) 実行 34 命令キ ャ ッ シュ無効化 (wic) 実行

6 ス ト ア バイ ト (sb、 sbi) 実行 35 データ キ ャ ッ シ ュ の無効化ま たはフ ラ ッ シ ュ (wdc) 実行

7 条件な し分岐 (br、 bri、 brk、 brki) 実行 36 マシン ステータ ス命令 (msrset、 msrclr)

8 分岐し た条件付き分岐 (beq、 ...、 bnei) 実行 37 遅延ス ロ ッ ト のあ る条件な し分岐を実行

9 分岐し ていない条件付き分岐 (beq、 ...、 bnei) 実行 38 遅延ス ロ ッ ト のあ る分岐し た条件付き分岐を実行

10 命令キ ャ ッ シ ュからのデータ要求 39 遅延ス ロ ッ ト のあ る分岐し ていない条件付き分岐を

実行

11 命令キ ャ ッ シ ュで ヒ ッ ト 40 演算命令が実行されていない遅延ス ロ ッ ト

12 リ ク エ ス ト さ れたデータ をデータ キ ャ ッ シ ュ か ら読

み出し

41 ロード命令 (lbu、 ...、 lwx) 実行

13 データ キ ャ ッ シュで読み出しデータ ヒ ッ ト 42 ス ト ア命令 (sb、 ...、 swx) 実行

14 Write data request to data cache 43 MMU データ ア ク セス リ ク エス ト

15 データ キ ャ ッ シュで書き込みデータ ヒ ッ ト 44 条件付き分岐 (beq、 ...、 bnei) 実行

16 Load (lbu, ..., lwx) with r1 as operand executed 45 分岐 (br、 bri、 brk、 brki、 beqm、 ...、 bnei) 実行

17 Store (sb, ..., swx) with r1 as operand executed 46 Read or write data request from/to data cache

18 論理演算 (and、 andn、 or、 xor) 実行 47 読み出し または書き込みデータ キ ャ ッ シ ュ ヒ ッ ト

19 演算 (add、 idiv、 mul、 rsub) 実行 48 MMU 例外発生

20 乗算 (mul、 mulh、 mulhu、 mulhsu、 muli) 49 MMU 命令側例外発生

21 バレル シフ ター演算 (bsrl、 bsra、 bsll) 実行 50 MMU データ側例外発生

22 シフ ト 演算 (sra、 src、 srl) 実行 51 パイプラ イ ンのス ト ール

23 例外 taken 52 分岐または リ ターンの分岐先キ ャ ッ シ ュ ヒ ッ ト

24 割 り 込み発生 53 MMU 命令側ア ク セス リ ク エス ト

25 オペラ ン ド フ ェ ッ チ段 (OF) が原因でパイ プラ イ ンが

ス ト ール

54 MMU 命令 TLB (ITLB) ヒ ッ ト

26 実行段 (EX) が原因でパイプラ イ ンがス ト ール 55 MMU データ TLB (DTLB) ヒ ッ ト

27 メ モ リ 段 (MEM) が原因でパイプラ イ ンがス ト ール 56 MMU 統合 TLB (UTLB) ヒ ッ ト

28 整数除算 (idiv、 idivu) 実行

レ イ テンシおよびイベン ト カ ウ ン ターのイベン ト

57 入力から割 り 込みベク ターまでの割 り 込みレ イ テンシ 61 MMU ア ド レ ス ルッ ク ア ッ プ レ イ テンシ

58 メ モ リ 読み出しのデータ キ ャ ッ シ ュ レ イ テンシ 62 ペ リ フ ェ ラル AXI イ ン ターフ ェ イ ス データ読み出し

レ イ テンシ

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド japan.xilinx.com 76UG984 (v2015.1) 2015 年 4 月 15 日UG984 (v2015.4) 2015 年 11 月 18 日

Page 77: MicroBlaze プロセッサ リファレンス ガイド …...M_ACE_IC M_ACE_DC M_AXI_DP DLMB UG984 (v2015.4) 2015 年 11 月 18 日 MicroBlaze プロセッサ リファレンス ガイド

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

パフ ォーマン ス監視を コ ンフ ィ ギュ レー ト および制御し、イベン ト およびレ イ テンシ カ ウ ン タに読み出しかおよび書 き込みを実行する ために使用されるデバッ グ レジス タは、 表 2-41 に リ ス ト されています。 これらのレジス タはすべ て (パフ ォーマン ス カ ウ ン ター コマン ド レジス タ を除 く )、 まずすべてのイベン ト カ ウ ン ター用に、 続いてレ イ テン シ カ ウ ン ター用に、 読み出し /書き込みを行 う ために繰 り 返し ア ク セス されます。

DBG_CTRL 値は、 レジス タにア ク セスする ための MDM デバッ グ レジス タ ア ク セス制御レジス タで使用される値を 示し、 この値は、 デバッ グ レジス タへの MDM ソ フ ト ウ ェア ア ク セスで使用されます。

パフ ォーマンス カウン ター制御レジス タ

パフ ォーマン ス カ ウ ン ター制御レジス タ (PCCTRLR) は、コ ンフ ィ ギュ レー ト されたパフ ォーマン ス カ ウ ン ターでカ ウ ン ト される イベン ト を定義するために使用されます。 コ ンフ ィ ギ ュ レー ト されたカ ウ ン ターすべてのイベン ト を定義するには、 各カ ウ ン ターに対し て こ のレジス タ を繰 り 返し書き込む必要があ り ます。 このレジス タは書き込み専用レジス タです。 読み出し リ ク エス ト を出力し て も効力はな く 、 未定義データが読み出されます。

レジス タ を書き込みむたびに、 選択されたカ ウ ン ターがイ ン ク リ メ ン ト し ます。 パフ ォーマン ス カ ウ ン ター コマン ド レジス タ を使用し、 選択し たカ ウ ン ターを最初のカ ウ ン ターに再び リ セ ッ ト する こ と ができ ます。

59 メ モ リ 書き込みのデータ キ ャ ッ シ ュ レ イ テンシ 63 ペ リ フ ェ ラル AXI イ ン ターフ ェ イ ス データ書き込み

レ イ テンシ

60 メ モ リ 読み出しの命令キ ャ ッ シュ レ イ テンシ

表 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コ ン フ ィ ギ ュ レー ト さ れたパフ ォーマン ス カ ウ ン ターそれぞれの初期値を書 き込み

表 2‐40 : MicroBlaze パフ ォーマンス監視イベン ト

イベント

説明イベン ト

説明

予約 イベン ト

図 2‐26 : パフ ォーマンス カウン ター制御レジス タ

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド japan.xilinx.com 77UG984 (v2015.1) 2015 年 4 月 15 日UG984 (v2015.4) 2015 年 11 月 18 日

Page 78: MicroBlaze プロセッサ リファレンス ガイド …...M_ACE_IC M_ACE_DC M_AXI_DP DLMB UG984 (v2015.4) 2015 年 11 月 18 日 MicroBlaze プロセッサ リファレンス ガイド

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

パフ ォーマンス カウン ター コマン ド  レジス タ

パフ ォーマン ス カ ウ ン ター コマン ド レジス タ (PCCMDR) は、 すべてのカ ウ ン ターの ク リ ア、 開始、 停止、 またはサ ンプルを行 う コマン ド を実行するために使用されます。 こ のレジス タは書き込み専用レジス タです。 読み出し リ ク エス ト を出力し て も効力はな く 、 未定義データが読み出されます。

パフ ォーマンス カウン ター ステータ ス レジス タ

パフ ォーマン ス カ ウ ン ター ステータ ス レジス タ (PCSR) は、 カ ウ ン ターのサンプルされたステータ ス を読み出し ま す。 コ ンフ ィ ギュ レー ト されたカ ウ ン ターすべてのステータ ス を読み出すには、 各カ ウ ン ターに対し て このレジス タを繰 り 返し読み出す必要があ り ます。 こ のレジス タは読み出し専用レジス タです。 レジス タに書き込み リ ク エス ト を出し て も何も起き ません。

レジス タ を読み出すたびに、 選択されたカ ウ ン ターがイ ン ク リ メ ン ト し ます。 パフ ォーマン ス カ ウ ン ター コマン ド レジス タ を使用し、 選択し たカ ウ ン ターを最初のカ ウ ン ターに再び リ セ ッ ト する こ と ができ ます。

表 2‐42 : パフ ォーマンス カウン ター制御レジス タ  (PCCTRLR) 

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

7:0 イベン ト パフ ォーマン ス カ ウ ン ター イベン ト (表 2-40 を参照) 0

予約 CLR STA STOP SAM RES

図 2‐27 : パフ ォーマンス カウン ター コマン ド  レジス タ

表 2‐43 : パフ ォーマンス カウン ター コマン ド  レジス タ  (PCCMDR) 

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

4 ク リ ア すべてのカ ウ ン ターを 0 に ク リ ア 0

3 開始 すべてのカ ウ ン ターの コ ン フ ィ ギ ュ レー ト さ れた イベン ト を同時にカ ウ ン ト開始

0

2 停止 すべてのカ ウ ン ターのカ ウ ン ト を同時に停止 0

1 サンプル 読み出しのため、すべてのカ ウ ン ターのステータ スおよび値を同時にサンプル 0

0 リ セ ッ ト パフ ォーマン ス カ ウ ン ターのコマン ド、 ステータ ス、 読み出しデータ、 書き込 みデータ を使用し てア ク セスする ため、 ア ク セス されたカ ウ ン ターを最初のイベン ト カ ウ ン ターに リ セ ッ ト

0

予約 OF FULL

図 2‐28 : パフ ォーマンス カウン ター ステータ ス レジス タ

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド japan.xilinx.com 78UG984 (v2015.1) 2015 年 4 月 15 日UG984 (v2015.4) 2015 年 11 月 18 日

Page 79: MicroBlaze プロセッサ リファレンス ガイド …...M_ACE_IC M_ACE_DC M_AXI_DP DLMB UG984 (v2015.4) 2015 年 11 月 18 日 MicroBlaze プロセッサ リファレンス ガイド

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

パフ ォーマンス カウン ター データ読み出し レジス タ

パフ ォーマン ス カ ウ ン ター データ読み出し レジス タ (PCDRR) は、 カ ウ ン ターのサンプルされた値を読み出し ます。 コ ン フ ィ ギ ュ レー ト されたカ ウ ン ターすべての値を読み出すには、 こ のレジ ス タ を繰 り 返し読み出す必要があ り ます。 このレジス タは読み出し専用レジス タです。 レジス タに書き込み リ ク エス ト を出し て も何も起き ません。

コ ンフ ィ ギュ レーシ ョ ンによ り ますが、カ ウ ン ターには 32 ビ ッ ト を超え る ビ ッ ト を格納でき るため、特定カ ウ ン ター の情報をすべて取 り 出すため、 こ のレジス タ を繰 り 返し読み出す必要があ る場合があ り ます。 詳細は、 表 2-46 を参 照し て く ださい。

表 2‐44 : パフ ォーマンス カウン ター ステータ ス レジス タ  (PCSR) 

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

1 オーバーフ ロー

カ ウ ン ターが最大値を超えてカ ウ ン ト する と、 こ のビ ッ ト がセ ッ ト さ れます。

0

0 FULL 前のイベン ト が完了する前に新しいレ イ テンシ カ ウ ン ター イベン ト が開始 する と、 このビ ッ ト がセ ッ ト されます。 これは計測された値の正確さが落ちた こ と を示し ます。

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 プロセ ッサ リ フ ァ レンス ガイ ド japan.xilinx.com 79UG984 (v2015.1) 2015 年 4 月 15 日UG984 (v2015.4) 2015 年 11 月 18 日

Page 80: MicroBlaze プロセッサ リファレンス ガイド …...M_ACE_IC M_ACE_DC M_AXI_DP DLMB UG984 (v2015.4) 2015 年 11 月 18 日 MicroBlaze プロセッサ リファレンス ガイド

第 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 : パフ ォーマンス カウン ター データ  アイテム (続き)

カウン ター タ イプアイテム

説明

アイテム

図 2‐30 : パフ ォーマンス カウン ター データ書き込みレジス タ

表 2‐47 : パフ ォーマンス カウン ター データ書き込みレジス タ  (PCDWR) 

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

31:0 ア イ テム カ ウ ン ターに書き込むためのカ ウ ン ター値ア イ テム 0

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド japan.xilinx.com 80UG984 (v2015.1) 2015 年 4 月 15 日UG984 (v2015.4) 2015 年 11 月 18 日

Page 81: MicroBlaze プロセッサ リファレンス ガイド …...M_ACE_IC M_ACE_DC M_AXI_DP DLMB UG984 (v2015.4) 2015 年 11 月 18 日 MicroBlaze プロセッサ リファレンス ガイド

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

プログラム ト レース

MicroBlaze の拡張デバッ グには、プロ グ ラ ム実行 ト レース を イネーブルにするプロ グ ラ ム ト レース機能が含まれ、エ ンベデッ ド ト レース バッ フ ァーに情報を格納するか、 または MDM へ情報を転送し て、 プロ グ ラ ム実行の追跡を可 能にし ます。 MDM は、 C_DEBUG_EXTERNAL_TRACE が設定されている と きに使用され、 外部イ ン ターフ ェ イ ス を介 し て、 複数のプロセ ッ サからのプロ グ ラ ム ト レースの出力を可能にし ます。

エンベデッ ド ト レース バッ フ ァーのサイ ズは、 C_DEBUG_TRACE_SIZE を使用し て、 8KB から 128KB の範囲で設定 でき ます。 C_DEBUG_TRACE_SIZE を 0 (None) に設定する と、 プロ グ ラ ム ト レースはデ ィ スエーブルにな り ます。

プロ グ ラ ム ト レースでは、ト レース データ量が圧縮されますが、プロ グ ラ ム実行フ ローまたはプロセ ッサ ソ フ ト ウ ェ ア ステー ト 全体を再構築でき ます。 圧縮には主に 3 つのレベルがあ り ます。

• 完全 ト レース

設定されているエンベデッ ド ト レース バッ フ ァー サイ ズによ り ますが、 512 から 8192 ア イ テムの範囲で、 144 ビ ッ ト を使用し て実行された各命令のサイ クル カ ウ ン ト など、 完全 ト レース情報を格納し ます。C_DEBUG_EXTERNAL_TRACE が設定されている と、 これは使用でき ません。

• プロ グ ラ ム フ ロー

分岐し た/分岐し ていない分岐シーケン ス、 間接的な分岐、 割 り 込み、 例外、 ハー ド ウ ェ ア ブレーク の新しいプ ロ グ ラ ム カ ウ ン ターなど、 プロ グ ラ ム フ ローの変化を格納し ます。

また、 リ ターン命令がプロ グ ラ ム フ ローの再構築を簡素化でき る よ う に、 または分岐し たすべての分岐が自己変 更コード を処理でき る よ う に、 オプシ ョ ンでプロ グ ラ ム カ ウ ン ターを格納する こ と も可能です。

メ モ リ から読み出されたデータ、 または AXI4-Stream イ ン ターフ ェ イ スから フ ェ ッチされたデータは、 オプシ ョ ンで、 プロセ ッ サ ソ フ ト ウ ェア ステー ト 全体を再構築でき る よ う に格納でき、 逆方向のシングル ステ ッ プ機能 を可能にし ます。

• プロ グ ラ ム フ ローおよびサイ クル カ ウ ン ト

プロ グ ラ ム フ ローのみ と 同じ情報 と 一緒に、 命令 と 命令 と の間のサイ クル カ ウ ン ト を格納し、 プロ グ ラ ム実行 時間の再構築も可能にし ます。

ト レース制御レジス タで ト レースポ イ ン ト と し て設定されているプロ グ ラ ム ブレーク ポ イ ン ト またはウ ォ ッ チポ イ ン ト にあた るか、 またはク ロ ス ト リ ガー イベン ト によ り 、 ト レース コマン ド レジス タ を介し て、 ト レースは開始で き ます (表 2-61 参照)。

ト レース バッ フ ァーがいっぱいになる と、 ト レースは自動的に停止し ますが、 ト レース コマン ド レジス タ またはク ロ ス ト リ ガー イベン ト によ り 、 停止させる こ と も可能です (表 2-61 参照)。

サイ クル カ ウ ン ト は、 完全 ト レース を使用し ている場合は最大 32768 ク ロ ッ ク サイ クルまでカ ウ ン ト でき、 プロ グ ラ ム フ ローおよびサ イ ク ル カ ウ ン ト を使用し ている場合は、 命令 と 命令の間で 8182 サ イ ク ルまでカ ウ ン ト でき ま す。サイ クル カ ウ ン ト が この値を超え る と 、 ト レース ステータ ス レジス タ オーバーフ ロー ビ ッ ト が 1 にセ ッ ト され ます。

ト レース バッ フ ァーがいっぱいになった と き、 またはサイ クル カ ウ ン ト がオーバーフ ローになった と き、 プロセ ッ サを停止する よ う ト レース を設定する こ と は可能です。そのよ う に設定し てお く と、 ト レース バッ フ ァーを読み出す のに必要な時間が原因で、 リ アル タ イ ムでないにもかかわらず、 プロ グ ラ ム フ ロー全体を継続的に ト レースでき ま す。

ト レース を コ ンフ ィ ギ ュ レー ト および制御し、 エンベデッ ド ト レース バッ フ ァーを読み出すのに使用されるデバッ グ レジス タは、 表 2-48 に リ ス ト されています。

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド japan.xilinx.com 81UG984 (v2015.1) 2015 年 4 月 15 日UG984 (v2015.4) 2015 年 11 月 18 日

Page 82: MicroBlaze プロセッサ リファレンス ガイド …...M_ACE_IC M_ACE_DC M_AXI_DP DLMB UG984 (v2015.4) 2015 年 11 月 18 日 MicroBlaze プロセッサ リファレンス ガイド

第 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 エンベデッ ド ト レース バッ フ ァーから一番 古いア イ テムを読み出し

予約 ト レースポイ ン ト レベル FH SPC SL SR

図 2‐31 : ト レース制御レジス タ

表 2‐49 : ト レース制御レジス タ  (TCTRLR) 

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

21:6 ト レースポイ ン ト

対応するブレーク ポ イ ン ト またはウ ォ ッ チポ イ ン ト を ト レースポ イ ン ト に変更

0

5:4 レベル ト レース圧縮レベル 00 = 完全 ト レース (C_DEBUG_EXTERNAL_TRACE と一緒には使用でき ない)01 = プロ グ ラ ム フ ロー 10 = プロ グ ラ ム フ ローおよびサイ クル カ ウ ン ト 11 = 予約

00

3 フル停止 フル ト レース バ ッ フ ァ ーま たはサ イ ク ル カ ウ ン ト オーバーフ ローでデ バッ グ停止

0

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

分岐し ているすべての分岐に対し新しいプロ グ ラ ム カ ウ ン ターを保存 0

1 ロード保存 ロード を保存し、 命令新規データ値を取得 0

0 リ ターン保存

戻 り 命令に対し新しいプロ グ ラ ム カ ウ ン ターを保存 0

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド japan.xilinx.com 82UG984 (v2015.1) 2015 年 4 月 15 日UG984 (v2015.4) 2015 年 11 月 18 日

Page 83: MicroBlaze プロセッサ リファレンス ガイド …...M_ACE_IC M_ACE_DC M_AXI_DP DLMB UG984 (v2015.4) 2015 年 11 月 18 日 MicroBlaze プロセッサ リファレンス ガイド

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

ト レース コマン ド  レジス タ

ト レース コマン ド レジス タ (TCMDR) は、 ト レースの ク リ ア、 開始、 停止だけでな く 、 ト レース ア イ テム数をサン プルするためのコマン ド を出力するのに使用されます。 こ のレジス タは書き込み専用レジス タです。 読み出し リ ク エス ト を出力し て も効力はな く 、 未定義データが読み出されます。

ト レース ステータ ス レジス タ

ト レース ステータ ス レジス タ (TSR) は、 ト レースが開始し たかど う かの判断、サイ クル カ ウ ン ト オーバー フ ローの チェ ッ ク、エンベデッ ド ト レース バッ フ ァーでのサンプルされたア イ テム数の読み出し を行 う ために使用されます。 このレジス タは読み出し専用レジス タです。 レジス タに書き込み リ ク エス ト を出し て も何も起き ません。

ト レース データ読み出し レジス タ

ト レース データ読み出し レジス タ (TDRR) には、 エンベデッ ド ト レース バッ フ ァーから読み出された一番古いア イ テムが含まれています。 このレジス タが読み出される と、 次のア イ レ ムが ト レース バッ フ ァーから読み出されます。 ト レース ステータ ス レジス タのア イ テム数で示されている、 ト レース バッ フ ァーで使用可能なア イ テムを超え る数 を読み出す と エラーにな り ます。 こ のレジス タは読み出し専用レジス タです。 レジス タに書き込み リ ク エス ト を出して も何も起き ません。

予約 CLRSTASTOP SAM

図 2‐32 : ト レース コマン ド  レジス タ

表 2‐50 : ト レース コマン ド  レジス タ  (TCMDR) 

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

3 ク リ ア ト レース ステータ ス を ク リ アにし、 ト レース バッ フ ァーを空にする 0

2 開始 ト レース をすぐに開始 0

1 停止 ト レース をすぐに停止 0

0 サンプル ト レース バッ フ ァーの現在のア イ テム数をサンプル 0

-

予約 STA OF アイテム カウン ト

図 2‐33 : ト レース ステータ ス レジス タ

表 2‐51 : ト レース ステータ ス レジス タ  (TSR) 

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

17 開始 ト レース開始、 ト レースが開始する と きは 1 にセ ッ ト 、 停止し た と きは 0 にク リ ア

0

16 オーバーフ ロー

サイ クル カ ウ ン ト オーバーフ ロー、 サイ クル カ ウ ン ト オーバーフ ローの と きは 1 にセ ッ ト 、 ク リ ア コマン ド によ り 0 に ク リ ア

0

15:0 ア イ テム カ ウ ン ト

ト レース バッ フ ァー ア イ テム カ ウ ン ト をサンプル 0x0000

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド japan.xilinx.com 83UG984 (v2015.1) 2015 年 4 月 15 日UG984 (v2015.4) 2015 年 11 月 18 日

Page 84: MicroBlaze プロセッサ リファレンス ガイド …...M_ACE_IC M_ACE_DC M_AXI_DP DLMB UG984 (v2015.4) 2015 年 11 月 18 日 MicroBlaze プロセッサ リファレンス ガイド

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

圧縮レベル と格納されているデータによ り ますが、 ト レース データ エンテ ィ テ ィ は 18 ビ ッ ト を超え る ビ ッ ト で構成 されている可能性があ るため、特定データ 絵テ ィ テ ィ の情報をすべて取 り 出すため、 このレジス タ を繰 り 返し読み出 す必要があ る場合があ り ます。 詳細は、 表 2-53 を参照し て く ださい。

予約 バッ フ ァー値

図 2‐34 : ト レース データ読み出し レジス タ

表 2‐52 : ト レース データ読み出し レジス タ  (TDRR) 

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

17:0 バッ フ ァー値

エンベデッ ド ト レース バッ フ ァー ア イ テム 0x00000

表 2‐53 : ト レース カウン ター データ  エンテ ィ テ ィ

エンテ ィ テ ィ 項目 ビ ッ ト 説明

完全 ト レース 1 17:32:0

実行された命令のサイ クル カ ウ ン ト

マシン ステータ ス レジス タ [17:19]

2 17:65:10

マシン ステータ ス レジス タ [20:31]デステ ィ ネーシ ョ ン レジス タ ア ド レ ス (r0 - r31)、書き込ま れている場合は有効

1 にセ ッ ト されている場合は、 デステ ィ ネーシ ョ ン レジス タに書き込み

3 17:131211109:65:0

例外ステータ ス レジス タ、 例外があ る場合は有効

1 にセ ッ ト されている場合は例外があ る

1 にセ ッ ト されている場合はロード命令でデータ読み出し

1 にセ ッ ト されている場合はス ト ア命令でデータ書き込み

バイ ト イネーブル、 ス ト ア命令の場合有効

ス ト ア命令の場合は書き込みデータ [0:5]、 またはその他の 命令の場合はデステ ィ ネーシ ョ ン レジス タ データ [0:5]

4 17:0 書き込みデータ [6:23]、 またはデステ ィ ネーシ ョ ン レジス タ データ [6:23]

5 17:109:0

書き込みデータ [24:31]、またはデステ ィ ネーシ ョ ン レジス タ データ [24:31]ロードおよびス ト ア命令の場合はデータ ア ド レ ス [0:9]、ま たは その他の命令の場合は実行された命令 [0:9]

6 17:0 データ ア ド レ ス [10:27] または実行された命令 [10:27]

7 17:1413:0

データ ア ド レ ス [28:31] または実行された命令 [28:31]プラ グ ラ ム カ ウ ン ター [0:13]

8 17:0 プラ グ ラ ム カ ウ ン ター [14:31]

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド japan.xilinx.com 84UG984 (v2015.1) 2015 年 4 月 15 日UG984 (v2015.4) 2015 年 11 月 18 日

Page 85: MicroBlaze プロセッサ リファレンス ガイド …...M_ACE_IC M_ACE_DC M_AXI_DP DLMB UG984 (v2015.4) 2015 年 11 月 18 日 MicroBlaze プロセッサ リファレンス ガイド

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

非侵入型のプロ フ ァ イ リ ング

拡張デバ ッ グでは、 プロ グ ラ ム実行の統計を格納するのにプロ フ ァ イ リ ング バ ッ フ ァーを使用する、 非侵入型プロ フ ァ イ リ ングが提供されています。 プロ フ ァ イ リ ング バ ッ フ ァーのサイ ズは、 C_DEBUG_PROFILE_SIZE を使用し て、 4KB か ら 128KB の範囲で設定で き ます。 C_DEBUG_PROFILE_SIZE を 0 (None) に設定する と、 非侵入型プ ロ フ ァ イ リ ングはデ ィ スエーブルにな り ます。

プロ フ ァ イ リ ング バ ッ フ ァーはビンに分かれていて、 各ビ ンは、 あ る ア ド レ ス範囲内で実行された命令数またはク ロ ッ ク サイ クル数をカ ウ ン ト し ます。 各ピンは、 命令またはサイ クルを 236 - 1 = 68719476735 までカ ウ ン ト し ます。

プロ フ ァ イ リ ング ロ ウ ア ド レ ス レジス タおよびプロ フ ァ イ リ ング ハイ ア ド レ ス レジス タ を介し て定義されるプロ フ ァ イルされたア ド レ ス範囲およびバッ フ ァー サイ ズによ って、 各ビンのア ド レ ス範囲は決ま り ます。

プロ フ ァ イ リ ングの開始/停止は、 プロ フ ァ イ リ ング制御レジス タ またはク ロ ス ト リ ガー イベン ト で制御し ます (表 2-61 を参照)。

プロ フ ァ イ リ ングを コ ンフ ィ ギ ュ レー ト および制御し、 プロ フ ァ イ リ ング バッ フ ァーの読み出し /書き込みに使用さ れるデバッ グ レジス タは、 表 2-54 に リ ス ト されています。

プロ グ ラ ム フ ロー : 分岐 1 17:1615:1211:0

00 - ア イ テムにプロ グ ラ ム フ ロー分岐が含まれる

ア イ テム (1 - 12) でカ ウ ン ト される分岐の数 (N)左の N ビ ッ ト はプロ グ ラ ム フ ローの分岐を表すこ のビ ッ ト が 1 の場合、 分岐は分岐し てお り 、 それ以外の場合は分 岐し ていない

プロ グ ラ ム フ ロー : プロ グ ラ ム カ ウ ン ター

1 17:1615:0

01 - ア イ テムにプロ グ ラ ム カ ウ ン ター値が含まれる

プラ グ ラ ム カ ウ ン ター [0:15]

2 17:1615:0

01 - ア イ テムにプロ グ ラ ム カ ウ ン ター値が含まれる プラ グ ラ ム カ ウ ン ター [16:31]

プロ グ ラ ム フ ロー : 読み出しデータ 1 17:1615:0

10 - ア イ テムに読み出しデータが含まれる ロードおよび get 命令で読み出されたデータ [0:15]

2 17:1615:0

10 - ア イ テムに読み出しデータが含まれる ロードおよび get 命令で読み出されたデータ [15:31]

プロ グ ラ ム フ ロー (サイ クル カ ウ ン ト 付き ) : 分岐および短いサイ クル カ ウ ン ト

1 17:1615:1413:876:10

00 - ア イ テムにプロ グ ラ ム フ ロー分岐が含まれる

01、 10 - カ ウ ン ト された (1 - 2) 分岐の数 (N)前に実行された命令のサイ クル カ ウ ン ト

1 にセ ッ ト の場合は分岐は分岐し てお り 、 それ以外の場合 は分岐し ていない

前に実行された命令のサイ クル カ ウ ン ト

1 にセ ッ ト の場合は分岐は分岐し てお り 、 それ以外の場合 は分岐し ていない

プロ グ ラ ム フ ロー (サイ クル カ ウ ン ト 付き ) : 分岐および長いサイ クル カ ウ ン ト

1 17:1615:1413:10

00 - ア イ テムにプロ グ ラ ム フ ロー分岐が含まれる

11 - ア イ テムに分岐および長いサイ クル カ ウ ン ト が含まれ る

前に実行された命令のサイ クル カ ウ ン ト

1 にセ ッ ト の場合は分岐は分岐し てお り 、 それ以外の場合 は分岐し ていない

表 2‐53 : ト レース カウン ター データ  エンテ ィ テ ィ  (続き)

エンテ ィ テ ィ 項目 ビ ッ ト 説明

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド japan.xilinx.com 85UG984 (v2015.1) 2015 年 4 月 15 日UG984 (v2015.4) 2015 年 11 月 18 日

Page 86: MicroBlaze プロセッサ リファレンス ガイド …...M_ACE_IC M_ACE_DC M_AXI_DP DLMB UG984 (v2015.4) 2015 年 11 月 18 日 MicroBlaze プロセッサ リファレンス ガイド

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

DBG_CTRL 値は、 レジス タにア ク セスする ための MDM デバッ グ レジス タ ア ク セス制御レジス タで使用される値を 示し、 この値は、 デバッ グ レジス タへの MDM ソ フ ト ウ ェア ア ク セスで使用されます。

プロ フ ァ イ リ ング制御レジス タ

プロ フ ァ イ リ ング制御レジス タ (PCTRLR) は、 プロ フ ァ イ リ ングのイ ネーブル (開始)/デ ィ スエーブル (停止) のため に使用されます。 また、 実行命令数または実行ク ロ ッ ク サイ クルのカ ウ ン ト の設定、 およびプロ フ ァ イ リ ング バッ フ ァー ビンの使用方法の定義にも使用されます。 このレジス タは書き込み専用レジス タです。読み出し リ ク エス ト を 出力し て も効力はな く 、 未定義データが読み出されます。

ビン制御値 (B) は、 次の式で求める こ と ができ ます。

L はプロ フ ァ イ リ ング ロ ウ レジス タ、 H はプロ フ ァ イ リ ング ハイ レジス タ、 S は C_DEBUG_PROFILE_SIZE にな り ます。

表 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: 4E80810: 4E809

...14: 4E80D

W読み出 し ま たは書 き込みをする プ ロ フ ァイ リ ング バッ フ ァーのア ド レ ス を設定 (ビ ン)

プ ロ フ ァ イ リ ングデータ読み出し

36 0111 0110 4EC23 R プ ロ フ ァ イ リ ン グ バ ッ フ ァ ーか ら の読み 出しデータ

プ ロ フ ァ イ リ ングデータ書き込み

36 0111 0111 4EE23 W プ ロ フ ァ イ リ ン グ バ ッ フ ァ ーへの書き込 みデータ

B log2H L– S 4+

S 4‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐=

予約 ENA DIS CC ビン制御

図 2‐35 : プロ フ ァ イ リ ング制御レジス タ

表 2‐55 : プロ フ ァ イ リ ング制御レジス タ  (PCTRLR) 

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

7 イネーブル プロ フ ァ イ リ ングのイネーブル (開始) 0

6 デ ィ スエーブル

プロ フ ァ イ リ ングのデ ィ スエーブル (停止) 0

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド japan.xilinx.com 86UG984 (v2015.1) 2015 年 4 月 15 日UG984 (v2015.4) 2015 年 11 月 18 日

Page 87: MicroBlaze プロセッサ リファレンス ガイド …...M_ACE_IC M_ACE_DC M_AXI_DP DLMB UG984 (v2015.4) 2015 年 11 月 18 日 MicroBlaze プロセッサ リファレンス ガイド

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

プロ フ ァ イ リ ング ロウ ア ド レス レジス タ

プロ フ ァ イ リ ング ロ ウ ア ド レ ス レジス タ (PLAR) は、 プロ フ ァ イルされたエ リ アのロ ウ ワード ア ド レ ス を定義する のに使用されます。 このレジス タは書き込み専用レジス タです。 読み出し リ ク エス ト を出力し て も効力はな く 、 未定義データが読み出されます。

プロ フ ァ イ リ ング ハイ  ア ド レス レジス タ

プロ フ ァ イ リ ング ハイ ア ド レ ス レジス タ (PHAR) は、プロ フ ァ イルされたエ リ アのハイ ワード ア ド レ ス を定義する のに使用されます。 このレジス タは書き込み専用レジス タです。 読み出し リ ク エス ト を出力し て も効力はな く 、 未定義データが読み出されます。

プロ フ ァ イ リ ング バッ フ ァー ア ド レス レジス タ

プロ フ ァ イ リ ング バッ フ ァー ア ド レ ス レジス タ (PBAR) は、読み出す/書き込むプロ フ ァ イ リ ング バッ フ ァーのビン を定義するのに使用されます。 C_DEBUG_PROFILE_SIZE の設定によ り 、 こ のレジス タのビ ッ ト 数は変わ り ます。 こ

5 サイ クル カウ ン ト のイネーブル

実行された命令のク ロ ッ ク サイ クルをカ ウ ン ト 0 = デ ィ スエーブル、 実行された命令のカ ウ ン ト 数

1 = イネーブル、 実行された命令のク ロ ッ ク サイ クルの数

0

4:0 ビン制御 プロ フ ァ イ リ ング バッ フ ァーの各ビンでカ ウ ン ト される ア ド レ ス数 00000

表 2‐55 : プロ フ ァ イ リ ング制御レジス タ  (PCTRLR) (続き)

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

予約 ロウ ワー ド ア ド レス

図 2‐36 : プロ フ ァ イ リ ング ロウ ア ド レス レジス タ

表 2‐56 : プロ フ ァ イ リ ング ロウ ア ド レス レジス タ  (PLAR) 

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

29:0 ロ ウ ワード

プロ フ ァ イルされたエ リ アのロ ウ ワード ア ド レ ス 0

予約 ハイ ワー ド ア ド レス

図 2‐37 : プロ フ ァ イ リ ング ハイ  ア ド レス レジス タ

表 2‐57 : プロ フ ァ イ リ ング ハイ  ア ド レス レジス タ  (PHAR) 

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

29:0 ハイ ワード

プロ フ ァ イルされたエ リ アのハイ ワード ア ド レ ス 0

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド japan.xilinx.com 87UG984 (v2015.1) 2015 年 4 月 15 日UG984 (v2015.4) 2015 年 11 月 18 日

Page 88: MicroBlaze プロセッサ リファレンス ガイド …...M_ACE_IC M_ACE_DC M_AXI_DP DLMB UG984 (v2015.4) 2015 年 11 月 18 日 MicroBlaze プロセッサ リファレンス ガイド

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

のレジス タは書き込み専用レジス タです。 読み出し リ ク エス ト を出力し て も効力はな く 、 未定義データが読み出されます。

プロ フ ァ イ リ ング データ読み出し レジス タ

プロ フ ァ イ リ ング データ読み出し レジス タ (PDRR) は、 プロ フ ァ イ リ ング バッ フ ァー ア ド レ ス レジス タで示される ビンの値を読み出し、 プロ フ ァ イ リ ング バッ フ ァー ア ド レ ス レジス タ を イ ン ク リ メ ン ト し ます。 このレジス タは読 み出し専用レジス タです。 レジス タに書き込み リ ク エス ト を出し て も何も起き ません。

レジス タ をデバッ グするため MDM ソ フ ト ウ ェ ア ア ク セスでこのレジス タ を読み出す場合、2 回連続ア ク セスする と データが読み出されます。

プロ フ ァ イ リ ング データ書き込みレジス タ

プロ フ ァ イ リ ング データ書き込みレジス タ (PDWR) は、プロ フ ァ イ リ ング バッ フ ァー ア ド レ ス レジス タで示される ビンに新しい値を書き込み、 プロ フ ァ イ リ ング バッ フ ァー ア ド レ ス レジス タ を イ ン ク リ メ ン ト し ます。 このレジス タは書き込み専用レジス タです。 読み出し リ ク エス ト を出力し て も効力はな く 、 未定義データが読み出されます。

このレジス タは、プロ フ ァ イ リ ングを イネーブルする前にプロ フ ァ イ リ ング バッ フ ァーを ク リ アにするために使用で き ます。

予約 バッ フ ァー ア ド レス

図 2‐38 : プロ フ ァ イ リ ング バッ フ ァー ア ド レス レジス タ

表 2‐58 : プロ フ ァ イ リ ング バッ フ ァー ア ド レス レジス タ  (PBAR) 

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

n-1:0 バッフ ァー

ア ド レ ス

読み出し または書き込みをするプロ フ ァ イ リ ング バッ フ ァーのビン。ビ ッ ト 数 (n) は、4KB バッ フ ァーの場合は 9、8KB バッ フ ァーの場合は 10、.... 128KB バッ フ ァーの場合は 14。

0

読み出しデータ

図 2‐39 : プロ フ ァ イ リ ング データ読み出し レジス タ

表 2‐59 : プロ フ ァ イ リ ング データ読み出し レジス タ  (PDRR) 

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

35:0 読み出しデータ

ビンで実行された命令数または実行された ク ロ ッ ク サイ クル数 0

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド japan.xilinx.com 88UG984 (v2015.1) 2015 年 4 月 15 日UG984 (v2015.4) 2015 年 11 月 18 日

Page 89: MicroBlaze プロセッサ リファレンス ガイド …...M_ACE_IC M_ACE_DC M_AXI_DP DLMB UG984 (v2015.4) 2015 年 11 月 18 日 MicroBlaze プロセッサ リファレンス ガイド

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

レジス タ をデバッ グするため MDM ソ フ ト ウ ェ ア ア ク セスでこのレジス タに書き込む場合、2 回連続ア ク セスする と データが書き込まれます。

ク ロス ト リ ガー サポー ト

ク ロ ス ト リ ガーは、 DBG_STOP と MB_Halted の 2 つの信号で指定でき ます。

• DBG_STOP 入力が 1 に設定されている と、 い く つか命令が出た後に MicroBlaze は停止し ます。 XMD は、 MicoBlaze の停止を検出 し、 停止の発生 し た箇所を示 し ます。 こ の信号は、 ChipScope™ ILA (Integrated Logic Analyzer) の ト リ ガーなどの外部イベン ト で MicroBlaze プロセ ッサを停止させるのに使用でき ます。

• MicroBlaze が停止する と きは常に MB_Halted 出力信号は 1 に設定されています。 た と えば、 ブレーク ポイ ン ト またはウ ォ ッ チポ イ ン ト を通過し た後、 停止 XMD コマン ド の後、 または DBG_STOP 入力が設定された と き な どです。 この出力は MicroBlaze 実行が XMD コマン ド で再開される と ク リ アにな り ます。

MB_Halted 信号は、 ChipScope ILA を ト リ ガーし た り 、 DBG_STOP 入力に接続し てマルチプロセ ッサ システム でほかの MicroBlaze コ アを停止するのに使用でき ます。

拡張デバッ グでは、 ク ロ ス ト リ ガーは MDM と共に使用する と サポー ト されます。 MDM には、 接続されたすべての プロセ ッ サ間のプロ グ ラ マブル ク ロ ス ト リ ガー と、外部 ト リ ガー入力および出力が含まれます。詳細は、『MicroBlaze Debug Module (MDM) 製品ガイ ド』 (PG115) を参照し て く ださい。

MicroBlaze では最大 8 個のク ロ ス ト リ ガー ア ク シ ョ ンが処理でき ます。 ク ロ ス ト リ ガー ア ク シ ョ ンは、デバッ グ バ ス を介し て接続されている、対応する MDM のク ロ ス ト リ ガー出力によ って生成されます。ク ロ ス ト リ ガー ア ク シ ョ ンそれぞれの影響は、 表 2-61 にま と められています。

MicroBlaze では最大 8 個のク ロ ス ト リ ガー イベン ト が生成でき ます。 ク ロ ス ト リ ガー イベン ト は、デバッ グ バス を 介し て接続されている、 そのイベン ト に対応する MDM のク ロ ス ト リ ガー入力に影響し ます。 ク ロ ス ト リ ガー イベ ン ト は表 2-62 で説明されています。

書き込みデータ

図 2‐40 : プロ フ ァ イ リ ング データ書き込みレジス タ

表 2‐60 : プロ フ ァ イ リ ング データ書き込みレジス タ  (PDWR) 

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

35:0 書き込みデータ

ビンに書き込むデータ 0

表 2‐61 : MicroBlaze ク ロス ト リ ガー アクシ ョ ン

番号 動作 説明

0 デバッ グ停止 プ ロ セ ッ サが実行中の場合 MicroBlaze を停止 し、 MB_Halted 出力を セ ッ ト 。 Dbg_Stop 入力をセ ッ ト し て も同じ効果が得られる。

1 実行継続 プロセ ッサが実行中の場合実行を継続し、 MB_Halted 出力を ク リ ア

2 プロ グ ラ ム ト レース停止

ト レース中の場合はプロ グ ラ ム ト レース を停止

3 プロ グ ラ ム ト レース開始

ト レースが停止し ている場合は、 プロ グ ラ ム ト レース を開始

4 パフ ォーマン ス監視停止

パフ ォーマン ス監視中の場合はそれを停止

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド japan.xilinx.com 89UG984 (v2015.1) 2015 年 4 月 15 日UG984 (v2015.4) 2015 年 11 月 18 日

Page 90: MicroBlaze プロセッサ リファレンス ガイド …...M_ACE_IC M_ACE_DC M_AXI_DP DLMB UG984 (v2015.4) 2015 年 11 月 18 日 MicroBlaze プロセッサ リファレンス ガイド

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

ト レース イ ン ターフ ェ イスの概要

MicroBlaze の ト レース イ ン ターフ ェ イ スは、パフ ォーマン スの監視および解析のため、多数の内部ステー ト 信号をエ ク スポー ト し ます。ザイ リ ン ク スが開発し た解析コ アを介し てのみ、 この ト レース イ ン ターフ ェ イ ス を使用する こ と を推奨し ます。 今後の MicroBlaze リ リ ースでのこのイ ン ターフ ェ イ スには、 下位互換性がない可能性があ り ます。

エク スポー ト される信号の リ ス ト は、 表 3-14 を参照し て く ださい。

5 パフ ォーマン ス監視開始

パフ ォーマン ス監視停止の場合はそれを開始

6 プロ フ ァ イ リ ングのデ ィ スエーブル

プロ フ ァ イ リ ング中の場合はそれをデ ィ スエーブル

7 プロ フ ァ イ リ ングのイネーブル

プロ フ ァ イ リ ングがデ ィ スエーブルの場合はそれを イネーブルにする

表 2‐62 : MicroBlaze ク ロス ト リ ガー イベン ト

番号 イベン ト 説明

0 MicroBlaze 停止 MicroBlaze が停止し ている と き イベン ト を生成。MB_Halted 出力が設定されて いる と、 同じ イベン ト になる。

1 実行再開 デバ ッ グ 停止 か ら プ ロ セ ッ サ が 実行 を 再開す る と き、 イ ベ ン ト を 生成。MB_Halted 出力がク リ アにな る と、 同じ イベン ト にな る。

2 プロ グ ラ ム ト レース停止

プロ グ ラ ム ト レース コ マン ド レジス タにコ マン ド を書き込むこ と によ り プロ グ ラ ム ト レースが停止する と き、 ト レース バッ フ ァーがいっぱいの と き、 また はク ロ ス ト リ ガー ア ク シ ョ ンによ り 、 イベン ト を生成

3 プロ グ ラ ム ト レース開始

プロ グ ラ ム ト レース コ マン ド レジス タにコ マン ド を書き込むこ と によ り プロ グ ラ ム ト レースが開始する と き、 ト レースポイ ン ト を通過する と き、 またはク ロ ス ト リ ガー ア ク シ ョ ンによ り 、 イベン ト を生成

4 パフ ォーマン ス監視停止

パフ ォーマン ス カ ウ ン ター コ マン ド レジス タにコ マン ド を書き込むこ と によ り パフ ォーマン ス監視が停止する と き、 またはク ロ ス ト リ ガー ア ク シ ョ ンによ り 、 イベン ト を生成

5 パフ ォーマン ス監視開始

パフ ォーマン ス カ ウ ン ター コ マン ド レジス タにコ マン ド を書き込むこ と によ り パフ ォーマン ス監視が開始する と き、 またはク ロ ス ト リ ガー ア ク シ ョ ンによ り 、 イベン ト を生成

6 プロ フ ァ イ リ ングのデ ィ スエーブル

プロ フ ァ イ リ ング制御レジス タにコ マン ド を書き込むこ と によ り プロ フ ァ イ リングがイ ネーブルになる と き、 またはク ロ ス ト リ ガー ア ク シ ョ ンによ り 、 イベ ン ト を生成

7 プロ フ ァ イ リ ングのイネーブル

プロ フ ァ イ リ ング制御レジス タにコ マン ド を書き込むこ と によ り プロ フ ァ イ リングがデ ィ スエーブルにな る と き、 またはク ロ ス ト リ ガー ア ク シ ョ ンによ り 、 イベン ト を生成

表 2‐61 : MicroBlaze ク ロス ト リ ガー アクシ ョ ン

番号 動作 説明

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド japan.xilinx.com 90UG984 (v2015.1) 2015 年 4 月 15 日UG984 (v2015.4) 2015 年 11 月 18 日

Page 91: MicroBlaze プロセッサ リファレンス ガイド …...M_ACE_IC M_ACE_DC M_AXI_DP DLMB UG984 (v2015.4) 2015 年 11 月 18 日 MicroBlaze プロセッサ リファレンス ガイド

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

フ ォール ト  ト レ ラ ンスMicroBlaze に含まれる フ ォール ト ト レ ラ ン ス機能は、 C_FAULT_TOLERANT を使用し て イネーブルにする こ と がで き、 内部ブロ ッ ク RAM にはエラー検出を提供し、 LMB ブロ ッ ク RAM ではエラー検出およびエラー訂正 (ECC) のサ ポー ト を提供し ます。 フ ォール ト ト レ ラ ン スがイ ネーブルになっている と、ブロ ッ ク RAM のソ フ ト エラーはすべて 検出され訂正されるため、 全体的なエラー発生率を著し く 下げる こ と ができ ます。

ブロ ッ ク RAM を保護するだけでな く 、通常は、FPGA のコ ンフ ィ ギュ レーシ ョ ン メ モ リ も保護する必要があ り ます。 この ト ピ ッ ク の詳細、 参考資料に関し ては、 『LogiCore IP Soft Error Mitigation Controller 製品ガイ ド』 (PG036) を参照 し て く ださい。

コ ン フ ィ ギュ レーシ ョ ン

MicroBlaze コ ン フ ィ ギュ レーシ ョ ンの使用

[General] ページにあ る MicroBlaze のコ ンフ ィ ギュ レーシ ョ ンのダイ ア ロ グ ボ ッ ク スで、 フ ォール ト ト レ ラ ン スはイ ネーブルにでき ます。

MicroBlaze でフ ォール ト ト レ ラ ン ス を イネーブルにし た後、 システムが生成される と、 接続されている LMB BRAM Interface Controller で ECC は自動的にイネーブルにな り ます。つま り 、 フ ォール ト ト レ ラ ン スおよび最小限の ECC サ ポー ト を有効にするのに、 ほかには何も設定する必要がない と い う こ と です。

すべての接続されている LMB BRAM Interface Controller のコ ンフ ィ ギ ュ レーシ ョ ン ダ イ ア ロ グ ボ ッ ク スで、 C_ECC をデ ィ スエーブルにし、 LMB ブロ ッ ク RAM を保護し ないま ま、 ECC サポー ト を手動で上書きする こ と は可能です (推奨されてはいません)。 こ の場合、 フ ォール ト ト レ ラ ン スはイネーブルなので、 内部 MicroBalze ブロ ッ ク RAM の 保護は有効のま まです。

LMB BRAM Interface Controller の使用

先ほど説明し た方法 と は別の方法で、 すべての接続されている LMB BRAM Interface Controller のコ ン フ ィ ギ ュ レー シ ョ ン ダ イ ア ロ グ ボ ッ ク スで、 ECC を イ ネーブルにする こ と も可能です。 こ の場合、 シス テムが生成される と き、 フ ォール ト ト レ ラ ン スは MicroBlaze で自動的に イ ネーブルにな り ます。 つま り 、 ECC サポー ト および MicroBlaze フ ォール ト ト レ ラ ン ス を有効にするのに、 ほかには何も設定する必要がない と い う こ と です。

ECC はすべてのコ ン ト ローラーでイネーブルまたはデ ィ スエーブルにする必要があ り 、 これは DRC でチェ ッ ク され ます。

MicroBlaze のコ ンフ ィ ギュ レーシ ョ ン ダ イ ア ロ グ ボ ッ ク スで、 C_FAULT_TOLERANT を明示的にデ ィ スエーブルに し て、MicroBlaze でフ ォール ト ト レ ラ ン ス サポー ト を手動で上書きする こ と は可能です。MicroBlaze でブロ ッ ク RAM が使用されていない限 り 、 これは推奨されません。 また、 訂正不可能な ECC エラーから のバス例外を処理する必要 はあ り ません。

機能

MicroBlaze のフ ォール ト ト レ ラ ン ス機能の概要を こ こに説明し ます。各機能の詳細は、次のセ ク シ ョ ンを参照し て く ださい。

• 命令キ ャ ッ シュ操作

• データ キ ャ ッ シュ操作

• UTLB 管理

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

• 命令バス例外

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド japan.xilinx.com 91UG984 (v2015.1) 2015 年 4 月 15 日UG984 (v2015.4) 2015 年 11 月 18 日

Page 92: MicroBlaze プロセッサ リファレンス ガイド …...M_ACE_IC M_ACE_DC M_AXI_DP DLMB UG984 (v2015.4) 2015 年 11 月 18 日 MicroBlaze プロセッサ リファレンス ガイド

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

• データ バス例外

• 例外の原因

MB BRAM Interface Controller v4.0 またはそれ以降のバージ ョ ンでは、 LMB ECC イ ンプ リ メ ンテーシ ョ ンを提供し ま す。パフ ォーマン スや リ ソース使用率などの詳細については、『LogiCORE IP LMB BRAM Interface Controller 製品ガイ ド』 (PG112) を参照し て く ださい。

命令およびデータ  キャ ッ シュ保護

命令およびデータ キ ャ ッ シュでブロ ッ ク RAM を保護するには、パ リ テ ィ が使用されます。パ リ テ ィ エラーが検出さ れる と、 対応する キ ャ ッ シュ ラ イ ンが無効化されます。 これによ り 、 外部 メ モ リ から正しい値がキ ャ ッ シュに リ ロー ド されます。 キ ャ ッ シュ ヒ ッ ト が発生する たびにパ リ テ ィ はチェ ッ ク されます。

これはラ イ ト スルーの場合のみ機能する ため、 フ ォール ト ト レ ラ ン スがイ ネーブルの と きは、 ラ イ ト バッ ク データ キ ャ ッ シュは使用でき ません。 これは DRC でチェ ッ ク されます。

キ ャ ッ シュのブロ ッ ク RAM に新しい値が書き込まれる と、 パ リ テ ィ も計算されて書き込まれます。 タ グ用に 1 パ リ テ ィ ビ ッ ト 、 命令キ ャ ッ シ ュ データ用に 1 パ リ テ ィ ビ ッ ト 、 データ キ ャ ッ シ ュ ラ イ ンの各ワー ド 用に 1 パ リ テ ィ ビ ッ ト が使用されます。

大抵の場合、 フ ォール ト ト レ ラ ン ス を有効にし て も、 スペア ビ ッ ト がパ リ テ ィ 用に使用でき る ため、 必要なキ ャ ッ シュ ブロ ッ ク RAM の数が増える こ と はあ り ません。 フ ォール ト ト レ ラ ン ス を有効にする場合、 リ ソース使用率の増 加、特にブロ ッ ク RAM の数などは、MicroBlaze のコ ンフ ィ ギュ レーシ ョ ン ダ イ ア ロ グ ボ ッ ク スで簡単に確認でき ま す。

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

MMU の統合変換ル ッ ク アサ イ ド バ ッ フ ァー (UTLB) でブ ロ ッ ク RAM を保護するには、 パ リ テ ィ が使用されます。 ア ド レ ス変換中にパ リ テ ィ エラーが検出される と、 TLB ミ ス例外が発生し、 ソ フ ト ウ ェ アはエン ト リ を リ ロー ド す る こ と にな り ます。

TLBHI および TLBLO レジス タ を使用し て新しい TLB エン ト リ を書き込む と、 パ リ テ ィ が計算されます。 各エン ト リ で 1 パ リ テ ィ ビ ッ ト が使用されます。

TLBHI および TLBLO レジス タ を使用し て UTLB エン ト リ を読み出す と き、 パ リ テ ィ もチェ ッ ク されます。 この場合 でパ リ テ ィ エラーが検出される と、 有効ビ ッ ト がク リ アになって、 エン ト リ は無効にな り ます。

フ ォール ト ト レ ラ ン ス を有効にし て も、 スペア ビ ッ ト がパ リ テ ィ に使用でき るため、 MMU のブロ ッ ク RAM サイ ズ が大き く なる こ と はあ り ません。

分岐先キャ ッ シュ保護

分岐先キ ャ ッ シュでブロ ッ ク RAM を保護するには、 パ リ テ ィ が使用されます。 分岐先ア ド レ ス を検索し ている と き にパ リ テ ィ エラーが検出される と、 ア ド レ スは無視され、 標準分岐にな り ます。

分岐先キ ャ ッ シュに新しいア ド レ スが書き込まれる と、パ リ テ ィ が計算されます。各ア ド レ スに 1 パ リ テ ィ ビ ッ ト が 使用されます。

フ ォール ト ト レ ラ ン ス を有効に し て も、 スペア ビ ッ ト がパ リ テ ィ に使用で き る ため、 分岐キ ャ ッ シ ュ のブ ロ ッ ク RAM サイ ズが増える こ と はあ り ません。

例外処理

フ ォ ール ト ト レ ラ ン ス が有効にな っ ていて、 LMB ブ ロ ッ ク RAM でエ ラ ーが発生す る と、 LMB BRAM Interface Controller が LMB イ ン ターフ ェ イ スでエラー信号を生成し ます。

マシン ステータ ス レジス タで EE ビ ッ ト をセ ッ ト し て、MicroBlaze で例外を有効にする場合、影響を受ける イ ン ター フ ェ イ スによ り ますが、 訂正不可能なエラー信号は、 命令バス例外かデータ バス例外のどち らかを生成し ます。

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド japan.xilinx.com 92UG984 (v2015.1) 2015 年 4 月 15 日UG984 (v2015.4) 2015 年 11 月 18 日

Page 93: MicroBlaze プロセッサ リファレンス ガイド …...M_ACE_IC M_ACE_DC M_AXI_DP DLMB UG984 (v2015.4) 2015 年 11 月 18 日 MicroBlaze プロセッサ リファレンス ガイド

第 2 章 : 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);if (Status != XST_SUCCESS) {return XST_FAILURE;

}

/* * Connect the timer counter to the interrupt subsystem such that * interrupts can occur. */Status = XIntc_Initialize(&InterruptController, INTC_DEVICE_ID);if (Status != XST_SUCCESS) {return XST_FAILURE;

}

/* * Connect a device driver handler that will be called when an * interrupt for the device occurs, the device driver handler performs

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド japan.xilinx.com 93UG984 (v2015.1) 2015 年 4 月 15 日UG984 (v2015.4) 2015 年 11 月 18 日

Page 94: MicroBlaze プロセッサ リファレンス ガイド …...M_ACE_IC M_ACE_DC M_AXI_DP DLMB UG984 (v2015.4) 2015 年 11 月 18 日 MicroBlaze プロセッサ リファレンス ガイド

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

* the specific interrupt processing for the device */Status = XIntc_Connect(&InterruptController, TMRCTR_DEVICE_ID,

(XInterruptHandler)XTmrCtr_InterruptHandler,(void *) &TimerCounterInst);

if (Status != XST_SUCCESS) {return XST_FAILURE;

}

/* * Start the interrupt controller such that interrupts are enabled for * all devices that cause interrupts, specifying real mode so that the * timer counter can cause interrupts thru the interrupt controller. */Status = XIntc_Start(&InterruptController, XIN_REAL_MODE);if (Status != XST_SUCCESS) {return XST_FAILURE;

}

/* * Setup the handler for the timer counter that will be called from the * interrupt context when the timer expires, specify a pointer to the * timer counter driver instance as the callback reference so the * handler is able to access the instance data */XTmrCtr_SetHandler(&TimerCounterInst, MicroBlazeScrubHandler,

&TimerCounterInst);

/* * Enable the interrupt of the timer counter so interrupts will occur * and use auto reload mode such that the timer counter will reload * itself automatically and continue repeatedly, without this option * it would expire once only */XTmrCtr_SetOptions(&TimerCounterInst, TIMER_CNTR_0,

XTC_INT_MODE_OPTION | XTC_AUTO_RELOAD_OPTION);

/* * Set a reset value for the timer counter such that it will expire * earlier than letting it roll over from 0, the reset value is loaded * into the timer counter when it is started */XTmrCtr_SetResetValue(TmrCtrInstancePtr,TmrCtrNumber,SCRUB_PERIOD);

/* * Start the timer counter such that it's incrementing by default, * then wait for it to timeout a number of times */XTmrCtr_Start(&TimerCounterInst, TIMER_CNTR_0);

...}

ス ク ラブ レー ト の計算方法など、 ス ク ラブのイ ンプ リ メ ン ト 方法の詳細については、 「ス ク ラ ビング」 を参照し て く ださい。

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド japan.xilinx.com 94UG984 (v2015.1) 2015 年 4 月 15 日UG984 (v2015.4) 2015 年 11 月 18 日

Page 95: MicroBlaze プロセッサ リファレンス ガイド …...M_ACE_IC M_ACE_DC M_AXI_DP DLMB UG984 (v2015.4) 2015 年 11 月 18 日 MicroBlaze プロセッサ リファレンス ガイド

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

ブロ ッ ク  RAM ド ラ イバー

ス タ ン ド ア ロ ンの BSP ブロ ッ ク RAM ド ラ イバーは、LMB BRAM Interface Controller の ECC レジス タにア ク セスする ために使用され、 また包括的なセルフ テス ト も提供し ます。

SDK ザイ リ ン ク ス C プロ ジェ ク ト の 「ペ リ フ ェ ラル テス ト 」 を イ ンプ リ メ ン ト する と、 システムの 各 LMB BRAM Interface Controller のブ ロ ッ ク RAM セル フ テ ス ト を含むセル フ テ ス ト 例が生成 さ れ ま す。 LMB BRAM Interface Controller でどの ECC 機能が有効になっているかによ り ますが、 このコード は、 ECC 機能のすべてのテス ト を実行し ます。

セル フ テ ス ト 例は、 ス タ ン ド ア ロ ン BSP ブ ロ ッ ク RAM ド ラ イ バーの ソ ー ス コ ー ド に あ り 、 通常は、 microblaze_0/libsrc/bram_v3_03_a/src/xbram_selftest.c と い う サブデ ィ レ ク ト リ にあ り ます。

スク ラ ビング

スク ラ ビング方法

ス ク ラ ビングは、 ブロ ッ ク RAM のタ イプご と に特化し た方法で行われます。

• 命令およびデータ キ ャ ッ シュ : キ ャ ッ シュのすべてのラ イ ンは、 WIC および WDC 命令をそれぞれ使用し て、 周 期的に無効化されます。 これによ り 、 外部 メ モ リ から キ ャ ッ シュ ラ イ ンがキ ャ ッ シュに リ ロード されます。

• メ モ リ 管理ユニ ッ ト (MMU) 保護 : UTLB のすべてのエン ト リ は、 有効ビ ッ ト を ク リ アにし て、 TLBHI レジス タ を書き込むこ と によ り 、 周期的に無効化されます。

• 分岐先キ ャ ッ シュ (BTC) : BTC 全体が、 分岐 BRI4 を同期化する こ と によ り 、 無効化されます。

• LMB ブロ ッ ク RAM : メ モ リ のすべてのア ド レ スが周期的に読み出しおよび書き込まれ、 各ア ド レ スの任意の 1 ビ ッ ト エラーが訂正されます。

LMB BRAM Interface Controller からの訂正可能なエラー用に割 り 込みを追加し て、 割 り 込みハン ド ラーのこのア ド レ ス をすぐにス ク ラブする こ と も可能ですが、 大抵の場合は、 信頼性を若干向上させる程度です。

それぞれの LMB BRAM Interface Controller で訂正可能エラー フ ァース ト フ ェー リ ング ア ド レ ス レジス タ を読み出し て、 エラーが発生し ている ア ド レ ス を検出でき ます。 割 り 込みを生成でき る よ う にするには、 接続されている LMB BRAM Interface Controller で C_ECC_STATUS_REGISTERS を 1 に設定し、 また、 エラーの発生し ている ア ド レ ス を 読み出すには、 C_CE_FAILING_REGISTERS を 1 に設定する必要があ り ます。

スク ラ ブ レー ト の計算

ス ク ラブ レー ト は、 エラー発生率および求める信頼性の度合いに左右されます。

LMB メ モ リ のス ク ラブ レー ト を概算する ための式は、 次のよ う にし て求められます。

PW は 1 メ モ リ ワード での訂正可能なエラーの発生確率で、BER は 1 メ モ リ ビ ッ ト のソ フ ト エラー レー ト 、SR はス ク ラブ レー ト です。

各製品フ ァ ミ リ のブロ ッ ク RAM に影響する ソ フ ト エラー レー ト については、『デバイ ス信頼性レポー ト 』 (UG116) を 参照し て く ださい。

使用例

一般的 な使用例 を い く つか こ こ で説明 し ま す。 こ れ ら の使用例は、 『LogiCore IP Processor LMB BRAM Interface Controller 製品ガイ ド』 (PG112) からの抜粋です。

PW 7602BER

SR2‐‐‐‐‐‐‐‐‐‐‐‐

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド japan.xilinx.com 95UG984 (v2015.1) 2015 年 4 月 15 日UG984 (v2015.4) 2015 年 11 月 18 日

Page 96: MicroBlaze プロセッサ リファレンス ガイド …...M_ACE_IC M_ACE_DC M_AXI_DP DLMB UG984 (v2015.4) 2015 年 11 月 18 日 MicroBlaze プロセッサ リファレンス ガイド

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

最小限

MicroBlaze でフ ォール ト ト レ ラ ン ス を イ ネーブルにし ていて、 ほかのコ ン フ ィ ギ ュ レーシ ョ ンを実行し ていない場 合、 このシステムにな り ます。

エ リ ア制約が厳し く 、 ECC 機能のテス ト やエラー頻度やロ ケーシ ョ ンの解析をする必要がない場合に適し ています。 ECC レジス タはイ ンプ リ メ ン ト されません。 1 ビ ッ ト エラーは、 MicroBlaze に渡される前に、 ECC ロ ジ ッ ク によ っ て訂正されます。 訂正不可能なエラーは、 MicroBlaze で例外を生成するエラー信号をセ ッ ト し ます。

小型

エラーウ ィ ン ド を監視する必要があ るけれど、ECC 機能のテス ト をする必要がない場合に、 このシステムを使用し て く ださい。 これは、 最小限のシステムに、 1 ビ ッ ト エラー レー ト を監視するための訂正可能エラー カ ウ ン ター レジ ス タが追加された も のです。 エラー レー ト が高すぎ る場合は、 ス ク ラブ レー ト を増やし、 1 ビ ッ ト エラーが訂正不 可能な 2 ビ ッ ト エ ラ ーにな る リ ス ク を最低限に抑え る よ う に し て く だ さ い。 パ ラ メ ーターは、 C_ECC = 1 および C_CE_COUNTER_WIDTH = 10 に設定し ます。

標準

このシステムは標準的な使用例を表し ています。 エラー頻度を監視する必要があ るだけでな く 、 ソ フ ト ウ ェアを介して 1 ビ ッ ト エラーをすぐに訂正する ための割 り 込みを生成し ます。 ECC 機能のテス ト サポー ト はあ り ません。 これ は、 小型システムに、 訂正可能なエラー フ ァース ト フ ェー リ ング レジス タおよびステータ ス レジス タが追加された ものです。 1 ビ ッ ト エラーが発生する と、 訂正可能なエラー フ ァース ト フ ェー リ ング レジス タへア ク セスするため のア ド レ スが ラ ッ チされ、 ECC ス テータ ス レジス タで CE_STATUS ビ ッ ト をセ ッ ト し ます。 割 り 込みが生成される と、 MicroBlaze がエラーの発生し ている ア ド レ ス を読み出し てから、 そのア ド レ スでまず読み出し を実行し て、 それ に続いて書き込みを実行し ます。 これで、 ブロ ッ ク RAM から 1 ビ ッ ト エラーが削除され、 1 ビ ッ ト エラーが訂正不 可能な 2 ビ ッ ト エ ラーにな る リ ス ク を軽減し ます。 パラ メ ーターは、 C_ECC = 1、 C_CE_COUNTER_WIDTH = 10、 C_ECC_STATUS_REGISTER = 1、 および C_CE_FAILING_REGISTERS = 1 に設定し ます。

フル

このシステムは、 LMB BRAM Interface Controller で提供される機能をすべて使用し、 フル エラー挿入機能だけでなく 、 エラー監視や割 り 込み生成も イネーブルにし ます。 これは、 標準システムに、 訂正可能なエラー フ ァース ト フ ェー リ ング レジス タおよびフ ォール ト 挿入レジス タが追加された ものです。 システム デバッ グまたは高いフ ォール ト ト レ ラ ン ス要件のないシステムの ECC 機能のフル コ ン ト ロール用の機能がすべてオンになっています。 パラメ ーターは、 C_ECC = 1、 C_CE_COUNTER_WIDTH = 10、 C_ECC_STATUS_REGISTER = 1 および C_CE_FAILING_REGISTERS = 1、 C_UE_FAILING_REGISTERS = 1 および C_FAULT_INJECT = 1 に設定し ます。

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド japan.xilinx.com 96UG984 (v2015.1) 2015 年 4 月 15 日UG984 (v2015.4) 2015 年 11 月 18 日

Page 97: MicroBlaze プロセッサ リファレンス ガイド …...M_ACE_IC M_ACE_DC M_AXI_DP DLMB UG984 (v2015.4) 2015 年 11 月 18 日 MicroBlaze プロセッサ リファレンス ガイド

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

ロ ッ クステ ッ プ操作MicroBlaze はロ ッ ク ステ ッ プ コ ンフ ィ ギュ レーシ ョ ンで動作可能です。 こ のコ ンフ ィ ギュ レーシ ョ ンでは、複数の同 じ MicroBlaze コ アが同じプ ロ グ ラ ム を実行し ます。 コ アの出力を比較し て、 不正ア ク セス、 過渡エ ラー、 恒久的な ハード ウ ェア エラーと いった問題を検出し ます。

システム コ ン フ ィ ギュ レーシ ョ ン

マ ス タ ー コ ア (プ ラ イ マ リ コ ア) を 除 き、 シ ス テ ム の ス レ ーブ MicroBlaze コ ア すべ て で、 パ ラ メ ー タ ー C_LOCKSTEP_SLAVE は 1 に設定されます。 マス ター コ アはその出力信号のすべてを駆動し、 デバッ グ機能を処理 し ま す。 マ ス タ ーの ポー ト Lockstep_Master_Out は、 デバ ッ グ を 処理す る た め、 ス レ ーブ の ポー ト Lockstep_Slave_In に接続されています。

ス レーブ コ アは出力信号を駆動せず、 入力信号を受信するだけです。 こ のためには、 必ずス レーブの入力ポー ト に信 号を接続し て く ださい。 バスの場合は、 個々の入力ポー ト を明示的に接続し てお く 必要があ り ます。

マス ターおよびス レーブ コ アのポー ト Lockstep_Out は比較のための出力信号をすべて提供し ます。 エ ラーが発 生し ない限 り 、 各コ アからの個々の信号はどのク ロ ッ ク サイ クルでも同じです。

ロ ッ ク ステ ッ プ操作を正し く 機能させるには、 コ アへのすべての入力信号は同期し ている必要があ り ます。 外部同期が必要な入力信号は、 Interrupt、 Reset、 Ext_Brk、 および Ext_Nm_Brk です。

使用例

一般的な使用例を 2 つ、 こ こ で説明し ます。 また、 ロ ッ ク ステ ッ プ操作は、 MicroBlaze コ ア レベルで 3 重モジュール 式冗長を イ ンプ リ メ ン ト するためのベース を提供し ます。

不正アクセス保護

このアプ リ ケーシ ョ ンは、 不正ア ク セスに対する保護機能がついたシステムが必要な使用例です。 一般的な例は暗号アプ リ ケーシ ョ ンです。

このアプローチでは、2 つの冗長 MicroBlaze プロセ ッ サを使用し、専用ローカル メ モ リ および冗長コ ンパレータ をそ れぞれ保護エ リ アに配置し ます。 各プロセ ッ サからの出力は、 2 つのコ ンパレータに入力され、 それぞれのプロセ ッ サがすべての入力信号のコ ピーを受信し ます。

冗長 MicroBlaze プロセ ッ サは機能的に同じですが、 互いに完全に独立し ていて、 2 つを接続し ている信号はあ り ませ ん。唯一の例外はデバッ グ ロ ジ ッ ク と関連信号ですが、デバッ グは製品化やシステム認証の前にデ ィ スエーブルにな る ものだからです。

マス ターの MicroBlaze コ アからの出力はシステムのペ リ フ ェ ラルを駆動し ます。保護エ リ アを離れるデータはすべて イ ン ヒ ビ ターを通過し ます。 各イ ン ヒ ビ ターは関連付け られている コ ンパレータから制御されます。

デザイ ンの各保護エ リ アは、 階層 SCC (Single Chip Cryptography) フ ローを使用し て、 それぞれのパーテ ィ シ ョ ン内に イ ンプ リ メ ン ト する必要があ り ます。 こ のフ ローの詳細、 参考資料に関 し ては、 『階層デザ イ ン設計手法ガ イ ド』(UG748) を参照し て く ださい。

図 2-41 に、 システムのブロ ッ ク図を示し ます。

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド japan.xilinx.com 97UG984 (v2015.1) 2015 年 4 月 15 日UG984 (v2015.4) 2015 年 11 月 18 日

Page 98: MicroBlaze プロセッサ リファレンス ガイド …...M_ACE_IC M_ACE_DC M_AXI_DP DLMB UG984 (v2015.4) 2015 年 11 月 18 日 MicroBlaze プロセッサ リファレンス ガイド

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

エラー検出

エラー検出の使用例では、 過渡エラーおよび恒久的エラーをすべて検出する必要があ り ます。 システムを使用可能な状態に保つために冗長機能が利用される よ う なフ ェールセーフおよびフ ォール ト ト レ ン ラ ン ト アプ リ ケーシ ョ ンで は、 これは重要な こ と です。

このシステムでは、 2 つの冗長 MicroBlaze プロセ ッ サがロ ッ ク ステ ッ プで実行されます。 2 つのプロセ ッ サの出力に 不一致が検出された と きエラーを出力するため、 コ ンパレータが使用されます。 どんなエラーが発生し て も両方のプロセ ッ サがすぐに停止し、 それ以上エラーが広がら ないよ う にし ます。

デバッ グ ロ ジ ッ ク と関連信号を除いて、 冗長 MicroBlaze プロセ ッ サは機能的に同じです。 マス ターの MicroBlaze コ アの出力はシステムのペ リ フ ェ ラルを駆動し ます。 ス レーブの MicroBlaze コ アには入力が接続されているだけで、出 力はすべてオープンのま まです。

システムには、完全なフ ォール ト ト ラ レ ン ト のアプ リ ケーシ ョ ンを設計する ための基本ブロ ッ クが含まれていて、冗 長性を持たせるには、 1 つまたは複数の追加ブロ ッ ク を追加する必要があ り ます。

図 2-42 に、 こ の使用例を示し ます。

図 2‐41 : ロ ッ クステ ッ プ不正アクセス保護アプ リ ケーシ ョ ン

デバッ グ イ ン ターフ ェ イス - 製品化のと きに削除

MicroBlaze パーテ ィ シ ョ ン

BRAM

MicroBlazeデバッ グ モジュール

MicroBlaze パーテ ィ シ ョ ン

MicroBlaze

ス レーブ

デバッグ

C_LOCKSTEP_SLAVE = 1

コ ンパレー タ

コンパレータ

イン

ヒビ

ター

MicroBlaze

マス タ ー

デバッグ

C_LOCKSTEP_SLAVE = 0

BRAM

コ ンパレー タ

コンパレータ

Lockstep_Master_Out

Lockstep_Slave_In

Lockstep_Out

Lockstep_Out

入力

出力

イン

ヒビ

ター

入力BRAM コン ト ローラー

DLMB

BRAM コン ト ローラー

ILMB

BRAM コン ト ローラー

DLMB

BRAM コン ト ローラー

ILMB

I/O イ ン タ ーフ ェ イ ス

外部 メ モ リ

イ ン タ ーフ ェ イ ス

ペ リ フ ェ ラル

パーテ ィ シ ョ ン

パーテ ィ シ ョ ン

パーテ ィ シ ョ ン

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド japan.xilinx.com 98UG984 (v2015.1) 2015 年 4 月 15 日UG984 (v2015.4) 2015 年 11 月 18 日

Page 99: MicroBlaze プロセッサ リファレンス ガイド …...M_ACE_IC M_ACE_DC M_AXI_DP DLMB UG984 (v2015.4) 2015 年 11 月 18 日 MicroBlaze プロセッサ リファレンス ガイド

第 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 ま た は WDC.EXT.FLUSH) を使用し てデータ キ ャ ッ シ ュ ラ イ ンを無効化にする と、 ハー ド ウ ェ ア メ ッ セージが表示さ れ、 コ ヒ ーレ ンシ ド メ イ ンのその他すべてのコ アが同じ こ と を実行し ます。 物理ア ド レ スが常に使用されます。

• 命令キ ャ ッ シュ無効化 : コ ヒ ーレ ンシ ド メ イ ンの MicroBlaze コ アが命令キ ャ ッ シュ ラ イ ンを無効化にする と、 ハード ウ ェ ア メ ッ セージ

図 2‐42 : ロ ッ クステ ッ プ エラー検出アプ リ ケーシ ョ ン

BRAM コン ト ローラー

BRAM コン ト ローラー

ILMB

DLMB

BRAM

MicroBlazeデバッ グ モジ ュール

MicroBlaze

ス レーブ

デバッ グ

C_LOCKSTEP_SLAVE = 1

MicroBlaze

マス タ ー

デバッグ

C_LOCKSTEP_SLAVE = 0 エ ラー リ セ ッ ト

コンパレータ

Lockstep_Out

Lockstep_Out

出力

入力

入力

I/O イ ン タ ーフ ェ イ ス

外部 メ モ リイ ン タ ー フ ェ イ ス

入力

入力

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド japan.xilinx.com 99UG984 (v2015.1) 2015 年 4 月 15 日UG984 (v2015.4) 2015 年 11 月 18 日

Page 100: MicroBlaze プロセッサ リファレンス ガイド …...M_ACE_IC M_ACE_DC M_AXI_DP DLMB UG984 (v2015.4) 2015 年 11 月 18 日 MicroBlaze プロセッサ リファレンス ガイド

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

が表示され、 コ ヒ ーレンシ ド メ イ ンのその他すべてのコ アが同じ こ と を実行し ます。 MMU が仮想モード の場合 は、 仮想ア ド レ スが使用され、 そ う でない場合は物理ア ド レ スが使用されます。

• MMU TLB 無効化 : コ ヒ ーレ ンシ ド メ イ ンの MicroBlaze コ アが UTLB のエン ト リ を無効化する と (0 の有効フ ラ グで TLBHI を書き 込むなど)、 ハード ウ ェ ア メ ッ セージが表示され、 コ ヒ ーレ ンシ ド メ イ ンのその他すべてのコ アが、 それぞれの コ アの UTLB のエン ト リ で無効化された仮想ア ド レ スに一致する タブを持つものを無効化し、またそのシャ ド ウ TLB を空にし ます。

エン ト リ を一致させる と き TID は考慮されないので、ほかのプロセスに属すエン ト リ を無効化し て し ま う 可能性 があ り ます。 こ う し たエン ト リ に後でア ク セスする と、 ソ フ ト ウ ェ アで処理する必要のあ る TLB ミ ス例外が生 成されます。

MMU ページを無効化する前に、 まず、 コ ヒ ーレ ンシ ド メ イ ン内でハード ウ ェア無効化が伝搬されている こ と を 確認するため、 UTLB にそのページを ロードする必要があ り ます。 コ ヒ ーレ ンシ ド メ イ ンのほかのプロセ ッ サの TLB にこ のエン ト リ が格納されている可能性があ るので、 メ モ リ のページを無効化にするだけでは不十分です。

MicroBlaze コ アが 1 つ以上のエン ト リ を無効化にし た ら、 すべてのピア プロセ ッ サがそれぞれの TLB 無効化を 完了し た こ と を確認するため、 メ モ リ バ リ ア命令 (MBAR) を実行する必要があ り ます。

• 分岐先キ ャ ッ シュ無効化 : コ ヒ ーレ ンシ ド メ イ ンの MicroBlaze コ アが、 メ モ リ バ リ ア命令または同期分岐を使用し て、 分岐先キ ャ ッ シュ を無効化にする と、 ハード ウ ェ ア メ ッ セージが表示され、 コ ヒ ーレ ンシ ド メ イ ンのその他すべてのコ アが同じ こ と を実行し ます。

特に、 これは、 「自己変更コード」 にあ るガイ ド ラ イ ンに沿っていれば、 マルチプロセ ッサ システムのコ ヒ ーレンシ ド メ イ ン内で自己変更コード を透過的に使用でき る と い う こ と です。

プロ ト コル準拠

MicroBlaze の命令キ ャ ッ シュ イ ン ターフ ェ イ スは、 ACE ト ラ ンザク シ ョ ンの次のサブセ ッ ト を出力し ます。

• ReadCleanキ ャ ッ シュ ラ イ ンが割 り 当て られる と出力される

• ReadOnceキ ャ ッ シュがオフの と き、 または MMU の抑止キ ャ ッ シ イ ング ビ ッ ト がキ ャ ッ シ ュ ラ イ ンに対し てセ ッ ト され る と、 出力される

MicroBlaze のデータ キ ャ ッ シュ イ ン ターフ ェ イ スは、 ACE ト ラ ンザク シ ョ ンの次のサブセ ッ ト を出力し ます。

• ReadCleanキ ャ ッ シュ ラ イ ンが割 り 当て られる と出力される

• CleanUnique排他的ア ク セス シーケン スの一部と し て SWX 命令が実行される と出力される

• ReadOnceキ ャ ッ シュがオフの と き、 または MMU の抑止キ ャ ッ シ イ ング ビ ッ ト がキ ャ ッ シ ュ ラ イ ンに対し てセ ッ ト され る と、 出力される

• WriteUniqueス ト ア命令が書き込みを実行するたびに出力される

• CleanInvalidWDC.EXT.FLUSH 命令が実行される と出力される

• MakeInvalidWDC.EXT.CLEAR 命令が実行される と出力される

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド japan.xilinx.com 100UG984 (v2015.1) 2015 年 4 月 15 日UG984 (v2015.4) 2015 年 11 月 18 日

Page 101: MicroBlaze プロセッサ リファレンス ガイド …...M_ACE_IC M_ACE_DC M_AXI_DP DLMB UG984 (v2015.4) 2015 年 11 月 18 日 MicroBlaze プロセッサ リファレンス ガイド

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

両方のイ ン ターフ ェ イ スが、 分散仮想 メ モ リ (DVM) ト ラ ンザク シ ョ ンの次のサブセ ッ ト を出力し ます。

• DVM 操作

¨ TLB 無効化 : VA によ る ハイパーバイザー TLB 無効化

¨ 分岐予測無効化 : 分岐予測すべて無効化

¨ 物理命令キ ャ ッ シュ無効化 : PA によ る非セキ ュ アな物理命令キ ャ ッ シ ュ無効化 (仮想イ ンデッ ク スな し )

¨ 仮想命令キ ャ ッ シュ無効化 : VA によ るハイパーバイザー無効化

• DVM 同期

¨ 同期化

• DVM 完了

¨ 上記の DVM ト ラ ンザク シ ョ ンに加え、 イ ン ターフ ェ イ スは、 CleanInvalid および MakeInvalid ト ラ ンザク シ ョ ンのみを受け付けます。 こ れら の ト ラ ンザ ク シ ョ ンは命令キ ャ ッ シ ュ では効力がな く 、 示さ れているデータ キ ャ ッ シ ュ ラ イ ンを無効化し ます。 ほかの ト ラ ンザク シ ョ ンが受信される と、 動作は未定義にな り ます。

¨ 「キ ャ ッ シュ イ ン ターフ ェ イ ス」 で説明されている よ う に、AXI4 ト ラ ンザク シ ョ ンのサブセ ッ ト のみがイ ン ターフ ェ イ スで使用されます。

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド japan.xilinx.com 101UG984 (v2015.1) 2015 年 4 月 15 日UG984 (v2015.4) 2015 年 11 月 18 日

Page 102: MicroBlaze プロセッサ リファレンス ガイド …...M_ACE_IC M_ACE_DC M_AXI_DP DLMB UG984 (v2015.4) 2015 年 11 月 18 日 MicroBlaze プロセッサ リファレンス ガイド

第 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 プロセ ッサ リ フ ァ レンス ガイ ド japan.xilinx.com 102UG984 (v2015.1) 2015 年 4 月 15 日UG984 (v2015.4) 2015 年 11 月 18 日

Page 103: MicroBlaze プロセッサ リファレンス ガイド …...M_ACE_IC M_ACE_DC M_AXI_DP DLMB UG984 (v2015.4) 2015 年 11 月 18 日 MicroBlaze プロセッサ リファレンス ガイド

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

MicroBlaze の I/O 概要図 3-1 および次の表 3-1 で、 コ ア イ ン ターフ ェ イ スは次のよ う に定義されています。

M_AXI_DP : ペ リ フ ェ ラル データ イ ン ターフ ェ イ ス、 AXI4-Lite または AXI4 イ ン ターフ ェ イ ス

DLMB : データ イ ン ターフ ェ イ ス、 ローカル メ モ リ バス ( ブロ ッ ク RAM のみ )M_AXI_IP : ペ リ フ ェ ラル命令イ ン ターフ ェ イ ス、 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 キ

ャッ

シュ

シフ ト

バレル シフ ト

乗算器

分周器

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 プロセ ッサ リ フ ァ レンス ガイ ド japan.xilinx.com 103UG984 (v2015.1) 2015 年 4 月 15 日UG984 (v2015.4) 2015 年 11 月 18 日

Page 104: MicroBlaze プロセッサ リファレンス ガイド …...M_ACE_IC M_ACE_DC M_AXI_DP DLMB UG984 (v2015.4) 2015 年 11 月 18 日 MicroBlaze プロセッサ リファレンス ガイド

第 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 プロセ ッサ リ フ ァ レンス ガイ ド japan.xilinx.com 104UG984 (v2015.1) 2015 年 4 月 15 日UG984 (v2015.4) 2015 年 11 月 18 日

Page 105: MicroBlaze プロセッサ リファレンス ガイド …...M_ACE_IC M_ACE_DC M_AXI_DP DLMB UG984 (v2015.4) 2015 年 11 月 18 日 MicroBlaze プロセッサ リファレンス ガイド

第 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 プロセ ッサ リ フ ァ レンス ガイ ド japan.xilinx.com 105UG984 (v2015.1) 2015 年 4 月 15 日UG984 (v2015.4) 2015 年 11 月 18 日

Page 106: MicroBlaze プロセッサ リファレンス ガイド …...M_ACE_IC M_ACE_DC M_AXI_DP DLMB UG984 (v2015.4) 2015 年 11 月 18 日 MicroBlaze プロセッサ リファレンス ガイド

第 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 プロセ ッサ リ フ ァ レンス ガイ ド japan.xilinx.com 106UG984 (v2015.1) 2015 年 4 月 15 日UG984 (v2015.4) 2015 年 11 月 18 日

Page 107: MicroBlaze プロセッサ リファレンス ガイド …...M_ACE_IC M_ACE_DC M_AXI_DP DLMB UG984 (v2015.4) 2015 年 11 月 18 日 MicroBlaze プロセッサ リファレンス ガイド

第 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 プロセ ッサ リ フ ァ レンス ガイ ド japan.xilinx.com 107UG984 (v2015.1) 2015 年 4 月 15 日UG984 (v2015.4) 2015 年 11 月 18 日

Page 108: MicroBlaze プロセッサ リファレンス ガイド …...M_ACE_IC M_ACE_DC M_AXI_DP DLMB UG984 (v2015.4) 2015 年 11 月 18 日 MicroBlaze プロセッサ リファレンス ガイド

第 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 プロセ ッサ リ フ ァ レンス ガイ ド japan.xilinx.com 108UG984 (v2015.1) 2015 年 4 月 15 日UG984 (v2015.4) 2015 年 11 月 18 日

Page 109: MicroBlaze プロセッサ リファレンス ガイド …...M_ACE_IC M_ACE_DC M_AXI_DP DLMB UG984 (v2015.4) 2015 年 11 月 18 日 MicroBlaze プロセッサ リファレンス ガイド

第 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:31] DLMB O データ イ ン ターフ ェ イ ス LMB ア ド レ ス バス

Byte_Enable[0:3] DLMB O データ イ ン ターフ ェ イ ス LMB バイ ト イネーブル

Data_Write[0:31] DLMB O データ イ ン ターフ ェ イ ス LMB 書き込みデータ バス

D_AS DLMB O データ イ ン ターフ ェ イ ス LMB ア ド レ ス ス ト ローブ

Read_Strobe DLMB O データ イ ン ターフ ェ イ ス LMB 読み出し ス ト ローブ

Write_Strobe DLMB O データ イ ン ターフ ェ イ ス LMB 書き込みス ト ローブ

Data_Read[0:31] DLMB I データ イ ン ターフ ェ イ ス LMB 読み出しデータ バス

DReady DLMB I データ イ ン ターフ ェ イ ス LMB 読み出し準備完了

DWait DLMB I データ イ ン ターフ ェ イ ス LMB データ待機

DCE DLMB I データ イ ン ターフ ェ イ ス LMB 訂正可能エラー

DUE DLMB I データ イ ン ターフ ェ イ ス LMB 訂正不可能エラー

Instr_Addr[0:31] ILMB O 命令イ ン ターフ ェ イ ス LMB ア ド レ ス バス

表 3‐1 : MicroBlaze コア I/O のま とめ (続き)

信号イ ン ターフ ェ

イスI/O 説明

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド japan.xilinx.com 109UG984 (v2015.1) 2015 年 4 月 15 日UG984 (v2015.4) 2015 年 11 月 18 日

Page 110: MicroBlaze プロセッサ リファレンス ガイド …...M_ACE_IC M_ACE_DC M_AXI_DP DLMB UG984 (v2015.4) 2015 年 11 月 18 日 MicroBlaze プロセッサ リファレンス ガイド

第 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 割 り 込み

Interrupt_Address1 コ ア I 割 り 込みベク ター ア ド レ ス

Interrupt_Ack1 コ ア O 割 り 込み肯定応答

Reset コ ア I コ ア リ セ ッ ト 、 ア ク テ ィ ブ High。 最低 1 Clk ク ロ ッ ク サイ ク ル間保持する必要があ る。

Reset_Mode[0:1] コ ア I リ セ ッ ト モード。 リ セ ッ ト がア ク テ ィ ブの と きにサンプル。 詳細は、 表 3-2 を参照。

Clk コ ア I ク ロ ッ ク 2

Ext_BRK コ ア I MDM からのブレーク信号

Ext_NM_BRK コ ア I MDM からのマス ク不可能なブレーク信号

MB_Halted コ ア O デバッ グ イ ン ターフ ェ イ ス を介し て、Dbg_Stop をセ ッ ト し て、 または Reset_Mode[0:1] を 10 に設定し て、パイプラ イ ンを停止

Dbg_Stop コ ア I で き る だけ早 く 無条件でパ イ プ ラ イ ン を停止。 立ち上が りエ ッ ジで検出さ れた信号を最低 1Clk ク ロ ッ ク サ イ ク ル間保 持する必要があ る。 信号は C_DEBUG_ENABLED が 0 よ り 大 きい場合にのみ効力があ る。

表 3‐1 : MicroBlaze コア I/O のま とめ (続き)

信号イ ン ターフ ェ

イスI/O 説明

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド japan.xilinx.com 110UG984 (v2015.1) 2015 年 4 月 15 日UG984 (v2015.4) 2015 年 11 月 18 日

Page 111: MicroBlaze プロセッサ リファレンス ガイド …...M_ACE_IC M_ACE_DC M_AXI_DP DLMB UG984 (v2015.4) 2015 年 11 月 18 日 MicroBlaze プロセッサ リファレンス ガイド

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

Dbg_Intr コ ア O デバ ッ グ割 り 込み出力で、 パフ ォーマン ス監視カ ウ ン ターがオーバーフ ローする と セ ッ ト され、 C_DEBUG_ENABLED が 2 ( 拡張) の と きに利用可能。

MB_Error コ ア O C_FAULT_TOLERANT が 1 の と き、 ミ ス し た例外が原因でパイ プラ イ ンが停止する。

Sleep コ ア O SLEEP 命令の実行後ま たは Reset_Mode[0:1] を 10 に設定し、 MicroBlaze はス リ ープ モー ド にな り 、 外部ア ク セスはすべて 完了し、 パイプラ イ ンは停止。

Wakeup[0:1] コ ア I どち らかのビ ッ ト または両方のビ ッ ト が 1 の と き、MicroBlaze がス リ ープ モード から復帰する。 MicroBlaze がス リ ープ モー ド でない と きは無視される。

Dbg_Wakeup コ ア O 外部ロ ジ ッ クがウ ェーク ア ッ プ信号を使用し て、MicroBlaze を ス リ ープ モード から復帰させるデバッ グ リ ク エス ト

Lockstep_... コ ア IO ハイ イ ンテグ リ テ ィ アプ リ ケーシ ョ ン用のロ ッ ク ステ ッ プ信 号。 詳細は、 表 3-11 を参照。

Dbg_... コ ア IO MDM からのデバッ グ信号。 詳細は、 表 3-13 を参照。

Trace_... コ ア O リ アル タ イ ム ハー ド ウ ェ ア解析の ト レース 信号。 詳細は、 表 3-14 を参照。

1. C_USE_INTERRUPT = 2 の場合のみ使用 (低レ イ テンシ割 り 込みサポー ト )

2. MicroBlaze は Clk 信号のク ロ ッ ク供給を受ける同期デザイ ンです (Dbg_Clk 信号のク ロ ッ ク供給を受けるハード ウ ェ ア デバッ グ ロ ジ ッ ク を除 く )。 ハード ウ ェア デバッ グ ロ ジ ッ ク が使用されていない場合は、 Clk に対し、 最 小周波数制限はあ り ません。 しかし、 ハード ウ ェ ア デバッ グ ロ ジ ッ ク が使用されている場合は、 2 つのク ロ ッ ク 領域の間を転送される信号があ り ます。こ の場合、Clk の周波数は Dbg_Clk のものよ り も高 く なければな り ません。

表 3‐2 : リ セ ッ ト  モー ド入力の効果

Reset_Mode[0:1] 説明

0 C_BASE_VECTORS で定義されている よ う に、 MicroBlaze は リ セ ッ ト ベク ターで実行開始。 標準デフ ォル ト 動作。

01 SLEEP 命令が実行されているかのよ う に、 MicroBlaze はバス ア ク セス を実行せずに、 すぐ にス リ ープ モー ド に入る。 SLEEP の出力は 1 にセ ッ ト される。 Wakeup[0:1] 信号のいずれ かがセ ッ ト さ れてい る と、 C_BASE_VECTORS で定義さ れてい る よ う に、 MicroBlaze は リ セ ッ ト ベク ターで実行開始。

この機能はマルチプロセ ッ サ コ ンフ ィ ギュ レーシ ョ ンで有用で、セカンダ リ プロセ ッ サを LMB メ モ リ な しでコ ンフ ィ ギュ レー ト 可能。

10 C_DEBUG_ENABLED が 0 の場合、 動作は Reset_Mode[0:1] = 00 の と き と同じになる。

C_DEBUG_ENABLED が 0 よ り 大きい場合、MicroBlaze はバス ア ク セス を実行せずにすぐに デバッ グ停止に入 り 、 MB_Halted 出力が 1 にセ ッ ト される。 デバッ グ イ ン ターフ ェ イ ス を 介し て実行を継続する と きは、C_BASE_VECTORS で定義されている よ う に、 MicroBlaze は リ セ ッ ト ベク ターで実行開始。

11 予約

表 3‐1 : MicroBlaze コア I/O のま とめ (続き)

信号イ ン ターフ ェ

イスI/O 説明

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド japan.xilinx.com 111UG984 (v2015.1) 2015 年 4 月 15 日UG984 (v2015.4) 2015 年 11 月 18 日

Page 112: MicroBlaze プロセッサ リファレンス ガイド …...M_ACE_IC M_ACE_DC M_AXI_DP DLMB UG984 (v2015.4) 2015 年 11 月 18 日 MicroBlaze プロセッサ リファレンス ガイド

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

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

メ モ リ マ ッ プ ドのイ ン ターフ ェ イス

ペ リ フ ェ ラル イ ン ターフ ェ イス

MicroBlaze の AXI4 メ モ リ マ ッ プ ド ペ リ フ ェ ラル イ ン ターフ ェ イ スは、 32 ビ ッ ト のマス ターと し て イ ンプ リ メ ン ト されます。 こ う し た イ ン ターフ ェ イ スでは、 1 度に 1 ト ラ ンザク シ ョ ンのみが処理され、 すべての ト ラ ンザク シ ョ ン が順番に完了し ます。

• 命令ペ リ フ ェ ラル イ ン ターフ ェ イ ス (M_AXI_IP) は、1 ワード の読み出し ア ク セスのみを実行し、常に AXI4-Lite サブセ ッ ト を使用する よ う に設定されています。

• データ ペ リ フ ェ ラル イ ン ターフ ェ イ ス (M_AXI_DP) は、1 ワード ア ク セス を実行し、デフ ォル ト で AXI4-Lite サ ブセ ッ ト を使用する よ う に設定されていますが、LWX および SWX 命令の排他的なア ク セス を イネーブルにする と きは AXI4 を使用する よ う に設定されます。 ハーフ ワードおよびバイ ト の書き込みは、 適切なバイ ト ス ト ロー ブをセ ッ ト し て行われます。

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

AXI4 メ モ リ マ ッ プ ド キ ャ ッ シ ュ イ ン ターフ ェ イ スは、 キ ャ ッ シュ ラ イ ンの長さおよびデータ幅のパラ メ ーターの 設定次第で、 32、 128、 256、 または 512 ビ ッ ト のマス ターと し て イ ンプ リ メ ン ト されますが、 AXI コ ヒ ーレンシ拡張 (ACE) イ ン ターフ ェ イ スは 32 ビ ッ ト マス ター と し て イ ンプ リ メ ン ト されます。

• 32 ビ ッ ト マス ターの場合、命令キ ャ ッ シュ イ ン ターフ ェ イ ス (M_AXI_IC または M_ACE_IC) は、 キ ャ ッ シュ ラ イ ンの長さ によ り ますが、 4、 8、 または 16 ワー ド のバース ト 読み出し ア ク セス を実行し ます。 128、 256、 また は 512 ビ ッ ト マス ターの場合は、 シングル読み出し ア ク セスのみが実行されます。

32 ビ ッ ト マス ターの場合、このイ ン ターフ ェ イ スでは 2 ト ラ ンザク シ ョ ンまで処理でき ます。ス ト リ ーム キ ャ ッ シュがイネーブルになっている場合は、 5 ト ラ ンザク シ ョ ン まで処理でき ます。 ス ト リ ーム キ ャ ッ シュは事前に 2 つのキ ャ ッ シュ ラ イ ンを リ ク エス ト でき ます。 つま り 、 場合によ っては 5 ト ラ ンザク シ ョ ン処理でき る と い う こ と です。 この場合、 読み出しの数は 2 のべき数でなければな ら ないため、 8 に設定されます。 128、 256、 また は 512 ビ ッ ト マス ターの場合は、 イ ン ターフ ェ イ スでは ト ラ ンザク シ ョ ンは 1 つしか処理されません。

ア ク セスする メ モ リ ロ ケーシ ョ ンの数は、 C_ICACHE_ALWAYS_USED と い う パラ メ ーターの設定で決ま り ま す。 このパラ メ ーターが 1 の場合は、キ ャ ッ シュ メ モ リ 範囲は常に、AXI4 または ACE キ ャ ッ シュ イ ン ターフ ェ イ ス を介し てア ク セス されます。 0 の場合は、 キ ャ ッ シ ュが ソ フ ト ウ ェ アでデ ィ スエーブルになっている と (す なわち MSR[ICE]=0)、 キ ャ ッ シ ュ メ モ リ 範囲は AXI4 ペ リ フ ェ ラル イ ン ターフ ェ イ ス を介し てア ク セス されま す。

• 32 ビ ッ ト マス ターの場合、 データ キ ャ ッ シュ イ ン ターフ ェ イ ス (M_AXI_DC または M_ACE_DC) は、 1 ワード ア ク セス を実行するか、 またはキ ャ ッ シ ュ ラ イ ンの長さ によ り ますが、 4、 8、 16 ワー ド のバース ト 読み出し ア ク セス を実行し ます。 AXI4 でラ イ ト バッ ク キ ャ ッ シ ュが使用される場合は、 バース ト 書き込みア ク セスのみが 実行されます。 128、 256、 または 512 ビ ッ ト の AXI4 マス ターの場合は、 シングル ア ク セスのみにな り ます。

このイ ン ターフ ェ イ スでは複数の ト ラ ンザク シ ョ ンを処理でき、 読み出しの場合は 2 ト ラ ンザク シ ョ ン まで、 書 き込みの場合は 32 ト ラ ンザク シ ョ ン まで処理でき ます。 MicroBlaze は順次 メ モ リ モデルを維持する必要があ る のですが、 AXI4 や ACE は、 順序に関係な く 、 読み出 し /書 き 込みのそれぞれに対 し てチ ャ ネルがあ る ため、 MicroBlaze は読み出しの前にすべての書き込みを完了させます。 MicroBlaze はパイプラ イ ンを ス ト ールさせずに 複数の書き込みを処理でき るので、 最高 32 個の書き込み ト ラ ンザク シ ョ ンを使用する こ と でパフ ォーマン ス を 改善でき ます。

ワード、 ハーフ ワード、 およびバイ ト の書き込みは、 適切なバイ ト ス ト ローブをセ ッ ト し て行われます。

LWX および SWX 命令に対し ては、 排他的ア ク セス を イネーブルにする こ と ができ ます。

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド japan.xilinx.com 112UG984 (v2015.1) 2015 年 4 月 15 日UG984 (v2015.4) 2015 年 11 月 18 日

Page 113: MicroBlaze プロセッサ リファレンス ガイド …...M_ACE_IC M_ACE_DC M_AXI_DP DLMB UG984 (v2015.4) 2015 年 11 月 18 日 MicroBlaze プロセッサ リファレンス ガイド

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

ア ク セスする メ モ リ ロ ケーシ ョ ンの数は、 C_DCACHE_ALWAYS_USED と い う パラ メ ーターの設定で決ま り ま す。 このパラ メ ーターが 1 の場合は、キ ャ ッ シュ メ モ リ 範囲は常に、AXI4 または ACE キ ャ ッ シュ イ ン ターフ ェ イ ス を介し てア ク セス されます。 0 の場合は、 キ ャ ッ シ ュが ソ フ ト ウ ェ アでデ ィ スエーブルになっている と (す なわち MSR[DCE]=0)、 キ ャ ッ シュ メ モ リ 範囲は AXI4 ペ リ フ ェ ラル イ ン ターフ ェ イ ス を介し てア ク セス されま す。

イ ン ターフ ェ イス パラ メ ーターおよび信号

パラ メ ーターがツールで割 り 当て られる場合の MicroBlaze のパラ メ ーター設定 と AXI4 イ ン ターフ ェ イ スの動作の 関係が、 表 3-3 にま と められています。

表 3‐3 : AXI メ モ リ  マ ッ プ ド  イ ン ターフ ェ イス パラ メ ーター

イ ン ターフ ェイス

パラ メ ーター 説明

M_AXI_DP C_M_AXI_DP_PROTOCOL AXI4-Lite : デフ ォル ト

AXI4 : C_M_AXI_DP_EXCLUSIVE_ACCESS が 1 の と き、 排他的 ア ク セス を可能にする ために使用

M_AXI_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 に設定され ている と きに使用シングル ア ク セスのみが発生。

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 に設定可能。

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド japan.xilinx.com 113UG984 (v2015.1) 2015 年 4 月 15 日UG984 (v2015.4) 2015 年 11 月 18 日

Page 114: MicroBlaze プロセッサ リファレンス ガイド …...M_ACE_IC M_ACE_DC M_AXI_DP DLMB UG984 (v2015.4) 2015 年 11 月 18 日 MicroBlaze プロセッサ リファレンス ガイド

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

ア ク セス権限、 メ モ リ タ イプ、 サービ ス品質 (QoS)、 共有ド メ イ ンの値は、 表 3-4 で定義されています。

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‐4 : AXI イ ン ターフ ェ イス信号定義

イ ン ターフ ェイス

信号 説明

M_AXI_IP C_M_AXI_IP_ARPROT ア ク セス権限 : • 権限な し、 セキ ュ ア命令ア ク セス (100)

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 プロ ト コル : • 権限な し、 セキ ュ ア データ ア ク セス (000)

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_ICM_ACE_IC

C_M_AXI_IC_ARPROT ア ク セス権限 : • 権限な し、 セキ ュ ア命令ア ク セス (100)

C_M_AXI_IC_ARQOS サービ ス品質 (QoS) : • 優先度 7 (0111)

M_AXI_DC C_M_AXI_DC_ARCACHE メ モ リ タ イプ、 標準ア ク セス : • ラ イ ト バッ クの読み出しおよび書き込み割 り 当て (1111)メ モ リ タ イプ、 排他的ア ク セス : • 標準ノ ンキ ャ ッ シャブル、 ノ ンバッ フ ァ ラブル (0010)

M_ACE_DC C_M_AXI_DC_ARCACHE メ モ リ タ イプ、 標準および排他的ア ク セス : • ラ イ ト バッ クの読み出しおよび書き込み割 り 当て (1111)メ モ リ タ イプ、 DVM ア ク セス : • 標準ノ ンキ ャ ッ シャブル、 ノ ンバッ フ ァ ラブル (0010)

C_M_AXI_DC_ARDOMAINC_M_AXI_DC_AWDOMAIN

共有ド メ イ ン : • 内部共有可能 (01)

表 3‐3 : AXI メ モ リ  マ ッ プ ド  イ ン ターフ ェ イス パラ メ ーター (続き)

イ ン ターフ ェイス

パラ メ ーター 説明

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド japan.xilinx.com 114UG984 (v2015.1) 2015 年 4 月 15 日UG984 (v2015.4) 2015 年 11 月 18 日

Page 115: MicroBlaze プロセッサ リファレンス ガイド …...M_ACE_IC M_ACE_DC M_AXI_DP DLMB UG984 (v2015.4) 2015 年 11 月 18 日 MicroBlaze プロセッサ リファレンス ガイド

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

詳細は、 『AMBA AXI and ACE Protocol Specification』 (ARM IHI 0022E) を参照し て く ださ い。

ス ト リーム イ ン ターフ ェ イス

MicroBlaze の AXI4-Stream イ ン ターフ ェ イ ス (M0_AXIS..M15_AXIS、 S0_AXIS..S15_AXIS) は 32 ビ ッ ト のマス ターお よびス レーブ と し て イ ンプ リ メ ン ト されます。詳細は、『AMBA 4 AXI4-Stream Protocol Specification, Version 1.0』 (ARM IHI 0051A) を参照し て く ださい。

書き込み

ス ト リ ーム イ ン ターフ ェ イ スへの書き込みは、 put または putd 命令の 1 つを使用し て、 MicroBlaze によ り 実行されま す。 書き込み操作によ り 、 出力 AXI4 イ ン ターフ ェ イ スへレジス タの内容が転送されます。 ブロ ッ キング モード の書 き込み (put および cput 命令) の場合は、 イ ン ターフ ェ イ スがビジーでなければ、転送は 1 ク ロ ッ ク サイ クルで完了し ます。 イ ン ターフ ェ イ スがビジーな ら、 イ ン ターフ ェ イ スが利用可能になる まで、 プロセ ッ サがス ト ールし ます。 ノンブロ ッ キング命令 (接頭辞 n) は、 イ ン ターフ ェ イ スがビジー状態でも、 常に 1 ク ロ ッ ク サイ クルで完了し ます。 イ ン ターフ ェ イ スがビジーな場合は、 書き込みは抑止され、 MSR でキ ャ リ ー ビ ッ ト がセ ッ ト されます。

制御命令 (接頭辞 c) は AXI4-Stream の TLAST 出力を 1 にセ ッ ト し ます。 これはパケ ッ ト の境界を示すのに使用され ます。

読み出し

ス ト リ ーム イ ン ターフ ェ イ スからの読み出しは、 get または getd 命令の 1 つを使用し て、 MicroBlaze によ り 実行され ます。 読み出し操作は、 入力 AXI4 イ ン ターフ ェ イ スの内容を汎用レジス タに転送し ます。 ブロ ッ キング モード の読 み出しの場合、 データが使用可能であれば、 転送通常 2 ク ロ ッ ク サイ クルで完了し ます。 データが使用でき ない場合 は、 使用可能にな る まで、 こ の命令でプロセ ッ サがス ト ールし ます。 ノ ンブロ ッ キング モー ド (接頭辞 n の命令) で は、 データが使用可能であ るかど う かにかかわらず、 転送は 1 または 2 ク ロ ッ ク サイ クルで完了し ます。 データが使 用可能でない場合、 データは転送されず、 キ ャ リ ー ビ ッ ト が MSR でセ ッ ト されます。

データの get 命令 (接頭辞 c な し ) は、 AXI4-Stream の TLAST 入力が 0 にク リ ア される もの と し ます。 そ う でない場合 は、 この命令は MSR[FSL] を 1 にセ ッ ト し ます。 制御の get 命令 (接頭辞 c あ り ) は、 AXI4-Stream の TLAST 入力が 1 にセ ッ ト されている もの と し ます。 そ う でない場合は、 こ の命令は MSR[FSL] を 1 にセ ッ ト し ます。 これはパケ ッ ト の境界をチェ ッ クするのに使用されます。

M_AXI_DCM_ACE_DC

C_M_AXI_DC_AWCACHE メ モ リ タ イプ、 標準ア ク セス : • ラ イ ト バッ クの読み出しおよび書き込み割 り 当て (1111)メ モ リ タ イプ、 排他的ア ク セス : • 標準ノ ンキ ャ ッ シャブル、 ノ ンバッ フ ァ ラブル (0010)

C_M_AXI_DC_ARPROTC_M_AXI_DC_AWPROT

ア ク セス権限 : • 権限な し、 セキ ュ ア データ ア ク セス (000)

C_M_AXI_DC_ARQOS サービ ス品質 (QoS)、 読み出し ア ク セス : • 優先度 12 (1100)

C_M_AXI_DC_AWQOS サービ ス品質 (QoS)、 書き込みア ク セス : • 優先度 8 (1000)

表 3‐4 : AXI イ ン ターフ ェ イス信号定義

イ ン ターフ ェイス

信号 説明

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド japan.xilinx.com 115UG984 (v2015.1) 2015 年 4 月 15 日UG984 (v2015.4) 2015 年 11 月 18 日

Page 116: MicroBlaze プロセッサ リファレンス ガイド …...M_ACE_IC M_ACE_DC M_AXI_DP DLMB UG984 (v2015.4) 2015 年 11 月 18 日 MicroBlaze プロセッサ リファレンス ガイド

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

ローカル メモリ  バス (LMB) インターフ ェ イスについてLMB は同期バスで、 主にオンチ ッ プのブロ ッ ク RAM にア ク セスするために使用されます。 このバスは、 最小限の数 の制御信号 と単純なプロ ト コルを使用し て、 1 ク ロ ッ ク サイ クルでローカルのブロ ッ ク RAM にア ク セスする よ う に し ます。 LMB 信号 と その定義は次の表に リ ス ト されています。 LMB 信号はすべてア ク テ ィ ブ High です。

LMB 信号イ ン ターフ ェ イス

Addr[0:31]

こ のア ド レ ス バスはコ アか ら の出力で、 現在の転送でア ク セス されている メ モ リ ア ド レ ス を示し ます。 AS が High の場合のみ有効です。 マルチサ イ ク ル ア ク セ ス の場合 (ア ク セ ス が完了す る ま でに 2 ク ロ ッ ク 以上かか る も の)、 Addr[0:31] は転送の最初の ク ロ ッ ク サイ クルでのみ有効です。

Byte_Enable[0:3]

このバイ ト イネーブル信号はコアからの出力で、 データ バスのどのバイ ト レーンに有効なデータが含まれているの かを示し ます。 Byte_Enable[0:3] は AS が High の場合のみ有効です。 マルチサイ クル ア ク セスの場合 (ア ク セス が完了する までに 2ク ロ ッ ク以上かかる もの)、Byte_Enable[0:3] は転送の最初のク ロ ッ ク サイ クルでのみ有効で す。 Byte_Enable[0:3] の有効値は次の表に リ ス ト されています。

表 3‐5 : LMB バス信号

信号データ  イ ン ター

フ ェ イス命令イ ン ターフ ェ イ

スタ イプ

説明

Addr[0:31] Data_Addr[0:31] Instr_Addr[0:31] O ア ド レ ス バス

Byte_Enable[0:3] Byte_Enable[0:3] 使用されない O バイ ト イネーブル

Data_Write[0:31] Data_Write[0:31] 使用されない O 書き込みデータ バス

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 次の転送の準備完了

Wait1

1. MicroBlaze v8.00 で LMB に追加

DWait IWaitI 承認 さ れた転送が準備完了にな る ま

で待機

CE1 DCE ICE I 訂正可能エラー

UE1 DUE IUE I 訂正不可能エラー

Clk Clk Clk I バス ク ロ ッ ク

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド japan.xilinx.com 116UG984 (v2015.1) 2015 年 4 月 15 日UG984 (v2015.4) 2015 年 11 月 18 日

Page 117: MicroBlaze プロセッサ リファレンス ガイド …...M_ACE_IC M_ACE_DC M_AXI_DP DLMB UG984 (v2015.4) 2015 年 11 月 18 日 MicroBlaze プロセッサ リファレンス ガイド

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

:

Data_Write[0:31]

この書き込みデータ バスはコ アからの出力で、 メ モ リ に書き込まれたデータが含まれています。AS が High の場合の み有効です。 Byte_Enable[0:3] で指定されたバイ ト レーンにのみ有効データが含まれています。

AS

このア ド レ ス ス ト ローブはコ アからの出力で、 転送の開始を示し、 ア ド レ ス バスおよびバイ ト イネーブルを修飾し ます。 これは転送の最初のク ロ ッ ク サイ クルでのみ High で、 その後は次の転送の開始まで Low のま まにな り ます。

Read_Strobe

この読み出し ス ト ローブはコ アからの出力で、 読み出し転送が処理中であ る こ と を示し ます。 この信号は、 転送の最初のク ロ ッ ク サイ クルで High にな り 、 Ready 信号が High になった ク ロ ッ ク サイ クルが終わる まで High のま まにな る可能性があ り ます。 新しい読み出し転送が次の ク ロ ッ ク サイ クルですぐに開始し た場合、 Read_Strobe は High のま まにな り ます。

Write_Strobe

この書き込みス ト ローブはコ アからの出力で、 書き込み転送が処理中であ る こ と を示し ます。 この信号は、 転送の最初のク ロ ッ ク サイ クルで High にな り 、 Ready 信号が High になった ク ロ ッ ク サイ クルが終わる まで High のま まにな る可能性があ り ます。 新しい書き込み転送が次の ク ロ ッ ク サイ クルですぐに開始し た場合、 Write_Strobe は High のま まにな り ます。

Data_Read[0:31]

この読み出しデータ バスはコ アへの入力で、 メ モ リ から読み出されたデータ を含んでいます。Data_Read は、Ready が High の と きのク ロ ッ ク の立ち上が り エ ッ ジで有効にな り ます。

Ready

この Ready 信号はコ アへの入力で、 現在の転送が完了し た こ と と、 次の転送が次のク ロ ッ ク サイ クルで開始可能で あ る こ と を示 し ま す。 こ れは ク ロ ッ ク の立ち上が り エ ッ ジでサ ン プル さ れ ま す。 こ の信号は、 読み出 し の場合Data_Read[0:31] バスが有効であ る こ と を示し、 書き込みの場合 Data_Write[0:31] バスがローカル メ モ リ に 書き込まれた こ と を示し ます。

表 3‐6 : 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 プロセ ッサ リ フ ァ レンス ガイ ド japan.xilinx.com 117UG984 (v2015.1) 2015 年 4 月 15 日UG984 (v2015.4) 2015 年 11 月 18 日

Page 118: MicroBlaze プロセッサ リファレンス ガイド …...M_ACE_IC M_ACE_DC M_AXI_DP DLMB UG984 (v2015.4) 2015 年 11 月 18 日 MicroBlaze プロセッサ リファレンス ガイド

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

Wait

Wait 信号はコ アへの入力で、現在の転送は受け入れられたが、まだ完了はし ていないこ と を示し ます。 これはク ロ ッ ク の立ち上が り エ ッ ジでサンプルされます。

CE

CE 信号はコ アへの入力で、 現在の転送に訂正可能なエラーがあ る こ と を示し ます。 Ready が High の と きのク ロ ッ ク の立ち上が り エ ッ ジで有効にな り ます。 この信号は、 読み出しの場合、 Data_Read[0:31] バスでエラーが訂正され た こ と を示し、バイ ト およびハーフ ワード の書き込みの場合は、 ローカル メ モ リ の対応データ ワード が、新しいデー タ を書き込む前に訂正された こ と を示し ます。

UE

UE 信号はコ アへの入力で、 現在の転送に訂正不可能なエラーがあ る こ と を示し ます。 Ready が High の と きのク ロ ッ ク の立ち上が り エ ッ ジで有効にな り ます。 この信号は、 読み出しの場合、 Data_Read[0:31] バスの値が間違ってい る こ と を示し、 バイ ト およびハーフ ワード の書き込みの場合は、 新しいデータ を書き込む前の、 ローカル メ モ リ の対 応データ ワード が間違っている こ と を示し ます。

Clk

LMB のすべての操作は MicroBlaze コ ア ク ロ ッ ク に同期し ています。

LMB ト ラ ンザクシ ョ ン

次の図は、 LMB バス操作の例を説明し ています。

一般的な書き込み操作

図 3‐2 : LMB の一般的な書き込み操作、 0 待機ステー ト

Clk

Addr

Byte_Enable

Data_Write

AS

Read_Strobe

Write_Strobe

Data_Read

Ready

Wait

CE

UE

A0

BE0

D0

Don’t Care

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド japan.xilinx.com 118UG984 (v2015.1) 2015 年 4 月 15 日UG984 (v2015.4) 2015 年 11 月 18 日

Page 119: MicroBlaze プロセッサ リファレンス ガイド …...M_ACE_IC M_ACE_DC M_AXI_DP DLMB UG984 (v2015.4) 2015 年 11 月 18 日 MicroBlaze プロセッサ リファレンス ガイド

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

一般的な読み出し操作

図 3‐3 : LMB の一般的な書き込み操作、 N 待機ステー ト

図 3‐4 : LMB の一般的な読み出し操作、 0 待機ステー ト

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

D0

Don’t Care

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド japan.xilinx.com 119UG984 (v2015.1) 2015 年 4 月 15 日UG984 (v2015.4) 2015 年 11 月 18 日

Page 120: MicroBlaze プロセッサ リファレンス ガイド …...M_ACE_IC M_ACE_DC M_AXI_DP DLMB UG984 (v2015.4) 2015 年 11 月 18 日 MicroBlaze プロセッサ リファレンス ガイド

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

図 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

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド japan.xilinx.com 120UG984 (v2015.1) 2015 年 4 月 15 日UG984 (v2015.4) 2015 年 11 月 18 日

Page 121: MicroBlaze プロセッサ リファレンス ガイド …...M_ACE_IC M_ACE_DC M_AXI_DP DLMB UG984 (v2015.4) 2015 年 11 月 18 日 MicroBlaze プロセッサ リファレンス ガイド

第 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 プロセ ッサ リ フ ァ レンス ガイ ド japan.xilinx.com 121UG984 (v2015.1) 2015 年 4 月 15 日UG984 (v2015.4) 2015 年 11 月 18 日

Page 122: MicroBlaze プロセッサ リファレンス ガイド …...M_ACE_IC M_ACE_DC M_AXI_DP DLMB UG984 (v2015.4) 2015 年 11 月 18 日 MicroBlaze プロセッサ リファレンス ガイド

第 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 プロセ ッサ リ フ ァ レンス ガイ ド japan.xilinx.com 122UG984 (v2015.1) 2015 年 4 月 15 日UG984 (v2015.4) 2015 年 11 月 18 日

Page 123: MicroBlaze プロセッサ リファレンス ガイド …...M_ACE_IC M_ACE_DC M_AXI_DP DLMB UG984 (v2015.4) 2015 年 11 月 18 日 MicroBlaze プロセッサ リファレンス ガイド

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

読み出しおよび書き込みデータ  ステア リ ング

MicroBlaze のデータ側バス イ ン ターフ ェ イ スは、次の転送のサポー ト に必要な読み出し ステア リ ングおよび書き込み ステア リ ングを実行し ます。

• ワード デバイ スへのバイ ト 、 ハーフ ワード、 およびワード転送

• ハーフ ワード デバイ スへのバイ ト およびハーフ ワード転送

• バイ ト デバイ スへのバイ ト 転送

MicroBlaze は、 ア ド レ ス指定されているデバイ ス よ り もサイ ズが大きな転送をサポー ト し ていません。 こ う し た タ イ プの転送には、 MicroBlaze のバス イ ン ターフ ェ イ スではサポー ト されていないダ イナ ミ ッ ク バス サイ ズ調整や変換 サイ クルが必要にな り ます。 読み出しサイ クルのデータ ステア リ ングは、 表 3-7 および表 3-8 に、 書き込みサイ クル のデータ ステア リ ングは、 表 3-9 および表 3-10 にま と められています。

表 3‐7 : ビ ッ グ エンデ ィ アン読み出しデータ  ステア リ ング(レジス タ  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‐8 : リ ト ル エンデ ィ アン読み出しデータ  ステア リ ング(レジス タ  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

表 3‐9 : ビ ッ グ エンデ ィ アン書き込みデータ  ステア リ ング(レジス タ  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]

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド japan.xilinx.com 123UG984 (v2015.1) 2015 年 4 月 15 日UG984 (v2015.4) 2015 年 11 月 18 日

Page 124: MicroBlaze プロセッサ リファレンス ガイド …...M_ACE_IC M_ACE_DC M_AXI_DP DLMB UG984 (v2015.4) 2015 年 11 月 18 日 MicroBlaze プロセッサ リファレンス ガイド

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

注記 : ほかのマス ターには、 MicroBlaze で認められている ものよ り も、 バイ ト レーンに関し て厳しい要件が課せられ ている ものがあ る場合があ り ます。 ス レーブ デバイ スは通常、 バイ ト デバイ スな ら最上位バイ ト レーンに、 ハーフ ワー ド デバイ スな ら最上位ハーフ ワー ド レーンに接続される 「左揃え」 になっています。 MicroBlaze のステア リ ン グ ロ ジ ッ クはこ の接続方法を完全サポー ト し ています。

ロ ッ クステ ッ プ イ ン ターフ ェ イスについてMicroBlaze のロ ッ ク ステ ッ プ イ ン ターフ ェ イ スは、1 つのマス ターおよび 1 つ以上のス レーブ MicroBlaze イ ン ス タ ン ス を接続する よ う 設計されています。 MicroBlaze のロ ッ ク ステ ッ プ信号は、 表 3-11 に リ ス ト されています。

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‐10 : リ ト ル エンデ ィ アン書き込みデータ  ステア リ ング(レジス タ  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‐11 : MicroBlaze ロ ッ クステ ッ プ信号

信号名 説明 VHDL タ イプ 方向

Lockstep_Master_Out マ ス タ ーか ら ス レーブ MicroBlaze への信号で出 力。 ス レーブでは接続されない。

std_logic 出力

Lockstep_Slave_In マ ス タ ーか ら ス レーブ MicroBlaze への信号で入 力。 マス ターでは接続されない。

std_logic 入力

Lockstep_Out マス ター と ス レーブ両方からのすべての比較信号で出力。

std_logic 出力

表 3‐9 : ビ ッ グ エンデ ィ アン書き込みデータ  ステア リ ング(レジス タ  rD からス ト ア)

Address[30:31]

Byte_Enable[0:3] 転送サイズ

書き込みデータ  バス バイ ト

バイ ト 0 バイ ト 1 バイ ト 2 バイ ト 3

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド japan.xilinx.com 124UG984 (v2015.1) 2015 年 4 月 15 日UG984 (v2015.4) 2015 年 11 月 18 日

Page 125: MicroBlaze プロセッサ リファレンス ガイド …...M_ACE_IC M_ACE_DC M_AXI_DP DLMB UG984 (v2015.4) 2015 年 11 月 18 日 MicroBlaze プロセッサ リファレンス ガイド

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

Lockstep_Out で提供される比較信号は表 3-12 に リ ス ト されています。

表 3‐12 : MicroBlaze ロ ッ クステ ッ プ比較信号

信号名 バス イ ンデ ッ クス範囲 VHDL タ イプ

MB_Halted 0 std_logic

MB_Error 1 std_logic

IFetch 2 std_logic

I_AS 3 std_logic

Instr_Addr 4 ~ 35 std_logic_vector

Data_Addr 36 ~ 67 std_logic_vector

Data_Write 68 ~ 99 std_logic_vector

D_AS 100 std_logic

Read_Strobe 101 std_logic

Write_Strobe 102 std_logic

Byte_Enable 103 ~ 106 std_logic_vector

Reserved 107 ~ 736

M_AXI_IP_AWID 737 std_logic

M_AXI_IP_AWADDR 738 ~ 769 std_logic_vector

M_AXI_IP_AWLEN 770 ~ 777 std_logic_vector

M_AXI_IP_AWSIZE 778 ~ 780 std_logic_vector

M_AXI_IP_AWBURST 781 ~ 782 std_logic_vector

M_AXI_IP_AWLOCK 783 std_logic

M_AXI_IP_AWCACHE 784 ~ 787 std_logic_vector

M_AXI_IP_AWPROT 788 ~ 790 std_logic_vector

M_AXI_IP_AWQOS 791 ~ 794 std_logic_vector

M_AXI_IP_AWVALID 795 std_logic

M_AXI_IP_WDATA 796 ~ 827 std_logic_vector

M_AXI_IP_WSTRB 828 ~ 831 std_logic_vector

M_AXI_IP_WLAST 832 std_logic

M_AXI_IP_WVALID 833 std_logic

M_AXI_IP_BREADY 834 std_logic

M_AXI_IP_ARID 835 std_logic

M_AXI_IP_ARADDR 836 ~ 867 std_logic_vector

M_AXI_IP_ARLEN 868 ~ 875 std_logic_vector

M_AXI_IP_ARSIZE 876 ~ 878 std_logic_vector

M_AXI_IP_ARBURST 879 ~ 880 std_logic_vector

M_AXI_IP_ARLOCK 881 std_logic

M_AXI_IP_ARCACHE 882 ~ 885 std_logic_vector

M_AXI_IP_ARPROT 886 ~ 888 std_logic_vector

M_AXI_IP_ARQOS 889 ~ 892 std_logic_vector

M_AXI_IP_ARVALID 893 std_logic

M_AXI_IP_RREADY 894 std_logic

M_AXI_DP_AWID 895 std_logic

M_AXI_DP_AWADDR 896 ~ 927 std_logic_vector

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド japan.xilinx.com 125UG984 (v2015.1) 2015 年 4 月 15 日UG984 (v2015.4) 2015 年 11 月 18 日

Page 126: MicroBlaze プロセッサ リファレンス ガイド …...M_ACE_IC M_ACE_DC M_AXI_DP DLMB UG984 (v2015.4) 2015 年 11 月 18 日 MicroBlaze プロセッサ リファレンス ガイド

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

M_AXI_DP_AWLEN 928 ~ 935 std_logic_vector

M_AXI_DP_AWSIZE 936 ~ 938 std_logic_vector

M_AXI_DP_AWBURST 939 ~ 940 std_logic_vector

M_AXI_DP_AWLOCK 941 std_logic

M_AXI_DP_AWCACHE 942 ~ 945 std_logic_vector

M_AXI_DP_AWPROT 946 ~ 948 std_logic_vector

M_AXI_DP_AWQOS 949 ~ 952 std_logic_vector

M_AXI_DP_AWVALID 953 std_logic

M_AXI_DP_WDATA 954 ~ 985 std_logic_vector

M_AXI_DP_WSTRB 986 ~ 989 std_logic_vector

M_AXI_DP_WLAST 990 std_logic

M_AXI_DP_WVALID 991 std_logic

M_AXI_DP_BREADY 992 std_logic

M_AXI_DP_ARID 993 std_logic

M_AXI_DP_ARADDR 994 ~ 1025 std_logic_vector

M_AXI_DP_ARLEN 1026 ~ 1033 std_logic_vector

M_AXI_DP_ARSIZE 1034 ~ 1036 std_logic_vector

M_AXI_DP_ARBURST 1037 ~ 1038 std_logic_vector

M_AXI_DP_ARLOCK 1039 std_logic

M_AXI_DP_ARCACHE 1040 ~ 1043 std_logic_vector

M_AXI_DP_ARPROT 1044 ~ 1046 std_logic_vector

M_AXI_DP_ARQOS 1047 ~ 1050 std_logic_vector

M_AXI_DP_ARVALID 1051 std_logic

M_AXI_DP_RREADY 1052 std_logic

Reserved 1053 ~ 1644

Mn_AXIS_TLAST 1645 + n * 35 std_logic

Mn_AXIS_TDATA 1646 + n * 35 ~ 1677 + n * 35

std_logic_vector

Mn_AXIS_TVALID 1678 + n * 35 std_logic

Sn_AXIS_TREADY 1679 + n * 35 std_logic

M_AXI_IC_AWID 2205 std_logic

M_AXI_IC_AWADDR 2206 ~ 2237 std_logic_vector

M_AXI_IC_AWLEN 2238 ~ 2245 std_logic_vector

M_AXI_IC_AWSIZE 2246 ~ 2248 std_logic_vector

M_AXI_IC_AWBURST 2249 ~ 2250 std_logic_vector

M_AXI_IC_AWLOCK 2251 std_logic

M_AXI_IC_AWCACHE 2252 ~ 2255 std_logic_vector

M_AXI_IC_AWPROT 2256 ~ 2258 std_logic_vector

M_AXI_IC_AWQOS 2259 ~ 2262 std_logic_vector

M_AXI_IC_AWVALID 2263 std_logic

M_AXI_IC_AWUSER 2264 ~ 2268 std_logic_vector

表 3‐12 : MicroBlaze ロ ッ クステ ッ プ比較信号 (続き)

信号名 バス イ ンデ ッ クス範囲 VHDL タ イプ

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド japan.xilinx.com 126UG984 (v2015.1) 2015 年 4 月 15 日UG984 (v2015.4) 2015 年 11 月 18 日

Page 127: MicroBlaze プロセッサ リファレンス ガイド …...M_ACE_IC M_ACE_DC M_AXI_DP DLMB UG984 (v2015.4) 2015 年 11 月 18 日 MicroBlaze プロセッサ リファレンス ガイド

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

M_AXI_IC_AWDOMAIN1 2269 ~ 2270 std_logic_vector

M_AXI_IC_AWSNOOP1 2271 ~ 2273 std_logic_vector

M_AXI_IC_AWBAR1 2274 ~ 2275 std_logic_vector

M_AXI_IC_WDATA 2276 ~ 2787 std_logic_vector

M_AXI_IC_WSTRB 2788 ~ 2851 std_logic_vector

M_AXI_IC_WLAST 2852 std_logic

M_AXI_IC_WVALID 2853 std_logic

M_AXI_IC_WUSER 2854 std_logic

M_AXI_IC_BREADY 2855 std_logic

M_AXI_IC_WACK 2856 std_logic

M_AXI_IC_ARID 2857 std_logic_vector

M_AXI_IC_ARADDR 2858 ~ 2889 std_logic_vector

M_AXI_IC_ARLEN 2890 ~ 2897 std_logic_vector

M_AXI_IC_ARSIZE 2898 ~ 2900 std_logic_vector

M_AXI_IC_ARBURST 2901 ~ 2902 std_logic_vector

M_AXI_IC_ARLOCK 2903 std_logic

M_AXI_IC_ARCACHE 2904 ~ 2907 std_logic_vector

M_AXI_IC_ARPROT 2908 ~ 2910 std_logic_vector

M_AXI_IC_ARQOS 2911 ~ 2914 std_logic_vector

M_AXI_IC_ARVALID 2915 std_logic

M_AXI_IC_ARUSER 2916 ~ 2920 std_logic_vector

M_AXI_IC_ARDOMAIN1 2921 ~ 2922 std_logic_vector

M_AXI_IC_ARSNOOP1 2923 ~ 2926 std_logic_vector

M_AXI_IC_ARBAR1 2927 ~ 2928 std_logic_vector

M_AXI_IC_RREADY 2929 std_logic

M_AXI_IC_RACK1 2930 std_logic

M_AXI_IC_ACREADY1 2931 std_logic

M_AXI_IC_CRVALID1 2932 std_logic

M_AXI_IC_CRRESP1 2933 ~ 2937 std_logic_vector

M_AXI_IC_CDVALID1 2938 std_logic

M_AXI_IC_CDLAST1 2939 std_logic

M_AXI_DC_AWID 2940 std_logic

M_AXI_DC_AWADDR 2941 ~ 2972 std_logic_vector

M_AXI_DC_AWLEN 2973 ~ 2980 std_logic_vector

M_AXI_DC_AWSIZE 2981 ~ 2983 std_logic_vector

M_AXI_DC_AWBURST 2984 ~ 2985 std_logic_vector

M_AXI_DC_AWLOCK 2986 std_logic

M_AXI_DC_AWCACHE 2987 ~ 2990 std_logic_vector

M_AXI_DC_AWPROT 2991 ~ 2993 std_logic_vector

M_AXI_DC_AWQOS 2994 ~ 2997 std_logic_vector

M_AXI_DC_AWVALID 2998 std_logic

表 3‐12 : MicroBlaze ロ ッ クステ ッ プ比較信号 (続き)

信号名 バス イ ンデ ッ クス範囲 VHDL タ イプ

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド japan.xilinx.com 127UG984 (v2015.1) 2015 年 4 月 15 日UG984 (v2015.4) 2015 年 11 月 18 日

Page 128: MicroBlaze プロセッサ リファレンス ガイド …...M_ACE_IC M_ACE_DC M_AXI_DP DLMB UG984 (v2015.4) 2015 年 11 月 18 日 MicroBlaze プロセッサ リファレンス ガイド

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

M_AXI_DC_AWUSER 2999 ~ 3003 std_logic_vector

M_AXI_DC_AWDOMAIN1 3004 ~ 3005 std_logic_vector

M_AXI_DC_AWSNOOP1 3006 ~ 3008 std_logic_vector

M_AXI_DC_AWBAR1 3009 ~ 3010 std_logic_vector

M_AXI_DC_WDATA 3011 ~ 3522 std_logic_vector

M_AXI_DC_WSTRB1 3523 ~ 3586 std_logic_vector

M_AXI_DC_WLAST 3587 std_logic

M_AXI_DC_WVALID 3588 std_logic

M_AXI_DC_WUSER 3589 std_logic

M_AXI_DC_BREADY 3590 std_logic

M_AXI_DC_WACK1 3591 std_logic

M_AXI_DC_ARID 3592 std_logic

M_AXI_DC_ARADDR 3593 ~ 3624 std_logic_vector

M_AXI_DC_ARLEN 3625 ~ 3632 std_logic_vector

M_AXI_DC_ARSIZE 3633 ~ 3635 std_logic_vector

M_AXI_DC_ARBURST 3636 ~ 3637 std_logic_vector

M_AXI_DC_ARLOCK 3638 std_logic

M_AXI_DC_ARCACHE 3639 ~ 3642 std_logic_vector

M_AXI_DC_ARPROT 3643 ~ 3645 std_logic_vector

M_AXI_DC_ARQOS 3646 ~ 3649 std_logic_vector

M_AXI_DC_ARVALID 3650 std_logic

M_AXI_DC_ARUSER 3651 ~ 3655 std_logic_vector

M_AXI_DC_ARDOMAIN1 3656 ~ 3657 std_logic_vector

M_AXI_DC_ARSNOOP1 3658 ~ 3661 std_logic_vector

M_AXI_DC_ARBAR1 3662 ~ 3663 std_logic_vector

M_AXI_DC_RREADY 3664 std_logic

M_AXI_DC_RACK1 3665 std_logic

M_AXI_DC_ACREADY1 3666 std_logic

M_AXI_DC_CRVALID1 3667 std_logic

M_AXI_DC_CRRESP1 3668 ~ 3672 std_logic_vector

M_AXI_DC_CDVALID1 3673 std_logic

M_AXI_DC_CDLAST1 3674 std_logic

Trace_Instruction 3675 ~ 3706 std_logic_vector

Trace_Valid_Instr 3707 std_logic

Trace_PC 3708 ~ 3739 std_logic_vector

Trace_Reg_Write 3740 std_logic

Trace_Reg_Addr 3741 ~ 3745 std_logic_vector

Trace_MSR_Reg 3746 ~ 3760 std_logic_vector

Trace_PID_Reg 3761 ~ 3768 std_logic_vector

Trace_New_Reg_Value 3769 ~ 3800 std_logic_vector

Trace_Exception_Taken 3801 std_logic

表 3‐12 : MicroBlaze ロ ッ クステ ッ プ比較信号 (続き)

信号名 バス イ ンデ ッ クス範囲 VHDL タ イプ

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド japan.xilinx.com 128UG984 (v2015.1) 2015 年 4 月 15 日UG984 (v2015.4) 2015 年 11 月 18 日

Page 129: MicroBlaze プロセッサ リファレンス ガイド …...M_ACE_IC M_ACE_DC M_AXI_DP DLMB UG984 (v2015.4) 2015 年 11 月 18 日 MicroBlaze プロセッサ リファレンス ガイド

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

デバッ グ イ ン ターフ ェ イスについてMicroBlaze のデバッ グ イ ン ターフ ェ イ スは、 ザイ リ ン ク スの MDM (Microprocessor Debug Module) IP コ アを使用し て 機能する よ う に設計されています。 MDM は、 FPGA の JTAG ポー ト を介し XMD (Xilinx Microprocessor Debugger) に よ って制御されます。 MDM は 1 度に複数の MicroBlaze プロセ ッ サを制御でき ます。 デバッ グ信号は DEBUG バスに グループ と し てま と められます。 MicroBlaze のデバッ グ信号は表 3-13 に リ ス ト されています。

Trace_Exception_Kind 3802 ~ 3806 std_logic_vector

Trace_Jump_Taken 3807 std_logic

Trace_Delay_Slot 3808 std_logic

Trace_Data_Address 3809 ~ 3840 std_logic_vector

Trace_Data_Write_Value 3841 ~ 3872 std_logic_vector

Trace_Data_Byte_Enable 3873 ~ 3876 std_logic_vector

Trace_Data_Access 3877 std_logic

Trace_Data_Read 3878 std_logic

Trace_Data_Write 3879 std_logic

Trace_DCache_Req 3880 std_logic

Trace_DCache_Hit 3881 std_logic

Trace_DCache_Rdy 3882 std_logic

Trace_DCache_Read 3883 std_logic

Trace_ICache_Req 3884 std_logic

Trace_ICache_Hit 3885 std_logic

Trace_ICache_Rdy 3886 std_logic

Trace_OF_PipeRun 3887 std_logic

Trace_EX_PipeRun 3888 std_logic

Trace_MEM_PipeRun 3889 std_logic

Trace_MB_Halted 3890 std_logic

Trace_Jump_Hit 3891 std_logic

将来使用するために予約 3892 ~ 4095

1. この信号は、 C_INTERCONNECT = 3 (ACE) の場合のみ使用し ます。

表 3‐13 : MicroBlaze デバッ グ信号

信号名 説明 VHDL タ イプ 方向

Dbg_Clk MDM からの JTAG ク ロ ッ ク std_logic 入力

Dbg_TDI MDM からの JTAG TDI std_logic 入力

Dbg_TDO MDM への JTAG TDO std_logic 出力

Dbg_Reg_En MDM からのデバッ グ レジス タ イネーブル std_logic_vector 入力

Dbg_Shift1 MDM からの JTAG BSCAN シフ ト 信号 std_logic 入力

Dbg_Capture MDM からの JTAG BSCAN キ ャプチャ信号 std_logic 入力

Dbg_Update MDM からの JTAG BSCAN ア ッ プデー ト 信号 std_logic 入力

表 3‐12 : MicroBlaze ロ ッ クステ ッ プ比較信号 (続き)

信号名 バス イ ンデ ッ クス範囲 VHDL タ イプ

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド japan.xilinx.com 129UG984 (v2015.1) 2015 年 4 月 15 日UG984 (v2015.4) 2015 年 11 月 18 日

Page 130: MicroBlaze プロセッサ リファレンス ガイド …...M_ACE_IC M_ACE_DC M_AXI_DP DLMB UG984 (v2015.4) 2015 年 11 月 18 日 MicroBlaze プロセッサ リファレンス ガイド

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

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 入力

1. MicroBlaze v7.00 用にア ッ プデー ト : Dbg_Shift を追加、 Debug_Rst を DEBUG バスに含める

2. MicroBlaze v9.3 用にア ッ プデー ト : Dbg_Trig 信号を DEBUG バスに追加

3. MicroBlaze v9.4 用にア ッ プデー ト : 外部プロ グ ラ ム ト レース信号を DEBUG バスに追加

表 3‐13 : MicroBlaze デバッ グ信号

信号名 説明 VHDL タ イプ 方向

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド japan.xilinx.com 130UG984 (v2015.1) 2015 年 4 月 15 日UG984 (v2015.4) 2015 年 11 月 18 日

Page 131: MicroBlaze プロセッサ リファレンス ガイド …...M_ACE_IC M_ACE_DC M_AXI_DP DLMB UG984 (v2015.4) 2015 年 11 月 18 日 MicroBlaze プロセッサ リファレンス ガイド

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

ト レース イ ン ターフ ェ イスについてMicroBlaze は ト レース目的でさ まざまな内部信号をエ ク スポー ト し ます。 この信号イ ン ターフ ェ イ スは標準化されて おらず、 新しい リ ビジ ョ ンのプロセ ッ サでは、 信号選択や機能性において、 下位互換性が得られない可能性があ り ます。 これらの信号のカ ス タ ム ロ ジ ッ ク を設計せず、 ザイ リ ン ク ス提供の解析 IP を介し て信号を使用する こ と を推奨 し ます。ト レース信号は TRACE バスでグループにま と められます。ト レース信号の現在のセ ッ ト は、MicroBlaze v7.30 でア ッ プデー ト された もので、 表 3-14 に リ ス ト されています。

MSR ビ ッ ト のマ ッ ピ ングは表 3-15 にま と め られています。 マシン ス テータ ス レジス タ (MSR) の詳細については、 「特殊用途レジス タ」 を参照し て く ださい。

ト レース例外タ イプは表 3-16 を参照し て く ださい。 すべての未使用の ト レース例外タ イプは予約されています。

表 3‐14 : 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 側の メ モ リ ア ク セスのア ド レ ス std_logic_vector (0 ~ 31) 出力

Trace_Data_Write_Value1 D 側の メ モ リ 書き込みア ク セスの値 std_logic_vector (0 ~ 31) 出力

Trace_Data_Byte_Enable1 D 側の メ モ リ ア ク セスのバイ ト イネーブル std_logic_vector (0 ~ 3) 出力

Trace_Data_Read1 D 側の メ モ リ ア ク セスが読み出し std_logic 出力

Trace_Data_Write1 D 側の メ モ リ ア ク セスが書き込み std_logic 出力

Trace_DCache_Req データ メ モ リ ア ド レ スがD キ ャ ッ シュ範囲 内にあ る

std_logic 出力

Trace_DCache_Hit データ メ モ リ ア ド レ スが D キ ャ ッ シ ュ に あ る

std_logic 出力

Trace_DCache_Rdy データ ア ド レ スが D キ ャ ッ シュ範囲内にあ り 、 ア ク セスが完了し ている

std_logic 出力

Trace_DCache_Read,4 D キ ャ ッ シュ リ ク エス ト は読み出し。 std_logic 出力

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド japan.xilinx.com 131UG984 (v2015.1) 2015 年 4 月 15 日UG984 (v2015.4) 2015 年 11 月 18 日

Page 132: MicroBlaze プロセッサ リファレンス ガイド …...M_ACE_IC M_ACE_DC M_AXI_DP DLMB UG984 (v2015.4) 2015 年 11 月 18 日 MicroBlaze プロセッサ リファレンス ガイド

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

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‐14 : MicroBlaze ト レース信号 (続き)

信号名 説明 VHDL タ イプ 方向

表 3‐15 : ト レース MSR のマ ッ ピング

Trace_MSR_Reg マシン ステータ ス レジス タ

ビ ッ ト ビ ッ ト 名前 説明

0 17 VMS 仮想保護モード保存

1 18 VM 仮想保護モード

2 19 UMS ユーザー モード保存

3 20 UM ユーザー モード

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

5 22 EIP 処理中例外

6 23 EE 例外イネーブル

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

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

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

10 27 FSL AXI4-Stream エラー

11 28 BIP 処理中ブレーク

12 29 C 演算キ ャ リ ー

13 30 IE 割 り 込みイネーブル

14 31 Reserved 予約

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド japan.xilinx.com 132UG984 (v2015.1) 2015 年 4 月 15 日UG984 (v2015.4) 2015 年 11 月 18 日

Page 133: MicroBlaze プロセッサ リファレンス ガイド …...M_ACE_IC M_ACE_DC M_AXI_DP DLMB UG984 (v2015.4) 2015 年 11 月 18 日 MicroBlaze プロセッサ リファレンス ガイド

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

表 3‐16 : ト レース例外のタ イプ

Trace_Exception_Kind [0:4] 説明

00000 ス ト リーム例外

00001 アラ イ ン されていない例外

00010 無効なオペコー ド例外

00011 命令バス例外

00100 データ バス例外

00101 除算例外

00110 FPU 例外

00111 特権命令例外

01010 割り込み

01011 外部のマスク不可能なブレーク

01100 外部のマスク可能なブレーク

10000 データ ス ト レージ例外

10001 命令ス ト レージ例外

10010 データ TLB ミ ス例外

10011 命令 TLB ミ ス例外

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド japan.xilinx.com 133UG984 (v2015.1) 2015 年 4 月 15 日UG984 (v2015.4) 2015 年 11 月 18 日

Page 134: MicroBlaze プロセッサ リファレンス ガイド …...M_ACE_IC M_ACE_DC M_AXI_DP DLMB UG984 (v2015.4) 2015 年 11 月 18 日 MicroBlaze プロセッサ リファレンス ガイド

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

MicroBlaze コアのコ ン フ ィ ギュ レーシ ョ ンMicroBlaze コ アは、 ユーザーが細か く 設定でき る よ う に開発されています。 つま り 、 具体的なコ ス ト やパフ ォーマン スの要件を満たすこ と ができ る よ う に、 プロセ ッ サを設定する こ と ができ ます。

コ ン フ ィ ギ ュ レーシ ョ ンは、 通常、 機能のオン/オフやサイ ズを決めた り 、 プロ セ ッ サの機能を選択する ためのパラメ ーターを使用し て行います。 た と えば、 命令キ ャ ッ シュは C_USE_ICACHE パラ メ ーターを設定する と イ ネーブル に な り ま す。 命令 キ ャ ッ シ ュ の サ イ ズ、 キ ャ ッ シ ュ 可能 な メ モ リ の 範囲 の 設定 は、 C_CACHE_BYTE_SIZE、C_ICACHE_BASEADDR、 C_ICACHE_HIGHADDR をそれぞれ設定し てコ ンフ ィ ギュ レー ト でき ます。

MicroBlaze v9.2 で有効なパラ メ ーターは表 3-17 に リ ス ト されています。 こ の表に リ ス ト されているパラ メ ーターが すべて古いバージ ョ ンの MicroBlaze で認識されるわけではあ り ませんが、コ ンフ ィ ギ ュ レーシ ョ ンは完全に下位互換 性があ り ます。

注記 : グレーで色分け されている行は、 パラ メ ーターの値が固定値であって、 変更でき ないこ と を示し ています。

表 3‐17 : MPD パラ メ ーター  

パラ メ ーター名 機能/説明 設定可能な値デフ ォルト 値

ツールで割り当て

VHDL タ イプ

C_FAMILY ターゲ ッ ト フ ァ ミ リ 表 3-18 に リ スト

virtex7 可 string

C_DATA_SIZE データ サイ ズ 32 32 該当な し

integer

C_DYNAMIC_BUS_SIZING レガシ 1 1 該当な し

integer

C_SCO ザイ リ ン ク ス内部 0 0 該当な し

integer

C_AREA_OPTIMIZED 低い命令スループ ッ ト でエ リ アを最適化するためのイ ンプ リ メ ンテーシ ョンを選択

0、 1 0 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

0x00000000

std_logic_vector

C_FAULT_TOLERANT フ ォール ト ト レ ラ ン ス をイ ンプ リ メ ン ト

0、 1 0 可 integer

C_ECC_USE_CE_EXCEPTION 訂正可能な ECC エラーに対し例外を生成

0、 1 0 integer

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド japan.xilinx.com 134UG984 (v2015.1) 2015 年 4 月 15 日UG984 (v2015.4) 2015 年 11 月 18 日

Page 135: MicroBlaze プロセッサ リファレンス ガイド …...M_ACE_IC M_ACE_DC M_AXI_DP DLMB UG984 (v2015.4) 2015 年 11 月 18 日 MicroBlaze プロセッサ リファレンス ガイド

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

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 0x00std_logic_vector(0 ~ 7)

C_PVR_USER2 プロセ ッ サ バージ ョ ン レジス タ USER2 定数

0x00000000-0xffffffff

0x00000000

std_logic_vector(0 ~ 31)

C_RESET_MSR MSR レジス タの リ セ ッ ト 値

0x00、 0x20、0x80、 0xa0

0x00std_logic_vector

C_INSTANCE イ ン ス タ ン ス名 任意のイ ン スタ ン ス名

microblaze

可 string

C_D_AXI データ側 AXI イ ン ターフ ェ イ ス

0、 1 0integer

C_D_LMB データ側 LMB イ ン ターフ ェ イ ス

0、 1 1integer

C_I_AXI 命令側 AXI イ ン ターフ ェイ ス

0、 1 0integer

C_I_LMB 命令側 LMB イ ン ターフ ェイ ス

0、 1 1integer

C_USE_BARREL バレル シフ ターを含める 0、 1 0 integer

C_USE_DIV ハード ウ ェ ア ド ラ イバーを含める

0、 1 0integer

C_USE_HW_MUL ハード ウ ェ ア乗算器を含める 0 = な し 1 = Mul322 = Mul64

0、 1、 2 1

integer

表 3‐17 : MPD パラ メ ーター (続き) 

パラ メ ーター名 機能/説明 設定可能な値デフ ォルト 値

ツールで割り当て

VHDL タ イプ

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド japan.xilinx.com 135UG984 (v2015.1) 2015 年 4 月 15 日UG984 (v2015.4) 2015 年 11 月 18 日

Page 136: MicroBlaze プロセッサ リファレンス ガイド …...M_ACE_IC M_ACE_DC M_AXI_DP DLMB UG984 (v2015.4) 2015 年 11 月 18 日 MicroBlaze プロセッサ リファレンス ガイド

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

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 1integer

C_UNALIGNED_EXCEPTIONS ア ラ イ ン されていないデータ ア ク セスの例外処理を行 う

0、 1 0integer

C_ILL_OPCODE_EXCEPTION 無効なオペコード の例外処理を行 う

0、 1 0integer

C_M_AXI_I_BUS_EXCEPTION M_AXI_I バス エラーの例外処理を行 う

0、 1 0integer

C_M_AXI_D_BUS_EXCEPTION M_AXI_D バス エラーの例外処理を行 う

0、 1 0integer

C_DIV_ZERO_EXCEPTION ゼロ除算または除算オーバーフ ローの例外処理を行 う

0、 1 0integer

C_FPU_EXCEPTION ハード ウ ェ ア浮動小数点ユニ ッ ト の例外処理を行う

0、 1 0integer

C_OPCODE_0x0_ILLEGAL opcode 0x0 を無効な命令とし て検出

0、 1 0integer

C_FSL_EXCEPTION ス ト リ ーム リ ン ク の例外処理を行 う

0、 1 0integer

C_ECC_USE_CE_EXCEPTION 訂正可能なエラーに対しバス エラー例外を生成

0、 1 0integer

C_USE_STACK_PROTECTION ス タ ッ ク オーバーフ ローまたはス タ ッ ク アンダーフ ローに対し例外を生成

0、 1 0integer

C_IMPRECISE_EXCEPTIONS LMB メ モ リ の ECC 訂正可能エラーに対し、 曖昧例外を許可

0、 1 0integer

表 3‐17 : MPD パラ メ ーター (続き) 

パラ メ ーター名 機能/説明 設定可能な値デフ ォルト 値

ツールで割り当て

VHDL タ イプ

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド japan.xilinx.com 136UG984 (v2015.1) 2015 年 4 月 15 日UG984 (v2015.4) 2015 年 11 月 18 日

Page 137: MicroBlaze プロセッサ リファレンス ガイド …...M_ACE_IC M_ACE_DC M_AXI_DP DLMB UG984 (v2015.4) 2015 年 11 月 18 日 MicroBlaze プロセッサ リファレンス ガイド

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

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_INTERRUPT_IS_EDGE レベル/エ ッ ジ イ ン ク リ メン ト

0、 1 0 可 integer

C_EDGE_IS_POSITIVE 負/正のエ ッ ジ割 り 込み 0、 1 1 可 integer

C_FSL_LINKS AXI4-Stream イ ン ターフ ェイ スの数

0 ~ 16 0integer

C_USE_EXTENDED_FSL_INSTR 拡張ス ト リ ーム命令を使用

0、 1 0integer

C_ICACHE_BASEADDR 命令キ ャ ッ シュ ベース アド レ ス

0x00000000 - 0xFFFFFFFF

0x00000000

std_logic_vector

C_ICACHE_HIGHADDR 命令キ ャ ッ シュ ハイ ア ドレ ス

0x00000000 - 0xFFFFFFFF

0x3FFFFFFF

std_logic_vector

表 3‐17 : MPD パラ メ ーター (続き) 

パラ メ ーター名 機能/説明 設定可能な値デフ ォルト 値

ツールで割り当て

VHDL タ イプ

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド japan.xilinx.com 137UG984 (v2015.1) 2015 年 4 月 15 日UG984 (v2015.4) 2015 年 11 月 18 日

Page 138: MicroBlaze プロセッサ リファレンス ガイド …...M_ACE_IC M_ACE_DC M_AXI_DP DLMB UG984 (v2015.4) 2015 年 11 月 18 日 MicroBlaze プロセッサ リファレンス ガイド

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

C_USE_ICACHE 命令キ ャ ッ シュ 0、 1 0 integer

C_ALLOW_ICACHE_WR 命令キ ャ ッ シュ ラ イ ト イネーブル

0、 1 1integer

C_ICACHE_LINE_LEN 命令キ ャ ッ シュ ラ イ ンの長さ

4、 8、 16 4integer

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

C_CACHE_BYTE_SIZE 命令キ ャ ッ シュ サイ ズ 64、 128、256、 512、1024、 2048、4096、 8192、16384、32768、 655362

8192

integer

C_DCACHE_BASEADDR データ キ ャ ッ シュ ベース ア ド レ ス

0x00000000 - 0xFFFFFFFF

0x00000000

std_logic_vector

C_DCACHE_HIGHADDR データ キ ャ ッ シュ ハイ アド レ ス

0x00000000 - 0xFFFFFFFF

0x3FFFFFFF

std_logic_vector

C_USE_DCACHE データ キ ャ ッ シュ 0、 1 0 integer

C_ALLOW_DCACHE_WR データ キ ャ ッ シュ ラ イ ト イネーブル

0、 1 1integer

C_DCACHE_LINE_LEN データ キ ャ ッ シュ ラ イ ンの長さ

4、 8、 16 4integer

表 3‐17 : MPD パラ メ ーター (続き) 

パラ メ ーター名 機能/説明 設定可能な値デフ ォルト 値

ツールで割り当て

VHDL タ イプ

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド japan.xilinx.com 138UG984 (v2015.1) 2015 年 4 月 15 日UG984 (v2015.4) 2015 年 11 月 18 日

Page 139: MicroBlaze プロセッサ リファレンス ガイド …...M_ACE_IC M_ACE_DC M_AXI_DP DLMB UG984 (v2015.4) 2015 年 11 月 18 日 MicroBlaze プロセッサ リファレンス ガイド

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

C_DCACHE_ALWAYS_USED データ キ ャ ッ シュ イ ンターフ ェ イ スが、 キ ャ ッシュ可能範囲内のすべてのア ク セスに対し て使用される

0、 1 1

integer

C_DCACHE_FORCE_TAG_LUTRAM データ キ ャ ッ シュ タ グは分散 RAM を使用し て常にイ ンプ リ メ ン ト

0、 1 0integer

C_DCACHE_USE_WRITEBACK データ キ ャ ッ シュ ラ イ トバッ ク ス ト レージ ポ リシーを使用

0、 1 0integer

C_DCACHE_VICTIMS データ キ ャ ッ シュ ビ クテ ィ ム

0、 2、 4、 8 0integer

C_DCACHE_DATA_WIDTH データ キ ャ ッ シュ データ幅

0 = 32 ビ ッ ト 1 = フル キ ャ ッ シ ュ ラ イ ン 2 = 512 ビ ッ ト

0、 1、 2 0

integer

C_DCACHE_ADDR_TAG データ キ ャ ッ シュ ア ド レス タ グ

0 ~ 25 17 可 integer

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

表 3‐17 : MPD パラ メ ーター (続き) 

パラ メ ーター名 機能/説明 設定可能な値デフ ォルト 値

ツールで割り当て

VHDL タ イプ

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド japan.xilinx.com 139UG984 (v2015.1) 2015 年 4 月 15 日UG984 (v2015.4) 2015 年 11 月 18 日

Page 140: MicroBlaze プロセッサ リファレンス ガイド …...M_ACE_IC M_ACE_DC M_AXI_DP DLMB UG984 (v2015.4) 2015 年 11 月 18 日 MicroBlaze プロセッサ リファレンス ガイド

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

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_BRANCH_TARGET_CACHE3 分岐先キ ャ ッ シュ を使用 0、 1 0 integer

C_BRANCH_TARGET_CACHE_SIZE3 分岐先キ ャ ッ シュ サイ ズ : 0 = デフ ォル ト 1 = 8 エン ト リ 2 = 16 エン ト リ 3 = 32 エン ト リ 4 = 64 エン ト リ 5 = 512 エン ト リ 6 = 1024 エン ト リ 7 = 2048 エン ト リ

0 ~ 7 0 integer

C_M_AXI_DP_THREAD_ID_WIDTH

データ側 AXI ス レ ッ ド ID の幅

1 1integer

C_M_AXI_DP_DATA_WIDTH データ側 AXI データ幅 32 32 integer

C_M_AXI_DP_ADDR_WIDTH データ側 AXI ア ド レ ス幅 32 32 integer

C_M_AXI_DP_SUPPORTS_THREADS

データ側 AXI はス レ ッ ドを使用

0 0integer

C_M_AXI_DP_SUPPORTS_READ 読み出し ア ク セスのためのデータ側 AXI サポー ト

1 1integer

C_M_AXI_DP_SUPPORTS_WRITE 書き込みア ク セスのためのデータ側 AXI サポー ト

1 1integer

C_M_AXI_DP_SUPPORTS_NARROW_BURST

データ側 AXI ナロー バース ト サポー ト

0 0integer

C_M_AXI_DP_PROTOCOL データ側 AXI プロ ト コル AXI4、AXI4LITE

AXI4LITE

可 string

C_M_AXI_DP_EXCLUSIVE_ACCESS

データ側 AXI 排他的ア クセス サポー ト

0、 1 0integer

表 3‐17 : MPD パラ メ ーター (続き) 

パラ メ ーター名 機能/説明 設定可能な値デフ ォルト 値

ツールで割り当て

VHDL タ イプ

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド japan.xilinx.com 140UG984 (v2015.1) 2015 年 4 月 15 日UG984 (v2015.4) 2015 年 11 月 18 日

Page 141: MicroBlaze プロセッサ リファレンス ガイド …...M_ACE_IC M_ACE_DC M_AXI_DP DLMB UG984 (v2015.4) 2015 年 11 月 18 日 MicroBlaze プロセッサ リファレンス ガイド

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

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 0integer

C_M_AXI_IP_SUPPORTS_READ 読み出し ア ク セスのための命令側 AXI サポー ト

1 1integer

C_M_AXI_IP_SUPPORTS_WRITE 書き込みア ク セスのための命令側 AXI サポー ト

0 0integer

C_M_AXI_IP_SUPPORTS_NARROW_BURST

命令側 AXI ナロー バースト サポー ト

0 0integer

C_M_AXI_IP_PROTOCOL 命令側 AXI プロ ト コル AXI4LITEAXI4LITE

string

C_M_AXI_DC_THREAD_ID_WIDTH

データ キ ャ ッ シュ AXI ID の幅

1 1integer

C_M_AXI_DC_DATA_WIDTH データ キ ャ ッ シュ AXI データ幅

32、 64、 128、256、 512

32integer

C_M_AXI_DC_ADDR_WIDTH データ キ ャ ッ シュ AXI アド レ ス幅

32 32integer

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

表 3‐17 : MPD パラ メ ーター (続き) 

パラ メ ーター名 機能/説明 設定可能な値デフ ォルト 値

ツールで割り当て

VHDL タ イプ

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド japan.xilinx.com 141UG984 (v2015.1) 2015 年 4 月 15 日UG984 (v2015.4) 2015 年 11 月 18 日

Page 142: MicroBlaze プロセッサ リファレンス ガイド …...M_ACE_IC M_ACE_DC M_AXI_DP DLMB UG984 (v2015.4) 2015 年 11 月 18 日 MicroBlaze プロセッサ リファレンス ガイド

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

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

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、 512

32integer

C_M_AXI_IC_ADDR_WIDTH 命令キ ャ ッ シュ AXI データ幅

32 32integer

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 1integer

C_M_AXI_IC_PROTOCOL 命令キ ャ ッ シュ AXI プロト コル

AXI4 AXI4string

C_M_AXI_IC_AWUSER_WIDTH 命令キ ャ ッ シュ AXI ユーザー幅

5 5integer

C_M_AXI_IC_ARUSER_WIDTH 命令キ ャ ッ シュ AXI ユーザー幅

5 5integer

表 3‐17 : MPD パラ メ ーター (続き) 

パラ メ ーター名 機能/説明 設定可能な値デフ ォルト 値

ツールで割り当て

VHDL タ イプ

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド japan.xilinx.com 142UG984 (v2015.1) 2015 年 4 月 15 日UG984 (v2015.4) 2015 年 11 月 18 日

Page 143: MicroBlaze プロセッサ リファレンス ガイド …...M_ACE_IC M_ACE_DC M_AXI_DP DLMB UG984 (v2015.4) 2015 年 11 月 18 日 MicroBlaze プロセッサ リファレンス ガイド

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

C_M_AXI_IC_WUSER_WIDTH 命令キ ャ ッ シュ AXI ユーザー幅

1 1integer

C_M_AXI_IC_RUSER_WIDTH 命令キ ャ ッ シュ AXI ユーザー幅

1 1integer

C_M_AXI_IC_BUSER_WIDTH 命令キ ャ ッ シュ AXI ユーザー幅

1 1integer

C_M_AXI_IC_USER_VALUE 命令キ ャ ッ シュ AXI ユーザー値

0 ~ 31 31integer

C_STREAM_INTERCONNECT AXI4-Streamイ ン ターコネク ト を選択

0、 1 0integer

C_Mn_AXIS_PROTOCOL AXI4-Stream プロ ト コル GENERICGENERIC

string

C_Sn_AXIS_PROTOCOL AXI4-Stream プロ ト コル GENERICGENERIC

string

C_Mn_AXIS_DATA_WIDTH AXI4-Stream マス ター データ幅

32 32 該当な し

integer

C_Sn_AXIS_DATA_WIDTH AXI4-Stream ス レーブ データ幅

32 32 該当な し

integer

1. 最下位ビ ッ ト から 7 つのビ ッ ト はすべて 0。

2. アーキテ クチャによ って指定でき るサイ ズは変わ り ます。 キ ャ ッ シ ュは、 0 から 32 までの RAMB プ リ ミ テ ィ ブを使用し ま す (キ ャ ッ シュ サイ ズが 2048 未満の場合は 0)

3. C_AREA_OPTIMIZED が 1 に設定されている と きは使用でき ません。

表 3‐17 : MPD パラ メ ーター (続き) 

パラ メ ーター名 機能/説明 設定可能な値デフ ォルト 値

ツールで割り当て

VHDL タ イプ

表 3‐18 : パラ メ ーター C_FAMILY で使用可能な値

設定可能な値

Artix aartix7 artix7 artix7l qartix7 qartix7l

Kintex kintex7 kintex7l qkintex7 qkintex7l kintexu

Virtex qvirtex7 virtex7 virtexu

Zynq azynq zynq qzynq

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド japan.xilinx.com 143UG984 (v2015.1) 2015 年 4 月 15 日UG984 (v2015.4) 2015 年 11 月 18 日

Page 144: MicroBlaze プロセッサ リファレンス ガイド …...M_ACE_IC M_ACE_DC M_AXI_DP DLMB UG984 (v2015.4) 2015 年 11 月 18 日 MicroBlaze プロセッサ リファレンス ガイド

第 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 ス タ ッ ク ポイ ン ター

R2 専用 SW 読み出し専用のスモール データ エ リ ア アンカー

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド japan.xilinx.com 144UG984 (v2015.1) 2015 年 4 月 15 日UG984 (v2015.4) 2015 年 11 月 18 日

Page 145: MicroBlaze プロセッサ リファレンス ガイド …...M_ACE_IC M_ACE_DC M_AXI_DP DLMB UG984 (v2015.4) 2015 年 11 月 18 日 MicroBlaze プロセッサ リファレンス ガイド

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

MicroBlaze のアーキテ クチャは 32 個の汎用レジス タ (GPR) を定義し ます。 これらのレジス タは、 揮発性、 不揮発性、 専用の 3 つに分類されます。

• 揮発性レジス タ (コーラーセーブ と もい う ) は、一時的な もの と し て使用され、関数コールの間は値を保持し ませ ん。 レジス タ R3 から R12 までは揮発性タ イプで、 R3 および R4 は、 あればコーラー フ ァ ン ク シ ョ ンに値を返す ために使用されます。 レジス タ R5 から R10 までは、 サブルーチン間のパラ メ ーター渡しに使用されます。

• レジス タ R19 から R31 までは、 関数コールの間レジス タの内容を保持するので、 不揮発性レジス タ と呼ばれま す (コー リ ーセーブ と もい う )。 コー リ ー関数は、 使用されている不揮発性レジス タに値を保存し ます。 通常、 プ ロ ローグ中にス タ ッ ク に保存され、 その後、 エピ ローグ中に リ ロード されます。

• 一部のレジス タは専用レジス タ と し て使用され、プロ グ ラマはその決められた目的以外のこ と でこのレジス タ を使用する こ と はあ り ません。

R3-R4 揮発性 SW 戻 り 値/暫定値

R5-R10 揮発性 SW パラ メ ーター /暫定値

R11-R12 揮発性 SW 暫定値

R13 専用 SW 読み出し -書き込みのスモール データ エ リ ア アンカー

R14 専用 HW 割 り 込みの戻 り ア ド レ ス

R15 専用 SW サブルーチンの戻 り ア ド レ ス

R16 専用 HW ト ラ ッ プ (デバッ ガー ) の戻 り ア ド レ ス

R17 専用 HW/SW 例外の戻 り ア ド レ ス ハード ウ ェ ア例外をサポー ト する場合は HW、 そ う でなければ SW

R18 専用 SW アセンブラ /コ ンパイ ラの暫定値のため予約 svc_table_handler 属性でサービ ス ID に使用

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 プロセ ッサ リ フ ァ レンス ガイ ド japan.xilinx.com 145UG984 (v2015.1) 2015 年 4 月 15 日UG984 (v2015.4) 2015 年 11 月 18 日

Page 146: MicroBlaze プロセッサ リファレンス ガイド …...M_ACE_IC M_ACE_DC M_AXI_DP DLMB UG984 (v2015.4) 2015 年 11 月 18 日 MicroBlaze プロセッサ リファレンス ガイド

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

¨ レジス タ R14 から R17 は、 割 り 込み、 サブルーチン、 ト ラ ッ プ、 例外の順序で戻 り ア ド レ ス を格納するの に使用されます。 サブルーチンは分岐および リ ン ク命令を使用し て呼び出されます。 この命令は現在のプログ ラ ム カ ウ ン ター (PC) を レジス タ R15 に保存し ます。

¨ スモール データ エ リ ア ポイ ン ターは、16 ビ ッ ト の即値で、 あ る メ モ リ ロ ケーシ ョ ンにア ク セスするために 使用されます。 こ う し たエ リ アについては、 本書の メ モ リ モデルに関するセ ク シ ョ ンで説明し ます。 読み出 し専用のスモール データ エ リ ア (SDA) アンカー R2 (読み出し専用) は、リ テ ラルなどの定数にア ク セスする ために使用されます。 も う 1 つの SDA アンカー R13 (読み出し -書き込み) は、 スモール データの読み出し - 書き込みセ ク シ ョ ンの値にア ク セスするのに使用されます。

¨ レジス タ R1 はス タ ッ ク ポイ ン ター値を格納し、 関数に入る と きおよびそ こから出る と きにア ッ プデー ト さ れます。

¨ レジス タ R18 はアセンブラ操作用の一時的なレジス タ と し て使用されます。

• MicroBlaze には特殊レジス タが含まれます。 た と えば、 プロ グ ラ ム カ ウ ン ター (rpc)、 マシン ステータ ス レジス タ (rmsr)、 例外ステータ ス レジス タ (resr)、 例外ア ド レ ス レジス タ (rear)、 浮動小数点ステータ ス レジス タ (rfsr)、 分岐先レジス タ (rbtr)、 例外データ レジス タ (redr)、 メ モ リ 管理レジス タ (rpid、 rzpr、 rtlblo、 rtlbhi、 rtlbx、 rtlbsx)、 プロ セ ッ サ バージ ョ ン レジス タ (0 か ら 12 まで) などです。 これら のレジス タは、 レジス タ フ ァ イルには直接 マ ッ プ されていないため、 その使用方法は汎用レジス タ と は異な り ます。 特殊レジス タの値は、 mts および mfs 命令をぞれぞれ使用し て汎用レジス タから、 または汎用レジス タへ と転送でき ます。

ス タ ッ ク規則MicroBlaze によ って使用されている ス タ ッ ク規則は表 4-3 にま と められています。

表 4-3 の赤枠で囲まれている箇所は、 コーラー関数のス タ ッ ク フ レームの一部を表し、 それ以外の箇所は、 コー リ ー フ レーム関数を表し ています。 ス タ ッ ク フ レームの ABI 規則は、 パラ メ ーター渡し、 不揮発性レジス タの値の保持、 関数のローカル変数のスペースの割 り 当てに関するプロ ト コルを定義し ています。

ほかのサブルーチンを呼び出すコールが含まれている関数は非 リ ーフ関数 と 呼ばれます。 これらの非 リ ーフ関数は、それ用に新たなス タ ッ ク フ レーム エ リ アを作成する必要があ り ます。 プロ グ ラ ムの実行が開始する と き、 ス タ ッ ク ポイ ン ターの値は最大値です。 関数が呼び出されてい く と、 その値は、 ス タ ッ ク フ レームの各関数に必要なワード数 分デク リ メ ン ト し ていき ます。 コーラー関数のス タ ッ ク ポイ ン ターの値は、 常に、 コー リ ー関数よ り も大き な値にな り ます。

表 4‐3 : ス タ ッ ク規則

上位ア ド レ ス

呼び出されたサブルーチンの関数パラ メ ーター (Arg n .. Arg1) (オプシ ョ ン : 現在のプロ シージ ャか ら呼び出されたプロ シージ ャに 必要な引数の最大数)

古いス タ ッ ク ポイ ン ター

リ ン ク レジス タ (R15)

コー リ ー セーブ ド レジス タ (R31....R19)(オプシ ョ ン : 現在のプロ シージャで使用される レジス タのみを保存)

現在のプロ シージ ャのローカル変数(オプシ ョ ン : プロ シージ ャで定義されている ローカル変数の場合に のみあ る )

フ ァ ン ク シ ョ ン パラ メ ーター (Arg n .. Arg 1) (オプシ ョ ン : 現在のプロ シージ ャか ら呼び出されたプロ シージ ャに 必要な引数の最大数)

新 し い ス タ ッ クポイ ン ター

リ ン ク レジス タ

低位ア ド レ ス

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド japan.xilinx.com 146UG984 (v2015.1) 2015 年 4 月 15 日UG984 (v2015.4) 2015 年 11 月 18 日

Page 147: MicroBlaze プロセッサ リファレンス ガイド …...M_ACE_IC M_ACE_DC M_AXI_DP DLMB UG984 (v2015.4) 2015 年 11 月 18 日 MicroBlaze プロセッサ リファレンス ガイド

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

関数 1 が関数 2 を呼び出し、 その後、 関数 2 が関数 3 を呼び出す例を と ってみます。 それぞれのイ ン ス タ ン スでのス タ ッ クは図 4-1 のよ う にな り ます。 関数 1 が関数 2 を呼び出し た後、 ス タ ッ ク ポイ ン ター (SP) の値はデク リ メ ン ト し ます。 こ の SP の値は、 関数 3 のス タ ッ ク フ レーム分、 さ らにデク リ メ ン ト し ます。 関数 3 から戻る と、 この値は、 関数 2 での元の値にイ ン ク リ メ ン ト し ます。

図 4-1 を見る と、 ス タ ッ ク がどのよ う に維持されているかがわか り ます。

呼び出し規則

コーラー関数は、 レジス タ (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 プロセ ッサ リ フ ァ レンス ガイ ド japan.xilinx.com 147UG984 (v2015.1) 2015 年 4 月 15 日UG984 (v2015.4) 2015 年 11 月 18 日

Page 148: MicroBlaze プロセッサ リファレンス ガイド …...M_ACE_IC M_ACE_DC M_AXI_DP DLMB UG984 (v2015.4) 2015 年 11 月 18 日 MicroBlaze プロセッサ リファレンス ガイド

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

メ モ リ  モデルMicroBlaze の メ モ リ モデルは、 スモール データ エ リ ア、 データ エ リ ア、 共通の未初期化エ リ ア、 リ テ ラル/定数と い う 4 つの箇所にデータ を分類し ます。

スモール データ  エ リ ア

グ ローバルな初期化された変数でサイ ズの小さ な ものが、 こ のエ リ アに格納されます。 変数を スモール データ エ リ アに格納するかど う か決め手 と な るサイ ズは、 MicroBlaze の C コ ンパイ ラ (mb-gcc) で 8 バイ ト に設定されています が、 コ ンパイ ラでコマン ド ラ イ ン オプシ ョ ンを指定する と変更でき ます。 このオプシ ョ ンの詳細は、 『エンベデッ ド システム ツール リ フ ァ レン ス マニュ アル』 の 「GNU コ ンパイ ラ ツール」 の章で説明されています。 スモール デー タ エ リ アには 64KB の メ モ リ が割 り 当て られています。 このエ リ アには、 読み出し -書き込みのスモール データ エ リ ア アンカー (R13) および 16 ビ ッ ト のオフセ ッ ト を使用し て、 ア ク セス し ます。 こ のエ リ アに小さ な変数を割 り 当て てお く と、 グ ローバル変数にア ク セスする ためのコード に IMM 命令をあま り 追加せずに済みます。 スモール データ エ リ アの変数には、 絶対ア ド レ ス を使用し てア ク セスする こ と もでき ます。

データ  エ リ ア

比較的大き な初期化された変数がデータ エ リ アに割 り 当て られます。 このエ リ アには、 コ ンパイ ラに指定する コマン ド ラ イ ンのオプシ ョ ンによ って異な り ますが、 読み出し -書き込みの SDA アンカー R13、 または絶対ア ド レ ス を使用 し てア ク セスでき ます。

共通の未初期化エ リ ア

初期化されていないグ ローバル変数は共通エ リ アに割 り 当て られ、絶対ア ド レ ス、または読み出し -書き込みのスモール データ エ リ ア アンカー (R13) を使用し て、 ア ク セスでき ます。

リ テ ラルまたは定数

定数は、 読み出し専用のスモール データ エ リ ア (SDA) に格納され、 読み出し専用の SDA アンカー R2 を使用し てア ク セス し ます。

コ ンパイ ラは、 ベース ポイ ン ター と し て動作する適切なグ ローバル ポイ ン ターを生成し ます。 SDA アンカーの実際 の値は、最終の リ ン ク ステージで、 リ ンカーによ って定められます。 メ モ リ のさ まざまなセ ク シ ョ ンに関し ては、『エ ンベデッ ド システム ツール リ フ ァ レ ン ス マニュ アル』 の 「MicroBlaze リ ンカー ス ク リ プ ト 」 のセ ク シ ョ ンを参照し て く だ さ い。 コ ンパイ ラは、 コ マン ド ラ イ ンのオプシ ョ ンに従って適切なセ ク シ ョ ンを生成し ます。 これら のオプ シ ョ ンの詳細については、 『エンベデッ ド システム ツール リ フ ァ レ ン ス マニュ アル』 の 「GNU コ ンパイ ラ ツール」 の章を参照し て く ださい。

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド japan.xilinx.com 148UG984 (v2015.1) 2015 年 4 月 15 日UG984 (v2015.4) 2015 年 11 月 18 日

Page 149: MicroBlaze プロセッサ リファレンス ガイド …...M_ACE_IC M_ACE_DC M_AXI_DP DLMB UG984 (v2015.4) 2015 年 11 月 18 日 MicroBlaze プロセッサ リファレンス ガイド

第 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 プロセ ッサ リ フ ァ レンス ガイ ド japan.xilinx.com 149UG984 (v2015.1) 2015 年 4 月 15 日UG984 (v2015.4) 2015 年 11 月 18 日

Page 150: MicroBlaze プロセッサ リファレンス ガイド …...M_ACE_IC M_ACE_DC M_AXI_DP DLMB UG984 (v2015.4) 2015 年 11 月 18 日 MicroBlaze プロセッサ リファレンス ガイド

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

現在の MicroBlaze システムには、 割 り 込み、 ブレーク、 ユーザー例外処理に対し ダ ミ ー ルーチンがあ り 、 ユーザー が変更する こ と ができ ます。 これらのルーチンを上書き し、 ユーザーの割 り 込みおよび例外ハン ド ラ を リ ン クするには、 特定の属性を使用し てハン ド ラ コード を定義する必要があ り ます。

使用されている レジス タ を格納および復帰させ、 ハン ド ラから戻る ための rtid 命令を省 く コード を コ ンパイ ラが生 成する よ う に、interrupt_handler と い う 属性を使用し て、割 り 込みハン ド ラ コード を定義する必要があ り ます。

void function_name() __attribute__((interrupt_handler));

使用されている レジス タ を格納および復帰させ、ハン ド ラから戻る ための rtid 命令を省 く コード を コ ンパイ ラが生成 する よ う に、 break_handler と い う 属性を使用し て、 ブレーク ハン ド ラ コード を定義する必要があ り ます。

void function_name() __attribute__((break_handler));

ユーザー例外ハン ド ラ コード は、 svc_handler または svc_table_handler の属性を使用し て、 定義する必要が あ り ます。

void function_name() __attribute__((svc_handler));void function_name() __attribute__((svc_table_handler (ID)));

最初の属性は、 コ ンパイ ラが brki rD,0x8 命令を使用し て、 ハン ド ラへの間接的なコールを省 く よ う にし、 またハ ン ド ラから戻る ための rtbd 命令を省 く よ う にし ます。 つま り 、 MMU がイ ネーブルになっている場合、 ハン ド ラ関 数は特権モード で実行される と い う こ と です。

2 番目の属性はサービ ス ID を使用し て宣言されています。 この場合、 コ ンパイ ラは brki rD,0x8 命令を使用し て、 レジス タ R18 のこ の ID と、それに続 く _exception_handler への間接的な コールを格納するためのコード を省き、 ま た ハ ン ド ラ か ら 戻 る た めの rtbd 命令 を 省 き ま す。 R18 の ID に基づい て、 該当す る ハ ン ド ラ を 呼び出す _exception_handler 関数を上書きする必要があ り ます。

割 り 込みハン ド ラの属性の使用方法や構文に関し ては、『エンベデッ ド システム ツール リ フ ァ レ ン ス マニュ アル』 の 「GNU コ ンパイ ラ ツール」 の章を参照し て く ださい。

XMD (Xilinx Microprocessor Debug) または SDK (Software Development Kit) でソ フ ト ウ ェ ア ブレーク ポイ ン ト が使用さ れる場合は、 ブレーク (HW/SW) ア ド レ ス ロ ケーシ ョ ンは、 ソ フ ト ウ ェ ア ブレーク ポイ ン ト を処理するために予約さ れます。

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド japan.xilinx.com 150UG984 (v2015.1) 2015 年 4 月 15 日UG984 (v2015.4) 2015 年 11 月 18 日

Page 151: MicroBlaze プロセッサ リファレンス ガイド …...M_ACE_IC M_ACE_DC M_AXI_DP DLMB UG984 (v2015.4) 2015 年 11 月 18 日 MicroBlaze プロセッサ リファレンス ガイド

第 5 章

MicroBlaze 命令セ ッ ト  アーキテ クチャこの章では、 MicroBlaze™ の命令セ ッ ト アーキテ クチャについて説明し ます。

記号の説明

この章で使用されている記号は表 5-1 に定義されています。

表 5‐1 : 記号の説明

記号 意味

+ 加算

- 減算

乗算

/ 除算

ビ ッ ト 単位の論理演算子 AND

ビ ッ ト 単位の論理演算子 OR

ビ ッ ト 単位の論理演算子 XOR

x ビ ッ ト 単位の x の補数

代入

>> 右シフ ト

<< 左シフ ト

rx レジス タ x

x[i] レジス タ x のビ ッ ト i

x[i:j] レジス タ x のビ ッ ト i から j まで

= 相等

不一致

> 大な り

>= それ以上

< 小な り

<= それ以下

| 信号選択

sext(x) 符号拡張 x

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド japan.xilinx.com 151UG984 (v2015.1) 2015 年 4 月 15 日UG984 (v2015.4) 2015 年 11 月 18 日

Page 152: MicroBlaze プロセッサ リファレンス ガイド …...M_ACE_IC M_ACE_DC M_AXI_DP DLMB UG984 (v2015.4) 2015 年 11 月 18 日 MicroBlaze プロセッサ リファレンス ガイド

第 5 章 : MicroBlaze 命令セ ッ ト  アーキテ クチャ

Mem(x) ア ド レ ス x での メ モ リ ロ ケーシ ョ ン

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 プロセ ッサ リ フ ァ レンス ガイ ド japan.xilinx.com 152UG984 (v2015.1) 2015 年 4 月 15 日UG984 (v2015.4) 2015 年 11 月 18 日

Page 153: MicroBlaze プロセッサ リファレンス ガイド …...M_ACE_IC M_ACE_DC M_AXI_DP DLMB UG984 (v2015.4) 2015 年 11 月 18 日 MicroBlaze プロセッサ リファレンス ガイド

第 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 プロセ ッサ リ フ ァ レンス ガイ ド japan.xilinx.com 153UG984 (v2015.1) 2015 年 4 月 15 日UG984 (v2015.4) 2015 年 11 月 18 日

Page 154: MicroBlaze プロセッサ リファレンス ガイド …...M_ACE_IC M_ACE_DC M_AXI_DP DLMB UG984 (v2015.4) 2015 年 11 月 18 日 MicroBlaze プロセッサ リファレンス ガイド

第 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 11

16

21

31

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド japan.xilinx.com 154UG984 (v2015.1) 2015 年 4 月 15 日UG984 (v2015.4) 2015 年 11 月 18 日

Page 155: MicroBlaze プロセッサ リファレンス ガイド …...M_ACE_IC M_ACE_DC M_AXI_DP DLMB UG984 (v2015.4) 2015 年 11 月 18 日 MicroBlaze プロセッサ リファレンス ガイド

第 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 ビ ッ ト の即値の使用に関し ては、 196 ページの 「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 11

16

31

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド japan.xilinx.com 155UG984 (v2015.1) 2015 年 4 月 15 日UG984 (v2015.4) 2015 年 11 月 18 日

Page 156: MicroBlaze プロセッサ リファレンス ガイド …...M_ACE_IC M_ACE_DC M_AXI_DP DLMB UG984 (v2015.4) 2015 年 11 月 18 日 MicroBlaze プロセッサ リファレンス ガイド

第 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 11

16

21

31

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド japan.xilinx.com 156UG984 (v2015.1) 2015 年 4 月 15 日UG984 (v2015.4) 2015 年 11 月 18 日

Page 157: MicroBlaze プロセッサ リファレンス ガイド …...M_ACE_IC M_ACE_DC M_AXI_DP DLMB UG984 (v2015.4) 2015 年 11 月 18 日 MicroBlaze プロセッサ リファレンス ガイド

第 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 ビ ッ ト の即値の使用に関し ては、 196 ページの 「imm」 を参照し て く だ さい。

andi rD、 rA、 IMM

1 0 1 0 0 1 rD rA IMM

0 6 11

16

31

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド japan.xilinx.com 157UG984 (v2015.1) 2015 年 4 月 15 日UG984 (v2015.4) 2015 年 11 月 18 日

Page 158: MicroBlaze プロセッサ リファレンス ガイド …...M_ACE_IC M_ACE_DC M_AXI_DP DLMB UG984 (v2015.4) 2015 年 11 月 18 日 MicroBlaze プロセッサ リファレンス ガイド

第 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 11

16

21

31

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド japan.xilinx.com 158UG984 (v2015.1) 2015 年 4 月 15 日UG984 (v2015.4) 2015 年 11 月 18 日

Page 159: MicroBlaze プロセッサ リファレンス ガイド …...M_ACE_IC M_ACE_DC M_AXI_DP DLMB UG984 (v2015.4) 2015 年 11 月 18 日 MicroBlaze プロセッサ リファレンス ガイド

第 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 ビ ッ ト の即値の使用に関し ては、 196 ページの 「imm」 を 参照し て く だ さい。

andni rD、 rA、 IMM

1 0 1 0 1 1 rD rA IMM

0 6 11

16

31

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド japan.xilinx.com 159UG984 (v2015.1) 2015 年 4 月 15 日UG984 (v2015.4) 2015 年 11 月 18 日

Page 160: MicroBlaze プロセッサ リファレンス ガイド …...M_ACE_IC M_ACE_DC M_AXI_DP DLMB UG984 (v2015.4) 2015 年 11 月 18 日 MicroBlaze プロセッサ リファレンス ガイド

第 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 11

16

21

31

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド japan.xilinx.com 160UG984 (v2015.1) 2015 年 4 月 15 日UG984 (v2015.4) 2015 年 11 月 18 日

Page 161: MicroBlaze プロセッサ リファレンス ガイド …...M_ACE_IC M_ACE_DC M_AXI_DP DLMB UG984 (v2015.4) 2015 年 11 月 18 日 MicroBlaze プロセッサ リファレンス ガイド

第 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 ビ ッ ト がセ ッ ト されていない場合、 または分岐予測が間違っている場合)

注記デフ ォル ト で、 タ イプ B 命令は 16 ビ ッ ト の IMM フ ィ ール ド 値を取 り 込み、 それを 32 ビ ッ ト に符号拡張 し て、 即値オぺラ ン ド と し て使用し ます。 こ の動作は、 IMM 命令を使用し て タ イプ B 命令を先行させる こ と で、 上書きする こ と ができ ます。 32 ビ ッ ト の即値の使用に関し ては、 196 ページの 「imm」 を参照し て く だ さい。

遅延ス ロ ッ ト は、 IMM、 分岐、 ま たはブレーク の命令で使用する こ と はでき ません。 割 り 込みおよび外部ハード ウ ェ ア ブレークは、 遅延ス ロ ッ ト の分岐が完了する まで先送 り されます。

beqi rA、 IMM 等し い場合は即値分岐

beqid rA、 IMM 遅延を含めて等し い場合は即値分岐

1 0 1 1 1 1 D 0 0 0 0 rA IMM

0 6 11

16

31

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド japan.xilinx.com 161UG984 (v2015.1) 2015 年 4 月 15 日UG984 (v2015.4) 2015 年 11 月 18 日

Page 162: MicroBlaze プロセッサ リファレンス ガイド …...M_ACE_IC M_ACE_DC M_AXI_DP DLMB UG984 (v2015.4) 2015 年 11 月 18 日 MicroBlaze プロセッサ リファレンス ガイド

第 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 11

16

21

31

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド japan.xilinx.com 162UG984 (v2015.1) 2015 年 4 月 15 日UG984 (v2015.4) 2015 年 11 月 18 日

Page 163: MicroBlaze プロセッサ リファレンス ガイド …...M_ACE_IC M_ACE_DC M_AXI_DP DLMB UG984 (v2015.4) 2015 年 11 月 18 日 MicroBlaze プロセッサ リファレンス ガイド

第 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 ビ ッ ト がセ ッ ト されていない場合、 または分岐予測が間違っている場合)

注記デフ ォル ト で、 タ イプ B 命令は 16 ビ ッ ト の IMM フ ィ ール ド 値を取 り 込み、 それを 32 ビ ッ ト に符号拡張 し て、 即値オぺラ ン ド と し て使用し ます。 こ の動作は、 IMM 命令を使用し て タ イプ B 命令を先行させる こ と で、 上書きする こ と ができ ます。 32 ビ ッ ト の即値の使用に関し ては、 196 ページの 「imm」 を参照し て く だ さい。

遅延ス ロ ッ ト は、 IMM、 分岐、 ま たはブレーク の命令で使用する こ と はでき ません。 割 り 込みおよび外部ハード ウ ェ ア ブレークは、 遅延ス ロ ッ ト の分岐が完了する まで先送 り されます。

bgei rA、 IMM その値以上の場合は即値分岐

bgeid rA、 IMM 遅延を含めてその値以上の場合は即値分岐

1 0 1 1 1 1 D 0 1 0 1 rA IMM

0 6 11

16

31

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド japan.xilinx.com 163UG984 (v2015.1) 2015 年 4 月 15 日UG984 (v2015.4) 2015 年 11 月 18 日

Page 164: MicroBlaze プロセッサ リファレンス ガイド …...M_ACE_IC M_ACE_DC M_AXI_DP DLMB UG984 (v2015.4) 2015 年 11 月 18 日 MicroBlaze プロセッサ リファレンス ガイド

第 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 11

16

21

31

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド japan.xilinx.com 164UG984 (v2015.1) 2015 年 4 月 15 日UG984 (v2015.4) 2015 年 11 月 18 日

Page 165: MicroBlaze プロセッサ リファレンス ガイド …...M_ACE_IC M_ACE_DC M_AXI_DP DLMB UG984 (v2015.4) 2015 年 11 月 18 日 MicroBlaze プロセッサ リファレンス ガイド

第 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 ビ ッ ト がセ ッ ト されていない場合、 または分岐予測が間違っている場合)

注記デフ ォル ト で、 タ イプ B 命令は 16 ビ ッ ト の IMM フ ィ ール ド 値を取 り 込み、 それを 32 ビ ッ ト に符号拡張 し て、 即値オぺラ ン ド と し て使用し ます。 こ の動作は、 IMM 命令を使用し て タ イプ B 命令を先行させる こ と で、 上書きする こ と ができ ます。 32 ビ ッ ト の即値の使用に関し ては、 196 ページの 「imm」 を参照し て く だ さい。

遅延ス ロ ッ ト は、 IMM、 分岐、 ま たはブレーク の命令で使用する こ と はでき ません。 割 り 込みおよび外部ハード ウ ェ ア ブレークは、 遅延ス ロ ッ ト の分岐が完了する まで先送 り されます。

bgti rA、 IMM その値よ り 大き い場合は即値分岐

bgtid rA、 IMM 遅延を含めてその値よ り 大き い場合は即値分岐

1 0 1 1 1 1 D 0 1 0 0 rA IMM

0 6 11

16

31

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド japan.xilinx.com 165UG984 (v2015.1) 2015 年 4 月 15 日UG984 (v2015.4) 2015 年 11 月 18 日

Page 166: MicroBlaze プロセッサ リファレンス ガイド …...M_ACE_IC M_ACE_DC M_AXI_DP DLMB UG984 (v2015.4) 2015 年 11 月 18 日 MicroBlaze プロセッサ リファレンス ガイド

第 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 11

16

21

31

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド japan.xilinx.com 166UG984 (v2015.1) 2015 年 4 月 15 日UG984 (v2015.4) 2015 年 11 月 18 日

Page 167: MicroBlaze プロセッサ リファレンス ガイド …...M_ACE_IC M_ACE_DC M_AXI_DP DLMB UG984 (v2015.4) 2015 年 11 月 18 日 MicroBlaze プロセッサ リファレンス ガイド

第 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 ビ ッ ト がセ ッ ト されていない場合、 または分岐予測が間違っている場合)

注記デフ ォル ト で、 タ イプ B 命令は 16 ビ ッ ト の IMM フ ィ ール ド 値を取 り 込み、 それを 32 ビ ッ ト に符号拡張 し て、 即値オぺラ ン ド と し て使用し ます。 こ の動作は、 IMM 命令を使用し て タ イプ B 命令を先行させる こ と で、 上書きする こ と ができ ます。 32 ビ ッ ト の即値の使用に関し ては、 196 ページの 「imm」 を参照し て く だ さい。

遅延ス ロ ッ ト は、 IMM、 分岐、 ま たはブレーク の命令で使用する こ と はでき ません。 割 り 込みおよび外部ハード ウ ェ ア ブレークは、 遅延ス ロ ッ ト の分岐が完了する まで先送 り されます。

blei rA、 IMM その値以下の場合は即値分岐

bleid rA、 IMM 遅延を含めてその値以下の場合は即値分岐

1 0 1 1 1 1 D 0 0 1 1 rA IMM

0 6 11

16

31

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド japan.xilinx.com 167UG984 (v2015.1) 2015 年 4 月 15 日UG984 (v2015.4) 2015 年 11 月 18 日

Page 168: MicroBlaze プロセッサ リファレンス ガイド …...M_ACE_IC M_ACE_DC M_AXI_DP DLMB UG984 (v2015.4) 2015 年 11 月 18 日 MicroBlaze プロセッサ リファレンス ガイド

第 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 11

16

21

31

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド japan.xilinx.com 168UG984 (v2015.1) 2015 年 4 月 15 日UG984 (v2015.4) 2015 年 11 月 18 日

Page 169: MicroBlaze プロセッサ リファレンス ガイド …...M_ACE_IC M_ACE_DC M_AXI_DP DLMB UG984 (v2015.4) 2015 年 11 月 18 日 MicroBlaze プロセッサ リファレンス ガイド

第 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 ビ ッ ト がセ ッ ト されていない場合、 または分岐予測が間違っている場合)

注記デフ ォル ト で、 タ イプ B 命令は 16 ビ ッ ト の IMM フ ィ ール ド 値を取 り 込み、 それを 32 ビ ッ ト に符号拡張 し て、 即値オぺラ ン ド と し て使用し ます。 こ の動作は、 IMM 命令を使用し て タ イプ B 命令を先行させる こ と で、 上書きする こ と ができ ます。 32 ビ ッ ト の即値の使用に関し ては、 196 ページの 「imm」 を参照し て く だ さい。

遅延ス ロ ッ ト は、 IMM、 分岐、 ま たはブレーク の命令で使用する こ と はでき ません。 割 り 込みおよび外部ハード ウ ェ ア ブレークは、 遅延ス ロ ッ ト の分岐が完了する まで先送 り されます。

blti rA、 IMM その値よ り 小 さ い場合は即値分岐

bltid rA、 IMM 遅延を含めてその値未満の場合は即値分岐

1 0 1 1 1 1 D 0 0 1 0 rA IMM

0 6 11

16

31

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド japan.xilinx.com 169UG984 (v2015.1) 2015 年 4 月 15 日UG984 (v2015.4) 2015 年 11 月 18 日

Page 170: MicroBlaze プロセッサ リファレンス ガイド …...M_ACE_IC M_ACE_DC M_AXI_DP DLMB UG984 (v2015.4) 2015 年 11 月 18 日 MicroBlaze プロセッサ リファレンス ガイド

第 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 11

16

21

31

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド japan.xilinx.com 170UG984 (v2015.1) 2015 年 4 月 15 日UG984 (v2015.4) 2015 年 11 月 18 日

Page 171: MicroBlaze プロセッサ リファレンス ガイド …...M_ACE_IC M_ACE_DC M_AXI_DP DLMB UG984 (v2015.4) 2015 年 11 月 18 日 MicroBlaze プロセッサ リファレンス ガイド

第 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 ビ ッ ト がセ ッ ト されていない場合、 または分岐予測が間違っている場合)

注記デフ ォル ト で、 タ イプ B 命令は 16 ビ ッ ト の IMM フ ィ ール ド 値を取 り 込み、 それを 32 ビ ッ ト に符号拡張 し て、 即値オぺラ ン ド と し て使用し ます。 こ の動作は、 IMM 命令を使用し て タ イプ B 命令を先行させる こ と で、 上書きする こ と ができ ます。 32 ビ ッ ト の即値の使用に関し ては、 196 ページの 「imm」 を参照し て く だ さい。

遅延ス ロ ッ ト は、 IMM、 分岐、 ま たはブレーク の命令で使用する こ と はでき ません。 割 り 込みおよび外部ハード ウ ェ ア ブレークは、 遅延ス ロ ッ ト の分岐が完了する まで先送 り されます。

bnei rA、 IMM 等し く ない場合は即値分岐

bneid rA、 IMM 遅延を含めて等し く ない場合は即値分岐

1 0 1 1 1 1 D 0 0 0 1 rA IMM

0 6 11

16

31

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド japan.xilinx.com 171UG984 (v2015.1) 2015 年 4 月 15 日UG984 (v2015.4) 2015 年 11 月 18 日

Page 172: MicroBlaze プロセッサ リファレンス ガイド …...M_ACE_IC M_ACE_DC M_AXI_DP DLMB UG984 (v2015.4) 2015 年 11 月 18 日 MicroBlaze プロセッサ リファレンス ガイド

第 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 ビ ッ ト がセ ッ ト されていない場合)

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 11

16

21

31

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド japan.xilinx.com 172UG984 (v2015.1) 2015 年 4 月 15 日UG984 (v2015.4) 2015 年 11 月 18 日

Page 173: MicroBlaze プロセッサ リファレンス ガイド …...M_ACE_IC M_ACE_DC M_AXI_DP DLMB UG984 (v2015.4) 2015 年 11 月 18 日 MicroBlaze プロセッサ リファレンス ガイド

第 5 章 : MicroBlaze 命令セ ッ ト  アーキテ クチャ

注記

命令 brl および bral は使用でき ません。 遅延ス ロ ッ ト は、 IMM、 分岐、 またはブレーク の命令で使用する こ と はでき ません。 割 り 込みおよび外部ハー ド ウ ェ ア ブレーク は、 遅延ス ロ ッ ト の分岐が完了する まで 先送 り されます。

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド japan.xilinx.com 173UG984 (v2015.1) 2015 年 4 月 15 日UG984 (v2015.4) 2015 年 11 月 18 日

Page 174: MicroBlaze プロセッサ リファレンス ガイド …...M_ACE_IC M_ACE_DC M_AXI_DP DLMB UG984 (v2015.4) 2015 年 11 月 18 日 MicroBlaze プロセッサ リファレンス ガイド

第 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

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 11

16

31

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド japan.xilinx.com 174UG984 (v2015.1) 2015 年 4 月 15 日UG984 (v2015.4) 2015 年 11 月 18 日

Page 175: MicroBlaze プロセッサ リファレンス ガイド …...M_ACE_IC M_ACE_DC M_AXI_DP DLMB UG984 (v2015.4) 2015 年 11 月 18 日 MicroBlaze プロセッサ リファレンス ガイド

第 5 章 : MicroBlaze 命令セ ッ ト  アーキテ クチャ

変更されるレジス タ• rD

• PC

• MSR[UM]、 MSR[VM]

レ イテンシ• 1 サイ クル (正し く 分岐予測が行われる場合)

• 2 サイ クル (D ビ ッ ト がセ ッ ト されている場合)

• 3 サイ クル (D ビ ッ ト がセ ッ ト されていない場合、 または分岐予測が間違っている場合)

注記命令 brli および brali は使用でき ません。

デフ ォル ト で、 タ イプ B 命令は 16 ビ ッ ト の IMM フ ィ ール ド 値を取 り 込み、 それを 32 ビ ッ ト に符号拡張 し て、 即値オぺラ ン ド と し て使用し ます。 こ の動作は、 IMM 命令を使用し て タ イプ B 命令を先行させる こ と で、 上書きする こ と ができ ます。 32 ビ ッ ト の即値の使用に関し ては、 196 ページの 「imm」 を参照し て く だ さい。

遅延ス ロ ッ ト は、 IMM、 分岐、 ま たはブレーク の命令で使用する こ と はでき ません。 割 り 込みおよび外部ハード ウ ェ ア ブレークは、 遅延ス ロ ッ ト の分岐が完了する まで先送 り されます。

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド japan.xilinx.com 175UG984 (v2015.1) 2015 年 4 月 15 日UG984 (v2015.4) 2015 年 11 月 18 日

Page 176: MicroBlaze プロセッサ リファレンス ガイド …...M_ACE_IC M_ACE_DC M_AXI_DP DLMB UG984 (v2015.4) 2015 年 11 月 18 日 MicroBlaze プロセッサ リファレンス ガイド

第 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 プロセ ッサ リ フ ァ レンス ガイ ド japan.xilinx.com 176UG984 (v2015.1) 2015 年 4 月 15 日UG984 (v2015.4) 2015 年 11 月 18 日

Page 177: MicroBlaze プロセッサ リファレンス ガイド …...M_ACE_IC M_ACE_DC M_AXI_DP DLMB UG984 (v2015.4) 2015 年 11 月 18 日 MicroBlaze プロセッサ リファレンス ガイド

第 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 ビ ッ ト の即値の使用に関し ては、 196 ページの 「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 プロセ ッサ リ フ ァ レンス ガイ ド japan.xilinx.com 177UG984 (v2015.1) 2015 年 4 月 15 日UG984 (v2015.4) 2015 年 11 月 18 日

Page 178: MicroBlaze プロセッサ リファレンス ガイド …...M_ACE_IC M_ACE_DC M_AXI_DP DLMB UG984 (v2015.4) 2015 年 11 月 18 日 MicroBlaze プロセッサ リファレンス ガイド

第 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)[0](rD)[(rB)[27:31]:31] (rA) (rB)[27:31]

else(rD) (rA)

else(rD) (rA) (rB)[27:31]

変更されるレジス タ• rD

レ イテンシ• 1 サイ クル ( C_AREA_OPTIMIZED=0)

• 2 サイ クル ( C_AREA_OPTIMIZED=1)

注記こ れ ら の命令はオプシ ョ ンです。 こ れ ら の命令を使用する には、 バレル シ フ ト 命令を使用する よ う に (C_USE_BARREL=1)、 MicroBlaze を コ ンフ ィ ギュ レー ト する必要があ り ます。

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 11

16

21

31

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド japan.xilinx.com 178UG984 (v2015.1) 2015 年 4 月 15 日UG984 (v2015.4) 2015 年 11 月 18 日

Page 179: MicroBlaze プロセッサ リファレンス ガイド …...M_ACE_IC M_ACE_DC M_AXI_DP DLMB UG984 (v2015.4) 2015 年 11 月 18 日 MicroBlaze プロセッサ リファレンス ガイド

第 5 章 : MicroBlaze 命令セ ッ ト  アーキテ クチャ

bsi Barrel Shift Immediate

説明IMM で指定し た値分、 レジス タ rA の内容をシフ ト し、 レジス タ rD に結果を出力し ます。

ニーモニ ッ ク bsll は S ビ ッ ト (サイ ド ビ ッ ト ) をセ ッ ト し ます。 S ビ ッ ト がセ ッ ト されている場合は、 バ レル シフ ト は左にシフ ト し ます。 ニーモニ ッ クの bsrl および bsra は S ビ ッ ト を ク リ アにし、 右にシフ ト し ます。

ニーモニ ッ ク bsra は T ビ ッ ト (タ イプ ビ ッ ト ) をセ ッ ト し ます。 T ビ ッ ト がセ ッ ト されている場合、 バレ ル シフ ト は算術型にな り ます。 ニーモニ ッ ク の bsrl および bsll は T ビ ッ ト を ク リ アにし、 シフ ト は論理 型な り ます。

擬似コー ドif S = 1 then(rD) (rA) IMM

elseif T = 1 thenif IMM 0 then(rD)[0:IMM-1] (rA)[0](rD)[IMM:31] (rA) IMM

else(rD) (rA)

else(rD) (rA) IMM

変更されるレジス タ• rD

レ イテンシ• 1 サイ クル ( C_AREA_OPTIMIZED=0)

• 2 サイ クル ( C_AREA_OPTIMIZED=1)

注記これらはタ イプ B の命令ではあ り ません。 先行する IMM 命令からの影響はあ り ません。

こ れ ら の命令はオプシ ョ ンです。 こ れ ら の命令を使用する には、 バレル シ フ ト 命令を使用する よ う に (C_USE_BARREL=1)、 MicroBlaze を コ ンフ ィ ギュ レー ト する必要があ り ます。

bsrli rD、 rA、 IMM バレル シ フ ト ( 右、 論理即値 )

bsrai rD、 rA、 IMM バレル シ フ ト ( 右、 算術即値 )

bslli rD、 rA、 IMM バレル シ フ ト ( 左、 論理即値 )

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

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド japan.xilinx.com 179UG984 (v2015.1) 2015 年 4 月 15 日UG984 (v2015.4) 2015 年 11 月 18 日

Page 180: MicroBlaze プロセッサ リファレンス ガイド …...M_ACE_IC M_ACE_DC M_AXI_DP DLMB UG984 (v2015.4) 2015 年 11 月 18 日 MicroBlaze プロセッサ リファレンス ガイド

第 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 11

16

21

31

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド japan.xilinx.com 180UG984 (v2015.1) 2015 年 4 月 15 日UG984 (v2015.4) 2015 年 11 月 18 日

Page 181: MicroBlaze プロセッサ リファレンス ガイド …...M_ACE_IC M_ACE_DC M_AXI_DP DLMB UG984 (v2015.4) 2015 年 11 月 18 日 MicroBlaze プロセッサ リファレンス ガイド

第 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 11

16

21

31

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド japan.xilinx.com 181UG984 (v2015.1) 2015 年 4 月 15 日UG984 (v2015.4) 2015 年 11 月 18 日

Page 182: MicroBlaze プロセッサ リファレンス ガイド …...M_ACE_IC M_ACE_DC M_AXI_DP DLMB UG984 (v2015.4) 2015 年 11 月 18 日 MicroBlaze プロセッサ リファレンス ガイド

第 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)

注記この命令は、 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 プロセ ッサ リ フ ァ レンス ガイ ド japan.xilinx.com 182UG984 (v2015.1) 2015 年 4 月 15 日UG984 (v2015.4) 2015 年 11 月 18 日

Page 183: MicroBlaze プロセッサ リファレンス ガイド …...M_ACE_IC M_ACE_DC M_AXI_DP DLMB UG984 (v2015.4) 2015 年 11 月 18 日 MicroBlaze プロセッサ リファレンス ガイド

第 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)

注記こ の命令は、 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 プロセ ッサ リ フ ァ レンス ガイ ド japan.xilinx.com 183UG984 (v2015.1) 2015 年 4 月 15 日UG984 (v2015.4) 2015 年 11 月 18 日

Page 184: MicroBlaze プロセッサ リファレンス ガイド …...M_ACE_IC M_ACE_DC M_AXI_DP DLMB UG984 (v2015.4) 2015 年 11 月 18 日 MicroBlaze プロセッサ リファレンス ガイド

第 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)

注記この命令は、 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 プロセ ッサ リ フ ァ レンス ガイ ド japan.xilinx.com 184UG984 (v2015.1) 2015 年 4 月 15 日UG984 (v2015.4) 2015 年 11 月 18 日

Page 185: MicroBlaze プロセッサ リファレンス ガイド …...M_ACE_IC M_ACE_DC M_AXI_DP DLMB UG984 (v2015.4) 2015 年 11 月 18 日 MicroBlaze プロセッサ リファレンス ガイド

第 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]

レ イテンシ• 28 サイ クル (C_AREA_OPTIMIZED=0)、 30 サイ クル (C_AREA_OPTIMIZED=1)

注記この命令は、 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 プロセ ッサ リ フ ァ レンス ガイ ド japan.xilinx.com 185UG984 (v2015.1) 2015 年 4 月 15 日UG984 (v2015.4) 2015 年 11 月 18 日

Page 186: MicroBlaze プロセッサ リファレンス ガイド …...M_ACE_IC M_ACE_DC M_AXI_DP DLMB UG984 (v2015.4) 2015 年 11 月 18 日 MicroBlaze プロセッサ リファレンス ガイド

第 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)

• 3 サイ クル ( C_AREA_OPTIMIZED=1)

注記これたの命令は、 MicroBlaze のパラ メ ーター C_USE_FPU が 0 よ り 大きい場合のみ使用可能です。

187 ページの表 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 プロセ ッサ リ フ ァ レンス ガイ ド japan.xilinx.com 186UG984 (v2015.1) 2015 年 4 月 15 日UG984 (v2015.4) 2015 年 11 月 18 日

Page 187: MicroBlaze プロセッサ リファレンス ガイド …...M_ACE_IC M_ACE_DC M_AXI_DP DLMB UG984 (v2015.4) 2015 年 11 月 18 日 MicroBlaze プロセッサ リファレンス ガイド

第 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) 1FSR[IO] ESR[EC] 00110

(rD) 1

小な り 001 (rD) 0 (rD) 1 (rD) 0 (rD) 0FSR[IO] ESR[EC] 00110

(rD) 0FSR[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) 0FSR[IO] ESR[EC] 00110

(rD) 0FSR[IO] ESR[EC] 00110

大な り 100 (rD) 1 (rD) 0 (rD) 0 (rD) 0FSR[IO] ESR[EC] 00110

(rD) 0FSR[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) 0FSR[IO] ESR[EC] 00110

(rD) 0FSR[IO] ESR[EC] 00110

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド japan.xilinx.com 187UG984 (v2015.1) 2015 年 4 月 15 日UG984 (v2015.4) 2015 年 11 月 18 日

Page 188: MicroBlaze プロセッサ リファレンス ガイド …...M_ACE_IC M_ACE_DC M_AXI_DP DLMB UG984 (v2015.4) 2015 年 11 月 18 日 MicroBlaze プロセッサ リファレンス ガイド

第 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)

注記この命令は、 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 プロセ ッサ リ フ ァ レンス ガイ ド japan.xilinx.com 188UG984 (v2015.1) 2015 年 4 月 15 日UG984 (v2015.4) 2015 年 11 月 18 日

Page 189: MicroBlaze プロセッサ リファレンス ガイド …...M_ACE_IC M_ACE_DC M_AXI_DP DLMB UG984 (v2015.4) 2015 年 11 月 18 日 MicroBlaze プロセッサ リファレンス ガイド

第 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)

注記この命令は、 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 プロセ ッサ リ フ ァ レンス ガイ ド japan.xilinx.com 189UG984 (v2015.1) 2015 年 4 月 15 日UG984 (v2015.4) 2015 年 11 月 18 日

Page 190: MicroBlaze プロセッサ リファレンス ガイド …...M_ACE_IC M_ACE_DC M_AXI_DP DLMB UG984 (v2015.4) 2015 年 11 月 18 日 MicroBlaze プロセッサ リファレンス ガイド

第 5 章 : MicroBlaze 命令セ ッ ト  アーキテ クチャ

fsqrtFloating 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)

注記この命令は、 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 プロセ ッサ リ フ ァ レンス ガイ ド japan.xilinx.com 190UG984 (v2015.1) 2015 年 4 月 15 日UG984 (v2015.4) 2015 年 11 月 18 日

Page 191: MicroBlaze プロセッサ リファレンス ガイド …...M_ACE_IC M_ACE_DC M_AXI_DP DLMB UG984 (v2015.4) 2015 年 11 月 18 日 MicroBlaze プロセッサ リファレンス ガイド

第 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 プロセ ッサ リ フ ァ レンス ガイ ド japan.xilinx.com 191UG984 (v2015.1) 2015 年 4 月 15 日UG984 (v2015.4) 2015 年 11 月 18 日

Page 192: MicroBlaze プロセッサ リファレンス ガイド …...M_ACE_IC M_ACE_DC M_AXI_DP DLMB UG984 (v2015.4) 2015 年 11 月 18 日 MicroBlaze プロセッサ リファレンス ガイド

第 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 サイ クル ( 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 プロセ ッサ リ フ ァ レンス ガイ ド japan.xilinx.com 192UG984 (v2015.1) 2015 年 4 月 15 日UG984 (v2015.4) 2015 年 11 月 18 日

Page 193: MicroBlaze プロセッサ リファレンス ガイド …...M_ACE_IC M_ACE_DC M_AXI_DP DLMB UG984 (v2015.4) 2015 年 11 月 18 日 MicroBlaze プロセッサ リファレンス ガイド

第 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 プロセ ッサ リ フ ァ レンス ガイ ド japan.xilinx.com 193UG984 (v2015.1) 2015 年 4 月 15 日UG984 (v2015.4) 2015 年 11 月 18 日

Page 194: MicroBlaze プロセッサ リファレンス ガイド …...M_ACE_IC M_ACE_DC M_AXI_DP DLMB UG984 (v2015.4) 2015 年 11 月 18 日 MicroBlaze プロセッサ リファレンス ガイド

第 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 サイ クル ( C_AREA_OPTIMIZED=1)

この命令のブロ ッ キング バージ ョ ンは、 命令が完了でき る まで MicroBlaze のパイプラ イ ンを ス ト ールさ せます。命令がア ト ミ ッ ク でなければ割 り 込みは実行されます。 ア ト ミ ッ ク だ と割 り 込みは実行されません。

注記割 り 込みが実行されな く なって し ま う ので、 こ の命令のブロ ッ キング バージ ョ ンは、 遅延ス ロ ッ ト に配 置し ないで く だ さい。

ノ ンブロ ッ キング バージ ョ ンの場合は、イ ンデッ ク ス変数をデク リ メ ン ト するのに rsubc 命令を使用でき ます。

C_FSL_EXCEPTION が 1 でない限 り 、 e ビ ッ ト に効力はあ り ません。

MicroBlaze パラ メ ーター C_FSL_LINKS が 0 よ り 大き く 、 パラ メ ーター C_USE_EXTENDED_FSL_INSTR が 1 に設定されている場合にのみ、 これらの命令は使用可能です。

パフ ォーマン ス上の理由か ら ど う し て も こ の命令をユーザー モー ド で実行し なければな ら ない場合を除 き、この命令をユーザー モード で実行し ないよ う にし て く だ さい。 リ ン ク の誤用を防ぐ ためのハー ド ウ ェ ア保護がすべて削除されて し まいます。

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド japan.xilinx.com 194UG984 (v2015.1) 2015 年 4 月 15 日UG984 (v2015.4) 2015 年 11 月 18 日

Page 195: MicroBlaze プロセッサ リファレンス ガイド …...M_ACE_IC M_ACE_DC M_AXI_DP DLMB UG984 (v2015.4) 2015 年 11 月 18 日 MicroBlaze プロセッサ リファレンス ガイド

第 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 の場合)、 そ う でない場合は 32 サイ クル (C_AREA_OPTIMIZED=0)

• 1 サイ クル ((rA) = 0 の場合)、 そ う でない場合は 34 サイ クル (C_AREA_OPTIMIZED=1)

注記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 11

16

21

31

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド japan.xilinx.com 195UG984 (v2015.1) 2015 年 4 月 15 日UG984 (v2015.4) 2015 年 11 月 18 日

Page 196: MicroBlaze プロセッサ リファレンス ガイド …...M_ACE_IC M_ACE_DC M_AXI_DP DLMB UG984 (v2015.4) 2015 年 11 月 18 日 MicroBlaze プロセッサ リファレンス ガイド

第 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 11

16

31

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド japan.xilinx.com 196UG984 (v2015.1) 2015 年 4 月 15 日UG984 (v2015.4) 2015 年 11 月 18 日

Page 197: MicroBlaze プロセッサ リファレンス ガイド …...M_ACE_IC M_ACE_DC M_AXI_DP DLMB UG984 (v2015.4) 2015 年 11 月 18 日 MicroBlaze プロセッサ リファレンス ガイド

第 5 章 : MicroBlaze 命令セ ッ ト  アーキテ クチャ

lbu Load Byte Unsigned

説明

レジス タ rA および rB の内容を加算し た結果の メ モ リ ロ ケーシ ョ ンから 1 バイ ト (8 ビ ッ ト ) ロード し ま す。 データはレジス タ rD の最下位バイ ト に配置され、 rD のほかの 3 バイ ト はク リ アにな り ます。

R ビ ッ ト がセ ッ ト されている場合、バイ ト 反転 メ モ リ ロ ケーシ ョ ンが使用され、E ビ ッ ト で定義されてい るエンデ ィ アン と は逆の ものでデータ を ロード し ます (仮想保護モード がイ ネーブルになっている場合)。

仮想保護モー ド がイ ネーブルになっている場合、 データ TLB ミ ス例外が発生し、 ア ド レ スに対応する有 効な変換エン ト リ は TLB では検出されません。

ノ ー ア ク セス ゾーン保護によ り ア ク セスが禁止されている場合は、データ ス ト レージ例外が発生し ます。 これはユーザー モード および仮想保護モード がイネーブルになっている ア ク セスのみに適用されます。

擬似コー ドAddr 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] (データ ス ト レージ例外が生成される場合)

レ イテンシ• 1 サイ クル ( C_AREA_OPTIMIZED=0)

• 2 サイ クル ( C_AREA_OPTIMIZED=1)

注記

MicroBlaze が再順序付け命令を使用する よ う にコ ンフ ィ ギ ュ レー ト されている場合にのみ (C_USE_REORDER_INSTR = 1)、 こ のバイ ト 反転命令は有効です。

lbu rD、 rA、 rB

lbur rD、 rA、 rB

1 1 0 0 0 0 rD rA rB 0 R 0 0 0 0 0 0 0 0 0

0 6 11 16 21 31

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド japan.xilinx.com 197UG984 (v2015.1) 2015 年 4 月 15 日UG984 (v2015.4) 2015 年 11 月 18 日

Page 198: MicroBlaze プロセッサ リファレンス ガイド …...M_ACE_IC M_ACE_DC M_AXI_DP DLMB UG984 (v2015.4) 2015 年 11 月 18 日 MicroBlaze プロセッサ リファレンス ガイド

第 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 サイ クル ( C_AREA_OPTIMIZED=1)

注記

デフ ォル ト で、 タ イプ B 命令は 16 ビ ッ ト の IMM フ ィ ール ド 値を取 り 込み、 それを 32 ビ ッ ト に符号拡張 し て、 即値オぺラ ン ド と し て使用し ます。 こ の動作は、 IMM 命令を使用し て タ イプ B 命令を先行させる こ と で、 上書きする こ と ができ ます。 32 ビ ッ ト の即値の使用に関し ては、 196 ページの 「imm」 を参照し て く だ さい。

lbui rD、 rA、 IMM

1 1 1 0 0 0 rD rA IMM

0 6 11 16 31

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド japan.xilinx.com 198UG984 (v2015.1) 2015 年 4 月 15 日UG984 (v2015.4) 2015 年 11 月 18 日

Page 199: MicroBlaze プロセッサ リファレンス ガイド …...M_ACE_IC M_ACE_DC M_AXI_DP DLMB UG984 (v2015.4) 2015 年 11 月 18 日 MicroBlaze プロセッサ リファレンス ガイド

第 5 章 : MicroBlaze 命令セ ッ ト  アーキテ クチャ

lhu Load Halfword Unsigned

説明

レジス タ rA および rB の内容を加算し た、 ハーフ ワード ア ラ イ ン された結果の メ モ リ ロ ケーシ ョ ンから 1 ハーフ ワード (16 ビ ッ ト ) ロード し ます。データはレジス タ rD の最下位ハーフ ワード に配置され、 rD の 最上位ハーフ ワード はク リ アにな り ます。

R ビ ッ ト がセ ッ ト されている場合、 ハーフ ワード 反転 メ モ リ ロ ケーシ ョ ンが使用され、 ハーフ ワード の 2 バイ ト が反転し、 E ビ ッ ト で定義されているエンデ ィ アン と は逆の ものでデータ を ロード し ます (仮想保 護モード がイ ネーブルになっている場合)。

仮想保護モー ド がイ ネーブルになっている場合、 データ TLB ミ ス例外が発生し、 ア ド レ スに対応する有 効な変換エン ト リ は TLB では検出されません。

ノ ー ア ク セス ゾーン保護によ り ア ク セスが禁止されている場合は、データ ス ト レージ例外が発生し ます。 これはユーザー モード および仮想保護モード がイネーブルになっている ア ク セスのみに適用されます。

ア ド レ スの最下位ビ ッ ト がゼロでない場合は、 ア ラ イ ン されていないデータ ア ク セス例外が発生し ます。

擬似コー ドAddr (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(rD)[16:31] Mem(Addr); (rD)[0:15] 0

変更されるレジス タ• rD (例外が生成されない場合。 例外が生成される と こ のレジス タは変更されません)• MSR[UM]、 MSR[VM]、 MSR[UMS]、 MSR[VMS] (例外が生成される場合)• ESR[EC]、 ESR[S] (例外が生成される場合)• ESR[DIZ] (データ ス ト レージ例外が生成される場合)• ESR[W]、 ESR[Rx] (ア ラ イ ン されていないデータ ア ク セス例外が生成される場合)

レ イテンシ• 1 サイ クル ( C_AREA_OPTIMIZED=0)• 2 サイ クル ( C_AREA_OPTIMIZED=1)

注記

MicroBlaze が再順序付け命令を使用する よ う にコ ンフ ィ ギ ュ レー ト されている場合にのみ (C_USE_REORDER_INSTR = 1)、 こ のハーフ ワード反転命令は有効です。

lhu rD、 rA、 rB

lhur rD、 rA、 rB

1 1 0 0 0 1 rD rA rB 0 R 0 0 0 0 0 0 0 0 0

0 6 11 16 21 31

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド japan.xilinx.com 199UG984 (v2015.1) 2015 年 4 月 15 日UG984 (v2015.4) 2015 年 11 月 18 日

Page 200: MicroBlaze プロセッサ リファレンス ガイド …...M_ACE_IC M_ACE_DC M_AXI_DP DLMB UG984 (v2015.4) 2015 年 11 月 18 日 MicroBlaze プロセッサ リファレンス ガイド

第 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 サイ クル ( C_AREA_OPTIMIZED=1)

注記

デフ ォル ト で、 タ イプ B 命令は 16 ビ ッ ト の IMM フ ィ ール ド 値を取 り 込み、 それを 32 ビ ッ ト に符号拡張 し て、 即値オぺラ ン ド と し て使用し ます。 こ の動作は、 IMM 命令を使用し て タ イプ B 命令を先行させる こ と で、 上書きする こ と ができ ます。 32 ビ ッ ト の即値の使用に関し ては、 196 ページの 「imm」 を参照し て く だ さい。

lhui rD、 rA、 IMM

1 1 1 0 0 1 rD rA IMM

0 6 11 16 31

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド japan.xilinx.com 200UG984 (v2015.1) 2015 年 4 月 15 日UG984 (v2015.4) 2015 年 11 月 18 日

Page 201: MicroBlaze プロセッサ リファレンス ガイド …...M_ACE_IC M_ACE_DC M_AXI_DP DLMB UG984 (v2015.4) 2015 年 11 月 18 日 MicroBlaze プロセッサ リファレンス ガイド

第 5 章 : MicroBlaze 命令セ ッ ト  アーキテ クチャ

lw Load Word

説明

レジス タ rA および rB の内容を加算し た、 ワード ア ラ イ ン された結果の メ モ リ ロ ケーシ ョ ンから 1 ワー ド (32 ビ ッ ト ) ロード し ます。 データはレジス タ rD に配置されます。

R ビ ッ ト がセ ッ ト されている場合、 ロード されたワード のバイ ト が反転され、 E ビ ッ ト で定義されている エンデ ィ アン と は逆のものでデータ を ロード し ます (仮想保護モード がイネーブルになっている場合)。

仮想保護モー ド がイ ネーブルになっている場合、 データ TLB ミ ス例外が発生し、 ア ド レ スに対応する有 効な変換エン ト リ は TLB では検出されません。

ノ ー ア ク セス ゾーン保護によ り ア ク セスが禁止されている場合は、データ ス ト レージ例外が発生し ます。 これはユーザー モード および仮想保護モード がイネーブルになっている ア ク セスのみに適用されます。

ア ド レ スの最下位ビ ッ ト 2 つがゼロでない場合は、 ア ラ イ ン されていないデータ ア ク セス例外が発生し ます。

擬似コー ドAddr (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] (ア ラ イ ン されていないデータ ア ク セス例外が生成される場合)

レ イテンシ• 1 サイ クル ( C_AREA_OPTIMIZED=0)• 2 サイ クル ( C_AREA_OPTIMIZED=1)

注記

MicroBlaze が再順序付け命令を使用する よ う にコ ンフ ィ ギ ュ レー ト されている場合にのみ (C_USE_REORDER_INSTR = 1)、 こ のワード反転命令は有効です。

lw rD、 rA、 rB

lwr rD、 rA、 rB

1 1 0 0 1 0 rD rA rB 0 R 0 0 0 0 0 0 0 0 0

0 6 11 16 21 31

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド japan.xilinx.com 201UG984 (v2015.1) 2015 年 4 月 15 日UG984 (v2015.4) 2015 年 11 月 18 日

Page 202: MicroBlaze プロセッサ リファレンス ガイド …...M_ACE_IC M_ACE_DC M_AXI_DP DLMB UG984 (v2015.4) 2015 年 11 月 18 日 MicroBlaze プロセッサ リファレンス ガイド

第 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 サイ クル ( C_AREA_OPTIMIZED=1)

注記

デフ ォル ト で、 タ イプ B 命令は 16 ビ ッ ト の IMM フ ィ ール ド 値を取 り 込み、 それを 32 ビ ッ ト に符号拡張 し て、 即値オぺラ ン ド と し て使用し ます。 こ の動作は、 IMM 命令を使用し て タ イプ B 命令を先行させる こ と で、 上書きする こ と ができ ます。 32 ビ ッ ト の即値の使用に関し ては、 196 ページの 「imm」 を参照し て く だ さい。

lwi rD、 rA、 IMM

1 1 1 0 1 0 rD rA IMM

0 6 11 16 31

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド japan.xilinx.com 202UG984 (v2015.1) 2015 年 4 月 15 日UG984 (v2015.4) 2015 年 11 月 18 日

Page 203: MicroBlaze プロセッサ リファレンス ガイド …...M_ACE_IC M_ACE_DC M_AXI_DP DLMB UG984 (v2015.4) 2015 年 11 月 18 日 MicroBlaze プロセッサ リファレンス ガイド

第 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 プロセ ッサ リ フ ァ レンス ガイ ド japan.xilinx.com 203UG984 (v2015.1) 2015 年 4 月 15 日UG984 (v2015.4) 2015 年 11 月 18 日

Page 204: MicroBlaze プロセッサ リファレンス ガイド …...M_ACE_IC M_ACE_DC M_AXI_DP DLMB UG984 (v2015.4) 2015 年 11 月 18 日 MicroBlaze プロセッサ リファレンス ガイド

第 5 章 : MicroBlaze 命令セ ッ ト  アーキテ クチャ

変更されるレジス タ• rD および MSR[C] (例外が生成されない場合。 生成される と こ の 2 つは変更されない)

• MSR[UM]、 MSR[VM]、 MSR[UMS]、 MSR[VMS] (TLB ミ ス例外またはデータ ス ト レージ例外が生成される場合)

• ESR[EC]、 ESR[S] (例外が生成される場合)

• ESR[DIZ] (データ ス ト レージ例外が生成される場合)

レ イテンシ• 1 サイ クル ( C_AREA_OPTIMIZED=0)

• 2 サイ クル ( C_AREA_OPTIMIZED=1)

注記

こ の命令は、 セマフ ォやス ピン ロ ッ ク など、 排他的ア ク セス を イ ンプ リ メ ン ト する ために、 SWX と一緒 に使用されます。

キ ャ リ ー フ ラ グ (MSR[C]) はすぐにはセ ッ ト されない可能性があ り ます (パイプラ イ ン ス ト ールの動作に よ る )。 キ ャ リ ー フ ラ グの正し い値を得る ため、 LWX 命令は、 MSRCLR、 MSRSET、 MTS、 または SRC 命令のすぐ後に続ける こ と はでき ません。

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド japan.xilinx.com 204UG984 (v2015.1) 2015 年 4 月 15 日UG984 (v2015.4) 2015 年 11 月 18 日

Page 205: MicroBlaze プロセッサ リファレンス ガイド …...M_ACE_IC M_ACE_DC M_AXI_DP DLMB UG984 (v2015.4) 2015 年 11 月 18 日 MicroBlaze プロセッサ リファレンス ガイド

第 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 の最上位ビ ッ ト が 1 にセ ッ ト されていて、 例外が発生し ない場合、 未処理ア ク セスがすべて完了 し た後に、 MicroBlaze はス リ ープ モード に入 り 、 それを示すためにス リ ープ出力信号をセ ッ ト し ます。 パイプラ イ ンは停止し、 ウ ェーク ア ッ プ入力信号の 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 & 16) = 16 thenenter sleep mode

変更されるレジス タ• PC

• ESR[EC] (特権命令例外が生成される場合)

レ イテンシ• 1 + N サイ クル (N は メ モ リ ア ク セスが完了するのを待機するサイ クル数)

注記

こ の命令の前に imm 命令を先行させる こ と はでき ません。 また遅延ス ロ ッ ト に配置する こ と も でき ま せん。

アセンブラの擬似命令ス リ ープは、 ス リ ープ モー ド に入る ために 「mbar 16」 の代わ り に使用する こ と ができ ます。

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 プロセ ッサ リ フ ァ レンス ガイ ド japan.xilinx.com 205UG984 (v2015.1) 2015 年 4 月 15 日UG984 (v2015.4) 2015 年 11 月 18 日

Page 206: MicroBlaze プロセッサ リファレンス ガイド …...M_ACE_IC M_ACE_DC M_AXI_DP DLMB UG984 (v2015.4) 2015 年 11 月 18 日 MicroBlaze プロセッサ リファレンス ガイド

第 5 章 : MicroBlaze 命令セ ッ ト  アーキテ クチャ

mfs Move From Special Purpose Register

説明

特殊レジス タ rS の内容を レジス タ rD にコ ピーし ます。 特殊レジス タ TLBLO および TLBHI は、 TLBX に よ り イ ンデッ ク ス化された統合 TLB エン ト リ の内容を コ ピーするのに使用されます。

擬似コー ドswitch (rS):case 0x0000 : (rD) PCcase 0x0001 : (rD) MSRcase 0x0003 : (rD) EARcase 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) PVR[x] (where x = 0 to 12)default : (rD) Undefined

変更されるレジス タ• rD

レ イテンシ• 1 サイ クル

注記

アセンブ リ 言語で特殊レジス タ を参照するには、 PC には rpc、 MSR には rmsr、 EAR には rear、 ESR には resr、 FSR には rfsr、 BTR には rbtr、 EDR には redr、 SLR には rslr、 SHR には rshr、 PID には rpid、 ZPR に は rzpr、 TLBLO には rtlblo、 TLBHI には rtlbhi、 TLBX には rtlbx、 PVR0 から PVR12 には rpvr0 から rpvr12 を使用し ます。

MSR か ら読み出された値には、 そのすぐ前に先行する命令の効果を含める こ と ができ ない場合があ り ま す (パイ プ ラ イ ン ス ト ールの動作に よ る )。 MSR に影響し ない命令は、 正し い MSR 値を確約する ため、 MFS 命令よ り 先行させる必要があ り ます。

FSR から読み出された値には、そのすぐ前に先行する命令の効果を含める こ と ができ ない場合があ り ます (パイプラ イ ン ス ト ールの動作によ る )。 FSR に影響し ない命令は、 正しい FSR 値を確約する ため、 MFS 命令よ り 先行させる必要があ り ます。

mfs rD、 rS

1 0 0 1 0 1 rD 0 0 0 0 0 1 0 rS

0 6 11 16 18 31

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド japan.xilinx.com 206UG984 (v2015.1) 2015 年 4 月 15 日UG984 (v2015.4) 2015 年 11 月 18 日

Page 207: MicroBlaze プロセッサ リファレンス ガイド …...M_ACE_IC M_ACE_DC M_AXI_DP DLMB UG984 (v2015.4) 2015 年 11 月 18 日 MicroBlaze プロセッサ リファレンス ガイド

第 5 章 : MicroBlaze 命令セ ッ ト  アーキテ クチャ

MicroBlaze のパラ メ ーター C_*_EXCEPTION が少な く と も 1 つ 1 に設定されている と、 EAR、 ESR、 およ び BTR はオペラ ン ド と し てのみ有効です。

C_FSL_EXCEPTION が 1 に設定 さ れていて、 C_FSL_LINKS が 0 よ り も 大き な値に設定 さ れてい る と、 EDR はオペラ ン ド と し てのみ有効です。

C_USE_FPU が 0 よ り も大き な値に設定されている と、 FSR はオペラ ン ド と し てのみ有効です。

C_USE_STACK_PROTECTION が 1 に設定されている と、SLR および SHR はオペラ ン ド と し てのみ有効で す。

C_USE_MMU > 1 (ユーザー モード ) および C_MMU_TLB_ACCESS = 1 (読み出し ) または 3 (フル) に設定さ れている と、 PID、 ZPR、 TLBLO、 および TLBHI はオペラ ン ド と し てのみ有効です。

C_USE_MMU > 1 (ユーザー モード ) および C_MMU_TLB_ACCESS > 0 (最小) に設定されている と、TLBX は オペラ ン ド と し てのみ有効です。

C_PVR が 1 (基本) または 2 (フル) に設定されている と、 PVR0 はオペラ ン ド と し てのみ有効です。 また、 C_PVR が 2 (フル) に設定されている と、 PVR1 から PVR12 ははオペラ ン ド と し てのみ有効です。

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド japan.xilinx.com 207UG984 (v2015.1) 2015 年 4 月 15 日UG984 (v2015.4) 2015 年 11 月 18 日

Page 208: MicroBlaze プロセッサ リファレンス ガイド …...M_ACE_IC M_ACE_DC M_AXI_DP DLMB UG984 (v2015.4) 2015 年 11 月 18 日 MicroBlaze プロセッサ リファレンス ガイド

第 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 プロセ ッサ リ フ ァ レンス ガイ ド japan.xilinx.com 208UG984 (v2015.1) 2015 年 4 月 15 日UG984 (v2015.4) 2015 年 11 月 18 日

Page 209: MicroBlaze プロセッサ リファレンス ガイド …...M_ACE_IC M_ACE_DC M_AXI_DP DLMB UG984 (v2015.4) 2015 年 11 月 18 日 MicroBlaze プロセッサ リファレンス ガイド

第 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 プロセ ッサ リ フ ァ レンス ガイ ド japan.xilinx.com 209UG984 (v2015.1) 2015 年 4 月 15 日UG984 (v2015.4) 2015 年 11 月 18 日

Page 210: MicroBlaze プロセッサ リファレンス ガイド …...M_ACE_IC M_ACE_DC M_AXI_DP DLMB UG984 (v2015.4) 2015 年 11 月 18 日 MicroBlaze プロセッサ リファレンス ガイド

第 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 プロセ ッサ リ フ ァ レンス ガイ ド japan.xilinx.com 210UG984 (v2015.1) 2015 年 4 月 15 日UG984 (v2015.4) 2015 年 11 月 18 日

Page 211: MicroBlaze プロセッサ リファレンス ガイド …...M_ACE_IC M_ACE_DC M_AXI_DP DLMB UG984 (v2015.4) 2015 年 11 月 18 日 MicroBlaze プロセッサ リファレンス ガイド

第 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 プロセ ッサ リ フ ァ レンス ガイ ド japan.xilinx.com 211UG984 (v2015.1) 2015 年 4 月 15 日UG984 (v2015.4) 2015 年 11 月 18 日

Page 212: MicroBlaze プロセッサ リファレンス ガイド …...M_ACE_IC M_ACE_DC M_AXI_DP DLMB UG984 (v2015.4) 2015 年 11 月 18 日 MicroBlaze プロセッサ リファレンス ガイド

第 5 章 : MicroBlaze 命令セ ッ ト  アーキテ クチャ

mul Multiply

説明

レジス タ rA および rB の内容を乗算し、 レジス タ rD に結果を出力し ます。 これは 32 ビ ッ ト 値を 32 ビ ッ ト の値で乗算し た もので、 64 ビ ッ ト を出力し ます。 こ の値の最下位ワード は rD に配置されます。 最上位 ワード は破棄されます。

擬似コー ド(rD) LSW( (rA) (rB) )

変更されるレジス タ• rD

レ イテンシ• 1 サイ クル ( C_AREA_OPTIMIZED=0)

• 3 サイ クル ( C_AREA_OPTIMIZED=1)

注記

こ の命令は、 ターゲ ッ ト アーキテ ク チャに乗算器プ リ ミ テ ィ ブがあ る場合にのみ有効で、 も し そのプ リ ミ テ ィ ブがあ る場合は、 MicroBlaze のパラ メ ーター C_USE_HW_MUL は 0 よ り も大き な値にな り ます。

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 11

16

21

31

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド japan.xilinx.com 212UG984 (v2015.1) 2015 年 4 月 15 日UG984 (v2015.4) 2015 年 11 月 18 日

Page 213: MicroBlaze プロセッサ リファレンス ガイド …...M_ACE_IC M_ACE_DC M_AXI_DP DLMB UG984 (v2015.4) 2015 年 11 月 18 日 MicroBlaze プロセッサ リファレンス ガイド

第 5 章 : MicroBlaze 命令セ ッ ト  アーキテ クチャ

mulh Multiply High

説明

レ ジ ス タ rA および rB の内容を乗算し、 レ ジ ス タ rD に結果を出力し ます。 こ れは 32 ビ ッ ト 値を 32 ビ ッ ト の符号付きの値で乗算し た もので、64 ビ ッ ト を出力し ます。 こ の値の最上位ワード は rD に配置 されます。 最下位ワード は破棄されます。

擬似コー ド(rD) MSW( (rA) (rB) ), signed

変更されるレジス タ• rD

レ イテンシ• 1 サイ クル ( C_AREA_OPTIMIZED=0)

• 3 サイ クル ( C_AREA_OPTIMIZED=1)

注記

こ の命令は、 ターゲ ッ ト アーキテ クチャに乗算器プ リ ミ テ ィ ブがあ る場合にのみ有効で、 も し そのプ リ ミ テ ィ ブがあ る場合は、 MicroBlaze のパラ メ ーター C_USE_HW_MUL は 2 (Mul64) に設定されます。

MULH が使用されている場合は、 MUL 命令のビ ッ ト 30 および 31 は、 こ の 2 つの命令を区別する た め、 0 にする必要があ り ます。 古いバージ ョ ンの MicroBlaze では、 これら のビ ッ ト は 0 に定義されて いま し たが、 実際の値は関係があ り ませんでし た。

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 11

16

21

31

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド japan.xilinx.com 213UG984 (v2015.1) 2015 年 4 月 15 日UG984 (v2015.4) 2015 年 11 月 18 日

Page 214: MicroBlaze プロセッサ リファレンス ガイド …...M_ACE_IC M_ACE_DC M_AXI_DP DLMB UG984 (v2015.4) 2015 年 11 月 18 日 MicroBlaze プロセッサ リファレンス ガイド

第 5 章 : MicroBlaze 命令セ ッ ト  アーキテ クチャ

mulhuMultiply High Unsigned

説明

レジス タ rA および rB の内容を乗算し、 レジス タ rD に結果を出力し ます。 これは 32 ビ ッ ト の値を 32 ビ ッ ト の符号な しの値で乗算し た もので、 符号な し 64 ビ ッ ト を出力し ます。 こ の値の最上位ワード は rD に配置されます。 最下位ワード は破棄されます。

擬似コー ド(rD) MSW( (rA) (rB) ), unsigned

変更されるレジス タ• rD

レ イテンシ• 1 サイ クル ( C_AREA_OPTIMIZED=0)

• 3 サイ クル ( C_AREA_OPTIMIZED=1)

注記

こ の命令は、 ターゲ ッ ト アーキテ クチャに乗算器プ リ ミ テ ィ ブがあ る場合にのみ有効で、 も し そのプ リ ミ テ ィ ブがあ る場合は、 MicroBlaze のパラ メ ーター C_USE_HW_MUL は 2 (Mul64) に設定されます。

MULHU が使用されている場合は、 MUL 命令のビ ッ ト 30 および 31 は、 この 2 つの命令を区別する た め、 0 にする必要があ り ます。 古いバージ ョ ンの MicroBlaze では、 これら のビ ッ ト は 0 に定義されて いま し たが、 実際の値は関係があ り ませんでし た。

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 11

16

21

31

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド japan.xilinx.com 214UG984 (v2015.1) 2015 年 4 月 15 日UG984 (v2015.4) 2015 年 11 月 18 日

Page 215: MicroBlaze プロセッサ リファレンス ガイド …...M_ACE_IC M_ACE_DC M_AXI_DP DLMB UG984 (v2015.4) 2015 年 11 月 18 日 MicroBlaze プロセッサ リファレンス ガイド

第 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)

• 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 11

16

21

31

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド japan.xilinx.com 215UG984 (v2015.1) 2015 年 4 月 15 日UG984 (v2015.4) 2015 年 11 月 18 日

Page 216: MicroBlaze プロセッサ リファレンス ガイド …...M_ACE_IC M_ACE_DC M_AXI_DP DLMB UG984 (v2015.4) 2015 年 11 月 18 日 MicroBlaze プロセッサ リファレンス ガイド

第 5 章 : MicroBlaze 命令セ ッ ト  アーキテ クチャ

muli Multiply Immediate

説明

レジス タ rA の内容 と IMM の 32 ビ ッ ト に符号拡張された値を乗算し、 レジス タ rD に結果を出力し ます。 これは 32 ビ ッ ト 値を 32 ビ ッ ト の値で乗算し た も ので、 64 ビ ッ ト を出力し ます。 こ の値の最下位ワー ド は rD に配置されます。 最上位ワード は破棄されます。

擬似コー ド(rD) LSW( (rA) sext(IMM) )

変更されるレジス タ• rD

レ イテンシ• 1 サイ クル ( C_AREA_OPTIMIZED=0)

• 3 サイ クル ( C_AREA_OPTIMIZED=1)

注記

デフ ォル ト で、 タ イプ B 命令は 16 ビ ッ ト の IMM フ ィ ール ド 値を取 り 込み、 それを 32 ビ ッ ト に符号拡張 し て、 即値オぺラ ン ド と し て使用し ます。 こ の動作は、 IMM 命令を使用し て タ イプ B 命令を先行させる こ と で、 上書きする こ と ができ ます。 32 ビ ッ ト の即値の使用に関し ては、 196 ページの 「imm」 を参照し て く だ さい。

こ の命令は、 ターゲ ッ ト アーキテ ク チャに乗算器プ リ ミ テ ィ ブがあ る場合にのみ有効で、 も し そのプ リ ミ テ ィ ブがあ る場合は、 MicroBlaze のパラ メ ーター C_USE_HW_MUL は 0 よ り も大き な値にな り ます。

muli rD、 rA、 IMM

0 1 1 0 0 0 rD rA IMM

0 6 11

16

31

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド japan.xilinx.com 216UG984 (v2015.1) 2015 年 4 月 15 日UG984 (v2015.4) 2015 年 11 月 18 日

Page 217: MicroBlaze プロセッサ リファレンス ガイド …...M_ACE_IC M_ACE_DC M_AXI_DP DLMB UG984 (v2015.4) 2015 年 11 月 18 日 MicroBlaze プロセッサ リファレンス ガイド

第 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 11

16

21

31

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド japan.xilinx.com 217UG984 (v2015.1) 2015 年 4 月 15 日UG984 (v2015.4) 2015 年 11 月 18 日

Page 218: MicroBlaze プロセッサ リファレンス ガイド …...M_ACE_IC M_ACE_DC M_AXI_DP DLMB UG984 (v2015.4) 2015 年 11 月 18 日 MicroBlaze プロセッサ リファレンス ガイド

第 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 ビ ッ ト の即値の使用に関し ては、 196 ページの 「imm」 を参照し て く だ さい。

ori rD、 rA、 IMM

1 0 1 0 0 0 rD rA IMM

0 6 11

16

31

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド japan.xilinx.com 218UG984 (v2015.1) 2015 年 4 月 15 日UG984 (v2015.4) 2015 年 11 月 18 日

Page 219: MicroBlaze プロセッサ リファレンス ガイド …...M_ACE_IC M_ACE_DC M_AXI_DP DLMB UG984 (v2015.4) 2015 年 11 月 18 日 MicroBlaze プロセッサ リファレンス ガイド

第 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 11

16

21

31

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド japan.xilinx.com 219UG984 (v2015.1) 2015 年 4 月 15 日UG984 (v2015.4) 2015 年 11 月 18 日

Page 220: MicroBlaze プロセッサ リファレンス ガイド …...M_ACE_IC M_ACE_DC M_AXI_DP DLMB UG984 (v2015.4) 2015 年 11 月 18 日 MicroBlaze プロセッサ リファレンス ガイド

第 5 章 : MicroBlaze 命令セ ッ ト  アーキテ クチャ

pcmpeqPattern 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 11

16

21

31

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド japan.xilinx.com 220UG984 (v2015.1) 2015 年 4 月 15 日UG984 (v2015.4) 2015 年 11 月 18 日

Page 221: MicroBlaze プロセッサ リファレンス ガイド …...M_ACE_IC M_ACE_DC M_AXI_DP DLMB UG984 (v2015.4) 2015 年 11 月 18 日 MicroBlaze プロセッサ リファレンス ガイド

第 5 章 : MicroBlaze 命令セ ッ ト  アーキテ クチャ

pcmpnePattern 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 11

16

21

31

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド japan.xilinx.com 221UG984 (v2015.1) 2015 年 4 月 15 日UG984 (v2015.4) 2015 年 11 月 18 日

Page 222: MicroBlaze プロセッサ リファレンス ガイド …...M_ACE_IC M_ACE_DC M_AXI_DP DLMB UG984 (v2015.4) 2015 年 11 月 18 日 MicroBlaze プロセッサ リファレンス ガイド

第 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 プロセ ッサ リ フ ァ レンス ガイ ド japan.xilinx.com 222UG984 (v2015.1) 2015 年 4 月 15 日UG984 (v2015.4) 2015 年 11 月 18 日

Page 223: MicroBlaze プロセッサ リファレンス ガイド …...M_ACE_IC M_ACE_DC M_AXI_DP DLMB UG984 (v2015.4) 2015 年 11 月 18 日 MicroBlaze プロセッサ リファレンス ガイド

第 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 サイ クル ( 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 プロセ ッサ リ フ ァ レンス ガイ ド japan.xilinx.com 223UG984 (v2015.1) 2015 年 4 月 15 日UG984 (v2015.4) 2015 年 11 月 18 日

Page 224: MicroBlaze プロセッサ リファレンス ガイド …...M_ACE_IC M_ACE_DC M_AXI_DP DLMB UG984 (v2015.4) 2015 年 11 月 18 日 MicroBlaze プロセッサ リファレンス ガイド

第 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 プロセ ッサ リ フ ァ レンス ガイ ド japan.xilinx.com 224UG984 (v2015.1) 2015 年 4 月 15 日UG984 (v2015.4) 2015 年 11 月 18 日

Page 225: MicroBlaze プロセッサ リファレンス ガイド …...M_ACE_IC M_ACE_DC M_AXI_DP DLMB UG984 (v2015.4) 2015 年 11 月 18 日 MicroBlaze プロセッサ リファレンス ガイド

第 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 サイ クル ( C_AREA_OPTIMIZED=1)

こ の命令のブロ ッ キング バージ ョ ンは、 命令が完了でき る まで MicroBlaze のパイプラ イ ンを ス ト ール させます。 命令がア ト ミ ッ ク でなければ割 り 込みは実行されます。 ア ト ミ ッ ク だ と 割 り 込みは実行されません。

注記

割 り 込みが実行されな く なって し ま う ので、 こ の命令のブロ ッ キング バージ ョ ンは、 遅延ス ロ ッ ト に 配置し ないで く だ さい。

MicroBlaze パラ メ ーター C_FSL_LINKS が 0 よ り 大き く 、 パラ メ ーター C_USE_EXTENDED_FSL_INSTR が 1 に設定されている場合にのみ、 これらの命令は使用可能です。

パフ ォーマン ス上の理由から ど う し て も こ の命令をユーザー モード で実行し なければな ら ない場合を 除き、 こ の命令をユーザー モー ド で実行し ないよ う にし て く だ さ い。 リ ン ク の誤用を防ぐためのハー ド ウ ェ ア保護がすべて削除されて し まいます。

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド japan.xilinx.com 225UG984 (v2015.1) 2015 年 4 月 15 日UG984 (v2015.4) 2015 年 11 月 18 日

Page 226: MicroBlaze プロセッサ リファレンス ガイド …...M_ACE_IC M_ACE_DC M_AXI_DP DLMB UG984 (v2015.4) 2015 年 11 月 18 日 MicroBlaze プロセッサ リファレンス ガイド

第 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 11

16

21

31

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド japan.xilinx.com 226UG984 (v2015.1) 2015 年 4 月 15 日UG984 (v2015.4) 2015 年 11 月 18 日

Page 227: MicroBlaze プロセッサ リファレンス ガイド …...M_ACE_IC M_ACE_DC M_AXI_DP DLMB UG984 (v2015.4) 2015 年 11 月 18 日 MicroBlaze プロセッサ リファレンス ガイド

第 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 ビ ッ ト の即値の使用に関し ては、196 ページの「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 11

16

31

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド japan.xilinx.com 227UG984 (v2015.1) 2015 年 4 月 15 日UG984 (v2015.4) 2015 年 11 月 18 日

Page 228: MicroBlaze プロセッサ リファレンス ガイド …...M_ACE_IC M_ACE_DC M_AXI_DP DLMB UG984 (v2015.4) 2015 年 11 月 18 日 MicroBlaze プロセッサ リファレンス ガイド

第 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 プロセ ッサ リ フ ァ レンス ガイ ド japan.xilinx.com 228UG984 (v2015.1) 2015 年 4 月 15 日UG984 (v2015.4) 2015 年 11 月 18 日

Page 229: MicroBlaze プロセッサ リファレンス ガイド …...M_ACE_IC M_ACE_DC M_AXI_DP DLMB UG984 (v2015.4) 2015 年 11 月 18 日 MicroBlaze プロセッサ リファレンス ガイド

第 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 プロセ ッサ リ フ ァ レンス ガイ ド japan.xilinx.com 229UG984 (v2015.1) 2015 年 4 月 15 日UG984 (v2015.4) 2015 年 11 月 18 日

Page 230: MicroBlaze プロセッサ リファレンス ガイド …...M_ACE_IC M_ACE_DC M_AXI_DP DLMB UG984 (v2015.4) 2015 年 11 月 18 日 MicroBlaze プロセッサ リファレンス ガイド

第 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 プロセ ッサ リ フ ァ レンス ガイ ド japan.xilinx.com 230UG984 (v2015.1) 2015 年 4 月 15 日UG984 (v2015.4) 2015 年 11 月 18 日

Page 231: MicroBlaze プロセッサ リファレンス ガイド …...M_ACE_IC M_ACE_DC M_AXI_DP DLMB UG984 (v2015.4) 2015 年 11 月 18 日 MicroBlaze プロセッサ リファレンス ガイド

第 5 章 : MicroBlaze 命令セ ッ ト  アーキテ クチャ

rtsd Return from Subroutine

説明

サブルーチンから戻る と、 rA の内容と IMM フ ィ ール ド (32 ビ ッ ト に符号拡張された もの) で指定され た ロ ケーシ ョ ンに分岐し ます。

こ の命令には常に遅延ス ロ ッ ト があ り ます。 RTSD の後に続 く 命令は、 常に、 分岐先の前に実行されま す。

擬似コー ドPC (rA) + sext(IMM)allow following instruction to complete execution

変更されるレジス タ• PC

レ イテンシ• 1 サイ クル (正し く 分岐予測が行われる場合)

• 2 サイ クル (分岐先キ ャ ッ シュがデ ィ スエーブルの場合)

• 3 サイ クル (分岐予測が間違っている場合)

注記

変換は汎用レジス タ r15 を rA と し て使用する ための ものです。

遅延ス ロ ッ ト は、 IMM、 分岐、 またはブレーク の命令で使用する こ と はでき ません。 割 り 込みおよび外部ハード ウ ェ ア ブレークは、 遅延ス ロ ッ ト の分岐が完了する まで先送 り されます。

rtsd rA、 IMM

1 0 1 1 0 1 1 0 0 0 0 rA IMM

0 6 11

16

31

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド japan.xilinx.com 231UG984 (v2015.1) 2015 年 4 月 15 日UG984 (v2015.4) 2015 年 11 月 18 日

Page 232: MicroBlaze プロセッサ リファレンス ガイド …...M_ACE_IC M_ACE_DC M_AXI_DP DLMB UG984 (v2015.4) 2015 年 11 月 18 日 MicroBlaze プロセッサ リファレンス ガイド

第 5 章 : MicroBlaze 命令セ ッ ト  アーキテ クチャ

sb Store Byte

説明

レジス タ rD の最下位バイ ト の内容を、 レジス タ rA および rB の内容を足し た結果の メ モ リ ロ ケーシ ョ ン に格納し ます。

R ビ ッ ト がセ ッ ト されている場合、バイ ト 反転 メ モ リ ロ ケーシ ョ ンが使用され、E ビ ッ ト で定義されてい るエンデ ィ アン と は逆の ものでデータ を格納し ます (仮想保護モード がイネーブルになっている場合)。

仮想保護モー ド がイ ネーブルになっている場合、 データ TLB ミ ス例外が発生し、 ア ド レ スに対応する有 効な変換エン ト リ は TLB では検出されません。

仮想保護モード がイネーブルになっている と データ ス ト レージ例外が発生し、 ノ ー ア ク セス または読み 出し専用ゾーン保護によ ってア ク セスが禁止されます。 ノー ア ク セス許可はユーザー モー ド の場合にの み発生し ます。

擬似コー ドAddr (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 サイ クル ( C_AREA_OPTIMIZED=1)

注記

MicroBlaze が再順序付け命令を使用する よ う にコ ンフ ィ ギ ュ レー ト されている場合にのみ (C_USE_REORDER_INSTR = 1)、 こ のバイ ト 反転命令は有効です。

sb rD、 rA、 rB

sbr rD、 rA、 rB

1 1 0 1 0 0 rD rA rB 0 R 0 0 0 0 0 0 0 0 0

0 6 11 16 21 31

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド japan.xilinx.com 232UG984 (v2015.1) 2015 年 4 月 15 日UG984 (v2015.4) 2015 年 11 月 18 日

Page 233: MicroBlaze プロセッサ リファレンス ガイド …...M_ACE_IC M_ACE_DC M_AXI_DP DLMB UG984 (v2015.4) 2015 年 11 月 18 日 MicroBlaze プロセッサ リファレンス ガイド

第 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 サイ クル ( C_AREA_OPTIMIZED=1)

注記

デフ ォル ト で、 タ イプ B 命令は 16 ビ ッ ト の IMM フ ィ ール ド 値を取 り 込み、 それを 32 ビ ッ ト に符号拡張 し て、 即値オぺラ ン ド と し て使用し ます。 こ の動作は、 IMM 命令を使用し て タ イプ B 命令を先行させる こ と で、 上書きする こ と ができ ます。 32 ビ ッ ト の即値の使用に関し ては、 196 ページの 「imm」 を参照し て く だ さい。

sbi rD、 rA、 IMM

1 1 1 1 0 0 rD rA IMM

0 6 11 16 31

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド japan.xilinx.com 233UG984 (v2015.1) 2015 年 4 月 15 日UG984 (v2015.4) 2015 年 11 月 18 日

Page 234: MicroBlaze プロセッサ リファレンス ガイド …...M_ACE_IC M_ACE_DC M_AXI_DP DLMB UG984 (v2015.4) 2015 年 11 月 18 日 MicroBlaze プロセッサ リファレンス ガイド

第 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 11

16

31

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド japan.xilinx.com 234UG984 (v2015.1) 2015 年 4 月 15 日UG984 (v2015.4) 2015 年 11 月 18 日

Page 235: MicroBlaze プロセッサ リファレンス ガイド …...M_ACE_IC M_ACE_DC M_AXI_DP DLMB UG984 (v2015.4) 2015 年 11 月 18 日 MicroBlaze プロセッサ リファレンス ガイド

第 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 11

16

31

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド japan.xilinx.com 235UG984 (v2015.1) 2015 年 4 月 15 日UG984 (v2015.4) 2015 年 11 月 18 日

Page 236: MicroBlaze プロセッサ リファレンス ガイド …...M_ACE_IC M_ACE_DC M_AXI_DP DLMB UG984 (v2015.4) 2015 年 11 月 18 日 MicroBlaze プロセッサ リファレンス ガイド

第 5 章 : MicroBlaze 命令セ ッ ト  アーキテ クチャ

sh Store Halfword

説明

レ ジ ス タ rD の最下位ハーフ ワー ド の内容を、 レジ ス タ rA および rB の内容を足し た結果の、 ハーフ ワード にア ラ イ ン された メ モ リ ロ ケーシ ョ ンに格納し ます。

R ビ ッ ト がセ ッ ト されている場合、 ハーフ ワー ド 反転 メ モ リ ロ ケーシ ョ ンが使用され、 ハーフ ワー ド の 2 バイ ト が反転し、 E ビ ッ ト で定義されているエンデ ィ アン と は逆のものでデータ を格納し ます (仮 想保護モード がイ ネーブルになっている場合)。

仮想保護モード がイネーブルになっている場合、 データ TLB ミ ス例外が発生し、 ア ド レ スに対応する 有効な変換エン ト リ は TLB では検出されません。

仮想保護モード がイネーブルになっている とデータ ス ト レージ例外が発生し、 ノー ア ク セス または読 み出し専用ゾーン保護によ ってア ク セスが禁止されます。 ノ ー ア ク セス許可はユーザー モード の場合 にのみ発生し ます。

ア ド レ スの最下位ビ ッ ト がゼロでない場合は、 ア ラ イ ン されていないデータ ア ク セス例外が発生し ま す。

擬似コー ドAddr (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] (ア ラ イ ン されていないデータ ア ク セス例外が生成される場合)

レ イテンシ• 1 サイ クル ( C_AREA_OPTIMIZED=0)• 2 サイ クル ( C_AREA_OPTIMIZED=1)

注記

MicroBlaze が再順序付け命令を使用する よ う にコ ンフ ィ ギュ レー ト されている場合にのみ (C_USE_REORDER_INSTR = 1)、 このハーフ ワード 反転命令は有効です。

sh rD、 rA、 rB

shr rD、 rA、 rB

1 1 0 1 0 1 rD rA rB 0 R 0 0 0 0 0 0 0 0 0

0 6 11 16 21 31

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド japan.xilinx.com 236UG984 (v2015.1) 2015 年 4 月 15 日UG984 (v2015.4) 2015 年 11 月 18 日

Page 237: MicroBlaze プロセッサ リファレンス ガイド …...M_ACE_IC M_ACE_DC M_AXI_DP DLMB UG984 (v2015.4) 2015 年 11 月 18 日 MicroBlaze プロセッサ リファレンス ガイド

第 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 サイ クル ( C_AREA_OPTIMIZED=1)

注記

デフ ォル ト で、 タ イプ B 命令は 16 ビ ッ ト の IMM フ ィ ール ド値を取 り 込み、 それを 32 ビ ッ ト に符号拡 張し て、 即値オぺラ ン ド と し て使用し ます。 こ の動作は、 IMM 命令を使用し て タ イプ B 命令を先行さ せる こ と で、 上書きする こ と ができ ます。 32 ビ ッ ト の即値の使用に関し ては、 196 ページの 「imm」 を 参照し て く だ さい。

shi rD、 rA、 IMM

1 1 1 1 0 1 rD rA IMM

0 6 11 16 31

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド japan.xilinx.com 237UG984 (v2015.1) 2015 年 4 月 15 日UG984 (v2015.4) 2015 年 11 月 18 日

Page 238: MicroBlaze プロセッサ リファレンス ガイド …...M_ACE_IC M_ACE_DC M_AXI_DP DLMB UG984 (v2015.4) 2015 年 11 月 18 日 MicroBlaze プロセッサ リファレンス ガイド

第 5 章 : MicroBlaze 命令セ ッ ト  アーキテ クチャ

sra Shift Right Arithmetic

説明

rA の内容を 1 ビ ッ ト 右にシフ ト させ、 結果を rD に配置し ます。 rA の最上位ビ ッ ト (つま り 符号ビ ッ ト ) は、rD の最上位ビ ッ ト に配置されます。シフ ト チェーンから出力される最下位ビ ッ ト はキ ャ リ ー フ ラ グに配置されます。

擬似コー ド(rD)[0] (rA)[0](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 11

16

31

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド japan.xilinx.com 238UG984 (v2015.1) 2015 年 4 月 15 日UG984 (v2015.4) 2015 年 11 月 18 日

Page 239: MicroBlaze プロセッサ リファレンス ガイド …...M_ACE_IC M_ACE_DC M_AXI_DP DLMB UG984 (v2015.4) 2015 年 11 月 18 日 MicroBlaze プロセッサ リファレンス ガイド

第 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 11

16

31

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド japan.xilinx.com 239UG984 (v2015.1) 2015 年 4 月 15 日UG984 (v2015.4) 2015 年 11 月 18 日

Page 240: MicroBlaze プロセッサ リファレンス ガイド …...M_ACE_IC M_ACE_DC M_AXI_DP DLMB UG984 (v2015.4) 2015 年 11 月 18 日 MicroBlaze プロセッサ リファレンス ガイド

第 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 11

16

31

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド japan.xilinx.com 240UG984 (v2015.1) 2015 年 4 月 15 日UG984 (v2015.4) 2015 年 11 月 18 日

Page 241: MicroBlaze プロセッサ リファレンス ガイド …...M_ACE_IC M_ACE_DC M_AXI_DP DLMB UG984 (v2015.4) 2015 年 11 月 18 日 MicroBlaze プロセッサ リファレンス ガイド

第 5 章 : MicroBlaze 命令セ ッ ト  アーキテ クチャ

sw Store Word

説明

レジス タ rD の内容に、 レジス タ rA および rB の内容を足し た結果を、 ワード にア ラ イ ン された メ モ リ ロ ケーシ ョ ンに格納し ます。

R ビ ッ ト がセ ッ ト されている場合、 格納されたワード のバイ ト が反転され、 E ビ ッ ト で定義されているエ ンデ ィ アン と は逆のものでデータ を格納し ます (仮想保護モード がイ ネーブルになっている場合)。

仮想保護モー ド がイ ネーブルになっている場合、 データ TLB ミ ス例外が発生し、 ア ド レ スに対応する有 効な変換エン ト リ は TLB では検出されません。

仮想保護モード がイネーブルになっている と データ ス ト レージ例外が発生し、 ノ ー ア ク セス または読み 出し専用ゾーン保護によ ってア ク セスが禁止されます。 ノー ア ク セス許可はユーザー モー ド の場合にの み発生し ます。

ア ド レ スの最下位ビ ッ ト 2 つがゼロでない場合は、 ア ラ イ ン されていないデータ ア ク セス例外が発生し ます。

擬似コー ドAddr (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 サイ クル ( C_AREA_OPTIMIZED=1)

注記

MicroBlaze が再順序付け命令を使用する よ う にコ ンフ ィ ギ ュ レー ト されている場合にのみ (C_USE_REORDER_INSTR = 1)、 こ のワード反転命令は有効です。

sw rD、 rA、 rB

swr rD、 rA、 rB

1 1 0 1 1 0 rD rA rB 0 R 0 0 0 0 0 0 0 0 0

0 6 11 16 21 31

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド japan.xilinx.com 241UG984 (v2015.1) 2015 年 4 月 15 日UG984 (v2015.4) 2015 年 11 月 18 日

Page 242: MicroBlaze プロセッサ リファレンス ガイド …...M_ACE_IC M_ACE_DC M_AXI_DP DLMB UG984 (v2015.4) 2015 年 11 月 18 日 MicroBlaze プロセッサ リファレンス ガイド

第 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 11

16

31

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド japan.xilinx.com 242UG984 (v2015.1) 2015 年 4 月 15 日UG984 (v2015.4) 2015 年 11 月 18 日

Page 243: MicroBlaze プロセッサ リファレンス ガイド …...M_ACE_IC M_ACE_DC M_AXI_DP DLMB UG984 (v2015.4) 2015 年 11 月 18 日 MicroBlaze プロセッサ リファレンス ガイド

第 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 11

16

31

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド japan.xilinx.com 243UG984 (v2015.1) 2015 年 4 月 15 日UG984 (v2015.4) 2015 年 11 月 18 日

Page 244: MicroBlaze プロセッサ リファレンス ガイド …...M_ACE_IC M_ACE_DC M_AXI_DP DLMB UG984 (v2015.4) 2015 年 11 月 18 日 MicroBlaze プロセッサ リファレンス ガイド

第 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 サイ クル ( C_AREA_OPTIMIZED=1)

注記

デフ ォル ト で、 タ イプ B 命令は 16 ビ ッ ト の IMM フ ィ ール ド 値を取 り 込み、それを 32 ビ ッ ト に符号 拡張し て、 即値オぺラ ン ド と し て使用し ます。 こ の動作は、 IMM 命令を使用し て タ イプ B 命令を先 行 さ せる こ と で、 上書きする こ と がで き ます。 32 ビ ッ ト の即値の使用に関し ては、 196 ページの 「imm」 を参照し て く だ さい。

swi rD、 rA、 IMM

1 1 1 1 1 0 rD rA IMM

0 6 11 16 31

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド japan.xilinx.com 244UG984 (v2015.1) 2015 年 4 月 15 日UG984 (v2015.4) 2015 年 11 月 18 日

Page 245: MicroBlaze プロセッサ リファレンス ガイド …...M_ACE_IC M_ACE_DC M_AXI_DP DLMB UG984 (v2015.4) 2015 年 11 月 18 日 MicroBlaze プロセッサ リファレンス ガイド

第 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 プロセ ッサ リ フ ァ レンス ガイ ド japan.xilinx.com 245UG984 (v2015.1) 2015 年 4 月 15 日UG984 (v2015.4) 2015 年 11 月 18 日

Page 246: MicroBlaze プロセッサ リファレンス ガイド …...M_ACE_IC M_ACE_DC M_AXI_DP DLMB UG984 (v2015.4) 2015 年 11 月 18 日 MicroBlaze プロセッサ リファレンス ガイド

第 5 章 : MicroBlaze 命令セ ッ ト  アーキテ クチャ

変更されるレジス タ• MSR[C] (予約が生成されない限 り )

• MSR[UM]、 MSR[VM]、 MSR[UMS]、 MSR[VMS] (TLB ミ ス例外またはデータ ス ト レージ例外が生成される場合)

• ESR[EC]、 ESR[S] (例外が生成される場合)

• ESR[DIZ] (データ ス ト レージ例外が生成される場合)

レ イテンシ• 1 サイ クル ( C_AREA_OPTIMIZED=0)

• 2 サイ クル ( C_AREA_OPTIMIZED=1)

注記

こ の命令は、 セマフ ォやス ピン ロ ッ ク など、 排他的ア ク セス を イ ンプ リ メ ン ト する ために、 LWX と一緒 に使用されます。

キ ャ リ ー フ ラ グ (MSR[C]) はすぐにはセ ッ ト されない可能性があ り ます (パイプラ イ ン ス ト ールの動作に よ る )。 キ ャ リ ー フ ラ グの正しい値を得る ため、 SWX 命令は、 MSRCLR、 MSRSET、 MTS、 または SRC 命令のすぐ後に続ける こ と はでき ません。

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド japan.xilinx.com 246UG984 (v2015.1) 2015 年 4 月 15 日UG984 (v2015.4) 2015 年 11 月 18 日

Page 247: MicroBlaze プロセッサ リファレンス ガイド …...M_ACE_IC M_ACE_DC M_AXI_DP DLMB UG984 (v2015.4) 2015 年 11 月 18 日 MicroBlaze プロセッサ リファレンス ガイド

第 5 章 : MicroBlaze 命令セ ッ ト  アーキテ クチャ

wdc Write to Data Cache

説明

キ ャ ッ シ ュ ラ イ ンを無効化またはフ ラ ッ シ ュする ため、 データ キ ャ ッ シ ュ タ グに書き込みます。 F ビ ッ ト をセ ッ ト するにはニーモニ ッ ク wdc.flush を、 T ビ ッ ト をセ ッ ト するには wdc.clear を、 E、 F、 T ビ ッ ト をセ ッ ト するには wdc.ext.flush を、 E および T ビ ッ ト をセ ッ ト するには wdc.ext.clear を使用し ます。

C_DCACHE_USE_WRITEBACK が 1 に設定されている場合、 F ビ ッ ト がセ ッ ト されていれば、 こ の命令 はキ ャ ッ シ ュ ラ イ ン を フ ラ ッ シ ュ し て無効化し ます。 そ う でない場合は、 キ ャ ッ シ ュ ラ イ ン を無効化に するだけで、 メ モ リ に書き込まれていないデータ を破棄し ます。 T ビ ッ ト がセ ッ ト されている場合は、 一 致し ている ア ド レ スのキ ャ ッ シ ュ ラ イ ンのみが無効にな り ます。 rB を加えたレジ ス タ rA は、 関係する キ ャ ッ シ ュ ラ イ ンのア ド レ スです。 E ビ ッ ト は考慮されません。

C_DCACHE_USE_WRITEBACK が 0 に ク リ ア される場合は、 E ビ ッ ト がセ ッ ト されていなければ、 こ の 命令はキ ャ ッ シ ュ ラ イ ンを無効にし ます。レジス タ rA には関係する キ ャ ッ シ ュ ラ イ ンのア ド レ スが含ま れ、 レジス タ rB の値は使用されません。 E ビ ッ ト が 1 にセ ッ ト されている場合は、 外部キ ャ ッ シ ュの一 致し ている ア ド レ ス を、 E ビ ッ ト の値によ って、 無効化するかフ ラ ッ シュする よ う に、 MicroBlaze が リ ク エス ト し ます。 C_INTERCONNECT が 3 (ACE) に設定されている と きにのみ、 E ビ ッ ト は考慮されます。

MicroBlaze が MMU を使用する よ う に (C_USE_MMU >= 1) コ ン フ ィ ギ ュ レー ト されている場合、 この命令 は特権命令です。 つま り 、 命令がユーザー モー ド (MSR[UM] = 1) で実行される と、 特権命令例外が発生 し ます。

擬似コー ドif MSR[UM] = 1 thenESR[EC] 00111

elseif C_DCACHE_USE_WRITEBACK = 1 thenaddress (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

wdcwdc.flushwdc.clearwdc.ext.flushwdc.ext.clear

rA、 rBrA、 rBrA、 rBrA、 rBrA、 rB

1 0 0 1 0 0 0 0 0 0 0 rA rB E 0 0 0 1 1 F 0 1 T 0

0 6 11 16 21 27 31

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド japan.xilinx.com 247UG984 (v2015.1) 2015 年 4 月 15 日UG984 (v2015.4) 2015 年 11 月 18 日

Page 248: MicroBlaze プロセッサ リファレンス ガイド …...M_ACE_IC M_ACE_DC M_AXI_DP DLMB UG984 (v2015.4) 2015 年 11 月 18 日 MicroBlaze プロセッサ リファレンス ガイド

第 5 章 : MicroBlaze 命令セ ッ ト  アーキテ クチャ

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 サイ クル ( C_AREA_OPTIMIZED=1 の wdc)• 3 サイ クル ( C_AREA_OPTIMIZED=0 の wdc)• 2 + N サイ クル (wdc.flush。 N は随時 メ モ リ にキ ャ ッ シ ュ ラ イ ンをフ ラ ッ シュするのに必要な ク ロ ッ ク サイ クル

数)

注記

wdc, wdc.flush および wdc.clear 命令は、 データ キ ャ ッ シ ュ イネーブル (MSR[DCE]) からは独立し ていて、 データ キ ャ ッ シ ュがイ ネーブルになっていて もデ ィ スエーブルになっていて も使用でき ます。

wdc.clear 命令は、 ダ イ レ ク ト メ モ リ ア ク セス デバイ スによ って書き込まれるバッ フ ァーなど、 メ モ リ の 特定エ リ アを無効化する ための も のです。 こ の命令を使用する こ と によ り 、 ほかのキ ャ ッ シ ュ ラ イ ンが 誤って無効化された り 、メ モ リ にまだ書き込まれていないデータ を破棄し て し まわないよ う にする こ と ができ ます。

パラ メ ーター C_USE_MMU の設定にかかわらず、また MMU が仮想モード であって も リ アル モード であっ て も、 影響する キ ャ ッ シ ュ ラ イ ンのア ド レ スは常に物理ア ド レ スです。

キ ャ ッ シ ュ全体を フ ラ ッ シ ュするのにループで wdc.flush を使用し ている場合、キ ャ ッ シュ ベース ア ド レ スに Ra、 ループ カ ウ ン ターに Rb を使用する こ と によ り 、 ループを最適化でき ます。

addik 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 プロセ ッサ リ フ ァ レンス ガイ ド japan.xilinx.com 248UG984 (v2015.1) 2015 年 4 月 15 日UG984 (v2015.4) 2015 年 11 月 18 日

Page 249: MicroBlaze プロセッサ リファレンス ガイド …...M_ACE_IC M_ACE_DC M_AXI_DP DLMB UG984 (v2015.4) 2015 年 11 月 18 日 MicroBlaze プロセッサ リファレンス ガイド

第 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 11

16

31

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド japan.xilinx.com 249UG984 (v2015.1) 2015 年 4 月 15 日UG984 (v2015.4) 2015 年 11 月 18 日

Page 250: MicroBlaze プロセッサ リファレンス ガイド …...M_ACE_IC M_ACE_DC M_AXI_DP DLMB UG984 (v2015.4) 2015 年 11 月 18 日 MicroBlaze プロセッサ リファレンス ガイド

第 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 11

16

21

31

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド japan.xilinx.com 250UG984 (v2015.1) 2015 年 4 月 15 日UG984 (v2015.4) 2015 年 11 月 18 日

Page 251: MicroBlaze プロセッサ リファレンス ガイド …...M_ACE_IC M_ACE_DC M_AXI_DP DLMB UG984 (v2015.4) 2015 年 11 月 18 日 MicroBlaze プロセッサ リファレンス ガイド

第 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 ビ ッ ト の即値の使用に関し ては、 196 ページの 「imm」 を参照し て く だ さい。

xori rD、 rA、 IMM

1 0 1 0 1 0 rD rA IMM

0 6 11

16

31

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド japan.xilinx.com 251UG984 (v2015.1) 2015 年 4 月 15 日UG984 (v2015.4) 2015 年 11 月 18 日

Page 252: MicroBlaze プロセッサ リファレンス ガイド …...M_ACE_IC M_ACE_DC M_AXI_DP DLMB UG984 (v2015.4) 2015 年 11 月 18 日 MicroBlaze プロセッサ リファレンス ガイド

付録 A 

パフ ォーマンスおよびリ ソース使用率

パフ ォーマンスこ のコ アのパフ ォーマン ス特性化は、 マージン システム手法を用いて行われています。 マージン システム特性化の 詳細は、 『Vivado Design Suite ユーザー ガ イ ド : IP を使用し た設計』 (UG896) の 「IP Characterization and fMAX Margin System Methodology」 を参照し て く ださい。

最大周波数

MicroBlaze コ アの最大周波数は、 表 A-1 に リ ス ト されています。

注記 : Zynq®-7000 の結果は、 7 シ リ ーズの結果に類似し ている と予想されます。

リ ソース使用量さ まざまなパラ メ ーター コ ンフ ィ ギ ュ レーシ ョ ンの MicroBlaze コ アの リ ソース使用率は、 Virtex-7 (表 A-2)、 Kintex- 7 (表 A-3)、Artix-7 (表 A-4)、Virtex UltraScale (表 A-5)、および Kintex UltraScale (表 A-6) デバイ スで計測されています。

注記 : Zynq®-7000 の結果は、 7 シ リ ーズの結果に類似し ている と予想されます。

計測された コ ン フ ィ ギ ュ レーシ ョ ンぞれそれのパラ メ ーター値は表 A-7 に リ ス ト されています。 これら のコ ン フ ィ ギュ レーシ ョ ンは、MicroBlaze のコ ンフ ィ ギュ レーシ ョ ン ウ ィ ザード に含まれているテンプレー ト に直接対応し てい ます。

表 A‐1 : 最大周波数

フ ァ ミ リ Fmax (MHz)

Virtex®-7 373

Kintex®-7 385

Artix®-7 254

Virtex UltraScale™ 458

Kintex UltraScale 430

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド japan.xilinx.com 252UG984 (v2015.1) 2015 年 4 月 15 日UG984 (v2015.4) 2015 年 11 月 18 日

Page 253: MicroBlaze プロセッサ リファレンス ガイド …...M_ACE_IC M_ACE_DC M_AXI_DP DLMB UG984 (v2015.4) 2015 年 11 月 18 日 MicroBlaze プロセッサ リファレンス ガイド

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

表 A‐2 : デバイス使用率 ‐ Virtex‐7 FPGA (XC7VX485T ffg1761‐3) 

コ ン フ ィ ギュ レーシ ョ ン

デバイス リ ソース

LUT FFFmax(MHz)

最小エ リ ア 663 228 362

最大パフ ォーマン ス 3863 3063 223

最大周波数 909 546 362

MMU を使用し た Linux 3646 3223 225

MMU を使用し た低性能 Linux 3121 2588 219

標準 2066 1777 244

表 A‐3 : デバイス使用率 ‐ Kintex‐7 FPGA (XC7K325T ffg900‐3) 

コ ン フ ィ ギュ レーシ ョ ン

デバイス リ ソース

LUT FFFmax(MHz)

最小エ リ ア 654 220 355

最大パフ ォーマン ス 3972 3063 212

最大周波数 912 546 355

MMU を使用し た Linux 3668 3213 221

MMU を使用し た低性能 Linux 3101 2576 219

標準 2064 1777 237

表 A‐4 : デバイス使用率 ‐ Artix‐7 FPGA (XC7A200T fbg676‐3) 

コ ン フ ィ ギュ レーシ ョ ン

デバイス リ ソース

LUT FFFmax(MHz)

最小エ リ ア 648 214 234

最大パフ ォーマン ス 3879 3064 154

最大周波数 906 545 234

MMU を使用し た Linux 3653 3218 142

MMU を使用し た低性能 Linux 3108 2582 153

標準 2070 1777 190

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド japan.xilinx.com 253UG984 (v2015.1) 2015 年 4 月 15 日UG984 (v2015.4) 2015 年 11 月 18 日

Page 254: MicroBlaze プロセッサ リファレンス ガイド …...M_ACE_IC M_ACE_DC M_AXI_DP DLMB UG984 (v2015.4) 2015 年 11 月 18 日 MicroBlaze プロセッサ リファレンス ガイド

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

表 A‐5 : デバイス使用率 ‐ Virtex UltraScale FPGA (XCVU095 ffvd1924‐3) 

コ ン フ ィ ギュ レーシ ョ ン

デバイス リ ソース

LUT FFFmax(MHz)

最小エ リ ア 584 214 404

最大パフ ォーマン ス 3923 3061 263

最大周波数 908 545 404

MMU を使用し た Linux 3618 3204 251

MMU を使用し た低性能 Linux 3086 2575 254

標準 2052 1776 320

表 A‐6 : デバイス使用率 ‐ Kintex UltraScale FPGA (XCKU040 ffva1156‐3) 

コ ン フ ィ ギュ レーシ ョ ン

デバイス リ ソース

LUT FFFmax(MHz)

最小エ リ ア 576 217 410

最大パフ ォーマン ス 3938 3061 272

最大周波数 906 545 410

MMU を使用し た Linux 3613 3204 241

MMU を使用し た低性能 Linux 3080 2575 244

標準 2062 1776 285

表 A‐7 : パラ メ ーター コ ン フ ィ ギュ レーシ ョ ン

パラ メ ーター

コ ン フ ィ ギュ レーシ ョ ン パラ メ ーター値

最小

 エリ

最大

 パフ

ォー

マン

最大

 周

波数

Linux 

(MMU を

使用)

低性

能 Linux

 (MMU を

使用)

標準

C_ALLOW_DCACHE_WR 1 1 1 1 1 1

C_ALLOW_ICACHE_WR 1 1 1 1 1 1

C_AREA_OPTIMIZED 1 0 0 0 0 0

C_CACHE_BYTE_SIZE 4096 32768 4096 16384 8192 8192

C_DCACHE_BYTE_SIZE 4096 32768 4096 16384 8192 8192

C_DCACHE_LINE_LEN 4 8 4 4 4 4

C_DCACHE_USE_WRITEBACK 0 1 0 0 0 0

C_DEBUG_ENABLED 0 1 0 1 1 1

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド japan.xilinx.com 254UG984 (v2015.1) 2015 年 4 月 15 日UG984 (v2015.4) 2015 年 11 月 18 日

Page 255: MicroBlaze プロセッサ リファレンス ガイド …...M_ACE_IC M_ACE_DC M_AXI_DP DLMB UG984 (v2015.4) 2015 年 11 月 18 日 MicroBlaze プロセッサ リファレンス ガイド

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

C_DIV_ZERO_EXCEPTION 0 0 0 1 0 0

C_M_AXI_D_BUS_EXCEPTION 0 0 0 1 1 1

C_FPU_EXCEPTION 0 0 0 0 0 0

C_FSL_EXCEPTION 0 0 0 0 0 0

C_FSL_LINKS 0 0 1 0 0 0

C_ICACHE_LINE_LEN 4 8 4 8 4 8

C_ILL_OPCODE_EXCEPTION 0 0 0 1 1 0

C_M_AXI_I_BUS_EXCEPTION 0 0 0 1 1 0

C_MMU_DTLB_SIZE 2 4 2 4 4 4

C_MMU_ITLB_SIZE 1 2 1 2 2 2

C_MMU_TLB_ACCESS 3 3 3 3 3 3

C_MMU_ZONES 2 2 2 2 2 2

C_NUMBER_OF_PC_BRK 0 1 1 1 1 2

C_NUMBER_OF_RD_ADDR_BRK 0 0 0 0 0 0

C_NUMBER_OF_WR_ADDR_BRK 0 0 0 0 0 0

C_OPCODE_0x0_ILLEGAL 0 0 0 1 1 0

C_PVR 0 0 0 2 0 0

C_UNALIGNED_EXCEPTIONS 0 0 0 1 1 0

C_USE_BARREL 0 1 0 1 1 1

C_USE_DCACHE 0 1 0 1 1 1

C_USE_DIV 0 1 0 1 0 0

C_USE_EXTENDED_FSL_INSTR 0 0 0 0 0 0

C_USE_FPU 0 2 0 0 0 0

C_USE_HW_MUL 0 2 0 2 1 1

C_USE_ICACHE 0 1 0 1 1 1

C_USE_MMU 0 0 0 3 3 0

C_USE_MSR_INSTR 0 1 0 1 1 1

C_USE_PCMP_INSTR 0 1 0 1 1 1

C_USE_REORDER_INSTR 0 1 1 1 1 1

C_USE_BRANCH_TARGET_CACHE 0 1 0 0 0 0

C_BRANCH_TARGET_CACHE_SIZE 0 0 0 0 0 0

C_ICACHE_STREAMS 0 1 0 1 0 0

C_ICACHE_VICTIMS 0 8 0 8 0 0

C_DCACHE_VICTIMS 0 8 0 8 0 0

C_ICACHE_FORCE_TAG_LUTRAM 0 0 0 0 0 0

表 A‐7 : パラ メ ーター コ ン フ ィ ギュ レーシ ョ ン (続き)

パラ メ ーター

コ ン フ ィ ギュ レーシ ョ ン パラ メ ーター値

最小

 エリ

最大

 パフ

ォー

マン

最大

 周

波数

Linux 

(MMU を

使用)

低性

能 Linux

 (MMU を

使用)

標準

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド japan.xilinx.com 255UG984 (v2015.1) 2015 年 4 月 15 日UG984 (v2015.4) 2015 年 11 月 18 日

Page 256: MicroBlaze プロセッサ リファレンス ガイド …...M_ACE_IC M_ACE_DC M_AXI_DP DLMB UG984 (v2015.4) 2015 年 11 月 18 日 MicroBlaze プロセッサ リファレンス ガイド

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

C_DCACHE_FORCE_TAG_LUTRAM 0 0 0 0 0 0

C_ICACHE_ALWAYS_USED 0 1 0 1 1 0

C_DCACHE_ALWAYS_USED 0 1 0 1 1 0

C_D_AXI 0 1 0 1 1 0

C_USE_INTERRUPT 0 0 0 1 1 0

表 A‐7 : パラ メ ーター コ ン フ ィ ギュ レーシ ョ ン (続き)

パラ メ ーター

コ ン フ ィ ギュ レーシ ョ ン パラ メ ーター値

最小

 エリ

最大

 パフ

ォー

マン

最大

 周

波数

Linux 

(MMU を

使用)

低性

能 Linux

 (MMU を

使用)

標準

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド japan.xilinx.com 256UG984 (v2015.1) 2015 年 4 月 15 日UG984 (v2015.4) 2015 年 11 月 18 日

Page 257: MicroBlaze プロセッサ リファレンス ガイド …...M_ACE_IC M_ACE_DC M_AXI_DP DLMB UG984 (v2015.4) 2015 年 11 月 18 日 MicroBlaze プロセッサ リファレンス ガイド

付録 B 

その他のリ ソースおよび法的通知

ザイ リ ン クス リ ソースアンサー、 資料、 ダウ ン ロード、 フ ォーラ ムなどのサポー ト リ ソースは、 ザイ リ ン ク ス サポー ト サイ ト を参照し て く ださい。

ソ リ ューシ ョ ン  セン ターデバイ ス、 ツール、 IP のサポー ト については、 ザイ リ ン ク ス ソ リ ューシ ョ ン セン ターを参照し て く ださい。 ト ピ ッ ク には、 デザイ ン アシス タ ン ト 、 ア ド バイザ リ 、 ト ラブルシュー ト ヒ ン ト などが含まれます。

参考資料次の資料は、 Vivado のイ ン ス ト ール デ ィ レ ク ト リ から ア ク セスでき ます。

参考資料には次のものがあ り ます。

1. 『Vivado Design Suite ユーザー ガイ ド : IP を使用し た設計』 (UG896)

2. 『Vivado Design Suite ユーザー ガイ ド : IP イ ンテグレーターを使用し た IP サブシステムの設計』 (UG994)

3. 『Vivado Design Suite ユーザー ガイ ド : エンベデッ ド プロセ ッ サ ハード ウ ェア デザイ ン』 (UG898)

4. 『ザイ リ ン ク ス ソ フ ト ウ ェ ア開発キ ッ ト (SDK) ヘルプ』 (UG782)

5. 『エンベデッ ド システム ツール リ フ ァ レ ン ス マニュ アル』 (UG1043 : 英語版、 日本語版)

6. 『PowerPC プロセ ッサ リ フ ァ レン ス ガイ ド』 (UG011)

7. 『AMBA 4 AXI4-Stream Protocol Specification, Version 1.0』 (ARM IHI 0051A)

8. 『AMBA AXI and ACE Protocol Specification』 (ARM IHI 0022E)

9. 『MicroBlaze Debug Module (MDM) 製品ガ イ ド』 (PG115)

10. 『LogiCORE IP Soft Error Mitigation Controller 製品ガ イ ド』 (PG036 : 英語版、 日本語版)

11. 『デバイ ス信頼性レポー ト 』 (UG116)

12. 『LogiCore IP Processor LMB BRAM Interface Controller 製品ガイ ド』 (PG112)

13. 『階層デザイ ン設計手法ガイ ド』 (UG748)

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド japan.xilinx.com 257UG984 (v2015.1) 2015 年 4 月 15 日UG984 (v2015.4) 2015 年 11 月 18 日

Page 258: MicroBlaze プロセッサ リファレンス ガイド …...M_ACE_IC M_ACE_DC M_AXI_DP DLMB UG984 (v2015.4) 2015 年 11 月 18 日 MicroBlaze プロセッサ リファレンス ガイド

付録 B : その他のリ ソースおよび法的通知

次の追加資料には、 URL を直接ク リ ッ ク し てア ク セスでき ます。

14. GNU マニュ アル セ ッ ト http://www.gnu.org/manual

15. IEEE 754-1985 規格 http://en.wikipedia.org/wiki/IEEE_754-1985

ト レーニング リ ソースザイ リ ン ク スでは、 本書に含まれる コ ンセプ ト を説明する さ まざまな QuickTake ビデオおよび ト レーニング コース を 提供し ています。 次の リ ン ク から関連する ト レーニング リ ソース を参照し て く ださい。

1. Vivado Design Suite QuickTake ビデオ : Vivado IP イ ンテグレーターを使用し たデザイ ン

2. Vivado Design Suite QuickTake ビデオ : IP イ ンテグレーターを活用するための ヒ ン ト

3. Vivado Design Suite QuickTake ビデオ チュー ト リ アル

4. Vivado での FPGA 設計導入 ト レーニング コース

5. Vivado デザイ ン ツール フ ロー ト レーニング コース

6. Zynq All Programmable SoC エンベデッ ド システム開発

7. エンベデッ ド システム開発 – 実践編 –

8. エンベデッ ド システム ソ フ ト ウ ェ ア開発

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド japan.xilinx.com 258UG984 (v2015.1) 2015 年 4 月 15 日UG984 (v2015.4) 2015 年 11 月 18 日

Page 259: MicroBlaze プロセッサ リファレンス ガイド …...M_ACE_IC M_ACE_DC M_AXI_DP DLMB UG984 (v2015.4) 2015 年 11 月 18 日 MicroBlaze プロセッサ リファレンス ガイド

付録 B : その他のリ ソースおよび法的通知

お読み く だ さい : 重要な法的通知本通知に基づいて貴殿または貴社 (本通知の被通知者が個人の場合には 「貴殿」 、 法人その他の団体の場合には 「貴社」 。 以下同じ ) に開示される情報 (以下 「本情報」 と いいます) は、 ザイ リ ン ク スの製品を選択および使用する こ と のためにのみ提供されます。 適

用される法律が許容する最大限の範囲で、 (1) 本情報は 「現状有姿」、 およびすべて受領者の責任で (with all faults) と い う 状態で提供

され、 ザイ リ ン ク スは、 本通知を も って、 明示、 黙示、 法定を問わず (商品性、 非侵害、 特定目的適合性の保証を含みますが これら

に限られません)、 すべての保証および条件を負わない (否認する ) もの と し ます。 また、 (2) ザイ リ ン ク スは、 本情報 (貴殿または貴

社によ る本情報の使用を含む) に関係し、 起因し、 関連する、 いかなる種類 ・ 性質の損失または損害について も、 責任を負わない (契約上、 不法行為上 (過失の場合を含む)、 その他のいかな る責任の法理によ るかを問わない) もの と し、 当該損失または損害には、

直接、 間接、 特別、 付随的、 結果的な損失または損害 (第三者が起こ し た行為の結果被った、 データ、 利益、 業務上の信用の損失、

その他あ ら ゆる種類の損失や損害を含みます) が含まれる も の と し、 それは、 た と え当該損害や損失が合理的に予見可能であった

り 、 ザイ リ ン ク スがそれらの可能性について助言を受けていた場合であった と し て も同様です。 ザイ リ ン ク スは、 本情報に含まれる

いかな る誤 り も訂正する義務を負わず、本情報または製品仕様のア ッ プデー ト を貴殿または貴社に知らせる義務も負いません。事前

の書面によ る同意のない限 り 、 貴殿または貴社は本情報を再生産、 変更、 頒布、 または公に展示し てはな り ません。 一定の製品は、

ザイ リ ン ク スの限定的保証の諸条件に従 う こ と と な るので、 http://japan.xilinx.com/legal.htm#tos で見られるザイ リ ン ク スの販売条件

を参照し て く だ さい。 IP コ アは、 ザイ リ ン ク スが貴殿または貴社に付与し た ラ イ セン スに含まれる保証 と 補助的条件に従 う こ と に

な り ます。 ザイ リ ン ク スの製品は、 フ ェ イルセーフ と し て、 または、 フ ェ イルセーフの動作を要求する アプ リ ケーシ ョ ンに使用する

ために、設計された り 意図された り し ていません。そのよ う な重大なアプ リ ケーシ ョ ンにザイ リ ン ク スの製品を使用する場合の リ ス

ク と 責任は、 貴殿または貴社が単独で負 う も のです。 http://japan.xilinx.com/legal.htm#tos で見られるザイ リ ン ク スの販売条件を参照

し て く だ さい。

自動車用のアプ リ ケーシ ョ ンの免責条項

ザイ リ ン ク スの製品は、 フ ェ イルセーフ と し て設計された り 意図されてはおらず、 また、 フ ェ イルセーフの動作を要求する アプ リ

ケーシ ョ ン (具体的には、 (I) エアバッ グの展開、 (II) 車のコ ン ト ロール (フ ェ イルセーフ または余剰性の機能 (余剰性を実行する ため

のザイ リ ン ク スの装置に ソ フ ト ウ ェ アを使用する こ と は含まれません) および操作者が ミ ス を し た際の警告信号があ る場合を除き

ます)、 (III) 死亡や身体傷害を導 く 使用、 に関する アプ リ ケーシ ョ ン) を使用する ために設計された り 意図された り も し ていません。

顧客は、 そのよ う なアプ リ ケーシ ョ ンにザイ リ ン ク スの製品を使用する場合の リ ス ク と責任を単独で負います。

© Copyright 2013-2015 Xilinx, Inc. Xilinx、 Xilinx のロ ゴ、 Artix、 ISE、 Kintex、 Spartan、 Virtex、 Vivado、 Zynq、 およびこ の文書に含ま

れるその他の指定されたブラ ン ド は、 米国およびその他各国のザイ リ ン ク ス社の商標です。 すべてのその他の商標は、 それぞれの保

有者に帰属し ます。

こ の資料に関する フ ィ ード バッ クおよび リ ン ク などの問題につき ま し ては、 [email protected] まで、 または各ページの

右下にあ る [フ ィ ー ド バッ ク送信] ボ タ ンを ク リ ッ クする と 表示される フ ォームからお知らせ く だ さ い。 フ ィ ー ド バッ ク は日本語で

入力可能です。 いただき ま し たご意見を参考に早急に対応させていただき ます。 なお、 こ の メ ール ア ド レ スへのお問い合わせは受

け付けてお り ません。 あ らかじめご了承 く ださい。

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド japan.xilinx.com 259UG984 (v2015.1) 2015 年 4 月 15 日UG984 (v2015.4) 2015 年 11 月 18 日