220
MicroBlaze プロセッサ リファレンス ガイド エンべデッ ド開発キッ ト EDK 11.4 UG081 (v10.3)

MicroBlaze プロセッサ リファレンス ガイド - Xilinx...MicroBlaze プロセッサ ガイドリファレンス japan.xilinx.com UG081 (v10.3)Xilinx is providing this product

  • Upload
    others

  • View
    6

  • Download
    0

Embed Size (px)

Citation preview

Page 1: MicroBlaze プロセッサ リファレンス ガイド - Xilinx...MicroBlaze プロセッサ ガイドリファレンス japan.xilinx.com UG081 (v10.3)Xilinx is providing this product

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

エンべデ ッ ド開発キ ッ ト EDK 11.4

UG081 (v10.3)

Page 2: MicroBlaze プロセッサ リファレンス ガイド - Xilinx...MicroBlaze プロセッサ ガイドリファレンス japan.xilinx.com UG081 (v10.3)Xilinx is providing this product

Xilinx is providing this product documentation, hereinafter “Information,” to you “AS IS” with no warranty of any kind, express or implied. Xilinx makes no representation that the Information, or any particular implementation thereof, is free from any claims of infringement. You are responsible for obtaining any rights you may require for any implementation based on the Information. All specifications are subject to change without notice.

XILINX EXPRESSLY DISCLAIMS ANY WARRANTY WHATSOEVER WITH RESPECT TO THE ADEQUACY OF THE INFORMATION OR ANY IMPLEMENTATION BASED THEREON, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OR REPRESENTATIONS THAT THIS IMPLEMENTATION IS FREE FROM CLAIMS OF INFRINGEMENT AND ANY IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.

Except as stated herein, none of the Information may be copied, reproduced, distributed, republished, downloaded, displayed, posted, or transmitted in any form or by any means including, but not limited to, electronic, mechanical, photocopying, recording, or otherwise, without the prior written consent of Xilinx.

© 2009 Xilinx, Inc. XILINX, the Xilinx logo, Virtex, Spartan, ISE, and other designated brands included herein are trademarks of Xilinx in the United States and other countries. All other trademarks are the property of their respective owners.

本資料は英語版 (v.10.3) を翻訳し た もので、 内容に相違が生じ る場合には原文を優先し ます。

資料によ っては英語版の更新に対応し ていないものがあ り ます。

日本語版は参考用と し てご使用の上、 新情報につき ま し ては、 必ず 新英語版をご参照 く ださ い。

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド UG081 (v10.3)

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

日付 バージ ョ ン 改訂内容

2002 年 10 月 1 日 1.0 EDK 3.1 リ リ ース

2003 年 3 月 11 日 2.0 EDK 3.2 リ リ ース

2003 年 9 月 24 日 3.0 EDK 6.1 リ リ ース

2004 年 2 月 20 日 3.1 EDK 6.2 リ リ ース

2004 年 8 月 24 日 4.0 EDK 6.3 リ リ ース

2004 年 9 月 21 日 4.1 EDK 6.3 サービ ス パッ ク 1 用に改訂

2004 年 11 月 18 日 4.2 EDK 6.3 サービ ス パッ ク 2 用に改訂

2005 年 1 月 20 日 5.0 EDK 7.1i リ リ ース

2005 年 4 月 2 日 5.1 EDK 7.1i サービ ス パッ ク 1 用に改訂

2005 年 5 月 9 日 5.2 EDK 7.1i サービ ス パッ ク 2 用に改訂

2005 年 10 月 5 日 5.3 EDK 8.1i 用に改訂

2006 年 2 月 21 日 5.4 EDK 8.1i サービ ス パッ ク 2 用に改訂

2006 年 6 月 1 日 6.0 EDK 8.2i リ リ ース

2006 年 7 月 24 日 6.1 EDK 8.2i サービ スパッ ク 1 用に改訂

2006 年 8 月 21 日 6.2 EDK 8.2i サービ スパッ ク 2 用に改訂

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド japan.xilinx.com UG081 (v10.3)

Page 3: MicroBlaze プロセッサ リファレンス ガイド - Xilinx...MicroBlaze プロセッサ ガイドリファレンス japan.xilinx.com UG081 (v10.3)Xilinx is providing this product

2006 年 8 月 29 日 6.3 EDK 8.2i サービ スパッ ク 2 用に改訂

2006 年 9 月 15 日 7.0 EDK 9.1i リ リ ース

2007 年 2 月 22 日 7.1 EDK 9.1i サービ スパッ ク 1 用に改訂

2007 年 3 月 27 日 7.2 EDK 9.1i サービ スパッ ク 2 用に改訂

2007 年 6 月 25 日 8.0 EDK 9.2i リ リ ース

2008 年 1 月 17 日 9.0 EDK 10.1 リ リ ース

2008 年 3 月 4 日 9.1 EDK 10.1 サービ ス パッ ク 1 用に改訂

2008 年 5 月 14 日 9.2 EDK 10.1 サービ ス パッ ク 2 用に改訂

2008 年 7 月 14 日 9.3 EDK 10.1 サービ ス パッ ク 3 用に改訂

2009 年 2 月 4 日 10.0 EDK 11.1 リ リ ース

2009 年 4 月15 日 10.1 EDK 11.2 リ リ ース

2009 年 5 月 28 日 10.2 EDK 11.3 リ リ ース

2009 年 10 月 26 日 10.3 EDK 11.4 リ リ ース

日付 バージ ョ ン 改訂内容

UG081 (v10.3) japan.xilinx.com MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド

Page 4: MicroBlaze プロセッサ リファレンス ガイド - Xilinx...MicroBlaze プロセッサ ガイドリファレンス japan.xilinx.com UG081 (v10.3)Xilinx is providing this product

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド japan.xilinx.com UG081 (v10.3)

Page 5: MicroBlaze プロセッサ リファレンス ガイド - Xilinx...MicroBlaze プロセッサ ガイドリファレンス japan.xilinx.com UG081 (v10.3)Xilinx is providing this product

目次

このマニュ アルについてマニュ アルの内容 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7表記規則. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8

書体 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .8オン ラ イ ン マニュ アル . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .9

第 1 章 : MicroBlaze アーキテ クチャ概要 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12

機能 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .12データ型およびエンデ ィ アン . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14命令 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15

イ ン ス ト ラ ク シ ョ ンのま と め . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .15セマフ ォの同期化 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .25

レジス タ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27汎用レジス タ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .27特殊用途レジス タ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .28

パイプラ イ ン アーキテ クチャ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 523 段パイプラ イ ン . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .525 段パイプラ イ ン . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .52分岐 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .52

メ モ リ アーキテ クチャ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54特権命令. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55仮想 メ モ リ 管理 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56

実モード . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .56仮想モード . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .57変換ルッ ク アサイ ド バッ フ ァ (TLB) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .59ア ク セス保護 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .65UTLB 管理 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .66ページ ア ク セスおよびページ変更の記録 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .66

リ セ ッ ト 、 割 り 込み、 例外、 ブレーク . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67リ セ ッ ト . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .68ハード ウ ェ ア例外 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .68ブレーク . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .71割 り 込み . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .71ユーザー ベク タ (例外) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .72

命令キ ャ ッ シュ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72概要 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .72命令キ ャ ッ シュの機能 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .73命令キ ャ ッ シュの動作 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .74命令キ ャ ッ シュのソ フ ト ウ ェ ア サポー ト . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .74

データ キ ャ ッ シュ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75概要 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .75データ キ ャ ッ シュの機能 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .75データ キ ャ ッ シュの動作 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .76データ キ ャ ッ シュの ソ フ ト ウ ェ ア サポー ト . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .78

浮動小数点ユニ ッ ト (FPU) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78概要 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .78フ ォーマ ッ ト . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .79繰 り 上げ/繰 り 下げ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .79操作 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .79

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド japan.xilinx.com 5UG081 (v10.3)

Page 6: MicroBlaze プロセッサ リファレンス ガイド - Xilinx...MicroBlaze プロセッサ ガイドリファレンス japan.xilinx.com UG081 (v10.3)Xilinx is providing this product

例外 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .80ソ フ ト ウ ェ ア サポー ト . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80

ラ イブラ リ およびバイナ リ の互換性 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .80オペレータ レ イ テンシ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .80C 言語のプロ グ ラ ミ ング . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .81

高速シンプレ ッ ク ス リ ン ク (FSL) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82ハード ウ ェ ア ア ク セラ レータへの FSL の使用 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .83

デバッ グおよび ト レース . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84デバッ グの概要 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .84ト レースの概要 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .84

第 2 章 : MicroBlaze の信号イ ン ターフ ェ イス概要 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85

機能 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .85MicroBlaze I/O の概要 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86プロセ ッ サ ローカル バス (PLB) イ ン ターフ ェ イ ス . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91オンチッ プ ペ リ フ ェ ラル バス (OPB) イ ン ターフ ェ イ ス . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91ローカル メ モ リ バス (LMB) イ ン ターフ ェ イ ス . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91

LMB 信号のイ ン ターフ ェ イ ス . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .91LMB ト ラ ンザ ク シ ョ ン . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .93データの読み出しおよび書き込み操作 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .95

高速シンプレ ッ ク ス リ ン ク (FSL) イ ン ターフ ェ イ ス . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96マス タ FSL 信号のイ ン ターフ ェ イ ス . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .96ス レーブ FSL 信号のイ ン ターフ ェ イ ス . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .97FSL ト ラ ンザク シ ョ ン . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .97直接 FSL 接続 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .97

ザイ リ ン ク ス CacheLink (XCL) イ ン ターフ ェ イ ス . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99CacheLink 信号のイ ン ターフ ェ イ ス . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .100CacheLink ト ラ ンザ ク シ ョ ン . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .101

デバッ グ イ ン ターフ ェ イ ス . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104ト レース イ ン ターフ ェ イ ス . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105MicroBlaze コアのコ ンフ ィ ギュ レーシ ョ ン . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107

第 3 章 : MicroBlaze アプ リ ケーシ ョ ン バイナ リ イ ン ターフ ェ イス (ABI)データ型. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113レジス タの使用規則 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114ス タ ッ クの規則 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115

呼び出し規則 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .117メ モ リ モデル . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117

スモール データ領域 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .117データ領域 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .117共有の未初期化領域 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .118リ テ ラルまたは定数 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .118

割 り 込みおよび例外処理 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119

第 4 章 : MicroBlaze 命令セ ッ ト アーキテ クチャ表記法 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121フ ォーマ ッ ト . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122命令 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123

6 japan.xilinx.com MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ドUG081 (v10.3)

Page 7: MicroBlaze プロセッサ リファレンス ガイド - Xilinx...MicroBlaze プロセッサ ガイドリファレンス japan.xilinx.com UG081 (v10.3)Xilinx is providing this product

このマニュアルについて

こ のマニ ュ アルでは、 エンべデッ ド開発キ ッ ト に含まれる 32 ビ ッ ト ソ フ ト プロセ ッ サの

MicroBlaze™ のハード ウ ェア アーキテ クチャについて説明し ます。

マニュアルの内容

こ のマニ ュ アルは、 次の章から構成されています。

• 第 1 章 「MicroBlaze アーキテ クチャ」 では、MicroBlaze の機能の概要に加え、ビ ッ グ エンデ ィ

アン形式、 32 ビ ッ ト の汎用レジス タ、 キ ャ ッ シュのソ フ ト ウ ェ ア サポー ト および高速シンプ

レ ッ ク ス リ ン ク イ ン ターフ ェ イ スの情報を説明し ます。

• 第 2 章 「MicroBlaze の信号イ ン ターフ ェ イ ス」 では、 MicroBlaze への接続に使用でき る信号

イ ン ターフ ェ イ スのタ イプを説明し ます。

• 第 3 章「MicroBlaze アプ リ ケーシ ョ ン バイナ リ イ ン ターフ ェ イ ス (ABI)」では、 アセンブ リ 言

語でソ フ ト プロセ ッ サ用のソ フ ト ウ ェ アを開発する際に重要なアプ リ ケーシ ョ ン バイナ リ イ

ン ターフ ェ イ スについて説明し ます。

• 第 4 章 「MicroBlaze 命令セ ッ ト アーキテ クチャ」 には、 MicroBlaze の命令セ ッ ト アーキテ ク

チャの表記法、 フ ォーマ ッ ト 、 命令が記述されています。

その他の情報については、 http://japan.xilinx.com/support/mysupport.htm を参照し て く ださ い。 次

の表に、 リ ソースの一覧を示し ます。 この リ ソースには、表示されている URL から直接ア ク セスで

き ます。

リ ソース 説明/URL

チュー ト リ アル デザイ ン入力から検証やデバッ グまでのザイ リ ン ク スのデザイ ン フ ローに ついて説明し たチュー ト リ アルです。

http://japan.xilinx.com/support/techsup/tutorials/index.htm

アンサー ブラ ウザ ザイ リ ン ク スのソ リ ューシ ョ ン レ コード のデータベースです。

http://japan.xilinx.com/xlnx/xil_ans_browser.jsp

アプ リ ケーシ ョ ン ノー ト

デバイ ス別デザイ ン技術およびアプローチの説明です。

http://japan.xilinx.com/xlnx/xweb/xil_publications_index.jsp?category=Application+Notes

データ シー ト リ ード バッ ク、バウ ンダ リ スキ ャ ン、 コ ンフ ィ ギ ュ レーシ ョ ン、レ ング ス カ ウ ン ト 、 デバ ッ グなど、 ザイ リ ン ク ス デバイ スの特性に関する情 報がデバイ ス別に記載されています。

http://japan.xilinx.com/xlnx/xweb/xil_publications_index.jsp

プロブレ ム ソルバー デザイ ンの問題を ト ラブルシュー ト でき る対話型ツールです。

http://japan.xilinx.com/support/troubleshoot/psolvers.htm

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド japan.xilinx.com 7UG081 (v10.3)

Page 8: MicroBlaze プロセッサ リファレンス ガイド - Xilinx...MicroBlaze プロセッサ ガイドリファレンス japan.xilinx.com UG081 (v10.3)Xilinx is providing this product

このマニュアルについて

表記規則

こ のマニ ュ アルでは、 次の表記規則を使用し ています。 各規則について、 例を挙げて説明し ます。

書体

次の規則は、 すべてのマニ ュ アルで使用されています。

テ ク ニカル ヒ ン ト ザイ リ ン ク ス デザイ ン環境についての 新ニュース、 デザイ ンの ヒ ン ト 、 パッチ情報です。

http://japan.xilinx.com/xlnx/xil_tt_home.jsp

GNU マニュ アル すべての GNU マニュ アルを入手でき ます。

http://www.gnu.org/manual

リ ソース 説明/URL

表記規則 使用箇所 例

Courier フ ォ ン トシ ス テムが表示する メ ッ セージ、プロ ンプ ト 、プロ グ ラ ム フ ァ イル を表示し ます。

speed grade: - 100

Courier フ ォ ン ト (太字)

構文内で入力する コマン ド を示します。

ngdbuild design_name

イ タ リ ッ ク フ ォ ン トユーザーが値を入力する必要のある構文内の変数に使用し ます。

ngdbuild design_name

二重/一重かぎかっ こ 『 』、 「」

『 』 はマニ ュ アル名を、「 」 はセ ク シ ョ ン名を示し ます。

詳細は、 『開発システム リ フ ァ レ ンス ガイ ド』 の 「PAR」 を参照し て く だ さい。

角かっ こ [ ]

オプシ ョ ンの入力またはパラ メータ を示し ますが、 bus[7:0] のよ う なバ ス 仕様では必ず使用 し ます。ま た、GUI 表記にも 使用し ま す。

ngdbuild [option_name] design_name

[File] → [Open] を ク リ ッ ク し ます。

中かっ こ { } 1 つ以上の項目を選択する ための リ ス ト を示し ます。

lowpwr ={on|off}

縦棒 |選択する リ ス ト の項目を分離し ます。

lowpwr ={on|off}

縦の省略記号 . . .

繰 り 返し項目が省略されている こと を示し ます。

IOB #1: Name = QOUT’ IOB #2: Name = CLKIN’ . . .

横の省略記号 . . . 繰 り 返し項目が省略されている こと を示し ます。

allow block block_name loc1 loc2 ... locn;

8 japan.xilinx.com MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ドUG081 (v10.3)

Page 9: MicroBlaze プロセッサ リファレンス ガイド - Xilinx...MicroBlaze プロセッサ ガイドリファレンス japan.xilinx.com UG081 (v10.3)Xilinx is providing this product

表記規則

オン ラ イ ン マニュアル

こ のマニ ュ アルでは、 次の規則が使用されています。

表記規則 使用箇所 例

青色の文字マニ ュ アル内の相互参照を示します。

詳細は、 「その他の リ ソース」 を参照し て く ださ い。

詳細については、第 1 章の「タ イ ト ル フ ォーマ ッ ト 」 を参照し て く だ さ い。

青色の下線付き文字Web サイ ト (URL) への ハイパー リ ン ク です。

新のス ピード フ ァ イルは、 http://japan.xilinx.com から入手で き ます。

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド japan.xilinx.com 9UG081 (v10.3)

Page 10: MicroBlaze プロセッサ リファレンス ガイド - Xilinx...MicroBlaze プロセッサ ガイドリファレンス japan.xilinx.com UG081 (v10.3)Xilinx is providing this product

このマニュアルについて

10 japan.xilinx.com MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ドUG081 (v10.3)

Page 11: MicroBlaze プロセッサ リファレンス ガイド - Xilinx...MicroBlaze プロセッサ ガイドリファレンス japan.xilinx.com UG081 (v10.3)Xilinx is providing this product

第 1 章

MicroBlaze アーキテ クチャ

こ の章では MicroBlaze™ の機能の概要と、 ビ ッ グ エンデ ィ アン形式、 32 ビ ッ ト 汎用レジス タ、 仮

想 メ モ リ 管理、キ ャ ッ シュ ソ フ ト ウ ェ ア サポー ト 、高速シンプレ ッ ク ス リ ン ク (FSL) イ ン ターフ ェ

イ ス を含む、 MicroBlaze アーキテ クチャの詳細な情報を説明し ます。

こ の章は、 次のセク シ ョ ンから構成されています。

• 概要

• データ型およびエンデ ィ アン

• 命令

• レジス タ

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

• メ モ リ アーキテ クチャ

• 特権命令

• 仮想 メ モ リ 管理

• リ セ ッ ト 、 割 り 込み、 例外、 ブレーク

• 命令キ ャ ッ シュ

• データ キ ャ ッ シュ

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

• ソ フ ト ウ ェ ア サポー ト

• 高速シンプレ ッ ク ス リ ン ク (FSL)

• デバッ グおよび ト レース

MicroBlaze プロセ ッサ リ フ ァ ンレンス ガイ ド japan.xilinx.com 11UG081 (v10.3)

Page 12: MicroBlaze プロセッサ リファレンス ガイド - Xilinx...MicroBlaze プロセッサ ガイドリファレンス japan.xilinx.com UG081 (v10.3)Xilinx is providing this product

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

概要

MicroBlaze エンべデッ ド プロセ ッ サ ソ フ ト コ アは、 ザイ リ ン ク ス FPGA でのイ ンプ リ メ ンテー

シ ョ ン向けに 適化された RISC (Reduced Instruction Set Computer) です。 図 1-1 に、MicroBlaze コ アのフ ァ ン ク シ ョ ン ブロ ッ ク図を示し ます。

機能

MicroBlaze は、 柔軟にコ ンフ ィ ギュ レーシ ョ ン可能な ソ フ ト コ ア プロセ ッ サで、 デザイ ンの要件

に応じ て機能を選択でき ます。

MicroBlaze プロセ ッ サの機能は、 次の とお り です。

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

• 3 個のオペラ ン ドおよび 2 個のア ド レ ス指定モード のあ る 32 ビ ッ ト 命令ワード

• 32 ビ ッ ト ア ド レ ス バス

• 単一パイプラ イ ン

これらの機能に加え、選択可能なオプシ ョ ンの機能があ り ます。以前のバージ ョ ンの MicroBlaze で

は、 こ こ に示す機能の一部のみがサポー ト されます。 オプシ ョ ンの機能がすべてサポー ト されてい

るのは、 新バージ ョ ンの MicroBlaze (v7.20) のみです。

新規デザイ ンには、 新バージ ョ ンの MicroBlaze プロセ ッ サを使用する こ と をお勧めし ます。

13 ページの表 1-1 に、Microblaze の各バージ ョ ンでコ ンフ ィ ギュ レシ ョ ン可能な機能の概要を示し

ます。

図 1-1 : MicroBlaze コアのブロ ッ ク図

DXCL_M

DXCL_S

データ側命令側

DOPB

DLMB

IOPB

ILMB

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

命令バッ フ ァ

プログラムカウン タ

レジス タ フ ァ イル

32 X 32b

ALU

命令

デコー ド

バスIF

バスIF

MFSL 0..15

SFSL 0..15

IXCL_M

IXCL_S

命令

キャ

ッシ

デー

タ キ

ャッ

シュ

シフ ト

バレル シ フ ト

乗算器

除算器

FPU

特殊用途レジス タ

オプシ ョ ンの機能

IPLB DPLB

UTLBITLB DTLB

MMU (Memory Management Unit)

またはDWSFL 0..15

またはDRSFL 0..15

12 japan.xilinx.com MicroBlaze プロセ ッサ リ フ ァ ン レンス ガイ ドUG081 (v10.3)

Page 13: MicroBlaze プロセッサ リファレンス ガイド - Xilinx...MicroBlaze プロセッサ ガイドリファレンス japan.xilinx.com UG081 (v10.3)Xilinx is providing this product

概要

表 1-1 : MicroBlaze のオプシ ョ ン機能

機能MicroBlaze のバージ ョ ン

v4.00 v5.00 v6.00 v7.00 v7.10 v7.20

バージ ョ ンのステータ ス 廃止予定 廃止予定 廃止予定 廃止予定 推奨 推奨

プロセ ッ サ パイプラ イ ンの段数 3 5 3/5 3/5 3/5 3/5

オンチッ プ ペ リ フ ェ ラル バス (OPB) データ側イ ン ターフ ェ イ ス

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

オンチッ プ ペ リ フ ェ ラル バス (OPB) 命令側イ ン ターフ ェ イ ス

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

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

イ ン ターフ ェ イ ス

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

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

イ ン ターフ ェ イ ス

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

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

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

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

高速シンプレ ッ ク ス リ ン ク (FSL) イ ン ターフ ェ イ ス

0 ~ 7 0 ~ 7 0 ~ 7 0 ~ 15 0 ~ 15 0 ~ 15

マシン ステータ ス設定およびク リ ア命令 オプシ ョ ン あ り オプシ ョ ン オプシ ョ ン オプシ ョ ン オプシ ョ ン

IOPB イ ン ターフ ェ イ スの命令キ ャ ッ シュ オプシ ョ ン な し な し な し な し な し

IOPB イ ン ターフ ェ イ スのデータ キ ャ ッ シュ

オプシ ョ ン な し な し な し な し な し

CacheLink (IXCL) の命令キ ャ ッ シュ オプシ ョ ン オプシ ョ ン オプシ ョ ン オプシ ョ ン オプシ ョ ン オプシ ョ ン

CacheLink (DXCL) のデータ キ ャ ッ シュ オプシ ョ ン オプシ ョ ン オプシ ョ ン オプシ ョ ン オプシ ョ ン オプシ ョ ン

XCL の 4 または 8 ワード のキ ャ ッ シュ ラ イ ン

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

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

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

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

ハード ウ ェ ア乗算器をデ ィ スエーブルに

する1

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

ハード ウ ェ ア デバッ グで読み出し可能な ESR および EAR

あ り あ り あ り あ り あ り あ り

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

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

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

MicroBlaze プロセ ッサ リ フ ァ ンレンス ガイ ド japan.xilinx.com 13UG081 (v10.3)

Page 14: MicroBlaze プロセッサ リファレンス ガイド - Xilinx...MicroBlaze プロセッサ ガイドリファレンス japan.xilinx.com UG081 (v10.3)Xilinx is providing this product

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

データ型およびエンデ ィ アン

MicroBlaze では、 データの記述にビ ッ グ エンデ ィ アン形式を使用し ます。 MicroBlaze に対しハー

ド ウ ェ アでサポー ト されるデータ型は、 ワード、 ハーフ ワード、 およびバイ ト です。 各データ型に

対する ビ ッ ト およびバイ ト 構成を次の表に示し ます。

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

プロセ ッ サ ローカル バス (PLB) データ側

イ ン ターフ ェ イ ス

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

プロセ ッ サ ローカル バス (PLB) 命令側

イ ン ターフ ェ イ ス

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

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

MMU (Memory Management Unit) - - - オプシ ョ ン オプシ ョ ン オプシ ョ ン

拡張高速シンプレ ッ ク ス リ ン ク (FSL) 命令

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

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

へのザイ リ ン ク ス Cache Link の使用

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

すべてのデータ キ ャ ッ シュ メ モ リ ア ク セ

スへのザイ リ ン ク ス Cache Link の使用

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

データ キ ャ ッ シュのラ イ ト バッ ク キ ャ ッ

シュ ポ リ シーの使用

- - - - - オプシ ョ ン

命令キ ャ ッ シュの Cache Link (IXCL) プロ ト コル

- - - - - オプシ ョ ン

データ キ ャ ッ シュの Cache Link (DXCL) プロ ト コル

- - - - - オプシ ョ ン

1. Virtex®-4 以降のフ ァ ミ リ で、 MUL18 および DSP48 プ リ ミ テ ィ ブを節約する ために使用。

表 1-1 : MicroBlaze のオプシ ョ ン機能 (続き)

機能MicroBlaze のバージ ョ ン

v4.00 v5.00 v6.00 v7.00 v7.10 v7.20

表 1-2 : ワー ド データ型

バイ ト ア ド レ ス n n+1 n+2 n+3

バイ ト 表記 0 1 2 3

バイ ト 順 MSByte LSByte

ビ ッ ト 表現 0 31

ビ ッ ト 順 MSBit LSBit

14 japan.xilinx.com MicroBlaze プロセ ッサ リ フ ァ ン レンス ガイ ドUG081 (v10.3)

Page 15: MicroBlaze プロセッサ リファレンス ガイド - Xilinx...MicroBlaze プロセッサ ガイドリファレンス japan.xilinx.com UG081 (v10.3)Xilinx is providing this product

命令

命令

イ ンス ト ラ クシ ョ ンのま とめ

MicroBlaze の命令は、 すべて 32 ビ ッ ト で、 タ イプ A と タ イプ B のいずれか と し て定義されます。

タ イプ A の命令には、 大 2 個のソース レジス タ オペラ ン ド と 1 個のデステ ィ ネーシ ョ ン レジス

タ オペラ ン ド を含める こ と ができ ます。 タ イプ B の命令には、1 個のソース レジス タ オペラ ン ド と

16 ビ ッ ト の即値オペラ ン ド が含まれます。 この 16 ビ ッ ト の即値オペラ ン ド は、 タ イプ B 命令の前

に imm 命令を付け る と、 32 ビ ッ ト まで拡張可能です。 タ イプ B の命令には、 1 個のデステ ィ ネー

シ ョ ン レジス タ オペラ ン ド が含まれます。 命令のフ ァ ン ク シ ョ ンは、 演算、 論理、 分岐、 読み込み

/格納、 特殊に分類されます。 表 1-6 に MicroBlaze の命令セ ッ ト を示し ます。 これらの命令の詳細

は、 第 4 章 「MicroBlaze 命令セ ッ ト アーキテ クチャ」 を参照し て く ださい。 表 1-5 に、 各命令の

セマンテ ィ ク スで使用される命令セ ッ ト の用語を説明し ます。

表 1-3 : ハーフワー ド データ型

バイ ト ア ド レ ス n n+1

バイ ト 表記 0 1

バイ ト 順 MSByte LSByte

ビ ッ ト 表現 0 15

ビ ッ ト 順 MSBit LSBit

表 1-4 : バイ ト データ型

バイ ト ア ド レ ス n

ビ ッ ト 表現 0 7

ビ ッ ト 順 MSBit LSBit

表 1-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]

MicroBlaze プロセ ッサ リ フ ァ ンレンス ガイ ド japan.xilinx.com 15UG081 (v10.3)

Page 16: MicroBlaze プロセッサ リファレンス ガイド - Xilinx...MicroBlaze プロセッサ ガイドリファレンス japan.xilinx.com UG081 (v10.3)Xilinx is providing this product

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

PC 実行段プロ グ ラ ム カ ウ ン タ = SPR[0]

x[y] レジス タ x のビ ッ ト y

x[y:z] レジス タ x のビ ッ ト y ~ z

x レジス タ x のビ ッ ト 反転値

Imm 16 ビ ッ ト の即値

Immx x ビ ッ ト の即値

FSLx 4 ビ ッ ト の高速シンプレ ッ ク ス リ ン ク (FSL) ポー ト 識別子 (x はポー ト 番号)

C キ ャ リ ー フ ラ グ、 MSR[29]

Sa 特殊用途レジス タ、 ソース オペラ ン ド

Sd 特殊用途レジス タ、 デステ ィ ネーシ ョ ン オペラ ン ド

s(x) 符号拡張引数 x ( 大 32 ビ ッ ト )

*Addr ロ ケーシ ョ ン Addr にあ る メ モ リ 内容 (データ サイ ズ揃え)

:= 代入演算子

= 等号

!= 非等価

> 大な り

>= 以上

< 小な り

<= 以下

+ 加算

* 乗算

/ 除算

>> x 右に x ビ ッ ト シフ ト

<< x 左に x ビ ッ ト シフ ト

and 論理積 (AND)

or 論理和 (OR)

xor 排他的論理和 (XOR)

op1 if cond else op2 条件文 cond が真の場合は op1 を実行、 それ以外は op2 を実行

& 連結。 た と えば、 「0000100 & Imm7」 は固定フ ィ ール ド 0000100 と 7 ビ ッ ト の即値を連結し た も

のです。

signed 符号付き整数データ型に対し て実行される演算。 すべての四則演算は、 指定がない限 り 符号付き

のワード オペラ ン ド で実行されます。

表 1-5 : 命令セ ッ ト の用語 (続き)

シンボル 説明

16 japan.xilinx.com MicroBlaze プロセ ッサ リ フ ァ ン レンス ガイ ドUG081 (v10.3)

Page 17: MicroBlaze プロセッサ リファレンス ガイド - Xilinx...MicroBlaze プロセッサ ガイドリファレンス japan.xilinx.com UG081 (v10.3)Xilinx is providing this product

命令

unsigned 符号な し整数データ型に対し て実行される演算

float 浮動小数点データ型に対し て実行される演算

表 1-5 : 命令セ ッ ト の用語 (続き)

シンボル 説明

MicroBlaze プロセ ッサ リ フ ァ ンレンス ガイ ド japan.xilinx.com 17UG081 (v10.3)

Page 18: MicroBlaze プロセッサ リファレンス ガイド - Xilinx...MicroBlaze プロセッサ ガイドリファレンス japan.xilinx.com UG081 (v10.3)Xilinx is providing this product

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

表 1-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

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

CMP Rd,Ra,Rb 000101 Rd Ra Rb 00000000001 Rd := Rb + Ra + 1

Rd[0] := 0 if (Rb >= Ra) else Rd[0] := 1

CMPU Rd,Ra,Rb 000101 Rd Ra Rb 00000000011 Rd := Rb + Ra + 1 (unsigned) Rd[0] := 0 if (Rb >= Ra, unsigned) else Rd[0] := 1

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

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

ADDIC Rd,Ra,Imm 001010 Rd Ra Imm Rd := s(Imm) + Ra + C

RSUBIC Rd,Ra,Imm 001011 Rd Ra Imm Rd := s(Imm) + Ra + C

ADDIK Rd,Ra,Imm 001100 Rd Ra Imm Rd := s(Imm) + Ra

RSUBIK Rd,Ra,Imm 001101 Rd Ra Imm Rd := s(Imm) + Ra + 1

ADDIKC Rd,Ra,Imm 001110 Rd Ra Imm Rd := s(Imm) + Ra + C

RSUBIKC Rd,Ra,Imm 001111 Rd Ra Imm Rd := s(Imm) + Ra + C

MUL Rd,Ra,Rb 010000 Rd Ra Rb 00000000000 Rd := Ra * Rb

MULH Rd,Ra,Rb 010000 Rd Ra Rb 00000000001 Rd := (Ra * Rb) >> 32 (signed)

MULHU Rd,Ra,Rb 010000 Rd Ra Rb 00000000011 Rd := (Ra * Rb) >> 32 (unsigned)

MULHSU Rd,Ra,Rb 010000 Rd Ra Rb 00000000010 Rd := (Ra, signed * Rb, unsigned) >> 32 (signed)

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

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)

18 japan.xilinx.com MicroBlaze プロセ ッサ リ フ ァ ン レンス ガイ ドUG081 (v10.3)

Page 19: MicroBlaze プロセッサ リファレンス ガイド - Xilinx...MicroBlaze プロセッサ ガイドリファレンス japan.xilinx.com UG081 (v10.3)Xilinx is providing this product

命令

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

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] (データ読み出し ) 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 (データ書き込み) MSR[C] := FSL_M_Full if N = 1

TNECAGETD Rd,Rb 010011 Rd 00000 Rb 0N1TAE00000

Rd := FSL Rb[28:31] (制御読み出し ) 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 (制御書き込み) 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

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

表 1-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 19UG081 (v10.3)

Page 20: MicroBlaze プロセッサ リファレンス ガイド - Xilinx...MicroBlaze プロセッサ ガイドリファレンス japan.xilinx.com UG081 (v10.3)Xilinx is providing this product

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

FSQRT Rd,Ra 010110 Rd Ra 0 01110000000 Rd := sqrt (Ra)1

TNEAGET Rd,FSLx 011011 Rd 00000 0N0TAE000000 & FSLx

Rd := FSLx (データ読み出し、 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 (データ書き込み、 N = 0 の場合

ブロ ッ キング) MSR[C] := FSLx_M_Full if N = 1

TNECAGET Rd,FSLx 011011 Rd 00000 0N1TAE000000 & FSLx

Rd := FSLx (制御読み出し、 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 (制御書き込み、 N = 0 の場合ブ

ロ ッ キング) MSR[C] := FSLx_M_Full if N = 1

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

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

ANDN Rd,Ra,Rb 100011 Rd Ra Rb 00000000000 Rd := Ra and Rb

PCMPBF Rd,Ra,Rb 100000 Rd Ra Rb 10000000000 Rd := 1 if (Rb[0:7] = Ra[0:7]) else Rd := 2 if (Rb[8:15] = Ra[8:15]) else Rd := 3 if (Rb[16:23] = Ra[16:23]) else Rd := 4 if (Rb[24:31] = Ra[24:31]) else Rd := 0

PCMPEQ Rd,Ra,Rb 100010 Rd Ra Rb 10000000000 Rd := 1 if (Rd = Ra) else Rd := 0

PCMPNE Rd,Ra,Rb 100011 Rd Ra Rb 10000000000 Rd := 1 if (Rd != Ra) else Rd := 0

SRA Rd,Ra 100100 Rd Ra 0000000000000001 Rd := s(Ra >> 1) C := Ra[31]

SRC Rd,Ra 100100 Rd Ra 0000000000100001 Rd := C & (Ra >> 1) C := Ra[31]

SRL Rd,Ra 100100 Rd Ra 0000000001000001 Rd := 0 & (Ra >> 1) C := Ra[31]

SEXT8 Rd,Ra 100100 Rd Ra 0000000001100000 Rd := s(Ra[24:31])

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

表 1-6 : MicroBlaze の命令セ ッ ト の一覧 (続き)

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

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

20 japan.xilinx.com MicroBlaze プロセ ッサ リ フ ァ ン レンス ガイ ドUG081 (v10.3)

Page 21: MicroBlaze プロセッサ リファレンス ガイド - Xilinx...MicroBlaze プロセッサ ガイドリファレンス japan.xilinx.com UG081 (v10.3)Xilinx is providing this product

命令

WIC Ra,Rb 100100 00000 Ra Rb 01101000 ICache_Line[Ra >> 4].Tag := 0 if (C_ICACHE_LINE_LEN = 4)

ICache_Line[Ra >> 5].Tag := 0 if (C_ICACHE_LINE_LEN = 8)

WDC Ra,Rb 100100 00000 Ra Rb 01100100 キ ャ ッ シュ ラ イ ンが ク リ ア され、 格納デー

タが廃棄されます。

DCache_Line[Ra >> 4].Tag := 0 if (C_DCACHE_LINE_LEN = 4)

DCache_Line[Ra >> 5].Tag := 0 if (C_DCACHE_LINE_LEN = 8)

WDC.FLUSH Ra,Rb 100100 00000 Ra Rb 01100100 キ ャ ッ シュ ラ イ ンがフ ラ ッ シュ され、 格納

データが メ モ リ に書き込まれてから ク リ ア

されます。

D_DCACHE_USE_WRITEBACK = 1 の と

きに使用。

WDC.CLEAR Ra,Rb 100100 00000 Ra Rb 01100100 ア ド レ スが一致する キ ャ ッ シュ ラ イ ンが ク

リ ア され、 格納データが破棄されます。

D_DCACHE_USE_WRITEBACK = 1 の と

きに使用。

MTS Sd,Ra 100101 00000 Ra 11 & Sd SPR[Sd] := Ra

• SPR[0x0001] は MSR

• SPR[0x0007] は FSR

• SPR[0x1000] は PID

• SPR[0x1001] は ZPR

• SPR[0x1002] は TLBX

• SPR[0x1003] は TLBLO

• SPR[0x1004] は TLBHI

• SPR[0x1005] は TLBSX

表 1-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 21UG081 (v10.3)

Page 22: MicroBlaze プロセッサ リファレンス ガイド - Xilinx...MicroBlaze プロセッサ ガイドリファレンス japan.xilinx.com UG081 (v10.3)Xilinx is providing this product

第 1 章 : 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[0x1000] は PID

• SPR[0x1001] は ZPR

• SPR[0x1002] は TLBX

• SPR[0x1003] は TLBLO

• SPR[0x1004] は TLBHI

• SPR[0x2000] ~ SPR [0x200B] は PVR[0] ~ PVR [11]

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

MSRSET Rd,Imm 100101 Rd 00000 00 & Imm14 Rd := MSR MSR := MSR or Imm14

BR Rb 100110 00000 00000 Rb 00000000000 PC := PC + Rb

BRD Rb 100110 00000 10000 Rb 00000000000 PC := PC + Rb

BRLD Rd,Rb 100110 Rd 10100 Rb 00000000000 PC := PC + Rb Rd := PC

BRA Rb 100110 00000 01000 Rb 00000000000 PC := Rb

BRAD Rb 100110 00000 11000 Rb 00000000000 PC := Rb

BRALD Rd,Rb 100110 Rd 11100 Rb 00000000000 PC := Rb Rd := PC

BRK Rd,Rb 100110 Rd 01100 Rb 00000000000 PC := Rb Rd := PC MSR[BIP] := 1

BEQ Ra,Rb 100111 00000 Ra Rb 00000000000 PC := PC + Rb if Ra = 0

BNE Ra,Rb 100111 00001 Ra Rb 00000000000 PC := PC + Rb if Ra != 0

BLT Ra,Rb 100111 00010 Ra Rb 00000000000 PC := PC + Rb if Ra < 0

BLE Ra,Rb 100111 00011 Ra Rb 00000000000 PC := PC + Rb if Ra <= 0

BGT Ra,Rb 100111 00100 Ra Rb 00000000000 PC := PC + Rb if Ra > 0

BGE Ra,Rb 100111 00101 Ra Rb 00000000000 PC := PC + Rb if Ra >= 0

表 1-6 : MicroBlaze の命令セ ッ ト の一覧 (続き)

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

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

22 japan.xilinx.com MicroBlaze プロセ ッサ リ フ ァ ン レンス ガイ ドUG081 (v10.3)

Page 23: MicroBlaze プロセッサ リファレンス ガイド - Xilinx...MicroBlaze プロセッサ ガイドリファレンス japan.xilinx.com UG081 (v10.3)Xilinx is providing this product

命令

BEQD Ra,Rb 100111 10000 Ra Rb 00000000000 PC := PC + Rb if Ra = 0

BNED Ra,Rb 100111 10001 Ra Rb 00000000000 PC := PC + Rb if Ra != 0

BLTD Ra,Rb 100111 10010 Ra Rb 00000000000 PC := PC + Rb if Ra < 0

BLED Ra,Rb 100111 10011 Ra Rb 00000000000 PC := PC + Rb if Ra <= 0

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

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

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

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

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

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

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

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

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

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

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

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

BRID Imm 101110 00000 10000 Imm PC := PC + s(Imm)

BRLID Rd,Imm 101110 Rd 10100 Imm PC := PC + s(Imm) Rd := PC

BRAI Imm 101110 00000 01000 Imm PC := s(Imm)

BRAID Imm 101110 00000 11000 Imm PC := s(Imm)

BRALID Rd,Imm 101110 Rd 11100 Imm PC := s(Imm) Rd := PC

BRKI Rd,Imm 101110 Rd 01100 Imm PC := s(Imm) Rd := PC MSR[BIP] := 1

BEQI Ra,Imm 101111 00000 Ra Imm PC := PC + s(Imm) if Ra = 0

BNEI Ra,Imm 101111 00001 Ra Imm PC := PC + s(Imm) if Ra != 0

BLTI Ra,Imm 101111 00010 Ra Imm PC := PC + s(Imm) if Ra < 0

表 1-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 23UG081 (v10.3)

Page 24: MicroBlaze プロセッサ リファレンス ガイド - Xilinx...MicroBlaze プロセッサ ガイドリファレンス japan.xilinx.com UG081 (v10.3)Xilinx is providing this product

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

BLEI Ra,Imm 101111 00011 Ra Imm PC := PC + s(Imm) if Ra <= 0

BGTI Ra,Imm 101111 00100 Ra Imm PC := PC + s(Imm) if Ra > 0

BGEI Ra,Imm 101111 00101 Ra Imm PC := PC + s(Imm) if Ra >= 0

BEQID Ra,Imm 101111 10000 Ra Imm PC := PC + s(Imm) if Ra = 0

BNEID Ra,Imm 101111 10001 Ra Imm PC := PC + s(Imm) if Ra != 0

BLTID Ra,Imm 101111 10010 Ra Imm PC := PC + s(Imm) if Ra < 0

BLEID Ra,Imm 101111 10011 Ra Imm PC := PC + s(Imm) if Ra <= 0

BGTID Ra,Imm 101111 10100 Ra Imm PC := PC + s(Imm) if Ra > 0

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

LBU Rd,Ra,Rb 110000 Rd Ra Rb 00000000000 Addr := Ra + Rb Rd[0:23] := 0 Rd[24:31] := *Addr[0:7]

LHU Rd,Ra,Rb 110001 Rd Ra Rb 00000000000 Addr := Ra + Rb Rd[0:15] := 0 Rd[16:31] := *Addr[0:15]

LW Rd,Ra,Rb 110010 Rd Ra Rb 00000000000 Addr := Ra + Rb Rd := *Addr

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

SB Rd,Ra,Rb 110100 Rd Ra Rb 00000000000 Addr := Ra + Rb *Addr[0:8] := Rd[24:31]

SH Rd,Ra,Rb 110101 Rd Ra Rb 00000000000 Addr := Ra + Rb *Addr[0:16] := Rd[16:31]

SW Rd,Ra,Rb 110110 Rd Ra Rb 00000000000 Addr := Ra + Rb *Addr := Rd

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

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

LHUI Rd,Ra,Imm 111001 Rd Ra Imm Addr := Ra + s(Imm) Rd[0:15] := 0 Rd[16:31] := *Addr[0:15]

表 1-6 : MicroBlaze の命令セ ッ ト の一覧 (続き)

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

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

24 japan.xilinx.com MicroBlaze プロセ ッサ リ フ ァ ン レンス ガイ ドUG081 (v10.3)

Page 25: MicroBlaze プロセッサ リファレンス ガイド - Xilinx...MicroBlaze プロセッサ ガイドリファレンス japan.xilinx.com UG081 (v10.3)Xilinx is providing this product

命令

セマ フ ォの同期化

テス ト と セ ッ ト 、 比較と ス ワ ッ プ、 メ モ リ 交換、 フ ェ ッチ と追加などの共通セマフ ォ操作を イ ンプ

リ メ ン ト するには、 LWX および SWX. 命令が使用されます。 また、 ス ピン ロ ッ ク のイ ンプ リ メ ン

ト にも使用されます

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

によ って呼び出されます。一般的には、メ モ リ からセマフ ォ を読み込むにはプロ グ ラ ムによ り LWX が使用され、 予約が設定されます (まずはプロセ ッサが予約を保持)。 セマフ ォの値に基づいて結果

が計算され、 SWX 命令を使用し て結果値は同じ メ モ リ ロ ケーシ ョ ンに条件付で保存されます。 条

件付保存は、 直前の LWX 命令によ って確立された予約を基に実行されます。 保存が実行される と

きに予約が存在する場合、保存が実行され MSR [C] が 0 にク リ ア されます。予約が存在し ない場合、

ターゲ ッ ト メ モ リ ロ ケーシ ョ ンは変更されず、 MSR [C] が 1 に設定されます。

保存が問題な く 完了する と、 セマフ ォ読み込みから セマフ ォ保存までの命令シーケン スが実行され

ます。 ほかのデバイ スは読み出し と ア ッ プデー ト の間のセマフ ォ ロ ケーシ ョ ンを変更し ません。 ほ

かのデバイ スは、 操作中にセマフ ォ ロ ケーシ ョ ンから読み出すこ と ができ ます。 セマフ ォ操作が正

し く 動作するには、 必ず LWX 命令を SWX 命令とペアで使用し、 同じ ア ド レ ス を指定する よ う に

し ます。 MicroBlaze では予約設定はワード単位で行われます。 両方の命令に対し、 ア ド レ スのワー

ド が一致し ている必要があ り ます。これらの命令に対し てはワード不一致の例外が生成されません。

条件付保存は、 保存ア ド レ スが予約を設定する読み込みア ド レ ス と一致し ていない場合でも、 予約

が存在する場合常に実行されます。

予約は 1 度に 1 つしか管理でき ません。 予約に関連し たア ド レ スは後続の LWX 命令を実行する と

変更でき ます。条件付保存は先の LWX 命令によ り 確立された予約に基づき実行されます。SWX 命

令を実行する と、 LWX で確立された もの と ア ド レ スが一致するかど う かにかかわらず、 常にプロ

セ ッ サで保持されている予約がク リ アにな り ます。

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

ア し ます。

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

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

• ペアになっておらず、 別のア ド レ スに指定されている SWX 命令は、 プロセ ッ サで保持されている予約を ク リ アするために使用する こ と ができ ます。

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. 浮動小数点の演算には特殊なケースが多数あ る ため、 通常の演算のみを示し ます。 第 4 章 「MicroBlaze 命令セ ッ ト アーキテ クチャ」 にすべての演算が リ ス ト されています。

表 1-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 25UG081 (v10.3)

Page 26: MicroBlaze プロセッサ リファレンス ガイド - Xilinx...MicroBlaze プロセッサ ガイドリファレンス japan.xilinx.com UG081 (v10.3)Xilinx is providing this product

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

• LWX 命令で条件付シーケン スは開始し ます。 その後、 メ モ リ ア ク セス または読み込まれた値に基づいた計算が続き ます。 シーケン スは SWX 命令で終了し ます。 ほ と んどの場合、 SWX 命令のエラーは LWX に返され、 再試行されます。

• LWX 命令で読み込まれた値が 0 でない場合、 同期化プ リ ミ テ ィ ブよ っては実行する と きに LWX をペアにし な く て もかまいません。 これは、 テス ト と セ ッ ト のイ ンプ リ メ ンテーシ ョ ン例です。

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 命令で求める値が返されない場合、 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 needed addik 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 間の予約が失われる可能性が高ま り ます。

26 japan.xilinx.com MicroBlaze プロセ ッサ リ フ ァ ン レンス ガイ ドUG081 (v10.3)

Page 27: MicroBlaze プロセッサ リファレンス ガイド - Xilinx...MicroBlaze プロセッサ ガイドリファレンス japan.xilinx.com UG081 (v10.3)Xilinx is providing this product

レジス タ

レジス タ

MicroBlaze は直交命令セ ッ ト アーキテ クチャで、 32 個の 32 ビ ッ ト 汎用レジス タ と 大 18 個の

32 ビ ッ ト 特殊用途レジス タが含まれます。特殊用途レジス タの数は、設定するオプシ ョ ンによ って

異な り ます。

汎用レジス タ

32 個の 32 ビ ッ ト 汎用レジス タには、 R0 ~ R31 と い う 番号が付け られています。 レジス タ フ ァ イ

ルは、ビ ッ ト ス ト リ ームのダウ ン ロード時に リ セ ッ ト されます。リ セ ッ ト 値は 0x00000000 です。 図

1-2 に汎用レジス タ を、 表 1-7 に各レジス タの説明および リ セ ッ ト 値 (存在する場合) を示し ます。

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

汎用レジス タのソ フ ト ウ ェ アでの使用規則については、 表 3-2 を参照し て く ださ い。

0 31

R0 ~ R31

図 1-2 : R0 ~ R31

表 1-7 : 汎用レジス タ (R0 ~ R31)

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

0:31 R0 常に 0 です。 書き込まれたデータは、すべて破棄

されます。

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 32 ビ ッ ト 汎用レジス タ。 -

MicroBlaze プロセ ッサ リ フ ァ ンレンス ガイ ド japan.xilinx.com 27UG081 (v10.3)

Page 28: MicroBlaze プロセッサ リファレンス ガイド - Xilinx...MicroBlaze プロセッサ ガイドリファレンス japan.xilinx.com UG081 (v10.3)Xilinx is providing this product

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

特殊用途レジス タ

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

プロ グ ラ ム カ ウ ン タ (PC) は例外命令の 32 ビ ッ ト ア ド レ スで、 MFS 命令を使用し て読み出すこ と

は可能ですが、MTS 命令を使用し て書き込むこ と はでき ません。 MFS 命令を使用する場合、PC レ

ジス タは Sa = 0x0000 で指定し ます。 図 1-3 に PC を、表 1-8 に説明および リ セ ッ ト 値を示し ます。

マシン ステータ ス レジス タ (MSR)

マシン ステータ ス レジス タには、 プロセ ッサのコ ン ト ロール ビ ッ ト およびステータ ス ビ ッ ト が含

まれます。 MFS 命令を使用し て読み出すこ と ができ ます。 MSR を読み出す際、 ビ ッ ト 29 がキ ャ

リ ー コ ピー と し てビ ッ ト 0 に複製されます。 MSR は、 MTS 命令または専用命令であ る MSRSET および MSRCLR を使用し て書き込むこ と ができ ます。

MSRSET または MSRCLR を使用し て MSR に書き込むと、キ ャ リ ー ビ ッ ト はすぐに変化し、その

他のビ ッ ト は 1 ク ロ ッ ク サイ クル後に変化し ます。 MTS を使用し て書き込むと、 すべてのビ ッ ト

が 1 ク ロ ッ ク サイ クル後に有効にな り ます。 ビ ッ ト 0 に書き込まれた値は、 すべて破棄されます

MSR を MTS または MFS 命令 と使用する場合は、 MSR を Sx = 0x0001 で指定し ます。 図 1-4 に

MSR レジス タ を、 表 1-9 にビ ッ ト の説明および リ セ ッ ト 値を示し ます。

0 31

PC

図 1-3 : PC

表 1-8 : プログラム カウン タ (PC)

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

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

実行命令のア ド レ ス。 「mfs r2 0」 では、 mfs 命令のア ド

レ スが R2 に格納されます。

0x00000000

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

↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑

CC 予約済み VMS VM UMSUM PVR EIP EE DCE DZO ICE FSL BIP C IE BE

図 1-4 : MSR

28 japan.xilinx.com MicroBlaze プロセ ッサ リ フ ァ ン レンス ガイ ドUG081 (v10.3)

Page 29: MicroBlaze プロセッサ リファレンス ガイド - Xilinx...MicroBlaze プロセッサ ガイドリファレンス japan.xilinx.com UG081 (v10.3)Xilinx is providing this product

レジス タ

表 1-9 : マシン ステータ ス レジス タ (MSR)

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

0 CC 演算キ ャ リ ーのコ ピー

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

0

1:16 予約済み

17 VMS 仮想保護モード での保存

MMU を使用する場合のみ (C_USE_MMU > 1 かつ C_AREA_OPTIMIZED = 0)

読み出し /書き込み

0

18 VM 仮想保護モード

0 : C_USE_MMU = 3 の場合は MMU ア ド レ ス

変換およびア ク セス保護デ ィ スエーブル、

C_USE_MMU = 2 の場合はア ク セス保護デ ィ

スエーブル。

1 : C_USE_MMU = 3 の場合は MMU ア ド レ ス

変換およびア ク セス保護イ ネーブル、

C_USE_MMU = 2 の場合はア ク セス保護イ

ネーブル。

MMU を使用する場合のみ (C_USE_MMU > 1 かつ C_AREA_OPTIMIZED = 0)

読み出し /書き込み

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 のパラ

メ ータに依存

MicroBlaze プロセ ッサ リ フ ァ ンレンス ガイ ド japan.xilinx.com 29UG081 (v10.3)

Page 30: MicroBlaze プロセッサ リファレンス ガイド - Xilinx...MicroBlaze プロセッサ ガイドリファレンス japan.xilinx.com UG081 (v10.3)Xilinx is providing this product

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

22 EIP 例外実行中

0 : 実行中のハード ウ ェ ア例外なし

1 : ハード ウ ェ ア例外を実行中

例外がサポー ト されている場合のみ (C_*_EXCEPTION または C_USE_MMU)

読み出し /書き込み

0

23 EE 例外イ ネーブル

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

1 : ハード ウ ェ ア例外がイ ネーブル

例 外 が サ ポ ー ト さ れ て い る 場 合 の み

(C_*_EXCEPTION または C_USE_MMU)

読み出し /書き込み

0

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

0 : データ キ ャ ッ シュがデ ィ スエーブル

1 : データ キ ャ ッ シュがイ ネーブル

データ キ ャ ッ シュが使用されている場合のみ

(C_USE_DCACHE = 1)

読み出し /書き込み

0

25 DZO 0 での除算または除算オーバーフ ロー2

0 : 0 での除算なし、 または除算オーバーフ ロー

の発生

1 : 0 での除算あ り 、 または除算オーバーフ ロー

の発生

ハー ド ウ ェ ア除算器が使用さ れてい る場合のみ

(C_USE_DIV = 1)

読み出し /書き込み

0

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

0 : 命令キ ャ ッ シュがデ ィ スエーブル

1 : 命令キ ャ ッ シュがイ ネーブル

命令 キ ャ ッ シ ュ が 使用 さ れ て い る 場合 の み

(C_USE_ICACHE = 1)

読み出し /書き込み

0

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

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

30 japan.xilinx.com MicroBlaze プロセ ッサ リ フ ァ ン レンス ガイ ドUG081 (v10.3)

Page 31: MicroBlaze プロセッサ リファレンス ガイド - Xilinx...MicroBlaze プロセッサ ガイドリファレンス japan.xilinx.com UG081 (v10.3)Xilinx is providing this product

レジス タ

27 FSL FSL エラー

0 : FSL の get/getd/put/putd でエラーなし

1 : FSL の get/getd/put/putd で制御タ イ プが不

一致

FSL リ ン クが使用されている場合のみ

(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 BE バス ロ ッ ク イネーブル3

0 : データ 側 OPB でのバス ロ ッ ク ディ ス エー

ブル

1 : データ側 OPB でのバス ロ ッ ク イ ネーブル

バス ロ ッ ク イネーブルは、 IXCL、 DXCL、

ILMB、 DLMB、 IPLB、 DPLB、 または IOPB の動作に影響し ません。

データ側 OPB が使用されている場合のみ

読み出し /書き込み

0

1. MMU 例外 (データ格納例外、 命令格納例外、 データ TLB ミ ス例外、 命令 TLB ミ ス例外) はデ ィ スエーブルにでき ないため、 こ のビ ッ ト の影響を受けません。

2. こ のビ ッ ト は、 整数が 0 で除算されている こ と、 または除算オーバーフ ローを示す信号でのみ使用し ます。 FSR には、 浮動小数点と 等価の も のがあ り ます。 DZO ビ ッ ト は、 プロセ ッ サで例外処理がイ ネーブルかど う かにかかわらず、 0 によ る除算または除算オーバーフ ローがあ るかど う かを示し ます。

3. バス プロ ト コルの詳細は、 IBM CoreConnect の仕様 『64-Bit On-Chip Peripheral Bus, Architectural Specifications, Version 2.0』 を参照し て く だ さ い。

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

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

MicroBlaze プロセ ッサ リ フ ァ ンレンス ガイ ド japan.xilinx.com 31UG081 (v10.3)

Page 32: MicroBlaze プロセッサ リファレンス ガイド - Xilinx...MicroBlaze プロセッサ ガイドリファレンス japan.xilinx.com UG081 (v10.3)Xilinx is providing this product

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

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

例外ア ド レ ス レジス タは、 次の例外を発生させた読み込み/格納の完全なア ド レ ス を格納し ます。

• 不整列ア ク セスによ る例外 (不整列ア ク セスのア ド レ ス)

• DPLB または DOPB 例外 (実行でき なかった PLB または OPB データ ア ク セスのア ド レ ス)

• データ格納例外 (ア ク セス された (仮想) 有効ア ド レ ス)

• 命令格納例外 (読み出された (仮想) 有効ア ド レ ス)

• データ TLB ミ ス 例外 (ア ク セス された (仮想) 有効ア ド レ ス)

• 命令 TLB ミ ス例外 (読み出された (仮想) 有効ア ド レ ス)

その他の例外では、 こ のレ ジス タ の内容は定義さ れていま せん。 EAR を MFS 命令で読み出す場

合、 Sa = 0x0003 で指定し ま す。 図 1-5 に EAR を、 表 1-10 にビッ ト の説明およ びリ セッ ト 値を 示

し ま す。

0 31

EAR

図 1-5 : EAR

表 1-10 : 例外ア ド レス レジス タ (EAR)

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

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

32 japan.xilinx.com MicroBlaze プロセ ッサ リ フ ァ ン レンス ガイ ドUG081 (v10.3)

Page 33: MicroBlaze プロセッサ リファレンス ガイド - Xilinx...MicroBlaze プロセッサ ガイドリファレンス japan.xilinx.com UG081 (v10.3)Xilinx is providing this product

レジス タ

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

例外ステータ ス レジス タには、プロセ ッ サのステータ ス ビ ッ ト が含まれます。 ESR を MFS 命令で

読み出す場合、Sa = 0x0005 で指定し ます。 図 1-6 に ESR レジス タ を示し ます。表 1-11 にビ ッ ト の

説明と リ セ ッ ト 値を、 表 1-12 に例外ステータ ス (ESS) を示し ます。

19 20 26 27 31

↑ ↑ ↑ ↑

予約済み DS ESS EC

図 1-6 : ESR

表 1-11 : 例外ステータ ス レジス タ (ESR)

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

0:18 予約済み

19 DS 遅延ス ロ ッ ト によ る例外

0 : 遅延ス ロ ッ ト 命令によ る例外な し

1 : 遅延ス ロ ッ ト 命令によ る例外あ り

読み出しのみ

0

20:26 ESS 例外ステータ ス

詳細は、 表 1-12 を参照し て く ださい。

読み出しのみ

表 1-12 を参照

27:31 EC 例外の原因

00000 : 高速シンプレ ッ ク ス リ ン ク の例外

00001 : 不整列データ ア ク セスによ る例外

00010 : 不正な op コード によ る例外

00011 : 命令バス エラーによ る例外

00011 : データ バス エラーによ る例外

00101 : 除算によ る例外

00110 : 浮動小数点ユニ ッ ト によ る例外

00111 : 特権命令によ る例外

10000 : データ格納によ る例外

10001 : 命令格納によ る例外

10010 : データ TLB ミ スによ る例外

10011 : 命令 TLB ミ スによ る例外

読み出しのみ

0

MicroBlaze プロセ ッサ リ フ ァ ンレンス ガイ ド japan.xilinx.com 33UG081 (v10.3)

Page 34: MicroBlaze プロセッサ リファレンス ガイド - Xilinx...MicroBlaze プロセッサ ガイドリファレンス japan.xilinx.com UG081 (v10.3)Xilinx is providing this product

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

表 1-12 : 例外ステータ ス (ESS)

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

不整列データ

ア ク セス

20 W ワード ア ク セスによ る例外

0 : 不整列ハーフ ワード ア ク セス

1 : 不整列ワード ア ク セス

0

21 S 格納ア ク セスによ る例外

0 : 不整列読み込みア ク セス

1 : 不整列格納ア ク セス

0

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

不整列ア ク セスでソース (格納) また

はデステ ィ ネーシ ョ ン (読み込み) とし て使用される汎用レジス タ

0

不正な命令 20:26 予約済み 0

命令バス エラー 20:26 予約済み 0

データ バス エラー 20:26 予約済み 0

除算 20 DEC 除算 : 除算例外原因

0 :ゼロでの 除算

1 : 除算オーバーフ ロー

0

21:26 予約済み 0

浮動小数点ユニ ッ ト 20:26 予約済み 0

特権命令 20:26 予約済み 0

高速シンプレ ッ ク ス リ ン ク

20:22 予約済み 0

23:26 FSL 例外発生の原因と なった高速シンプ

レ ッ ク ス リ ン クのイ ンデッ ク ス

0

データ格納 20 DIZ データ格納 - ゾーン保護

0 : 実行されていない

1 : 実行された

0

21 S データ格納 - 格納命令

0 : 実行されていない

1 : 実行された

0

22:26 予約済み 0

命令格納 20 DIZ 命令格納 - ゾーン保護

0 : 実行されていない

1 : 実行された

0

21:26 予約済み 0

34 japan.xilinx.com MicroBlaze プロセ ッサ リ フ ァ ン レンス ガイ ドUG081 (v10.3)

Page 35: MicroBlaze プロセッサ リファレンス ガイド - Xilinx...MicroBlaze プロセッサ ガイドリファレンス japan.xilinx.com UG081 (v10.3)Xilinx is providing this product

レジス タ

分岐ターゲ ッ ト レジス タ (BTR)

分岐ターゲ ッ ト レジス タは、 MicroBlaze プロセ ッ サで例外を使用する よ う に設定し た場合にのみ

存在し ます。 MSR[EIP] = 0 の と き、 実行される遅延ス ロ ッ ト の分岐命令すべてに対する分岐ター

ゲ ッ ト ア ド レ スがレジス タに格納されます。 遅延ス ロ ッ ト に含まれる命令によ り 例外が発生する と

(ESR[DS]=1)、例外ハン ド ラは R17 に格納されている通常の例外ハン ド ラの戻 り ア ド レ スの代わ り

に、 BTR に格納されている ア ド レ スに命令を戻し ます。 BTR を MFS 命令で読み出す場合、 Sa = 0x000B で指定し ます。 図 1-7 に BTR レジス タ を、 表 1-13 にビ ッ ト の説明および リ セ ッ ト 値を示

し ます。

データ TLB ミ ス 20 予約済み 0

21 S データ TLB ミ ス - 格納命令

0 : 実行されていない

1 : 実行された

0

22:26 予約済み 0

命令 TLB ミ ス 20:26 予約済み 0

表 1-12 : 例外ステータ ス (ESS) (続き)

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

0 31

BTR

図 1-7 : BTR

表 1-13 : 分岐ターゲッ ト レジス タ (BTR)

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

0:31 BTR 遅延ス ロ ッ ト に含まれる命令によ り 発生する例外

から戻る と きにハン ド ラで使用される分岐ター

ゲ ッ ト ア ド レ ス

読み出しのみ

0x00000000

MicroBlaze プロセ ッサ リ フ ァ ンレンス ガイ ド japan.xilinx.com 35UG081 (v10.3)

Page 36: MicroBlaze プロセッサ リファレンス ガイド - Xilinx...MicroBlaze プロセッサ ガイドリファレンス japan.xilinx.com UG081 (v10.3)Xilinx is providing this product

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

浮動小数点ユニ ッ ト ステータ ス レジス タ (FSR)

浮動小数点ユニ ッ ト ステータ ス レジス タには、 浮動小数点ユニ ッ ト のステータ ス ビ ッ ト が含まれ

ます。MFS 命令で読み出し、MTS 命令で書き込むこ と ができ ます。 読み出し または書き込みを実行

する場合、 Sa = 0x0007 で指定し ます。 浮動小数点ポイ ン ト 命令はレジス タのビ ッ ト のみをセ ッ ト

し、レジス タ を ク リ アにするには MTS 命令を使用する しかあ り ません。図 1-8 に FSR レジス タ を、

表 1-14 にビ ッ ト の説明および リ セ ッ ト 値を示し ます。

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

例外データ レジス タには、 FSL 例外の原因 と なった FSL リ ン ク で読み出されたデータが格納され

ます。

その他の例外では、こ のレジス タの内容は定義されていません。 EDR を MFS 命令で読み出す場合、

Sa = 0x000D で指定し ます。 図 1-9 に EDR レジス タ を、表 1-15 にビ ッ ト の説明および リ セ ッ ト 値

を示し ます。

メ モ : C_FSL_LINKS が 0 よ り 大き く 、C_FSL_EXCEPTION が 1 に設定されている場合にのみイ

ンプ リ メ ン ト されます。

27 28 29 30 31

↑ ↑ ↑ ↑ ↑ ↑

予約済み IO DZ OF UF DO

図 1-8 : FSR

表 1-14 : 浮動小数点ユニ ッ ト ステータ ス レジス タ (FSR)

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

0:26 予約済み 未定義

27 IO 不正な操作 0

28 DZ 0 での除算 0

29 OF オーバーフ ロー 0

30 UF アンダーフ ロー 0

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

0 31

EDR

図 1-9 : EDR

36 japan.xilinx.com MicroBlaze プロセ ッサ リ フ ァ ン レンス ガイ ドUG081 (v10.3)

Page 37: MicroBlaze プロセッサ リファレンス ガイド - Xilinx...MicroBlaze プロセッサ ガイドリファレンス japan.xilinx.com UG081 (v10.3)Xilinx is providing this product

レジス タ

プロセス識別レジス タ (PID)

MMU ア ド レ ス変換の実行中に、 ソ フ ト ウ ェア プロセス を識別するために使用し ます。 MicroBlaze では、 C_USE_MMU コ ンフ ィ ギュ レーシ ョ ン オプシ ョ ンで制御し ます。 C_USE_MMU が 1 よ り

大き く 、 C_AREA_OPTIMIZED が 0 に設定されている場合にのみイ ンプ リ メ ン ト されます。 MFS および MTS 命令で PID にア ク セスする場合、Sa = 0x1000 で指定し ます。 こ のレジス タへのア ク セ

スは、 メ モ リ 管理用の特殊なレジス タのパラ メ ータ、 C_MMU_TLB_ACCESS の設定に従います。

また、 TLB エン ト リ へのア ク セスにも使用されます。

• TLBHI (Translation Look-Aside Buffer High) を書き込む際に、 PID の値は TLB エン ト リ の

TID フ ィ ール ド に格納されます。

• TLBHI を読み出し、 また MSR[UM] が設定されていない場合は、 TID フ ィ ール ド の値が PID に格納されます。

図 1-10 に PID レジス タ を、 表 1-16 にビ ッ ト の説明および リ セ ッ ト 値を示し ます。

表 1-15 : 例外データ レジス タ (EDR)

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

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

24 31

↑ ↑

予約済み PID

図 1-10 : PID

表 1-16 : プロセス識別レジス タ (PID)

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

0:23 予約済み

24:31 PID MMU ア ド レ ス変換の実行中に、 ソ フ ト ウ ェ ア プロセスを識別

読み出し /書き込み

0x00

MicroBlaze プロセ ッサ リ フ ァ ンレンス ガイ ド japan.xilinx.com 37UG081 (v10.3)

Page 38: MicroBlaze プロセッサ リファレンス ガイド - Xilinx...MicroBlaze プロセッサ ガイドリファレンス japan.xilinx.com UG081 (v10.3)Xilinx is providing this product

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

ゾーン保護レジス タ (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 の設定に従います。 図 1-11 に ZPR レジス タ を、 表

1-17 にビ ッ ト の説明および リ セ ッ ト 値を示し ます。

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

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

図 1-11 : ZPR

表 1-17 : ゾーン保護レジス タ (ZPR)

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

0:1

2:3

...

30:31

ZP0

ZP1

...

ZP15

ゾーン保護

ユーザー モード (MSR[UM] = 1)

00 : TLB エン ト リ の V を無効にする。 ページへのア ク セ

スは許可されません。

01 : 無効になるエン ト リ な し。 TLB エン ト リ の V、 WR、

および EX が使用されます。

10 : 無効になるエン ト リ な し。 TLB エン ト リ の V、 WR、

および EX が使用されます。

11 : TLB エン ト リ の WR および EX を無効にする。 書き

込みおよび実行可能と し てページにア ク セス し ます。

特権モード (MSR[UM] = 0)

00 : 無効になるエン ト リ な し。 TLB エン ト リ の V、 WR、

および EX が使用されます。

01 : 無効になるエン ト リ な し。 TLB エン ト リ の V、 WR、

および EX が使用されます。

10 : TLB エン ト リ の WR および EX を無効にする。 書き

込みおよび実行可能と し てページにア ク セス し ます。

11 : TLB エン ト リ の WR および EX を無効にする。 書き

込みおよび実行可能と し てページにア ク セス し ます。

読み出し /書き込み

0x00000000

38 japan.xilinx.com MicroBlaze プロセ ッサ リ フ ァ ン レンス ガイ ドUG081 (v10.3)

Page 39: MicroBlaze プロセッサ リファレンス ガイド - Xilinx...MicroBlaze プロセッサ ガイドリファレンス japan.xilinx.com UG081 (v10.3)Xilinx is providing this product

レジス タ

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

MMU の UTLB (Unified Translation Look-Aside Buffer) エント リ へのアク セス に使用し ま す。

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 では リ セ ッ ト されません。

図 1-12 に TLBLO レジス タ を、 表 1-18 にビ ッ ト の説明および リ セ ッ ト 値を示し ます。

0 22 23 24 28 29 30 31

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

図 1-12 : TLBLO

表 1-18 : 変換ルッ クアサイ ド バッ フ ァ Low レジス タ (TLBLO)

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

0:21 RPN 実 (物理) ページ番号

TLB ヒ ッ ト が発生する と、 このフ ィ ール ド が TLB エン

ト リ から読み出され、 物理ア ド レ スの作成に使用されま

す。 SIZE フ ィ ール ド の値によ っては RPN ビ ッ ト の一部

は物理ア ド レ スには使用されないため、 ソ フ ト ウ ェアで

こ のフ ィ ール ド の未使用ビ ッ ト を 0 にする必要があ り ま

す。

C_USE_MMU=3 の場合のみ

読み出し /書き込み

0x000000

22 EX 実行フ ァ イル

1 に設定する とページに実行コード が含まれ、 命令は

ページよ り フ ェ ッ チでき ます。 0 の場合は、 命令はページ

から フ ェ ッ チでき ません。 EX ビ ッ ト が 0 のページから命

令をフ ェ ッ チする と、 命令格納例外が発生し ます。

読み出し /書き込み

0

MicroBlaze プロセ ッサ リ フ ァ ンレンス ガイ ド japan.xilinx.com 39UG081 (v10.3)

Page 40: MicroBlaze プロセッサ リファレンス ガイド - Xilinx...MicroBlaze プロセッサ ガイドリファレンス japan.xilinx.com UG081 (v10.3)Xilinx is providing this product

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

23 WR 書き込み可能

1 に設定する とページは書き込み可能で、 格納命令を使

用し てページ内のア ド レ スににデータ を格納でき ます。

0 の場合は、 ページは読み出しのみで、 書き込みでき ま

せん。 WR ビ ッ ト が 0 のページにデータ を格納する と、

データ格納例外が発生し ます。

読み出し /書き込み

0

24:27 ZSEL ゾーン選択

ゾーン保護レジス タ (ZPR) の 16 個のゾーン フ ィ ール ド (Z0 ~ Z15) から 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 に固定されていて、 ラ イ ト スルーが

常に使用されます。

読み出し /書き込み

1

29 I キ ャ ッ シュの抑止

1 に設定される と、 ページへのア ク セスはキ ャ ッ シュ さ

れません。

0 の場合は、 ページへのア ク セスはキ ャ ッ シュ可能です。

読み出し /書き込み

0

表 1-18 : 変換ルッ クアサイ ド バッ フ ァ Low レジス タ (TLBLO) (続き)

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

40 japan.xilinx.com MicroBlaze プロセ ッサ リ フ ァ ン レンス ガイ ドUG081 (v10.3)

Page 41: MicroBlaze プロセッサ リファレンス ガイド - Xilinx...MicroBlaze プロセッサ ガイドリファレンス japan.xilinx.com UG081 (v10.3)Xilinx is providing this product

レジス タ

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

MMU の UTLB (Unified Translation Look-Aside Buffer) エント リ へのアク セス に使用し ま す。

MicroBlaze では、C_USE_MMU コ ンフィ ギュ レ ーショ ン オプショ ンで制御し ま す。 C_USE_MMU が 1 よ り 大き く 、 C_AREA_OPTIMIZED が 0 に設定されている場合にのみイ ンプ リ メ ン ト されま

す。 MFS および MTS 命令で TLBHI にア ク セスする場合、 Sa = 0x1004 で指定し ます。 TLBHI の

読み出し または書き込みでは、TLBX レジス タでイ ンデッ ク ス を付け られた UTLB エン ト リ がア ク

セス されます。 こ のレジス タの読み出しは、メ モ リ 管理用の特殊なレジス タのパラ メ ータ、C_MMU _TLB_ACCESS の設定に従います。

また、 TLB エン ト リ へのア ク セスにも使用されます。

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

• 読み出し て、 MSR[UM] が設定されていない場合は、 TID フ ィ ール ド の値が PID に格納され

ます。

UTLB は、 ビ ッ ト ス ト リ ームがダウ ン ロード される と リ セ ッ ト されます。 リ セ ッ ト 値はすべての

TLBHI エン ト リ で 0x00000000 です。

メ モ : UTLB は、 外部 リ セ ッ ト 入力 Reset および Debug_Rst では リ セ ッ ト されません。

図 1-13 に TLBHI レジス タ を、 表 1-19 にビ ッ ト の説明および リ セ ッ ト 値を示し ます。

30 M メ モ リ コ ヒ ーレ ン ト

メ モ リ のコ ヒ ーレン スは MicroBlaze ではイ ンプ リ メ ン

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

読み出しのみ

0

31 G 保護

ビ ッ ト が 1 に設定される と、 メ モ リ は保護され、 論理的

なページ ア ク セスは許可されません。

0 の場合は、 論理的なページ ア ク セスが許可されます。

G 属性は、 メ モ リ マ ッ プされた I/O デバイ スが不適切な

命令から ア ク セス されないよ う に保護し ます。

読み出し /書き込み

0

表 1-18 : 変換ルッ クアサイ ド バッ フ ァ Low レジス タ (TLBLO) (続き)

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

0 22 25 26 27 28 31

↑ ↑ ↑ ↑ ↑ ↑TAG SIZE V E U0 予約済み

図 1-13 : TLBHI

MicroBlaze プロセ ッサ リ フ ァ ンレンス ガイ ド japan.xilinx.com 41UG081 (v10.3)

Page 42: MicroBlaze プロセッサ リファレンス ガイド - Xilinx...MicroBlaze プロセッサ ガイドリファレンス japan.xilinx.com UG081 (v10.3)Xilinx is providing this product

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

表 1-19 : 変換ルッ クアサイ ド バッ フ ァ High レジス タ (TLBHI)

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

0:21 TAG TLB エン ト リ タ グ

仮想 メ モ リ ア ド レ スのページ番号部分と比較されます。

比較は SIZE フ ィ ール ド で制御されます。

読み出し /書き込み

0x000000

22:24 SIZE サイ ズ

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

モ リ ア ド レ スのページ番号部分の比較で使用される ビ ッ

ト の範囲を制御し ます。 このフ ィ ールド で定義される

ページ サイ ズは表 1-34 を参照し て く ださい。

読み出し /書き込み

000

25 V 有効

1 に設定された場合、 TLB エン ト リ は有効で、 ページ

変換エン ト リ を含んでいます。

0 の場合は、 TLB エン ト リ は無効です。

読み出し /書き込み

0

26 E エンデ ィ アン

MicroBlaze のページへのア ク セスは常にビ ッ グ エン

デ ィ アン形式であ る ため、 このビ ッ ト は 0 に固定されて

います。

読み出しのみ

0

27 U0 ユーザー定義

MicroBlaze にはユーザー定義の格納属性がないため、

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

読み出しのみ

0

28:31 予約済み

42 japan.xilinx.com MicroBlaze プロセ ッサ リ フ ァ ン レンス ガイ ドUG081 (v10.3)

Page 43: MicroBlaze プロセッサ リファレンス ガイド - Xilinx...MicroBlaze プロセッサ ガイドリファレンス japan.xilinx.com UG081 (v10.3)Xilinx is providing this product

レジス タ

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

TLBLO および TLBHI レジス タにア ク セスする場合に、 UTLB (Unified Translation Look-Aside Buffer) へのイ ンデッ ク ス と し て使用し ます。 MicroBlaze では、 C_USE_MMU コ ンフ ィ ギュ レー

シ ョ ン オプシ ョ ンで制御し ます。 C_USE_MMU が 1 よ り 大き く 、 C_AREA_OPTIMIZED が 0 に

設定されている場合にのみイ ンプ リ メ ン ト されます。 MFS および MTS 命令で TLBX にア ク セス

する場合、 Sa = 0x1002 で指定し ます。 図 1-14 に TLBX レジス タ を、 表 1-20 にビ ッ ト の説明およ

び リ セ ッ ト 値を示し ます。

0 26 31

↑ ↑ ↑MISS 予約済み INDEX

図 1-14 : TLBX

表 1-20 : 変換ルッ クアサイ ド バッ フ ァ インデッ クス レジス タ (TLBX)

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

0 MISS TLB ミ ス

TLBSX レジス タが、 TLB エン ト リ に含まれた仮想ア ド

レ ス を使用し て書き込まれる と、 0 にな り ます。 仮想ア ド レ スが TLB エン ト リ に含まれない場合は 1 にな り ます。 TLBX レジス タ自身が書き込まれた場合も 0 にな り ます。

読み出しのみ

メ モ リ 管理用の特殊レジス タのパラ メ ータ C_MMU_TLB_ACCESS > 0 の場合に読み出すこ と が

でき ます。

0

1:25 予約済み

26:31 INDEX TLB イ ンデッ ク ス

TLBLO および TLBHI レジス タがア ク セスする TLB エン ト リ のイ ンデッ ク スに使用されます。 TLBSX レジス

タが、 対応する TLB エン ト リ に含まれた仮想ア ド レ ス

を使用し て書き込まれる と、 こ のフ ィ ール ド は TLB インデッ ク スでア ッ プデー ト されます。

読み出し /書き込み

メ モ リ 管理用の特殊レジス タのパラ メ ータが C_MMU_TLB_ACCESS > 0 の場合に読み出しおよび

書き込みができ ます。

000000

MicroBlaze プロセ ッサ リ フ ァ ンレンス ガイ ド japan.xilinx.com 43UG081 (v10.3)

Page 44: MicroBlaze プロセッサ リファレンス ガイド - Xilinx...MicroBlaze プロセッサ ガイドリファレンス japan.xilinx.com UG081 (v10.3)Xilinx is providing this product

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

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

UTLB (Unified Translation Look-Aside Buffer ) での仮想ページ番号の検索に使用し ま す。

MicroBlaze では、C_USE_MMU コ ンフィ ギュ レ ーショ ン オプショ ンで制御し ま す。 C_USE_MMU が 1 よ り 大き く 、 C_AREA_OPTIMIZED が 0 に設定されている場合にのみイ ンプ リ メ ン ト されま

す。 TLBSX を MTS 命令で書き込む場合、Sa = 0x1005 で指定し ます。 図 1-15 に TLBSX レジス タ

を、 表 1-21 にビ ッ ト の説明および リ セ ッ ト 値を示し ます。

0 22 31

↑ ↑VPN 予約済み

図 1-15 : TLBSX

表 1-21 : 変換ルッ クアサイ ド バッ フ ァ インデッ クス検索レジス タ (TLBSX)

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

0:21 VPN 仮想ページ番号

仮想 メ モ リ ア ド レ スのページ番号部分を表し、 仮想 メ

モ リ ア ド レ スのページ番号部分と比較されます。 比較

は、 V ビ ッ ト が 1 に設定されている各 TLB エン ト リ の SIZE フ ィ ール ド で制御されます。

仮想ページ番号が検出された場合は、 TLBX レジス タ

は TLB エン ト リ のイ ンデッ ク ス を使用し て書き込まれ、

TLBX の MISS ビ ッ ト は 0 にな り ます。 TLB エン ト リ で

仮想ページ番号が検出されない場合は、 TLBX レジス

タの MISS ビ ッ ト が 1 に設定されます。

書き込みのみ

22:31 予約済み

44 japan.xilinx.com MicroBlaze プロセ ッサ リ フ ァ ン レンス ガイ ドUG081 (v10.3)

Page 45: MicroBlaze プロセッサ リファレンス ガイド - Xilinx...MicroBlaze プロセッサ ガイドリファレンス japan.xilinx.com UG081 (v10.3)Xilinx is providing this product

レジス タ

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

プロセ ッ サ バージ ョ ン レジス タは、C_PVR コ ンフ ィ ギュ レーシ ョ ン オプシ ョ ンによ り 制御されま

す。

• C_PVR を 0 に設定する と PVR はイ ンプ リ メ ン ト されず、 MSR[PVR]=0 にな り ます。

• 1 に設定する と 初のレジス タ PVR0 のみがイ ンプ リ メ ン ト され、 2 に設定する と PVR0 ~

PVR11 の 12 個の PVR レジス タすべてがイ ンプ リ メ ン ト されます。

PVR を MFS 命令で読み出す場合、Sa = 0x200x で指定し ます。x は 0x0 ~ 0xB のレジス タ番号で

指定し ます。

表 1-22 ~ 表 1-33 に、 ビ ッ ト の説明および値を示し ます。

表 1-22 : プロセ ッサ バージ ョ ン レジス タ 0 (PVR0)

ビ ッ ト 名前 説明 値

0 CFG PVR のイ ンプ リ メ ンテーシ ョ ン : 0 = 基本、 1 = フル

C_PVR の値に依存

1 BS バレル シフ タの使用 C_USE_BARREL

2 DIV 除算器の使用 C_USE_DIV

3 MUL ハード ウ ェア乗算器の使用 C_USE_HW_MUL > 0

4 FPU FPU の使用 C_USE_FPU > 0

5 EXC 例外の使用 C_*_EXCEPTION の値に依存

また、 C_USE_MMU > 0 の場合

6 ICU 命令キ ャ ッ シュの使用 C_USE_ICACHE

7 DCU データ キ ャ ッ シュの使用 C_USE_DCACHE

8 MMU MMU の使用 C_USE_MMU > 0

9:15 予約済み 0

MicroBlaze プロセ ッサ リ フ ァ ンレンス ガイ ド japan.xilinx.com 45UG081 (v10.3)

Page 46: MicroBlaze プロセッサ リファレンス ガイド - Xilinx...MicroBlaze プロセッサ ガイドリファレンス japan.xilinx.com UG081 (v10.3)Xilinx is providing this product

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

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

0x1 = v5.00.a

0x2 = v5.00.b

0x3 = v5.00.c

0x4 = v6.00.a

0x6 = v6.00.b

0x5 = v7.00.a

0x7 = v7.00.b

0x8 = v7.10.a

0x9 = v7.10.b

0xA = v7.10.c

0xB = v7.10.d

0xC = v7.20.a

0xD = v7.20.b

0xE = v7.20.c

0xF = v7.20.d

各 リ リ ース固有

24:31 USR1 ユーザー コ ンフ ィ ギュ レーシ ョ

ン値 1

C_PVR_USER1

表 1-23 : プロセ ッサ バージ ョ ン レジス タ 1 (PVR1)

ビ ッ ト 名前 説明 値

0:31 USR2 ユーザー コ ンフ ィ ギュ レーシ ョ

ン値 2

C_PVR_USER2

表 1-24 : プロセ ッサ バージ ョ ン レジス タ 2 (PVR2)

ビ ッ ト 名前 説明 値

0 DOPB 使用中のデータ側 OPB C_D_OPB

1 DLMB 使用中のデータ側 LMB C_D_LMB

2 IOPB 使用中の命令側 OPB C_I_OPB

3 ILMB 使用中の命令側 LMB C_I_LMB

4 IRQEDGE エ ッ ジで ト リ ガ される割 り 込み C_INTERRUPT_IS_EDGE

5 IRQPOS 立ち上が り エ ッ ジへの割 り 込み C_EDGE_IS_POSITIVE

6 DPLB 使用中のデータ側 PLB C_D_PLB

表 1-22 : プロセ ッサ バージ ョ ン レジス タ 0 (PVR0) (続き)

ビ ッ ト 名前 説明 値

46 japan.xilinx.com MicroBlaze プロセ ッサ リ フ ァ ン レンス ガイ ドUG081 (v10.3)

Page 47: MicroBlaze プロセッサ リファレンス ガイド - Xilinx...MicroBlaze プロセッサ ガイドリファレンス japan.xilinx.com UG081 (v10.3)Xilinx is providing this product

レジス タ

7 IPLB 使用中の命令側 PLB C_I_PLB

8 INTERCON PLB イ ン ターコネ ク ト の使用 C_INTERCONNECT

9:11 予約済み

12 FSL 拡張 FSL 命令の使用 C_USE_EXTENDED_FSL_INSTR

13 FSLEXC FSL 制御ビ ッ ト 不一致によ る例

外の生成

C_FSL_EXCEPTION

14 MSR MSRSET 命令および MSRCLR 命令の使用

C_USE_MSR_INSTR

15 PCMP パターン比較命令の使用 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

20 FPU FPU の使用 C_USE_FPU > 0

21 MUL64 64 ビ ッ ト ハード ウ ェ ア乗算器

の使用

C_USE_HW_MUL = 2

22 FPU2 浮動小数点変換および平方根命

令の使用

C_USE_FPU = 2

23 IPLBEXC IPLB エラーによ る例外の生成 C_IPLB_BUS_EXCEPTION

24 DPLBEXC DPLB エラーによ る例外の生成 C_DPLB_BUS_EXCEPTION

25 OP0EXC 不正な op コード 0x0 によ る例

外の生成

C_OPCODE_0x0_ILLEGAL

26 UNEXC 不整列データ ア ク セスによ る例

外の生成

C_UNALIGNED_EXCEPTIONS

27 OPEXC 不正な op コード によ る例外の

生成

C_ILL_OPCODE_EXCEPTION

28 IOPBEXC IOPB エラーによ る例外の生成 C_IOPB_BUS_EXCEPTION

29 DOPBEXC DOPB エラーによ る例外の生成 C_DOPB_BUS_EXCEPTION

30 DIVEXC 0 での除算または除算オーバー

フ ローによ る例外の生成

C_DIV_ZERO_EXCEPTION

31 FPUEXC FPU によ る例外の生成 C_FPU_EXCEPTION

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

ビ ッ ト 名前 説明 値

MicroBlaze プロセ ッサ リ フ ァ ンレンス ガイ ド japan.xilinx.com 47UG081 (v10.3)

Page 48: MicroBlaze プロセッサ リファレンス ガイド - Xilinx...MicroBlaze プロセッサ ガイドリファレンス japan.xilinx.com UG081 (v10.3)Xilinx is providing this product

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

表 1-25 : プロセ ッサ バージ ョ ン レジス タ 3 (PVR3)

ビ ッ ト 名前 説明 値

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

1: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 予約済み

20:24 FSL FSL の数 C_FSL_LINKS

25:31 予約済み

表 1-26 : プロセ ッサ バージ ョ ン レジス タ 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 予約済み 0

18 ICI 命令キ ャ ッ シュ XCL プロ ト コル C_ICACHE_INTERFACE

19:31 予約済み 0

表 1-27 : プロセ ッサ バージ ョ ン レジス タ 5 (PVR5)

ビ ッ ト 名前 説明 値

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

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

48 japan.xilinx.com MicroBlaze プロセ ッサ リ フ ァ ン レンス ガイ ドUG081 (v10.3)

Page 49: MicroBlaze プロセッサ リファレンス ガイド - Xilinx...MicroBlaze プロセッサ ガイドリファレンス japan.xilinx.com UG081 (v10.3)Xilinx is providing this product

レジス タ

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 DCI データ キ ャ ッ シュ XCL プロ ト

コル

C_DCACHE_INTERFACE

19:31 予約済み 0

表 1-28 : プロセ ッサ バージ ョ ン レジス タ 6 (PVR6)

ビ ッ ト 名前 説明 値

0:31 ICBA 命令キ ャ ッ シュのベース ア ド レ ス C_ICACHE_BASEADDR

表 1-29 : プロセ ッサ バージ ョ ン レジス タ 7 (PVR7)

ビ ッ ト 名前 説明 値

0:31 ICHA 命令キ ャ ッ シュのハイ ア ド レ ス C_ICACHE_HIGHADDR

表 1-30 : プロセ ッサ バージ ョ ン レジス タ 8 (PVR8)

ビ ッ ト 名前 説明 値

0:31 DCBA データ キ ャ ッ シュのベース ア ド レ ス

C_DCACHE_BASEADDR

表 1-31 : プロセ ッサ バージ ョ ン レジス タ 9 (PVR9)

ビ ッ ト 名前 説明 値

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

C_DCACHE_HIGHADDR

表 1-27 : プロセ ッサ バージ ョ ン レジス タ 5 (PVR5) (続き)

ビ ッ ト 名前 説明 値

MicroBlaze プロセ ッサ リ フ ァ ンレンス ガイ ド japan.xilinx.com 49UG081 (v10.3)

Page 50: MicroBlaze プロセッサ リファレンス ガイド - Xilinx...MicroBlaze プロセッサ ガイドリファレンス japan.xilinx.com UG081 (v10.3)Xilinx is providing this product

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

表 1-32 : プロセ ッサ バージ ョ ン レジス タ 10 (PVR10)

ビ ッ ト 名前 説明 値

0:7 ARCH ターゲ ッ ト アーキテ クチャ :

0x6 : Spartan®-3、 XA Spartan-3

0x7 : Virtex-4、

QPro Virtex-4 Hi Rel QPro Virtex-4 Rad ト ラ レ ン ト

0x8 : Virtex-5

0x9 : Spartan-3E、 XA Spartan-3E

0xA : Spartan-3A、 XA Spartan-3A

0xB : Spartan-3AN

0xC : Spartan-3A DSP XA Spartan-3A DSP

0xD : Spartan-6

Virtex-6

パラ メ ータ C_FAMILY によ り 定義

8:31 予約済み 0

表 1-33 : プロセ ッサ バージ ョ ン レジス タ 11 (PVR11)

ビ ッ ト 名前 説明 値

0:1 MMU MMU の使用

0 : な し

1 : ユーザー モード

2 : 保護

3 : 仮想

C_USE_MMU

2:4 ITLB 命令シャ ド ウ TLB のサイ ズ log2(C_MMU_ITLB_SIZE)

5:7 DTLB データ シャ ド ウ TLB のサイ ズ log2(C_MMU_DTLB_SIZE)

50 japan.xilinx.com MicroBlaze プロセ ッサ リ フ ァ ン レンス ガイ ドUG081 (v10.3)

Page 51: MicroBlaze プロセッサ リファレンス ガイド - Xilinx...MicroBlaze プロセッサ ガイドリファレンス japan.xilinx.com UG081 (v10.3)Xilinx is providing this product

レジス タ

8:9 TLBACC TLB レジス タのア ク セス :

0 : 小

1 : 読み出し

2 : 書き込み

3 : フル ア ク セス

C_MMU_TLB_ACCESS

10:14 ZONES メ モ リ 保護ゾーンの数 C_MMU_ZONES

15:16 予約済み 将来の使用に予約 0

17:31 RSTMSR MSR の リ セ ッ ト 値 C_RESET_MSR

表 1-33 : プロセ ッサ バージ ョ ン レジス タ 11 (PVR11) (続き)

ビ ッ ト 名前 説明 値

MicroBlaze プロセ ッサ リ フ ァ ンレンス ガイ ド japan.xilinx.com 51UG081 (v10.3)

Page 52: MicroBlaze プロセッサ リファレンス ガイド - Xilinx...MicroBlaze プロセッサ ガイドリファレンス japan.xilinx.com UG081 (v10.3)Xilinx is providing this product

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

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

MicroBlaze では、 命令の実行にパイプラ イ ン処理を使用し ます。 ほ と んどの命令では、 各段を完了

するのに 1 ク ロ ッ ク サイ クルかかる ため、 1 つの命令を完了するのに必要な ク ロ ッ ク サイ クル数

は、 パイプラ イ ン段数に等し く 、 サイ クルご と に命令が 1 つ完了し ます。 実行段に複数のク ロ ッ ク

サイ クルを要する命令も あ り ますが、 その場合は命令が完了する まで後続命令がス ト ールし ます。

処理速度が低い メ モ リ から実行する場合、 フ ェ ッチ段に複数サイ クルかかる こ と があ り ます。 こ の

レ イ テンシは、パイプラ イ ンの効率に直接影響し ます。MicroBlaze では命令プ リ フ ェ ッ チ バッ フ ァ

がイ ンプ リ メ ン ト され、 こ のよ う なレ イ テンシの影響が軽減されます。 命令実行段に複数サイ クル

かかる命令でパイプラ イ ンがス ト ールされる場合でも、プ リ フ ェ ッ チ バッ フ ァ に後続命令が読み込

まれます。 パイプラ イ ンがフ ェ ッチ段を実行でき る よ う になる と、 プ リ フ ェ ッ チ バッ フ ァ から新し

い命令を読み込むこ と ができ るので、 命令 メ モ リ ア ク セスの完了を待つ必要はあ り ません。 命令が

自動変更コード などで実行中に変更される場合、 こ の変更された命令を実行する前にプ リ フ ェ ッチ

バッ フ ァ を空にし て、 変更前の命令が含まれていないよ う にする必要があ り ます。 こ のよ う にする

には、 BRI 4 などの同期分岐命令を使用し ます。

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

52 japan.xilinx.com MicroBlaze プロセ ッサ リ フ ァ ン レンス ガイ ドUG081 (v10.3)

Page 53: MicroBlaze プロセッサ リファレンス ガイド - Xilinx...MicroBlaze プロセッサ ガイドリファレンス japan.xilinx.com UG081 (v10.3)Xilinx is providing this product

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

遅延スロ ッ ト

遅延ス ロ ッ ト を使用する分岐が実行される と、フ ェ ッチ段階の命令のみが破棄され、デコード段 (分

岐遅延ス ロ ッ ト ) は完了されます。 これによ り 、 分岐によ るペナルテ ィ が 2 ク ロ ッ ク サイ クルから

1 ク ロ ッ ク サイ クルに軽減されます。 遅延ス ロ ッ ト を使用する分岐命令には、 命令ニーモニ ッ ク の

後尾に D を追加し ます。 た と えば、 BNE 命令 (遅延ス ロ ッ ト な し) では後続命令は実行されません

が、 BNED 命令では分岐ロ ケーシ ョ ンに移動する前に後続命令が実行されます。

遅延ス ロ ッ ト には、 IMM、 分岐、 またはブレーク命令を含まないよ う にし ます。 割 り 込みおよび外

部ハード ウ ェ アのブレークは、 遅延ス ロ ッ ト を使用する分岐が完了する まで保留されます。

不整列ワード またはハーフ ワード の読み込みおよび格納など、 回復が可能な例外が発生する可能性

があ る命令は、 遅延ス ロ ッ ト に含める こ と ができ ます。 遅延ス ロ ッ ト で例外が発生し た場合、

ESR[DS] ビ ッ ト が設定され、 例外ハン ド ラは特殊用途レジス タの BTR に格納されている分岐ター

ゲ ッ ト に命令を戻し ます。 レジス タ R17 は、ESR[DS] ビ ッ ト が設定されている と無効にな り 、設定

されていなければ、 例外が発生し た命令の後続のア ド レ ス を含みます。

MicroBlaze プロセ ッサ リ フ ァ ンレンス ガイ ド japan.xilinx.com 53UG081 (v10.3)

Page 54: MicroBlaze プロセッサ リファレンス ガイド - Xilinx...MicroBlaze プロセッサ ガイドリファレンス japan.xilinx.com UG081 (v10.3)Xilinx is providing this product

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

メ モ リ アーキテ クチャ

MicroBlaze の メ モ リ はハーバード アーキテ クチャ構造であ り 、 命令ア ク セスおよびデータ ア ク セ

スに別々のア ド レ ス空間が使用されます。 各ア ド レ ス空間は 32 ビ ッ ト の範囲で、 それぞれ 4GB ま

での命令 メ モ リ およびデータ メ モ リ を処理でき ます。命令 メ モ リ およびデータ メ モ リ の範囲は、同

じ物理 メ モ リ にマ ッ プし てオーバーラ ッ プさせる こ と ができ ます。 これは、 ソ フ ト ウ ェ アのデバッ

グで有益です。

MicroBlaze の命令およびデータ イ ン ターフ ェ イ スは 32 ビ ッ ト 幅で、 ビ ッ グ エンデ ィ アン形式で

す。 データ メ モ リ へは、 ワード、 ハーフ ワード、 バイ ト でア ク セスでき ます。

データ ア ク セスは、プロセ ッ サで不整列の例外がサポー ト されている場合を除き、 ワード ア ク セス

はワード の境界で、 ハーフ ワード ア ク セスはハーフ ワード の境界で整列させる必要があ り ます。 命

令ア ク セスは、 すべてワード の境界で整列させる必要があ り ます。

MicroBlaze では、I/O へのデータ ア ク セス と メ モ リ へのデータ ア ク セスは分離されず、メ モ リ マ ッ

プされた I/O が使用されます。 メ モ リ ア ク セスには、次の 3 つのイ ン ターフ ェ イ ス を使用でき ます。

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

• プロセ ッ サ ローカル バス (PLB) または オンチ ッ プ ペ リ フ ェ ラル バス (OPB)

• ザイ リ ン ク ス CacheLink (XCL)

LMB メ モ リ ア ド レ ス範囲は、PLB、OPB、または XCL のア ド レ ス範囲と重な ら ないよ う にする必

要があ り ます。

MicroBlaze では、 ローカル メ モ リ (LMB) へのア ク セスおよびキ ャ ッ シ ュの読み出しのレ イ テン

シは 1 ク ロ ッ ク サイ クルです。 ただし、 C_AREA_OPTIMIZED が 1 に設定されている場合の

データ側ア ク セスおよびデータ キ ャ ッ シュの読み出しは 2 ク ロ ッ ク サイ クルです。 データ キ ャ ッ

シュ書き込みレ イ テンシは C_DCACHE_USE_WRITEBACK で決ま り ます。

C_DCACHE_USE_WRITEBACK が 1 に設定されている場合、 書き込みレ イ テンシは通常 1 サイ

クルです ( キ ャ ッ シュが メ モ リ にア ク セスする必要があ る場合はレ イ テンシはそれ以上 )。C_DCACHE_USE_WRITEBACK が 0 にク リ ア されている場合、 書き込みレ イ テンシは通常 2 サイ クルです ( ポステ ッ ド書き込みバッ フ ァ がフルの場合は、 レ イ テンシはそれ以上 )。

MicroBlaze の命令およびデータ キ ャ ッ シ ュでは、 4 ワード または 8 ワード のキ ャ ッ シュ ラ イ ンを

使用でき ます。 キ ャ ッ シュ ラ イ ンを長 く する場合はバイ ト 長も増やすと、通常シーケンシャル ア ク

セス パターンのソ フ ト ウ ェ アのパフ ォーマン スが向上し ます。 ラ ンダム ア ク セス パターンのソ フ

ト ウ ェ アでは、キ ャ ッ シュ サイ ズによ ってはパフ ォーマン スが低下する こ と があ り ます。 これは、使

用可能なキ ャ ッ シュ ラ イ ンが少な く な り 、 キ ャ ッ シュの ヒ ッ ト 率が下がる ためです。

各 メ モ リ イ ン ターフ ェ イ スの詳細は、第 2 章 「MicroBlaze の信号イ ン ターフ ェ イ ス」 を参照し て く

ださ い。

54 japan.xilinx.com MicroBlaze プロセ ッサ リ フ ァ ン レンス ガイ ドUG081 (v10.3)

Page 55: MicroBlaze プロセッサ リファレンス ガイド - Xilinx...MicroBlaze プロセッサ ガイドリファレンス japan.xilinx.com UG081 (v10.3)Xilinx is providing this product

特権命令

特権命令

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

• GET、 PUT、 NGET、 NPUT、 CGET、 CPUT、 NCGET、 NCPUT

• WIC、 WDC

• MTS

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

• BRK

• RTID、 RTBD、 RTED

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

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

次のいずれかでユーザー モードおよび仮想モード から特権モー ド に切 り 替わ り ます。

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

2. ハード ウ ェ ア例外

3. マス ク不可のブレーク またはハード ウ ェ ア ブレーク

4. 割 り 込み

5. 命令 「BRALID Re, 0x8」 を実行し、 ユーザー ベク タ例外を発生させる

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

ハード ウ ェ ア生成された リ セ ッ ト 以外では、 ユーザー モードおよび仮想モード のステータ スは、

MSR の UMS ビ ッ ト および VMS ビ ッ ト に保存されます。

アプ リ ケーシ ョ ン (ユーザー モー ド ) プロ グ ラ ムでは、 BRALID 命令または BRKI 命令を使用し て

物理ア ド レ ス 0x8 にジ ャ ンプし、制御をシステム サービ ス ルーチン (特権モード プロ グ ラ ム) に転

送し ます。 こ の命令を実行する と、システム呼び出し例外が発生し ます。 例外ハン ド ラ で、どのシス

テム サービ ス ルーチンを呼び出すかおよび呼び出し側のアプ リ ケーシ ョ ンにそのサービ ス を呼び

出す権限があ るかが確認されます。 権限があ る場合は、 アプ リ ケーシ ョ ン プロ グ ラ ムに代わ り 、 例

外ハン ド ラでシステム サービ ス ルーチンへのプロ シージャ呼び出しが実行されます。

システム サービ ス ルーチンに必要な実行環境の設定には、 プロ ローグ命令を実行する必要があ り

ます。 これらの命令を実行する と通常、 プロ シージャの情報 (ア ク テ ィ ブ化の記録) を保持する ス ト

レージのブロ ッ ク が作成され、ポ イ ン タがア ッ プデー ト および初期化され、システム サービ ス ルー

チンで使用される揮発性レジス タが保存されます。 プロ ローグ コード は実行モジュール作成時に リ

ンカによ って挿入でき ます。システム呼び出し割 り 込みハン ド ラ またはシステム ラ イブラ リ ルーチ

ンのどち らかに、 ス タブ コード と し て含める こ と もでき ます。

システムサービ ス ルーチンから戻る と、 上記の手順で実行された内容が無効にな り ます。 エピ ロー

グ コード を実行する と、ア ク テ ィ ブ化の記録が巻き戻しおよび解放され、、ポ イ ン タが復元され、揮

発性レジス タが復元されます。 割 り 込みハン ド ラ では、 例外命令 (RTED) から アプ リ ケーシ ョ ンへ

の戻 り が実行されます。

MicroBlaze プロセ ッサ リ フ ァ ンレンス ガイ ド japan.xilinx.com 55UG081 (v10.3)

Page 56: MicroBlaze プロセッサ リファレンス ガイド - Xilinx...MicroBlaze プロセッサ ガイドリファレンス japan.xilinx.com UG081 (v10.3)Xilinx is providing this product

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

仮想メ モ リ管理

MicroBlaze で実行されるプロ グ ラ ムでは、有効ア ド レ ス を使用し て 4GB のフ ラ ッ ト ア ド レ ス空間

にア ク セス し ます。 プロセ ッ サでは、 変換モード に応じ て次の方法でこ のア ド レ ス空間に割 り 込み

ます。

• 実モード : 有効なア ド レ ス を使用し て物理 メ モ リ に直接ア ク セス

• 仮想モード : 有効なア ド レ スは、 プロセ ッ サの仮想 メ モ リ 管理ハード ウ ェ アによ り 物理ア ド レ

スに変換される

仮想 メ モ リ モード では、システム ソ フ ト ウ ェ アでプロ グ ラ ムおよびデータ を物理ア ド レ ス空間のど

の位置にでも再配置でき ます。 ア ク テ ィ ブなプロ グ ラ ムおよびデータに領域が必要な場合は、 シス

テム ソ フ ト ウ ェ アでア ク テ ィ ブでないプロ グ ラ ムおよびデータ を物理 メ モ リ から移動し ます。

再配置する と、 システムが実際にイ ンプ リ メ ン ト する よ り も多 く の メ モ リ をプロ グ ラ ムで使用でき

る よ う にな り 、 システムの物理 メ モ リ の制限がな く な り ます。 また、 どの物理 メ モ リ ア ド レ スがほ

かのソ フ ト ウ ェ ア プロセスやハード ウ ェア デバイ スに割 り 当て られているかを知る必要も な く な

り ます。 プロ グ ラ ムで使用でき る ア ド レ スは、 プロセ ッ サで物理ア ド レ スに変換されます。

仮想モード では、メ モ リ 保護を詳細に制御でき ます。 1KB 程度の小さ な メ モ リ ブロ ッ ク でも個別に

不正ア ク セスから保護でき ます。 保護および再配置の機能によ り 、 システム ソ フ ト ウ ェ アでマルチ

タ ス ク がサポー ト されます。 マルチタ ス クでは、 複数のプロ グ ラ ムが同時に実行されます。

MicroBlaze では、 仮想モード は MMU (Memory Management Unit) によ り イ ンプ リ メ ン ト されま

す。MMU は C_USE_MMU が 3 および C_AREA_OPTIMIZED が 0 に設定されている場合に有効

です。 MMU では、有効ア ド レ スから物理ア ド レ スへの対応付けが制御され、メ モ リ 保護がサポー ト

されます。 これらの機能を使用する と、 仮想 メ モ リ のデマン ド ページングおよびその他の メ モ リ 管

理スキーマをシステム ソ フ ト ウ ェ アでイ ンプ リ メ ン ト でき る よ う にな り ます。

MicroBlaze の MMU イ ンプ リ メ ンテーシ ョ ンは、 PowerPC™ 405 に基づいています。 詳細は、

『PowerPC Processor Reference Guide』 を参照し て く ださ い。

MMU の機能の概要は次の とお り です。

• 有効ア ド レ ス を物理ア ド レ スへ変換

• ア ド レ ス変換中の、 ページ レベルでのア ク セスの制御

• ゾーンを使用し た、 仮想モード によ る保護制御

• 命令ア ド レ スおよびデータ ア ド レ ス変換および保護の個別の制御

• 1KB、 4KB、 16KB、 64KB、 256KB、 1MB、 4MB、 および 16MB の 8 とお り のページ サイ ズ

のサポー ト 。 システム ソ フ ト ウ ェ アでは、 どのページ サイ ズの組み合わせも使用可能です。

• ソ フ ト ウ ェ アによ るページ置き換えの制御

実モー ド

プロセ ッ サは、 命令を フ ェ ッチする場合および読み込みまたは格納命令でデータにア ク セスする場

合に メ モ リ を参照し ます。 プロ グ ラ ムでは、プロセ ッ サよ り 算出された 32 ビ ッ ト の有効ア ド レ ス を

使用し て メ モ リ 位置を参照し ます。 実モード がイ ネーブルの場合は、 物理ア ド レ スは有効ア ド レ ス

に等し く 、プロセ ッ サで物理 メ モ リ へのア ク セスに使用されます。 プロセ ッ サは、リ セ ッ ト される と

実モード で動作し ます。 実モード は、 MSR の VM ビ ッ ト を 0 にし て も、 イ ネーブルにな り ます。

物理 メ モ リ データ ア ク セス (読み込みおよび格納) は、 有効ア ド レ ス を使用し て実モード で実行さ

れます。 実モード では、 システム ソ フ ト ウ ェ アで仮想ア ド レ ス変換を使用でき ませんが、 メ モ リ ア

ク セスの完全な保護は、C_USE_MMU > 1 および C_AREA_OPTIMIZED = 0 の場合にイ ンプ リ メ

56 japan.xilinx.com MicroBlaze プロセ ッサ リ フ ァ ン レンス ガイ ドUG081 (v10.3)

Page 57: MicroBlaze プロセッサ リファレンス ガイド - Xilinx...MicroBlaze プロセッサ ガイドリファレンス japan.xilinx.com UG081 (v10.3)Xilinx is providing this product

仮想メ モ リ管理

ン ト されます。 実モード の メ モ リ 管理のイ ンプ リ メ ンテーシ ョ ンは、仮想モード よ り も容易です。 単

純なエンベデッ ド環境で、 ア ク セス保護が必要で仮想ア ド レ ス変換が必要でない場合は、 実モード

の使用が適し ています。

仮想モー ド

仮想モード では、図 1-16 に示される手順で、プロセ ッ サで有効ア ド レ スが物理ア ド レ スに変換され

ます。 仮想モード は、 MSR の VM ビ ッ ト を 1 にし て も、 イ ネーブルにな り ます。

図 1-16 の各ア ド レ スには、ページ番号フ ィ ール ドおよびオフセ ッ ト フ ィ ール ド が含まれています。

ページ番号は、MMU で変換されたア ド レ スの一部です。 オフセ ッ ト は ページへのバイ ト オフセ ッ

ト で、MMU で変換された ものではあ り ません。 仮想ア ド レ スは、PID レジス タに含まれるプロセス

ID (PID) と い う フ ィ ール ド で構成されています (37 ページの 「プロセス識別レジス タ (PID)」 を参

照)。 PID と有効ページ番号 (EPN) を組み合わせて、仮想ページ番号 (VPN) と呼びます。 この値は、

表 1-34 に示すよ う に、 ページ サイ ズで決ま り ます。

システム ソ フ ト ウ ェ アでは、 各仮想ページを物理ページに変換する際に使用されるエン ト リ を含

む、 ページ変換テーブルが維持されます。 ページ変換エン ト リ によ って定義されるページ サイ ズに

よ り 、 ページ番号フ ィ ール ドおよびオフセ ッ ト フ ィ ール ド のサイ ズが決ま り ます。 ページサイ ズが

4KB の場合、ページ番号フ ィ ール ド は 20 ビ ッ ト 、オフセ ッ ト フ ィ ール ド は 12 ビ ッ ト にな り ます。

こ の場合、 VPN は 28 ビ ッ ト にな り ます。

も頻繁に使用されるページ変換は、TLB (Translation Look-Aside Buffer) に格納されます。 仮想ア

ド レ スの変換時に MMU で、一致する VPN (PID および EPN) のページ変換エン ト リ が確認されま

す。 表のエン ト リ すべてではな く 、プロセ ッ サ TLB に含まれるエン ト リ のみが確認されます。 VPN が一致するページ変換エン ト リ が検出される と、 対応する物理ページ番号がエン ト リ から読み出さ

図 1-16 : 仮想モー ドのア ド レス変換

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 57UG081 (v10.3)

Page 58: MicroBlaze プロセッサ リファレンス ガイド - Xilinx...MicroBlaze プロセッサ ガイドリファレンス japan.xilinx.com UG081 (v10.3)Xilinx is providing this product

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

れ、オフセ ッ ト と組み合わせて 32 ビ ッ ト 物理ア ド レ スが構成されます。 プロセ ッ サではこの物理ア

ド レ ス を使用し て、 メ モ リ を参照し ます。

システム ソ フ ト ウ ェアでは PID を使用し て、プロセ ッサで実行されている ソ フ ト ウ ェ ア プロセス ( タ ス ク、 サブルーチン、 ス レ ッ ド ) を識別し ます。 個別にコ ンパイルされた複数のプロセ ッ サが、 重

なった有効ア ド レ ス領域で動作する こ と があ り ますが、 マルチタ ス ク がサポー ト されている場合は

システム ソ フ ト ウ ェアで領域が重な ら ないよ う にする必要があ り ます。 各プロセスに PID を割 り

当てる と、 システム ソ フ ト ウ ェ アで各プロセス を、 仮想ア ド レ ス空間が重な ら ない領域に再配置で

き る よ う にな り ます。 仮想ア ド レ ス空間を対応付け る と、 各プロセス を個別に物理ア ド レ ス空間に

変換でき る よ う にな り ます。

ページ変換テーブル

ページ変換テーブルはソ フ ト ウ ェ アで定義および管理されたデータ構造で、 ページ変換に必要な情

報を含んでいます。 ソ フ ト ウ ェ アで管理されるページ変換の要件は、エンベデッ ド システム アプ リ

ケーシ ョ ンがターゲ ッ ト とする アーキテ クチャの ト レード オフを表し ます。 エンベデッ ド システム

では動作環境が厳密に制御され、アプ リ ケーシ ョ ン ソ フ ト ウ ェ アのセ ッ ト が詳細に定義されていま

す。 こ の環境では、 次の方法で仮想 メ モ リ 管理が各エンベデッ ド システム用に 適化されます。

• ページ変換テーブルは、 ページ変換エン ト リ の検索効率が上がる よ う に構成する こ と ができ ま

す。 ほ と んどの汎用プロセ ッ サでは、 イ ンデッ ク ス付きの表 (単純な検索方法、 表サイ ズ大) ま

たはハッ シュ テーブル (複雑な検索方法、 表サイ ズ小) のいずれかがイ ンプ リ メ ン ト されます。

ソ フ ト ウ ェ アでの検索では、 エンベデッ ド システムに適し た構成を組み合わせて使用でき ま

す。 ページ テーブルのサイ ズ と ア ク セス時間はどち ら も 適化可能です。

• アプ リ ケーシ ョ ン モジュール、 デバイ ス ド ラ イバ、 システム サービ ス ルーチン、 およびデー

タに個別のページ サイ ズを使用でき ます。 個別のページ サイ ズを使用する と メ モ リ のフ ラ グ

メ ンテーシ ョ ンが削減され、 システム ソ フ ト ウ ェ アで メ モ リ が効率的に使用されます。 サイ ズ

の大き なデータ構造を 16MB のページに、小型の I/O デバイ ス ド ラ イバを 1KB のページに割

り 当てる と い う よ う な例が考え られます。

• ページの置き換えは、 ページ変換の ミ ス を 小限に抑え る よ う に調整でき ます。 次に説明する

よ う に、 も頻繁に使用されるページ変換は、 TLB (Translation Look-Aside Buffer) に格納さ

れます。 どの変換を TLB に格納し、新しい変換が必要になった場合にどの変換を置き換え るか

は、 ソ フ ト ウ ェ アで決定されます。 置き換え手法は、ページ変換エン ト リ が常に TLB に格納さ

れた り 削除された り する ス ラ ッ シュが発生し ないよ う に調整でき ます。 また、 重要なページ変

換が置き換え られないよ う に (ページ ロ ッ ク ) 調整でき ます。

ソ フ ト ウ ェ アで管理される統合 64 エン ト リ TLB は、 MMU でア ク セス される命令およびデータ

ページ変換エン ト リ のサブセ ッ ト をキ ャ ッ シュ し ます。 ソ フ ト ウ ェ アでシステム メ モ リ にあ るペー

ジ変換テーブルからエン ト リ を読み出し て TLB に格納し ます。 次に、 統合 TLB を詳細に説明し ま

す。 内部的には、 MMU には命令およびデータ (サイ ズはそれぞれ C_MMU_ITLB_SIZE および

C_MMU_DTLB_SIZE で設定可) のシャ ド ウ TLB も含まれます。

これらのシャ ド ウ TLB はすべてプロセ ッ サで管理され (ソ フ ト ウ ェ アには透過的)、統合 TLB と の

ア ク セス競合を 小限に抑え るために使用されます。

58 japan.xilinx.com MicroBlaze プロセ ッサ リ フ ァ ン レンス ガイ ドUG081 (v10.3)

Page 59: MicroBlaze プロセッサ リファレンス ガイド - Xilinx...MicroBlaze プロセッサ ガイドリファレンス japan.xilinx.com UG081 (v10.3)Xilinx is providing this product

仮想メ モ リ管理

変換ルッ クアサイ ド バッ フ ァ (TLB)TLB (Translation Look-Aside Buffer) は MicroBlaze MMU で、 ア ド レ ス変換 (プロセ ッ サが仮想

モード で実行し ている場合)、メ モ リ 保護、および格納制御に使用されます。 TLB の各エン ト リ には、

仮想ページ (PID と 有効ページ番号) の識別、物理ページへの変換の指定、ページの保護特性の決定、

およびページに関連付け られた格納属性の指定のために必要な情報が含まれています。

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

• UTLB (統合 TLB) : 64 個のエン ト リ を含み、擬似連想です。 命令ページおよびデータ ページ変

換は、任意の UTLB エン ト リ に格納でき ます。 UTLB の初期化および管理はすべて ソ フ ト ウ ェ

アで制御されます。

• ITLB (命令シャ ド ウ TLB) : 命令ページ変換エン ト リ を含み、 完全に連想です。 ITLB に格納さ

れたページ変換エン ト リ は、 UTLB で 後にア ク セス された命令ページ変換です。 ITLB は命

令変換と UTLB のア ッ プデー ト 操作の競合を 小限に抑える ために使用されます。 ITLB の初

期化および管理はすべてハード ウエアで制御され、 ソ フ ト ウ ェ アには透過的です。

• DTLB (データ シャ ド ウ TLB) : データ ページ変換エント リ を 含み、 完全に連想です。 DTLB に格納さ れたページ変換エント リ は、UTLB で 後にアク セス さ れたデータ ページ変換です。

DTLB はデータ 変換と UTLB のアッ プデート 操作の競合を 小限に抑える ために使用さ れ

ま す。 DTLB の初期化およ び管理はすべてハード ウ エアで制御さ れ、ソ フ ト ウ ェ アには透過的

です。

図 1-17 に TLB の変換フ ローを示し ます。

MicroBlaze プロセ ッサ リ フ ァ ンレンス ガイ ド japan.xilinx.com 59UG081 (v10.3)

Page 60: MicroBlaze プロセッサ リファレンス ガイド - Xilinx...MicroBlaze プロセッサ ガイドリファレンス japan.xilinx.com UG081 (v10.3)Xilinx is providing this product

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

図 1-17 : TLB ア ド レス変換フ ロー

命令側有効ア ド レスの生成

データ側有効ア ド レスの生成

変換な し ITLBルッ ク ア ッ プ

DTLBルッ クア ッ プ

変換な し

変換はデ ィ スエーブル(MSR[VM]=0)

変換はイネーブル(MSR[VM]=1)

変換はイネーブル(MSR[VM]=1)

変換はデ ィ スエーブル(MSR[VM]=0)

UTLBルッ ク ア ッ プ

ITLE よ り実ア ド レス取得

DTLB よ り実ア ド レス取得

ITLB ヒ ッ ト ITLB ミ ス DTLB ミ ス DTLB ヒ ッ ト

UTLB ヒ ッ ト UTLB ミ ス

命令側 TLB ミ ス

または

データ側 TLB ミ ス

例外

UTLB よ り実ア ド レス取得

ア ド レスを

ITLB に転送

ア ド レスを

DTLB に転送

命令キャ ッ シ ュへ

アク セス命令または

データ キャ ッ シ ュへ

ア クセス

60 japan.xilinx.com MicroBlaze プロセ ッサ リ フ ァ ン レンス ガイ ドUG081 (v10.3)

Page 61: MicroBlaze プロセッサ リファレンス ガイド - Xilinx...MicroBlaze プロセッサ ガイドリファレンス japan.xilinx.com UG081 (v10.3)Xilinx is providing this product

仮想メ モ リ管理

TLB エン ト リのフ ォーマ ッ ト

図 1-18 に、 TLB エント リ のフ ォ ーマッ ト を示し ま す。 各 TLB エント リ は 68 ビッ ト で、 TLBLO ( データ エント リ ) と TLBHI (タ グ エント リ ) の 2 つの部分で構成さ れま す。

図 1-18 : TLB エン ト リのフ ォーマ ッ ト

TLB エン ト リ の内容は、 39 ページの表 1-18 および 42 ページの表 1-19 に示されています。

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

• 仮想ページ識別 (TAG、SIZE、V、TID) : ページ変換エン ト リ を識別し ます。 変換処理中に仮想

ページ番号と比較されます。

• 物理ページ識別 (RPN、 SIZE) : 物理 メ モ リ 内にあ る変換されたページを識別し ます。

• ア ク セス制御 (EX、WR、ZSEL) : ページで許可されている ア ク セスのタ イプを指定し、不正ア

ク セスからページを保護するために使用し ます。

• 格納属性 (W、 I、 M、 G、 E、 U0) : データ キ ャ ッ シュのキ ャ ッ シュ ポ リ シー (ラ イ ト バッ クや

ラ イ ト スルー ) に従っているかど う か、ページがキ ャ ッ シュ可能かど う か、バイ ト 順 (エンデ ィ

アン) などの格納制御属性を指定し ます。

表 1-34 に、TLB エン ト リ の SIZE フ ィ ール ド と変換されたページのサイ ズの関係を示し ます。 タ グ

比較で使用される ア ド レ ス ビ ッ ト と物理ア ド レ スに使用される物理ページ番号のビ ッ ト もページ

サイ ズ別に示されています。

TLBLO :0 22 23 24 28 29 30 31

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

TLBHI :0 22 25 26 27 28 35

↑ ↑ ↑ ↑ ↑ ↑TAG SIZE V E U0 TID

表 1-34 : ページ サイズによるページ変換ビ ッ ト 範囲

ページ

サイズ

TLBHI の SIZE

フ ィ ールド

TAG 比較のビ ッ ト 範囲ページ

オフセ ッ ト物理ページ番号

0 にする RPN ビ ッ ト

1KB 000 TAG[0:21]、 ア ド レ ス[0:21] ア ド レ ス[22:31] RPN[0:21] -

4KB 001 TAG[0:19]、 ア ド レ ス[0:19] ア ド レ ス[20:31] RPN[0:19] 20:21

16KB 010 TAG[0:17]、 ア ド レ ス[0:17] ア ド レ ス[18:31] RPN[0:17] 18:21

64KB 011 TAG[0:15]、 ア ド レ ス[0:15] ア ド レ ス[16:31] RPN[0:15] 16:21

256KB 100 TAG[0:13]、 ア ド レ ス[0:13] ア ド レ ス[14:31] RPN[0:13] 14:21

1MB 101 TAG[0:11]、 ア ド レ ス[0:11] ア ド レ ス[12:31] RPN[0:11] 12:21

4MB 110 TAG[0:9]、 ア ド レ ス[0:9] ア ド レ ス[10:31] RPN[0:9] 10:21

16MB 111 TAG[0:7]、 ア ド レ ス[0:7] ア ド レ ス[8:31] RPN[0:7] 8:21

MicroBlaze プロセ ッサ リ フ ァ ンレンス ガイ ド japan.xilinx.com 61UG081 (v10.3)

Page 62: MicroBlaze プロセッサ リファレンス ガイド - Xilinx...MicroBlaze プロセッサ ガイドリファレンス japan.xilinx.com UG081 (v10.3)Xilinx is providing this product

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

TLB アクセス

MMU で仮想ア ド レ ス (PID と有効ア ド レ スの組み合わせ) が物理ア ド レ スに変換される場合、 初

に、適切なページ変換エン ト リ のシャ ド ウ TLB があ るかが確認されます。 エン ト リ が検出された場

合は、 物理 メ モ リ のア ク セスに使用されます。 検出されない場合は、 UTLB にエン ト リ があ るかが

MMU で確認されます。 シ ャ ド ウ TLB ミ スのために UTLB にア ク セスする と、 その都度遅延が生

じ ます。 ミ スのレ イ テンシは、2 ~ 32 周期です。 DTLB と ITLB が同時に UTLB にア ク セス し た場

合は、 DTLB が優先し ます。

63 ページの図 1-19 には、 シャ ド ウ TLB のいずれかまたは UTLB にページ変換エン ト リ が存在す

るかを確認するために MMU で実行される論理プロセスが示されています。 TLB の有効なエン ト

リ はすべてチェ ッ ク されます。

TLB エン ト リ で次の条件がすべて満た される と、 TLB ヒ ッ ト が発生し ます。

• エン ト リ が有効であ る

• エン ト リ の TAG フ ィ ール ド が、 エン ト リ の SIZE フ ィ ール ド で制御される有効ア ド レ スの

EPN に一致する

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

上記のどれか 1 つでも満た されない場合は、TLB ミ スが発生し ます。 TLB ミ スが発生する と、次の

例外が発生し ます。

TID 値が 0x00 の場合、 TID と PID の比較が MMU で無視され、 TAG と EA[EPN] のみが比較さ

れます。 TLB エン ト リ の TID 値が 0x00 の場合は変換がプロセスから独立し ているため、すべての

プロセスがグ ローバルにア ク セスするページにこの TID 値を割 り 当てます。 PID 値が 0x00 の場合

は、 任意のページにア ク セスでき るプロセスが識別されず、 ページ変換 ヒ ッ ト は TID=0x00 の場合

にのみ発生し ます。 ソ フ ト ウ ェ アでは、EA[EPN] と PID の組み合わせが一致する TLB のエン ト リ

を複数読み込むこ と ができ ますが、 これはプロ グ ラ ムのエラーと解釈され、 定義されないビヘイ ビ

アを引き起こ し ます。

ヒ ッ ト が発生する と MMU で、 対応する TLB エン ト リ から RPN フ ィ ール ド が読み込まれます。

フ ィ ール ド のビ ッ ト は、SIZE フ ィ ール ド の値に応じ て、一部または全部が使用されます (表 1-34 を

参照) 。 SIZE フ ィ ール ド でページ サイ ズが 256KB に指定されている場合は、 RPN[0:13] は物理

ページ番号を表し、物理ア ド レ ス を構成し ます。 RPN[14:21] は使用されず、TLB エン ト リ の初期化

の際に、ソ フ ト ウ ェ アで 0 に設定される必要があ り ます。 物理ア ド レ スの残 り のビ ッ ト には、EA の

ページ オフセ ッ ト 部を使用し ます。 ページ サイ ズが 256KB の場合、 RPN[0:13] を有効ア ド レ スの

14 ~ 31 ビ ッ ト と結合し、 32 ビ ッ ト 物理ア ド レ ス を構成し ます。

物理 メ モ リ にア ク セスする前に、 MMU で TLB エン ト リ のア ク セス制御フ ィ ール ド が確認されま

す。 これらのフ ィ ール ド は、 要求された メ モ リ のア ク セスが実行中のプロ グ ラ ムに許可されている

かど う かを示し ます。

ア ク セスが許可されていれば、ページへのア ク セス方法を決定する ために、MMU で格納属性フ ィ ー

ル ド がチェ ッ ク されます。 格納属性フ ィ ール ド では、 メ モ リ ア ク セスのキ ャ ッ シュ方法が指定され

ています。

62 japan.xilinx.com MicroBlaze プロセ ッサ リ フ ァ ン レンス ガイ ドUG081 (v10.3)

Page 63: MicroBlaze プロセッサ リファレンス ガイド - Xilinx...MicroBlaze プロセッサ ガイドリファレンス japan.xilinx.com UG081 (v10.3)Xilinx is providing this product

仮想メ モ リ管理

TLB アクセス エ ラー

TLB ア ク セス エラーが発生する と、例外が発生し ます。 こ の場合、 エラーの原因と なる命令に割 り

込みが発生し、 エラーを解決する ために制御が割 り 込みハン ド ラ に渡されます。 TLB ア ク セスのエ

ラーの原因には次の 2 つがあ り ます。

• 一致する TLB エン ト リ が検出されず、 TLB ミ スが発生し た場合

• 一致する TLB エン ト リ は検出されたが、 ページへのア ク セスが格納属性かゾーン保護のいず

れかで禁止されている場合

割 り 込みが発生する と、MSR[VM] が 0 にな り 、プロセ ッ サは実モード にな り ます。 実モード では、

MMU で実行されるすべてのア ド レ ス変換および メ モ リ 保護チェ ッ ク がデ ィ スエーブルにな り ま

す。 UTLB は、システム ソ フ ト ウ ェ アによ り ページ変換エン ト リ で初期化される と、通常は、実モー

ド で実行し ている割 り 込みハン ド ラ を使用し て管理されます。

図 1-19 に、 TLB エン ト リ の確認の一般的な手順を示し ます。

図 1-19 : 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 63UG081 (v10.3)

Page 64: MicroBlaze プロセッサ リファレンス ガイド - Xilinx...MicroBlaze プロセッサ ガイドリファレンス japan.xilinx.com UG081 (v10.3)Xilinx is providing this product

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

次に、 TLB ア ク セス エラーのために例外が発生する条件を示し ます。

データ格納例外

仮想モード がイ ネーブル (MSR[VM]=1) で、ページへのア ク セスが次の理由のいずれかで許可され

ない場合、 データ格納例外が発生し ます。

• ユーザー モード の場合

♦ TLB エン ト リ で、ページへのア ク セス を禁じ る ゾーン フ ィ ール ド (ZPR[Zn]=00) が指定さ

れている。 これは読み込み命令および格納命令の場合です。

♦ TLB エン ト リ で、読み込み専用のページ (TLBLO[WR]=0) が指定されている。読み込み専

用でない場合は、 ゾーン フ ィ ール ド (ZPR[Zn], 11) では無効に されません。 これは格納命

令の場合です。

• 特権モード の場合

♦ TLB エン ト リ で、読み込み専用のページ (TLBLO[WR]=0) が指定されている。読み込み専

用でない場合は、ゾーン フ ィ ール ド (ZPR[Zn], 10 および ZPR[Zn], 11) では無効にされま

せん。 これは格納命令の場合です。

命令格納例外

仮想モード がイ ネーブル (MSR[VM]=1) で、ページへのア ク セスが次の理由のいずれかで許可され

ない場合、 命令格納例外が発生し ます。

• ユーザー モード の場合

♦ TLB エン ト リ で、ページへのア ク セス を禁じ る ゾーン フ ィ ール ド (ZPR[Zn]=00) が指定さ

れている。

♦ TLB エン ト リ で、実行不可のページ (TLBLO[EX]=0) が指定されている。実行不可でない

場合は、 ゾーン フ ィ ール ド (ZPR[Zn], 11) では無効にされません。

♦ TLB エン ト リ で、 保護されたページ (TLBLO[G]=1) が指定されている。

• 特権モード の場合

♦ TLB エン ト リ で、実行不可のページ (TLBLO[EX]=0) が指定されている。実行不可でない

場合は、 ゾーン フ ィ ール ド (ZPR[Zn], 10 および ZPR[Zn], 11) では無効にされません。

♦ TLB エン ト リ で、 保護されたページ (TLBLO[G]=1) が指定されている。

データ TLB ミ ス例外

仮想モード がイ ネーブル (MSR[VM]=1) で、 一致する有効な TLB エン ト リ が TLB (シャ ド ウおよ

び UTLB) に存在し ない場合、 読み込み命令または格納命令でデータ TLB ミ ス例外が発生し ます。

命令 TLB ミ ス例外

仮想モード がイ ネーブル (MSR[VM]=1) で、 一致する有効な TLB エン ト リ が TLB (シャ ド ウおよ

び UTLB) に存在し ない場合、 命令フ ェ ッチで命令 TLB ミ ス例外が発生し ます。

64 japan.xilinx.com MicroBlaze プロセ ッサ リ フ ァ ン レンス ガイ ドUG081 (v10.3)

Page 65: MicroBlaze プロセッサ リファレンス ガイド - Xilinx...MicroBlaze プロセッサ ガイドリファレンス japan.xilinx.com UG081 (v10.3)Xilinx is providing this product

仮想メ モ リ管理

ア クセス保護

システム ソ フ ト ウ ェ アではア ク セス保護を使用し て、不正ア ク セスから メ モ リ ロ ケーシ ョ ンを保護

し ます。 ユーザー モード と特権モード の両方で、 メ モ リ への読み出し、 書き込み、 命令フ ェ ッチの

ア ク セスが制限されます。 ア ク セス保護は、 仮想保護モード がイ ネーブルの場合に使用でき ます。

仮想ページの TLB エン ト リ では、 ページで許可されている ア ク セスの種類が指定されます。 また

TLB エン ト リ では、 TLB エン ト リ で指定されたア ク セス制御を無効にする ゾーン保護レジス タの

ゾーン保護フ ィ ール ド も指定されます。

TLB によるアクセス保護の制御

各 TLB エン ト リ では、 次の 3 つのア ク セスが制御されます。

• プロセス : 各プロセスには重複し ないプロセス ID (PID) が割 り 当て られてお り 、これを不正ア

ク セスからの保護に使用し ます。 システム ソ フ ト ウ ェ アでユーザー モード のアプ リ ケーシ ョ

ンが起動する際に、 アプ リ ケーシ ョ ンの PID が PID レジス タに読み込まれます。 アプ リ ケー

シ ョ ンの実行時に、TLBHI (Translation Look-Aside Buffer High ) の TID フ ィ ール ド が PID と

一致する TLB エン ト リ のみを使用し て メ モ リ ア ド レ スが変換されるため、 仮想 メ モ リ の特定

の領域へのアプ リ ケーシ ョ ンのア ク セスが、 システム ソ フ ト ウ ェ アによ り 制限されます。

TLB エン ト リ の TID 値が 0x00 の場合は変換がプロセスから独立し ている ため、すべてのプロ

セスがグ ローバルにア ク セスするページにこの TID 値を割 り 当てます。

• 実行 : プロセ ッ サでは、 実行可能 (TLBLO[EX]=1) であ る仮想ページから フ ェ ッチされた命令

のみが実行されます。 TLBLO[EX] = 0 の場合命令がページから フ ェ ッ チされず、命令格納割 り

込み (ISI) が発生し ます。 ISI は命令のフ ェ ッチ時ではな く 、 実行時に発生し ます。 論理的に

フ ェ ッチされた命令は実行されずに破棄されため、 ISI は発生し ません。

ゾーン保護レジス タ を使用し て、 実行保護を無効にでき ます。

• 読み出し /書き込み : データは、 書き込み可 (TLBLO[WR]=1) の仮想ページにのみ書き込まれ

ます。 TLBLO[WR] = 0 の場合ページは読み込み専用で、 書き込みを試みる とデータ格納割 り

込み (DSI) が発生し ます。

ゾーン保護レジス タ を使用し て、 書き込み保護を無効にでき ます。

TLB エン ト リ を 使用し てプロ グ ラ ム でのページの読み込みを 禁止する こ と はでき ま せん。 仮

想モード では、 ゾ ーン 保護はページの読み出し 保護に使用さ れま す。 ア ク セス 不可ゾ ーン を

ZPR[Zn] = 00 に定義する と、 TLB エン ト リ ア ク セス保護が無効にな り ます。 プロ グ ラ ムでのペー

ジ読み出しは、 ユーザー モード で実行し ている場合にのみ禁止でき ます。 特権モード で実行し てい

るプロ グ ラ ムには、 常にページの読み出し ア ク セス権があ り ます。

ゾーン保護

ゾーン保護は、 TLB エン ト リ で指定されたア ク セス保護を無効にするために使用されます。 ゾーン

は、 ア ク セス保護設定が同じ仮想ページのグループです。 ゾーンには、 任意のページ サイ ズの組み

合わせで、 任意のページ数を含める こ と ができ ます。 隣接し たページを含める要件はあ り ません。

ゾーン保護レジス タ (ZPR) は 32 ビ ッ ト で、 大 16 個のゾーンに対し て個別に、無効にする保護の

種類を指定し ます。 ZPR では、 ゾーンの無効指定は 2 ビ ッ ト のフ ィ ール ド と し てエン コード されま

す。 TLB エン ト リ の 4 ビ ッ ト のゾーン選択フ ィ ール ド (TLBLO[ZSEL]) では、16 個の ZPR (Z0 ~

Z15) ゾーンフ ィ ール ド から 1 つを指定し ます。 ZSEL = 0101 と指定する と、 ゾーン Z5 が選択さ

れます。

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

MicroBlaze プロセ ッサ リ フ ァ ンレンス ガイ ド japan.xilinx.com 65UG081 (v10.3)

Page 66: MicroBlaze プロセッサ リファレンス ガイド - Xilinx...MicroBlaze プロセッサ ガイドリファレンス japan.xilinx.com UG081 (v10.3)Xilinx is providing this product

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

UTLB 管理

UTLB はプロセ ッサの MMU と メ モ リ 管理ソ フ ト ウ ェ ア間のイ ン ターフ ェ イ スの役割を果たし ま

す。 UTLB はシステム ソ フ ト ウ ェ アで管理され、 仮想ア ド レ ス を物理ア ド レ スに変換する方法を

MMU に指示し ます。 変換エラーやア ク セス違反が原因で問題が発生する と、 例外の メ カニズムを

使用し て問題が MMU から システム ソ フ ト ウ ェアに送信されます。 MMU で メ モ リ 変換を続行で

き る よ う に、 システム ソ フ ト ウ ェ アから問題を解決する ための割 り 込みハン ド ラが提供されます。

ソ フ ト ウ ェ アでは UTLB エン ト リ を、MFS 命令を使用し て読み出し、MTS 命令を使用し て書き込

みます。 これらの命令では、UTLB の 64 個のエン ト リ の 1 つに対応する TLBX レジス タ イ ンデッ

ク ス (0 ~ 63) が使用されます。 タ グ部分とデータ部分は個別に読み出しおよび書き込みされる た

め、エン ト リ に完全にア ク セスするには、ソ フ ト ウ ェ アで MFS 命令または MTS 命令を 2 回実行す

る必要があ り ます。 UTLB での変換の検索には、TLBSX レジス タが使用されます。 TLBSX は有効

ア ド レ ス を使用し て変換を検出し、 対応する UTLB イ ンデッ ク ス を TLBX レジス タに読み込みま

す。

UTLB エン ト リ は、MTS 命令で TLB エン ト リ のタ グ部分の有効ビ ッ ト (TLBHI[V]) が 0 に設定さ

れ、 個別に無効にされます。

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

ソ フ ト ウ ェ アでの仮想 メ モ リ の管理では、 次の点を考慮する必要があ り ます。

• 仮想 メ モ リ 環境では、 物理的に使用可能な メ モ リ よ り も多 く の メ モ リ がソ フ ト ウ ェ ア とデータ

で消費されます。 ソ フ ト ウ ェ アおよびデータ ページの一部は、使用されない と きにはハード ド

ラ イブなど物理 メ モ リ 領域の外側に格納される必要があ り ます。 頻繁に使用されるページが物

理 メ モ リ に格納され、 あま り 使用されないページはほかの場所に格納されるのが理想的です。

• 物理 メ モ リ に格納されているページを新しいページを格納するために置き換え る場合、 変更さ

れているかど う かを確認する必要があ り ます。 変更されている場合は、 新しいページを読み込

む前に保存する必要があ り ます。 変更されていない場合は、 保存する必要はあ り ません。

• UTLB に保管でき るページ変換の数には制限があ り ます。 保管されなかった変換は、 ページ変

換テーブルに格納し ます。 UTLB に保管されていない変換を読み込む場合、破棄する UTLB エ

ン ト リ をシステム ソ フ ト ウ ェアで決定し ます。 システム ソ フ ト ウ ェ アでの使用頻度が低い変

換を置き換えます。

これら を効率よ く 処理するには、ページ ア ク セスおよびページ変更の履歴を把握する必要があ り ま

す。 MicroBlaze では、 ハード ウ ェ アのページ ア ク セスおよびページ変更の履歴は記録されません

が、 システム ソ フ ト ウ ェ アで TLB ミ ス例外およびデータ格納例外を使用し て、こ の情報を収集でき

ます。 情報が収集される と、 ページ変換テーブルに対応付け られたデータ構造に格納されます。

ページ ア ク セス情報は、 物理 メ モ リ 領域が必要な場合に、 どのページを物理 メ モ リ に保持し、 どの

ページを置き換え るかを決定するために使用されます。 システム ソ フ ト ウ ェ アでは、TLB エン ト リ

の有効ビ ッ ト (TLBHI[V]) を使用し てページ ア ク セス を監視し ます。 こ のビ ッ ト は、 ページ変換が

ア ク セス されていないこ と を示すために、 無効 (TLBHI[V]=0) に初期化する必要があ り ます。 初

にページにア ク セス し た と きに、UTLB エン ト リ が無効であ るか、ページ変換が UTLB に存在し な

いかのいずれかの理由で TLB ミ ス例外が発生し、TLB ミ ス ハン ド ラで UTLB がア ッ プデー ト され

て変換が有効 (TLBHI[V]=1) にな り ます。 有効に設定されたビ ッ ト は、 ページおよびページの変換

がア ク セス された と い う 記録にな り ます。 TLB ミ ス ハン ド ラでも、ページ変換エン ト リ に対応付け

られた別のデータ構造に情報を記録でき ます。

ページ変更情報は、 現在のページを新しいページで上書き し て も よいか、 またはハード デ ィ ス ク に

格納する必要があ るかを示すために使用されます。 システム ソ フ ト ウ ェ アでは、TLB エン ト リ の書

込み保護ビ ッ ト (TLBLO[WR]) を使用し て、 ページの変更を監視でき ます。 こ のビ ッ ト は、 ページ

66 japan.xilinx.com MicroBlaze プロセ ッサ リ フ ァ ン レンス ガイ ドUG081 (v10.3)

Page 67: MicroBlaze プロセッサ リファレンス ガイド - Xilinx...MicroBlaze プロセッサ ガイドリファレンス japan.xilinx.com UG081 (v10.3)Xilinx is providing this product

リ セ ッ ト 、 割り込み、 例外、 ブレーク

変換が変更されていないこ と を示すために、読み込み専用 (TLBLO[WR]=0) に初期化する必要があ

り ます。 ページへのデータの書き込みを 初に実行し た と きに、 上記のよ う にページが既にア ク セ

ス されてお り 有効と設定されている場合は、 データ格納例外が発生し ます。 ソ フ ト ウ ェ アにページ

へ の 書 き 込 み が 許 可 さ れ て い る 場 合 は、 デ ー タ 格 納 ハ ン ド ラ で ペ ー ジ が 書 き 込 み 可

(TLBLO[WR]=1) に設定され、 戻 り ます。 書き込み保護設定ビ ッ ト は、 ページが変更された と い う

記録にな り ます。 データ格納ハン ド ラでも、 ページ変換エン ト リ に対応付け られた別のデータ構造

にこ の情報を記録でき ます。

ページ変更の追跡は、 初に仮想モード になった場合および新しいプロセスの開始時に有用です。

リ セ ッ ト 、 割り込み、 例外、 ブレーク

MicroBlaze では、 リ セ ッ ト 、割 り 込み、ユーザー例外、ブレーク、およびハード ウ ェ ア例外がサポー

ト されます。 次のセク シ ョ ンでは、 各イベン ト の実行フ ローを説明し ます。

これらのイベン ト の相対的な優先順位は、 次の とお り です。

1. リ セ ッ ト

2. ハード ウ ェ ア例外

3. マス ク不可ブレーク

4. ブレーク

5. 割 り 込み

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

表 1-35 に、 ベク タの メ モ リ ア ド レ ス ロ ケーシ ョ ン と ハード ウ ェ アで強制される戻 り ア ド レ スのレ

ジス タ フ ァ イル ロ ケーシ ョ ンを示し ます。 各ベク タは、 ア ド レ ス範囲全体の分岐を可能にする た

め、 2 つのア ド レ ス を割 り 当てます (IMM 命令の後に BRAI 命令が必要)。 ア ド レ ス範囲 0x28 ~

0x4F は、 ザイ リ ン ク スが今後の ソ フ ト ウ ェ ア サポー ト 用に予約し ています。 ユーザー アプ リ ケー

シ ョ ンを こ の範囲内のア ド レ スに割 り 当てる と、 今後 リ リ ース される EDK のサポー ト ソ フ ト ウ ェ

ア と競合する可能性があ り ます。

LDX および STX 命令と共に使用する と、 セマフ ォやス ピン ロ ッ ク などの相互排除機能を イ ンプ リ

メ ン ト するために、 これらのイベン ト はすべて予約ビ ッ ト を ク リ アにし ます。

表 1-35 : ベク タ と戻り ア ド レスのレジス タ フ ァ イル ロケーシ ョ ン

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

戻り ア ド レス

リ セ ッ ト 0x00000000 ~ 0x00000004 -

ユーザー ベク タ (例外) 0x00000008 ~ 0x0000000C Rx

割 り 込み 0x00000010 ~ 0x00000014 R14

ブレーク : マス ク不可ハード ウ ェ ア

0x00000018 ~ 0x0000001C R16ブレーク : ハード ウ ェ ア

ブレーク : ソ フ ト ウ ェ ア

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

将来の ソ フ ト ウ ェ ア サポー ト 用に

ザイ リ ン ク スが予約0x00000028 ~ 0x0000004F -

MicroBlaze プロセ ッサ リ フ ァ ンレンス ガイ ド japan.xilinx.com 67UG081 (v10.3)

Page 68: MicroBlaze プロセッサ リファレンス ガイド - Xilinx...MicroBlaze プロセッサ ガイドリファレンス japan.xilinx.com UG081 (v10.3)Xilinx is providing this product

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

リ セ ッ ト

Reset または Debug_Rst (1) がア ク テ ィ ブになる と、 パイプラ イ ンが空に され、 リ セ ッ ト ベク タ (ア

ド レ ス 0x0) から命令がフ ェ ッチされます。 これらの外部 リ セ ッ ト 信号はア ク テ ィ ブ High で、16 サ

イ クル以上アサー ト する必要があ り ます。

擬似コー ド

PC ← 0x00000000MSR ← C_RESET_MSR (第 2 章 の 「MicroBlaze コ アのコ ンフ ィ ギュ レーシ ョ ン」 を参照)EAR ← 0; ESR ← 0; FSR ← 0PID ← 0; ZPR ← 0; TLBX ← 0Reservation ← 0

ハー ド ウ ェ ア例外

MicroBlaze は、不正な命令、命令およびデータ バスのエラー、不整列ア ク セス と いった内部エラー

状態を検出する よ う にコ ンフ ィ ギュ レーシ ョ ンでき ます。 除算の例外は、 ハード ウ ェ ア除算器を使

用する場合 (C_USE_DIV=1) のみイ ネーブルにでき ます。 ハード ウ ェ ア浮動小数点ユニ ッ ト を使用

する場合 (C_USE_FPU>0) は、浮動小数点に関する例外であ る アンダーフ ロー、オーバーフ ロー、0 での浮動小数点数除算、 不正な処理、 および非正規化オペラ ン ド エラーも検出でき ます。

ハード ウ ェ ア MMU を使用する場合は、 メ モ リ 管理に関する例外であ る不正命令例外、 データ格納

例外、 命令格納例外、 データ TLB ミ ス例外、 および命令 TLB ミ ス例外も検出でき ます。

ハード ウ ェ ア例外が発生する と、 パイプラ イ ンが空にされ、 ハード ウ ェ ア例外ベク タ (ア ド レ ス

0x20) に分岐し ます。 実行段の命令は実行されません。

例外が発生する と、 汎用レジス タ R17 が次のよ う にア ッ プデー ト されます。

• MMU 例外 (データ格納例外、命令格納例外、データ TLB ミ ス例外、命令 TLB ミ ス例外) では、

戻 り 時に例外が発生し た命令を再実行するため、レジス タ R17 に適切なプロ グ ラ ムカウ ン タ値

が読み込まれます。 前に IMM 命令があ る場合は、こ の値は IMM 命令に戻る よ う に調整されま

す。 例外が分岐遅延ス ロ ッ ト の命令で発生し た場合は、 こ の値は分岐命令に戻る よ う に調整さ

れます。 前に IMM 命令があ る場合は、 こ の調整も実行されます。

• その他の例外では、 例外が分岐遅延ス ロ ッ ト の命令で発生し た場合を除き、 後続の命令のプロ

グ ラ ム カ ウ ン タ値がレジス タ R17 に読み込まれます。 例外が分岐遅延ス ロ ッ ト の命令で発生

し た場合は、 ESR[DS] ビ ッ ト が設定され、 例外ハン ド ラ によ り BTR に格納されている分岐

ターゲ ッ ト ア ド レ スから実行が再開されます。

RTED 命令を実行する と、 MSR の EE ビ ッ ト と EIP ビ ッ ト が自動的に反転されます。

RTED 命令、 RTBD 命令、 および RTID 命令を実行する と、 MSR の VM ビ ッ ト と UM ビ ッ ト が自

動的に反転されます。

1. XMD デバ ッ ガによ り MDM を介し て制御される リ セ ッ ト 入力

68 japan.xilinx.com MicroBlaze プロセ ッサ リ フ ァ ン レンス ガイ ドUG081 (v10.3)

Page 69: MicroBlaze プロセッサ リファレンス ガイド - Xilinx...MicroBlaze プロセッサ ガイドリファレンス japan.xilinx.com UG081 (v10.3)Xilinx is providing this product

リ セ ッ ト 、 割り込み、 例外、 ブレーク

例外の優先順位

複数の例外が同時に発生する場合、 次の優先順位で処理されます。

• 命令バス例外

• 命令 TLB ミ ス例外

• 命令格納例外

• 不正の op コード の例外

• 特権命令によ る例外

• データ TLB ミ ス例外

• データ格納例外

• 不整列データ ア ク セス

• データ バス例外

• 除算例外

• FPU 例外

• 高速シンプレ ッ ク ス リ ン クの例外

例外の原因

• 高速シンプレ ッ ク ス リ ン ク (FSL) によ る例外

制御ビ ッ ト の不一致があ る場合に e ビ ッ ト を 1 に設定し て get 命令または getd 命令を実行す

る と発生し ます。

• 命令バスによ る例外

命令側プロセ ッ サ ローカル バス (PLB) の例外は、 ス レーブのア ク テ ィ ブ エラー信号

(IPLB_MrdErr) またはアービ タのタ イ ムアウ ト 信号 (IPLB_MTimeout) によ り 発生し ます。 命

令側オンチ ッ プ ペ リ フ ェ ラル バス (IOPB) の例外は、 ス レーブのア ク テ ィ ブ エラー信号

(IOPB_errAck) またはアービ タのタ イ ムアウ ト 信号 (IOPB_timeout) によ り 発生し ます。 命令

側のローカル メ モ リ (ILMB) および CacheLink (IXCL) イ ン ターフ ェ イ スは、命令バスの例外

の原因にはな り ません。

• 不正な op コード によ る例外

命令で主要 op コード (命令ビ ッ ト 0 ~ 5) が無効の と きに発生し ます。 ビ ッ ト 6 ~ 31 はチェ ッ

ク されません。 オプシ ョ ンのプロセ ッ サ命令がイ ネーブルにされていない場合は、 不正と検出

されます。 オプシ ョ ンの C_OPCODE_0x0_ILLEGAL がイ ネーブルの場合は、 命令が

0x00000000 に等しい と発生し ます。

• データ バスによ る例外

データ側プロセ ッ サ ローカル バス (PLB) の例外は、 ス レーブのア ク テ ィ ブ エラー信号

(DPLB_MrdErr ま たは DPLB_MWrErr) ま たはアービタ のタ イ ムアウ ト 信号 (DPLB_MTimeout) によ り 発生し ます。 データ側オンチッ プ ペ リ フ ェ ラル バス (DOPB) の例外は、ス レーブのア ク

テ ィ ブ エラー信号 (DOPB_errAck) またはアービ タのタ イ ムア ウ ト 信号 (DOPB_timeout) によ

り 発生し ます。 データ側のローカル メ モ リ (DLMB) および CacheLink (DXCL) イ ン ターフ ェ

イ スは、 データ バスの例外の原因にはな り ません。

• 不整列データ ア ク セスによ る例外

データ バスへのア ド レ スが 30 または 31 ビ ッ ト のワード ア ク セス または 31 ビ ッ ト のハーフ

ワード ア ク セスによ り 発生し ます。

MicroBlaze プロセ ッサ リ フ ァ ンレンス ガイ ド japan.xilinx.com 69UG081 (v10.3)

Page 70: MicroBlaze プロセッサ リファレンス ガイド - Xilinx...MicroBlaze プロセッサ ガイドリファレンス japan.xilinx.com UG081 (v10.3)Xilinx is providing this product

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

• 除算例外

整数を 0 で除算する (idiv または idivu) 場合に例外発生するか、 または符号付き整数で除算し

た結果 (idiv)オーバーフ ローが発生する場合に例外が発生し ます。

• FPU での例外

浮動小数点命令で発生する アンダーフ ロー、 オーバーフ ロー、0 での除算、不正な処理、および

非正規化オペラ ン ド エラーによ り 発生し ます。

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

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

♦ 0 での除算によ る FPU の例外は、 rB が無限大ではない と きに fdiv の rA オペラ ン ド が 0 であ る と発生し ます。

♦ 不正な処理は、NaN オペラ ン ド の送信または不正な無限大または 0 オペラ ン ド の組み合わ

せによ り 発生し ます。

• 特権命令によ る例外

特権命令をユーザー モード で実行する と発生し ます。

• データ格納によ る例外

メ モ リ のデータにア ク セスする と メ モ リ 保護違反と なる場合に発生し ます。

• 命令格納によ る例外

メ モ リ の命令にア ク セスする と メ モ リ 保護違反と なる場合に発生し ます。

• データ TLB ミ スによ る例外

有効な TLB エン ト リ が存在せず仮想保護モード がイ ネーブルの場合に、 メ モ リ のデータにア

ク セスする と発生し ます。

• 命令 TLB ミ スによ る例外

有効な TLB エン ト リ が存在せず仮想保護モード がイ ネーブルの場合に、 メ モ リ の命令にア ク

セスする と発生し ます。

擬似コー ド

ESR[DS] ← 遅延ス ロ ッ ト の例外if ESR[DS] then

BTR ← ターゲ ッ ト PC の分岐if MMU exception then

if branch preceeded by IMM then

r17 ← PC - 8 else

r17 ← PC - 4 else

r17 ← 無効な値else if MMU exception then

if instruction preceeded by IMM then

r17 ← PC - 4else

r17 ← PCelse

r17 ← PC + 4PC ← 0x00000020MSR[EE] ← 0, MSR[EIP]← 1MSR[UMS] ← MSR[UM], MSR[UM] ← 0, MSR[VMS] ← MSR[VM], MSR[VM] ← 0

70 japan.xilinx.com MicroBlaze プロセ ッサ リ フ ァ ン レンス ガイ ドUG081 (v10.3)

Page 71: MicroBlaze プロセッサ リファレンス ガイド - Xilinx...MicroBlaze プロセッサ ガイドリファレンス japan.xilinx.com UG081 (v10.3)Xilinx is providing this product

リ セ ッ ト 、 割り込み、 例外、 ブレーク

ESR[EC] ← 例外値ESR[ESS]← 例外値EAR ← 例外値FSR ← 例外値Reservation ← 0

ブレーク

ブレーク には、 次の 2 種類があ り ます。

• ハード ウ ェ ア (外部) ブレーク

• ソ フ ト ウ ェ ア (内部) ブレーク

ハー ド ウ ェ ア ブレーク

ハード ウ ェ ア ブレークは、 外部ブレーク信号 (Ext_BRK および Ext_NM_BRK 入力ポー ト ) をア

サー ト する と実行されます。 ブレークが発生する と、実行段の命令は完了され、デコード段の命令は

ブレーク ベク タ (ア ド レ ス 0x18) への分岐に置き換え られます。ブレーク戻 り ア ド レ ス (ブレーク発

生時にデコード段にあった命令に関連付け られている PC) は、 汎用レジス タ R16 に読み込まれま

す。 また、 マシン ステータ ス レジス タ (MSR) で BIP (ブレーク実行中) フ ラ グが設定されます。

通常のハード ウ ェ ア ブレーク (Ext_BRK 入力ポー ト ) は、MSR[BIP] および MSR[EIP] が 0 に設定

されている (実行中のブレーク または例外がない) 場合にのみ処理されます。 BIP フ ラ グがア ク テ ィ

ブになる と、割 り 込みがデ ィ スエーブルにな り ます。 マス ク不可ブレーク (Ext_NM_BRK 入力ポー

ト ) は即座に処理されます。

RTBD 命令が実行される と、 MSR の BIP ビ ッ ト が ク リ ア されます。

Ext_BRK 信号は、ブレークが開始する まではアサー ト されたま まで、RTBD 命令が実行される前に

デ ィ アサー ト される必要があ り ます。 Ext_NM_BRK 信号は、 1 ク ロ ッ ク サイ クルだけアサー ト さ

れる必要があ り ます。

ソ フ ト ウ ェ ア ブレーク

ソ フ ト ウ ェ ア ブレーク を実行するには、brk および brki 命令を使用し ます。 ソ フ ト ウ ェア ブレーク

の詳細は、 第 4 章 「MicroBlaze 命令セ ッ ト アーキテ クチャ」 を参照し て く だ さい。

レ イ テンシ

ブレーク が発生し てからブレーク のサービ ス ルーチンが開始される までにかかる時間は、その時点

で実行段にあ る命令およびブレーク ベク タ を格納し ている メ モ リ のレ イ テンシによ って異な り ま

す。

擬似コー ド

r16 ← PCPC ← 0x00000018MSR[BIP] ← 1MSR[UMS] ← MSR[UM], MSR[UM] ← 0, MSR[VMS] ← MSR[VM], MSR[VM] ← 0Reservation ← 0

割り込み

MicroBlaze では、外部割 り 込みソース (割 り 込み入力ポー ト に接続) が 1 つサポー ト されています。

割 り 込みは、 マシン ステータ ス レジス タ (MSR) の割 り 込みイネーブル ビ ッ ト (IE) が 1 に設定さ

れている場合にのみ処理されます。 割 り 込みが発生する と、 実行段の命令は完了され、 デコード段

の命令は割 り 込みベク タ (ア ド レ ス 0x10) への分岐に置き換え られます。割 り 込み戻 り ア ド レ ス (割

MicroBlaze プロセ ッサ リ フ ァ ンレンス ガイ ド japan.xilinx.com 71UG081 (v10.3)

Page 72: MicroBlaze プロセッサ リファレンス ガイド - Xilinx...MicroBlaze プロセッサ ガイドリファレンス japan.xilinx.com UG081 (v10.3)Xilinx is providing this product

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

り 込み発生時にデコード段にあった命令に関連付け られている PC) は、自動的に汎用レジス タ R14 に読み込まれます。 また、 MSR の IE ビ ッ ト が 0 にな り 、 これ以降の割 り 込みはデ ィ スエーブルに

な り ます。 RTID 命令が実行される と、 IE ビ ッ ト が再び 1 に設定されます。

MSR の BIP (ブレーク実行中) ビ ッ ト または EIP (例外実行中) ビ ッ ト のいずれかが 1 に設定されて

いる場合は、 割 り 込みは無視されます。

パラ メ ータ C_INTERRUPT_IS_EDGE を使用し、 外部割 り 込みを レベルまたはエ ッ ジで設定する

こ と ができ ます。

• レベルでの割 り 込みを使用する場合、 MicroBlaze 割 り 込みを取 り 込んで割 り 込みベク タにジャ ンプする まで、 割 り 込み入力はセ ッ ト されたま まであ る必要があ り ます。 割 り 込みハン ドらから返される前に、 ソ フ ト ウ ェ アは割 り 込みを ク リ アにする必要があ り ます。 ク リ アになっていなければ、 割 り 込みハン ド らから返されたに割 り 込みがイ ネーブルにな り 次第、 割 り 込みは再度取 り 込まれます

• エ ッ ジでの割 り 込みを使用する場合、 MicroBlaze で割 り 込み入力エ ッ ジが検出されラ ッチされます。 つま り 、 こ の入力は 1 ク ロ ッ ク サイ クルでアサー ト される必要があ り ます。 割 り 込み入力はアサー ト されたま まの状態で構いませんが、 新たな割 り 込みが検出される前に 低 1 ク ロ ッ ク サイ クル間はデ ィ アサー ト されている必要があ り ます。

レ イ テンシ

割 り 込みが発生し てから ISR (割 り 込みサービ ス ルーチン) が開始される までにかかる時間は、プロ

セ ッ サのコ ンフ ィ ギュ レーシ ョ ンおよび割 り 込みベク タ を格納し ている メ モ リ コ ン ト ローラのレ

イ テンシによ って異な り ます。 MicroBlaze にハード ウ ェ ア除算器が含まれる場合、除算命令の実行

中に割 り 込みが発生する と、 レ イ テンシが 大にな り ます。

擬似コー ド

r14 ← PCPC ← 0x00000010MSR[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 ← 0x00000008MSR[UMS] ← MSR[UM], MSR[UM] ← 0, MSR[VMS] ← MSR[VM], MSR[VM] ← 0Reservation ← 0

命令キャ ッ シュ

概要

MicroBlaze をオプシ ョ ンの命令キ ャ ッ シュ と共に使用し て、 LMB のア ド レ ス範囲外にあ る コード

を実行する際のパフ ォーマン ス を向上させる こ と ができ ます。

命令キ ャ ッ シュには、 次の特徴があ り ます。

72 japan.xilinx.com MicroBlaze プロセ ッサ リ フ ァ ン レンス ガイ ドUG081 (v10.3)

Page 73: MicroBlaze プロセッサ リファレンス ガイド - Xilinx...MicroBlaze プロセッサ ガイドリファレンス japan.xilinx.com UG081 (v10.3)Xilinx is providing this product

命令キャ ッ シュ

• ダ イ レ ク ト マ ッ プ方式 (連想度 1)

• ユーザーがキ ャ ッ シュ可能 メ モ リ のア ド レ ス範囲を指定可能

• キ ャ ッ シュ サイ ズおよびタ グ サイ ズを設定可能

• CacheLink (XCL) イ ン ターフ ェ イ ス を使用し たキ ャ ッ シュ

• 4 または 8 ワード のキ ャ ッ シュ ラ イ ン

• MSR ビ ッ ト を使用し たキ ャ ッ シュのオン/オフ制御

• 命令キ ャ ッ シュ ラ イ ンを無効にする WIC 命令 (オプシ ョ ン)

命令キャ ッ シュの機能

命令キャ ッ シュ の使用時には、メ モリ アド レ ス 空間はキャ ッ シュ 可能なセグメ ント と キャ ッ シュ 不可

能なセグメ ント の 2 つに分割さ れま す。 キャ ッ シュ 可能なセグメ ント は、 C_ICACHE_BASEADDR および C_ICACHE_HIGHADDR の 2 つのパラ メ ータで定義されます。 この範囲内のア ド レ スは、

すべてキ ャ ッ シュ可能なア ド レ ス セグ メ ン ト に対応し ています。 その他のア ド レ スは、 キ ャ ッ シュ

不可能なア ド レ スです。

キ ャ ッ シュ可能なセグ メ ン ト サイ ズは 2N であ る必要があ り ます (N は正の整数)。 C_ICACHE _BASEADDR および C_ICACHE_HIGHADDR で指定する範囲は完全な2 のべき乗の範囲にし、

C_ICACHE_BASEADDR の 下位ビ ッ ト は 0 にする必要があ り ます。

キ ャ ッ シュ可能な命令ア ド レ スは、 キ ャ ッ シュ ア ド レ スおよびタ グ ア ド レ スから構成されます。

MicroBlaze の命令キ ャ ッ シュは 64B ~ 64KB の範囲で設定でき、 これは 6 ~ 16 ビ ッ ト のキ ャ ッ

シュ ア ド レ スに対応し ています。 キ ャ ッ シュ ア ド レ ス と タ グ ア ド レ ス を合わせた ものが、 キ ャ ッ

シュ可能な メ モ リ の完全ア ド レ スに一致する よ う に設定する必要があ り ます。 キ ャ ッ シュ サイ ズを

2KB 未満に指定する と、タ グ RAM および命令 RAM のイ ンプ リ メ ン ト には分散 RAM が使用され

ます。

た と えば、 C_ICACHE_BASEADDR= 0x00300000、 C_ICACHE_HIGHADDR=0x0030ffff、

C_CACHE_BYTE_SIZE=4096、C_ICACHE_LEN=8 のよ う に設定されている場合、キ ャ ッ シュ可

能な 64KB の メ モ リ では 16 ビ ッ ト のバイ ト ア ド レ スが使用され、 4KB のキ ャ ッ シュでは 12 ビ ッ

ト のバイ ト ア ド レ スが使用される ため、必要なア ド レ ス タ グは 16 - 12 = 4 ビ ッ ト です。 この場合、

1024 ワード の命令の格納に RAMB16 が 2 個、128 個のキ ャ ッ シュ ラ イ ン (4 ビ ッ ト のタ グ + 8 ワー

ド有効ビ ッ ト + 1 ラ イ ン有効ビ ッ ト ) エン ト リ に RAMB16 が 1 個必要と なるので、 合計で 3 個の

RAMB16 プ リ ミ テ ィ ブが必要です。

74 ページの図 1-20 に、 命令キ ャ ッ シュの構成を示し ます。

MicroBlaze プロセ ッサ リ フ ァ ンレンス ガイ ド japan.xilinx.com 73UG081 (v10.3)

Page 74: MicroBlaze プロセッサ リファレンス ガイド - Xilinx...MicroBlaze プロセッサ ガイドリファレンス japan.xilinx.com UG081 (v10.3)Xilinx is providing this product

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

命令キャ ッ シュの動作

命令がフ ェ ッチされる ご と に、 命令ア ド レ スがキ ャ ッ シュ可能なセグ メ ン ト に属する ものであ るか

が検出されます。 ア ド レ スがキ ャ ッ シュ不可能な場合は、 キ ャ ッ シュ コ ン ト ローラでは命令が無視

され、 PLB、 OPB、 または LMB で命令が実行されます。 ア ド レ スがキ ャ ッ シュ可能な場合は、 タ

グ メ モ リ でルッ ク ア ッ プが実行され、要求されたア ド レ スがキ ャ ッ シュに含まれるかど う かが確認

されます。 ワードおよびラ イ ンの有効ビ ッ ト が設定されてお り 、 タ グ ア ド レ スが命令ア ド レ スのタ

グ ア ド レ ス セグ メ ン ト と一致すれば、ルッ ク ア ッ プが成功し た こ と にな り ます。 キ ャ ッ シュ ミ スの

場合、キ ャ ッ シュ コ ン ト ローラは命令側の CacheLink (IXCL) に新しい命令を要求し、 メ モ リ コ ン

ト ローラから戻される関連キ ャ ッ シュ ラ イ ンを待ちます。

命令キャ ッ シュのソ フ ト ウ ェ ア サポー ト

MSR ビ ッ ト

MSR の ICE ビ ッ ト は、 キ ャ ッ シュのイネーブル、 デ ィ スエーブルを制御し ます。

キ ャ ッ シュがデ ィ スエーブルの場合、デフ ォル ト ではキ ャ ッ シュの内容が保持されます。 WIC 命令

または MicroBlaze のハード ウ ェア デバッ グ ロジ ッ ク を使用する と、キ ャ ッ シュ ラ イ ンを無効にで

き ます。

WIC 命令

オプシ ョ ンの WIC 命令 (C_ALLOW_ICACHE_WR=1) を使用する と、命令キ ャ ッ シュに含まれる

キ ャ ッ シュ ラ イ ンをアプ リ ケーシ ョ ンから無効にでき ます。 詳細は、第 4 章 「MicroBlaze 命令セ ッ

ト アーキテ クチャ」 を参照し て く だ さい。

図 1-20 : 命令キャ ッ シュの構成

命令ア ド レス ビ ッ ト

0 3031キャ ッ シ ュ ア ド レスタグ ア ド レス --

タグ

命令

RAM

RAM

ラ イ ン ア ド レス

ワー ド ア ド レス

=タ グ

有効 ( ワー ド およびラ イ ン )

Cache_Hit

Cache_instruction_data

74 japan.xilinx.com MicroBlaze プロセ ッサ リ フ ァ ン レンス ガイ ドUG081 (v10.3)

Page 75: MicroBlaze プロセッサ リファレンス ガイド - Xilinx...MicroBlaze プロセッサ ガイドリファレンス japan.xilinx.com UG081 (v10.3)Xilinx is providing this product

データ キャ ッ シュ

データ キャ ッ シュ

概要

MicroBlaze は、 オプシ ョ ンのデータ キ ャ ッ シュ を使用し てパフ ォーマン ス を向上させる こ と がで

き ます。 キ ャ ッ シュ メ モ リ の範囲には、 LMB ア ド レ ス範囲内のア ド レ ス を含めないで く ださい。

データ キ ャ ッ シュには、 次の特徴があ り ます。

• ダ イ レ ク ト マ ッ プ方式 (連想度 1)

• ラ イ ト スルーまたはラ イ ト バッ ク

• ユーザーがキ ャ ッ シュ可能 メ モ リ のア ド レ ス範囲を指定可能

• キ ャ ッ シュ サイ ズおよびタ グ サイ ズを設定可能

• CacheLink (XCL) イ ン ターフ ェ イ ス を使用し たキ ャ ッ シュ

• 4 または 8 ワード のキ ャ ッ シュ ラ イ ン

• MSR ビ ッ ト を使用し たキ ャ ッ シュのオン/オフ制御

• データ キ ャ ッ シュ ラ イ ンを無効にする、 またはフ ラ ッ シュする WDC 命令 (オプシ ョ ン)

データ キャ ッ シュの機能

データ キ ャ ッ シュの使用時には、メ モ リ ア ド レ ス空間はキ ャ ッ シュ可能なセグ メ ン ト と キ ャ ッ シュ

不可能なセグ メ ン ト の 2 つに分割されます。 キ ャ ッ シュ可能な領域は、 C_DCACHE_BASEADDR および C_DCACHE_HIGHADDR の 2 つのパラ メ ータで定義されます。この範囲内のア ド レ スは、

すべてキ ャ ッ シュ可能なア ド レ ス空間に対応し ています。 その他のア ド レ スは、 キ ャ ッ シュ不可能

なア ド レ スです。

キ ャ ッ シュ可能なセグ メ ン ト サイ ズは 2N であ る必要があ り ます (N は正の整数)。 C_DCACHE _BASEADDR および C_DCACHE_HIGHADDR で指定する範囲は完全な2 のべき乗の範囲にし、

C_DCACHE_BASEADDR の 下位ビ ッ ト は 0 にする必要があ り ます。

図 1-21 に、 データ キ ャ ッ シュの構成を示し ます。

MicroBlaze プロセ ッサ リ フ ァ ンレンス ガイ ド japan.xilinx.com 75UG081 (v10.3)

Page 76: MicroBlaze プロセッサ リファレンス ガイド - Xilinx...MicroBlaze プロセッサ ガイドリファレンス japan.xilinx.com UG081 (v10.3)Xilinx is providing this product

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

キ ャ ッ シュ可能なデータ ア ド レ スは、 キ ャ ッ シュ ア ド レ ス と タ グ ア ド レ スで構成されています。

MicroBlaze のデータ キ ャ ッ シュは 64B ~ 64KB の範囲で設定でき、これは 6 ~ 16 ビ ッ ト のキ ャ ッ

シュ ア ド レ スに対応し ています。 キ ャ ッ シュ ア ド レ ス と タ グ ア ド レ ス を合わせた ものが、 キ ャ ッ

シ ュ 可 能 な メ モ リ の 完 全 ア ド レ ス に 一 致 す る よ う に 設 定 す る 必 要 が あ り ま す。

C_AREA_OPTIMIZED がセ ッ ト され C_DCACHE_USE_WRITEBACK がセ ッ ト されていない場

合、 ブロ ッ ク RAM が常にデータ RAM のイ ンプ リ メ ン ト に使用されるのを除き、 2 kB 以下の

キ ャ ッ シュ サイ ズを選択する場合は、 タ グ RAM およびデータ RAM のイ ンプ リ メ ン ト には分散

RAM が使用されます。

た と えば、 C_DCACHE_BASEADDR=0x00400000、 C_DCACHE_HIGHADDR=0x00403fff、

C_DCACHE_BYTE_SIZE=2048、 および C_DCACHE_LEN=4 のよ う に設定されている場合、

キ ャ ッ シュ可能な 16KB の メ モ リ では 14 ビ ッ ト のバイ ト ア ド レ スが使用され、2KB のキ ャ ッ シュ

では 11 ビ ッ ト のバイ ト ア ド レ スが使用されるため、必要なア ド レ ス タ グは 14 - 11 = 3 ビ ッ ト です。

こ の場合、512 ワード のデータの格納に RAMB16 が 1 個、128 個のキ ャ ッ シュ ラ イ ン (3 ビ ッ ト の

タ グ + 4 ワード有効ビ ッ ト + 1 ラ イ ン有効ビ ッ ト ) エン ト リ に RAMB16 が 1 個必要 と なるので、合

計で 2 個の RAMB16 プ リ ミ テ ィ ブが必要です。

データ キャ ッ シュの動作

MicroBlaze のデータ キ ャ ッ シュ、 ラ イ ト バッ ク、 またはラ イ ト スルーで使用される キ ャ ッ シュ ポ

リ シーは、 パラ メ ータ C_DCACHE_USE_WRITEBACK で決ま り ます。 こ のパラ メ ータが設定さ

れている場合ラ イ ト バッ ク プロ ト コルがイ ンプ リ メ ン ト され、 設定されていない場合はラ イ ト ス

ルーがイ ンプ リ メ ン ト されます。 しかし、MMU (C_USE_MMU > 1、C_AREA_OPTIMIZED = 0、

C_DCACHE_USE_WRITEBACK = 1) でコ ンフ ィ ギュ レーシ ョ ン される場合、 仮想モード の

キ ャ ッ シュ ポ リ シーは TLB エン ト リ の W 保存属性で決ま り 、ラ イ ト バッ クは実モード で使用され

ます。

ラ イ ト バッ ク プロ ト コルの場合、 キ ャ ッ シュ可能範囲内にあ る ア ド レ スへ保存する と常にキ ャ ッ

シュ データが更新されます。ターゲ ッ ト ア ド レ ス ワード がキ ャ ッ シュにない場合 (つま り ア ク セス

がキ ャ ッ シュ ミ ス) で、 キ ャ ッ シュのロ ケーシ ョ ンに メ モ リ にまだ書き込まれていないデータがあ

る場合、新しいデータでキ ャ ッ シュが更新される前に、古いデータはデータ CacheLink (DXCL) を

使用し外部 メ モ リ に書き込まれます。 キ ャ ッ シュ ラ イ ン全体を書き込む必要があ る場合バース ト

図 1-21 : データ キャ ッ シ ュの構成

データ ア ド レス ビ ッ ト

0 3031

キャ ッ シュ ワー ド ア ド レスタグ ア ド レス --

タグ

データ

RAM

RAM

ア ド レス

ア ド レス

=タグ

有効Cache_Hit

Cache_data

Load_Instruction

76 japan.xilinx.com MicroBlaze プロセ ッサ リ フ ァ ン レンス ガイ ドUG081 (v10.3)

Page 77: MicroBlaze プロセッサ リファレンス ガイド - Xilinx...MicroBlaze プロセッサ ガイドリファレンス japan.xilinx.com UG081 (v10.3)Xilinx is providing this product

データ キャ ッ シュ

キ ャ ッ シュ ラ イ ン書き込みが使用されますが、それ以外は、シングル ワード書き込みが使用されま

す。 バイ ト またはハーフ ワード保存の場合、 キ ャ ッ シュ ミ スがあった場合は、 ア ド レ スはまず

CacheLink を使用し て要求され、 ワード保存によ り キ ャ ッ シュが更新されます。

ラ イ ト スルー プロ ト コルを使用し、 キ ャ ッ シュ可能な範囲のア ド レ スに格納する こ と によ り 、 デー

タ CacheLink を使用し て同等のバイ ト 、 ハーフ ワード、 またはワード を外部 メ モ リ に書き込むこ と

が可能です。 書き込みでは、 ターゲ ッ ト ア ド レ ス ワード がキ ャ ッ シュ内の場合 (キ ャ ッ シュ ヒ ッ ト

の場合) に、キ ャ ッ シ ュ データ も更新されます。 キ ャ ッ シュ ミ スの場合は、キ ャ ッ シュに関連キ ャ ッ

シュ ラ イ ンは読み込まれません。

キ ャ ッ シュのイ ネーブル時に、データ をキ ャ ッ シュ可能な範囲のア ド レ スから読み出す と、要求デー

タが現在キ ャ ッ シュに含まれているかが確認されます。 含まれている場合 (キ ャ ッ シュ ヒ ッ ト の場

合) は要求データがキ ャ ッ シュから取得され、 含まれていない場合 (キ ャ ッ シュ ミ スの場合) はデー

タ CacheLink を使用し てア ド レ スが要求され、パイプラ イ ン処理は要求ア ド レ スに関連する キ ャ ッ

シュ ラ イ ンが外部 メ モ リ コ ン ト ローラから戻される までス ト ールし ます。

MicroBlaze プロセ ッサ リ フ ァ ンレンス ガイ ド japan.xilinx.com 77UG081 (v10.3)

Page 78: MicroBlaze プロセッサ リファレンス ガイド - Xilinx...MicroBlaze プロセッサ ガイドリファレンス japan.xilinx.com UG081 (v10.3)Xilinx is providing this product

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

データ キャ ッ シュのソ フ ト ウ ェ ア サポー ト

MSR ビ ッ ト

MSR の DCE ビ ッ ト は、 キ ャ ッ シュのイネーブル、 デ ィ スエーブルを制御し ます。 デ ィ スエーブル

にする場合は、 PLB または OPB から読み出し を開始する前に、 キ ャ ッ シュ可能な範囲の書き込み

がすべて外部 メ モ リ で完了し ている こ と を確認する必要があ り ます。 確認するには、 キ ャ ッ シュ を

オフにする直前にセマフ ォに書き込み、 書き込みが完了する までループ ポー リ ングを実行し ます。

キ ャ ッ シュがデ ィ スエーブルの場合、 デフ ォル ト ではキ ャ ッ シュの内容が保持されます。

WDC 命令

オプシ ョ ンの WDC 命令 (C_ALLOW_DCACHE_WR=1) を使用する と、 アプ リ ケーシ ョ ンに含ま

れるデータ キ ャ ッ シュのキ ャ ッ シュ ラ イ ンを無効にするか、 またはフ ラ ッ シュでき ます。 詳細は、

第 4 章 「MicroBlaze 命令セ ッ ト アーキテ クチャ」 を参照し て く だ さい。

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

概要

MicroBlaze の浮動小数点ユニ ッ ト は、 IEEE 754 規格に準拠し ています。

• IEEE 754 の単精度浮動小数点フ ォーマ ッ ト (無限の定義、 NaN (Not A Number)、 および 0 を

含む) を使用

• 加算、 減算、 乗算、 除算、 比較、 変換および平方根命令をサポー ト

• も近い値に繰 り 上げ/繰 り 下げるモード (Round-to-Nearest) を イ ンプ リ メ ン ト

• アンダーフ ロー、 オーバーフ ロー、 ゼロでの除算、 および無効な操作に対する ステータ ス ビ ッ

ト を生成

パフ ォーマン ス を向上させるため、 次のよ う な非標準的な簡略化も適用されています。

• 非正規化 (1) オペラ ン ド はサポー ト されません。 非正規化値に対し てハード ウ ェ ア浮動小数点の

操作が実行される と、quiet NaN が返され、FSR の非正規化オペラ ン ド エラー ビ ッ ト が 1 にな

り ます。詳細は、36 ページの 「浮動小数点ユニ ッ ト ステータ ス レジス タ (FSR)」 を参照し て く

ださ い。

• 非正規化値の結果は、符号付きの 0 と し て格納され、FSR のアンダーフ ロー ビ ッ ト が 1 にな り

ます。 こ の方法は、 FTZ (Flush-to-Zero) と呼ばれます。

• quiet NaN に対する操作では、NaN オペラ ン ド の 1 つではな く 固定の NaN (0xFFC00000) が返

されます。

• 浮動小数点の操作によ り オーバーフ ローが発生し た場合は、 常に符号付き ∞ が返されます。

1. (1.17549 X 10-38 > n > 0 ) または ( 0 > n > -1.17549 X 10-38) の範囲内にあ る値 n のよ う に 0 に非常に近 く 、 完全精

度で も表すこ と ができ ない値。

78 japan.xilinx.com MicroBlaze プロセ ッサ リ フ ァ ン レンス ガイ ドUG081 (v10.3)

Page 79: MicroBlaze プロセッサ リファレンス ガイド - Xilinx...MicroBlaze プロセッサ ガイドリファレンス japan.xilinx.com UG081 (v10.3)Xilinx is providing this product

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

フ ォーマ ッ ト

IEEE 754 の単精度浮動小数点値は、 次の 3 つのフ ィ ール ド から構成されています。

1. 1 ビ ッ ト の符号 (sign)

2. 8 ビ ッ ト の指数部 (exponent) - ゲタばき表現

3. 23 ビ ッ ト の仮数部 (fraction) - mantissa または significand

これらのフ ィ ール ド は、 図 1-22 に示すよ う に 32 ビ ッ ト ワード に格納されます。

MicroBlaze では、 浮動小数点値 v は次のよ う に解釈されます。

1. exponent = 255、 fraction <> 0 の場合、 符号ビ ッ ト にかかわらず v= NaN と な り ます。

2. exponent = 255、 fraction = 0 の場合、 v= (-1)sign X ∞ と な り ます。

3. 0 < exponent < 255 の場合、 v = (-1)sign X 2(exponent - 127) X (1.fraction)

4. exponent = 0、 fraction <> 0 の場合、 v = (-1)sign X 2-126 X (0.fraction)

5. exponent = 0、 fraction = 0 の場合、 v = (-1)sign X 0 と な り ます。

実際には 3 と 5 のみが有益で、その他の値ではエラーが発生するか、32 ビ ッ ト では完全な精度で表

現でき ません。

繰り上げ/繰り下げ

MicroBlaze の FPU では、 IEEE 754 で指定された、 も近い値に繰 り 上げ/繰 り 下げるデフ ォル ト

のモード (Round-to-Nearest) のみがイ ンプ リ メ ン ト されます。 こ のモード では、 浮動小数点の操作

結果は、 無限の精度の結果に も近い単精度値 と な り ます。 同程度に近い値が 2 つあ る場合は、

下位ビ ッ ト が 0 のものが使用されます。

操作

MicroBlaze FPU 操作では、 専用の浮動小数点レジス タ フ ァ イルではな く 、 プロセ ッ サの汎用レジ

ス タが使用されます。 「汎用レジス タ」 を参照し て く だ さい。

演算

FPU では、 次の浮動小数点演算がイ ンプ リ メ ン ト されます。

• 加算 (fadd)

• 減算 (fsub)

• 乗算 (fmul)

• 除算 (fdiv)

• 平方根 (fsqrt、 C_USE_FPU = 2 の場合使用可能)

比較

FPU では、 次の浮動小数点比較がイ ンプ リ メ ン ト されます。

0 1 9 31

↑ ↑ ↑

符号 指数部 仮数部

図 1-22 : IEEE 754 の単精度浮動小数点フ ォーマ ッ ト

MicroBlaze プロセ ッサ リ フ ァ ンレンス ガイ ド japan.xilinx.com 79UG081 (v10.3)

Page 80: MicroBlaze プロセッサ リファレンス ガイド - Xilinx...MicroBlaze プロセッサ ガイドリファレンス japan.xilinx.com UG081 (v10.3)Xilinx is providing this product

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

• 小な り (fcmp.lt)

• 等価 (fcmp.eq)

• 以下 (fcmp.le)

• 大な り (fcmp.gt)

• 非等価 (fcmp.ne)

• 以上 (fcmp.ge)

• 順序付けなし (fcmp.un) - NaN で使用

変換

FPU では、 次の変換がイ ンプ リ メ ン ト されます (C_USE_FPU = 2 の場合)。

• 符号付き整数から浮動小数点への変換 (flt)

• 浮動小数点から符号付き整数への変換 (fint)

例外

MicroBlaze の浮動小数点ユニ ッ ト は、通常のハード ウ ェ ア例外 メ カニズムを使用し ます。 例外がイ

ネーブルの場合、 IEEE 規格で指定される状態 (アンダーフ ロー、 オーバーフ ロー、 0 での除算、 不

正な操作) および MicroBlaze 特定の例外であ る非正規化オペラ ン ド エラーによ り 例外処理が実行

されます。

浮動小数点の例外が発生する と、デステ ィ ネーシ ョ ン レジス タ (Rd) への書き込みが禁止されます。

これによ り 、 破損し ていないレジス タ フ ァ イルが浮動小数点例外ハン ド ラによ り 処理されます。

ソ フ ト ウ ェ ア サポー ト

GCC を基本にし た EDK コ ンパイ ラ システムは、 MicroBlaze API に準拠し た浮動小数点ユニ ッ ト

をサポー ト し ています。 コ ンパイ ラのフ ラ グは、XPS または SDK を使用する場合、システムにあ る

FPU のタ イプに基づき自動的に GCC コマン ド ラ イ ンに追加されます。

倍精度の操作はすべて ソ フ ト ウ ェ アでエ ミ ュ レー ト されます。 xil_printf() では浮動小数点の出力は

サポー ト されていないので注意し て く ださ い。 標準 C ラ イブラ リ の printf() および関連関数では浮

動小数点出力がサポー ト されていますが、 プロ グ ラ ムのコード サイ ズが大き く な り ます。

ラ イブ ラ リ およびバイナ リの互換性

EDK コ ンパイ ラ システムには、ソ フ ト ウ ェ アの浮動小数点 C ラ ン タ イ ム ラ イブラ リ のみが含まれ

ています。 ハード ウ ェ ア FPU を利用するには、ラ イブラ リ を適切なコ ンパイ ラ オプシ ョ ンを設定し

て再コ ンパイルする必要があ り ます。

別のコ ンパイルが使用される ケースでは、 ビル ド内の FPU のコ ンパイ ラ フ ラ グが同じであ る こ と

を確認する こ と が重要です。

オペレータ レ イテンシ

FPU でサポー ト されている さ まざまな操作のレ イ テンシは、 第 4 章 「MicroBlaze 命令セ ッ ト アー

キテ クチャ」 に リ ス ト されています。 FPU 命令はパイプラ イ ン化されていないため、 1 度に 1 つの

操作のみが行われます。

80 japan.xilinx.com MicroBlaze プロセ ッサ リ フ ァ ン レンス ガイ ドUG081 (v10.3)

Page 81: MicroBlaze プロセッサ リファレンス ガイド - Xilinx...MicroBlaze プロセッサ ガイドリファレンス japan.xilinx.com UG081 (v10.3)Xilinx is providing this product

ソ フ ト ウ ェ ア サポー ト

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 に設定され

ている場合、 でき る限 り 変換を避け るのが 善です。

次の例は 「悪い例」 で、 浮動小数点で 1 から 10 の整数の平方和が計算されています。

float sum, t;int i;sum = 0.0f;for (i = 1; i <= 10; i++) {t = (float)i;sum += t * t;

}

上述のコード では、各ループの繰 り 返しで整数から浮動小数点への型変換が必要です。 これは、次の

よ う に書き換え る こ と ができ ます。

float sum, t;int i;t = sum = 0.0f;for(i = 1; i <= 10; i++) {t += 1.0f;sum += t * t;

}

上記の 2 つのコード例で異なる結果が出力される場合があ る ため (t の値が非常に大き く なる など)、

通常、 コ ンパイ ラではこ の 適化を自由には実行でき ません。

平方根ラ ン タ イム ラ イ ブ ラ リ関数

標準 C ラ ン タ イ ム数学ラ イブラ リ 関数は、 倍精度の演算を行います。 単精度の FPU を使用する場

合、平方根関数 sqrt() の呼び出しで、FPU 命令ではな く 非効率なエ ミ ュ レーシ ョ ン ルーチンが使用

されます。

MicroBlaze プロセ ッサ リ フ ァ ンレンス ガイ ド japan.xilinx.com 81UG081 (v10.3)

Page 82: MicroBlaze プロセッサ リファレンス ガイド - Xilinx...MicroBlaze プロセッサ ガイドリファレンス japan.xilinx.com UG081 (v10.3)Xilinx is providing this product

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

#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 */

こ のコード を コ ンパイルする場合、 コ ンパイ ラ フ ラ グは -mhard-float および -mxl-float-sqrt に加

え、 -fno-math-errno を使用する必要があ り ます。 これは、 errno 変数をア ッ プデー ト する こ と でエ

ラー コ ンデ ィ シ ョ ンを処理するための不必要なコード がコ ンパイ ラで生成されないよ う にする た

めです。

高速シンプレ ッ クス リ ン ク (FSL)MicroBlaze では、 入力ポー ト と出力ポー ト を 1 つずつ持つ高速シンプレ ッ ク ス リ ン ク (FSL) イ ン

ターフ ェ イ ス を 16 個まで使用でき ます。 FSL チャネルは、 ポイ ン ト ツー ポイ ン ト 接続された単一

方向データ ス ト リ ー ミ ング イ ン ターフ ェ イ スです。FSL イ ン ターフ ェ イ スの詳細は、ザイ リ ン ク ス

EDK IP の資料のデータシー ト (DS449) 『Fast Simplex Link (FSL) Bus』 を参照し て く ださ い。

MicroBlaze の FSL イ ン ターフ ェ イ スは、32 ビ ッ ト 幅です。別のビ ッ ト で、送信/受信ワード が制御

信号であ るかデータであ るかが示されます。 FSL ポー ト から汎用レジス タに情報を転送するには、

MicroBlaze ISA の get 命令を使用し ます。 汎用レジス タから FSL ポー ト に情報を転送するには、

put 命令を使用し ます。 どち らの命令にも、ブロ ッ キング データ用、 ノ ンブロ ッ キング データ用、ブ

ロ ッ キング コ ン ト ロール用、 ノ ンブロ ッ キング コ ン ト ロール用の 4 種類があ り ます。 get 命令およ

び put 命令の詳細は、 第 4 章 「MicroBlaze 命令セ ッ ト アーキテ クチャ」 を参照し て く ださ い。

82 japan.xilinx.com MicroBlaze プロセ ッサ リ フ ァ ン レンス ガイ ドUG081 (v10.3)

Page 83: MicroBlaze プロセッサ リファレンス ガイド - Xilinx...MicroBlaze プロセッサ ガイドリファレンス japan.xilinx.com UG081 (v10.3)Xilinx is providing this product

高速シンプレ ッ ク ス リ ン ク (FSL)

ハー ド ウ ェ ア アクセラ レータへの FSL の使用

FSL は、プロセ ッ サ パイプラ イ ンに対する レ イ テンシが短い専用イ ン ターフ ェ イ ス と し て使用でき

ます。そのため、プロセ ッサ実行ユニ ッ ト をカス タ ム ハード ウ ェア ア ク セラ レータ を使用し て拡張

する際に適し ています。 図 1-23 に、 簡単な例を示し ます。

図 1-23 : ハー ド ウェ ア ア クセラ レータ フ ァ ン クシ ョ ン fx に FSL を使用し た例

こ の方法は、 ISA をカス タ ム命令で拡張する方法に似ていますが、 プロセ ッ サ パイプラ イ ン全体の

速度がカ ス タ ム フ ァ ン ク シ ョ ンに依存し ない と い う 利点があ り ます。 また、 こ のよ う に機能を拡張

する場合、 ソ フ ト ウ ェ ア ツール チェーンに追加の要件はあ り ません。

MicroBlaze

カス タム ハー ド ウ ェ ア

FSLx// 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

FSLx

ア クセラ レータ

MicroBlaze プロセ ッサ リ フ ァ ンレンス ガイ ド japan.xilinx.com 83UG081 (v10.3)

Page 84: MicroBlaze プロセッサ リファレンス ガイド - Xilinx...MicroBlaze プロセッサ ガイドリファレンス japan.xilinx.com UG081 (v10.3)Xilinx is providing this product

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

デバッ グおよび ト レース

デバッ グの概要

MicroBlaze には、 XMD (Xilinx Microprocessor Debug ) のよ う な JTAG ベースの ソ フ ト ウ ェア デ

バッ グ ツール (バッ ググ ラ ン ド デバッ グ モード (BDM) デバッ ガ と呼ばれる) をサポー ト するデ

バッ グ イ ン ターフ ェ イ スが含まれています。 こ のデバッ グ イ ン ターフ ェ イ スは、 ザイ リ ン ク ス

FPGA の JTAG ポー ト と と のイ ン ターフ ェ イ スに使用するマイ ク ロプロセ ッ サ デバッ グ モジュー

ル (MDM) コ アに接続されます。 複数の MicroBlaze イ ン ス タ ン ス を 1 個の MDM に接続し てマル

チプロセ ッ サをデバッ グでき ます。 デバッ グの機能は、 次の とお り です。

• ハード ウ ェ アのブレーク ポイ ン ト 数およびウ ォ ッチポイ ン ト 数を設定可能、 ソ フ ト ウ ェ アのブ

レーク ポイ ン ト 数は無制限

• 外部プロセ ッ サ制御によ り デバッ グ ツールで MicroBlaze を停止、 リ セ ッ ト 、 シングル ステ ッ

プ可能

• メ モ リ 、汎用レジス タ、特殊用途レジス タに対する読み出し /書き込み (EAR、EDR、ESR、BTR、

および PVR0 ~ PVR11 は読み出しのみ)

• 複数のプロセ ッ サをサポー ト

• 命令キ ャ ッ シュおよびデータ キ ャ ッ シュへの書き込み

ト レースの概要

MicroBlaze の ト レース イ ン ターフ ェ イ スは、パフ ォーマンス をモニ タおよび解析する ため、多数の

内部ステー ト 信号を送信し ます。 ト レース イ ン ターフ ェ イ スは、 ザイ リ ン ク スが開発し た解析コ ア

でのみ使用する こ と をお勧めし ます。 こ のイ ン ターフ ェ イ スは、MicroBlaze の将来の リ リ ースでは

サポー ト されない可能性があ り ます。

84 japan.xilinx.com MicroBlaze プロセ ッサ リ フ ァ ン レンス ガイ ドUG081 (v10.3)

Page 85: MicroBlaze プロセッサ リファレンス ガイド - Xilinx...MicroBlaze プロセッサ ガイドリファレンス japan.xilinx.com UG081 (v10.3)Xilinx is providing this product

第 2 章

MicroBlaze の信号イ ン ターフ ェ イス

こ の章では、MicroBlaze™ に接続でき る信号イ ン ターフ ェ イ スのタ イプについて説明し ます。次の

セ ク シ ョ ン よ り 構成されています。

• 概要

• MicroBlaze I/O の概要

• プロセ ッ サ ローカル バス (PLB) イ ン ターフ ェ イ ス

• オンチ ッ プ ペ リ フ ェ ラル バス (OPB) イ ン ターフ ェ イ ス

• ローカル メ モ リ バス (LMB) イ ン ターフ ェ イ ス

• 高速シンプレ ッ ク ス リ ン ク (FSL) イ ン ターフ ェ イ ス

• ザイ リ ン ク ス CacheLink (XCL) イ ン ターフ ェ イ ス

• デバッ グ イ ン ターフ ェ イ ス

• ト レース イ ン ターフ ェ イ ス

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

概要

MicroBlaze コ アは、 データ ア ク セスおよび命令ア ク セスに対し別々のバス イ ン ターフ ェ イ ス ユ

ニ ッ ト を持つハーバード アーキテ クチャ構造になっています。 ローカル メ モ リ バス (LMB)、 IBM のプロセ ッ サ ローカル バス (PLB) またはオンチ ッ プ ペ リ フ ェ ラル バス (OPB)、およびザイ リ ン ク

ス CacheLink (XCL) の 3 つの メ モ リ イ ン ターフ ェ イ スがサポー ト されています。 LMB では、オン

チ ッ プのデュ アル ポー ト ブロ ッ ク RAM に 1 ク ロ ッ ク サイ クルでア ク セスでき ます。 PLB および

OPB イ ン ターフ ェ イ スは、オンチ ッ プ と オフチ ッ プの両方のペ リ フ ェ ラルおよび メ モ リ に接続でき

ます。 CacheLink イ ン ターフ ェ イ スは、専用の外部 メ モ リ コ ン ト ローラ用です。 また MicroBlaze で

は、マス タおよびス レーブ FSL イ ン ターフ ェ イ ス を 1 つずつ持つ高速シンプレ ッ ク ス リ ン ク (FSL) ポー ト を 16 個まで使用でき ます。

機能

MicroBlaze バスは、 次のバス イ ン ターフ ェ イ ス を使用し てコ ンフ ィ ギュ レーシ ョ ンでき ます。

• 32 ビ ッ ト の PLB V4.6 イ ン ターフ ェ イ ス (IBM の 『128-Bit Processor Local Bus Architectural Specifications, Version 4.6』 を参照)

• 32 ビ ッ ト の OPB V2.0 バス イ ン ターフ ェ イ ス (IBM の 『64-Bit On-Chip Peripheral Bus, Architectural Specifications, Version 2.0』 を参照)

• LMB ではブロ ッ ク RAM を効率よ く 転送する単純な同期プロ ト コルを提供

• FSL では、 高速でアービ ト レーシ ョ ンを使用し ないス ト リ ー ミ ング通信 メ カニズムを提供

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド japan.xilinx.com 85UG081 (v10.3)

Page 86: MicroBlaze プロセッサ リファレンス ガイド - Xilinx...MicroBlaze プロセッサ ガイドリファレンス japan.xilinx.com UG081 (v10.3)Xilinx is providing this product

第 2 章 : MicroBlaze の信号イ ン ターフ ェ イス

• XCL では、 キ ャ ッ シ ュ と外部 メ モ リ コ ン ト ローラの間にアービ ト レーシ ョ ンを使用し た高速

ス ト リ ー ミ ング イ ン ターフ ェ イ ス を提供

• マイ ク ロプロセ ッ サ デバッ グ モジュール (MDM) コ アを使用し たデバッ グ イ ン ターフ ェ イ ス

• パフ ォーマン ス解析用の ト レース イ ン ターフ ェ イ ス

MicroBlaze I/O の概要

図 2-1 および表 2-1 に示すコ ア イ ン ターフ ェ イ スは、 次のよ う に定義されています。

DPLB :データ イ ン ターフ ェ イ ス、 プロセ ッサ ローカル バス

DOPB : データ イ ン ターフ ェ イ ス、 オンチッ プ ペ リ フ ェ ラル バス

DLMB : データ イ ン ターフ ェ イ ス、 ローカル メ モ リ バス (BRAM のみ) IPLB :命令イ ン ターフ ェ イ ス、 プロセ ッ サ ローカル バス

IOPB : 命令イ ン ターフ ェ イ ス、 オンチ ッ プ ペ リ フ ェ ラル バス

ILMB : 命令イ ン ターフ ェ イ ス、 ローカル メ モ リ バス (BRAM のみ) MFSL 0..15 : FSL マス タ イ ン ターフ ェ イ ス

DWFSL 0..15 :FSL マス タ直接接続イ ン ターフ ェ イ ス

SFSL 0..15 : FSL ス レーブ イ ン ターフ ェ イ ス

DRFSL 0..15 : FSL ス レーブ直接接続イ ン ターフ ェ イ ス

IXCL :命令側ザイ リ ン ク ス CacheLink イ ン ターフ ェ イ ス (FSL マス タ /ス レーブ ペア) DXCL :データ側ザイ リ ン ク ス CacheLink イ ン ターフ ェ イ ス (FSL マス タ /ス レーブ ペア) コ ア : ク ロ ッ ク、 リ セ ッ ト 、 デバッ グ、 ト レース用のその他の信号

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

DXCL_M

DXCL_S

データ側命令側

DOPB

DLMB

IOPB

ILMB

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

命令バッ フ ァ

プログラムカウン タ

レジス タ フ ァ イル

32 X 32b

ALU

命令デコー ド

バスIF

バスIF

IXCL_M

IXCL_S

命令

キャ

ッシ

デー

タ キ

ャッ

シュ

シフ ト

バレル シ フ ト

乗算器

除算器

FPU

特殊用途レジス タ

オプシ ョ ンの機能

IPLB DPLB

UTLBITLB DTLB

MMU (Memory Management Unit)

MFSL 0..15

SFSL 0..15

またはDWFSL 0..15

またはDRFSL 0..15

86 japan.xilinx.com MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ドUG081 (v10.3)

Page 87: MicroBlaze プロセッサ リファレンス ガイド - Xilinx...MicroBlaze プロセッサ ガイドリファレンス japan.xilinx.com UG081 (v10.3)Xilinx is providing this product

MicroBlaze I/O の概要

表 2-1 : MicroBlaze コア I/O のサマ リ

信号イ ン ターフ ェ イス

I/O 説明

DM_ABus[0:31] DOPB O データ イ ン ターフ ェ イ ス OPB ア ド レ ス バス

DM_BE[0:3] DOPB O データ イ ン ターフ ェ イ ス OPB バイ ト イネーブル

DM_busLock DOPB O データ イ ン ターフ ェ イ ス OPB バス ロ ッ ク

DM_DBus[0:31] DOPB O データ イ ン ターフ ェ イ ス OPB 書き込みデータ バス

DM_request DOPB O データ イ ン ターフ ェ イ ス OPB バス要求

DM_RNW DOPB O データ イ ン ターフ ェ イ ス OPB 読み出し、 書き込みはな し

DM_select DOPB O データ イ ン ターフ ェ イ ス OPB セレ ク ト

DM_seqAddr DOPB O データ イ ン ターフ ェ イ ス OPB シーケンシャル ア ド レ ス

DOPB_DBus[0:31] DOPB I データ イ ン ターフ ェ イ ス OPB 読み出しデータ バス

DOPB_errAck DOPB I データ イ ン ターフ ェ イ ス OPB エラー通知

DOPB_MGrant DOPB I データ イ ン ターフ ェ イ ス OPB バス許可

DOPB_retry DOPB I データ イ ン ターフ ェ イ ス OPB バス サイ クル再試行

DOPB_timeout DOPB I データ イ ン ターフ ェ イ ス OPB タ イ ムアウ ト エラー

DOPB_xferAck DOPB I データ イ ン ターフ ェ イ ス OPB 転送 ACK 信号

IM_ABus[0:31] IOPB O 命令イ ン ターフ ェ イ ス OPB ア ド レ ス バス

IM_BE[0:3] IOPB O 命令イ ン ターフ ェ イ ス OPB バイ ト イ ネーブル

IM_busLock IOPB O 命令イ ン ターフ ェ イ ス OPB バス ロ ッ ク

IM_DBus[0:31] IOPB O 命令イ ン ターフ ェ イ ス OPB 書き込みデータ バス (常に 0x00000000)

IM_request IOPB O 命令イ ン ターフ ェ イ ス OPB バス要求

IM_RNW IOPB O 命令イ ン ターフ ェ イ ス OPB 読み出し、 書き込みはなし (IM_select に接続)

IM_select IOPB O 命令イ ン ターフ ェ イ ス OPB セレ ク ト

IM_seqAddr IOPB O 命令イ ン ターフ ェ イ ス OPB シーケンシャル ア ド レ ス

IOPB_DBus[0:31] IOPB I 命令イ ン ターフ ェ イ ス OPB 読み出しデータ バス

IOPB_errAck IOPB I 命令イ ン ターフ ェ イ ス OPB エラー通知

IOPB_MGrant IOPB I 命令イ ン ターフ ェ イ ス OPB バス許可

IOPB_retry IOPB I 命令イ ン ターフ ェ イ ス OPB バス サイ クル再試行

IOPB_timeout IOPB I 命令イ ン ターフ ェ イ ス OPB タ イ ムア ウ ト エラー

IOPB_xferAck IOPB I 命令イ ン ターフ ェ イ ス OPB 転送 ACK 信号

DPLB_M_ABort DPLB O データ イ ン ターフ ェ イ ス PLB 中止バス要求イ ンジケータ

DPLB_M_ABus DPLB O データ イ ン ターフ ェ イ ス PLB ア ド レ ス バス

DPLB_M_UABus DPLB O データ イ ン ターフ ェ イ ス PLB 上位ア ド レ ス バス

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド japan.xilinx.com 87UG081 (v10.3)

Page 88: MicroBlaze プロセッサ リファレンス ガイド - Xilinx...MicroBlaze プロセッサ ガイドリファレンス japan.xilinx.com UG081 (v10.3)Xilinx is providing this product

第 2 章 : MicroBlaze の信号イ ン ターフ ェ イス

DPLB_M_BE DPLB O データ イ ン ターフ ェ イ ス PLB バイ ト イネーブル

DPLB_M_busLock DPLB O データ イ ン ターフ ェ イ ス PLB バス ロ ッ ク

DPLB_M_lockErr DPLB O データ イ ン ターフ ェ イ ス PLB ロ ッ ク エラー イ ンジケータ

DPLB_M_MSize DPLB O データ イ ン ターフ ェ イ ス PLB マス タ データ バス サイ ズ

DPLB_M_priority DPLB O データ イ ン ターフ ェ イ ス PLB バス要求優先順位

DPLB_M_rdBurst DPLB O データ イ ン ターフ ェ イ ス PLB バース ト 読み出し転送イ ンジケータ

DPLB_M_request DPLB O データ イ ン ターフ ェ イ ス PLB バス要求

DPLB_M_RNW DPLB O データ イ ン ターフ ェ イ ス PLB 読み出し、 書き込みはな し

DPLB_M_size DPLB O データ イ ン ターフ ェ イ ス PLB 転送サイ ズ

DPLB_M_TAttribute DPLB O データ イ ン ターフ ェ イ ス PLB 転送属性バス

DPLB_M_type DPLB O データ イ ン ターフ ェ イ ス PLB 転送形式

DPLB_M_wrBurst DPLB O データ イ ン ターフ ェ イ ス PLB バース ト 書き込み転送イ ンジケータ

DPLB_M_wrDBus DPLB O データ イ ン ターフ ェ イ ス PLB 書き込みデータ バス

DPLB_MBusy DPLB I データ イ ン ターフ ェ イ ス PLB ス レーブ ビジー イ ンジケータ

DPLB_MRdErr DPLB I データ イ ン ターフ ェ イ ス PLB ス レーブ読み出し エラー イ ンジケータ

DPLB_MWrErr DPLB I データ イ ン ターフ ェ イ ス PLB ス レーブ書き込み エラー イ ンジケータ

DPLB_MIRQ DPLB I データ イ ン ターフ ェ イ ス PLB ス レーブ割 り 込みイ ンジケータ

DPLB_MWrBTerm DPLB I データ イ ン ターフ ェ イ ス PLB 終端書き込みバース ト イ ンジケータ

DPLB_MWrDAck DPLB I データ イ ン ターフ ェ イ ス PLB 書き込みデータ応答

DPLB_MAddrAck DPLB I データ イ ン ターフ ェ イ ス PLB ア ド レ ス応答

DPLB_MRdBTerm DPLB I データ イ ン ターフ ェ イ ス PLB 終端読み出しバース ト イ ンジケータ

DPLB_MRdDAck DPLB I データ イ ン ターフ ェ イ ス PLB 読み出しデータ応答

DPLB_MRdDBus DPLB I データ イ ン ターフ ェ イ ス PLB 読み出しデータ バス

DPLB_MRdWdAddr DPLB I データ イ ンタ ーフ ェ イ ス PLB 読み出し ワ ード アドレ ス

DPLB_MRearbitrate DPLB I データ イ ン ターフ ェ イ ス PLB バス再アービ ト レーシ ョ ン イ ンジケータ

DPLB_MSSize DPLB I データ イ ン ターフ ェ イ ス PLB ス レーブ データ バス サイ ズ

表 2-1 : MicroBlaze コア I/O のサマ リ (続き)

信号イ ン ターフ ェ イス

I/O 説明

88 japan.xilinx.com MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ドUG081 (v10.3)

Page 89: MicroBlaze プロセッサ リファレンス ガイド - Xilinx...MicroBlaze プロセッサ ガイドリファレンス japan.xilinx.com UG081 (v10.3)Xilinx is providing this product

MicroBlaze I/O の概要

DPLB_MTimeout DPLB I データ イ ン ターフ ェ イ ス PLB バス タ イ ムア ウ ト

IPLB_M_ABort IPLB O 命令イ ンタ ーフェ イ ス PLB 中止バス 要求イ ンジケータ

IPLB_M_ABus IPLB O 命令イ ン ターフ ェ イ ス PLB ア ド レ ス バス

IPLB_M_UABus IPLB O 命令イ ン ターフ ェ イ ス PLB 上位ア ド レ ス バス

IPLB_M_BE IPLB O 命令イ ン ターフ ェ イ ス PLB バイ ト イ ネーブル

IPLB_M_busLock IPLB O 命令イ ン ターフ ェ イ ス PLB バス ロ ッ ク

IPLB_M_lockErr IPLB O 命令イ ンタ ーフ ェ イ ス PLB ロ ッ ク エラ ー イ ンジケータ

IPLB_M_MSize IPLB O 命令イ ンタ ーフ ェ イ ス PLB マス タ データ バス サイ ズ

IPLB_M_priority IPLB O 命令イ ン ターフ ェ イ ス PLB バス要求優先順位

IPLB_M_rdBurst IPLB O 命令イ ン ターフ ェ イ ス PLB バース ト 読み出し転送 イ ンジケータ

IPLB_M_request IPLB O 命令イ ン ターフ ェ イ ス PLB バス要求

IPLB_M_RNW IPLB O 命令イ ンタ ーフェ イ ス PLB 読み出し 、 書き 込みはなし

IPLB_M_size IPLB O 命令イ ン ターフ ェ イ ス PLB 転送サイ ズ

IPLB_M_TAttribute IPLB O 命令イ ン ターフ ェ イ ス PLB 転送属性バス

IPLB_M_type IPLB O 命令イ ン ターフ ェ イ ス PLB 転送形式

IPLB_M_wrBurst IPLB O 命令イ ン ターフ ェ イ ス PLB バース ト 書き込み転送 イ ンジケータ

IPLB_M_wrDBus IPLB O 命令イ ン ターフ ェ イ ス PLB 書き込みデータ バス

IPLB_MBusy IPLB I 命令イ ン ターフ ェ イ ス PLB ス レーブ ビジー イ ンジケータ

IPLB_MRdErr IPLB I 命令イ ン ターフ ェ イ ス PLB ス レーブ読み出しエラー イ ンジケータ

IPLB_MWrErr IPLB I 命令イ ン ターフ ェ イ ス PLB ス レーブ書き込みエラー イ ンジケータ

IPLB_MIRQ IPLB I 命令イ ン ターフ ェ イ ス PLB ス レーブ割 り 込みイ ンジケータ

IPLB_MWrBTerm IPLB I 命令イ ン ターフ ェ イ ス PLB 終端書き込みバース ト イ ンジケータ

IPLB_MWrDAck IPLB I 命令イ ン ターフ ェ イ ス PLB 書き込みデータ応答

IPLB_MAddrAck IPLB I 命令イ ン ターフ ェ イ ス PLB ア ド レ ス応答

IPLB_MRdBTerm IPLB I 命令イ ン ターフ ェ イ ス PLB 終端読み出しバース ト イ ンジケータ

IPLB_MRdDAck IPLB I 命令イ ン ターフ ェ イ ス PLB 読み出しデータ応答

IPLB_MRdDBus IPLB I 命令イ ン ターフ ェ イ ス PLB 読み出しデータ バス

IPLB_MRdWdAddr IPLB I 命令イ ン ターフ ェ イ ス PLB 読み出し ワード ア ド レ ス

IPLB_MRearbitrate IPLB I 命令イ ン ターフ ェ イ ス PLB バス再アービ ト レーシ ョン イ ンジケータ

表 2-1 : MicroBlaze コア I/O のサマ リ (続き)

信号イ ン ターフ ェ イス

I/O 説明

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド japan.xilinx.com 89UG081 (v10.3)

Page 90: MicroBlaze プロセッサ リファレンス ガイド - Xilinx...MicroBlaze プロセッサ ガイドリファレンス japan.xilinx.com UG081 (v10.3)Xilinx is providing this product

第 2 章 : MicroBlaze の信号イ ン ターフ ェ イス

IPLB_MSSize IPLB I 命令イ ン ターフ ェ イ ス PLB ス レーブ データ バス サイ ズ

IPLB_MTimeout IPLB I 命令イ ン ターフ ェ イ ス PLB バス タ イ ムアウ ト

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 データ Ready

Instr_Addr[0:31] ILMB O 命令イ ン ターフ ェ イ ス LMB ア ド レ ス バス

I_AS ILMB O 命令イ ン ターフ ェ イ ス LMB ア ド レ ス ス ト ローブ

IFetch ILMB O 命令イ ン ターフ ェ イ ス LMB 命令フ ェ ッチ

Instr[0:31] ILMB I 命令イ ン ターフ ェ イ ス LMB 読み出しデータ バス

IReady ILMB I 命令イ ン ターフ ェ イ ス LMB データ Ready

FSL0_M .. FSL15_M MFSLまたは

DWFSL

O 出力 FSL チャネルへのマス タ イ ン ターフ ェ イ ス

MFSL は FSL バス接続に、 DWFSL は FSL ス レーブと の直接接続に使用されます。

FSL0_S .. FSL15_S SFSLまたは

DRFSL

I 入力 FSL チャネルへのス レーブ イ ン ターフ ェ イ ス

SFSL は FSL バス接続に、DRFSL は FSL マス タ と の直接接続に使用されます。

ICache_FSL_in... IXCL_S IO 命令側 CacheLink FSL ス レーブ イ ン ターフ ェ イ ス

ICache_FSL_out... IXCL_M IO 命令側 CacheLink FSL マス タ イ ン ターフ ェ イ ス

DCache_FSL_in... DXCL_S IO データ側 CacheLink FSL ス レーブ イ ン ターフ ェ イ ス

DCache_FSL_out... DXCL_M IO データ側 CacheLink FSL マス タ イ ン ターフ ェ イ ス

Interrupt コ ア I 割 り 込み

Reset1 コ ア I コ ア リ セ ッ ト 、 ア ク テ ィ ブ High。 1 Clk ク ロ ッ ク サイ クル以上保持する必要あ り 。

Mb_Reset1 コ ア I コ ア リ セ ッ ト 、 ア ク テ ィ ブ High。 1 Clk ク ロ ッ ク サイ クル以上保持する必要あ り 。

Clk コ ア I ク ロ ッ ク 2

Ext_BRK コ ア I MDM からの BREAK 信号

Ext_NM_BRK コ ア I MDM からのマス ク不可の BREAK 信号

MB_Halted コ ア O デバッ グ イ ン ターフ ェ イ ス を介し た、 または Dbg_Stop の設定によ るパイプラ イ ン停止

表 2-1 : MicroBlaze コア I/O のサマ リ (続き)

信号イ ン ターフ ェ イス

I/O 説明

90 japan.xilinx.com MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ドUG081 (v10.3)

Page 91: MicroBlaze プロセッサ リファレンス ガイド - Xilinx...MicroBlaze プロセッサ ガイドリファレンス japan.xilinx.com UG081 (v10.3)Xilinx is providing this product

プロセ ッサ ローカル バス (PLB) イン ターフ ェ イス

プロセ ッサ ローカル バス (PLB) イ ン ターフ ェ イス

MicroBlaze の PLBイ ンフ ァーフ ェ イ スは、バイ ト イネーブルが可能な 32 ビ ッ ト のマス タ と し てイ

ンプ リ メ ン ト されています。詳細は、『IBM 128-Bit Processor Local Bus Architectural Specification (v4.6)』 を参照し て く ださい。

オンチ ッ プ ペ リ フ ェ ラル バス (OPB) イン ターフ ェ イス

MicroBlaze の OPB イ ンタ ーフ ェ イ ス は、 バイ ト イ ネーブルが可能なマス タ と し てイ ンプリ メ ン

ト さ れていま す。 詳細は、『 OPB Usage in Xilinx FPGA』 を参照し てく ださ い。

ローカル メ モ リ バス (LMB) イン ターフ ェ イス

LMB は、主にオンチ ッ プ ブロ ッ ク RAM にア ク セスする ために使用する同期バスです。 こ のバスで

は、 小数の制御信号と単純なプロ ト コルを 1 個使用し て、 ローカル ブロ ッ ク RAM に 1 ク ロ ッ ク

サイ クルでア ク セスでき ます。 LMB の信号 と その定義を次の表に示し ます。 LMB 信号はすべてア

ク テ ィ ブ High です。

LMB 信号のイ ン ターフ ェ イス

Dbg_Stop コ ア I 無条件でパイプラ イ ンを停止し ます。 立ち上が りエ ッ ジの検出パルスは 低 Clk ク ロ ッ ク サイ クル間保持する必要あ り 。 C_DEBUG_ENABLED が 1 に 設定される と きのみ影響を受けます。

Dbg_... コ ア IO MDM からのデバッ グ信号 (表 2-9 参照)

Trace_... コ ア O リ アルタ イ ム ハード ウ ェア解析用の ト レース信号 (表 2-10 参照)

1. Reset 信号および Mb_Reset 信号の働きは同じですが、 Reset は主に OPB イ ン ターフ ェ イ スで、Mb_Reset は PLB イ ン ターフ ェ イ スで使用されます。

2. MicroBlaze is のデザイ ンは Clk 信号に同期し ます。 ただ し、 ハー ド ウ ェ ア デバッ グ ロ ジ ッ クは Dbg_Clk 信号に同期し ます。 ハード ウ ェア デバ ッ グ ロ ジ ッ ク が使用されない場合は Clk 信号には 小周波数の制限はあ り ません。 使用される場合はこれらの ク ロ ッ ク領域間で信号が送信されますが、 Clk 信号の周波数を Dbg_Clk の周波数よ り も高 く する必要があ り ます。

表 2-1 : MicroBlaze コア I/O のサマ リ (続き)

信号イ ン ターフ ェ イス

I/O 説明

表 2-2 : 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 書き込み中

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド japan.xilinx.com 91UG081 (v10.3)

Page 92: MicroBlaze プロセッサ リファレンス ガイド - Xilinx...MicroBlaze プロセッサ ガイドリファレンス japan.xilinx.com UG081 (v10.3)Xilinx is providing this product

第 2 章 : MicroBlaze の信号イ ン ターフ ェ イス

Addr[0:31]

ア ド レ ス バスはコ アの出力で、 現在の転送によ り ア ク セス されている メ モ リ ア ド レ ス を示し ます。

こ のバスは AS が High の と きのみ有効です。複数のク ロ ッ ク サイ クルが必要 と なる ア ク セスでは、

Addr[0:31] はその転送の 初の ク ロ ッ ク サイ クルでのみ有効です。

Byte_Enable[0:3]

バイ ト イ ネーブル信号はコ アの出力で、 有効なデータ を含むデータ バスのバイ ト レーンを示し ま

す。 Byte_Enable[0:3] は、AS が High の と きのみ有効です。複数の ク ロ ッ ク サイ クルが必要と なる

ア ク セスでは、Byte_Enable[0:3] はその転送の 初の ク ロ ッ ク サイ クルでのみ有効です。 次の表に、

Byte_Enable[0:3] の有効な値を示し ます。

Data_Write[0:31]

書き込みデータ バスはコ アの出力で、 メ モ リ に書き込まれるデータが含まれています。 こ のバスは

AS が High の と きにのみ有効です。 Byte_Enable[0:3] で指定されるバイ ト レーンにのみ有効な

データが含まれています。

AS

ア ド レ ス ス ト ローブはコ アの出力で、転送の開始を示し、ア ド レ ス バスおよびバイ ト イ ネーブルを

有効にし ます。 こ のス ト ローブは、転送の 初の ク ロ ッ ク サイ クルでのみ High にな り 、その後次の

転送の開始まで Low にな り ます。

Read_Strobe

読み出し ス ト ローブはコ アの出力で、読み出し転送が進行中であ る こ と を示し ます。 こ の信号は、転

送の 初のク ロ ッ ク サイ クルで High にな り 、 Ready 信号が High になった後の ク ロ ッ ク サイ クル

Data_Read[0:31] Data_Read[0:31] Instr[0:31] I 読み出しデータ バス

Ready DReady IReady I 次の転送の準備完了

Clk Clk Clk I バス ク ロ ッ ク

表 2-2 : LMB バスの信号

信号データ

イ ン ターフ ェ イス命令

イン ターフ ェ イスタ イプ 説明

表 2-3 : Byte_Enable[0:3] での有効値

使用されるバイ ト レーン

Byte_Enable[0:3] Data[0:7] Data[8:15] Data[16:23] Data[24:31]

0000

0001 x

0010 x

0100 x

1000 x

0011 x x

1100 x x

1111 x x x x

92 japan.xilinx.com MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ドUG081 (v10.3)

Page 93: MicroBlaze プロセッサ リファレンス ガイド - Xilinx...MicroBlaze プロセッサ ガイドリファレンス japan.xilinx.com UG081 (v10.3)Xilinx is providing this product

ローカル メ モ リ バス (LMB) イン ターフ ェ イス

まで High のま まになる場合があ り ます。 次の ク ロ ッ ク サイ クルで新たな読み出し転送が直接開始

される場合は、 Read_Strobe は High のま まにな り ます。

Write_Strobe

書き込みス ト ローブはコ アの出力で、書き込み転送が進行中であ る こ と を示し ます。 こ の信号は、転

送の 初のク ロ ッ ク サイ クルで High にな り 、 Ready 信号が High になった後の ク ロ ッ ク サイ クル

まで High のま まになる場合があ り ます。 次の ク ロ ッ ク サイ クルで新たな書き込み転送が直接開始

される場合は、 Write_Strobe は High のま まにな り ます。

Data_Read[0:31]

読み出しバスはコ アへの入力で、 メ モ リ から読み出されたデータ を含みます。 Data_Read[0:31] は、

Ready 信号が High の と きの ク ロ ッ クの立ち上が り エ ッ ジで有効です。

Ready

Ready 信号はコ アへの入力で、現在の転送が完了し 、次のク ロ ッ ク サイ ク ルで次の転送が開始可能で

ある こ と を示し ま す。 こ の信号は、 ク ロ ッ ク の立ち上がり エッ ジでサンプリ ングさ れま す。 読み出し

では、こ の信号は Data_Read[0:31] バス が有効である こ と を示し 、書き 込みでは Data_Write[0:31] バ

ス がロ ーカル メ モリ に書き 込ま れたこ と を示し ま す。

Clk

LMB での動作は、 すべて MicroBlaze コ アの ク ロ ッ クに同期し ています。

LMB ト ラ ンザクシ ョ ン

次に LMB バスの動作の例を示し ます。

一般的な書き込み動作

図 2-2 : LMB での一般的な書き込み動作

Clk

Addr

Byte_Enable

Data_Write

AS

Read_Strobe

Write_Strobe

Data_Read

Ready

A0

1111

D0

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド japan.xilinx.com 93UG081 (v10.3)

Page 94: MicroBlaze プロセッサ リファレンス ガイド - Xilinx...MicroBlaze プロセッサ ガイドリファレンス japan.xilinx.com UG081 (v10.3)Xilinx is providing this product

第 2 章 : MicroBlaze の信号イ ン ターフ ェ イス

一般的な読み出し動作

連続書き込み動作

1 サイ クルの連続読み出し動作

図 2-3 : LMB の一般的な読み出し動作

図 2-4 : LMB での連続書き込み動作

図 2-5 : LMB での 1 サイ クルの連続読み出し動作

Clk

Addr

Byte_Enable

Data_Write

AS

Read_Strobe

Write_Strobe

Data_Read

Ready

A0

1111

D0

Clk

Addr

Byte_Enable

Data_Write

AS

Read_Strobe

Write_Strobe

Data_Read

Ready

A0 A2

BE0 BE2BE1

A1

Clk

Addr

Byte_Enable

Data_Write

AS

Read_Strobe

Write_Strobe

Data_Read

Ready

A0 A1 A2

BE0 BE1 BE2

D0 D1 D2

94 japan.xilinx.com MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ドUG081 (v10.3)

Page 95: MicroBlaze プロセッサ リファレンス ガイド - Xilinx...MicroBlaze プロセッサ ガイドリファレンス japan.xilinx.com UG081 (v10.3)Xilinx is providing this product

ローカル メ モ リ バス (LMB) イン ターフ ェ イス

読み出し /書き込み混合の連続動作

データの読み出しおよび書き込み操作

MicroBlaze のデータ側のバス イ ン ターフ ェ イ スでは、 次の転送をサポー ト するのに必要と なる読

み出し操作および書き込み操作が実行されます。

• ワード デバイ スへのバイ ト 、 ハーフ ワード、 ワー ド転送

• ハーフ ワード デバイ スへのバイ ト 、 ハーフ ワー ド転送

• バイ ト デバイ スへのバイ ト 転送

MicroBlaze では、指定デバイ スの転送サイ ズを超え る転送はサポー ト されていません。 これらの転

送では、MicroBlaze バス イ ン ターフ ェ イ スでサポー ト されていないダ イナ ミ ッ ク バス サイ ジング

および変換サイ クルが必要と な り ます。 読み出しサイ クルに対するデータ操作を表 2-4 に、 書き込

みサイ クルに対するデータ操作を表 2-5 に示し ます。

図 2-6 : 読み出し /書き込み混合の連続動作

Clk

Addr

Byte_Enable

Data_Write

AS

Read_Strobe

Write_Strobe

Data_Read

Ready

A0 A1

BE0 BE1

D1

D0

表 2-4 : 読み出しデータの操作 (レジス タ rD への読み込み)

レジス タ rD データ

ア ド レス[30:31]

Byte_Enable[0:3] 転送サイズ rD[0:7] rD[8:15] rD[16:23] rD[24:31]

11 0001 バイ ト Byte3

10 0010 バイ ト Byte2

01 0100 バイ ト Byte1

00 1000 バイ ト Byte0

10 0011 ハーフ ワード Byte2 Byte3

00 1100 ハーフ ワード Byte0 Byte1

00 1111 ワード Byte0 Byte1 Byte2 Byte3

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド japan.xilinx.com 95UG081 (v10.3)

Page 96: MicroBlaze プロセッサ リファレンス ガイド - Xilinx...MicroBlaze プロセッサ ガイドリファレンス japan.xilinx.com UG081 (v10.3)Xilinx is providing this product

第 2 章 : MicroBlaze の信号イ ン ターフ ェ イス

メ モ : その他の OPB マス タでは、MicroBlaze で許容されるバイ ト レーン配置での要件よ り も制限

が多い可能性があ り ます。 OPB のス レーブ デバイ スは、 通常 上位のバイ ト レーンに接続されて

いるバイ ト デバイ スおよび 上位のハーフ ワード レーンに接続されているハーフ ワード デバイ ス

に、 左揃えで接続されています。 MicroBlaze の操作ロジ ッ ク では、 こ の接続方法が完全にサポー ト

されています。

高速シンプレ ッ クス リ ン ク (FSL) イ ン ターフ ェ イス

FSL バスでは、出力 FIFO と入力 FIFO 間のポイ ン ト ツー ポイ ン ト 通信が可能です。 ジェネ リ ッ ク

FSL プロ ト コルの詳細は、 ザイ リ ン ク ス EDK IP の資料の データ シー ト (DS449) 『Fast Simplex Link (FSL) Bus』 を参照し て く ださ い。

マス タ FSL 信号のイ ン ターフ ェ イス

MicroBlaze では、 16 個までのマス タ FSL イ ン ターフ ェ イ ス を使用でき ます。 マス タ信号を表 2-6 に示し ます。

表 2-5 : 書き込みデータの操作 (レジス タ rD からの格納)

書き込みデータ バスのバイ ト

ア ド レス[30:31]

Byte_Enable[0:3] 転送サイズ Byte0 Byte1 Byte2 Byte3

11 0001 バイ ト rD[24:31]

10 0010 バイ ト rD[24:31]

01 0100 バイ ト rD[24:31]

00 1000 バイ ト rD[24:31]

10 0011 ハーフ ワード rD[16:23] rD[24:31]

00 1100 ハーフ ワード rD[16:23] rD[24:31]

00 1111 ワード rD[0:7] rD[8:15] rD[16:23] rD[24:31]

表 2-6 : マス タ FSL 信号

信号名 説明 VHDL の型 方向

FSLn_M_Clk ク ロ ッ ク std_logic 入力

FSLn_M_Write データが出力 FSL に書き込まれている

こ と を示すラ イ ト イ ネーブル信号

std_logic 出力

FSLn_M_Data 出力 FSL に書き込まれるデータ値 std_logic_vector 出力

FSLn_M_Control 出力 FSL に書き込まれる制御ビ ッ ト 値 std_logic 出力

FSLn_M_Full 出力 FIFO がフルであ る こ と を示すフル

ビ ッ ト

std_logic 入力

96 japan.xilinx.com MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ドUG081 (v10.3)

Page 97: MicroBlaze プロセッサ リファレンス ガイド - Xilinx...MicroBlaze プロセッサ ガイドリファレンス japan.xilinx.com UG081 (v10.3)Xilinx is providing this product

高速シンプレ ッ クス リ ン ク (FSL) イン ターフ ェ イス

スレーブ FSL 信号のイ ン ターフ ェ イス

MicroBlaze では、16 個までのス レーブ FSL イ ン ターフ ェ イ ス を使用でき ます。 ス レーブ FSL イ ン

ターフ ェ イ ス信号を表 2-7 に示し ます。

FSL ト ラ ンザク シ ョ ン

FSL バス書き込み動作

MicroBlaze によ る FSL バスへの書き込みは、 put 命令または putd 命令の 1 つを使用し て実行され

ます。 書き込みでは、 レジス タの内容が出力 FSL に転送されます。 こ の転送は通常、 FSL FIFO が

フルにな ら なければ、 ブロ ッ キング モード の書き込み (put および cput 命令) では 1 ク ロ ッ ク サイ

クルで完了し ます。 FSL FIFO がフルになる と、FSL フル フ ラ グが Low になる までプロセ ッ サがス

ト ールし ます。 接頭辞が n の ノ ンブロ ッ キング命令では、 FSL がフルでも、 転送は 1ク ロ ッ ク サイ

クルで完了し ます。 FSL がフルの場合、書き込みは実行されず、MSR のキ ャ リ ー ビ ッ ト が設定され

ます。

FSL バス読み出し動作

MicroBlaze によ る FSL バスから の読み出しは、 get 命令または getd 命令の 1 つを使用し て実行さ

れます。 読み出しが実行される と、 入力 FSL の内容が汎用レジス タに転送されます。 こ の転送は通

常、FSL FIFO にデータが存在すれば、ブロ ッ キング モード の読み出しでは 2 ク ロ ッ ク サイ クルで

完了し ます。 FSL FIFO が空になる と、FSL にデータが存在する こ と を示すフ ラ グが High になる ま

でプロセ ッ サがこ の命令でス ト ールし ます。 接頭辞が n の ノ ンブロ ッ キング モード命令では、 FSL が空であ るかど う かにかかわらず、 転送は 2 ク ロ ッ ク サイ クルで完了し ます。 FSL が空の場合、

データ転送は実行されず、 MSR のキ ャ リ ー ビ ッ ト が設定されます。

直接 FSL 接続

直接 FSL 接続を使用する と、 FSL バス を使用する必要がな く な り ます。 直接接続には FSL バス

FIFO が含まれないため、 2 つの接続された IP コ ア間にバッ フ ァ を必要 と し ない場合に有用です。

バッ フ ァ を使用し なければ、通信レ イ テンシおよび必要な イ ンプ リ メ ンテーシ ョ ン リ ソースが削減

されます。

各 MicroBlaze FSL イ ンタ ーフェ イ ス で、直接 FSL 接続ま たは FSL バス のいずれかを使用でき ま す。

表 2-7 : スレーブ FSL 信号

信号名 説明 VHDL の型 方向

FSLn_S_Clk ク ロ ッ ク std_logic 入力

FSLn_S_Read データが入力 FSL から読み出

されている こ と を示す読み出し

ACK 信号

std_logic 出力

FSLn_S_Data 入力 FSL の一番上で現在読み

出し可能なデータ値

std_logic_vector 入力

FSLn_S_Control 入力 FSL の一番上で現在読み

出し可能な制御ビ ッ ト 値

std_logic 入力

FSLn_S_Exists 入力 FSL にデータが存在する

こ と を示すフ ラ グ

std_logic 入力

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド japan.xilinx.com 97UG081 (v10.3)

Page 98: MicroBlaze プロセッサ リファレンス ガイド - Xilinx...MicroBlaze プロセッサ ガイドリファレンス japan.xilinx.com UG081 (v10.3)Xilinx is providing this product

第 2 章 : MicroBlaze の信号イ ン ターフ ェ イス

MicroBlaze DWFSL イ ン ターフ ェ イ スは直接 FSL 接続上のイ ニシエータで、 DWFSL ターゲ ッ ト

にのみ接続でき ます。 DWFSL イ ニシエータ と ターゲ ッ ト の信号は同名で、表 2-6 に示されるMFSL 信号と同一です。 MicroBlaze では DWFSL イ ン ターフ ェ イ ス を使用し て、put または putd 命令のい

ずれかでデータ を ターゲ ッ ト に書き込みます。

MicroBlaze DRFSL イ ン ターフ ェ イ スは直接 FSL 接続上のターゲ ッ ト で、DRFSL イ ニシエータに

のみ接続でき ます。 DRFSL イ ニシエータ と ターゲ ッ ト の信号は同名で、表 2-7 に示される SFSL 信

号と同一です。 MicroBlaze では DRFSL イ ン ターフ ェ イ ス を使用し て、get 命令または getd 命令の

いずれかでデータ を イ ニシエータから読み出し ます。

XCL (ザイ リ ン ク ス CacheLink) イ ン ターフ ェ イ スは直接 FSL 接続を使用し てイ ンプ リ メ ン ト され

ます。

98 japan.xilinx.com MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ドUG081 (v10.3)

Page 99: MicroBlaze プロセッサ リファレンス ガイド - Xilinx...MicroBlaze プロセッサ ガイドリファレンス japan.xilinx.com UG081 (v10.3)Xilinx is providing this product

ザイ リ ン ク ス CacheLink (XCL) イン ターフ ェ イス

ザイ リ ン クス CacheLink (XCL) イン ターフ ェ イス

ザイ リ ン ク ス CacheLink (XCL) は、 外部 メ モ リ にア ク セスする ためのハイ パフ ォーマン ス ソ

リ ューシ ョ ンです。 CacheLink イ ン ターフ ェ イ スは、 MPMC などの統合 FSL バッ フ ァ を使用し て

メ モ リ コ ン ト ローラに直接接続する よ う に設計されています。 こ の方法を使用する と イ ン ス タ ンシ

エーシ ョ ン数も 少にな り 、 レ イ テンシが 短にな り ます (図 2-7 を参照)。

図 2-7 : 統合 FSL バッ フ ァ を使用し た CacheLink の接続 (命令キャ ッ シュのみを使用)

こ のイ ンタ ーフェ イ ス は、 キャ ッ シュ をイ ネーブルにし たと き のみ使用可能です。 命令側またはデー

タ 側のいずれか一方のみに CacheLink のキャ ッ シュ を使用する こ と も でき ます。

メ モ リ ロ ケーシ ョ ンのア ク セス方法は、 命令キ ャ ッ シュではパラ メータ C_ICACHE_ALWAYS_ USED、 データ キャ ッ シュ ではパラ メ ータ C_DCACHE_ALWAYS_USED によ って決ま り ま す。 パ

ラ メ ータ が 1 に設定さ れている 場合は、キャ ッ シュ 可能な範囲内のメ モリ は常に CacheLink を介し て

アク セス さ れ、0 に設定さ れている 場合は、ソ フト ウ ェ アでオフに設定さ れている 場合 (MSR[DCE]=0 または MSR[ICE]=0) に、 PLB または OPB を使用し てア ク セス されます。

キ ャ ッ シュ可能な範囲外の メ モ リ ロ ケーシ ョ ンは、PLB、OPB または LMB を使用し てア ク セス さ

れます。

CacheLink キ ャ ッ シュ コ ン ト ローラ では、選択されているプロ ト コルによ り 、ク リ テ ィ カル ワード

フ ァース ト または リ ニア フ ェ ッチを使用し て、 4 または 8 キ ャ ッ シュ ラ イ ンが処理されます。 ま

た、 キ ャ ッ シュへのア ク セスに PLB または OPB バス を使用し ないため、 キ ャ ッ シュ以外の メ モ リ

ア ク セスの競合が減少し ます。

BEGIN microblaze ... BUS_INTERFACE IXCL = myIXCL ...

END

BEGIN mch_opb_sdram ... BUS_INTERFACE MCH0 = myIXCL ...

END

メ モ リ

MicroBlaze

コ ン ト ローラF

SL

FS

L

回路図 MHS コー ド例

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド japan.xilinx.com 99UG081 (v10.3)

Page 100: MicroBlaze プロセッサ リファレンス ガイド - Xilinx...MicroBlaze プロセッサ ガイドリファレンス japan.xilinx.com UG081 (v10.3)Xilinx is providing this product

第 2 章 : MicroBlaze の信号イ ン ターフ ェ イス

CacheLink 信号のイ ン ターフ ェ イス

MicroBlaze の CacheLink 信号を表 2-8 に示し ます。

表 2-8 : MicroBlaze の CacheLink 信号

信号名 説明 VHDL の型 方向

ICACHE_FSL_IN_Clk 命令側戻 り 読み出しデータ FSL への ク ロ ッ ク出力

std_logic 出力

ICACHE_FSL_IN_Read 命令側戻 り 読み出しデータ FSL への読み出し信号

std_logic 出力

ICACHE_FSL_IN_Data 命令側戻 り 読み出しデータ FSL からの読み出しデータ

std_logic_vector

(0 ~ 31)入力

ICACHE_FSL_IN_Control 命令側戻 り 読み出しデータ FSL からの FSL 制御ビ ッ ト (将来の

使用に予約)

std_logic 入力

ICACHE_FSL_IN_Exists 命令側戻 り FSL に読み出し

データが存在

std_logic 入力

ICACHE_FSL_OUT_Clk 命令側読み出し ア ク セス FSL へ

の ク ロ ッ ク出力

std_logic 出力

ICACHE_FSL_OUT_Write 命令側読み出し ア ク セス FSL に

新規キ ャ ッ シュ ミ ス ア ク セス

要求を書き込み

std_logic 出力

ICACHE_FSL_OUT_Data 命令側読み出し ア ク セス FSL の

新規キ ャ ッ シュ ミ ス ア ク セス (ア ド レ ス)

std_logic_vector

(0 ~ 31)出力

ICACHE_FSL_OUT_Control 命令側読み出し ア ク セス FSL へ

の FSL 制御ビ ッ ト (将来の使用

に予約)

std_logic 出力

ICACHE_FSL_OUT_Full 命令側読み出 し ア ク セ ス 用 の

FSL ア ク セス バ ッ フ ァはフル

std_logic 入力

DCACHE_FSL_IN_Clk デー タ 側戻 り 読み出 し デー タ

FSL へのク ロ ッ ク出力

std_logic 出力

DCACHE_FSL_IN_Read デー タ 側戻 り 読み出 し デー タ

FSL への読み出し信号

std_logic 出力

DCACHE_FSL_IN_Data デー タ 側戻 り 読み出 し デー タ

FSL からの読み出しデータ

std_logic_vector

(0 ~ 31)入力

DCACHE_FSL_IN_Control デー タ 側戻 り 読み出 し デー タ

FSL からの FSL 制御ビ ッ ト

std_logic 入力

DCACHE_FSL_IN_Exists データ側戻 り FSL に読み出し

データが存在

std_logic 入力

DCACHE_FSL_OUT_Clk データ側読み出し ア ク セス FSL への ク ロ ッ ク出力

std_logic 出力

100 japan.xilinx.com MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ドUG081 (v10.3)

Page 101: MicroBlaze プロセッサ リファレンス ガイド - Xilinx...MicroBlaze プロセッサ ガイドリファレンス japan.xilinx.com UG081 (v10.3)Xilinx is providing this product

ザイ リ ン ク ス CacheLink (XCL) イン ターフ ェ イス

CacheLink ト ラ ンザクシ ョ ン

すべての CacheLink ア ク セスは、 FSL FIFO ベースの ト ラ ンザク シ ョ ン プロ ト コルに従います。

• ア ク セス情報は、 FSL データおよび制御信号 (DCACHE_FSL_OUT_Data、 DCACHE_FSL_ OUT_Control、 ICACHE_FSL_IN_Data、 および ICACHE_FSL_IN_Control など) を介し てエ

ン コード されます。

• 情報は、ラ イ ト イネーブル信号 (DCACHE_FSL_OUT_Write など) が High になる と送信また

は保存されます。

• 書き込みは、フル信号が非ア ク テ ィ ブ (DCACHE_FSL_OUT_Full = 0 など) の場合にのみ可能

です。 こ のフル信号は、 命令キ ャ ッ シュ コ ン ト ローラ では使用されません。

• ICACHE_FSL_IN_Read および DCACHE_FSL_IN_Read の使用はどのイ ン ターフ ェ イ ス プ

ロ ト コルが選択されているかによ って決ま り ます。

♦ IXCL およ び DXCL プロ ト コ ルが選択さ れている 場合、 読み出し 信号を High にする と 情報が受信さ れ ( 読み込ま れ ) ます。 送信側が新し いデータ がある こ と を通知する と き 以外、 信号は Low です。

♦ IXCL2 およ び DXCL2 プロ ト コ ルが選択さ れている 場合、 読み出し 信号が Low になる と 、受信側が新し いデータ を受信でき ないこ と を示し ます。 読み出し 信号が High の場合にのみ、 新し いデータ は読み込まれ、 送信側はデータ が存在する こ と を通知し ま す。

• 読み出し は、新し いデータ が存在する (ICACHE_FSL_IN_Exists = 1 など ) 場合にのみ可能です。

ジェネ リ ッ ク FSL プロ ト コルの詳細は、 ザイ リ ン ク ス EDK IP の資料の データ シー ト (DS449) 『Fast Simplex Link (FSL) Bus』 を参照し て く ださい。

CacheLink では、 キ ャ ッ シュ コ ン ト ロール 1 つに対し て受信 (ス レーブ) FSL と送信 (マス タ) FSL が 1 つずつ使用されます。 送信 FSL は ア ク セス要求を送信するのに使用され、 受信 FSL は要求さ

れたキ ャ ッ シュ ラ イ ンを受信するのに使用されます。 また、 CacheLink では、 ト ラ ンザク シ ョ ン情

報に対し て、 FSL データおよび制御信号を介し た特定のエン コード手法が使用されます。

DCACHE_FSL_OUT_Write データ側読み出し ア ク セス FSL に新規キ ャ ッ シュ ミ ス ア ク セス

要求を書き込み

std_logic 出力

DCACHE_FSL_OUT_Data データ側読み出し ア ク セス FSL へのキ ャ ッ シュ ミ ス ア ク セス (読み出し ア ド レ ス または書き

込みア ド レ ス + 書き込みデータ

+ バイ ト ラ イ ト イネーブル + バース ト 書き込みエン コード )

std_logic_vector

(0 ~ 31)出力

DCACHE_FSL_OUT_Control データ側読み出し ア ク セス FSL への FSL 制御ビ ッ ト 。 読み出し / 書き込み、バイ ト イ ネーブル、お

よ びバース ト 書 き 込みエン コ ー

ド用のア ド レ ス ビ ッ ト [30 ~

31]

std_logic 出力

DCACHE_FSL_OUT_Full デー タ 側読み出 し ア ク セ ス用の

FSL ア ク セス バ ッ フ ァはフル

std_logic 入力

表 2-8 : MicroBlaze の CacheLink 信号 (続き)

信号名 説明 VHDL の型 方向

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド japan.xilinx.com 101UG081 (v10.3)

Page 102: MicroBlaze プロセッサ リファレンス ガイド - Xilinx...MicroBlaze プロセッサ ガイドリファレンス japan.xilinx.com UG081 (v10.3)Xilinx is providing this product

第 2 章 : MicroBlaze の信号イ ン ターフ ェ イス

CacheLink プロ ト コルでの読み出しに使用される キ ャ ッ シュ ラ イ ンの長さは 4 または 8 ワード で

す。 各キ ャ ッ シュ ラ イ ンはク リ テ ィ カル ワード フ ァース ト でフ ェ ッチされるか、 または リ ニアに

フ ェ ッチされますが、 これは、 どのイ ン ターフ ェ イ ス プロ ト コルが選択されているかによ り ます。

• ク リ テ ィ カル ワード フ ァース ト は、 IXCL および DXCL プロ ト コルで使用され、C_ICACHE_INTERFACE = 0 および C_DCACHE_INTERFACE = 0 と それぞれ指定されている場合に選択されます。 各キ ャ ッ シュ ラ イ ンは、 ク リ テ ィ カル ワード から始ま り ます。 つま り 、 ア ド レ ス 0x348 へのア ク セスが 4 ワード キ ャ ッ シュ ラ イ ンの ミ スであった場合、 戻 りキ ャ ッ シュ ラ イ ンのア ド レ ス シーケン スは、 0x348、 0x34c、 0x340、 0x344 と な り ます。キ ャ ッ シュ コ ン ト ローラによ り 、 初のワード が実行ユニ ッ ト に送信され、 キ ャ ッ シュ メ モリ にも保存されます。 これによ り 、 初のワード が戻る と同時に実行が再開し ます。 その後、キ ャ ッ シュ ラ イ ンに残 り の 3 つまたは 7 つのワード が保存されます。

• リ ニア フ ェ ッ チは、 IXCL2 および DXCL2 プロ ト コルで使用され、C_ICACHE_INTERFACE = 1 および C_DCACHE_INTERFACE = 1 と それぞれ指定されている場合に選択されます。 CacheLink のア ド レ ス出力は、 キ ャ ッ シュ ラ イ ン サイ ズに調整されます。 つま り 、 ア ド レ ス 0x348 へのア ク セスは、 4 ワード のキ ャ ッ シュ ラ イ ンで ミ ス と なり 、 CacheLink のア ド レ ス出力が 0x340 と な り ます。 キ ャ ッ シュ コ ン ト ローラは、 キ ャ ッシュ メ モ リ にデータ を保存し、 要求されたワー ド を実行ユニ ッ ト に随時転送し ます。

パラ メ ータ C_DCACHE_USE_WRITEBACK が 1 に設定されている場合、 書き込み操作は、 バー

ス ト 書き込みおよびシングル ワード を使用し て、 キ ャ ッ シュ ラ イ ン全体を保存する こ と ができ ま

す。各キ ャ ッ シュ ラ イ ンは常に リ ニアに保存され、CacheLink のア ド レ ス出力はキ ャ ッ シュ ラ イ ン

サイ ズに調整されます。パラ メータ C_DCACHE_USE_WRITEBACK が 0 に設定されている場合、

CacheLink のすべての書き込み操作はシングル ワード によ る ものです。ラ イ ト バッ ク が使用されて

いる場合、 バース ト 書き込みは DXCL2 プロ ト コルでのみ使用可能なので、 C_DCACHE _INTERFACE は 1 に設定する必要があ り ます。

命令キャ ッ シ ュの読み出し ミ ス

読み出し ミ スが発生する と、 キ ャ ッ シュ コ ン ト ローラは次のシーケンス を実行し ます。

1. 制御ビ ッ ト を Low (ICACHE_FSL_OUT_Control = 0) に設定し て読み出し ア ク セス を示し、

ワード を揃えた (1) またはキ ャ ッ シ ュ ラ イ ンでそろえた ミ ス ア ド レ ス を ICACHE_FSL_OUT _Data に書き込みます。

2. データが存在する こ と を示す ICACHE_FSL_IN_Exists が High にな る まで待機し ます。

メ モ : ICACHE_FSL_IN_Exists が High になる前に、少な く と も 1 ク ロ ッ ク サイ クル間 wait 状態

であ る必要があ り ます。

IXCL プロ ト コル (ク リ テ ィ カル ワード フ ァース ト )

3. ICACHE_FSL_IN_Data からのワード をキ ャ ッ シュに保存し ます。

4. ク リ テ ィ カル ワード を実行ユニ ッ ト に送信し、 実行を再開し ます。

5. キ ャ ッ シュ ラ イ ンの残 り の 3 ワード に対し、 手順 3 ~ 4 を繰 り 返し ます。

IXCL2 プロ ト コル ( リ ニア フ ェ ッチ)

3. ICACHE_FSL_IN_Data からのワード をキ ャ ッ シュに保存し ます。

4. 関連ワード を実行ユニ ッ ト に送信し、 実行を再開し ます。

5. ICACHE_FSL_IN_Data からの残 り のワード をキ ャ ッ シュに保存し ます。

1. バイ ト およびハーフ ワー ド の読み出し ミ スでは、 完全なワー ド が返され、 キ ャ ッ シ ュ コ ン ト ローラ によ り 実行ユ

ニ ッ ト に正しいバイ ト が送信されます。

102 japan.xilinx.com MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ドUG081 (v10.3)

Page 103: MicroBlaze プロセッサ リファレンス ガイド - Xilinx...MicroBlaze プロセッサ ガイドリファレンス japan.xilinx.com UG081 (v10.3)Xilinx is providing this product

ザイ リ ン ク ス CacheLink (XCL) イン ターフ ェ イス

データ キャ ッ シュの読み出し ミ ス

1. DCACHE_FSL_OUT_Full = 1 の場合、 こ の信号が Low になる まで動作を ス ト ールし ます。

2. 制御ビ ッ ト を Low (DCACHE_FSL_OUT_Control = 0) に設定し て読み出し ア ク セス を示し、

ワード に揃えた(1)またはキ ャ ッ シュ ラ イ ンで揃えた ミ ス ア ド レ ス を DCACHE_FSL_OUT _Data に書き込みます。

3. データが存在する こ と を示す DCACHE_FSL_IN_Exists が High になる まで待機し ます。

メ モ : DCACHE_FSL_IN_Exists が High になる前に、少な く と も 1 ク ロ ッ ク サイ クル間 wait 状態

であ る必要があ り ます。

DXCL プロ ト コル (ク リ テ ィ カル ワード フ ァース ト )

4. DCACHE_FSL_IN_Data からのワード をキ ャ ッ シュに保存し ます。

5. ク リ テ ィ カル ワード を実行ユニ ッ ト に送信し、 実行を再開し ます。

6. キ ャ ッ シュ ラ イ ンの残 り の 3 ワード または 7 ワード に対し、 手順 4 ~ 5を繰 り 返し ます。

DXCL2 プロ ト コル ( リ ニア フ ェ ッチ)

3. DCACHE_FSL_IN_Data からのワード をキ ャ ッ シュに保存し ます。

4. 要求されたワード を実行ユニ ッ ト に送信し、 実行を再開し ます。

5. DCACHE_FSL_IN_Data からの残 り のワード をキ ャ ッ シュに保存し ます。

データ キャ ッ シュ書き込み

C_DCACHE_INTERFACE が 1 に設定されている場合、 CacheLink はバース ト 書き込みまたはシ

ングル ワード書き込みを実行する こ と ができ ます。 C_DCACHE_USE_WRITEBACK が 1 に設定

されている場合、 キ ャ ッ シュ ラ イ ン全体が有効です。

C_DCACHE_USE_WRITEBACK が ク リ ア されて 0 になる場合、 データ キ ャ ッ シュへの書き込み

は常にラ イ ト スルーなので、 キ ャ ッ シュのデータ有無にかかわらず、 CacheLink を介し た書き込み

が行われます。

DXCL2 プロ ト コルが選択されている場合、バース ト キ ャ ッ シュ ラ イ ン書き込みで、キ ャ ッ シュ コ

ン ト ローラは次のシーケン ス を実行し ます。

1. DCACHE_FSL_OUT_Full = 1 の場合、 こ の信号が Low になる まで動作を停止し ます。

2. DCACHE_FSL_OUT_Data へのア ド レ スにキ ャ ッ シュ を揃えた場合、 制御ビ ッ ト を High (DCACHE_FSL_OUT_Control = 1) に設定し て書き込みア ク セス を示し ます。こ のア ド レ スの

下位の 2 ビ ッ ト (30:31) は、0b10=burst のバース ト ア ク セス をエン コードするために使用さ

れます。シングル バイ ト 書き込みからのバース ト ア ク セス を隔離するには、ステ ッ プ 4 の 初

のデータ ワード の制御ビ ッ ト は、 バース ト ア ク セスに対し、 Low (DCACHE_FSL_OUT _Control = 0) にな り ます。

3. DCACHE_FSL_OUT_Full = 1 の場合、 こ の信号が Low になる まで動作を停止し ます。

4. 保存するデータ を DCACHE_FSL_OUT_Data に書き込みます。 制御ビ ッ ト はバース ト ア ク セ

スに対し、 Low (DCACHE_FSL_OUT_Control = 0) です。

5. キ ャ ッ シュ ラ イ ンの後続ワード に対し て手順 3 および 4 を繰 り 返し ます。

DXCL または DXCL2 プロ ト コルでは、 シングル ワード書き込みで、 キ ャ ッ シュ コ ン ト ローラは

次のシーケン ス を実行し ます。

1. DCACHE_FSL_OUT_Full = 1 の場合、 こ の信号が Low になる まで動作を停止し ます。

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド japan.xilinx.com 103UG081 (v10.3)

Page 104: MicroBlaze プロセッサ リファレンス ガイド - Xilinx...MicroBlaze プロセッサ ガイドリファレンス japan.xilinx.com UG081 (v10.3)Xilinx is providing this product

第 2 章 : MicroBlaze の信号イ ン ターフ ェ イス

2. CACHE_FSL_OUT_Data に ミ ス し たア ド レ ス を書き込み、 制御ビ ッ ト を High (DCACHE _FSL_OUT_Control = 1) に設定し て書き込みア ク セス を示し ます。0b00=byte0、0b01=byte1、

halfword0、 0x10=byte2、 0x11=byte3、 halfword1 などのバイ ト イネーブルおよびハーフ ワー

ド イ ネーブルのエン コード には、ア ド レ スの 下位ビ ッ ト (30:31) の 2 ビ ッ ト が使用されます。

手順 4 のデータの制御ビ ッ ト によ ってハーフ ワード またはバイ ト ア ク セスのいずれかが選択

されます。

3. DCACHE_FSL_OUT_Full = 1 の場合、 こ の信号が Low になる まで動作を停止し ます。

4. 保存するデータ を DCACHE_FSL_OUT_Data に書き込みます。バイ ト およびハーフ ワード ア

ク セスでは、データはバイ ト レーンに書き込まれます。バイ ト は 4 つのバイ ト レーンすべてに、

ハーフ ワード は両方のハーフ ワード レーンに書き込まれます。バース ト ア ク セスから隔離する

には、 制御ビ ッ ト は、 ワードおよびハーフ ワード ア ク セスでは Low (DCACHE_FSL_OUT_Control = 0)、 バイ ト ア ク セスでは High であ る必要があ り ます。 ワー

ド ア ク セス とハーフ ワード ア ク セスは、 ア ド レ スの 下位ビ ッ ト で区別でき ます。 0 の場合は

ワード で、 1 の場合はハーフ ワード です。

デバッ グ イ ン ターフ ェ イス

MicroBlaze のデバ ッ グ イ ン ターフ ェ イ スは、 ザイ リ ン ク スのマイ ク ロプロセ ッ サ デバッ グ モ

ジュール (MDM) IP コ ア と共に機能する よ う に設計されています。 MDM は、FPGA の JTAG ポー

ト を介し て Xilinx Microprocessor Debugger (XMD) によ り 制御し ます。 MDM では、同時に複数の

MicroBlaze プロセ ッ サを制御でき ます。 MicroBlaze のデバッ グ信号は、 DEBUG バスにグループ

化されています。 こ の信号を表 2-9 に示し ます。

表 2-9 : 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 入力

Dbg_Shift1

1. MicroBlaze v7.00 では Dbg_Shift が追加され、 Debug_Rst は DEBUG バスに含まれる よ う にア ッ プデー トされています。

MDM からの JTAG BSCAN シ

フ ト 信号

std_logic 入力

Dbg_Capture MDM から の JTAG BSCAN キ ャプチャ信号

std_logic 入力

Dbg_Update MDM から の JTAG BSCAN ア ッ プデー ト 信号

std_logic 入力

Debug_Rst1 MDM から のリ セッ ト 信号 (ア

ク ティ ブ High)。 1 Clk ク ロ ッ

ク サイ ク ル以上保持する 必要

あり 。

std_logic 入力

104 japan.xilinx.com MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ドUG081 (v10.3)

Page 105: MicroBlaze プロセッサ リファレンス ガイド - Xilinx...MicroBlaze プロセッサ ガイドリファレンス japan.xilinx.com UG081 (v10.3)Xilinx is providing this product

ト レース イン ターフ ェ イス

ト レース イ ン ターフ ェ イス

MicroBlaze コ アは、 ト レースの目的で多数の内部信号を送信し ます。 こ の信号のイ ン ターフ ェ イ ス

は標準化されておらず、 プロセ ッ サの新しい リ ビジ ョ ンでは、 同じ信号の選択または機能がサポー

ト されない可能性があ り ます。 これらの信号にはカス タ ム ロジ ッ ク を設計するのではな く 、 ザイ リ

ン ク スの解析用 IP を使用する こ と をお勧めし ます。 ト レース信号は、 TRACE バスにグループ化さ

れています。 MicroBlaze v7.00 向けに更新されている ト レース信号を表 2-10 に、ト レースの例外の

タ イプを表 2-11 に示し ます。 未使用の例外はすべて予約済みです。

表 2-10 : MicroBlaze ト レース信号

信号名 説明 VHDL の型 方向

Trace_Valid_Instr プロセ ッ サ実行段の有効な命令 std_logic 出力

Trace_Instruction1 命令コード std_logic_vector

(0 ~ 31)

出力

Trace_PC1 プロ グ ラ ム カウ ン タ std_logic_vector

(0 ~ 31)

出力

Trace_Reg_Write1 レジス タ フ ァ イルに書き込む命令 std_logic 出力

Trace_Reg_Addr1 デス ティ ネーショ ン レ ジス タ アド レ ス std_logic_vector (0 ~ 4)

出力

Trace_MSR_Reg1 マシン ステータ ス レジス タ (MSR) std_logic_vector (0 ~ 14)2

出力

Trace_PID_Reg1,2 プロセス識別レジス タ std_logic_vector

(0 ~ 7)出力

Trace_New_Reg_Value1 デステ ィ ネーシ ョ ン レジス タのア ッ プ

デー ト 値

std_logic_vector (0 ~ 31)

出力

Trace_Exception_Taken1 例外の命令結果 std_logic 出力

Trace_Exception_Kind1,3 例外のタ イプ。 次の表を参照。 std_logic_vector (0 ~ 4)2

出力

Trace_Jump_Taken1 真であ る と評価された分岐命令 std_logic 出力

Trace_Delay_Slot1 分岐の遅延ス ロ ッ ト に含まれる命令 std_logic 出力

Trace_Data_Access1 有効なデータ側ア ク セス std_logic 出力

Trace_Data_Address1 データ側 メ モ リ ア ク セスのア ド レ ス std_logic_vector (0 ~ 31)

出力

Trace_Data_Write_Value1 有効なデータ側 メ モ リ 書き込みア ク

セス

std_logic_vector (0 ~ 31)

出力

Trace_Data_Byte_Enable1 有効なデータ側 メ モ リ ア ク セスのバイ

ト イ ネーブル

std_logic_vector (0 ~ 3)

出力

Trace_Data_Read1 データ側 メ モ リ ア ク セスは読み出し std_logic 出力

Trace_Data_Write1 データ側 メ モ リ ア ク セスは書き込み std_logic 出力

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド japan.xilinx.com 105UG081 (v10.3)

Page 106: MicroBlaze プロセッサ リファレンス ガイド - Xilinx...MicroBlaze プロセッサ ガイドリファレンス japan.xilinx.com UG081 (v10.3)Xilinx is providing this product

第 2 章 : MicroBlaze の信号イ ン ターフ ェ イス

Trace_DCache_Req データ メ モ リ ア ド レ スはデータ キ ャ ッ シュ範囲内

std_logic 出力

Trace_DCache_Hit データ メ モ リ ア ド レ スはデータ キ ャ ッ シュに存在

std_logic 出力

Trace_ICache_Req 命令 メ モ リ ア ド レ スは命令キ ャ ッ シュ

範囲内

std_logic 出力

Trace_ICache_Hit 命令 メ モ リ ア ド レ スは メ モ リ キ ャ ッ

シュに存在

std_logic 出力

Trace_OF_PipeRun デコード段のパイプラ イ ン予約 std_logic 出力

Trace_EX_PipeRun4 実行段のパイプラ イ ン予約 std_logic 出力

Trace_MEM_PipeRun4 メ モ リ 段のパイプラ イ ン予約 std_logic 出力

Trace_MB_Halted2 パイプラ イ ンのデバッ グによ る停止 std_logic 出力

1. Trace_Valid_Instr = 1 の と きのみ有効

2. MicroBlaze v7.00 での変更 : Trace_MSR_Reg に 4 ビ ッ ト 追加、 Trace_PID_Reg の追加、Trace_MB_Halted の追加、 Trace_Exception Kind に 1 ビ ッ ト 追加

3. Trace_Exception_Taken = 1 の と きのみ有効

4. エ リ ア 適化 と の同時使用不可

表 2-11 : ト レースの例外のタ イプ

Trace_Exception_Kind [0:4] 説明

00000 高速シンプレ ッ ク ス リ ン クによ る例外1

1. MicroBlaze v7.00 で追加

00001 不整列データ ア ク セスによ る例外

00010 不正な op コー ド によ る例外

00011 命令バス に よ る例外

00100 データ バスによ る例外

00101 0 での除算に よ る例外

00110 FPU での例外

00111 特権命令によ る例外1

01010 割 り 込み

01011 マス ク不可の外部ブレーク

01100 マス ク可の外部ブレーク

10000 データ格納によ る例外1

10001 命令格納によ る例外1

10010 データ TLB ミ スによ る例外1

10011 命令 TLB ミ スによ る例外1

表 2-10 : MicroBlaze ト レース信号 (続き)

信号名 説明 VHDL の型 方向

106 japan.xilinx.com MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ドUG081 (v10.3)

Page 107: MicroBlaze プロセッサ リファレンス ガイド - Xilinx...MicroBlaze プロセッサ ガイドリファレンス japan.xilinx.com UG081 (v10.3)Xilinx is providing this product

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

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

MicroBlaze コ アは、ユーザーが柔軟にコ ンフ ィ ギ ュ レーシ ョ ンでき る よ う 開発されているため、 コ

ス ト およびパフ ォーマン スの要件を満たすよ う 設定でき ます。

コ ンフ ィ ギュ レーシ ョ ンには、 通常プロセ ッ サの特定の機能を イ ネーブルにし、 サイ ズを設定する

パラ メ ータ を使用し ます。 た と えば、命令キ ャ ッ シュは C_USE_ICACHE パラ メ ータ を設定する こ

と によ り イ ネーブルにし、 命令キ ャ ッ シュのサイ ズは C_DCACHE_BYTE_SIZE、 キ ャ ッ シュ可能

な メ モ リ 範囲は C_ICACHE_BASEADDR および C_ICACHE_HIGHADDR で指定し ます。

MicroBlaze v7.00 で使用可能なパラ メ ータ を表 2-12 に示し ます。 これらのパラ メ ータには以前の

バージ ョ ンの MicroBlaze では認識されないものも あ り ますが、 コ ンフ ィ ギュ レーシ ョ ンには後方

互換性があ り ます。

メ モ : 影付きの行は、 パラ メ ータが固定で変更でき ない こ と を示し ます。

表 2-12 : MPD パラ メ ータ

パラ メ ータ名 機能/説明 許容値 デフ ォル ト 値

ツールに

よる自動

割り当て

VHDL の型

C_FAMILY ターゲ ッ ト フ ァ ミ リ aspartan3 aspartan3a aspartan3adsp aspartan3e spartan3 spartan3a spartan3adsp spartan3an spartan3e spartan6 qrvirtex4 qvirtex4 virtex4 virtex5 virtex6

virtex5 あ り 文字列

C_DATA_SIZE データ サイ ズ 32 32 な し 整数

C_DINAMIC_BUS_SIZING 1 1 な し 整数

C_SCO ザイ リ ン ク ス内部 0 0 な し 整数

C_AREA_OPTIMIZED 低い命令スループ ッ ト でエ リ アを

適化す る た め の イ ン プ リ メ ン

テーシ ョ ンの選択

0、 1 0 整数

C_INTERCONNECT PLB イ ン ターコネ ク ト の選択 0、 1 1 整数

C_PVR プロセ ッサ バージ ョ ン レジス タ

のモー ド選択

0、 1、 2 0 整数

C_PVR_USER1 プロセ ッサ バージ ョ ン レジス タ

USER1 の定数

0x00 ~ 0xff 0x00 std_logic_vector (0 ~ 7)

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド japan.xilinx.com 107UG081 (v10.3)

Page 108: MicroBlaze プロセッサ リファレンス ガイド - Xilinx...MicroBlaze プロセッサ ガイドリファレンス japan.xilinx.com UG081 (v10.3)Xilinx is providing this product

第 2 章 : MicroBlaze の信号イ ン ターフ ェ イス

C_PVR_USER2 プロセ ッサ バージ ョ ン レジス タ

USER2 の定数

0x00000000

~ 0xffffffff

0x00000000 std_logic_vector (0 ~ 31)

C_RESET_MSR MSR の リ セ ッ ト 値 0x00、 0x20、

0x80、 0xa0

0x00 std_logic_vector

C_INSTANCE イ ンス タ ンス名 任意の イ ン ス

タ ンス名

microblaze あ り 文字列

C_D_PLB データ側 PLB イ ン ターフ ェ イ ス 0、 1 0 あ り 整数

C_D_OPB データ側 OPB イ ン ターフ ェ イ ス 0、 1 1 あ り 整数

C_D_LMB データ側 LMB イ ン ターフ ェ イ ス 0、 1 1 あ り 整数

C_I_PLB 命令側 PLB イ ン ターフ ェ イ ス 0、 1 0 あ り 整数

C_I_OPB 命令側 OPB イ ン ターフ ェ イ ス 0、 1 1 あ り 整数

C_I_LMB 命令側 LMB イ ン ターフ ェ イ ス 0、 1 1 あ り 整数

C_USE_BARREL バレル シフ タ を使用 0、 1 0 整数

C_USE_DIV ハー ド ウ ェ ア除算器を使用 0、 1 0 整数

C_USE_HW_MUL ハー ド ウ ェ ア乗算器を使用 0、 1、 2 1 整数

C_USE_FPU ハー ド ウ ェ ア浮動小数点ユニ ッ ト

を使用

0、 1、 2 0 整数

C_USE_MSR_INSTR MSRSET および MSRCLR 命令

を イネーブルにする

0、 1 1 整数

C_USE_PCMP_INSTR PCMPBF、 PCMPEQ、 PCMPNE命令を イネーブルにする

0、 1 1 整数

C_UNALIGNED_ EXCEPTIONS

不整列データ ア ク セスに対する例

外処理を イネーブルにする

0、 1 0 整数

C_ILL_OPCODE_ EXCEPTION

不正な op コード に対する例外処

理を イネーブルにする

0、 1 0 整数

C_IPLB_BUS_EXCEPTION IPLB バス エラーに対する例外処

理を イネーブルにする

0、 1 0 整数

C_DPLB_BUS_EXCEPTION DPLB バス エラーに対する例外処

理を イネーブルにする

0、 1 0 整数

C_IOPB_BUS_EXCEPTION IOPB バス エラーに対する例外処

理を イネーブルにする

0、 1 0 整数

C_DOPB_BUS_EXCEPTION DOPB バス エラーに対する例外

処理を イネーブルにする

0、 1 0 整数

表 2-12 : MPD パラ メ ータ (続き)

パラ メ ータ名 機能/説明 許容値 デフ ォル ト 値

ツールに

よる自動

割り当て

VHDL の型

108 japan.xilinx.com MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ドUG081 (v10.3)

Page 109: MicroBlaze プロセッサ リファレンス ガイド - Xilinx...MicroBlaze プロセッサ ガイドリファレンス japan.xilinx.com UG081 (v10.3)Xilinx is providing this product

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

C_DIV_ZERO_EXCEPTION 0 での除算および除算オーバーフ

ローに対する例外処理を イ ネーブ

ルにする

0、 1 0 整数

C_FPU_EXCEPTION ハー ド ウ ェ ア浮動小数点ユニ ッ ト

に関する例外処理を イ ネーブルに

する

0、 1 0 整数

C_OPCODE_0x0_ILLEGAL op コード 0x0 を不正な命令と し

て検出

0、 1 0 整数

C_FSL_EXCEPTION 高速シンプレ ッ ク ス リ ン クに対す

る例外処理を イネーブルにする

0、 1 0 整数

C_DEBUG_ENABLED MDM デバッ グ イ ン ターフ ェ イ ス 0、 1 0 整数

C_NUMBER_OF_PC_BRK ハー ド ウ ェ ア ブレーク ポイ ン ト 数 0 ~ 8 1 整数

C_NUMBER_OF_RD_ADDR_BRK

読み出し ア ド レ ス ウ ォ ッチポイ ン

ト 数

0 ~ 4 0 整数

C_NUMBER_OF_WR_ ADDR_BRK

書き込みア ド レ ス ウ ォ ッチポイ ン

ト 数

0 ~ 4 0 整数

C_INTERRUPT_IS_EDGE レベル/エッ ジ割 り 込み 0、 1 0 あ り 整数

C_EDGE_IS_POSITIVE 立ち上が り / 立ち下が り エ ッ ジ割

り 込み

0、 1 1 あ り 整数

C_FSL_LINKS1 FSL イ ン ターフ ェ イ スの数 0 ~ 16 0 あ り 整数

C_FSL_DATA_SIZE FSL のデータ バス サイ ズ 32 32 な し 整数

C_USE_EXTENDED_FSL_ INSTR

拡張 FSL 命令の使用をイ ネーブル

にする

0、 1 0 整数

C_ICACHE_BASEADDR 命令キ ャ ッ シュのベース ア ド レ ス 0x00000000 ~

0xFFFFFFFF0x00000000 std_logic_

vector

C_ICACHE_HIGHADDR 命令キ ャ ッ シュのハイ ア ド レ ス 0x00000000 ~

0xFFFFFFFF0x3FFFFFFF std_logic_

vector

C_USE_ICACHE 命令キ ャ ッ シュ 0、 1 0 整数

C_ALLOW_ICACHE_WR 命令キャ ッ シュ ラ イ ト イ ネーブル 0、 1 1 整数

C_ICACHE_LEN 命令キ ャ ッ シュ ラ イ ンの長さ 4、 8 4 整数

C_ICACHE_ALWAYS_USED 命令キ ャ ッ シュの CacheLink をす

べての メ モ リ ア ク セスに使用

0、 1 1 整数

表 2-12 : MPD パラ メ ータ (続き)

パラ メ ータ名 機能/説明 許容値 デフ ォル ト 値

ツールに

よる自動

割り当て

VHDL の型

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド japan.xilinx.com 109UG081 (v10.3)

Page 110: MicroBlaze プロセッサ リファレンス ガイド - Xilinx...MicroBlaze プロセッサ ガイドリファレンス japan.xilinx.com UG081 (v10.3)Xilinx is providing this product

第 2 章 : MicroBlaze の信号イ ン ターフ ェ イス

C_ICACHE_INTERFACE 命令キ ャ ッ シュ CacheLink イ ン ターフ ェ イ ス プロ ト コル

0 = IXCL

1 = IXCL2

0、 1 0 あ り 2 整数

C_ADDR_TAG_BITS 命令キ ャ ッ シュのア ド レ ス タ グ 0 ~ 25 17 あ り 整数

C_CACHE_BYTE_SIZE 命令キ ャ ッ シュ サイ ズ 64、 128、

256、 512、

1024、 2048、

4096、 8192、

16384、

32768、

655363

8192 整数

C_ICACHE_USE_FSL OPB の代わ り に CacheLink を命

令キ ャ ッ シュに使用

1 1 整数

C_DCACHE_BASEADDR データ キ ャ ッ シュのベース ア ド

レ ス

0x00000000 ~

0xFFFFFFFF0x00000000 std_logic_

vector

C_DCACHE_HIGHADDR データ キャ ッ シュ のハイ アド レ ス 0x00000000 ~

0xFFFFFFFF0x3FFFFFFF std_logic_

vector

C_USE_DCACHE データ キ ャ ッ シュ 0、 1 0 整数

C_ALLOW_DCACHE_WR データ キ ャ ッ シュ ラ イ ト イ ネー

ブル

0、 1 1 整数

C_DCACHE_LEN データ キ ャ ッ シュ ラ イ ンの長さ 4、 8 4 整数

C_DCACHE_ALWAYS _USED

データ キ ャ ッ シュの CacheLink をすべてのア ク セスに使用

0、 1 1 整数

C_DCACHE_INTERFACE データ キ ャ ッ シュ CacheLink イ ン ターフ ェ イ ス プロ ト コル

0 = DXCL

1 = DXCL2

0、 1 0 あ り 2 整数

C_DCACHE_USE_WRITEBACK

データ キ ャ ッ シュ ラ イ ト バッ ク

格納ポ リ シーを使用

0、 1 0 整数

C_DCACHE_ADDR_TAG データ キャ ッ シュ のアド レ ス タ グ 0 ~ 25 17 あ り 整数

表 2-12 : MPD パラ メ ータ (続き)

パラ メ ータ名 機能/説明 許容値 デフ ォル ト 値

ツールに

よる自動

割り当て

VHDL の型

110 japan.xilinx.com MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ドUG081 (v10.3)

Page 111: MicroBlaze プロセッサ リファレンス ガイド - Xilinx...MicroBlaze プロセッサ ガイドリファレンス japan.xilinx.com UG081 (v10.3)Xilinx is providing this product

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

C_DCACHE_BYTE_SIZE データ キ ャ ッ シュ サイ ズ 64、 128、

256、 512、

1024、 2048、

4096、 8192、

16384、

32768、

655363

8192 整数

C_DCACHE_USE_FSL OPB の代わ り に CacheLink を

データ キ ャ ッ シュに使用

1 1 整数

C_DPLB_DWIDTH データ側 PLB のデータ幅 32 32 整数

C_DPLB_NATIVE_DWIDTH データ側 PLB 固有のデータ幅 32 32 整数

C_DPLB_BURST_EN データ 側 PLB バース ト イ ネーブル 0 0 整数

C_DPLB_P2P データ側 PLB Point-to-point 0、 1 0 整数

C_IPLB_DWIDTH 命令側 PLB のデータ幅 32 32 整数

C_IPLB_NATIVE_DWIDTH 命令側 PLB 固有のデータ幅 32 32 整数

C_IPLB_BURST_EN 命令側 PLB バース ト イネーブル 0 0 整数

C_IPLB_P2P 命令側 PLB Point-to-point 0、 1 0 整数

C_USE_MMU4 メ モ リ 管理

0 : なし

1 : ユーザー モード

2 : 保護

3 : 仮想

0、 1、 2、 3 0 整数

C_MMU_DTLB_SIZE4 データ シャ ド ウ TLB のサイ ズ 1、 2、 4、 8 4 整数

C_MMU_ITLB_SIZE4 命令シャ ド ウ TLB のサイ ズ 1、 2、 4、 8 整数

C_MMU_TLB_ACCESS4 メ モ リ 管理用の特殊レジ ス タへの

ア ク セス

0 : 小

1 : 読み出し

2 : 書き込み

3 : フル ア ク セス

0、 1、 2、 3 3 整数

C_MMU_ZONES4 メ モ リ 保護ゾーンの数 0 ~ 16 16 整数

C_USE_INTERRUPT 割 り 込み処理を有効 0、 1 0 あ り 整数

C_USE_EXT_BRK 外部ブレーク処理を有効 0、 1 0 あ り 整数

C_USE_EXT_NM_BRK 外部マス ク不可のブレーク を有効 0、 1 0 あ り 整数

1. コプロ セ ッ サ ウ ィ ザー ド を使用し ている場合は、 FSL リ ン ク の数はツールによ り 割 り 当て られます。 手動で IP を追加する場合は、 パラメ ータ も手動でア ッ プデー ト し て く だ さ い。

表 2-12 : MPD パラ メ ータ (続き)

パラ メ ータ名 機能/説明 許容値 デフ ォル ト 値

ツールに

よる自動

割り当て

VHDL の型

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド japan.xilinx.com 111UG081 (v10.3)

Page 112: MicroBlaze プロセッサ リファレンス ガイド - Xilinx...MicroBlaze プロセッサ ガイドリファレンス japan.xilinx.com UG081 (v10.3)Xilinx is providing this product

第 2 章 : MicroBlaze の信号イ ン ターフ ェ イス

2. EDK ツールで割 り 当て られた値は手動で割 り 当て られた値に上書き されます。

3. すべてのアーキテ クチャですべてのサ イ ズが設定でき るわけではあ り ません。 キ ャ ッ シ ュでは、 0 ~ 32 個の RAMB プ リ ミ テ ィ ブが使用されます。 キ ャ ッ シ ュサ イ ズが 2048 未満の場合は 0 です。

4. C_AREA_OPTIMIZED が 1 に設定されている場合は使用でき ません。

112 japan.xilinx.com MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ドUG081 (v10.3)

Page 113: MicroBlaze プロセッサ リファレンス ガイド - Xilinx...MicroBlaze プロセッサ ガイドリファレンス japan.xilinx.com UG081 (v10.3)Xilinx is providing this product

第 3 章

MicroBlaze アプ リ ケーシ ョ ン バイナ リ イ ン ターフ ェ イス (ABI)

こ の章では、 ソ フ ト プロセ ッ サに対し てアセンブ リ 言語でソ フ ト ウ ェ アを開発する上で重要な

MicroBlaze™ のアプ リ ケーシ ョ ン バイナ リ イ ン ターフ ェ イ ス (ABI) について説明し ます。

MicroBlaze の GNU コ ンパイ ラはこの章に記述されている規則に従 う ので、アセンブ リ プロ グ ラ マ

で記述される コード も、 コ ンパイ ラで生成される コード と互換性を持たせるため、 同じ規則に従 う

必要があ り ます。 割 り 込みおよび例外処理について も簡単に説明し ます。

こ の章は次のセ ク シ ョ ン よ り 構成されています。

• データ型

• レジス タの使用規則

• ス タ ッ ク の規則

• メ モ リ モデル

• 割 り 込みおよび例外処理

データ型

MicroBlaze アセンブ リ プロ グ ラ ムで使用されるデータ型を、表 3-1 に示し ます。 data8、data16、お

よび data32 のよ う なデータ型は、 通常のバイ ト 、 ハーフバイ ト 、 およびワード で使用されます。

表 3-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 pointera

a.グ ローバル ポ イ ン タ でア ク セス可能なスモール データ領域へのポ イ ン タは、deta16 です。

2/4

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド japan.xilinx.com 113UG081 (v10.3)

Page 114: MicroBlaze プロセッサ リファレンス ガイド - Xilinx...MicroBlaze プロセッサ ガイドリファレンス japan.xilinx.com UG081 (v10.3)Xilinx is providing this product

第 3 章 : MicroBlaze アプ リ ケーシ ョ ン バイナリ イ ン ターフ ェ イス (ABI)

レジス タの使用規則

MicroBlaze に対する レジス タの使用規則を表 3-2 に示し ます。

表 3-2 : レジス タの使用規則

レジス タ タ イプ 対象 用途

R0 専用 ハード ウ ェ ア 値 0

R1 専用 ソ フ ト ウ ェ ア ス タ ッ ク ポイ ン タ

R2 専用 ソ フ ト ウ ェ ア 読み出し専用のスモール データ領域アンカー

R3 ~ R4 揮発性 ソ フ ト ウ ェ ア 戻 り 値/一時保存

R5 ~ R10 揮発性 ソ フ ト ウ ェ ア パラ メ ータの引渡し /一時保存

R11 ~ R12 揮発性 ソ フ ト ウ ェ ア 一時保存

R13 専用 ソ フ ト ウ ェ ア 読み出し /書き込みのスモール データ領域アンカー

R14 専用 ハード ウ ェ ア 割 り 込みの戻 り ア ド レ ス

R15 専用 ソ フ ト ウ ェ ア サブルーチンの戻 り ア ド レ ス

R16 専用 ハード ウ ェ ア ト ラ ッ プ用の戻 り ア ド レ ス (デバッ ガ)

R17 専用 ハード ウ ェ ア ( サポー ト し てい

る場合)、 それ

以外の場合は

ソ フ ト ウ ェ ア

例外用の戻 り ア ド レ ス

R18 専用 ソ フ ト ウ ェ ア アセンブラ用に予約済み/コ ンパイ ラ一時保存

R19 不揮発性 ソ フ ト ウ ェ ア 関数呼び出し を越えて保存する必要あ り 、

callee-save

R20 専用

または

不揮発性

ソ フ ト ウ ェ ア PIC (Position Independent Code) では GOT (Global Offset Table) へのポイ ン タの格納用に予

約済み。非 PIC コード では不揮発性。 関数呼び出し

を越えて保存する必要あ り 、 callee-save

R21 ~ R31 不揮発性 ソ フ ト ウ ェ ア 関数呼び出し を越えて保存する必要あ り 、

callee-save

RPC 特殊 ハード ウ ェ ア プロ グ ラ ム カ ウ ン タ

RMSR 特殊 ハード ウ ェ ア マシン ステータ ス レジス タ

REAR 特殊 ハード ウ ェ ア 例外ア ド レ ス レジス タ

RESR 特殊 ハード ウ ェ ア 例外ステータ ス レジス タ

RFSR 特殊 ハード ウ ェ ア 浮動小数点ステータ ス レジス タ

RBTR 特殊 ハード ウ ェ ア 分岐ターゲ ッ ト レジス タ

REDR 特殊 ハード ウ ェ ア 例外データ レジス タ

RPID 特殊 ハード ウ ェ ア プロセス識別レジス タ

RZPR 特殊 ハード ウ ェ ア ゾーン保護レジス タ

RTLBLO 特殊 ハード ウ ェ ア 変換ルッ ク アサイ ド バッ フ ァ Low レジス タ

RTLBHI 特殊 ハード ウ ェ ア 変換ルッ ク アサイ ド バッ フ ァ High レジス タ

114 japan.xilinx.com MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ドUG081 (v10.3)

Page 115: MicroBlaze プロセッサ リファレンス ガイド - Xilinx...MicroBlaze プロセッサ ガイドリファレンス japan.xilinx.com UG081 (v10.3)Xilinx is providing this product

ス タ ッ クの規則

MicroBlaze アーキテ クチャでは、 32 個の汎用レジス タ (GPR) が定義されます。 これらのレジス タ

は、 揮発性、 不揮発性、 および専用に分類されます。

• 揮発性レジス タ (caller-save) は、 一時保存と し て使用され、 関数呼び出し を越えて値を保持す

る こ と はあ り ません。 R3 ~ R12 のレジス タは揮発性で、 R3 および R4 は呼び出し関数の戻 り

値に使用されます。 R5 ~ R10 のレジス タは、 サブルーチン間のパラ メ ータの引き渡しに使用

されます。

• R19 ~ R31 のレジス タでは、関数呼び出し を越えて値が保持されるので、不揮発性のレジス タ

(callee-save) と定義されています。 呼び出される側の関数で、 これらの不揮発性のレジス タが

保存され、使用されます。 これらは、通常プロ ローグ中にス タ ッ クに保存され、エピ ローグ中に

再び読み込まれます。

• レジス タには、 専用レジス タ と し て使用される ものも あ り 、 プロ グ ラ マではこれらのレジス タ

がほかの用途に使用される こ と はあ り ません。

♦ R14 ~ R17 のレジス タは、 割 り 込み、 サブルーチン、 ト ラ ッ プ、 例外と い う 順序で戻 り ア

ド レ ス を格納するのに使用されます。 サブルーチンは、 分岐および リ ン ク命令を使用し て

呼び出され、 これらの命令では、 現在のプロ グ ラ ム カ ウ ン タ (PC) がレジス タ R15 に保存

されます。

♦ スモール データ領域ポ イ ン タは、 16 ビ ッ ト の即値があ る メ モ リ ロ ケーシ ョ ンにア ク セス

するのに使用されます。 これらの領域については、 「 メ モ リ モデル」 で説明し ます。 読み出

し専用のスモール データ領域 (SDA) アンカー R2 (読み出し専用) は、リ テ ラルのよ う な定

数にア ク セスするのに使用されます。 また SDA アンカー R13 (読み出し /書き込み) は、 ス

モール データ読み出し /書き込みセ ク シ ョ ンの値にア ク セスするのに使用されます。

♦ レジス タ R1 には、ス タ ッ ク ポイ ン タの値が格納され、関数の入力 と終了で更新されます。

♦ レジス タ R18 は、 アセンブラ操作の一時レジス タ と し て使用されます。

• MicroBlaze には、プロ グ ラ ム カ ウ ン タ (rpc)、マシン ステータ ス レジス タ (rmsr)、例外ステー

タ ス レジス タ (resr)、例外ア ド レ ス レジス タ (rear)、浮動小数点ユニ ッ ト ステータ ス レジス タ

(rfsr)、分岐ターゲ ッ ト レジス タ (rbtr)、例外データ レジス タ (redr)、メ モ リ 管理レジス タ (rpid、

rzpr、 rtlblo、 rtlbhi、 rtlbx、 rtlbsx)、 プロセ ッ サ バージ ョ ン レジス タ (rpvr0 ~ rpvr11) などの

特殊用途レジス タがあ り ます。 これらのレジス タは直接レジス タ フ ァ イルにマ ッ プされていな

いため、使用法は汎用レジス タ と は異な り ます。特殊用途レジス タの値は、mts 命令を使用し て

汎用レジス タに、 mfs 命令を使用し て汎用レジス タから転送でき ます。

ス タ ッ クの規則

MicroBlaze で使用する ス タ ッ クの規則を表 3-3 に示し ます。

表 3-3 の影付きの部分は、呼び出し側の関数のス タ ッ ク フ レームの部分を示し、影な しの部分は、呼

び出される側のフ レーム関数を示し ます。 ス タ ッ ク フ レームの ABI 規則では、 パラ メ ータの引渡

RTLBX 特殊 ハード ウ ェ ア 変換ルッ ク アサイ ド バッ フ ァ イ ンデッ ク ス レジ

ス タ

RTLBSX 特殊 ハード ウ ェ ア 変換ルッ ク アサイ ド バッ フ ァ検索イ ンデッ ク ス

RPVR0 ~ RPVR11

特殊 ハード ウ ェ ア プロセ ッ サ バージ ョ ン レジス タ 0 ~11

表 3-2 : レジス タの使用規則

レジス タ タ イプ 対象 用途

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド japan.xilinx.com 115UG081 (v10.3)

Page 116: MicroBlaze プロセッサ リファレンス ガイド - Xilinx...MicroBlaze プロセッサ ガイドリファレンス japan.xilinx.com UG081 (v10.3)Xilinx is providing this product

第 3 章 : MicroBlaze アプ リ ケーシ ョ ン バイナリ イ ン ターフ ェ イス (ABI)

し、 不揮発性レジス タの値の保持、 および関数内のローカル変数に対する スペースの割 り 当てに関

するプロ ト コルが定義されています。

ほかのサブルーチンの呼び出し を含む関数は非 リ ーフ関数と呼ばれます。 これらの非 リ ーフ関数で

は、使用する ス タ ッ ク フ レーム領域を新規に作成する必要があ り ます。 ス タ ッ ク ポイ ン タの値はプ

ロ グ ラ ムの開始時に 大で、 関数が呼び出される たびに、 各関数のス タ ッ ク フ レームで必要と なる

ワード数分だけ減少し ます。 呼び出し側の関数のス タ ッ ク ポイ ン タの値は、 呼び出される側の関数

のス タ ッ ク ポ イ ン タの値に比べて大きいのが通常です。

た と えば、Func1 が Func2 を呼び出し、Func2 が Func3 を呼び出すと し ます。 それぞれのイ ン ス タ

ン スでのス タ ッ ク表現を図 3-1 に示し ます。 Func1 から の Func2 の呼び出し後に、ス タ ッ ク ポイ ン

タ (SP) の値は減少し ます。 こ の SP 値は、Func3 のス タ ッ ク フ レームに対応し て さ らに減少し ます。

Func3 から戻る と、 SP 値は Func 2 の元の値まで増加し ます。

図 3-1 を見る と、 どのよ う にス タ ッ ク が保持されるかがわか り ます。

表 3-3 : ス タ ッ クの規則

ハイ ア ド レ ス

呼び出されたサブルーチンに対する関数パラ メ ータ (Arg n ..Arg1)

(オプシ ョ ン : 現在のプロ シージャから呼び出されたプロ シージャ

で必要と なる引数の 大数)

古いス タ ッ ク ポ イ ン タ リ ン ク レジス タ (R15)

呼び出される側で保存されたレジス タ (R31.....R19)

(オプシ ョ ン : 現在のプロ シージャで使用される レジス タのみが保

存される)

現在のプロ シージャに対する ローカル変数

(オプシ ョ ン : プロ シージャでローカルが定義されている と きのみ

表示)

フ ァ ン ク シ ョ ン パラ メータ (Arg n .. Arg 1)

(オプシ ョ ン : 現在のプロ シージャから呼び出されたプロ シージャ

で必要と なる引数の 大数)

新しいス タ ッ ク ポ イ ン タ リ ン ク レジス タ

下位ア ド レ ス

116 japan.xilinx.com MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ドUG081 (v10.3)

Page 117: MicroBlaze プロセッサ リファレンス ガイド - Xilinx...MicroBlaze プロセッサ ガイドリファレンス japan.xilinx.com UG081 (v10.3)Xilinx is providing this product

メ モ リ モデル

図 3-1 : ス タ ッ ク フ レーム

呼び出し規則

呼び出し側の関数は、 レジス タ (R5 ~ R10) または固有のス タ ッ ク フ レームを使用し てパラ メ ータ

を呼び出される側の関数に渡し ます。 読み出される側では、 呼び出し側のス タ ッ ク領域を使用し て

渡されたパラ メ ータ を格納し ます。

図 3-1 を参照し て く ださ い。 Func2 のパラ メ ータは、レジス タ R5 ~ R10 または Func1 に割 り 当て

られたス タ ッ ク フ レームに格納されます。

メ モ リ モデル

MicroBlaze の メ モ リ モデルは、 データ を、 スモール データ領域、 データ領域、 共有の未初期化領

域、 リ テ ラルまたは定数の 4 つの領域に分類し ます。

スモール データ領域

サイ ズが小さ く 、 グ ローバルに初期化された変数がこ の領域に格納されます。 こ のスモール

データ領域に格納される変数のサイ ズを決定する し きい値は、 MicroBlaze の C コ ンパイ ラ

(mb-gcc) で 8 バイ ト に設定されていますが、コ ンパイ ラ でコマン ド ラ イ ンのオプシ ョ ンを使用

し て変更可能です。 こ のオプシ ョ ンの詳細は、『エンべデッ ド システム ツール リ フ ァ レ ンス マ

ニ ュ アル』 の 「GNU コ ンパイ ラ ツール」 の章を参照し て く ださい。 スモール データ領域には、

64KB の メ モ リ が割 り 当て られます。 このスモール データ領域には、読み出し /書き込み可能な

スモール データ領域アンカー (R13) および 16 ビ ッ ト のオフセ ッ ト を使用し てア ク セス し ま

す。 こ の領域にサイ ズの小さ い変数を割 り 当てる と、 グ ローバル変数にア ク セスする コード に

IMM 命令を追加する必要がな く な り ます。 このエ リ アに含まれる変数は、絶対ア ド レ ス を使用

し て も ア ク セスでき ます。

データ領域

値が比較的大き く 初期化された変数は、 データ領域に割 り 当て られます。 こ の領域には、 コ ン

パイ ラのコマン ド ラ イ ン オプシ ョ ンによ って、読み出し /書き込み可能な SDA アンカー (R13) または絶対ア ド レ ス を使用し てア ク セスでき ます。

X9584

High Memory

Low Memory

SP

Func 1

SP

Func 1

Func 2

SP

Func 1

Func 2

Func 3SP

Func 1

Func 2

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド japan.xilinx.com 117UG081 (v10.3)

Page 118: MicroBlaze プロセッサ リファレンス ガイド - Xilinx...MicroBlaze プロセッサ ガイドリファレンス japan.xilinx.com UG081 (v10.3)Xilinx is providing this product

第 3 章 : MicroBlaze アプ リ ケーシ ョ ン バイナリ イ ン ターフ ェ イス (ABI)

共有の未初期化領域

初期化されていないグ ローバル変数は、 共有の領域に割 り 当て られます。 こ の領域には、 絶対ア ド

レ ス または読み出し /書き込み可能なスモール データ領域アンカー (R13) を使用し てア ク セスでき

ます。

リ テ ラルまたは定数

定数は、読み出し専用のスモール データ領域に配置され、読み出し専用のスモール データ領域アン

カー (R2) を使用し てア ク セス されます。

コ ンパイ ラで、 ベース ポイ ン タ と し て動作する グ ローバル ポ イ ン タが生成されます。 SDA アン

カーの値は、 終の リ ン ク段階で リ ンカによ り 決定されます。 メ モ リ のさ まざ まなセク シ ョ ンの詳

細は、 『エンべデッ ド システム ツール リ フ ァ レ ン ス マニュ アル』 の 「MicroBlaze リ ンカ ス ク リ プ

ト で割 り 当て られるセク シ ョ ン」 を参照し て く ださい。 コ ンパイ ラでは、 使用される コマン ド ラ イ

ン オプシ ョ ンに応じ て適切なセ ク シ ョ ンが生成されます。 これらのオプシ ョ ンについては、『エンべ

デッ ド システム ツール リ フ ァ レ ンス マニュ アル』 の 「GNU コ ンパイ ラ ツール」 の章を参照し て

く ださ い。

118 japan.xilinx.com MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ドUG081 (v10.3)

Page 119: MicroBlaze プロセッサ リファレンス ガイド - Xilinx...MicroBlaze プロセッサ ガイドリファレンス japan.xilinx.com UG081 (v10.3)Xilinx is providing this product

割り込みおよび例外処理

割り込みおよび例外処理

MicroBlaze では、表 3-4 に示すよ う に、割 り 込みおよび例外処理に対し て、特定のア ド レ ス ロ ケー

シ ョ ンが使用されます。 これらのロ ケーシ ョ ンのコード は、 適切なハン ド ラにジャ ンプする よ う 記

述されています。

これらのロ ケーシ ョ ンに記述されている コード を次に示し ます。 -xl-mode-xmdstub コ ンパイ ラ オ

プシ ョ ンを使用せずにコ ンパイルされたプロ グ ラ ムの場合、 mb-ld リ ンカで crt0.o 初期化フ ァ イル

が使用され、 例外ハン ド ラでの適切なア ド レ スが設定されます。

-xl-mode-xmdstub コ ンパイ ラ オプシ ョ ンを使用し て コ ンパイルされたプロ グ ラ ムの場合、crt1.o 初

期化フ ァ イルが出力プロ グ ラ ムに リ ン ク されます。 こ のプロ グ ラ ムは、 ア ド レ ス ロ ケーシ ョ ン 0x0 に XMDStub が含まれている場合にのみ実行でき ます。 ラ ン タ イ ムには、 例外および割 り 込みハン

ド ラのア ド レ スに応じ て、crt1.o の初期化コード によ り 適切な命令がロ ケーシ ョ ン 0x8 ~ 0x14 に書

き込まれます。

例外および割 り 込みハン ド ラに制御を渡すコード を次に示し ます。

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_handler0x20: imm high bits of address (HW exception handler0x24: bri _hw_exception_handler

MicroBlaze では、32 ビ ッ ト で指定可能なアド レ ス ロ ケーショ ンであれば、ど こ にでも 例外およ び

割り 込みハンド ラ ルーチンを配置でき ま す。 ユーザー例外ハンド ラ のコ ード はラ ベル __handler で、ハード ウ ェ ア例外ハン ド ラ のコード はラベル _hw__handler で、割 り 込みハン ド ラのコード はラ

ベル _interrupt_handler で始ま り ます。

現段階の MicroBlaze システムでは、 割 り 込みおよび例外処理に対し てユーザーが変更可能なダ

ミ ー ルーチンがあ り ます。 これら のダ ミ ー ルーチンの代わ り に、独自の割 り 込みハン ド ラおよび例

外ハン ド ラ を リ ン クするには、 割 り 込みハン ド ラ のコード を属性 interrupt_handler で定義する必要

があ り ます。 割 り 込みハン ド ラ属性の使用方法および構文の詳細は、 『エンべデッ ド システム ツー

ル リ フ ァ レ ンス マニ ュ アル』 の 「GNU コ ンパイ ラ ツール」 の章を参照し て く ださ い。

XMD (Xilinx Microprocessor Debug) ツールでソ フ ト ウ ェ アのブレーク ポイ ン ト が使用される場合

は、ハード ウ ェアおよびソ フ ト ウ ェアのブレーク ア ド レ ス ロ ケーシ ョ ンは、 ソ フ ト ウ ェ アのブレー

ク ポイ ン ト の処理用に予約されています。

表 3-4 : 割り込みおよび例外処理

イベン ト ハー ド ウェ アのジ ャ ンプ先 ソ フ ト ウェ ア ラベル

開始/ リ セ ッ ト 0x0 _start

ユーザー例外 0x8 _exception_handler

割 り 込み 0x10 _interrupt_handler

ブレーク (ハード ウ ェ ア/ ソ フ ト ウ ェ ア)

0x18 -

ハー ド ウ ェ ア例外 0x20 _hw_exception_handler

将来の使用に予約 0x28 ~ 0x4F -

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド japan.xilinx.com 119UG081 (v10.3)

Page 120: MicroBlaze プロセッサ リファレンス ガイド - Xilinx...MicroBlaze プロセッサ ガイドリファレンス japan.xilinx.com UG081 (v10.3)Xilinx is providing this product

第 3 章 : MicroBlaze アプ リ ケーシ ョ ン バイナリ イ ン ターフ ェ イス (ABI)

120 japan.xilinx.com MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ドUG081 (v10.3)

Page 121: MicroBlaze プロセッサ リファレンス ガイド - Xilinx...MicroBlaze プロセッサ ガイドリファレンス japan.xilinx.com UG081 (v10.3)Xilinx is providing this product

第 4 章

MicroBlaze 命令セ ッ ト アーキテ クチャ

こ の章では、MicroBlaze™ の命令セ ッ ト アーキテ クチャについて詳し く 説明し ます。次のセク シ ョ

ン よ り 構成されています。

• 表記法

• フ ォーマ ッ ト

• 命令

表記法

こ の章で使用される シンボルの定義を表 4-1 に示し ます。

表 4-1 : シンボル表記

シンボル 意味

+ 加算

- 減算

× 乗算

∧ ビ ッ ト 単位の論理積 (AND)

∨ ビ ッ ト 単位の論理和 (OR)

⊕ ビ ッ ト 単位の排他論理和 (XOR)

x x のビ ッ ト 単位の論理補数

← 代入

>> 右方向へシフ ト

<< 左方向へシフ ト

rx レジス タ x

x[i] レジス タ x のビ ッ ト i

x[i:j] レジス タ x のビ ッ ト i ~ j

= 等価

≠ 非等価

> 大な り

>= 以上

< 小な り

<= 以下

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド japan.xilinx.com 121UG081 (v10.3)

Page 122: MicroBlaze プロセッサ リファレンス ガイド - Xilinx...MicroBlaze プロセッサ ガイドリファレンス japan.xilinx.com UG081 (v10.3)Xilinx is providing this product

第 4 章 : MicroBlaze 命令セ ッ ト アーキテ クチャ

フ ォーマ ッ ト

MicroBlaze では、 タ イプ A と タ イプ B と い う 2 つの命令フ ォーマ ッ ト が使用されます。

タ イ プ A

タ イプ A は、 レジス タ間の命令に使用されます。 こ のタ イプには、 opcode、デステ ィ ネーシ ョ ン レ

ジス タ 1 個、 ソース レジス タ 2 個が含まれます。

タ イ プ B

タ イプ B は、レジス タ と即値間の命令に使用されます。 このタ イプには、opcode、デステ ィ ネーシ ョ

ン レジス タ 1 個、 ソース レジス タ 1 個、 および 16 ビ ッ ト の即値が含まれます。

sext(x) 符号拡張 x

Mem(x) ア ド レ ス x の メ モ リ ロ ケーシ ョ ン

FSLx FSL イ ン ターフ ェ イ ス x

LSW(x) x の 下位ワード

isDnz(x) 浮動小数点 : x が非正規化されている場合に真

isInfinite(x) 浮動小数点 : x が +∞ または -∞ の場合に真

isPosInfinite(x) 浮動小数点 : x が +∞ の場合に真

isNegInfinite(x) 浮動小数点 : x が -∞ の場合に真

isNaN(x) 浮動小数点 : x が quiet または signalling NaN の場合に真

isZero(x) 浮動小数点 : x が +0 または -0 の場合に真

isQuietNaN(x) 浮動小数点 : x が quiet NaN の場合に真

isSigNaN(x) 浮動小数点 : x が signaling NaN の場合に真

signZero(x) 浮動小数点 : x > 0 の場合は +0、 x < 0 の場合は -0 を返す

signInfinite(x) 浮動小数点 : x > 0 の場合は +∞、 x < 0 の場合は -∞ を返す

表 4-1 : シンボル表記(続き)

シンボル 意味

opcode デステ ィ ネーシ ョ ン レジス タ

ソース レジス タ A ソース レジス タ B 0 0 0 0 0 0 0 0 0 0 0

0 6 11 16 21 31

opcode デステ ィ ネーシ ョ ン レジス タ

ソース レジス タ A 即値

0 6 11 16 31

122 japan.xilinx.com MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ドUG081 (v10.3)

Page 123: MicroBlaze プロセッサ リファレンス ガイド - Xilinx...MicroBlaze プロセッサ ガイドリファレンス japan.xilinx.com UG081 (v10.3)Xilinx is providing this product

命令

命令

こ のセ ク シ ョ ンでは、 MicroBlaze の命令について説明し ます。 命令は、 アルフ ァベッ ト 順に掲載さ

れてお り 、 各命令に対し て簡略コード、 エン コード、説明、命令セマンテ ィ ッ ク スの擬似コード、お

よびその命令で変更される レジス タの一覧が示されます。

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド japan.xilinx.com 123UG081 (v10.3)

Page 124: MicroBlaze プロセッサ リファレンス ガイド - Xilinx...MicroBlaze プロセッサ ガイドリファレンス japan.xilinx.com UG081 (v10.3)Xilinx is providing this product

第 4 章 : MicroBlaze 命令セ ッ ト アーキテ クチャ

add Arithmetic Add

説明

レジス タ rA と rB の内容の合計を レジス タ rD に格納し ます。

addk に対し ては、 命令のビ ッ ト 3 (図で K と 表記) が 1 に設定さ れま す。 addc に対し ては、 命令

のビッ ト 4 (図で C と 表記) が 1 に設定さ れま す。 addkc に対し ては、 両方のビ ッ ト が 1 に設定さ

れま す。

ビ ッ ト 3 が 1 の場合 (addk、 addkc)、 命令の実行結果にかかわらず、 キ ャ リ ー フ ラ グに既存の値が

保持されます。 ビ ッ ト 3 が 0 の場合 (add、 addc)、 キ ャ リ ー フ ラ グが命令の実行結果に応じ て変更

されます。

ビ ッ ト 4 が 1 の場合 (addc、addkc)、キ ャ リ ー フ ラ グの内容 (MSR[C]) が命令の実行に影響し ます。

ビ ッ ト 4 が 0 の場合 (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 ク ロ ッ ク サイ クル

メ モ

命令 opcode 内の C ビ ッ ト は、 MSR のキ ャ リ ー ビ ッ ト と は異な り ます。

「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

124 japan.xilinx.com MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ドUG081 (v10.3)

Page 125: MicroBlaze プロセッサ リファレンス ガイド - Xilinx...MicroBlaze プロセッサ ガイドリファレンス japan.xilinx.com UG081 (v10.3)Xilinx is providing this product

命令

addi Arithmetic Add Immediate

説明

レジス タ rA の内容と 32 ビ ッ ト に符号拡張された IMM フ ィ ール ド の値の合計を、 レジス タ rD に

格納し ます。addik に対し ては、命令のビ ッ ト 3 (図で K と表記) が 1 に設定されます。addc に対し

ては、 命令のビ ッ ト 4 (図で C と表記) が 1 に設定されます。 addikc に対し ては、 両方のビ ッ ト が 1 に設定されます。

ビ ッ ト 3 が 1 の場合 (addik、 addikc)、 命令の実行結果にかかわらず、 キ ャ リ ー フ ラ グに既存の値

が保持されます。 ビ ッ ト 3 が 0 の場合 (addi、addic)、キ ャ リ ー フ ラ グが命令の実行結果に応じ て変

更されます。

ビ ッ ト 4 が 1 の場合 (addic、 addikc)、 キ ャ リ ー フ ラ グの内容 (MSR[C]) が命令の実行に影響し ま

す。 ビ ッ ト 4 が 0 の場合 (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 ク ロ ッ ク サイ クル

メ モ

命令 opcode 内の C ビ ッ ト は、 MSR のキ ャ リ ー ビ ッ ト と は異な り ます。

デフ ォル ト では、 タ イプ B 命令は 16 ビ ッ ト の IMM フ ィ ール ド の値を取 り 込み、それを 32 ビ ッ ト

に符号拡張し て、 即値オペラ ン ド と し て使用し ます。 タ イプ B 命令の前に imm 命令を使用する と、

32 ビ ッ ト の即値を使用でき ます。 32 ビ ッ ト の即値の使用に関する詳細は、 166 ページの 「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 125UG081 (v10.3)

Page 126: MicroBlaze プロセッサ リファレンス ガイド - Xilinx...MicroBlaze プロセッサ ガイドリファレンス japan.xilinx.com UG081 (v10.3)Xilinx is providing this product

第 4 章 : 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

126 japan.xilinx.com MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ドUG081 (v10.3)

Page 127: MicroBlaze プロセッサ リファレンス ガイド - Xilinx...MicroBlaze プロセッサ ガイドリファレンス japan.xilinx.com UG081 (v10.3)Xilinx is providing this product

命令

andi Logical AND with Immediate

説明

レジス タ rA の内容と 32 ビ ッ ト に符号拡張された IMM フ ィ ール ド の値を AND 演算し、 その結果

を レジス タ rD に格納し ます。

擬似コー ド

(rD) ← (rA) ∧ sext(IMM)

変更されるレジス タ

• rD

レ イ テンシ

1 ク ロ ッ ク サイ クル

メ モ

デフ ォル ト では、 タ イプ B 命令は 16 ビ ッ ト の IMM フ ィ ール ド の値を取 り 込み、それを 32 ビ ッ ト

に符号拡張し て、 即値オペラ ン ド と し て使用し ます。 タ イプ B 命令の前に imm 命令を使用する と、

32 ビ ッ ト の即値を使用でき ます。 32 ビ ッ ト の即値の使用に関する詳細は、 166 ページの 「imm」 を

参照し て く ださ い。

andi rD, rA, IMM

1 0 1 0 0 1 rD rA IMM

0 6 11 16 31

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド japan.xilinx.com 127UG081 (v10.3)

Page 128: MicroBlaze プロセッサ リファレンス ガイド - Xilinx...MicroBlaze プロセッサ ガイドリファレンス japan.xilinx.com UG081 (v10.3)Xilinx is providing this product

第 4 章 : 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

128 japan.xilinx.com MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ドUG081 (v10.3)

Page 129: MicroBlaze プロセッサ リファレンス ガイド - Xilinx...MicroBlaze プロセッサ ガイドリファレンス japan.xilinx.com UG081 (v10.3)Xilinx is providing this product

命令

andni Logical AND NOT with Immediate

説明

レジス タ rA の内容と 32 ビ ッ ト に符号拡張された IMM フ ィ ール ド の値の論理補数を AND 演算

し、 その結果を レジス タ rD に格納し ます。

擬似コー ド

(rD) ← (rA) ∧ (sext(IMM))

変更されるレジス タ

• rD

レ イ テンシ

1 ク ロ ッ ク サイ クル

メ モ

デフ ォル ト では、 タ イプ B 命令は 16 ビ ッ ト の IMM フ ィ ール ド の値を取 り 込み、それを 32 ビ ッ ト

に符号拡張し て、 即値オペラ ン ド と し て使用し ます。 タ イプ B 命令の前に imm 命令を使用する と、

32 ビ ッ ト の即値を使用でき ます。 32 ビ ッ ト の即値の使用に関する詳細は、 166 ページの 「imm」 を

参照し て く ださ い。

andni rD, rA, IMM

1 0 1 0 1 1 rD rA IMM

0 6 11 16 31

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド japan.xilinx.com 129UG081 (v10.3)

Page 130: MicroBlaze プロセッサ リファレンス ガイド - Xilinx...MicroBlaze プロセッサ ガイドリファレンス japan.xilinx.com UG081 (v10.3)Xilinx is providing this product

第 4 章 : MicroBlaze 命令セ ッ ト アーキテ クチャ

beq Branch if Equal

説明

rA が 0 の場合、 rB のオフセ ッ ト 値に含められている命令に分岐し ます。 分岐先は、 ア ド レ ス PC + rB の命令です。

beqd に対し ては、 D ビ ッ ト が 1 に設定されます。 こ の D ビ ッ ト は、 分岐遅延ス ロ ッ ト を使用する

かど う かを指定し ます。D ビ ッ ト が 1 の場合、遅延ス ロ ッ ト が使用され、分岐後の命令 (分岐遅延ス

ロ ッ ト にあ る命令) を分岐先の命令を実行する前に完了させる こ と ができ ます。 D ビ ッ ト が 0 の場

合、 遅延ス ロ ッ ト は使用されず、 分岐後に分岐先の命令が実行されます。

擬似コー ド

If rA = 0 then PC ← PC + rB

else PC ← PC + 4

if D = 1 then allow following instruction to complete execution

変更されるレジス タ

• PC

レ イ テンシ

1 ク ロ ッ ク サイ クル (分岐が不成立の場合)

2 ク ロ ッ ク サイ クル (分岐が成立し、 D ビ ッ ト が 1 の場合)

3 ク ロ ッ ク サイ クル (分岐が成立し、 D ビ ッ ト が 0 の場合)

メ モ

遅延ス ロ ッ ト は、 imm、 分岐、 ブレーク命令で使用でき ません。 割 り 込みおよび外部ハード ウ ェ ア

ブレークは、 遅延ス ロ ッ ト の分岐が完了する まで延期されます。

beq rA, rB 0 の場合に分岐

beqd rA, rB 0 の場合に分岐 (遅延ス ロ ッ ト を使用)

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

130 japan.xilinx.com MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ドUG081 (v10.3)

Page 131: MicroBlaze プロセッサ リファレンス ガイド - Xilinx...MicroBlaze プロセッサ ガイドリファレンス japan.xilinx.com UG081 (v10.3)Xilinx is providing this product

命令

beqi Branch Immediate if Equal

説明

rA が 0 の場合、IMM のオフセ ッ ト 値に含められている命令に分岐し ます。 分岐先は、ア ド レ ス PC + IMM の命令です。

beqid に対し ては、 D ビ ッ ト が 1 に設定されます。 こ の D ビ ッ ト は、 分岐遅延ス ロ ッ ト を使用する

かど う かを指定し ます。D ビ ッ ト が 1 の場合、遅延ス ロ ッ ト が使用され、分岐後の命令 (分岐遅延ス

ロ ッ ト にあ る命令) を分岐先の命令を実行する前に完了させる こ と ができ ます。 D ビ ッ ト が 0 の場

合、 遅延ス ロ ッ ト は使用されず、 分岐後に分岐先の命令が実行されます。

擬似コー ド

If rA = 0 then PC ← PC + sext(IMM)

else PC ← PC + 4

if D = 1 then allow following instruction to complete execution

変更されるレジス タ

• PC

レ イ テンシ

1 ク ロ ッ ク サイ クル (分岐が不成立の場合)

2 ク ロ ッ ク サイ クル (分岐が成立し、 D ビ ッ ト が 1 の場合)

3 ク ロ ッ ク サイ クル (分岐が成立し、 D ビ ッ ト が 0 の場合)

メ モ

デフ ォル ト では、 タ イプ B 命令は 16 ビ ッ ト の IMM フ ィ ール ド の値を取 り 込み、それを 32 ビ ッ ト

に符号拡張し て、 即値オペラ ン ド と し て使用し ます。 タ イプ B 命令の前に imm 命令を使用する と、

32 ビ ッ ト の即値を使用でき ます。 32 ビ ッ ト の即値の使用に関する詳細は、 166 ページの 「imm」 を

参照し て く ださ い。

遅延ス ロ ッ ト は、 imm、 分岐、 ブレーク命令で使用でき ません。 割 り 込みおよび外部ハード ウ ェ ア

ブレークは、 遅延ス ロ ッ ト の分岐が完了する まで延期されます。

beqi rA, IMM 0 の場合に即値に分岐

beqid rA, IMM 0 の場合に即値に分岐 (遅延ス ロ ッ ト を使用)

1 0 1 1 1 1 D 0 0 0 0 rA IMM

0 6 11 16 31

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド japan.xilinx.com 131UG081 (v10.3)

Page 132: MicroBlaze プロセッサ リファレンス ガイド - Xilinx...MicroBlaze プロセッサ ガイドリファレンス japan.xilinx.com UG081 (v10.3)Xilinx is providing this product

第 4 章 : MicroBlaze 命令セ ッ ト アーキテ クチャ

bge Branch if Greater or Equal

説明

rA が 0 以上の場合、rB のオフセ ッ ト 値に含められている命令に分岐し ます。 分岐先は、ア ド レ ス PC + rB の命令です。

bged に対し ては、 D ビ ッ ト が 1 に設定されます。 こ の D ビ ッ ト は、 分岐遅延ス ロ ッ ト を使用する

かど う かを指定し ます。D ビ ッ ト が 1 の場合、遅延ス ロ ッ ト が使用され、分岐後の命令 (分岐遅延ス

ロ ッ ト にあ る命令) を分岐先の命令を実行する前に完了させる こ と ができ ます。 D ビ ッ ト が 0 の場

合、 遅延ス ロ ッ ト は使用されず、 分岐後に分岐先の命令が実行されます。

擬似コー ド

If rA >= 0 then PC ← PC + rB

else PC ← PC + 4

if D = 1 then allow following instruction to complete execution

変更されるレジス タ

• PC

レ イ テンシ

1 ク ロ ッ ク サイ クル (分岐が不成立の場合)

2 ク ロ ッ ク サイ クル (分岐が成立し、 D ビ ッ ト が 1 の場合)

3 ク ロ ッ ク サイ クル (分岐が成立し、 D ビ ッ ト が 0 の場合)

メ モ

遅延ス ロ ッ ト は、 imm、 分岐、 ブレーク命令で使用でき ません。 割 り 込みおよび外部ハード ウ ェ ア

ブレークは、 遅延ス ロ ッ ト の分岐が完了する まで延期されます。

bge rA, rB 0 以上の場合に分岐

bged rA, rB 0 以上の場合に分岐 (分岐遅延ス ロ ッ ト を使用)

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

132 japan.xilinx.com MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ドUG081 (v10.3)

Page 133: MicroBlaze プロセッサ リファレンス ガイド - Xilinx...MicroBlaze プロセッサ ガイドリファレンス japan.xilinx.com UG081 (v10.3)Xilinx is providing this product

命令

bgei Branch Immediate if Greater or Equal

説明

rA が 0 以上の場合、 IMM のオフセ ッ ト 値に含められている命令に分岐し ます。 分岐先は、 ア ド レ

ス PC + IMM の命令です。

bgeid に対し ては、 D ビ ッ ト が 1 に設定されます。 こ の D ビ ッ ト は、 分岐遅延ス ロ ッ ト を使用する

かど う かを指定し ます。D ビ ッ ト が 1 の場合、遅延ス ロ ッ ト が使用され、分岐後の命令 (分岐遅延ス

ロ ッ ト にあ る命令) を分岐先の命令を実行する前に完了させる こ と ができ ます。 D ビ ッ ト が 0 の場

合、 遅延ス ロ ッ ト は使用されず、 分岐後に分岐先の命令が実行されます。

擬似コー ド

If rA >= 0 then PC ← PC + sext(IMM)

else PC ← PC + 4

if D = 1 then allow following instruction to complete execution

変更されるレジス タ

• PC

レ イ テンシ

1 ク ロ ッ ク サイ クル (分岐不成立の場合)

2 ク ロ ッ ク サイ クル (分岐が成立し、 D ビ ッ ト が 1 の場合)

3 ク ロ ッ ク サイ クル (分岐が成立し、 D ビ ッ ト が 0 の場合)

メ モ

デフ ォル ト では、 タ イプ B 命令は 16 ビ ッ ト の IMM フ ィ ール ド の値を取 り 込み、それを 32 ビ ッ ト

に符号拡張し て、 即値オペラ ン ド と し て使用し ます。 タ イプ B 命令の前に imm 命令を使用する と、

32 ビ ッ ト の即値を使用でき ます。 32 ビ ッ ト の即値の使用に関する詳細は、 166 ページの 「imm」 を

参照し て く ださ い。

遅延ス ロ ッ ト は、 imm、 分岐、 ブレーク命令で使用でき ません。 割 り 込みおよび外部ハード ウ ェ ア

ブレークは、 遅延ス ロ ッ ト の分岐が完了する まで延期されます。

bgei rA, IMM 0 以上の場合に即値に分岐

bgeid rA, IMM 0 以上の場合に即値に分岐 (分岐遅延ス ロ ッ ト を使用)

1 0 1 1 1 1 D 0 1 0 1 rA IMM

0 6 11 16 31

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド japan.xilinx.com 133UG081 (v10.3)

Page 134: MicroBlaze プロセッサ リファレンス ガイド - Xilinx...MicroBlaze プロセッサ ガイドリファレンス japan.xilinx.com UG081 (v10.3)Xilinx is providing this product

第 4 章 : MicroBlaze 命令セ ッ ト アーキテ クチャ

bgt Branch if Greater Than

説明

rA が 0 よ り 大きい場合、 rB のオフセ ッ ト 値に含められている命令に分岐し ます。 分岐先は、 ア ド

レ ス PC + rB の命令です。

bgtd に対し ては、D ビ ッ ト が 1 に設定されます。 こ の D ビ ッ ト は、分岐遅延ス ロ ッ ト を使用するか

ど う かを指定し ます。 D ビ ッ ト が 1 の場合、 遅延ス ロ ッ ト が使用され、 分岐後の命令 (分岐遅延ス

ロ ッ ト にあ る命令) を分岐先の命令を実行する前に完了させる こ と ができ ます。 D ビ ッ ト が 0 の場

合、 遅延ス ロ ッ ト は使用されず、 分岐後に分岐先の命令が実行されます。

擬似コー ド

If rA > 0 then PC ← PC + rB

else PC ← PC + 4

if D = 1 then allow following instruction to complete execution

変更されるレジス タ

• PC

レ イ テンシ

1 ク ロ ッ ク サイ クル (分岐不成立の場合)

2 ク ロ ッ ク サイ クル (分岐が成立し、 D ビ ッ ト が設定されている場合)

3 ク ロ ッ ク サイ クル (分岐が成立し、 D ビ ッ ト が設定されていない場合)

メ モ

遅延ス ロ ッ ト は、 imm、 分岐、 ブレーク命令で使用でき ません。 割 り 込みおよび外部ハード ウ ェ ア

ブレークは、 遅延ス ロ ッ ト の分岐が完了する まで延期されます。

bgt rA, rB 0 よ り 大きい場合に分岐

bgtd rA, rB 0 よ り 大きい場合に分岐 (分岐遅延ス ロ ッ ト を使用)

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

134 japan.xilinx.com MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ドUG081 (v10.3)

Page 135: MicroBlaze プロセッサ リファレンス ガイド - Xilinx...MicroBlaze プロセッサ ガイドリファレンス japan.xilinx.com UG081 (v10.3)Xilinx is providing this product

命令

bgti Branch Immediate if Greater Than

説明

rA が 0 よ り 大きい場合、 IMM のオフセ ッ ト 値に含められている命令に分岐し ます。 分岐先は、 ア

ド レ ス PC + IMM の命令です。

bgtid に対し ては、 D ビ ッ ト が 1 に設定されます。 この D ビ ッ ト は、 分岐遅延ス ロ ッ ト を使用する

かど う かを指定し ます。D ビ ッ ト が 1 の場合、遅延ス ロ ッ ト が使用され、分岐後の命令 (分岐遅延ス

ロ ッ ト にあ る命令) を分岐先の命令を実行する前に完了させる こ と ができ ます。 D ビ ッ ト が 0 の場

合、 遅延ス ロ ッ ト は使用されず、 分岐後に分岐先の命令が実行されます。

擬似コー ド

If rA > 0 then PC ← PC + sext(IMM)

else PC ← PC + 4

if D = 1 then allow following instruction to complete execution

変更されるレジス タ

• PC

レ イ テンシ

1 ク ロ ッ ク サイ クル (分岐不成立の場合)

2 ク ロ ッ ク サイ クル (分岐が成立し、 D ビ ッ ト が 1 の場合)

3 ク ロ ッ ク サイ クル (分岐が成立し、 D ビ ッ ト が 0 の場合)

メ モ

デフ ォル ト では、 タ イプ B 命令は 16 ビ ッ ト の IMM フ ィ ール ド の値を取 り 込み、それを 32 ビ ッ ト

に符号拡張し て、 即値オペラ ン ド と し て使用し ます。 タ イプ B 命令の前に imm 命令を使用する と、

32 ビ ッ ト の即値を使用でき ます。 32 ビ ッ ト の即値の使用に関する詳細は、 166 ページの 「imm」 を

参照し て く ださ い。

遅延ス ロ ッ ト は、 imm、 分岐、 ブレーク命令で使用でき ません。 割 り 込みおよび外部ハード ウ ェ ア

ブレークは、 遅延ス ロ ッ ト の分岐が完了する まで延期されます。

bgti rA, IMM 0 よ り 大きい場合に即値に分岐

bgtid rA, IMM 0 よ り 大きい場合に分岐 (分岐遅延ス ロ ッ ト を使用)

1 0 1 1 1 1 D 0 1 0 0 rA IMM

0 6 11 16 31

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド japan.xilinx.com 135UG081 (v10.3)

Page 136: MicroBlaze プロセッサ リファレンス ガイド - Xilinx...MicroBlaze プロセッサ ガイドリファレンス japan.xilinx.com UG081 (v10.3)Xilinx is providing this product

第 4 章 : MicroBlaze 命令セ ッ ト アーキテ クチャ

ble Branch if Less or Equal

説明

rA が 0 以下の場合、 rB のオフセ ッ ト 値に含められている命令に分岐し ます。 分岐先は、 ア ド レ ス

PC + rB の命令です。

bled に対し ては、D ビ ッ ト が 1 に設定されます。 こ の D ビ ッ ト は、分岐遅延ス ロ ッ ト を使用するか

ど う かを指定し ます。 D ビ ッ ト が 1 の場合、 遅延ス ロ ッ ト が使用され、 分岐後の命令 (分岐遅延ス

ロ ッ ト にあ る命令) を分岐先の命令を実行する前に完了させる こ と ができ ます。 D ビ ッ ト が 0 の場

合、 遅延ス ロ ッ ト は使用されず、 分岐後に分岐先の命令が実行されます。

擬似コー ド

If rA <= 0 then PC ← PC + rB

else PC ← PC + 4

if D = 1 then allow following instruction to complete execution

変更されるレジス タ

• PC

レ イ テンシ

1 ク ロ ッ ク サイ クル (分岐不成立の場合)

2 ク ロ ッ ク サイ クル (分岐が成立し、 D ビ ッ ト が 1 の場合)

3 ク ロ ッ ク サイ クル (分岐が成立し、 D ビ ッ ト が 0 の場合)

メ モ

遅延ス ロ ッ ト は、 imm、 分岐、 ブレーク命令で使用でき ません。 割 り 込みおよび外部ハード ウ ェ ア

ブレークは、 遅延ス ロ ッ ト の分岐が完了する まで延期されます。

ble rA, rB 0 以下の場合に分岐

bled rA, rB 0 以下の場合に分岐 (分岐遅延ス ロ ッ ト を使用)

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

136 japan.xilinx.com MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ドUG081 (v10.3)

Page 137: MicroBlaze プロセッサ リファレンス ガイド - Xilinx...MicroBlaze プロセッサ ガイドリファレンス japan.xilinx.com UG081 (v10.3)Xilinx is providing this product

命令

blei Branch Immediate if Less or Equal

説明

rA が 0 以下の場合、 IMM のオフセ ッ ト 値に含められている命令に分岐し ます。 分岐先は、 ア ド レ

ス PC + IMM の命令です。

bleid に対し ては、 D ビ ッ ト が 1 に設定されます。 こ の D ビ ッ ト は、 分岐遅延ス ロ ッ ト を使用する

かど う かを指定し ます。D ビ ッ ト が 1 の場合、遅延ス ロ ッ ト が使用され、分岐後の命令 (分岐遅延ス

ロ ッ ト にあ る命令) を分岐先の命令を実行する前に完了させる こ と ができ ます。 D ビ ッ ト が 0 の場

合、 遅延ス ロ ッ ト は使用されず、 分岐後に分岐先の命令が実行されます。

擬似コー ド

If rA <= 0 then PC ← PC + sext(IMM)

else PC ← PC + 4

if D = 1 then allow following instruction to complete execution

変更されるレジス タ

• PC

レ イ テンシ

1 ク ロ ッ ク サイ クル (分岐不成立の場合)

2 ク ロ ッ ク サイ クル (分岐が成立し、 D ビ ッ ト が 1 の場合)

3 ク ロ ッ ク サイ クル (分岐が成立し、 D ビ ッ ト が 0 の場合)

メ モ

デフ ォル ト では、 タ イプ B 命令は 16 ビ ッ ト の IMM フ ィ ール ド の値を取 り 込み、それを 32 ビ ッ ト

に符号拡張し て、 即値オペラ ン ド と し て使用し ます。 タ イプ B 命令の前に imm 命令を使用する と、

32 ビ ッ ト の即値を使用でき ます。 32 ビ ッ ト の即値の使用に関する詳細は、 166 ページの 「imm」 を

参照し て く ださ い。

遅延ス ロ ッ ト は、 imm、 分岐、 ブレーク命令で使用でき ません。 割 り 込みおよび外部ハード ウ ェ ア

ブレークは、 遅延ス ロ ッ ト の分岐が完了する まで延期されます。

blei rA, IMM 0 以下の場合に即値に分岐

bleid rA, IMM 0 以下の場合に即値に分岐 (分岐遅延ス ロ ッ ト を使用)

1 0 1 1 1 1 D 0 0 1 1 rA IMM

0 6 11 16 31

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド japan.xilinx.com 137UG081 (v10.3)

Page 138: MicroBlaze プロセッサ リファレンス ガイド - Xilinx...MicroBlaze プロセッサ ガイドリファレンス japan.xilinx.com UG081 (v10.3)Xilinx is providing this product

第 4 章 : MicroBlaze 命令セ ッ ト アーキテ クチャ

blt Branch if Less Than

説明

rA が 0 よ り 小さ い場合、 rB のオフセ ッ ト 値に含められている命令に分岐し ます。 分岐先は、 ア ド

レ ス PC + rB の命令です。

bltd に対し ては、 D ビ ッ ト が 1 に設定されます。 この D ビ ッ ト は、 分岐遅延ス ロ ッ ト を使用するか

ど う かを指定し ます。 D ビ ッ ト が 1 の場合、 遅延ス ロ ッ ト が使用され、 分岐後の命令 (分岐遅延ス

ロ ッ ト にあ る命令) を分岐先の命令を実行する前に完了させる こ と ができ ます。 D ビ ッ ト が 0 の場

合、 遅延ス ロ ッ ト は使用されず、 分岐後に分岐先の命令が実行されます。

擬似コー ド

If rA < 0 then PC ← PC + rB

else PC ← PC + 4

if D = 1 then allow following instruction to complete execution

変更されるレジス タ

• PC

レ イ テンシ

1 ク ロ ッ ク サイ クル (分岐不成立の場合)

2 ク ロ ッ ク サイ クル (分岐が成立し、 D ビ ッ ト が 1 の場合)

3 ク ロ ッ ク サイ クル (分岐が成立し、 D ビ ッ ト が 0 の場合)

メ モ

遅延ス ロ ッ ト は、 imm、 分岐、 ブレーク命令で使用でき ません。 割 り 込みおよび外部ハード ウ ェ ア

ブレークは、 遅延ス ロ ッ ト の分岐が完了する まで延期されます。

blt rA, rB 0 よ り 小さい場合に分岐

bltd rA, rB 0 よ り 小さい場合に分岐 (分岐遅延ス ロ ッ ト を使用)

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

138 japan.xilinx.com MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ドUG081 (v10.3)

Page 139: MicroBlaze プロセッサ リファレンス ガイド - Xilinx...MicroBlaze プロセッサ ガイドリファレンス japan.xilinx.com UG081 (v10.3)Xilinx is providing this product

命令

blti Branch Immediate if Less Than

説明

rA が 0 未満の場合、 IMM のオフセ ッ ト 値に含められている命令に分岐し ます。 分岐先は、 ア ド レ

ス PC + IMM の命令です。

bltid に対し ては、D ビ ッ ト が 1 に設定されます。 こ の D ビ ッ ト は、分岐遅延ス ロ ッ ト を使用するか

ど う かを指定し ます。 D ビ ッ ト が 1 の場合、 遅延ス ロ ッ ト が使用され、 分岐後の命令 (分岐遅延ス

ロ ッ ト にあ る命令) を分岐先の命令を実行する前に完了させる こ と ができ ます。 D ビ ッ ト が 0 の場

合、 遅延ス ロ ッ ト は使用されず、 分岐後に分岐先の命令が実行されます。

擬似コー ド

If rA < 0 then PC ← PC + sext(IMM)

else PC ← PC + 4

if D = 1 then allow following instruction to complete execution

変更されるレジス タ

• PC

レ イ テンシ

1 ク ロ ッ ク サイ クル (分岐不成立の場合)

2 ク ロ ッ ク サイ クル (分岐が成立し、 D ビ ッ ト が 1 の場合)

3 ク ロ ッ ク サイ クル (分岐が成立し、 D ビ ッ ト が 0 の場合)

メ モ

デフ ォル ト では、 タ イプ B 命令は 16 ビ ッ ト の IMM フ ィ ール ド の値を取 り 込み、それを 32 ビ ッ ト

に符号拡張し て、 即値オペラ ン ド と し て使用し ます。 タ イプ B 命令の前に imm 命令を使用する と、

32 ビ ッ ト の即値を使用でき ます。 32 ビ ッ ト の即値の使用に関する詳細は、 166 ページの 「imm」 を

参照し て く ださ い。

遅延ス ロ ッ ト は、 imm、 分岐、 ブレーク命令で使用でき ません。 割 り 込みおよび外部ハード ウ ェ ア

ブレークは、 遅延ス ロ ッ ト の分岐が完了する まで延期されます。

blti rA, IMM 0 よ り 小さい場合に即値に分岐

bltid rA, IMM 0 よ り 小さい場合に即値に分岐 (分岐遅延ス ロ ッ ト を使用)

1 0 1 1 1 1 D 0 0 1 0 rA IMM

0 6 11 16 31

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド japan.xilinx.com 139UG081 (v10.3)

Page 140: MicroBlaze プロセッサ リファレンス ガイド - Xilinx...MicroBlaze プロセッサ ガイドリファレンス japan.xilinx.com UG081 (v10.3)Xilinx is providing this product

第 4 章 : MicroBlaze 命令セ ッ ト アーキテ クチャ

bne Branch if Not Equal

説明

rA が 0 ではない場合、 rB のオフセ ッ ト 値に含められている命令に分岐し ます。 分岐先は、 ア ド レ

ス PC + rB の命令です。

bned に対し ては、 D ビ ッ ト が 1 に設定されます。 こ の D ビ ッ ト は、 分岐遅延ス ロ ッ ト を使用する

かど う かを指定し ます。D ビ ッ ト が 1 の場合、遅延ス ロ ッ ト が使用され、分岐後の命令 (分岐遅延ス

ロ ッ ト にあ る命令) を分岐先の命令を実行する前に完了させる こ と ができ ます。 D ビ ッ ト が 0 の場

合、 遅延ス ロ ッ ト は使用されず、 分岐後に分岐先の命令が実行されます。

擬似コー ド

If rA ≠ 0 then PC ← PC + rB

else PC ← PC + 4

if D = 1 then allow following instruction to complete execution

変更されるレジス タ

• PC

レ イ テンシ

1 ク ロ ッ ク サイ クル (分岐不成立の場合)

2 ク ロ ッ ク サイ クル (分岐が成立し、 D ビ ッ ト が 1 の場合)

3 ク ロ ッ ク サイ クル (分岐が成立し、 D ビ ッ ト が 0 の場合)

メ モ

遅延ス ロ ッ ト は、 imm、 分岐、 ブレーク命令で使用でき ません。 割 り 込みおよび外部ハード ウ ェ ア

ブレークは、 遅延ス ロ ッ ト の分岐が完了する まで延期されます。

bne rA, rB 0 でない場合に分岐

bned rA, rB 0 でない場合に分岐 (分岐遅延ス ロ ッ ト を使用)

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

140 japan.xilinx.com MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ドUG081 (v10.3)

Page 141: MicroBlaze プロセッサ リファレンス ガイド - Xilinx...MicroBlaze プロセッサ ガイドリファレンス japan.xilinx.com UG081 (v10.3)Xilinx is providing this product

命令

bnei Branch Immediate if Not Equal

説明

rA が 0 ではない場合、 IMM のオフセ ッ ト 値に含められている命令に分岐し ます。 分岐先は、 ア ド

レ ス PC + IMM の命令です。

bneid に対し ては、 D ビ ッ ト が 1 に設定されます。 こ の D ビ ッ ト は、 分岐遅延ス ロ ッ ト を使用する

かど う かを指定し ます。D ビ ッ ト が 1 の場合、遅延ス ロ ッ ト が使用され、分岐後の命令 (分岐遅延ス

ロ ッ ト にあ る命令) を分岐先の命令を実行する前に完了させる こ と ができ ます。 D ビ ッ ト が 0 の場

合、 遅延ス ロ ッ ト は使用されず、 分岐後に分岐先の命令が実行されます。

擬似コー ド

If rA ≠ 0 then PC ← PC + sext(IMM)

else PC ← PC + 4

if D = 1 then allow following instruction to complete execution

変更されるレジス タ

• PC

レ イ テンシ

1 ク ロ ッ ク サイ クル (分岐不成立の場合)

2 ク ロ ッ ク サイ クル (分岐が成立し、 D ビ ッ ト が 1 の場合)

3 ク ロ ッ ク サイ クル (分岐が成立し、 D ビ ッ ト が 0 の場合)

メ モ

デフ ォル ト では、 タ イプ B 命令は 16 ビ ッ ト の IMM フ ィ ール ド の値を取 り 込み、それを 32 ビ ッ ト

に符号拡張し て、 即値オペラ ン ド と し て使用し ます。 タ イプ B 命令の前に imm 命令を使用する と、

32 ビ ッ ト の即値を使用でき ます。 32 ビ ッ ト の即値の使用に関する詳細は、 166 ページの 「imm」 を

参照し て く ださ い。

遅延ス ロ ッ ト は、 imm、 分岐、 ブレーク命令で使用でき ません。 割 り 込みおよび外部ハード ウ ェ ア

ブレークは、 遅延ス ロ ッ ト の分岐が完了する まで延期されます。

bnei rA, IMM 0 でない場合に即値に分岐

bneid rA, IMM 0 でない場合に即値に分岐 (分岐遅延ス ロ ッ ト を使用)

1 0 1 1 1 1 D 0 0 0 1 rA IMM

0 6 11 16 31

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド japan.xilinx.com 141UG081 (v10.3)

Page 142: MicroBlaze プロセッサ リファレンス ガイド - Xilinx...MicroBlaze プロセッサ ガイドリファレンス japan.xilinx.com UG081 (v10.3)Xilinx is providing this product

第 4 章 : MicroBlaze 命令セ ッ ト アーキテ クチャ

br Unconditional Branch

説明

rB で指定されたア ド レ スに含まれる命令に分岐し ます。

brld および brald に対し ては、L ビ ッ ト が 1 に設定されます。 L ビ ッ ト が 1 の場合、 リ ン ク が実行さ

れ、 PC の現在の値が rD に格納されます。

bra、 brad、 および brald に対し ては、 A ビ ッ ト が 1 に設定されます。 A ビ ッ ト が 1 の場合は、 rB の

値を絶対値とみなし、 その値に分岐し ます。 A ビ ッ ト が 0 の場合は、相対分岐と な り 、分岐先は PC + rB と な り ます。

bra、 brad、 brld、 および brald に対し ては、 D ビ ッ ト が 1 に設定されます。 こ の D ビ ッ ト は、 分岐

遅延ス ロ ッ ト を使用するかど う かを指定し ます。D ビ ッ ト が 1 の場合、遅延ス ロ ッ ト が使用され、分

岐後の命令 (分岐遅延ス ロ ッ ト にあ る命令) を分岐先の命令を実行する前に完了させる こ と ができ

ます。

D ビ ッ ト が 0 の場合、 遅延ス ロ ッ ト は使用されず、 分岐後に分岐先の命令が実行されます。

擬似コー ド

if L = 1 then (rD) ← PC

if A = 1 then PC ← (rB)

else PC ← PC + (rB)

if D = 1 then allow following instruction to complete execution

変更されるレジス タ

• rD

• PC

レ イ テンシ

2 ク ロ ッ ク サイ クル (D ビ ッ ト が 1 の場合)

3 ク ロ ッ ク サイ クル (D ビ ッ ト が 0 の場合)

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

142 japan.xilinx.com MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ドUG081 (v10.3)

Page 143: MicroBlaze プロセッサ リファレンス ガイド - Xilinx...MicroBlaze プロセッサ ガイドリファレンス japan.xilinx.com UG081 (v10.3)Xilinx is providing this product

命令

メ モ

命令 brl および bral は、 使用でき ません。 遅延ス ロ ッ ト は、 imm、 分岐、 ブレーク命令で使用でき

ません。 割 り 込みおよび外部ハード ウ ェ ア ブレークは、 遅延ス ロ ッ ト の分岐が完了する まで延期さ

れます。

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド japan.xilinx.com 143UG081 (v10.3)

Page 144: MicroBlaze プロセッサ リファレンス ガイド - Xilinx...MicroBlaze プロセッサ ガイドリファレンス japan.xilinx.com UG081 (v10.3)Xilinx is providing this product

第 4 章 : MicroBlaze 命令セ ッ ト アーキテ クチャ

bri Unconditional Branch Immediate

説明

32 ビ ッ ト に符号拡張された IMM で指定される ア ド レ スに含まれている命令に分岐し ます。

brlid および bralid に対し ては、 L ビ ッ ト が 1 に設定されます。 L ビ ッ ト が 1 の場合、 リ ン ク が実行

され、 PC の現在の値が rD に格納されます。

brai、braid、および bralid に対し ては、A ビ ッ ト が 1 に設定されます。 A ビ ッ ト が 1 の場合は、IMM の値を絶対値とみなし、 その値に分岐し ます。 A ビ ッ ト が 0 の場合は、 相対分岐と な り 、 分岐先は

PC + IMM と な り ます。

brid、 braid、 brlid、 および bralid に対し ては、 D ビ ッ ト が 1 に設定されます。 この D ビ ッ ト は、 分

岐遅延ス ロ ッ ト を使用するかど う かを指定し ます。D ビ ッ ト が 1 の場合、遅延ス ロ ッ ト が使用され、

分岐後の命令 (分岐遅延ス ロ ッ ト にあ る命令) を分岐先の命令を実行する前に完了させる こ と がで

き ます。 D ビ ッ ト が 0 の場合、遅延ス ロ ッ ト は使用されず、分岐後に分岐先の命令が実行されます。

MicroBlaze で MMU が使用され (C_USE_MMU >= 1) 、 brki rD, 0x18 を使用し てユーザー ベ

ク タ例外が処理される場合は、MSR のユーザー モード ビ ッ ト および仮想モード ビ ッ ト が 0 にな り

ます。

擬似コー ド

if L = 1 then (rD) ← PC

if A = 1 then PC ← sext(IMM)

else PC ← PC + sext(IMM)

if D = 1 then allow following instruction to complete execution

if D = 1 and A = 1 and L = 1 and IMM = 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

144 japan.xilinx.com MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ドUG081 (v10.3)

Page 145: MicroBlaze プロセッサ リファレンス ガイド - Xilinx...MicroBlaze プロセッサ ガイドリファレンス japan.xilinx.com UG081 (v10.3)Xilinx is providing this product

命令

変更されるレジス タ

• rD

• PC

• MSR[UM]、 MSR[VM]

レ イ テンシ

2 ク ロ ッ ク サイ クル (D ビ ッ ト が 1 の場合)

3 ク ロ ッ ク サイ クル (D ビ ッ ト が 0 の場合)

メ モ

命令 brli および brali は、 使用でき ません。

デフ ォル ト では、 タ イプ B 命令は 16 ビ ッ ト の IMM フ ィ ール ド の値を取 り 込み、それを 32 ビ ッ ト

に符号拡張し て、 即値オペラ ン ド と し て使用し ます。 タ イプ B 命令の前に imm 命令を使用する と、

32 ビ ッ ト の即値を使用でき ます。 32 ビ ッ ト の即値の使用に関する詳細は、 166 ページの 「imm」 を

参照し て く ださ い。

遅延ス ロ ッ ト は、 imm、 分岐、 ブレーク命令で使用でき ません。 割 り 込みおよび外部ハード ウ ェ ア

ブレークは、 遅延ス ロ ッ ト の分岐が完了する まで延期されます。

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド japan.xilinx.com 145UG081 (v10.3)

Page 146: MicroBlaze プロセッサ リファレンス ガイド - Xilinx...MicroBlaze プロセッサ ガイドリファレンス japan.xilinx.com UG081 (v10.3)Xilinx is providing this product

第 4 章 : MicroBlaze 命令セ ッ ト アーキテ クチャ

brk Break

説明

rB のア ド レ ス値に格納される命令に分岐、 リ ン ク し ます。 PC の現在の値が rD に格納されます。

MSR の BIP フ ラ グが 1 にな り 、 予約ビ ッ ト はク リ アにな り ます。

MicroBlaze で MMU が使用される場合 (C_USE_MMU >= 1) こ の命令は特権命令にな り 、 ユー

ザー モード (MSR[UM] = 1) で使用する と特権命令例外が発生し ます。

擬似コー ド

if MSR[UM] == 1 thenESR[EC] ← 00111

else(rD) ← PCPC ← (rB)MSR[BIP] ← 1Reservation ← 0

変更されるレジス タ

• 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

146 japan.xilinx.com MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ドUG081 (v10.3)

Page 147: MicroBlaze プロセッサ リファレンス ガイド - Xilinx...MicroBlaze プロセッサ ガイドリファレンス japan.xilinx.com UG081 (v10.3)Xilinx is providing this product

命令

brki Break Immediate

説明

32 ビ ッ ト に符号拡張された IMM のア ド レ ス値に格納されている命令に分岐、リ ン ク し ます。 PC の

現在の値が rD に格納されます。 MSR の BIP フ ラ グが 1 に設定され、予約ビ ッ ト がク リ アにな り ま

す。

MicroBlaze で MMU が使用される場合 (C_USE_MMU >= 1)、brki rD, 0x8 または brki rD, 0x18 を使用し て ソ フ ト ウ ェ ア ブレークが実行される場合を除いて この命令は特権命令にな り 、

ユーザー モード (MSR[UM] = 1) で使用する と特権命令例外が発生し ます。

MicroBlaze で MMU が使用され (C_USE_MMU >= 1) 、 bralid rD, 0x8 を使用し てユーザー ベ

ク タ例外が処理される場合は、MSR のユーザー モード ビ ッ ト および仮想モード ビ ッ ト が 0 にな り

ます。

擬似コー ド

if MSR[UM] = 1 and IMM ≠ 0x8 and IMM ≠ 0x18 thenESR[EC] ← 00111

else(rD) ← PCPC ← sext(IMM)MSR[BIP] ← 1 Reservation ← 0 if IMM = 0x8 or IMM = 0x18 thenMSR[UMS] ← MSR[UM]MSR[VMS] ← MSR[VM]MSR[UM] ← 0MSR[VM] ← 0

変更されるレジス タ

• rD (例外が発生し た場合は変更なし )

• PC

• MSR[BIP]、 MSR[UM]、 MSR[VM]

• ESR[EC] (特権命令例外が発生し た場合)

レ イ テンシ

3 ク ロ ッ ク サイ クル

メ モ

デフ ォル ト では、 タ イプ B 命令は 16 ビ ッ ト の IMM フ ィ ール ド の値を取 り 込み、それを 32 ビ ッ ト

に符号拡張し て、 即値オペラ ン ド と し て使用し ます。 タ イプ B 命令の前に imm 命令を使用する と、

32 ビ ッ ト の即値を使用でき ます。 32 ビ ッ ト の即値の使用に関する詳細は、 166 ページの 「imm」 を

参照し て く ださ い。

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 147UG081 (v10.3)

Page 148: MicroBlaze プロセッサ リファレンス ガイド - Xilinx...MicroBlaze プロセッサ ガイドリファレンス japan.xilinx.com UG081 (v10.3)Xilinx is providing this product

第 4 章 : MicroBlaze 命令セ ッ ト アーキテ クチャ

bs Barrel Shift

説明

レジス タ rB で指定された分だけレジス タ rA の内容をシフ ト し、 その結果を レジス タ rD に格納し

ます。

bsll に対し ては、 S ビ ッ ト (サイ ド ビ ッ ト ) が 1 に設定されます。 S ビ ッ ト が 1 の場合は、 左側への

シフ ト が実行されます。 bsrl および bsra に対し ては S ビ ッ ト は 0 に設定され、右側へのシフ ト が実

行されます。

bsra に対し ては、 T ビ ッ ト (タ イ プ ビ ッ ト ) が 1 に設定さ れま す。 T ビ ッ ト が 1 の場合、 算術シフ

ト が実行さ れま す。 bsrl およ び bsll に対し ては T ビ ッ ト は 0 に設定さ れ、論理シフ ト が実行さ れま

す。

擬似コー ド

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

レ イ テンシ

C_AREA_OPTIMIZED=0 の場合 1 ク ロ ッ ク サイ クル

C_AREA_OPTIMIZED=1 の場合 2 ク ロ ッ ク サイ クル

メ モ

これらの命令は、 オプシ ョ ンです。 MicroBlaze でパラ メ ータ C_USE_BARREL が 1 に設定されて

いる場合にのみ使用可能です。

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

148 japan.xilinx.com MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ドUG081 (v10.3)

Page 149: MicroBlaze プロセッサ リファレンス ガイド - Xilinx...MicroBlaze プロセッサ ガイドリファレンス japan.xilinx.com UG081 (v10.3)Xilinx is providing this product

命令

bsi Barrel Shift Immediate

説明

IMM で指定された分だけレジス タ rA の内容をシフ ト し、 その結果を レジス タ rD に格納し ます。

bslli に対し ては、S ビ ッ ト (サイ ド ビ ッ ト ) が 1 に設定されます。 S ビ ッ ト が 1 の場合は、左側への

シフ ト が実行されます。 bsrli および bsrai に対し ては S ビ ッ ト は 0 に設定され、 右側へのシフ ト が

実行されます。

bsrai に対し ては、 T ビ ッ ト (タ イプ ビ ッ ト ) が 1 に設定されます。 T ビ ッ ト が 1 の場合、 算術シフ

ト が実行されます。 bsrli および bslli に対し ては T ビ ッ ト は 0 に設定され、論理シフ ト が実行されま

す。

擬似コー ド

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

レ イ テンシ

C_AREA_OPTIMIZED=0 の場合 1 ク ロ ッ ク サイ クル

C_AREA_OPTIMIZED=1 の場合 2 ク ロ ッ ク サイ クル

メ モ

これらは、タ イプ B 命令ではあ り ません。 これらの命令の前に imm 命令を実行し て も、影響はあ り

ません。

これらの命令は、 オプシ ョ ンです。 MicroBlaze でパラ メ ータ C_USE_BARREL が 1 に設定されて

いる場合にのみ使用可能です。

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 149UG081 (v10.3)

Page 150: MicroBlaze プロセッサ リファレンス ガイド - Xilinx...MicroBlaze プロセッサ ガイドリファレンス japan.xilinx.com UG081 (v10.3)Xilinx is providing this product

第 4 章 : MicroBlaze 命令セ ッ ト アーキテ クチャ

cmp Integer Compare

説明

レジス タ rB の内容から レジス タ rA の内容を減算し、 その結果を レジス タ rD に格納し ます。

rD の MSB ビ ッ ト は、 rA と rB の関係が真であ るかど う かを示すよ う 調整されます。 U ビ ッ ト が 1 の場合、 rA と rB は符号なしの値とみな されます。 U ビ ッ ト が 0 の場合、 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

150 japan.xilinx.com MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ドUG081 (v10.3)

Page 151: MicroBlaze プロセッサ リファレンス ガイド - Xilinx...MicroBlaze プロセッサ ガイドリファレンス japan.xilinx.com UG081 (v10.3)Xilinx is providing this product

命令

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)) and then(rD) ← signInfinite((rA)+(rB))FSR[OF] ← 1ESR[EC] ← 00110

else(rD) ← (rA) + (rB)

変更されるレジス タ

• rD (FP 例外が発生し た場合は変更なし )

• ESR[EC] (FP 例外が発生し た場合)

• FSR[IO,UF,OF,DO]

レ イ テンシ

C_AREA_OPTIMIZED=0 の場合 4 ク ロ ッ ク サイ クル

C_AREA_OPTIMIZED=1 の場合 6 ク ロ ッ ク サイ クル

メ モ

こ の命令は、 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 151UG081 (v10.3)

Page 152: MicroBlaze プロセッサ リファレンス ガイド - Xilinx...MicroBlaze プロセッサ ガイドリファレンス japan.xilinx.com UG081 (v10.3)Xilinx is providing this product

第 4 章 : MicroBlaze 命令セ ッ ト アーキテ クチャ

frsub Reverse Floating Point Arithmetic Subtraction

説明

レジス タ rB の浮動小数点値から レジス タ rA の浮動小数点値を減算し、 その結果を レジス タ 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]

レ イ テンシ

C_AREA_OPTIMIZED=0 の場合 4 ク ロ ッ ク サイ クル

C_AREA_OPTIMIZED=1 の場合 6 ク ロ ッ ク サイ クル

メ モ

こ の命令は、 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

152 japan.xilinx.com MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ドUG081 (v10.3)

Page 153: MicroBlaze プロセッサ リファレンス ガイド - Xilinx...MicroBlaze プロセッサ ガイドリファレンス japan.xilinx.com UG081 (v10.3)Xilinx is providing this product

命令

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]

レ イ テンシ

C_AREA_OPTIMIZED=0 の場合 4 ク ロ ッ ク サイ クル

C_AREA_OPTIMIZED=1 の場合 6 ク ロ ッ ク サイ クル

メ モ

こ の命令は、 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 153UG081 (v10.3)

Page 154: MicroBlaze プロセッサ リファレンス ガイド - Xilinx...MicroBlaze プロセッサ ガイドリファレンス japan.xilinx.com UG081 (v10.3)Xilinx is providing this product

第 4 章 : 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] ← 1ESR[EC] ← 00110

else if isQuietNaN(rA) or isQuietNaN(rB) then(rD) ← 0xFFC00000

else if isZero(rA) and not isInfinite(rB) then(rD) ← signInfinite((rB)/(rA))FSR[DZ] ← 1ESR[EC] ← 00110

else if isDnz((rB)/(rA)) then(rD) ← signZero((rB)/(rA))FSR[UF] ← 1ESR[EC] ← 00110

else if isNaN((rB)/(rA)) then(rD) ← signInfinite((rB)/(rA))FSR[OF] ← 1ESR[EC] ← 00110

else(rD) ← (rB) / (rA)

変更されるレジス タ

• rD (FP 例外が発生し た場合は変更なし )

• ESR[EC] (FP 例外が発生し た場合)

• FSR[IO,UF,OF,DO,DZ]

レ イ テンシ

C_AREA_OPTIMIZED=0 の場合 28 ク ロ ッ ク サイ クル

C_AREA_OPTIMIZED=1 の場合 30 ク ロ ッ ク サイ クル

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

154 japan.xilinx.com MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ドUG081 (v10.3)

Page 155: MicroBlaze プロセッサ リファレンス ガイド - Xilinx...MicroBlaze プロセッサ ガイドリファレンス japan.xilinx.com UG081 (v10.3)Xilinx is providing this product

命令

メ モ

こ の命令は、 MicroBlaze でパラ メ ータ C_USE_FPU が 0 よ り 大きい値に設定されている場合にの

み使用可能です。

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド japan.xilinx.com 155UG081 (v10.3)

Page 156: MicroBlaze プロセッサ リファレンス ガイド - Xilinx...MicroBlaze プロセッサ ガイドリファレンス japan.xilinx.com UG081 (v10.3)Xilinx is providing this product

第 4 章 : MicroBlaze 命令セ ッ ト アーキテ クチャ

fcmp Floating Point Number Comparison

説明

レジス タ rB の浮動小数点値を レジス タ rA の浮動小数点値と比較し、 その結果を レジス タ rD に格

納し ます。 命令コード の OpSel フ ィ ール ド で、 実行する比較タ イプを指定し ます。

擬似コー ド

if isDnz(rA) or isDnz(rB) then(rD) ← 0FSR[DO] ← 1ESR[EC] ← 00110

else

{ 表 4-2 の演算を参照 }

変更されるレジス タ

• rD (FP 例外が発生し た場合は変更なし )

• ESR[EC] (FP 例外が発生し た場合)

• FSR[IO,DO]

レ イ テンシ

C_AREA_OPTIMIZED=0 の場合 1 ク ロ ッ ク サイ クル

C_AREA_OPTIMIZED=1 の場合 3 ク ロ ッ ク サイ クル

メ モ

こ の命令は、 MicroBlaze でパラ メ ータ C_USE_FPU が 0 よ り 大きい値に設定されている場合にの

み使用可能です。

157 ページの表 4-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

156 japan.xilinx.com MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ドUG081 (v10.3)

Page 157: MicroBlaze プロセッサ リファレンス ガイド - Xilinx...MicroBlaze プロセッサ ガイドリファレンス japan.xilinx.com UG081 (v10.3)Xilinx is providing this product

命令

表 4-2 : 浮動小数点の比較演算 比較タ イプ オペラ ン ドの関係

説明 OpSel (rB) > (rA) (rB) < (rA) (rB) = (rA) isSigNaN(rA) または isSigNaN(rB)

isQuietNaN(rA) または

isQuietNaN(rB)

順序付けな し 000 (rD) ← 0 (rD) ← 0 (rD) ← 0 (rD) ← 1

FSR[IO] ← 1

ESR[EC] ← 00110

(rD) ← 1

小な り 001 (rD) ← 0 (rD) ← 1 (rD) ← 0 (rD) ← 0

FSR[IO] ← 1

ESR[EC] ← 00110

(rD) ← 0

FSR[IO] ← 1

ESR[EC] ← 00110

等価 010 (rD) ← 0 (rD) ← 0 (rD) ← 1 (rD) ← 0

FSR[IO] ← 1

ESR[EC] ← 0011

(rD) ← 0

以下 011 (rD) ← 0 (rD) ← 1 (rD) ← 1 (rD) ← 0

FSR[IO] ← 1

ESR[EC] ← 00110

(rD) ← 0

FSR[IO] ← 1

ESR[EC] ← 00110

大な り 100 (rD) ← 1 (rD) ← 0 (rD) ← 0 (rD) ← 0

FSR[IO] ← 1

ESR[EC] ← 00110

(rD) ← 0

FSR[IO] ← 1

ESR[EC] ← 00110

非等価 101 (rD) ← 1 (rD) ← 1 (rD) ← 0 (rD) ← 1

FSR[IO] ← 1

ESR[EC] ← 0011

(rD) ← 1

以上 110 (rD) ← 1 (rD) ← 0 (rD) ← 1 (rD) ← 0

FSR[IO] ← 1

ESR[EC] ← 00110

(rD) ← 0

FSR[IO] ← 1

ESR[EC] ← 00110

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド japan.xilinx.com 157UG081 (v10.3)

Page 158: MicroBlaze プロセッサ リファレンス ガイド - Xilinx...MicroBlaze プロセッサ ガイドリファレンス japan.xilinx.com UG081 (v10.3)Xilinx is providing this product

第 4 章 : MicroBlaze 命令セ ッ ト アーキテ クチャ

flt Floating Point Convert Integer to Float

説明

レジス タ rA の符号付き整数を浮動小数点値に変換し、 その結果を レジス タ rD に格納し ます。 これ

は 32 ビ ッ ト の符号付き繰 り 上げ/繰 り 下げ変換で、 結果は 32 ビ ッ ト の浮動小数点値にな り ます。

擬似コー ド

(rD) ← float ((rA))

変更されるレジス タ

• rD

レ イ テンシ

C_AREA_OPTIMIZED=0 の場合 4 ク ロ ッ ク サイ クル

C_AREA_OPTIMIZED=1 の場合 6 ク ロ ッ ク サイ クル

メ モ

こ の命令は、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

158 japan.xilinx.com MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ドUG081 (v10.3)

Page 159: MicroBlaze プロセッサ リファレンス ガイド - Xilinx...MicroBlaze プロセッサ ガイドリファレンス japan.xilinx.com UG081 (v10.3)Xilinx is providing this product

命令

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,UF,OF,DO]

レ イ テンシ

C_AREA_OPTIMIZED=0 の場合 5 ク ロ ッ ク サイ クル

C_AREA_OPTIMIZED=1 の場合 7 ク ロ ッ ク サイ クル

メ モ

こ の命令は、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 159UG081 (v10.3)

Page 160: MicroBlaze プロセッサ リファレンス ガイド - Xilinx...MicroBlaze プロセッサ ガイドリファレンス japan.xilinx.com UG081 (v10.3)Xilinx is providing this product

第 4 章 : MicroBlaze 命令セ ッ ト アーキテ クチャ

fsqrt Floating Point Arithmetic Square Root

説明

rA の値の浮動小数点平方根演算を実行し、 その結果を レジス タ rD に格納し ます。

擬似コー ド

if isDnz(rA) then(rD) ← 0xFFC00000FSR[DO] ← 1ESR[EC] ← 00110

else if isSigNaN(rA) then(rD) ← 0xFFC00000FSR[IO] ← 1ESR[EC] ← 00110

else if isQuietNaN(rA) then(rD) ← 0xFFC00000

else if (rA) < 0 then(rD) ← 0xFFC00000FSR[IO] ← 1ESR[EC] ← 00110

else if (rA) = -0 then(rD) ← -0

else(rD) ← sqrt ((rA))

変更されるレジス タ

• rD (FP 例外が発生し た場合は変更なし )

• ESR[EC] (FP が発生し た場合)

• FSR[IO,UF,OF,DO]

レ イ テンシ

C_AREA_OPTIMIZED=0 の場合 27 ク ロ ッ ク サイ クル

C_AREA_OPTIMIZED=1 の場合 29 ク ロ ッ ク サイ クル

メ モ

こ の命令は、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

160 japan.xilinx.com MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ドUG081 (v10.3)

Page 161: MicroBlaze プロセッサ リファレンス ガイド - Xilinx...MicroBlaze プロセッサ ガイドリファレンス japan.xilinx.com UG081 (v10.3)Xilinx is providing this product

命令

get get from fsl interface

説明

FSLx イ ン ターフ ェ イ スから読み出し た値を レジス タ rD に格納し ます。

get 命令には、 32 種類あ り ます。

ブロ ッ キングの get 命令 (n ビ ッ ト が 0) では、 FSL イ ン ターフ ェ イ スから有効なデータが取得され

る までの間 MicroBlaze を ス ト ールし ます。ノ ンブロ ッ キングの get 命令では MicroBlaze はス ト ー

ルされず、 データが有効な場合はキ ャ リ ーが 0 に、 無効の場合は 1 にな り ます。 ア ク セスが無効な

場合は、 デステ ィ ネーシ ョ ン レジス タの内容は定義されません。

すべてのデータ get 命令 (c ビ ッ ト が 0) では、 FSL イ ン ターフ ェ イ スの制御ビ ッ ト が 0 であ る こ と

が想定されます。 0 ではない場合は、MSR[FSL_Error] が 1 に設定されます。 すべての制御 get 命令

(c ビ ッ ト が 1) では、FSL イ ン ターフ ェ イ スの制御ビ ッ ト が 1 であ る こ と が想定されます。1 でない

場合は、 MSR[FSL_Error] が 1 に設定されます。

例外の get 命令 (e ビ ッ ト が 1) では、制御ビ ッ ト の不一致があ る場合に例外が生成されます。 こ の場

合、 ESR で EC に例外の原因が、 ESS に FSL イ ンデッ ク スが設定されます。 例外が発生し た場合、

ターゲ ッ ト レジス タ rD はア ッ プデー ト されず、 FSL データが EDR に格納されます。

テス ト の get 命令 (t ビ ッ ト が 1) は、FSL リ ン クへの読み出し信号がアサー ト されない点を除き、通

常どお り 処理されます。

不可分の get 命令 (a ビ ッ ト が 1) は割 り 込み不可です。 不可分 FSL 命令のシーケン スはグループ化

され、 プロ グ ラ ムのフ ローへは割 り 込みでき ません。 ただし、 例外は発生し ます。

MicroBlaze で MMU が使用される場合 (C_USE_MMU >= 1) これらの命令は特権命令にな り 、

ユーザー モード (MSR[UM] = 1) で使用する と特権命令例外が発生し ます。

tneaget rD, FSLx FSL x からデータ を読み出し t : テス ト のみ n : ノ ンブロ ッ キング e : 制御ビ ッ ト が 1 の場合例外 a : 不可分

tnecaget rD, FSLx FSL x から制御を読み出し t : テス ト のみ n : ノ ンブロ ッ キング e : 制御ビ ッ ト が 0 の場合例外 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 161UG081 (v10.3)

Page 162: MicroBlaze プロセッサ リファレンス ガイド - Xilinx...MicroBlaze プロセッサ ガイドリファレンス japan.xilinx.com UG081 (v10.3)Xilinx is providing this product

第 4 章 : MicroBlaze 命令セ ッ ト アーキテ クチャ

擬似コー ド

if MSR[UM] = 1 thenESR[EC] ← 00111

else(rD) ← FSLxif (n = 1) thenMSR[Carry] ← not (FSLx Exists bit)

if (FSLx Control bit ≠ c) and (FSLx Exists bit) thenMSR[FSL_Error] ← 1 if (e = 1) thenESR[EC] ← 00000ESR[ESS]← instruction bits [28:31]EDR ← FSLx

変更されるレジス タ

• rD (例外が発生し た場合は変更なし )

• MSR[FSL_Error]

• MSR[Carry]

• ESR[EC] (FSL 例外または特権命令例外が発生し た場合)

• ESR[ESS] (FSL 例外が発生し た場合)

• EDR (FSL 例外が発生し た場合)

レ イ テンシ

C_AREA_OPTIMIZED=0 の場合 1 ク ロ ッ ク サイ クル

C_AREA_OPTIMIZED=1 の場合 2 ク ロ ッ ク サイ クル

ブロ ッ キングの get 命令では、命令が完了可能になる まで MicroBlaze のパイプラ イ ンがス ト ールし

ます。 割 り 込みは、 パラ メ ータ C_USE_EXTENDED_FSL_INSTR が 1 に設定され、 命令が不可分

でない場合に実行されます。

メ モ

アセンブ リ 言語で FSLx イ ン ターフ ェ イ ス を参照するには、 rfsl0, rfsl1, ... rfsl15 を使用し ます。

ブロ ッ キングの get 命令を遅延ス ロ ッ ト に含める と割 り 込みが発生し な く なるため、 パラ メ ータ

C_USE_EXTENDED_FSL_INSTR が 1 に設定されている場合は、こ の命令を遅延ス ロ ッ ト に含め

る こ と ができ ません。

ノ ンブロ ッ キングの get 命令では、rsubc 命令を使用し て、 イ ンデッ ク ス変数をデク リ メ ン ト でき ま

す。

C_FSL_EXCEPTION が 1 に設定されている場合を除き、 e ビ ッ ト の設定は影響し ません。

これらの命令は、 MicroBlaze でパラ メータ C_FSL_LINKS が 0 よ り 大きい値に設定されている場

合にのみ使用可能です。

拡張命令 (例外、 テス ト 、 および不可分の get 命令) は、 パラ メ ータ C_USE_EXTENDED_FSL_ INSTR が 1 に設定されている場合にのみ使用可能です。

162 japan.xilinx.com MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ドUG081 (v10.3)

Page 163: MicroBlaze プロセッサ リファレンス ガイド - Xilinx...MicroBlaze プロセッサ ガイドリファレンス japan.xilinx.com UG081 (v10.3)Xilinx is providing this product

命令

getd get from fsl interface dynamic

説明

rB の下位 4 ビ ッ ト で定義された FSL イ ン ターフ ェ イ スから読み出し た結果が、レジス タ rD に格納

されます。

getd 命令には、 32 種類あ り ます。

ブロ ッ キング データの getd 命令 (n ビ ッ ト が 0) では、 FSL イ ン ターフ ェ イ スから有効なデータが

取得される までの間 MicroBlaze を ス ト ールし ます。 ノ ンブロ ッ キング データの getd 命令では

MicroBlaze はス ト ールされず、データが有効な場合はキ ャ リ ーが 0 に、無効の場合は 1 にな り ます。

ア ク セスが無効な場合は、 デステ ィ ネーシ ョ ン レジス タの内容は定義されません。

すべてのデータ getd 命令 (c ビ ッ ト が 0) では、FSL イ ン ターフ ェ イ スの制御ビ ッ ト が 0 であ る こ と

が想定されます。 0 ではない場合は、 MSR[FSL_Error] が 1 に設定されます。 すべての制御 getd 命

令 (c ビ ッ ト が 1) では、 FSL イ ン ターフ ェ イ スの制御ビ ッ ト が 1 であ る こ と が想定されます。 1 で

ない場合は、 MSR[FSL_Error] が 1 に設定されます。

例外の getd 命令 (e ビ ッ ト が 1) では、 制御ビ ッ ト の不一致があ る場合に例外が生成されます。 こ の

場合、ESR で EC に例外の原因が、ESS に FSL イ ンデッ ク スが設定されます。 例外が発生し た場合、

ターゲ ッ ト レジス タ rD はア ッ プデー ト されず、 FSL データが EDR に格納されます。

テス ト の getd 命令 (t ビ ッ ト が 1) は、FSL リ ン クへの読み出し信号がアサー ト されない点を除き、通

常どお り 処理されます。

不可分の getd 命令 (a ビ ッ ト が 1) は割 り 込み不可です。 不可分 FSL 命令のシーケン スはグループ

化され、 プロ グ ラ ムのフ ローへは割 り 込みでき ません。 ただし、 例外は発生し ます。

MicroBlaze で MMU が使用される場合 (C_USE_MMU >= 1) これらの命令は特権命令にな り 、

ユーザー モード (MSR[UM] = 1) で使用する と特権命令例外が発生し ます。

tneagetd rD, rB FSL rB[28:31] からデータ を読み出し t : テス ト のみ n : ノ ンブロ ッ キング e : 制御ビ ッ ト が 1 の場合例外 a : 不可分

tnecagetd rD, rB FSL rB[28:31] から制御を読み出し t : テス ト のみ n : ノ ンブロ ッ キング e : 制御ビ ッ ト が 0 の場合例外 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 163UG081 (v10.3)

Page 164: MicroBlaze プロセッサ リファレンス ガイド - Xilinx...MicroBlaze プロセッサ ガイドリファレンス japan.xilinx.com UG081 (v10.3)Xilinx is providing this product

第 4 章 : MicroBlaze 命令セ ッ ト アーキテ クチャ

擬似コー ド

if MSR[UM] = 1 thenESR[EC] ← 00111

else(rD) ← (FSL rB[28:31])if (n = 1) thenMSR[Carry] ← not (FSL rB[28:31] Exists bit)

if (FSL rB[28:31] Control bit ≠ c) and (FSL rB[28:31] Exists bit) thenMSR[FSL_Error] ← 1 if (e = 1) thenESR[EC] ← 00000ESR[ESS]← rB[28:31]EDR ← (FSL rB[28:31])

変更されるレジス タ

• rD (例外が発生し た場合は変更なし )

• MSR[FSL_Error]

• MSR[Carry]

• ESR[EC] (FSL 例外または特権命令例外が発生し た場合)

• ESR[ESS] (FSL 例外が発生し た場合)

• EDR (FSL 例外が発生し た場合)

レ イ テンシ

C_AREA_OPTIMIZED=0 の場合 1 ク ロ ッ ク サイ クル

C_AREA_OPTIMIZED=1 の場合 2 ク ロ ッ ク サイ クル

ブロ ッ キングの getd 命令では、 命令が完了可能になる まで MicroBlaze のパイプラ イ ンがス ト ール

し ます。 割 り 込みは、 命令が不可分 (割 り 込み不可) ではない場合に実行されます。

メ モ

ブロ ッ キングの getd 命令を遅延ス ロ ッ ト に含める と割 り 込みが発生し な く なる ため、こ の命令を遅

延ス ロ ッ ト に含める こ と ができ ません。

ノ ンブロ ッ キングの getd 命令では、 rsubc 命令を使用し て、 イ ンデッ ク ス変数をデク リ メ ン ト でき

ます。

C_FSL_EXCEPTION が 1 に設定されている場合を除き、 e ビ ッ ト の設定は影響し ません。

これらの命令は、 パラ メ ータ C_FSL_LINKS が 0 よ り 大きい値に設定され、 パラ メータ C_USE_ EXTENDED_FSL_INSTR が 1 に設定されている場合にのみ使用可能です。

164 japan.xilinx.com MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ドUG081 (v10.3)

Page 165: MicroBlaze プロセッサ リファレンス ガイド - Xilinx...MicroBlaze プロセッサ ガイドリファレンス japan.xilinx.com UG081 (v10.3)Xilinx is providing this product

命令

idiv Integer Divide

説明

レジス タ rB の内容を レジス タ rA の内容で除算し、 その結果を レジス タ rD に格納し ます。

U ビ ッ ト が 1 の場合、 rA と rB は符号な しの値とみな されます。 U ビ ッ ト が 0 の場合、 rA と rB は

符号付きの値とみな されます。

rA の値が 0 の場合、例外が発生し ない限 り 、 MSR の DZO ビ ッ ト が 1 にな り 、 rD の値は 0 にな り

ます。

U ビ ッ ト が ク リ アの場合、 rA の値は -1、 rB の値は -2147483648 の場合、 MSR の DZO ビ ッ ト は

セ ッ ト され rD の値は、 例外が生成されない限 り 、 -2147483648 にな り ます。

擬似コー ド

if (rA) = 0 then(rD) <- 0MSR[DZO] <- 1ESR[EC] <- 00101 ESR[DEC] <- 0

else if U = 0 and (rA) = -1 and (rB) = -2147483648 then(rD) <- -2147483648MSR[DZO] <- 1ESR[EC] <- 00101 ESR[DEC] <- 1

else(rD) ← (rB) / (rA)

変更されるレジス タ

• rD (除算例外が発生し た場合は変更なし )

• MSR[DZO] (rA の値が 0 の場合)

• ESR[EC] (rA の値が 0 の場合)

レ イ テンシ

(rA) = 0 の場合 1 ク ロ ッ ク サイ クル、それ以外は C_AREA_OPTIMIZED=0 の場合 32 ク ロ ッ ク サ

イ クル

(rA) = 0 の場合 1 ク ロ ッ ク サイ クル、それ以外は C_AREA_OPTIMIZED=1 の場合 34 ク ロ ッ ク サ

イ クル

メ モ

こ の命令は、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 165UG081 (v10.3)

Page 166: MicroBlaze プロセッサ リファレンス ガイド - Xilinx...MicroBlaze プロセッサ ガイドリファレンス japan.xilinx.com UG081 (v10.3)Xilinx is providing this product

第 4 章 : MicroBlaze 命令セ ッ ト アーキテ クチャ

imm Immediate

説明

imm 命令は、IMM の値を一時レジス タに読み込み、次の命令で 32 ビ ッ ト の即値を形成でき る よ う

に、 こ の値を ロ ッ ク し ます。

imm 命令は、 タ イプ B 命令と共に使用し ます。 タ イプ B 命令では 16 ビ ッ ト の即値フ ィ ール ド しか

ないため、32 ビ ッ ト の即値は直接使用でき ませんが、 MicroBlaze では 32 ビ ッ ト の即値を使用でき

ます。 デフ ォル ト では、 タ イプ B 命令は 16 ビ ッ ト の IMM フ ィ ール ド の値を取 り 込み、 それを 32 ビ ッ ト に符号拡張し て、即値オペラ ン ド と し て使用し ます。タ イプ B 命令の前に imm 命令を使用す

る と、 32 ビ ッ ト の即値を使用でき ます。 imm 命令は、 16 ビ ッ ト の IMM 値を次の命令で使用でき

る よ う 一時的にロ ッ ク し ます。 この imm 命令の直後にタ イプ B 命令を実行する と、 こ の imm 命令

の 16 ビ ッ ト の IMM 値 (上位 16 ビ ッ ト ) と タ イプ B 命令の 16 ビ ッ ト の IMM 値 (下位 16 ビ ッ ト ) から 32 ビ ッ ト の即値が形成されます。 imm 命令の後にタ イプ B 命令が実行されない場合は、 ロ ッ

ク された値は解除されます。

レ イ テンシ

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

166 japan.xilinx.com MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ドUG081 (v10.3)

Page 167: MicroBlaze プロセッサ リファレンス ガイド - Xilinx...MicroBlaze プロセッサ ガイドリファレンス japan.xilinx.com UG081 (v10.3)Xilinx is providing this product

命令

lbu Load Byte Unsigned

説明

レジス タ rA と rB を加算し た結果の メ モ リ ロ ケーシ ョ ンから 1 バイ ト (8 ビ ッ ト ) 読み込みます。

データはレジス タ rD の 下位バイ ト に格納され、 その他の 3 バイ ト はク リ ア されます。

データ 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] (データ格納例外が発生し た場合)

レ イ テンシ

C_AREA_OPTIMIZED=0 の場合 1 ク ロ ッ ク サイ クル

C_AREA_OPTIMIZED=1 の場合 2 ク ロ ッ ク サイ クル

lbu rD, rA, rB

1 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 167UG081 (v10.3)

Page 168: MicroBlaze プロセッサ リファレンス ガイド - Xilinx...MicroBlaze プロセッサ ガイドリファレンス japan.xilinx.com UG081 (v10.3)Xilinx is providing this product

第 4 章 : MicroBlaze 命令セ ッ ト アーキテ クチャ

lbui Load Byte Unsigned Immediate

説明

レジス タ rA の内容と 32 ビ ッ ト に符号拡張された IMM 値を加算し た結果の メ モ リ ロ ケーシ ョ ン

から 1 バイ ト (8 ビ ッ ト ) 読み込みます。 データは レジス タ 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] (データ格納例外が発生し た場合)

レ イ テンシ

C_AREA_OPTIMIZED=0 の場合 1 ク ロ ッ ク サイ クル

C_AREA_OPTIMIZED=1 の場合 2 ク ロ ッ ク サイ クル

メ モ

デフ ォル ト では、 タ イプ B 命令は 16 ビ ッ ト の IMM フ ィ ール ド の値を取 り 込み、それを 32 ビ ッ ト

に符号拡張し て、 即値オペラ ン ド と し て使用し ます。 タ イプ B 命令の前に imm 命令を使用する と、

32 ビ ッ ト の即値を使用でき ます。 32 ビ ッ ト の即値の使用に関する詳細は、 166 ページの 「imm」 を

参照し て く ださ い。

lbui rD, rA, IMM

1 1 1 0 0 0 rD rA IMM

0 6 11 16 31

168 japan.xilinx.com MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ドUG081 (v10.3)

Page 169: MicroBlaze プロセッサ リファレンス ガイド - Xilinx...MicroBlaze プロセッサ ガイドリファレンス japan.xilinx.com UG081 (v10.3)Xilinx is providing this product

命令

lhu Load Halfword Unsigned

説明

レジス タ rA と rB を加算し た結果を、ハーフ ワード で揃えた メ モ リ ロ ケーシ ョ ンから 1 ハーフ ワー

ド (16 ビ ッ ト ) 読み込みます。 データはレジス タ rD の下位ハーフ ワード に格納され、 上位ハーフ

ワード はク リ ア されます。

データ TLB ミ ス例外は、仮想保護モード がイネーブルで、ア ド レ スに対応する有効な変換エン ト リ

が TLB で検出されない場合に発生し ます。

ア ク セス不可ゾーン保護でア ク セスが禁止されている場合は、 データ格納例外が発生し ます。 これ

は、 ユーザー モードおよび仮想保護モード がイネーブルの場合のア ク セスにのみ適用されます。

不整列データ ア ク セスによ る例外は、 ア ド レ スの 下位ビ ッ ト が 0 でない場合に発生し ます。

擬似コー ド

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] (TLB ミ ス例外またはデータ格納例外が発

生し た場合)

• ESR[EC]、 ESR[S] (例外が発生し た場合)

• ESR[DIZ] (データ格納例外が発生し た場合)

• ESR[W]、 ESR[Rx] (不整列データ ア ク セスによ る例外が発生し た場合)

レ イ テンシ

C_AREA_OPTIMIZED=0 の場合 1 ク ロ ッ ク サイ クル

C_AREA_OPTIMIZED=1 の場合 2 ク ロ ッ ク サイ クル

lhu rD, rA, rB

1 1 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 169UG081 (v10.3)

Page 170: MicroBlaze プロセッサ リファレンス ガイド - Xilinx...MicroBlaze プロセッサ ガイドリファレンス japan.xilinx.com UG081 (v10.3)Xilinx is providing this product

第 4 章 : MicroBlaze 命令セ ッ ト アーキテ クチャ

lhui Load Halfword Unsigned Immediate

説明

レジス タ rA の内容 と 32 ビ ッ ト に符号拡張された IMM 値を加算し た結果をハーフ ワード で揃えた

メ モ リ ロ ケーシ ョ ンから 1 ハーフ ワード (16 ビ ッ ト ) 読み込みます。 データはレジス タ rD の下位

ハーフ ワード に格納され、 上位ハーフ ワード はク リ ア されます。

データ TLB ミ ス例外は、仮想保護モード がイネーブルで、ア ド レ スに対応する有効な変換エン ト リ

が TLB で検出されない場合に発生し ます。 ア ク セス不可ゾーン保護でア ク セスが禁止されている

場合は、 データ格納例外が発生し ます。 これは、 ユーザー モードおよび仮想保護モード がイ ネーブ

ルの場合のア ク セスにのみ適用されます。 不整列データ ア ク セスによ る例外は、 ア ド レ スの 下位

ビ ッ ト が 0 でない場合に発生し ます。

擬似コー ド

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] (不整列データ ア ク セスによ る例外が発生し た場合)

レ イ テンシ

C_AREA_OPTIMIZED=0 の場合 1 ク ロ ッ ク サイ クル

C_AREA_OPTIMIZED=1 の場合 2 ク ロ ッ ク サイ クル

メ モ

デフ ォル ト では、 タ イプ B 命令は 16 ビ ッ ト の IMM フ ィ ール ド の値を取 り 込み、それを 32 ビ ッ ト

に符号拡張し て、 即値オペラ ン ド と し て使用し ます。 タ イプ B 命令の前に imm 命令を使用する と、

lhui rD, rA, IMM

1 1 1 0 0 1 rD rA IMM

0 6 11 16 31

170 japan.xilinx.com MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ドUG081 (v10.3)

Page 171: MicroBlaze プロセッサ リファレンス ガイド - Xilinx...MicroBlaze プロセッサ ガイドリファレンス japan.xilinx.com UG081 (v10.3)Xilinx is providing this product

命令

32 ビ ッ ト の即値を使用でき ます。 32 ビ ッ ト の即値の使用に関する詳細は、 166 ページの 「imm」 を

参照し て く ださ い。

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド japan.xilinx.com 171UG081 (v10.3)

Page 172: MicroBlaze プロセッサ リファレンス ガイド - Xilinx...MicroBlaze プロセッサ ガイドリファレンス japan.xilinx.com UG081 (v10.3)Xilinx is providing this product

第 4 章 : MicroBlaze 命令セ ッ ト アーキテ クチャ

lw Load Word

説明

レジス タ rA と rB を加算し た結果を ワード で揃えた メ モ リ ロ ケーシ ョ ンから1 ワード (32 ビ ッ ト ) 読み込みます。 データは、 レジス タ rD に格納されます。

データ TLB ミ ス例外は、仮想保護モード がイネーブルで、ア ド レ スに対応する有効な変換エン ト リ

が TLB で検出されない場合に発生し ます。

ア ク セス不可ゾーン保護でア ク セスが禁止されている場合は、 データ格納例外が発生し ます。 これ

は、 ユーザー モードおよび仮想保護モード がイネーブルの場合のア ク セスにのみ適用されます。

不整列データ ア ク セスによ る例外は、 ア ド レ スの 下位ビ ッ ト が 0 でない場合に発生し ます。

擬似コー ド

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] (不整列データ ア ク セスによ る例外が発生し た場合)

レ イ テンシ

C_AREA_OPTIMIZED=0 の場合 1 ク ロ ッ ク サイ クル

C_AREA_OPTIMIZED=1 の場合 2 ク ロ ッ ク サイ クル

lw rD, rA, rB

1 1 0 0 1 0 rD rA rB 0 0 0 0 0 0 0 0 0 0 0

0 6 11 16 21 31

172 japan.xilinx.com MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ドUG081 (v10.3)

Page 173: MicroBlaze プロセッサ リファレンス ガイド - Xilinx...MicroBlaze プロセッサ ガイドリファレンス japan.xilinx.com UG081 (v10.3)Xilinx is providing this product

命令

lwi Load Word Immediate

説明

レジス タ rA の内容と 32 ビ ッ ト に符号拡張された IMM 値を加算し た結果を ワード で揃えたメ モリ

ロ ケーショ ン から 1 ワ ード (16 ビ ッ ト ) 読み込みま す。 データ は、 レ ジス タ rD に格納さ れま す。

データ TLB ミ ス例外は、仮想保護モード がイネーブルで、ア ド レ スに対応する有効な変換エン ト リ

が TLB で検出されない場合に発生し ます。 ア ク セス不可ゾーン保護でア ク セスが禁止されている

場合は、 データ格納例外が発生し ます。 これは、 ユーザー モードおよび仮想保護モード がイ ネーブ

ルの場合のア ク セスにのみ適用されます。 不整列データ ア ク セスによ る例外は、 ア ド レ スの 下位

ビ ッ ト が 0 でない場合に発生し ます。

擬似コー ド

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] (不整列データ ア ク セスによ る例外が発生し た場合)

レ イ テンシ

C_AREA_OPTIMIZED=0 の場合 1 ク ロ ッ ク サイ クル

C_AREA_OPTIMIZED=1 の場合 2 ク ロ ッ ク サイ クル

メ モ

デフ ォル ト では、 タ イプ B 命令は 16 ビ ッ ト の IMM フ ィ ール ド の値を取 り 込み、それを 32 ビ ッ ト

に符号拡張し て、 即値オペラ ン ド と し て使用し ます。 タ イプ B 命令の前に imm 命令を使用する と、

32 ビ ッ ト の即値を使用でき ます。 32 ビ ッ ト の即値の使用に関する詳細は、 166 ページの 「imm」 を

参照し て く ださ い。

lwi rD, rA, IMM

1 1 1 0 1 0 rD rA IMM

0 6 11 16 31

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド japan.xilinx.com 173UG081 (v10.3)

Page 174: MicroBlaze プロセッサ リファレンス ガイド - Xilinx...MicroBlaze プロセッサ ガイドリファレンス japan.xilinx.com UG081 (v10.3)Xilinx is providing this product

第 4 章 : MicroBlaze 命令セ ッ ト アーキテ クチャ

lwx Load Word Exclusive

説明

レジス タ rA と rB を加算し た結果を ワード で揃えた メ モ リ ロ ケーシ ョ ンから1 ワード (32 ビ ッ ト ) 読み込みます。 データはレジス タ rD に配置され、 予約ビ ッ ト はセ ッ ト され、 キ ャ リ ー フ ラ グ

(MSR[C]) はク リ アにな り ます。

データ TLB ミ ス例外は、仮想保護モード がイネーブルで、ア ド レ スに対応する有効な変換エン ト リ

が TLB で検出されない場合に発生し ます。

ア ク セス不可ゾーン保護でア ク セスが禁止されている場合は、 データ格納例外が発生し ます。 これ

は、 ユーザー モードおよび仮想保護モード がイネーブルの場合のア ク セスにのみ適用されます。

不整列データ ア ク セスによ る例外は、 ア ド レ スの 下位ビ ッ ト が 0 であって も発生し ません。

擬似コー ド

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) ← Mem(Addr); Reservation ← 1; MSR[C] ← 0

変更されるレジス タ

• rD および MSR[C] (例外が発生し ない場合)、 例外が発生し た場合は変更な し

• MSR[UM]、 MSR[VM]、 MSR[UMS]、 MSR[VMS] (TLB ミ ス例外またはデータ格納例外が発

生し た場合)

• ESR[EC]、 ESR[S] (例外が発生し た場合)

• ESR[DIZ] (データ格納例外が発生し た場合)

レ イ テンシ

C_AREA_OPTIMIZED=0 の場合 1 ク ロ ッ ク サイ クル

C_AREA_OPTIMIZED=1の場合 2 ク ロ ッ ク サイ クル

メ モ

こ の命令は STX と共に使用し て、 セマフ ォやス ピン ロ ッ ク など排他的ア ク セス を イ ンプ リ メ ン ト

するために使用し ます。

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

174 japan.xilinx.com MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ドUG081 (v10.3)

Page 175: MicroBlaze プロセッサ リファレンス ガイド - Xilinx...MicroBlaze プロセッサ ガイドリファレンス japan.xilinx.com UG081 (v10.3)Xilinx is providing this product

命令

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 0x1000 : (rD) ← PIDcase 0x1001 : (rD) ← ZPRcase 0x1002 : (rD) ← TLBXcase 0x1003 : (rD) ← TLBLOcase 0x1004 : (rD) ← TLBHIcase 0x200x : (rD) ← PVR[x] (x = 0 ~ 11)default : (rD) ← Undefined

変更されるレジス タ

• rD

レ イ テンシ

1 ク ロ ッ ク サイ クル

メ モ

アセンブ リ 言語で特殊用途レジス タ を参照するには、PC では rpc、MSR では rmsr、EAR では rear、

ESR では resr、FSR では rfsr、BTR では rbtr、EDR では redr、PID では rpid、ZPR では rzpr、TLBLO では rtlblo、 TLBHI では rtlbhi、 TLBX では rtlbx、 PVR0 ~ PVR11 では rpvr0 ~ rpvr11 を使用し

て く ださ い。

MSR の値には、 パイプラ イ ンのス ト ール ビヘイ ビアによ っては直前の命令の結果が含まれていな

い場合も あ り ます。 MSR に影響し ない命令は、 MFS 命令の前に実行し、 正しい MSR 値が得られ

る よ う にする必要があ り ます。

FSR の値には、パイプラ イ ンのス ト ール ビヘイ ビアによ っては直前の命令の結果が含まれていない

場合も あ り ます。 FSR に影響し ない命令は、 MFS 命令の前に実行し、 正しい FSR 値が得られる よ

う にする必要があ り ます。

EAR、 ESR および BTR は、 MicroBlaze で C_*_ EXCEPTION パラ メ ータの少な く と も 1 つが 1 に設定されている場合にのみオペラ ン ド と し て使用可能です。

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 175UG081 (v10.3)

Page 176: MicroBlaze プロセッサ リファレンス ガイド - Xilinx...MicroBlaze プロセッサ ガイドリファレンス japan.xilinx.com UG081 (v10.3)Xilinx is providing this product

第 4 章 : MicroBlaze 命令セ ッ ト アーキテ クチャ

EDR は、 C_FSL_EXCEPTION パラ メ ータが 1 に、 C_FSL_LINKS パラ メ ータが 0 よ り 大きい値

に設定されている場合にのみオペラ ン ド と し て使用可能です。

FSR は、C_USE_FPU パラ メータが 0 よ り 大きい値に設定されている場合にのみオペラ ン ド と し て

使用可能です。

PID、ZPR、TLBLO および TLBHI は、C_USE_MMU > 1 および C_MMU_TLB_ACCESS = 1 ま

たは 3 の場合にのみオペラ ン ド と し て使用可能です。

TLBX は C_USE_MMU > 1 および C_MMU_TLB_ACCESS > 0 の場合にのみオペラ ン ド と し て

使用可能です。

PVR0 は C_PVR が 1 または 2 に、 PVR1 ~ PVR11 は C_PVR が 2 に設定されている場合にのみ

オペラ ン ド と し て使用可能です。

176 japan.xilinx.com MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ドUG081 (v10.3)

Page 177: MicroBlaze プロセッサ リファレンス ガイド - Xilinx...MicroBlaze プロセッサ ガイドリファレンス japan.xilinx.com UG081 (v10.3)Xilinx is providing this product

命令

msrclr Read MSR and clear bits in MSR

説明

特殊用途のレジス タ MSR の内容を レジス タ rD にコ ピーし ます。IMM 値が 1 であ る ビ ッ ト 位置は、

MSR でク リ ア されます。 IMM 値が 0 であ る ビ ッ ト 位置は、 そのま まにな り ます。

MicroBlaze で MMU が使用される場合 (C_USE_MMU >= 1)、IMM 値が C のみに影響する場合を

除いて こ の命令は特権命令IMM 値が C のみに影響する場合を除いて こ の命令は特権命令にな り と

な り 、 ユーザー モード (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 に影響し ない命令は、 MSRCLR 命令の前に実行し、 正しい 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 177UG081 (v10.3)

Page 178: MicroBlaze プロセッサ リファレンス ガイド - Xilinx...MicroBlaze プロセッサ ガイドリファレンス japan.xilinx.com UG081 (v10.3)Xilinx is providing this product

第 4 章 : MicroBlaze 命令セ ッ ト アーキテ クチャ

msrset Read MSR and set bits in MSR

説明

特殊用途のレジス タ MSR の内容を レジス タ rD にコ ピーし ます。IMM 値が 1 であ る ビ ッ ト 位置は、

MSR でセ ッ ト されます。 IMM 値が 0 であ る ビ ッ ト 位置は、 そのま まにな り ます。

MicroBlaze で MMU が使用される場合 (C_USE_MMU >= 1)、IMM 値が C のみに影響する場合を

除いて こ の命令は特権命令にな り 、 ユーザー モード (MSR[UM] = 1) で使用する と特権命令例外が

発生し ます。

擬似コー ド

if MSR[UM] = 1 and IMM ≠ 0x4 thenESR[EC]← 00111

else(rD) ← (MSR) (MSR) ← (MSR) ∨ (IMM)

変更されるレジス タ

• rD

• MSR

• ESR[EC] (特権命令例外が発生し た場合)

レ イ テンシ

1 ク ロ ッ ク サイ クル

メ モ

MSRSET を実行する と 、キャ リ ー ビッ ト はすぐ に変化し ま すが、その他のビッ ト は命令が実行さ れ

てから 1 ク ロ ッ ク サイ ク ル後に変化し ま す。 EIP ビッ ト ま たは BIP ビッ ト がオンに設定さ れた場

合、 プロ セッ サはその後の命令の割り 込みおよ び通常のハード ウ ェ ア ブレ ーク には反応し ま せん。

MSR の値には、 パイプラ イ ンのス ト ール ビヘイ ビアによ っては直前の命令の結果が含まれていな

い場合も あ り ます。 MSR に影響し ない命令は、 MSRSET 命令の前に実行し、 正しい 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 Imm15

0 6 11 16 17 31

178 japan.xilinx.com MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ドUG081 (v10.3)

Page 179: MicroBlaze プロセッサ リファレンス ガイド - Xilinx...MicroBlaze プロセッサ ガイドリファレンス japan.xilinx.com UG081 (v10.3)Xilinx is providing this product

命令

mts Move To Special Purpose Register

説明

レジス タ rD の内容を特殊用途レジス タ rS にコ ピーし ます。 特殊用途レジス タ TLBLO および

TLBHI は、 イ ンデッ ク スが TLBX であ る 統合 TLB のエン ト リ へのコ ピーに使用されます。

MicroBlaze で MMU が使用される場合 (C_USE_MMU >= 1) こ の命令は特権命令にな り 、 ユー

ザー モード (MSR[UM] = 1) で使用する と特権命令例外が発生し ます。

擬似コー ド

if MSR[UM] = 1 thenESR[EC] ← 00111

elseswitch (rS)

case 0x0001 : MSR ← (rA) case 0x0007 : FSR ← (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)

変更されるレジス タ

• rS

• ESR[EC] (特権命令例外が発生し た場合)

レ イ テンシ

1 ク ロ ッ ク サイ クル

メ モ

MTS を使用し て MSR に書き込むと、すべてのビ ッ ト は命令が実行されてから 1 ク ロ ッ ク サイ クル

後に変化し ます。MSR を書き込む MTS 命令は MSR のデータ を使用するほかの命令と連続し て実

行し ないで く ださ い。 IE ビ ッ ト がク リ ア された場合、 プロセ ッ サはその後の命令の割 り 込みには反

応し ません。 EIP ビ ッ ト または BIP ビ ッ ト がオンに設定された場合、 プロセ ッ サはその後の命令の

割 り 込みおよび通常のハード ウ ェ ア ブレークには反応し ません。

アセンブ リ 言語で特殊用途レジス タ を参照するには、MSR では rmsr、FSR では rfsr、PID では rpid、

ZPR では rzpr、 TLBLO では rtlblo、 TLBHI では rtlbhi、 TLBX では rtlbx、 TLBSX では rtlbsx を

使用し て く ださ い。

PC、ESR、EAR、 BTR、EDR、PVR0 ~ PVR11は、MTS 命令を使用し て書き込むこ と はでき ません。

FSR は、MicroBlaze でパラ メ ータ C_USE_FPU が 0 よ り 大きい値に設定されている場合にのみデ

ステ ィ ネーシ ョ ン と し て使用可能です。

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 179UG081 (v10.3)

Page 180: MicroBlaze プロセッサ リファレンス ガイド - Xilinx...MicroBlaze プロセッサ ガイドリファレンス japan.xilinx.com UG081 (v10.3)Xilinx is providing this product

第 4 章 : MicroBlaze 命令セ ッ ト アーキテ クチャ

PID、 ZPR、 および TLBSX は、 C_USE_MMU > 1 および C_MMU_TLB_ACCESS > 1 の場合に

のみデステ ィ ネーシ ョ ン と し て使用可能です。 TLBLO、TLBHI、および TLBX は、C_USE_MMU > 1 の場合にのみデステ ィ ネーシ ョ ン と し て使用可能です。

MSR[VM] または PID を変更する場合、 命令の後に BRI 4 のよ う な同期分岐命令が必要です。

180 japan.xilinx.com MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ドUG081 (v10.3)

Page 181: MicroBlaze プロセッサ リファレンス ガイド - Xilinx...MicroBlaze プロセッサ ガイドリファレンス japan.xilinx.com UG081 (v10.3)Xilinx is providing this product

命令

mul Multiply

説明

レジス タ rA と rB の内容を乗算し、 その結果を レジス タ rD に格納し ます。 この 32 X 32 乗算器で

は、64 ビ ッ ト の結果が出力されます。 この値の下位ワード が rD に格納されます。 上位ワード は破棄

されます。

擬似コー ド

(rD) ← LSW( (rA) × (rB) )

変更されるレジス タ

• rD

レ イ テンシ

C_AREA_OPTIMIZED=0 の場合 1 ク ロ ッ ク サイ クル

C_AREA_OPTIMIZED=1 の場合 3 ク ロ ッ ク サイ クル

メ モ

この命令は、 ターゲ ッ ト アーキテ クチャに乗算器プ リ ミ テ ィ ブが含まれてお り 、 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 181UG081 (v10.3)

Page 182: MicroBlaze プロセッサ リファレンス ガイド - Xilinx...MicroBlaze プロセッサ ガイドリファレンス japan.xilinx.com UG081 (v10.3)Xilinx is providing this product

第 4 章 : MicroBlaze 命令セ ッ ト アーキテ クチャ

mulh Multiply High

説明

レジス タ rA と rB の内容を乗算し、 その結果を レジス タ rD に格納し ます。 こ の 32 X 32 の符号付

き乗算では、 64 ビ ッ ト の結果が出力されます。 こ の値の上位ワード は rD に格納され、 下位ワード

は破棄されます。

擬似コー ド

(rD) ← MSW( (rA) × (rB) ), signed

変更されるレジス タ

• rD

レ イ テンシ

C_AREA_OPTIMIZED=0 の場合 1 ク ロ ッ ク サイ クル

C_AREA_OPTIMIZED=1 の場合 3 ク ロ ッ ク サイ クル

メ モ

こ の命令は、ターゲ ッ ト アーキテ クチャに乗算器プ リ ミ テ ィ ブが含まれてお り 、MicroBlaze でパラ

メ ータ C_USE_HW_MUL が 2 に設定されている場合にのみ使用可能です。

MULH を使用する場合は MUL 命令の 30 ビ ッ ト 目と 31 ビ ッ ト 目を 0 にし、2 つの命令が区別でき

る よ う にする必要があ り ます。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

182 japan.xilinx.com MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ドUG081 (v10.3)

Page 183: MicroBlaze プロセッサ リファレンス ガイド - Xilinx...MicroBlaze プロセッサ ガイドリファレンス japan.xilinx.com UG081 (v10.3)Xilinx is providing this product

命令

mulhu Multiply High Unsigned

説明

レジス タ rA と rB の内容を乗算し、 その結果を レジス タ rD に格納し ます。 こ の 32 X 32 の符号な

し乗算では、 符号なし 64 ビ ッ ト の結果が出力されます。 こ の値の上位ワード は rD に格納され、 下

位ワード は破棄されます。

擬似コー ド

(rD) ← MSW( (rA) × (rB) ), unsigned

変更されるレジス タ

• rD

レ イ テンシ

C_AREA_OPTIMIZED=0 の場合 1 ク ロ ッ ク サイ クル

C_AREA_OPTIMIZED=1 の場合 3 ク ロ ッ ク サイ クル

メ モ

こ の命令は、ターゲ ッ ト アーキテ クチャに乗算器プ リ ミ テ ィ ブが含まれてお り 、MicroBlaze でパラ

メ ータ C_USE_HW_MUL が 2 に設定されている場合にのみ使用可能です。

MULHU を使用する場合は MUL 命令の 30 ビ ッ ト 目と 31 ビ ッ ト 目を 0 にし、2 つの命令が区別で

き る よ う にする必要があ り ます。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 183UG081 (v10.3)

Page 184: MicroBlaze プロセッサ リファレンス ガイド - Xilinx...MicroBlaze プロセッサ ガイドリファレンス japan.xilinx.com UG081 (v10.3)Xilinx is providing this product

第 4 章 : MicroBlaze 命令セ ッ ト アーキテ クチャ

mulhsu Multiply High Signed Unsigned

説明

レジス タ rA および rB の内容を乗算し、 その結果を レジス タ rD に格納し ます。 こ の 符号付き 32 ビ ッ ト X 符号な し 32 ビ ッ ト の乗算では、符号付き 64 ビ ッ ト の結果が出されます。 こ の値の 上位

ワード が rD に格納されます。 下位ワード は、 破棄されます。

擬似コー ド

(rD) ← MSW( (rA), signed × (rB), unsigned ), signed

変更されるレジス タ

• rD

レ イ テンシ

C_AREA_OPTIMIZED=0 の場合 1 ク ロ ッ ク サイ クル

C_AREA_OPTIMIZED=1 の場合 3 ク ロ ッ ク サイ クル

メ モ

こ の命令は、 ターゲ ッ ト アーキテ クチャに乗算器プ リ ミ テ ィ ブがあ り 、 MicroBlaze のパラ メ ータ

C_USE_HW_MUL が 2 に設定されている場合にのみ有効です。

MULHSU を使用する場合は MUL 命令の 30 ビ ッ ト 目と 31 ビ ッ ト 目を 0 にし、 2 つの命令が区別でき る よ う にする必要があ り ます。 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

184 japan.xilinx.com MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ドUG081 (v10.3)

Page 185: MicroBlaze プロセッサ リファレンス ガイド - Xilinx...MicroBlaze プロセッサ ガイドリファレンス japan.xilinx.com UG081 (v10.3)Xilinx is providing this product

命令

muli Multiply Immediate

説明

レジス タ rA の内容と 32 ビ ッ ト に符号拡張された IMM の値を乗算し、 その結果を rD に格納し ま

す。 こ の 32 X 32 乗算器では、64 ビ ッ ト の結果が出力されます。 この値の下位ワード が rD に格納さ

れます。 上位ワード は破棄されます。

擬似コー ド

(rD) ← LSW( (rA) × sext(IMM) )

変更されるレジス タ

• rD

レ イ テンシ

C_AREA_OPTIMIZED=0 の場合 1 ク ロ ッ ク サイ クル

C_AREA_OPTIMIZED=1 の場合 3 ク ロ ッ ク サイ クル

メ モ

デフ ォル ト では、 タ イプ B 命令は 16 ビ ッ ト の IMM フ ィ ール ド の値を取 り 込み、それを 32 ビ ッ ト

に符号拡張し て、 即値オペラ ン ド と し て使用し ます。 タ イプ B 命令の前に imm 命令を使用する と、

32 ビ ッ ト の即値を使用でき ます。 32 ビ ッ ト の即値の使用に関する詳細は、 166 ページの 「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 185UG081 (v10.3)

Page 186: MicroBlaze プロセッサ リファレンス ガイド - Xilinx...MicroBlaze プロセッサ ガイドリファレンス japan.xilinx.com UG081 (v10.3)Xilinx is providing this product

第 4 章 : MicroBlaze 命令セ ッ ト アーキテ クチャ

or Logical OR

説明

レジス タ rA の内容と レジス タ rB の内容を OR 演算し、 その結果を レジス タ rD に格納し ます。

擬似コー ド

(rD) ← (rA) ∨ (rB)

変更されるレジス タ

• rD

レ イ テンシ

1 ク ロ ッ ク サイ クル

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

186 japan.xilinx.com MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ドUG081 (v10.3)

Page 187: MicroBlaze プロセッサ リファレンス ガイド - Xilinx...MicroBlaze プロセッサ ガイドリファレンス japan.xilinx.com UG081 (v10.3)Xilinx is providing this product

命令

ori Logical OR with Immediate

説明

レジス タ rA の内容と 32 ビ ッ ト に符号拡張された IMM フ ィ ール ド の値を OR 演算し、その結果を

レジス タ rD に格納し ます。

擬似コー ド

(rD) ← (rA) ∨ sext(IMM)

変更されるレジス タ

• rD

レ イ テンシ

1 ク ロ ッ ク サイ クル

メ モ

デフ ォル ト では、 タ イプ B 命令は 16 ビ ッ ト の IMM フ ィ ール ド の値を取 り 込み、それを 32 ビ ッ ト

に符号拡張し て、 即値オペラ ン ド と し て使用し ます。 タ イプ B 命令の前に imm 命令を使用する と、

32 ビ ッ ト の即値を使用でき ます。 32 ビ ッ ト の即値の使用に関する詳細は、 166 ページの 「imm」 を

参照し て く ださ い。

ori rD, rA, IMM

1 0 1 0 0 0 rD rA IMM

0 6 11 16 31

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド japan.xilinx.com 187UG081 (v10.3)

Page 188: MicroBlaze プロセッサ リファレンス ガイド - Xilinx...MicroBlaze プロセッサ ガイドリファレンス japan.xilinx.com UG081 (v10.3)Xilinx is providing this product

第 4 章 : MicroBlaze 命令セ ッ ト アーキテ クチャ

pcmpbf Pattern Compare Byte Find

説明

レジス タ rA の内容と レジス タ rB の内容をバイ ト 単位で比較し ます。

• rD には、MSB を位置 1、LSB を位置 4 と し て、 初に一致し たバイ ト の位置が格納されます。

• 一致するバイ ト ペアがない場合は、 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

188 japan.xilinx.com MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ドUG081 (v10.3)

Page 189: MicroBlaze プロセッサ リファレンス ガイド - Xilinx...MicroBlaze プロセッサ ガイドリファレンス japan.xilinx.com UG081 (v10.3)Xilinx is providing this product

命令

pcmpeq Pattern Compare Equal

説明

レジス タ rA の内容と レジス タ rB の内容を比較し ます。

• 2 つのレジス タの内容が一致し た場合は rD に 1 が格納され、 一致し ない場合は 0 が格納され

ます。

擬似コー ド

if (rB) = (rA) then(rD) ← 1

else(rD) ← 0

変更されるレジス タ

• rD

レ イ テンシ

1 ク ロ ッ ク サイ クル

メ モ

こ の命令は、 パラ メ ータ C_USE_PCMP_INSTR が 1 に設定されている場合にのみ使用可能です。

pcmpeq rD, rA, rB 一致し た場合に 1 を返す

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 189UG081 (v10.3)

Page 190: MicroBlaze プロセッサ リファレンス ガイド - Xilinx...MicroBlaze プロセッサ ガイドリファレンス japan.xilinx.com UG081 (v10.3)Xilinx is providing this product

第 4 章 : MicroBlaze 命令セ ッ ト アーキテ クチャ

pcmpne Pattern Compare Not Equal

説明

レジス タ rA の内容と レジス タ rB の内容を比較し ます。

• 2 つのレジス タの内容が一致し た場合は rD に 0 が格納され、 一致し ない場合は 1 が格納され

ます。

擬似コー ド

if (rB) = (rA) then(rD) ← 0

else(rD) ← 1

変更されるレジス タ

• rD

レ イ テンシ

1 ク ロ ッ ク サイ クル

メ モ

こ の命令は、 パラ メ ータ C_USE_PCMP_INSTR が 1 に設定されている場合にのみ使用可能です。

pcmpne rD, rA, rB 一致し ない場合に 1 を返す

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

190 japan.xilinx.com MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ドUG081 (v10.3)

Page 191: MicroBlaze プロセッサ リファレンス ガイド - Xilinx...MicroBlaze プロセッサ ガイドリファレンス japan.xilinx.com UG081 (v10.3)Xilinx is providing this product

命令

put Put to fsl interface

説明

レジス タ rA の値を FSLx イ ン ターフ ェ イ スに書き込みます。

put 命令には、 16 種類あ り ます。

ブロ ッ キングの put 命令 (n ビ ッ ト が 0) では、 FSL イ ン ターフ ェ イ スに書き込むスペースができ る

までの間 MicroBlaze を ス ト ールし ます。ノ ンブロ ッ キングの put 命令では MicroBlaze はス ト ール

されず、 スペースがあ る場合はキ ャ リ ーが 0 に、 スペースがない場合は 1 に設定されます。

すべてのデータ put 命令 (c ビ ッ ト が 0) では、 FSL イ ン ターフ ェ イ スへの制御ビ ッ ト が 0 に、 すべ

ての制御 put 命令 (c ビ ッ ト が 1) では 1 に設定されます。

テス ト の put 命令 (t ビ ッ ト が 1) は、 FSL リ ン クへの書き込み信号がアサー ト されず、 ソース レジ

ス タが必要でない点を除き、 通常どお り 処理されます。

不可分の put 命令 (a ビ ッ ト が 1) は割 り 込み不可です。 不可分 FSL 命令のシーケン スはグループ化

され、 プロ グ ラ ムのフ ローへは割 り 込みでき ません。 ただし、 例外は発生し ます。

MicroBlaze で MMU が使用される場合 (C_USE_MMU >= 1) これらの命令は特権命令にな り 、

ユーザー モード (MSR[UM] = 1) で使用する と特権命令例外が発生し ます。

擬似コー ド

if MSR[UM] = 1 thenESR[EC] ← 00111

else(FSLx) ← (rA)if (n = 1) thenMSR[Carry] ← (FSLx Full bit)

(FSLx Control bit) ← C

変更されるレジス タ

• MSR[Carry]

• ESR[EC] (特権命令例外が発生し た場合)

naput rA, FSLx FSL x にデータ を書き込み n : ノ ンブロ ッ キング a : 不可分

tnaput FSLx FSL x にデータ を書き込み (テス ト のみ) n : ノ ンブロ ッ キング a : 不可分

ncaput rA, FSLx FSL x に制御を書き込み n : ノ ンブロ ッ キング a : 不可分

tncaput FSLx FSL 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 191UG081 (v10.3)

Page 192: MicroBlaze プロセッサ リファレンス ガイド - Xilinx...MicroBlaze プロセッサ ガイドリファレンス japan.xilinx.com UG081 (v10.3)Xilinx is providing this product

第 4 章 : MicroBlaze 命令セ ッ ト アーキテ クチャ

レ イ テンシ

C_AREA_OPTIMIZED=0 の場合 1 ク ロ ッ ク サイ クル

C_AREA_OPTIMIZED=1 の場合 2 ク ロ ッ ク サイ クル

ブロ ッ キングの put 命令では、命令が完了可能にな る まで MicroBlaze のパイプラ イ ンがス ト ールし

ます。 割 り 込みは、 パラ メ ータ C_USE_EXTENDED_FSL_INSTR が 1 に設定され、 命令が不可分

でない場合に実行されます。

メ モ

アセンブ リ 言語で FSLx イ ン ターフ ェ イ ス を参照するには、 rfsl0、 rfsl1、 ... rfsl15 を使用し ます。

ブロ ッ キングの put 命令を遅延ス ロ ッ ト に含める と割 り 込みが発生し な く なるため、 パラ メ ータ

C_USE_EXTENDED_FSL_INSTR が 1 に設定されている場合は、こ の命令を遅延ス ロ ッ ト に含め

る こ と ができ ません。

これらの命令は、 MicroBlaze でパラ メータ C_FSL_LINKS が 0 よ り 大きい値に設定されている場

合にのみ使用可能です。

拡張命令 (不可分の put 命令) は、 MicroBlaze でパラ メ ータ C_USE_EXTENDED_FSL_INSTR が

1 に設定されている場合にのみ使用可能です。

192 japan.xilinx.com MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ドUG081 (v10.3)

Page 193: MicroBlaze プロセッサ リファレンス ガイド - Xilinx...MicroBlaze プロセッサ ガイドリファレンス japan.xilinx.com UG081 (v10.3)Xilinx is providing this product

命令

putd Put to fsl interface dynamic

説明

レジス タ rA から読み出し た値を、rB の下位 4 ビ ッ ト で定義された FSL イ ン ターフ ェ イ スに書き込

みます。

putd 命令には、 16 種類あ り ます。

ブロ ッ キングの putd 命令 (n ビ ッ ト が 0) では、FSL イ ン ターフ ェ イ スに書き込むスペースができ る

までの間 MicroBlaze を ス ト ールし ます。 ノ ン ブロ ッ キングの putd 命令では MicroBlaze はス ト ー

ルされず、 スペースがあ る場合はキ ャ リ ーが 0 に、 スペースがない場合は 1 に設定されます。

すべてのデータ putd 命令 (c ビ ッ ト が 0) では、FSL イ ン ターフ ェ イ スへの制御ビ ッ ト が 0 に、すべ

ての制御 putd 命令 (c ビ ッ ト が 1) では 1 に設定されます。

テス ト の putd 命令 (t ビ ッ ト が 1) では、FSL リ ン クへの書き込み信号がアサー ト されず、ソース レ

ジス タが必要でない点を除き、 通常どお り 処理されます。

不可分の putd 命令 (a ビ ッ ト が 1) は割 り 込み不可です。 不可分 FSL 命令のシーケン スはグループ

化され、 プロ グ ラ ムのフ ローへは割 り 込みでき ません。 ただし、 例外は発生し ます。

MicroBlaze で MMU が使用される場合 (C_USE_MMU >= 1) これらの命令は特権命令にな り 、

ユーザー モード (MSR[UM] = 1) で使用する と特権命令例外が発生し ます。

擬似コー ド

if MSR[UM] = 1 thenESR[EC] ← 00111

else(FSL rB[28:31]) ← (rA)if (n = 1) thenMSR[Carry] ← (FSL rB[28:31] Full bit)

(FSL rB[28:31] Control bit) ← C

naputd rA, rB FSL rB[28:31] にデータ を書き込み n : ノ ンブロ ッ キング a : 不可分

tnaputd rB FSL rB[28:31] にデータ を書き込み (テス ト のみ) n : ノ ンブロ ッ キング a : 不可分

ncaputd rA, rB FSL rB[28:31] に制御を書き込み n : ノ ンブロ ッ キング a : 不可分

tncaputd rB FSL 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 193UG081 (v10.3)

Page 194: MicroBlaze プロセッサ リファレンス ガイド - Xilinx...MicroBlaze プロセッサ ガイドリファレンス japan.xilinx.com UG081 (v10.3)Xilinx is providing this product

第 4 章 : MicroBlaze 命令セ ッ ト アーキテ クチャ

変更されるレジス タ

• MSR[Carry]

• ESR[EC] (特権命令例外が発生し た場合)

レ イ テンシ

C_AREA_OPTIMIZED=0 の場合 1 ク ロ ッ ク サイ クル

C_AREA_OPTIMIZED=1 の場合 2 ク ロ ッ ク サイ クル

ブロ ッ キングの putd 命令では、命令が完了可能になる まで MicroBlaze のパイプラ イ ンがス ト ール

し ます。 割 り 込みは、 命令が不可分 (割 り 込み不可) ではない場合に実行されます。

メ モ

ブロ ッ キングの putd 命令を遅延ス ロ ッ ト に含める と割 り 込みが発生し な く なる ため、こ の命令を遅

延ス ロ ッ ト に含める こ と ができ ません。

これらの命令は、 パラ メ ータ C_FSL_LINKS が 0 よ り 大きい値に設定され、 パラ メータ C_USE_ EXTENDED_FSL_INSTR が 1 に設定されている場合にのみ使用可能です。

194 japan.xilinx.com MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ドUG081 (v10.3)

Page 195: MicroBlaze プロセッサ リファレンス ガイド - Xilinx...MicroBlaze プロセッサ ガイドリファレンス japan.xilinx.com UG081 (v10.3)Xilinx is providing this product

命令

rsub Arithmetic Reverse Subtract

説明

レジス タ rB の内容から レジス タ rA の内容を減算し、その結果を レジス タ rD に格納し ます。 rsubk に対し ては、 命令のビ ッ ト 3 (図で K と表記) が 1 に設定されています。 rsubc に対し ては、 命令の

ビ ッ ト 4 (図で C と表記) が 1 に設定されています。 rsubkc に対し ては、 両方のビ ッ ト が 1 に設定

されています。

ビ ッ ト 3 が 1 の場合 (rsubk、 rsubkc)、 命令の実行結果にかかわらず、 キ ャ リ ー フ ラ グに既存の値

が保持されます。 ビ ッ ト 3 が 0 の場合 (rsub、rsubc)、キ ャ リ ー フ ラ グが命令の実行結果に応じ て変

更されます。

ビ ッ ト 4 が 1 の場合 (rsubc、 rsubkc)、 キ ャ リ ー フ ラ グの内容 (MSR[C]) が命令の実行に影響し ま

す。 ビ ッ ト 4 が 0 の場合 (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 195UG081 (v10.3)

Page 196: MicroBlaze プロセッサ リファレンス ガイド - Xilinx...MicroBlaze プロセッサ ガイドリファレンス japan.xilinx.com UG081 (v10.3)Xilinx is providing this product

第 4 章 : MicroBlaze 命令セ ッ ト アーキテ クチャ

rsubi Arithmetic Reverse Subtract Immediate

説明

32 ビ ッ ト に符号拡張された IMM フ ィ ール ド の値から レジス タ rA の内容を 減算し、その結果を レ

ジス タ rD に格納し ます。 rsubik に対し ては、 命令のビ ッ ト 3 (図で K と表記) が 1 に設定されてい

ます。 rsubic に対し ては、 命令のビ ッ ト 4 (図で C と表記) が 1 に設定されています。 rsubikc に対

し ては、 両方のビ ッ ト が 1 に設定されています。

ビ ッ ト 3 が 1 の場合 (rsubik、 rsubikc)、 命令の実行結果にかかわらず、 キ ャ リ ー フ ラ グに既存の値

が保持されます。 ビ ッ ト 3 が 0 の場合 (rsubi、 rsubic)、 キ ャ リ ー フ ラ グが命令の実行結果に応じ て

変更されます。 ビ ッ ト 4 が 1 の場合 (rsubic、 rsubikc)、 キ ャ リ ー フ ラ グの内容 (MSR[C]) が命令の

実行に影響し ます。 ビ ッ ト 4 が 0 の場合 (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 ビ ッ ト に符号拡張し て、即値オペラ ン ド と し

て使用し ます。 タ イプ B 命令の前に imm 命令を使用する と、 32 ビ ッ ト の即値を使用でき ます。 32 ビ ッ ト の即値の使用に関する詳細は、 166 ページの 「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

196 japan.xilinx.com MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ドUG081 (v10.3)

Page 197: MicroBlaze プロセッサ リファレンス ガイド - Xilinx...MicroBlaze プロセッサ ガイドリファレンス japan.xilinx.com UG081 (v10.3)Xilinx is providing this product

命令

rtbd Return from Break

説明

ブレーク から戻った際に、 rA の内容と 32 ビ ッ ト に符号拡張された IMM フ ィ ール ド の値を加算し

て指定される ロ ケーシ ョ ンに分岐し ます。 この命令の後、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 197UG081 (v10.3)

Page 198: MicroBlaze プロセッサ リファレンス ガイド - Xilinx...MicroBlaze プロセッサ ガイドリファレンス japan.xilinx.com UG081 (v10.3)Xilinx is providing this product

第 4 章 : MicroBlaze 命令セ ッ ト アーキテ クチャ

rtid Return from Interruptrn from Interrupt

説明

割 り 込みから戻った際に、 rA の内容と 32 ビ ッ ト に符号拡張された IMM フ ィ ール ド の値を加算し

て指定される ロ ケーシ ョ ンに分岐し ます。 こ の命令の後、 割 り 込みがイ ネーブルにな り ます。

こ の命令では、常に遅延ス ロ ッ ト が使用されます。RTID に続 く 命令は、常に分岐ターゲ ッ ト の前に

実行されます。 こ の遅延ス ロ ッ ト 命令では、 割 り 込みがデ ィ スエーブルにされます。

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[IE] ← 1MSR[UM] ← MSR[UMS]MSR[VM] ← MSR[VMS]

変更されるレジス タ

• 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

198 japan.xilinx.com MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ドUG081 (v10.3)

Page 199: MicroBlaze プロセッサ リファレンス ガイド - Xilinx...MicroBlaze プロセッサ ガイドリファレンス japan.xilinx.com UG081 (v10.3)Xilinx is providing this product

命令

rted Return from Exception

説明

例外から戻った際に、 rA の内容と 32 ビ ッ ト に符号拡張された IMM フ ィ ール ド の値を加算し て指

定される ロ ケーシ ョ ンに分岐し ます。 こ の命令の後、 例外がイ ネーブルにな り ます。

こ の命令では、 常に遅延ス ロ ッ ト が使用されます。 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 ← 0

変更されるレジス タ

• 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] が設定されている場合は、 遅延ス ロ ッ ト にあ る命令で例外が発生し た場合に例

外がイネーブルの状態で例外ハン ド ラの処理が開始するため、通常この命令は使用でき ま

せん。

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 199UG081 (v10.3)

Page 200: MicroBlaze プロセッサ リファレンス ガイド - Xilinx...MicroBlaze プロセッサ ガイドリファレンス japan.xilinx.com UG081 (v10.3)Xilinx is providing this product

第 4 章 : MicroBlaze 命令セ ッ ト アーキテ クチャ

メ モ : 例外から戻った ら、MSR[DS] が設定されているかをチェ ッ クする必要があ り ます。設定され

ていれば、 BTR に格納されている ア ド レ スに戻 り ます。

200 japan.xilinx.com MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ドUG081 (v10.3)

Page 201: MicroBlaze プロセッサ リファレンス ガイド - Xilinx...MicroBlaze プロセッサ ガイドリファレンス japan.xilinx.com UG081 (v10.3)Xilinx is providing this product

命令

rtsd Return from Subroutine

説明

サブルーチンから戻った際に、 rA の内容と 32 ビ ッ ト に符号拡張された IMM フ ィ ール ド の値を加

算し て指定される ロ ケーシ ョ ンに分岐し ます。

こ の命令では、 常に遅延ス ロ ッ ト が使用されます。 RTSD に続 く 命令は、 常に分岐ターゲ ッ ト の前

に実行されます。

擬似コー ド

PC ← (rA) + sext(IMM)allow following instruction to complete execution

変更されるレジス タ

• PC

レ イ テンシ

2 ク ロ ッ ク サイ クル

メ モ

通常は、 汎用レジス タ 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 201UG081 (v10.3)

Page 202: MicroBlaze プロセッサ リファレンス ガイド - Xilinx...MicroBlaze プロセッサ ガイドリファレンス japan.xilinx.com UG081 (v10.3)Xilinx is providing this product

第 4 章 : MicroBlaze 命令セ ッ ト アーキテ クチャ

sb Store Byte

説明

レジス タ rD の 下位バイ ト の内容を、 レジス タ rA と rB の内容を加算し た結果の メ モ リ ロ ケー

シ ョ ンに格納し ます。

データ 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] (データ格納例外が発生し た場合)

レ イ テンシ

C_AREA_OPTIMIZED=0 の場合 1 ク ロ ッ ク サイ クル

C_AREA_OPTIMIZED=1 の場合 2 ク ロ ッ ク サイ クル

sb rD, rA, rB

1 1 0 1 0 0 rD rA rB 0 0 0 0 0 0 0 0 0 0 0

0 6 11 16 21 31

202 japan.xilinx.com MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ドUG081 (v10.3)

Page 203: MicroBlaze プロセッサ リファレンス ガイド - Xilinx...MicroBlaze プロセッサ ガイドリファレンス japan.xilinx.com UG081 (v10.3)Xilinx is providing this product

命令

sbi Store Byte Immediate

説明

レジス タ rD の 下位バイ ト の内容を、 レジス タ rA と 32 ビ ッ ト に符号拡張された IMM の値を加

算し た結果の メ モ リ ロ ケーシ ョ ンに格納し ます。

データ 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] (データ格納例外が発生し た場合)

レ イ テンシ

C_AREA_OPTIMIZED=0 の場合 1 ク ロ ッ ク サイ クル

C_AREA_OPTIMIZED=1 の場合 2 ク ロ ッ ク サイ クル

メ モ

デフ ォル ト では、 タ イプ B 命令は 16 ビ ッ ト の IMM フ ィ ール ド の値を取 り 込み、それを 32 ビ ッ ト

に符号拡張し て、 即値オペラ ン ド と し て使用し ます。 タ イプ B 命令の前に imm 命令を使用する と、

32 ビ ッ ト の即値を使用でき ます。 32 ビ ッ ト の即値の使用に関する詳細は、 166 ページの 「imm」 を

参照し て く ださ い。

sbi rD, rA, IMM

1 1 1 1 0 0 rD rA IMM

0 6 11 16 31

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド japan.xilinx.com 203UG081 (v10.3)

Page 204: MicroBlaze プロセッサ リファレンス ガイド - Xilinx...MicroBlaze プロセッサ ガイドリファレンス japan.xilinx.com UG081 (v10.3)Xilinx is providing this product

第 4 章 : MicroBlaze 命令セ ッ ト アーキテ クチャ

sext16 Sign Extend Halfword

説明

ハーフ ワード (16 ビ ッ ト ) を ワード (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

204 japan.xilinx.com MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ドUG081 (v10.3)

Page 205: MicroBlaze プロセッサ リファレンス ガイド - Xilinx...MicroBlaze プロセッサ ガイドリファレンス japan.xilinx.com UG081 (v10.3)Xilinx is providing this product

命令

sext8 Sign Extend Byte

説明

バイ ト (8 ビ ッ ト ) を ワード (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 205UG081 (v10.3)

Page 206: MicroBlaze プロセッサ リファレンス ガイド - Xilinx...MicroBlaze プロセッサ ガイドリファレンス japan.xilinx.com UG081 (v10.3)Xilinx is providing this product

第 4 章 : MicroBlaze 命令セ ッ ト アーキテ クチャ

sh Store Halfword

説明

レジス タ rD の下位ハーフ ワード の内容を、レジス タ rA と rB の内容を加算し た結果をハーフ ワー

ド で揃えた メ モ リ ロ ケーシ ョ ンに格納し ます。

データ TLB ミ ス例外は、仮想保護モード がイネーブルで、ア ド レ スに対応する有効な変換エン ト リ

が TLB で検出されない場合に発生し ます。

仮想保護モード がイ ネーブルで、 ア ク セス不可または読み出しのみのゾーン保護でア ク セスが禁止

されている場合は、 データ格納例外が発生し ます。 ア ク セス不可は、 ユーザー モード でのみ使用で

き ます。

不整列データ ア ク セスによ る例外は、 ア ド レ スの 下位ビ ッ ト が 0 でない場合に発生し ます。

擬似コー ド

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] ← 0else if Addr[31] ≠ 0 thenESR[EC] ← 00001; ESR[W] ← 0; ESR[S] ← 1; ESR[Rx] ← rD

else Mem(Addr) ← (rD)[16:31]

変更されるレジス タ

• MSR[UM]、 MSR[VM]、 MSR[UMS]、 MSR[VMS] (TLB ミ ス例外またはデータ格納例外が発

生し た場合)

• ESR[EC]、 ESR[S] (例外が発生し た場合)

• ESR[DIZ] (データ格納例外が発生し た場合)

• ESR[W]、 ESR[Rx] (不整列データ ア ク セスによ る例外が発生し た場合)

レ イ テンシ

C_AREA_OPTIMIZED=0 の場合 1 ク ロ ッ ク サイ クル

C_AREA_OPTIMIZED=1 の場合 2 ク ロ ッ ク サイ クル

sh rD, rA, rB

1 1 0 1 0 1 rD rA rB 0 0 0 0 0 0 0 0 0 0 0

0 6 11 16 21 31

206 japan.xilinx.com MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ドUG081 (v10.3)

Page 207: MicroBlaze プロセッサ リファレンス ガイド - Xilinx...MicroBlaze プロセッサ ガイドリファレンス japan.xilinx.com UG081 (v10.3)Xilinx is providing this product

命令

shi Store Halfword Immediate

説明

レジス タ rD の下位ハーフ ワード の内容を、 レジス タ rA と 32 ビ ッ ト に符号拡張された IMM の値

を加算し た結果をハーフ ワード で揃えた メ モ リ ロ ケーシ ョ ンに格納し ます。

データ TLB ミ ス例外は、仮想保護モード がイネーブルで、ア ド レ スに対応する有効な変換エン ト リ

が TLB で検出されない場合に発生し ます。 仮想保護モード がイ ネーブルで、ア ク セス不可または読

み出しのみのゾーン保護でア ク セスが禁止されている場合は、 データ格納例外が発生し ます。 ア ク

セス不可は、 ユーザー モード でのみ使用でき ます。 不整列データ ア ク セスによ る例外は、 ア ド レ ス

の 下位ビ ッ ト が 0 でない場合に発生し ます。

擬似コー ド

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

else Mem(Addr) ← (rD)[16:31]

変更されるレジス タ

• MSR[UM]、 MSR[VM]、 MSR[UMS]、 MSR[VMS] (TLB ミ ス例外またはデータ格納例外が発

生し た場合)

• ESR[EC]、 ESR[S] (例外が発生し た場合)

• ESR[DIZ] (データ格納例外が発生し た場合)

• ESR[W]、 ESR[Rx] (不整列データ ア ク セスによ る例外が発生し た場合)

レ イ テンシ

C_AREA_OPTIMIZED=0 の場合 1 ク ロ ッ ク サイ クル

C_AREA_OPTIMIZED=1 の場合 2 ク ロ ッ ク サイ クル

メ モ

デフ ォル ト では、 タ イプ B 命令は 16 ビ ッ ト の IMM フ ィ ール ド の値を取 り 込み、それを 32 ビ ッ ト

に符号拡張し て、 即値オペラ ン ド と し て使用し ます。 タ イプ B 命令の前に imm 命令を使用する と、

32 ビ ッ ト の即値を使用でき ます。 32 ビ ッ ト の即値の使用に関する詳細は、 166 ページの 「imm」 を

参照し て く ださ い。

shi rD, rA, IMM

1 1 1 1 0 1 rD rA IMM

0 6 11 16 31

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド japan.xilinx.com 207UG081 (v10.3)

Page 208: MicroBlaze プロセッサ リファレンス ガイド - Xilinx...MicroBlaze プロセッサ ガイドリファレンス japan.xilinx.com UG081 (v10.3)Xilinx is providing this product

第 4 章 : MicroBlaze 命令セ ッ ト アーキテ クチャ

sra Shift Right Arithmetic

説明

レジス タ rA の内容を 1 ビ ッ ト 右に算術シフ ト し、 その結果を rD に格納し ます。 rA の MSB (符号

ビ ッ ト ) は、 rD の MSB に配置されます。 シフ ト チェーンから外れた 下位ビ ッ ト は、 キ ャ リ ー フ

ラ グに配置されます。

擬似コー ド

(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

208 japan.xilinx.com MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ドUG081 (v10.3)

Page 209: MicroBlaze プロセッサ リファレンス ガイド - Xilinx...MicroBlaze プロセッサ ガイドリファレンス japan.xilinx.com UG081 (v10.3)Xilinx is providing this product

命令

src Shift Right with Carry

説明

レジス タ rA の内容を 1 ビ ッ ト 右にシフ ト し、その結果を rD に格納し ます。 キ ャ リ ー フ ラ グ も シフ

ト チェーンにシフ ト され、 rD の MSB に配置されます。 シフ ト チェーンから外れた 下位ビ ッ ト

は、 キ ャ リ ー フ ラ グに配置されます。

擬似コー ド

(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 209UG081 (v10.3)

Page 210: MicroBlaze プロセッサ リファレンス ガイド - Xilinx...MicroBlaze プロセッサ ガイドリファレンス japan.xilinx.com UG081 (v10.3)Xilinx is providing this product

第 4 章 : MicroBlaze 命令セ ッ ト アーキテ クチャ

srl Shift Right Logical

説明

レジス タ rA の内容を 1 ビ ッ ト 右に論理シフ ト し、その結果を rD に格納し ます。0 がシフ ト チェー

ンにシフ ト され、rD の MSB に配置されます。シフ ト チェーンから外れた 下位ビ ッ ト は、キ ャ リ ー

フ ラ グに配置されます。

擬似コー ド

(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

210 japan.xilinx.com MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ドUG081 (v10.3)

Page 211: MicroBlaze プロセッサ リファレンス ガイド - Xilinx...MicroBlaze プロセッサ ガイドリファレンス japan.xilinx.com UG081 (v10.3)Xilinx is providing this product

命令

sw Store Word

説明

レジス タ rD の内容を、 レジス タ rA と rB の内容を加算し た結果を ワード で揃えた メ モ リ ロ ケー

シ ョ ンに格納し ます。

データ TLB ミ ス例外は、仮想保護モード がイネーブルで、ア ド レ スに対応する有効な変換エン ト リ

が TLB で検出されない場合に発生し ます。

仮想保護モード がイ ネーブルで、 ア ク セス不可または読み出しのみのゾーン保護でア ク セスが禁止

されている場合は、 データ格納例外が発生し ます。 ア ク セス不可は、 ユーザー モード でのみ使用で

き ます。

不整列データ ア ク セスによ る例外は、 ア ド レ スの 下位ビ ッ ト が 0 でない場合に発生し ます。

擬似コー ド

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

else Mem(Addr) ← (rD)[0:31]

変更されるレジス タ

• MSR[UM]、 MSR[VM]、 MSR[UMS]、 MSR[VMS] (TLB ミ ス例外またはデータ格納例外が発

生し た場合)

• ESR[EC]、 ESR[S] (例外が発生し た場合)

• ESR[DIZ] (データ格納例外が発生し た場合)

• ESR[W]、 ESR[Rx] (不整列データ ア ク セスによ る例外が発生し た場合)

レ イ テンシ

C_AREA_OPTIMIZED=0 の場合 1 ク ロ ッ ク サイ クル

C_AREA_OPTIMIZED=1 の場合 2 ク ロ ッ ク サイ クル

sw rD, rA, rB

1 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 211UG081 (v10.3)

Page 212: MicroBlaze プロセッサ リファレンス ガイド - Xilinx...MicroBlaze プロセッサ ガイドリファレンス japan.xilinx.com UG081 (v10.3)Xilinx is providing this product

第 4 章 : MicroBlaze 命令セ ッ ト アーキテ クチャ

swi Store Word Immediate

説明

レジス タ rD の内容を、レジス タ rA と 32 ビ ッ ト に符号拡張された IMM の値を加算し た結果を ワー

ド で揃えた メ モ リ ロ ケーシ ョ ンに格納し ます。

データ TLB ミ ス例外は、仮想保護モード がイネーブルで、ア ド レ スに対応する有効な変換エン ト リ

が TLB で検出されない場合に発生し ます。

仮想保護モード がイ ネーブルで、 ア ク セス不可または読み出しのみのゾーン保護でア ク セスが禁止

されている場合は、 データ格納例外が発生し ます。 ア ク セス不可は、 ユーザー モード でのみ使用で

き ます。

不整列データ ア ク セスによ る例外は、 ア ド レ スの 下位ビ ッ ト が 0 でない場合に発生し ます。

擬似コー ド

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

else Mem(Addr) ← (rD)[0:31]

変更されるレジス タ

• MSR[UM]、 MSR[VM]、 MSR[UMS]、 MSR[VMS] (TLB ミ ス例外またはデータ格納例外が発

生し た場合)

• ESR[EC]、 ESR[S] (例外が発生し た場合)

• ESR[DIZ] (データ格納例外が発生し た場合)

• ESR[W]、 ESR[Rx] (不整列データ ア ク セスによ る例外が発生し た場合)

レ イ テンシ

C_AREA_OPTIMIZED=0 の場合 1 ク ロ ッ ク サイ クル

C_AREA_OPTIMIZED=1 の場合 2 ク ロ ッ ク サイ クル

メ モ

デフ ォル ト では、 タ イプ B 命令は 16 ビ ッ ト の IMM フ ィ ール ド の値を取 り 込み、それを 32 ビ ッ ト

に符号拡張し て、 即値オペラ ン ド と し て使用し ます。 タ イプ B 命令の前に imm 命令を使用する と、

swi rD, rA, IMM

1 1 1 1 1 0 rD rA IMM

0 6 11 16 31

212 japan.xilinx.com MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ドUG081 (v10.3)

Page 213: MicroBlaze プロセッサ リファレンス ガイド - Xilinx...MicroBlaze プロセッサ ガイドリファレンス japan.xilinx.com UG081 (v10.3)Xilinx is providing this product

命令

32 ビ ッ ト の即値を使用でき ます。 32 ビ ッ ト の即値の使用に関する詳細は、 166 ページの 「imm」 を

参照し て く ださ い。

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド japan.xilinx.com 213UG081 (v10.3)

Page 214: MicroBlaze プロセッサ リファレンス ガイド - Xilinx...MicroBlaze プロセッサ ガイドリファレンス japan.xilinx.com UG081 (v10.3)Xilinx is providing this product

第 4 章 : MicroBlaze 命令セ ッ ト アーキテ クチャ

swx Store Word Exclusive

説明

予約ビ ッ ト がセ ッ ト されている場合、 レジス タ rD の内容を レジス タ rA と rB の内容を加算し た結

果を ワード で揃えた メ モ リ ロ ケーシ ョ ンに条件付で格納し ます。格納される場合はキ ャ リ ー ビ ッ ト

(MSR[C]) がセ ッ ト され、 格納されない場合はク リ アにな り ます。 予約ビ ッ ト はク リ アにな り ます。

データ TLB ミ ス例外は、仮想保護モード がイネーブルで、ア ド レ スに対応する有効な変換エン ト リ

が TLB で検出されない場合に発生し ます。

仮想保護モード がイ ネーブルで、 ア ク セス不可または読み出しのみのゾーン保護でア ク セスが禁止

されている場合は、 データ格納例外が発生し ます。 ア ク セス不可は、 ユーザー モード でのみ使用で

き ます。

不整列データ ア ク セスによ る例外は、 ア ド レ スの 下位ビ ッ ト が 0 であって も発生し ません。

擬似コー ド

Addr ← (rA) + (rB) if Reservation = 0 thenMSR[C] ← 1

else 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 Mem(Addr) ← (rD)[0:31]; Reservation ← 0; MSR[C] ← 0

変更されるレジス タ

• MSR[C] (例外が発生し ない場合)

• MSR[UM]、 MSR[VM]、 MSR[UMS]、 MSR[VMS] (TLB ミ ス例外またはデータ格納例外が発

生し た場合)

• ESR[EC]、 ESR[S] (例外が発生し た場合)

• ESR[DIZ] (データ格納例外が発生し た場合)

レ イ テンシ

C_AREA_OPTIMIZED=0 の場合 1 ク ロ ッ ク サイ クル

C_AREA_OPTIMIZED=1 の場合 2 ク ロ ッ ク サイ クル

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

214 japan.xilinx.com MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ドUG081 (v10.3)

Page 215: MicroBlaze プロセッサ リファレンス ガイド - Xilinx...MicroBlaze プロセッサ ガイドリファレンス japan.xilinx.com UG081 (v10.3)Xilinx is providing this product

命令

メ モ

こ の命令は LDX と共に使用し て、 セマフ ォやス ピン ロ ッ ク など排他的ア ク セス を イ ンプ リ メ ン ト

するために使用し ます。

MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ド japan.xilinx.com 215UG081 (v10.3)

Page 216: MicroBlaze プロセッサ リファレンス ガイド - Xilinx...MicroBlaze プロセッサ ガイドリファレンス japan.xilinx.com UG081 (v10.3)Xilinx is providing this product

第 4 章 : MicroBlaze 命令セ ッ ト アーキテ クチャ

wdc Write to Data Cache

説明

データ キ ャ ッ シュ タ グに書き込み、 キ ャ ッ シュ ラ イ ンを無効に、 またはフ ラ ッ シュ し ます。

wdc.flush は F ビ ッ ト のセ ッ ト 、 wdc.clear は T ビ ッ ト のセ ッ ト に使用し ます。

C_DCACHE_USE_WRITEBACK が 1 に設定されている場合、 F ビ ッ ト がセ ッ ト されていれば、

キ ャ ッ シュ ラ イ ンがフ ラ ッ シュ され無効にな り ます。それ以外の場合は、キ ャ ッ シュ ラ イ ンが無効

にな り 、 メ モ リ に書き込まれていないデータが破棄されます。T ビ ッ ト がセ ッ ト されていれば、ア ド

レ スが一致する キ ャ ッ シュ ラ イ ンのみが無効にな り ます。 rB が追加されたレジス タ rA は、 影響を

受けたキ ャ ッ シュ ラ イ ンのア ド レ スです。

C_DCACHE_USE_WRITEBACK が 0 にク リ ア されている場合、 キ ャ ッ シュ ラ イ ンは常に無効に

な り ます。 レジス タ rA には影響を受けたキ ャ ッ シュ ラ イ ンのア ド レ スが含まれ、 rB の値は使用さ

れません。

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 C_DCACHE_LINE_LEN = 4 thencacheline ← (DCache Line)[(Ra) >> 4]address ← address & 0xfffffff0

if C_DCACHE_LINE_LEN = 8 thencacheline ← (DCache Line)[(Ra) >> 5]address ← address & 0xffffffe0

if F = 1 and cacheline.Dirty thenfor i = 0 .. C_DCACHE_LINE_LEN - 1 loopif cacheline.Valid[i] thenMem(address + i * 4) ← cacheline.Data[i]

if T = 0 thencacheline.Tag ← 0

else if cacheline.Address = address thencacheline.Tag ← 0

wdc rA,rB

wdc.flush rA,rB

wdc.clear rA,rB

1 0 0 1 0 0 0 0 0 0 0 rA rB 0 0 0 0 1 1 F 0 1 T 0

0 6 11

16

27

31

216 japan.xilinx.com MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ドUG081 (v10.3)

Page 217: MicroBlaze プロセッサ リファレンス ガイド - Xilinx...MicroBlaze プロセッサ ガイドリファレンス japan.xilinx.com UG081 (v10.3)Xilinx is providing this product

命令

変更されるレジス タ

• ESR[EC] (特権命令例外が発生し た場合)

レ イ テンシ

wdc および wdc.clear の場合 2 ク ロ ッ ク サイ クル

wdc.flush の場合 2 + N ク ロ ッ ク サイ クル (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 217UG081 (v10.3)

Page 218: MicroBlaze プロセッサ リファレンス ガイド - Xilinx...MicroBlaze プロセッサ ガイドリファレンス japan.xilinx.com UG081 (v10.3)Xilinx is providing this product

第 4 章 : 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 then(ICache Line)[(Ra) >> 4].Tag ← 0

if C_ICACHE_LINE_LEN = 8 then(ICache Line)[(Ra) >> 5].Tag ← 0

変更されるレジス タ

• ESR[EC] (特権命令例外が発生し た場合)

レ イ テンシ

2 ク ロ ッ ク サイ クル

メ モ

IC 命令は、命令キ ャ ッ シュ イネーブル (MSR[ICE]) からは独立し ていて、命令キ ャ ッ シュがイ ネー

ブルであって も、 デ ィ スエーブルであって も使用する こ と ができ ます。

影響を受け る キ ャ ッ シュ ラ イ ンのア ド レ スは、パラ メ ータ C_USE_MMU や MMU が仮想モード ま

たは実モード であ るかに関係し ておらず、 常に物理ア ド レ ス (MSR[ICE]) です。

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

218 japan.xilinx.com MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ドUG081 (v10.3)

Page 219: MicroBlaze プロセッサ リファレンス ガイド - Xilinx...MicroBlaze プロセッサ ガイドリファレンス japan.xilinx.com UG081 (v10.3)Xilinx is providing this product

命令

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 219UG081 (v10.3)

Page 220: MicroBlaze プロセッサ リファレンス ガイド - Xilinx...MicroBlaze プロセッサ ガイドリファレンス japan.xilinx.com UG081 (v10.3)Xilinx is providing this product

第 4 章 : MicroBlaze 命令セ ッ ト アーキテ クチャ

xori Logical Exclusive OR with Immediate

説明

IMM フ ィ ール ド の左側に 0 を 16 ビ ッ ト 分追加し て 32 ビ ッ ト に拡張し、 拡張された IMM の内容

と レジス タ rA の内容を XOR 演算し て、 その結果をレジス タ rD に格納し ます。

擬似コー ド

(rD) ← (rA) ⊕ sext(IMM)

変更されるレジス タ

• rD

レ イ テンシ

1 ク ロ ッ ク サイ クル

メ モ

デフ ォル ト では、 タ イプ B 命令は 16 ビ ッ ト の IMM フ ィ ール ド の値を取 り 込み、それを 32 ビ ッ ト

に符号拡張し て、 即値オペラ ン ド と し て使用し ます。 タ イプ B 命令の前に imm 命令を使用する と、

32 ビ ッ ト の即値を使用でき ます。 32 ビ ッ ト の即値の使用に関する詳細は、 166 ページの 「imm」 を

参照し て く ださ い。

xori rD, rA, IMM

1 0 1 0 1 0 rD rA IMM

0 6 11 16 31

220 japan.xilinx.com MicroBlaze プロセ ッサ リ フ ァ レンス ガイ ドUG081 (v10.3)