456
Copyright © 2010 ARM Limited. All rights reserved. ARM DDI 0363FJ (ID013111) Cortex -R4 および Cortex-R4F リビジョン: r1p3 テクニカルリファレンス マニュアル

Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

  • Upload
    others

  • View
    25

  • Download
    3

Embed Size (px)

Citation preview

Page 1: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

Cortex™-R4 および Cortex-R4Fリビジ ョ ン : r1p3

テクニカルリファレンス マニュアル

Copyright © 2010 ARM Limited. All rights reserved.ARM DDI 0363FJ (ID013111)

Page 2: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

Cortex-R4 および Cortex-R4Fテクニカルリファレンス マニュアル

Copyright © 2010 ARM Limited. All rights reserved.

リ リース情報

本書には次の変更が加えられています。

著作権

® または™ の付いた用語と ロゴは、 本著作権条項で特に明記されていない限り、 EU および他諸国における

ARM Limited の登録商標または商標です。 本書に記載されている他の商標その他の名前は、 対応する所有

者の商標の場合があ り ます。

本書に記載されている情報の全部または一部、 ならびに本書で紹介する製品は、 著作権所有者の文書によ

る事前の許可を得ない限り、 転用 ・ 複製するこ とを禁じます。

本書に説明されている製品は、 継続的に開発と改良が行われています。 本書にある製品とその利用方法に

関する記載事項について、 ARM は保証しません。 したがって当社では、 製品の商品性または目的への適

合性を含め、 黙示的 ・ 明示的に関係なく一切の保証を行いません。

本書は、 本製品の利用者をサポートするこ とだけを目的と しています。 本書に記載されている情報の使

用、 情報の誤り または省略、 あるいは本製品の誤使用によって発生したいかなる損失や損害についても、

ARM は一切責任を負いません。

本書に記載されている情報の一部は、 ANSI/IEEE 標準 754-1985、 『IEEE Standard for Binary Floating-Point

Arithmetic』 に基づいています。 IEEE は、 本書に記載されている方法による設置および使用から生じるい

かなる問題についても責任を負いません。

本書における ARM とい う用語は、 「ARM、 または該当する場合にはその子会社を含む」 とい う意味で使

用されています。

機密保持ステータス

本書は非機密扱いであ り、 本書を使用、 複製、 および開示する権利は、 ARM および ARM が本書を提供し

た当事者との間で締結した契約の条項に基づいたライセンスの制限によ り異なり ます。

アクセス制限は、 ARM 社内による分類です。

製品ステータス

本書の情報は 終版であ り、 開発済み製品に対応しています。

Web アドレス

http://www.arm.com

改訂履歴

日付 変更箇所 公開の有無 変更内容

2006 年 5 月 15 日 A 非公開 r0p1 用の 初のリ リース

2007 年 10 月 22 日 B 公開 r1p2 用の 初のリ リース

2008 年 6 月 16 日 C 公開版、 限定アクセス r1p3 用の 初のリ リース

2009 年 9 月 11 日 D 公開 r1p3 用の 2 番目のリ リース

2009 年 11 月 20 日 E 公開 r1p3 対応のための更新

2010 年 2 月 12 日 F 公開 r1p3 対応のための更新

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. iiID013111 Non-Confidential

Page 3: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

目次Cortex-R4 および Cortex-R4F テクニカルリファレン

ス マニュアル

序章本書について ........................................................................................................... xviiご意見 ・ ご質問 ........................................................................................................ xxi

第 1 章 はじめに1.1 プロセッサについて ................................................................................................ 1-21.2 アーキテクチャについて ......................................................................................... 1-31.3 プロセッサのコンポーネン ト .................................................................................. 1-41.4 プロセッサの外部インタフェース ......................................................................... 1-111.5 電力管理 ................................................................................................................ 1-121.6 構成可能なオプシ ョ ン ........................................................................................... 1-131.7 実行パイプラインステージ ................................................................................... 1-171.8 冗長化コアの比較 .................................................................................................. 1-191.9 テスト機能 ............................................................................................................. 1-201.10 製品説明書、 設計フロー、 アーキテクチャ .......................................................... 1-211.11 製品のリビジ ョ ン情報 ........................................................................................... 1-24

第 2 章 プログラマモデル2.1 プログラマモデルについて ..................................................................................... 2-22.2 命令セッ ト状態 ....................................................................................................... 2-32.3 動作モード ............................................................................................................... 2-42.4 データ型 .................................................................................................................. 2-52.5 メモリフォーマッ ト ................................................................................................ 2-62.6 レジスタ .................................................................................................................. 2-72.7 プログラムステータス レジスタ ........................................................................... 2-102.8 例外 ........................................................................................................................ 2-16

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. iiiID013111 Non-Confidential

Page 4: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

目次

2.9 実行環境の高速化 .................................................................................................. 2-272.10 アンアラインド データアクセスおよびエンディアン混在データアクセスのサポート .

2-282.11 ビッグエンディアン命令のサポート ..................................................................... 2-29

第 3 章 プロセッサの初期化、 リセッ ト、 クロック3.1 初期化 ...................................................................................................................... 3-23.2 リセッ ト .................................................................................................................. 3-63.3 リセッ トモード ....................................................................................................... 3-73.4 クロック .................................................................................................................. 3-9

第 4 章 システム制御コプロセッサ4.1 システム制御コプロセッサについて ....................................................................... 4-24.2 システム制御コプロセッサのレジスタ ................................................................... 4-9

第 5 章 プリフェ ッチユニッ ト5.1 プリフェ ッチユニッ トについて .............................................................................. 5-25.2 分岐予測 .................................................................................................................. 5-35.3 リ ターンスタ ック .................................................................................................... 5-5

第 6 章 イベン ト とパフォーマンスモニタ6.1 イベン トについて .................................................................................................... 6-26.2 PMU について ......................................................................................................... 6-66.3 パフォーマンスモニタ レジスタ ............................................................................. 6-76.4 イベン トバス インタフェース ............................................................................... 6-19

第 7 章 メモリ保護ユニッ ト7.1 MPU について ......................................................................................................... 7-27.2 メモリ タイプ ........................................................................................................... 7-77.3 領域属性 .................................................................................................................. 7-97.4 MPU と メモリシステムとの相互動作 ................................................................... 7-117.5 MPU フォールト .................................................................................................... 7-127.6 MPU のソフ トウェアアクセス可能レジスタ ......................................................... 7-13

第 8 章 レベル 1 メモリシステム8.1 レベル 1 メモリシステムについて .......................................................................... 8-28.2 エラー検出および訂正方式について ....................................................................... 8-48.3 フォールト処理 ....................................................................................................... 8-78.4 TCM について ........................................................................................................ 8-138.5 キャッシュについて .............................................................................................. 8-188.6 内部排他モニタ ..................................................................................................... 8-348.7 メモリ タイプとレベル 1 メモリシステムの動作 ................................................... 8-358.8 エラー検出イベン ト .............................................................................................. 8-36

第 9 章 レベル 2 インタフェース9.1 レベル 2 インタフェースについて .......................................................................... 9-29.2 AXI マスタインタフェース ...................................................................................... 9-39.3 AXI マスタインタフェースでの転送 ........................................................................ 9-79.4 AXI スレーブインタフェース ................................................................................ 9-209.5 AXI スレーブアクセスの可能 / 不可能 ................................................................... 9-239.6 AXI スレーブインタフェースを使用した RAM へのアクセス ............................... 9-24

第 10 章 電力制御10.1 電力制御について .................................................................................................. 10-210.2 電力管理 ................................................................................................................ 10-3

第 11 章 デバッグ11.1 デバッグシステム .................................................................................................. 11-2

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. ivID013111 Non-Confidential

Page 5: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

目次

11.2 デバッグユニッ トについて ................................................................................... 11-311.3 デバッグレジスタ インタフェース ........................................................................ 11-511.4 デバッグレジスタの説明 ..................................................................................... 11-1011.5 管理レジスタ ....................................................................................................... 11-3211.6 デバッグイベン ト ................................................................................................ 11-3911.7 デバッグ例外 ....................................................................................................... 11-4111.8 デバッグ状態 ....................................................................................................... 11-4411.9 キャッシュデバッグ ............................................................................................ 11-5011.10 外部デバッグインタフェース .............................................................................. 11-5111.11 デバッグ機能の使用 ............................................................................................ 11-5411.12 電力管理機能を持つシステムのデバッグ ............................................................ 11-71

第 12 章 FPU のプログラマモデル12.1 FPU のプログラマモデルについて ........................................................................ 12-212.2 汎用レジスタ ......................................................................................................... 12-312.3 システムレジスタ .................................................................................................. 12-412.4 動作モード ........................................................................................................... 12-1012.5 IEEE 754 規格への準拠 ....................................................................................... 12-11

第 13 章 統合テスト レジスタ13.1 統合テストレジスタについて ................................................................................ 13-213.2 統合テストレジスタのプログラ ミングと読み出し ............................................... 13-313.3 統合テストに使用されるプロセッサレジスタの概要 ............................................ 13-413.4 プロセッサ統合テスト ........................................................................................... 13-5

第 14 章 サイクルタイ ミングとインターロック動作14.1 サイクルタイ ミングとインターロック動作について ............................................ 14-314.2 レジスタインターロックの例 ................................................................................ 14-614.3 データ処理命令 ..................................................................................................... 14-714.4 QADD、 QDADD、 QSUB、 QDSUB 命令 ............................................................. 14-914.5 メディアデータ処理 ............................................................................................ 14-1014.6 絶対差の和 (SAD) ................................................................................................ 14-1114.7 乗算 ...................................................................................................................... 14-1214.8 除算 ...................................................................................................................... 14-1414.9 分岐 ...................................................................................................................... 14-1514.10 プロセッサ状態更新命令 ..................................................................................... 14-1614.11 単一ロード / ストア命令 ...................................................................................... 14-1714.12 ダブルワードのロード / ストア命令 .................................................................... 14-2014.13 複数ロード / ストア命令 ...................................................................................... 14-2114.14 RFE 命令と SRS 命令 ......................................................................................... 14-2414.15 同期命令 .............................................................................................................. 14-2514.16 コプロセッサ命令 ................................................................................................ 14-2614.17 SVC、 BKPT、 未定義、 およびプリフェ ッチアボートが発生した命令 .............. 14-2714.18 その他の命令 ....................................................................................................... 14-2814.19 浮動小数点レジスタ転送命令 .............................................................................. 14-2914.20 浮動小数点ロード / ストア命令 ........................................................................... 14-3014.21 浮動小数点単精度データ処理命令 ....................................................................... 14-3214.22 浮動小数点倍精度データ処理命令 ....................................................................... 14-3314.23 デュアル発行 ....................................................................................................... 14-34

第 15 章 AC 特性15.1 プロセッサのタイ ミング ....................................................................................... 15-215.2 プロセッサのタイ ミングパラメータ ..................................................................... 15-3

付録 A プロセッサ信号の説明A.1 プロセッサ信号の説明について .............................................................................. A-2A.2 グローバル信号 ....................................................................................................... A-3A.3 構成信号 .................................................................................................................. A-4A.4 VIC インタフェース信号を含む割り込み信号 ......................................................... A-7

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. vID013111 Non-Confidential

Page 6: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

目次

A.5 レベル 2 インタフェース信号 .................................................................................. A-8A.6 TCM インタフェース信号 ...................................................................................... A-13A.7 デュアルコア インタフェース信号 ........................................................................ A-16A.8 デバッグインタフェース信号 ................................................................................ A-17A.9 ETM インタフェース信号 ...................................................................................... A-19A.10 テスト信号 ............................................................................................................. A-20A.11 MBIST 信号 ............................................................................................................ A-21A.12 検証信号 ................................................................................................................ A-22A.13 FPU 信号 ............................................................................................................... A-23

付録 B ECC 方式B.1 ECC 方式選択のガイドライン ................................................................................. B-2

付録 C リビジ ョ ン

用語集

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. viID013111 Non-Confidential

Page 7: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

表一覧Cortex-R4 および Cortex-R4F テクニカルリファレン

ス マニュアル

改訂履歴 .......................................................................................................................................... ii表 1-1 構成可能なオプシ ョ ン .............................................................................................................. 1-13表 1-2 リセッ ト時に構成可能なオプシ ョ ン ........................................................................................ 1-15表 1-3 製品の各種のバージョ ンに対応する ID 値 ............................................................................... 1-25表 2-1 レジスタモード識別子 ................................................................................................................ 2-8表 2-2 GE[3:0] の設定 .......................................................................................................................... 2-12表 2-3 PSR モードビッ トの値 ............................................................................................................. 2-14表 2-4 例外の開始と終了 ..................................................................................................................... 2-16表 2-5 例外ベクタアドレス位置の構成 ................................................................................................ 2-26表 2-6 例外ベクタ ................................................................................................................................ 2-26表 2-7 Jazelle レジスタ命令の概要 ..................................................................................................... 2-27表 3-1 リセッ トモード ........................................................................................................................... 3-7表 4-1 システム制御コプロセッサのレジスタの機能 ............................................................................ 4-3表 4-2 CP15 レジスタと操作の概要 ...................................................................................................... 4-9表 4-3 メイン ID レジスタのビッ トの機能 .......................................................................................... 4-15表 4-4 キャッシュタイプ レジスタのビッ トの機能 ............................................................................. 4-16表 4-5 TCM タイプレジスタのビッ トの機能 ....................................................................................... 4-16表 4-6 MPU タイプレジスタのビッ トの機能 ....................................................................................... 4-17表 4-7 プロセッサ機能レジスタ 0 のビッ トの機能 ............................................................................. 4-19表 4-8 プロセッサ機能レジスタ 1 のビッ トの機能 ............................................................................. 4-19表 4-9 デバッグ機能レジスタ 0 のビッ トの機能 ................................................................................. 4-20表 4-10 メモリモデル機能レジスタ 0 のビッ トの機能 .......................................................................... 4-22表 4-11 メモリモデル機能レジスタ 1 のビッ トの機能 .......................................................................... 4-23表 4-12 メモリモデル機能レジスタ 2 のビッ トの機能 .......................................................................... 4-24表 4-13 メモリモデル機能レジスタ 3 のビッ トの機能 .......................................................................... 4-25表 4-14 命令セッ ト属性レジスタ 0 のビッ トの機能 ............................................................................. 4-26表 4-15 命令セッ ト属性レジスタ 1 のビッ トの機能 ............................................................................. 4-28

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. viiID013111 Non-Confidential

Page 8: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

表一覧

表 4-16 命令セッ ト属性レジスタ 2 のビッ トの機能 ............................................................................. 4-29表 4-17 命令セッ ト属性レジスタ 3 のビッ トの機能 ............................................................................. 4-30表 4-18 命令セッ ト属性レジスタ 4 のビッ トの機能 ............................................................................. 4-31表 4-19 カレン ト キャッシュサイズ識別レジスタのビッ トの機能 ....................................................... 4-33表 4-20 カレン ト キャッシュサイズ識別レジスタのビッ ト フ ィールド とレジスタエンコード ............ 4-33表 4-21 カレン ト キャッシュレベル ID レジスタのビッ トの機能 ......................................................... 4-34表 4-22 キャッシュサイズ選択レジスタのビッ トの機能 ...................................................................... 4-35表 4-23 システム制御レジスタのビッ トの機能 ..................................................................................... 4-36表 4-24 補助制御レジスタのビッ トの機能 ............................................................................................ 4-38表 4-25 2 次補助制御レジスタのビッ トの機能 ..................................................................................... 4-42表 4-26 コプロセッサアクセス レジスタのビッ トの機能 ..................................................................... 4-45表 4-27 フォールトステータス レジスタのエンコード ......................................................................... 4-45表 4-28 データフォールト ステータスレジスタのビッ トの機能 ........................................................... 4-46表 4-29 命令フォールト ステータスレジスタのビッ トの機能 .............................................................. 4-47表 4-30 ADFSR と AIFSR のビッ トの機能 ............................................................................................ 4-48表 4-31 MPU 領域ベースアドレス レジスタのビッ トの機能 ................................................................ 4-50表 4-32 領域サイズレジスタのビッ トの機能 ........................................................................................ 4-51表 4-33 MPU 領域アクセス制御レジスタのビッ トの機能 ..................................................................... 4-52表 4-34 アクセスデータ許可ビッ トのエンコード ................................................................................. 4-52表 4-35 MPU メモリ領域番号レジスタのビッ トの機能 ........................................................................ 4-53表 4-36 c7 のセッ ト / ウェイビッ ト ...................................................................................................... 4-56表 4-37 レベル 1 キャッシュサイズとセッ ト フ ィールド幅との関係 .................................................... 4-56表 4-38 c7 のアドレス形式ビッ ト ......................................................................................................... 4-57表 4-39 BTCM 領域レジスタのビッ トの機能 ........................................................................................ 4-58表 4-40 ATCM 領域レジスタのビッ トの機能 ........................................................................................ 4-59表 4-41 スレーブポート制御レジスタのビッ トの機能 .......................................................................... 4-60表 4-42 nVAL IRQ イネーブルセッ ト レジスタのビッ トの機能 ........................................................... 4-62表 4-43 nVAL FIQ イネーブルセッ ト レジスタのビッ トの機能 ............................................................ 4-63表 4-44 nVAL リセッ ト イネーブルセッ ト レジスタのビッ トの機能 .................................................... 4-64表 4-45 nVAL デバッグ要求イネーブルセッ ト レジスタのビッ トの機能 ............................................. 4-65表 4-46 nVAL IRQ イネーブルクリア レジスタのビッ トの機能 ........................................................... 4-66表 4-47 nVAL FIQ イネーブルクリア レジスタのビッ トの機能 ............................................................ 4-67表 4-48 nVAL リセッ ト イネーブルクリア レジスタのビッ トの機能 .................................................... 4-68表 4-49 nVAL デバッグ要求イネーブルクリア レジスタのビッ トの機能 ............................................. 4-68表 4-50 nVAL キャッシュサイズ オーバライ ドレジスタ ...................................................................... 4-69表 4-51 nVAL 命令キャッシュおよびデータキャッシュのサイズのエンコード ................................... 4-69表 4-52 訂正可能フォールト位置レジスタ - キャッシュ ....................................................................... 4-71表 4-53 訂正可能フォールト位置レジスタ - TCM ................................................................................. 4-71表 4-54 ビルドオプシ ョ ン 1 レジスタ ................................................................................................... 4-72表 4-55 ビルドオプシ ョ ン 2 レジスタ ................................................................................................... 4-73表 6-1 イベン トバス インタフェースのビッ トの機能 ........................................................................... 6-2表 6-2 PMNC レジスタのビッ トの機能 ................................................................................................. 6-7表 6-3 CNTENS レジスタのビッ トの機能 ............................................................................................. 6-9表 6-4 CNTENC レジスタのビッ トの機能 .......................................................................................... 6-10表 6-5 オーバフローフラグステータス レジスタのビッ トの機能 ....................................................... 6-11表 6-6 SWINCR レジスタのビッ トの機能 ........................................................................................... 6-12表 6-7 パフォーマンスカウンタ選択レジスタのビッ トの機能 ............................................................ 6-13表 6-8 EVTSELx レジスタのビッ トの機能 .......................................................................................... 6-14表 6-9 USEREN レジスタのビッ トの機能 .......................................................................................... 6-15表 6-10 INTENS レジスタのビッ トの機能 ............................................................................................ 6-16表 6-11 INTENC レジスタのビッ トの機能 ............................................................................................ 6-17表 7-1 デフォルトのメモリマップ ......................................................................................................... 7-2表 7-2 メモリ属性の要約 ....................................................................................................................... 7-7表 7-3 TEX[2:0]、 C、 B のエンコード ................................................................................................... 7-9表 7-4 内部と外部のキャッシュポリシーのエンコード ...................................................................... 7-10表 8-1 アボートのタイプ ..................................................................................................................... 8-11表 8-2 キャッシュのパリティエラーに対する動作 .............................................................................. 8-21表 8-3 キャッシュの ECC エラーに対する動作 ................................................................................... 8-22表 8-4 タグ RAM ビッ トの説明、 パリテ ィ付き .................................................................................. 8-26表 8-5 タグ RAM ビッ トの説明、 ECC 付き ........................................................................................ 8-26

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. viiiID013111 Non-Confidential

Page 9: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

表一覧

表 8-6 タグ RAM ビッ トの説明、 パリテ ィ / ECC なし ....................................................................... 8-26表 8-7 キャッシュサイズとタグ RAM の構成 ...................................................................................... 8-27表 8-8 ダーティ RAM ラインの構成 .................................................................................................... 8-27表 8-9 命令キャッシュのデータ RAM のサイズ、 パリテ ィまたは ECC なし ..................................... 8-29表 8-10 データキャッシュのデータ RAM のサイズ、 パリテ ィまたは ECC なし ................................. 8-29表 8-11 命令キャッシュのデータ RAM のサイズ、 パリテ ィ付き ......................................................... 8-29表 8-13 データキャッシュ RAM ビッ ト、 パリテ ィ付き ....................................................................... 8-30表 8-14 命令キャッシュのデータ RAM のサイズ、 ECC 付き ............................................................... 8-30表 8-12 データキャッシュのデータ RAM のサイズ、 パリテ ィ付き ..................................................... 8-30表 8-15 データキャッシュのデータ RAM のサイズ、 ECC 付き ........................................................... 8-31表 8-16 データキャッシュ RAM ビッ ト、 ECC 付き ............................................................................. 8-31表 8-17 メモリ タイプと対応する動作 ................................................................................................... 8-35表 9-1 AXI マスタインタフェースの属性 .............................................................................................. 9-3表 9-2 ARCACHEM と AWCACHEM のエンコード .............................................................................. 9-5表 9-3 ARUSERM と AWUSERM のエンコード ................................................................................... 9-5表 9-4 キャッシュ不可の LDRB ............................................................................................................. 9-8表 9-5 ストロングリオーダまたはデバイスメモリからの LDRH .......................................................... 9-9表 9-6 ストロングリオーダまたはデバイスメモリからの LDR または LDM1 ...................................... 9-9表 9-7 ストロングリオーダまたはデバイスメモリからの LDM5 ........................................................ 9-10表 9-8 ストロングリオーダまたはデバイスメモリへの STRB ............................................................ 9-11表 9-9 ストロングリオーダまたはデバイスメモリへの STRH ............................................................ 9-11表 9-10 ストロングリオーダまたはデバイスメモリへの STR または STM1 ........................................ 9-12表 9-11 ストロングリオーダまたはデバイスメモリのワード 0 または 1 への STM7 ........................... 9-12表 9-12 AXI インタフェースでのラインフ ィルの動作 .......................................................................... 9-13表 9-13 キャッシュラインのライ トバック ............................................................................................ 9-13表 9-14 キャッシュ不可のノーマルメモリからの LDRH ...................................................................... 9-13表 9-15 キャッシュ不可のノーマルメモリからの LDR または LDM1 ................................................... 9-14表 9-16 キャッシュ不可のノーマルメモリまたはキャッシュが非稼働な場合の LDM5 ........................ 9-14表 9-17 キャッシュ可能なライ トスルー、 またはキャッシュ不可のノーマルメモリへの STRH ......... 9-15表 9-18 キャッシュ可能なライ トスルー、またはキャッシュ不可のノーマルメモリへの STR または STM1

9-16表 9-19 6 ワードすべてが同じキャッシュラインに含まれている場合の AXI ト ランザクシ ョ ンの分割 9-16表 9-20 データが 2 つのキャッシュラインにまたがる場合の AXI ト ランザクシ ョ ンの分割 ................ 9-17表 9-21 キャッシュ不可の LDR または LDM1 がキャッシュラインの境界にまたがる場合 .................. 9-17表 9-22 キャッシュ可能ライ トスルーまたはキャッシュ不可の STRH がキャッシュラインの境界にまたが

る場合 ....................................................................................................................................... 9-17表 9-23 ストロングリオーダまたはデバイスタイプのメモリへの AXI ト ランザクシ ョ ン .................... 9-18表 9-24 キャッシュ不可ノーマルまたはキャッシュ可能ライ トスルーのメモリに対しての AXI ト ランザク

シ ョ ン ....................................................................................................................................... 9-18表 9-25 AXI スレーブインタフェースの属性 ......................................................................................... 9-22表 9-26 RAM 領域のデコード ................................................................................................................ 9-24表 9-27 TCM チップセレク トのデコード .............................................................................................. 9-25表 9-28 各種 TCM RAM サイズに対応する MSB ビッ ト ....................................................................... 9-25表 9-29 キャッシュ RAM のチップセレク トのデコード ....................................................................... 9-26表 9-30 キャッシュのタグ / 有効 RAM のバンク / アドレスデコード ................................................... 9-26表 9-32 データ形式、 命令キャッシュおよびデータキャッシュ、 パリテ ィまたは ECC なし .............. 9-27表 9-33 データ形式、 命令キャッシュおよびデータキャッシュ、 パリテ ィあり .................................. 9-27表 9-31 キャッシュのデータ RAM のバンク / アドレスデコード .......................................................... 9-27表 9-34 データ形式、 命令キャッシュ、 ECC あり ................................................................................ 9-28表 9-35 データ形式、 データキャッシュ、 ECC あり ............................................................................ 9-28表 9-36 読み出し用のタグレジスタ形式、 パリテ ィまたは ECC なし .................................................. 9-29表 9-37 読み出し用のタグレジスタ形式、 パリテ ィあり ...................................................................... 9-29表 9-38 読み出し用のタグレジスタ形式、 ECC あり ............................................................................ 9-29表 9-39 書き込み用のタグレジスタ形式、 パリテ ィまたは ECC なし .................................................. 9-30表 9-40 書き込み用のタグレジスタ形式、 パリテ ィあり ...................................................................... 9-30表 9-41 書き込み用のタグレジスタ形式、 ECC あり ............................................................................ 9-30表 9-42 ダーティ レジスタの形式、 パリテ ィまたはエラー処理方式なし ............................................. 9-31表 9-43 ダーティ レジスタの形式、 ECC あり ....................................................................................... 9-31表 11-1 CP14 デバッグレジスタへのアクセス ...................................................................................... 11-5表 11-2 CP14 デバッグレジスタの概要 ................................................................................................ 11-6

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. ixID013111 Non-Confidential

Page 10: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

表一覧

表 11-3 メモリマップされたデバッグレジスタ ..................................................................................... 11-6表 11-4 外部デバッグインタフェースのアクセス許可 .......................................................................... 11-9表 11-5 レジスタの説明で使用される用語 .......................................................................................... 11-10表 11-6 CP14 デバッグレジスタのマップ ........................................................................................... 11-10表 11-7 デバッグ ID レジスタの機能 ................................................................................................... 11-11表 11-8 デバッグ ROM アドレスレジスタの機能 ................................................................................ 11-12表 11-9 デバッグ自己アドレスオフセッ ト レジスタの機能 ................................................................ 11-13表 11-10 デバッグステータスおよび制御レジスタの機能 .................................................................... 11-14表 11-11 データ転送レジスタの機能 ..................................................................................................... 11-19表 11-12 ウォッチポイン ト フォールト アドレスレジスタの機能 ......................................................... 11-19表 11-13 ベクタキャッチ レジスタの機能 ............................................................................................. 11-20表 11-14 デバッグ状態キャッシュ制御レジスタの機能 ........................................................................ 11-21表 11-15 デバッグ実行制御レジスタの機能 .......................................................................................... 11-22表 11-16 ブレークポイン ト値レジスタの機能 ...................................................................................... 11-23表 11-17 ブレークポイン ト制御レジスタの機能 ................................................................................... 11-24表 11-18 BVR のビッ ト [22:20] の意味 .................................................................................................. 11-25表 11-19 ブレークポイン ト値レジスタの機能 ...................................................................................... 11-26表 11-20 ウォッチポイン ト制御レジスタの機能 ................................................................................... 11-27表 11-21 OS ロックステータス レジスタの機能 ................................................................................... 11-29表 11-22 認証ステータスレジスタのビッ トの機能 ............................................................................... 11-29表 11-23 PRCR の機能 .......................................................................................................................... 11-30表 11-24 PRSR の機能 .......................................................................................................................... 11-31表 11-25 管理レジスタ .......................................................................................................................... 11-32表 11-26 プロセッサ ID レジスタ .......................................................................................................... 11-32表 11-27 クレームタグ セッ ト レジスタの機能 ..................................................................................... 11-33表 11-28 クレームタグ クリアレジスタの機能 ..................................................................................... 11-34表 11-29 ロックステータス レジスタの機能 ......................................................................................... 11-35表 11-30 デバイスタイプ レジスタの機能 ............................................................................................. 11-35表 11-31 ペリフェラル識別レジスタ ..................................................................................................... 11-36表 11-32 ペリフェラル識別レジスタのフ ィールド ............................................................................... 11-36表 11-33 ペリフェラル ID レジスタ 0 の機能 ........................................................................................ 11-36表 11-34 ペリフェラル ID レジスタ 1 の機能 ........................................................................................ 11-37表 11-35 ペリフェラル ID レジスタ 2 の機能 ........................................................................................ 11-37表 11-36 ペリフェラル ID レジスタ 3 の機能 ........................................................................................ 11-37表 11-37 ペリフェラル ID レジスタ 4 の機能 ........................................................................................ 11-37表 11-38 コンポーネン ト識別レジスタ ................................................................................................. 11-38表 11-39 デバッグイベン ト時のプロセッサの動作 ............................................................................... 11-40表 11-40 例外後のリンクレジスタの値 ................................................................................................. 11-42表 11-41 デバッグ状態への移行後に読み出される PC の値 ................................................................. 11-44表 11-42 認証信号の制限 ....................................................................................................................... 11-52表 11-43 単純なブレークポイン ト用に BCR に書き込む値 .................................................................. 11-58表 11-44 単純なウォッチポイン ト用に WCR に書き込む値 ................................................................. 11-59表 11-45 ウォッチポイン ト対象のオブジェク トに対応するバイ トアドレス マスクの例 ..................... 11-60表 12-1 VFP システムレジスタ ............................................................................................................. 12-4表 12-2 VFP システムレジスタへのアクセス ........................................................................................ 12-4表 12-3 FPSID レジスタのビッ トの機能 ............................................................................................... 12-5表 12-4 FPSCR レジスタのビッ トの機能 ............................................................................................. 12-6表 12-5 浮動小数点例外レジスタのビッ トの機能 ................................................................................. 12-8表 12-6 MVFR0 レジスタのビッ トの機能 ............................................................................................. 12-8表 12-7 MVFR1 レジスタのビッ トの機能 ............................................................................................. 12-9表 12-8 デフォルト NaN 値 ................................................................................................................. 12-11表 12-9 QNaN と SNaN の処理 ........................................................................................................... 12-12表 13-1 統合テスト レジスタの概要 ....................................................................................................... 13-4表 13-2 統合テスト レジスタで制御可能な出力信号 .............................................................................. 13-5表 13-3 統合テスト レジスタで読み出し可能な入力信号 ...................................................................... 13-6表 13-4 ITETMIF レジスタのビッ ト割り当て ........................................................................................ 13-7表 13-5 ITMISCOUT レジスタのビッ ト割り当て .................................................................................. 13-8表 13-6 ITMISCIN レジスタのビッ ト割り当て ...................................................................................... 13-9表 13-7 ITCTRL レジスタのビッ ト割り当て ....................................................................................... 13-10表 14-1 サイクルタイ ミング用語の定義 ................................................................................................ 14-4

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. xID013111 Non-Confidential

Page 11: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

表一覧

表 14-2 レジスタインターロックの例 ................................................................................................... 14-6表 14-3 デスティネーシ ョ ンが PC でない場合のデータ処理命令のサイクルタイ ミング動作 ............. 14-7表 14-4 デスティネーシ ョ ンが PC である場合のデータ処理命令のサイクルタイ ミング動作 ............. 14-7表 14-5 QADD、 QDADD、 QSUB、 QDSUB 命令のサイクルタイ ミング動作 ..................................... 14-9表 14-6 メディアデータ処理命令のサイクルタイ ミング動作 ............................................................. 14-10表 14-7 絶対差の和命令のタイ ミング動作 .......................................................................................... 14-11表 14-8 インターロックの例 ................................................................................................................ 14-11表 14-9 乗算命令のサイクルタイ ミング動作の例 ............................................................................... 14-12表 14-10 分岐命令のサイクルタイ ミング動作 ...................................................................................... 14-15表 14-11 プロセッサ状態更新命令のサイクルタイ ミング動作 ............................................................. 14-16表 14-12 PC へのロードを除く ロード / ストアのサイクルタイ ミング動作 .......................................... 14-17表 14-13 PC へのロードのサイクルタイ ミング動作 ............................................................................. 14-17表 14-14 LDR 命令で使用される <addr_md_1cycle> と <addr_md_3cycle> の例 ............................... 14-18表 14-15 ダブルワードロード / ストア命令のサイクルタイ ミング動作 ............................................... 14-20表 14-16 LDRD 命令で使用される <addr_md_1cycle> と <addr_md_3cycle> の例 ............................. 14-20表 14-17 PC を含む複数ロード以外の、 複数ロード / ストアのサイクルタイ ミング動作 .................... 14-21表 14-18 PC がレジスタ リス トに含まれている場合の、 複数ロードのサイクルタイ ミング動作 (64 ビッ ト

アラインド) ............................................................................................................................ 14-22表 14-19 RFE 命令と SRS 命令のサイクルタイ ミング動作 ................................................................. 14-24表 14-20 同期命令のサイクルタイ ミング動作 ...................................................................................... 14-25表 14-21 コプロセッサ命令のサイクルタイ ミング動作 ........................................................................ 14-26表 14-22 SVC 命令、 BKPT 命令、 未定義命令、 およびプリフェ ッチアボートが発生した命令のサイクルタ

イ ミング動作 .......................................................................................................................... 14-27表 14-23 IT 命令と NOP 命令のサイクルタイ ミング動作 ..................................................................... 14-28表 14-24 浮動小数点レジスタ転送命令のサイクルタイ ミング動作 ...................................................... 14-29表 14-25 浮動小数点ロード / ストア命令のサイクルタイ ミング動作 ................................................... 14-30表 14-26 浮動小数点単精度データ処理命令のサイクルタイ ミング動作 ............................................... 14-32表 14-27 浮動小数点倍精度データ処理命令のサイクルタイ ミング動作 ............................................... 14-33表 14-28 許可される命令の組み合わせ ................................................................................................. 14-35表 15-1 その他の入力ポートのタイ ミングパラメータ .......................................................................... 15-3表 15-2 構成入力ポートのタイ ミングパラメータ ................................................................................. 15-3表 15-3 割り込み入力ポートのタイ ミングパラメータ .......................................................................... 15-4表 15-4 AXI マスタ入力ポートのタイ ミングパラメータ ....................................................................... 15-4表 15-5 AXI スレーブ入力ポートのタイ ミングパラメータ ................................................................... 15-5表 15-6 デバッグ入力ポートのタイ ミングパラメータ .......................................................................... 15-6表 15-7 ETM 入力ポートのタイ ミングパラメータ ................................................................................ 15-6表 15-8 テスト入力ポートのタイ ミングパラメータ .............................................................................. 15-7表 15-9 TCM インタフェース入力ポートのタイ ミングパラメータ ...................................................... 15-7表 15-10 その他の出力ポートのタイ ミングパラメータ .......................................................................... 15-8表 15-11 割り込み出力ポートのタイ ミングパラメータ .......................................................................... 15-8表 15-12 AXI マスタ出力ポートのタイ ミングパラメータ ....................................................................... 15-8表 15-13 AXI スレーブ出力ポートのタイ ミングパラメータ ................................................................. 15-10表 15-14 デバッグインタフェース出力ポートのタイ ミングパラメータ ............................................... 15-10表 15-15 ETM インタフェース出力ポートのタイ ミングパラメータ ..................................................... 15-11表 15-16 テスト出力ポートのタイ ミングパラメータ ............................................................................ 15-11表 15-17 TCM インタフェース出力ポートのタイ ミングパラメータ .................................................... 15-11表 15-18 FPU 出力ポートのタイ ミングパラメータ .............................................................................. 15-12表 A-1 グローバル信号 ........................................................................................................................... A-3表 A-2 構成信号 ...................................................................................................................................... A-4表 A-3 割り込み信号 .............................................................................................................................. A-7表 A-4 レベル 2 インタフェースの AXI マスタポート信号 .................................................................... A-8表 A-5 AXI マスタポートのエラー検出信号 ......................................................................................... A-10表 A-6 レベル 2 インタフェースの AXI スレーブポート信号 ............................................................... A-10表 A-7 AXI スレーブポートのエラー検出信号 ..................................................................................... A-12表 A-8 ATCM ポート信号 ..................................................................................................................... A-13表 A-9 B0TCM ポート信号 ................................................................................................................... A-13表 A-10 B1TCM ポート信号 ................................................................................................................... A-14表 A-11 デュアルコア インタフェース信号 ........................................................................................... A-16表 A-12 デバッグインタフェース信号 ................................................................................................... A-17表 A-13 その他のデバッグ信号 .............................................................................................................. A-17

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. xiID013111 Non-Confidential

Page 12: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

表一覧

表 A-14 ETM インタフェース信号 ......................................................................................................... A-19表 A-15 テスト信号 ................................................................................................................................ A-20表 A-16 MBIST 信号 ............................................................................................................................... A-21表 A-17 検証信号 .................................................................................................................................... A-22表 A-18 FPU 信号 ................................................................................................................................... A-23表 C-1 B 版と C 版の相違点 ................................................................................................................... C-1表 C-2 C 版と D 版の相違点 ................................................................................................................... C-3表 C-3 D 版と E 版の相違点 ................................................................................................................... C-3表 C-4 E 版と F 版の相違点 ................................................................................................................... C-3

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. xiiID013111 Non-Confidential

Page 13: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

図一覧Cortex-R4 および Cortex-R4F テクニカルリファレン

ス マニュアル

タイ ミング図の規則を表す記号 ................................................................................................... xix図 1-1 プロセッサのブロック図 ............................................................................................................ 1-4図 1-2 プロセッサのフェ ッチとデコードのパイプラインステージ .................................................... 1-17図 1-3 Cortex-R4 の発行および実行のパイプラインステージ ............................................................ 1-17図 1-4 Cortex-R4F の発行および実行のパイプラインステージ .......................................................... 1-18図 2-1 バイ ト不変ビッグエンディアン (BE-8) 形式 .............................................................................. 2-6図 2-2 リ トルエンディアン形式 ............................................................................................................ 2-6図 2-3 レジスタ構成 .............................................................................................................................. 2-9図 2-4 プログラムステータス レジスタ ............................................................................................... 2-10図 2-5 割り込み開始シーケンス .......................................................................................................... 2-21図 3-1 パワーオン リセッ ト ................................................................................................................... 3-7図 3-2 AXI インタフェースのクロック .................................................................................................. 3-9図 4-1 システム制御および構成レジスタ .............................................................................................. 4-4図 4-2 MPU 制御および構成レジスタ ................................................................................................... 4-5図 4-3 キャッシュ制御および構成レジスタ .......................................................................................... 4-6図 4-4 TCM 制御および構成レジスタ .................................................................................................... 4-6図 4-5 システムパフォーマンス モニタレジスタ .................................................................................. 4-7図 4-6 システム検証レジスタ ................................................................................................................ 4-7図 4-7 メイン ID レジスタの形式 ......................................................................................................... 4-14図 4-8 キャッシュタイプ レジスタの形式 ........................................................................................... 4-15図 4-9 TCM タイプレジスタの形式 ..................................................................................................... 4-16図 4-10 MPU タイプレジスタの形式 ..................................................................................................... 4-17図 4-11 マルチプロセッサ ID レジスタの形式 ....................................................................................... 4-18図 4-12 プロセッサ機能レジスタ 0 の形式 ............................................................................................ 4-18図 4-13 プロセッサ機能レジスタ 1 の形式 ............................................................................................ 4-19図 4-14 デバッグ機能レジスタ 0 の形式 ............................................................................................... 4-20図 4-15 メモリモデル機能レジスタ 0 の形式 ........................................................................................ 4-22

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. xiiiID013111 Non-Confidential

Page 14: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

図一覧

図 4-16 メモリモデル機能レジスタ 1 の形式 ........................................................................................ 4-23図 4-17 メモリモデル機能レジスタ 2 の形式 ........................................................................................ 4-24図 4-18 メモリモデル機能レジスタ 3 の形式 ........................................................................................ 4-25図 4-19 命令セッ ト属性レジスタ 0 の形式 ............................................................................................ 4-26図 4-20 命令セッ ト属性レジスタ 1 の形式 ............................................................................................ 4-27図 4-21 命令セッ ト属性レジスタ 2 の形式 ............................................................................................ 4-29図 4-22 命令セッ ト属性レジスタ 3 の形式 ............................................................................................ 4-30図 4-23 命令セッ ト属性レジスタ 4 の形式 ............................................................................................ 4-31図 4-24 カレン ト キャッシュサイズ識別レジスタの形式 ..................................................................... 4-33図 4-25 カレン ト キャッシュレベル ID レジスタの形式 ....................................................................... 4-34図 4-26 キャッシュサイズ選択レジスタの形式 ..................................................................................... 4-35図 4-27 システム制御レジスタの形式 ................................................................................................... 4-36図 4-28 補助制御レジスタの形式 .......................................................................................................... 4-38図 4-29 2 次補助制御レジスタの形式 .................................................................................................... 4-42図 4-30 コプロセッサアクセス レジスタの形式 .................................................................................... 4-44図 4-31 データフォールト ステータスレジスタの形式 ......................................................................... 4-46図 4-32 命令フォールト ステータスレジスタの形式 ............................................................................. 4-47図 4-33 補助フォールト ステータスレジスタの形式 ............................................................................. 4-48図 4-34 MPU 領域ベースアドレス レジスタの形式 .............................................................................. 4-50図 4-35 MPU 領域サイズおよびイネーブルレジスタの形式 ................................................................. 4-51図 4-36 MPU 領域アクセス制御レジスタの形式 ................................................................................... 4-52図 4-37 MPU メモリ領域番号レジスタの形式 ....................................................................................... 4-53図 4-38 キャッシュ操作 ......................................................................................................................... 4-55図 4-39 c7 のセッ ト / ウェイ形式 .......................................................................................................... 4-56図 4-40 キャッシュ操作のアドレス形式 ................................................................................................ 4-56図 4-41 BTCM 領域レジスタ ................................................................................................................. 4-58図 4-42 ATCM 領域レジスタ ................................................................................................................. 4-59図 4-43 スレーブポート制御レジスタ ................................................................................................... 4-60図 4-44 nVAL IRQ イネーブルセッ ト レジスタの形式 .......................................................................... 4-62図 4-45 nVAL FIQ イネーブルセッ ト レジスタの形式 .......................................................................... 4-63図 4-46 nVAL リセッ ト イネーブルセッ ト レジスタの形式 ................................................................... 4-64図 4-47 nVAL デバッグ要求イネーブルセッ ト レジスタの形式 ............................................................ 4-65図 4-48 nVAL IRQ イネーブルクリア レジスタの形式 .......................................................................... 4-66図 4-49 nVAL FIQ イネーブルクリア レジスタの形式 .......................................................................... 4-67図 4-50 nVAL リセッ ト イネーブルクリア レジスタの形式 ................................................................... 4-67図 4-51 nVAL デバッグ要求イネーブルクリア レジスタの形式 ............................................................ 4-68図 4-52 nVAL キャッシュサイズ オーバライ ドレジスタの形式 ............................................................ 4-69図 4-53 訂正可能フォールト位置レジスタ - キャッシュ ....................................................................... 4-71図 4-54 訂正可能フォールト位置レジスタ - TCM ................................................................................. 4-71図 4-55 ビルドオプシ ョ ン 1 レジスタの形式 ........................................................................................ 4-72図 4-56 ビルドオプシ ョ ン 2 レジスタの形式 ........................................................................................ 4-73図 6-1 PMNC レジスタの形式 ............................................................................................................... 6-7図 6-2 CNTENS レジスタの形式 ........................................................................................................... 6-9図 6-3 CNTENC レジスタの形式 ......................................................................................................... 6-10図 6-4 FLAG レジスタの形式 .............................................................................................................. 6-11図 6-5 SWINCR レジスタの形式 ......................................................................................................... 6-12図 6-6 PMNXSEL レジスタの形式 ....................................................................................................... 6-12図 6-7 EVTSELx レジスタの形式 ........................................................................................................ 6-14図 6-8 USEREN レジスタの形式 ......................................................................................................... 6-15図 6-9 INTENS レジスタの形式 ........................................................................................................... 6-16図 6-10 INTENC レジスタの形式 .......................................................................................................... 6-17図 7-1 オーバラップしているメモリ領域 .............................................................................................. 7-5図 7-2 オーバーレイによるスタ ック保護 .............................................................................................. 7-5図 7-3 オーバラップしているメモリのサブ領域 ................................................................................... 7-6図 8-1 レベル 1 メモリシステムのブロック図 ....................................................................................... 8-3図 8-2 エラーの検出および訂正方式 ..................................................................................................... 8-4図 8-3 非シーケンシャルな読み出し操作を 1 回の RAM アクセスで行う例 ....................................... 8-28図 8-4 シーケンシャルな読み出し操作を 1 回の RAM アクセスで行う例 .......................................... 8-28図 11-1 一般的なデバッグシステム ....................................................................................................... 11-2図 11-2 デバッグ ID レジスタの形式 ................................................................................................... 11-11

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. xivID013111 Non-Confidential

Page 15: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

図一覧

図 11-3 デバッグ ROM アドレスレジスタの形式 ................................................................................ 11-12図 11-4 デバッグ自己アドレスオフセッ ト レジスタの形式 ................................................................ 11-13図 11-5 デバッグステータスおよび制御レジスタの形式 .................................................................... 11-14図 11-6 ウォッチポイン ト フォールト アドレスレジスタの形式 ......................................................... 11-19図 11-7 ベクタキャッチ レジスタの形式 ............................................................................................. 11-20図 11-8 デバッグ状態キャッシュ制御レジスタの形式 ........................................................................ 11-21図 11-9 デバッグ実行制御レジスタの形式 .......................................................................................... 11-22図 11-10 ブレークポイン ト制御レジスタの形式 ................................................................................... 11-23図 11-11 ウォッチポイン ト制御レジスタの形式 ................................................................................... 11-27図 11-12 OS ロックステータス レジスタの形式 ................................................................................... 11-29図 11-13 認証ステータスレジスタの形式 .............................................................................................. 11-29図 11-14 PRCR の形式 .......................................................................................................................... 11-30図 11-15 PRSR の形式 .......................................................................................................................... 11-31図 11-16 クレームタグ セッ ト レジスタの形式 ..................................................................................... 11-33図 11-17 クレームタグ クリアレジスタの形式 ..................................................................................... 11-34図 11-18 ロックステータス レジスタの形式 ......................................................................................... 11-34図 11-19 デバイスタイプ レジスタの形式 ............................................................................................. 11-35図 12-1 FPU のレジスタバンク ............................................................................................................. 12-3図 12-2 浮動小数点システム ID レジスタの形式 ................................................................................... 12-5図 12-3 浮動小数点ステータスおよび制御レジスタの形式 ................................................................... 12-6図 12-4 浮動小数点例外レジスタの形式 ................................................................................................ 12-7図 12-5 MVFR0 レジスタの形式 ............................................................................................................ 12-8図 12-6 MVFR1 レジスタの形式 ............................................................................................................ 12-9図 13-1 ITETMIF レジスタのビッ ト割り当て ........................................................................................ 13-7図 13-2 ITMISCOUT レジスタのビッ ト割り当て .................................................................................. 13-8図 13-3 ITMISCIN レジスタのビッ ト割り当て ...................................................................................... 13-9図 13-4 ITCTRL レジスタのビッ ト割り当て ......................................................................................... 13-9

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. xvID013111 Non-Confidential

Page 16: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

序章

本章では、 『Cortex-R4 および Cortex-R4F テクニカルリ ファレンス マニュアル』 について説明します。 本章は次のセクシ ョ ンから構成されています。

• 「本書について」 (ページ xvii)

• 「ご意見 ・ ご質問」 (ページ xxi)

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. xviID013111 Non-Confidential

Page 17: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

序章

本書について

本書は、 Cortex-R4 および Cortex-R4F プロセッサのテクニカルリ ファレンス マニュアル (TRM) です。 本書では、 プロセッサという一般的な用語を使用した場合、Cortex-R4 および Cortex-R4F の両方のプロセッサを意味します。 これら 2 つのプロセッサの相違点については、 必要な場所で説明します。

注 Cortex-R4F プロセッサは、 オプシ ョ ンの浮動小数点ユニッ ト (FPU) 拡張機能を含むCortex-R4 プロセッサです。 詳細については、 「製品のリ ビジ ョ ン情報」 (ページ 1-24) を参照して下さい。

本書では、 Cortex-R4 プロセッサに関する記述は基本的に Cortex-R4F プロセッサにも適用され、 そ うでない場合には明確に説明されています。

製品リビジ ョ ンステータス

rnpn 識別子は、 本書に記載されている製品のリ ビジ ョ ンステータスを示しています。各識別子の意味は次のとおりです。

rn 製品が大幅に修正されたこ とを示しています。

pn 製品に小さな修正または変更が加えられたこ とを示しています。

対象読者

本書は、 このプロセッサを使用するシステムオンチップ (SoC) の設計またはプログラ ミ ングを行うシステム設計者、 システムインテグレータ、 およびプログラマを対象と しています。

本書の使用法

本書は以下の章に分かれています。

第 1 章 はじめに

プロセッサを紹介し、 主な機能ブロ ッ クについて説明します。

第 2 章 プログラマモデル

プロセッサのレジスタについて説明し、 プログラ ミ ングに関する情報を解説します。

第 3 章 プロセッサの初期化、 リセッ ト 、 ク ロ ッ ク

プロセッサのクロ ッ ク と リセッ ト 、 およびリセッ ト後にソフ ト ウェアでプロセッサを初期化するために必要な手順について説明します。

第 4 章 システム制御コプロセッサ

システム制御コプロセッサのレジスタについて説明し、 プログラ ミ ングに関する情報を解説します。

第 5 章 プリ フェ ッチユニッ ト

プリ フェ ッチユニッ ト (PFU) の機能について、 動的な分岐予測やリ ターンスタ ッ ク も含めて説明します。

第 6 章 イベン ト とパフォーマンスモニタ

パフォーマンス監視ユニッ ト (PMU) と イベン トバスについて説明します。

第 7 章 メモ リ保護ユニッ ト

メモ リ保護ユニッ ト (MPU) とアクセス許可の処理について説明します。

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. xviiID013111 Non-Confidential

Page 18: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

序章

第 8 章 レベル 1 メモ リ システム

レベル 1 (L1) メモ リ システムについて説明します。

第 10 章 電力制御

電力制御機構について説明します。

第 11 章 デバッグ

デバッグサポートについて説明します。

第 12 章 FPU のプログラマモデル

Cortex-R4F プロセッサの浮動小数点ユニッ ト (FPU) サポートについて説明します。

第 13 章 統合テス ト レジスタ

統合テス ト レジスタ と、 ETM-R4 ト レースマクロセルを使用したプロセッサの統合テス トについて説明します。

第 15 章 AC 特性

プロセッサに適用されるタイ ミ ングパラ メータについて説明します。

第 14 章 サイクルタイ ミ ングと インターロ ッ ク動作

命令のサイクルタイ ミングと、 命令のインターロックについて説明します。

付録 A プロセッサ信号の説明

プロセッサの入出力について説明します。

付録 B ECC 方式

密結合メモ リ (TCM) の構成に応じて、 エラーチェッ クおよび訂正(ECC) 方式を選択する方法について説明します。

付録 C リ ビジ ョ ン

本書の各リ リースにおける技術的な変更点について説明します。

用語集 本書で使用されている用語の定義について説明します。

表記規則

本書では次の表記規則が採用されています。

• 「書体の一般的な規則」• 「タ イ ミ ング図」 (ページ xix)

• 「信号」 (ページ xix)

書体の一般的な規則

本書で使用されている書体の一般的な規則は次のとおりです。

斜体 重要な注釈の強調、 特別な用語の初出時、 本書内での相互参照と引用に使用されます。

太字 メニュー名などのインタフェース要素を強調するために太字が使用されます。 信号名を示すためにも使用されています。 また、 必要に応じて説明表の用語にも太字が使用されています。

monospace コマンド、 ファ イル名、 プログラム名、 ソースコードなどの、キーボードから入力可能なテキス ト を示しています。

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. xviiiID013111 Non-Confidential

Page 19: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

序章

monospace コマンドまたはオプシ ョ ンに使用可能な略語を示しています。 コマンドやオプシ ョ ンの名前を全部入力する代わりに、 下線部分のテキス トだけを入力してこれらを指定できます。

monospace italic 具体的な値に置き換えられる引数を示しています。

monospace bold サンプルコード以外で使用されている場合、 言語のキーワードを示しています。

< および > コードまたはコード片の中で不等号の括弧で囲まれている部分は、 アセンブラ構文内で置き換え可能なこ とを示しています。 次に例を示します。

MRC p15, 0 <Rd>, <CRn>, <CRm>, <Opcode_2>

タイ ミ ング図

タイ ミ ング図で使用される構成要素を、 「タイ ミ ング図の規則を表す記号」 に示します。 この図と異なる意味で使用されている場合は、 その都度明記されています。 タイ ミ ング図に明示されていないタイ ミ ング情報については、 推測で判断しないで下さい。

バス と信号で影が付いている部分は定義されていないため、 バス と信号は、 その時点で影付きの領域内の任意の値を取り得ます。 実際のレベルは重要ではなく、 通常の動作には影響しません。

タイ ミング図の規則を表す記号

信号

信号の表記規則は次のとおりです。

信号レベル アサート される信号のレベルは、 その信号がアクティブ HIGH かアクティブ LOW かによって異な り ます。 「アサート された」 とは、 次の状態を意味します。

• アクティブ HIGH の信号に対しては HIGH

• アクティブ LOW の信号に対しては LOW

小文字の n アクティブ LOW 信号の信号名の 初または 後に付加されます。

接頭文字 A グローバルなアドバンス ト エクステンシブルインタフェース(AXI) 信号を表します。

接頭文字 AR AXI の読み出しアドレスチャネル信号を表します。

接頭文字 AW AXI の書き込みアドレスチャネル信号を表します。

接頭文字 B AXI の書き込み応答チャネル信号を表します。

HIGH LOW

HIGH/LOW HIGH

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. xixID013111 Non-Confidential

Page 20: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

序章

接頭文字 P アドバンス ト ペリ フェラルバス (APB) 信号を表します。

接頭文字 R AXI の読み出しデータチャネル信号を表します。

接頭文字 W AXI の書き込みデータチャネル信号を表します。

参考資料

こ こでは、 ARM Limited やサードパーティが発行している出版物を紹介します。

ARM の出版物は http://infocenter.arm.com で参照できます。

ARM の刊行物

本書には、 このプロセッサに固有の情報が記載されています。 他の関連情報については、 以下の出版物を参照して下さい。

• AMBA® AXI プロ ト コル仕様 (ARM IHI 0022)

• AMBA 3 APB プロ ト コル仕様 (ARM IHI 0024)

• ARM アーキテクチャ リ ファレンスマニュアル (ARMv7-A および ARMv7-R エディシ ョ ン) (ARM DDI 0406)

• ARM PrimeCell® ベクタ割り込みコン ト ローラ (PL192) テクニカル リ ファレンスマニュアル (ARM DDI 0273)

• Cortex-R4 および Cortex-R4F インテグレーシ ョ ン マニュアル (ARM DII 0130)

• Cortex-R4 および Cortex-R4F 構成およびサインオフ ガイ ド (ARM DII 0185)

• CoreSight™ DAP-Lite テクニカルリ ファレンス マニュアル (ARM DDI 0316)

• CoreSight ETM-R4 テクニカルリ ファレンス マニュアル (ARM DII 0367)

• RealView™ コンパイルツール デベロ ッパガイ ド (ARM DUI 0203)

• アプリ ケーシ ョ ンノート 98、 VFP サポート コード (ARM DAI 0098)

• アプリ ケーシ ョ ンノート 204、 プロセッサのメモ リ タイプとアクセスの順序付けについて (ARM DAI 0204)

その他の刊行物

このセクシ ョ ンでは、 サードパーティが発行している関連出版物を紹介します。

• ANSI/IEEE Std 754-1985、 IEEE Standard for Binary Floating-Point Arithmetic

• JEP106M、 Standard Manufacturers Identification Code、 JEDEC Solid State Technology Association

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. xxID013111 Non-Confidential

Page 21: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

序章

ご意見 ・ ご質問

ARM では、 本製品と本書に関するご意見等をお待ちしており ます。

製品に関するご意見

本製品に関するご意見 ・ ご質問等がございましたら、 次の情報と と もに製品購入元までご連絡下さい。

• 製品名

• 製品のリ ビジ ョ ンまたはバージ ョ ン

• できるだけ詳細な説明。 該当する場合には、 現象もご記載下さい。

本書に関するご意見

本書に関するご意見等がございましたら、 電子メールに次の情報をご記入の上、[email protected] までお寄せ下さい。

• 題名

• 資料番号

• ご意見のあるページ番号

• ご意見についての簡潔な説明

補足または改善すべき点についての一般的なご意見もお待ちしており ます。

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. xxiID013111 Non-Confidential

Page 22: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

第 1 章 はじめに

本章では、 プロセッサとその機能の概要を紹介します。 本章は次のセクシ ョ ンから構成されています。

• 「プロセッサについて」 (ページ 1-2)

• 「アーキテクチャについて」 (ページ 1-3)

• 「プロセッサのコンポーネン ト 」 (ページ 1-4)

• 「プロセッサの外部インタフェース」 (ページ 1-11)

• 「電力管理」 (ページ 1-12)

• 「構成可能なオプシ ョ ン」 (ページ 1-13)

• 「実行パイプラインステージ」 (ページ 1-17)

• 「冗長化コアの比較」 (ページ 1-19)

• 「テス ト機能」 (ページ 1-20)

• 「製品説明書、 設計フロー、 アーキテクチャ」 (ページ 1-21)

• 「製品のリ ビジ ョ ン情報」 (ページ 1-24)

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 1-1ID013111 Non-Confidential

Page 23: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

はじめに

1.1 プロセッサについて

このプロセッサは、 高度な組み込みシステムでの使用を目的と した ミ ッ ド レンジのCPU です。

このプロセッサには、 次のよ うな特徴があ り ます。

• EmbeddedICE-RT ロジッ クを内蔵した整数ユニッ ト

• レベル 2 (L2) マスタおよびスレーブインタフェース用の、 高速のアドバンス トマイ ク ロプロセッサ バスアーキテクチャ (AMBA) アドバンス ト エクステンシブルインタフェース (AXI)

• グローバルな履歴バッファ と 4 エン ト リの リ ターンスタ ッ クを持つ動的な分岐予測

• 低割り込みレイテンシ

• マスク不能割り込み

• オプシ ョ ンの浮動小数点ユニッ ト (FPU)。 Cortex-R4F プロセッサは、 FPU を搭載している Cortex-R4 プロセッサです。

• ハーバード形式のレベル 1 (L1) メモ リ システム。 このシステムには、 次のオプシ ョ ンを使用できます。

— メモ リのエラー訂正やパリティチェ ッ クをサポートする密結合メモ リ(TCM) インタフェース (オプシ ョ ン)

— エラー訂正方式をサポートするキャ ッシュ (オプシ ョ ン)

— ARMv7-R アーキテクチャのメモ リ保護ユニッ ト (MPU) (オプシ ョ ン)

— すべての RAM ブロ ッ クに対するパリティ とエラーチェッ クおよび訂正(ECC) (オプシ ョ ン)

• フォールト検出などのため、 冗長化されたコアロジッ クを実装して使用可能

• レベル 2 メモ リ インタフェース

— 単一の 64 ビッ トマスタ AXI インタフェース

— TCM RAM ブロ ッ クおよびキャ ッシュ RAM ブロ ッ クへの 64 ビッ トのスレーブ AXI インタフェース

• CoreSight デバッグアクセス ポート (DAP) へのデバッグインタフェース

• CoreSight ETM-R4 への ト レースインタフェース

• パフォーマンス監視ユニッ ト (PMU)

• ベクタ割り込みコン ト ローラ (VIC) ポート

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 1-2ID013111 Non-Confidential

Page 24: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

はじめに

1.2 アーキテクチャについて

このプロセッサには、 ARMv7-R アーキテクチャ と ARMv7 デバッグアーキテクチャが実装されています。 さらに、 Cortex-R4F プロセッサには VFPv3-D16 アーキテクチャが実装されています。 このアーキテクチャには、 VFPv3 命令セッ トが含まれます。

ARMv7-R アーキテクチャは 32 ビッ トの ARM 命令セッ ト と、 16 ビッ トおよび 32ビッ トの Thumb 命令セッ ト を提供します。 これには、 多くの単一命令、 複数データ(SIMD) デジタル信号処理 (DSP) 命令が含まれており、 32 ビッ ト レジスタに含まれている 16 ビッ ト または 8 ビッ トのデータ値に対して使用できます。

次に示すものの詳細については、 『ARM アーキテクチャ リ ファレンスマニュアル(ARMv7-A および ARMv7-R エディシ ョ ン)』 を参照して下さい。

• ARM 命令セッ ト と Thumb 命令セッ ト

• ARMv7 デバッグアーキテクチャ

• VFPv3 命令セッ ト

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 1-3ID013111 Non-Confidential

Page 25: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

はじめに

1.3 プロセッサのコンポーネン ト

こ こでは、 プロセッサの主要なコンポーネン トについて説明します。

• 「データ処理ユニッ ト 」 (ページ 1-5)

• 「ロード / ス ト アユニッ ト 」 (ページ 1-5)

• 「プ リ フェ ッチユニッ ト 」 (ページ 1-5)

• 「レベル1 メモ リ システム」 (ページ 1-5)

• 「レベル 2 の AXI インタフェース」 (ページ 1-7)

• 「デバッグ」 (ページ 1-8)

• 「システム制御コプロセッサ」 (ページ 1-9)

• 「割り込み処理」 (ページ 1-9)

プロセッサの構造を、 図 1-1 に示します。

図 1-1 プロセッサのブロック図

プリ フェ ッチユニッ ト (PFU) は、 メモ リ システムから命令をフェ ッチし、 分岐を予測し、 命令をデータ処理ユニッ ト (DPU) に渡します。 DPU はすべての命令を実行し、 ロード / ス ト アユニッ ト (LSU) を使用してデータを メモ リ との間で転送します。PFU と LSU は、 インタフェースによ り レベル 1 メモ リ システムに接続されます。 レベル 1 メモ リ システムには、 レベル 1 の命令およびデータキャ ッシュが含まれ、 レベル 2 システムにインタフェースで接続されています。 レベル 1 メモ リには、 オプシ ョ ンと して TCM インタフェースを含めるこ とができます。

2

1

AXIAXI

2

AXI

/

2

AXI

(TCM)

B0TCM

B1TCM

ATCM

1

1

RAM

1

1

RAM

ETM

ETM

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 1-4ID013111 Non-Confidential

Page 26: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

はじめに

1.3.1 データ処理ユニッ ト

DPU には、 汎用レジスタ、 ステータスレジスタ、 制御レジスタなど、 プログラムから可視であるプロセッサの状態のほとんどが保持されます。 DPU は、 命令のデコード と実行を行い、 ARM アーキテクチャに従って、 レジスタに保持されているデータに対して操作を行います。 命令は、 バッファを経由して PFU から DPU に送られます。 DPU は、 LSU へのインタフェースを使用して、 メモ リ システムとの間でデータ転送を必要とする命令を実行します。 詳細については、 第 2 章 プログラマモデルを参照して下さい。

浮動小数点ユニッ ト

浮動小数点ユニッ ト (FPU) は、 DPU のオプシ ョ ン部分で、 VFP レジスタファ イルとステータスレジスタが含まれます。 FPU は、 VFP レジスタファ イルに保持されているデータに対して、 浮動小数点演算を実行します。 詳細については、 第 12 章 FPUのプログラマモデルを参照して下さい。

1.3.2 ロード / ストアユニッ ト

LSU は、 すべてのロード / ス ト ア操作を管理し、 DPU から TCM、 キャ ッシュ、 およびレベル 2 メモ リ インタフェースへのインタフェースを行います。

1.3.3 プリフェ ッチユニッ ト

PFU は命令キャ ッシュ、 TCM、 外部メモ リのいずれかから命令を取得し、 命令ス トリームにおける分岐の結果を予測します。 詳細については、 第 5 章 プリ フェ ッチユニッ ト を参照して下さい。

分岐予測

分岐予測器はグローバルなタイプで、 履歴レジスタ と 256 エン ト リのパターン履歴テーブルを使用します。

リ ターンスタ ック

PFU には、 プロシージャ呼び出しからの復帰を高速化するため、 4 エン ト リの リ ターンスタ ッ クが含まれています。 プロシージャ呼び出しのたびに、 復帰アドレスがハード ウェアスタ ッ クにプッシュされます。 プロシージャからの復帰が検知されると、 リ ターンスタ ッ クに保持されているアドレスがポップされ、 予測された復帰アドレス と してプ リ フェ ッチユニッ トで使用されます。

1.3.4 レベル1 メモリシステム

プロセッサのレベル 1 メモ リ システムには、 次の特徴があ り ます。

• 独立した命令用とデータ用のキャ ッシュ

• 柔軟な TCM インタフェース

• メモ リ システム全体にわたって 64 ビッ トのデータパスを使用

• MPU がサポートする メモ リ領域サイズを構成可能

• レベル 2 メモ リ システム用のメモ リ属性のエクスポート

• ローカルメモ リでパリティ または ECC をサポート

レベル 1 メモ リ システムのブロ ッ クの詳細については、 次のセクシ ョ ンを参照して下さい。

• 「命令キャ ッシュ とデータキャ ッシュ」 (ページ 1-6)

• 「メモ リ保護ユニッ ト 」 (ページ 1-6)

• 「TCM インタフェース」 (ページ 1-6)

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 1-5ID013111 Non-Confidential

Page 27: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

はじめに

• 「エラーの訂正と検出」 (ページ 1-7)

命令キャッシュとデータキャッシュ

プロセッサに独立した命令キャ ッシュ とデータキャ ッシュを含める構成が可能です。これらのキャ ッシュには、 次のよ うな特徴があ り ます。

• 命令キャ ッシュ とデータキャ ッシュのサイズを、 4 ~ 64 KB の範囲で独立して構成できます。

• 疑似ランダムのキャ ッシュ置換ポ リシー

• キャ ッシュライン長は 8 ワードです。 キャ ッシュラインはライ トバッ クまたはライ ト スルーで、 MPU 領域によ り決定されます。

• それぞれのキャ ッシュは独立に非稼動にできます。

• LDM および LDRD 操作によるシーケンシャルデータのス ト リーミ ングと、 シーケンシャルな命令フェッチ

• キャ ッシュ ミ ス時に、 重要なワードから先にキャ ッシュフ ィルが行われます。

• 標準の ASIC RAM コンパイラを使用した、 すべてのキャ ッシュ RAM ブロ ッ クおよび関連付けられているタグと有効な RAM ブロ ッ クの実装

• ローカルメモ リでパリティ または ECC をサポート

メモリ保護ユニッ ト

MPU はオプシ ョ ンで、 組み込みの制御アプリケーシ ョ ン用にメモリ属性を提供します。 MPU には 8 つまたは 12 個の領域を構成でき、 それぞれの 小解像度は 32 バイ トです。 MPU の領域はオーバラップでき、 も大きい番号の領域が 優先になり ます。

MPU は、 保護と メモ リ属性をチェッ ク し、 これらの一部は外部のレベル 2 メモ リ システムに渡すこ とができます。

詳細については、 第 7 章 メモ リ保護ユニッ ト を参照して下さい。

TCM インタフェース

一部のアプリ ケーシ ョ ンはキャ ッシュに適切に応答しないこ とがあるため、 密結合メモ リ (ATCM と BTCM) の構成可能なメモ リブロ ッ クへの接続を許可する 2 つのTCM インタフェースが存在します。 これらのインタフェースによ り、 コードやデータに高速にアクセスできます。 オプシ ョ ンと して、 帯域幅を増やすために BTCM に2 つのメモ リポート を与えるこ とができます。

ATCM は一般に、 割り込みや例外のコードなど、 高速でアクセスする必要があ り、キャ ッシュ ミ スによる遅延の可能性が許容できないものを保持します。

BTCM は一般に、 多くの処理が行われるオーディオやビデオなどのデータのブロ ックを保持します。

これらの TCM ブロッ クはそれぞれ独立に、 メモ リマップ内の自然アラインされた任意のアドレスに構成できます。 TCM ブロッ クの許可されるサイズは次のとおりです。

• 0 KB

• 4 KB

• 8 KB

• 16 KB

• 32 KB

• 64 KB

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 1-6ID013111 Non-Confidential

Page 28: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

はじめに

• 128 KB

• 256 KB

• 512 KB

• 1 MB

• 2 MB

• 4 MB

• 8 MB

TCM はプロセッサの外部に存在します。 このため、 TCM サブシステムはパフォーマンス、 電力、 RAM タイプについて柔軟に 適化可能です。 INITRAMA およびINITRAMB ピンは、 それぞれ ATCM または BTCM からのブート を可能にします。ATCM と BTCM は、 どちら もウェイ ト ステート をサポート しています。

詳細については、 第 8 章 レベル 1 メモ リ システムを参照して下さい。

エラーの訂正と検出

軽度のメモ リ フォールトに対するシステムの許容度を増やすため、 キャ ッシュは次のいずれかの形式に構成できます。

• パリティ生成によるエラーの訂正と検出

• ECC コード生成による単一ビッ トのエラー訂正と 2 ビッ トのエラー検出

同様に、 TCM インタフェースは次のよ うに構成できます。

• パリティ生成によるエラーの検出

• ECC コード生成による単一ビッ トのエラー訂正と 2 ビッ トのエラー検出

詳細については、 第 8 章 レベル 1 メモ リ システムを参照して下さい。

1.3.5 レベル 2 の AXI インタフェース

レベル 2 の AXI インタフェースによ り、 レベル 1 のメモ リシステムは AXI マスタおよび AXI スレーブポート を使用してペリ フェラルや外部メモ リにアクセスできます。

AXI マスタインタフェース

AXI マスタインタフェースは、 第 2 レベルキャ ッシュ、 オンチップ RAM、 ペリ フェラル、 および外部メモ リへのインタフェースへの、 高帯域幅のインタフェースです。このインタフェースは単一の AXI ポートで構成され、 命令およびデータのフェッチに使用される、 64 ビッ トの読み出しおよび書き込みチャネルが含まれます。

AXI マスタは、 プロセッサと同じ周波数、 またはよ り低い同期周波数で駆動できます。 非同期クロ ッ クが必要な場合、 外部の非同期 AXI スライスが必要です。

AXI スレーブインタフェース

AXI スレーブインタフェースは、 プロセッサの AXI マスタポート を含む AXI マスタが、 AXI システムバス上のデータおよび命令キャ ッシュ RAM と TCM にアクセスできるよ うにします。 このインタフェースは、 TCM RAM に対する DMA や、 TCM およびキャ ッシュ RAM のソフ ト ウェアテス トに使用できます。

スレーブインタフェースは、 プロセッサと同じ周波数、 またはよ り低い同期周波数で駆動できます。 非同期クロ ッ クが必要な場合、 外部の非同期 AXI スライスが必要です。

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 1-7ID013111 Non-Confidential

Page 29: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

はじめに

補助制御レジスタ と スレーブポート制御レジスタのビッ トは、 AXI スレーブへのアクセスを制御できます。 TCM RAM へのアクセスは、 任意のマスタに許可するか、特権マスタのみに許可するこ とができ、 または完全に不可能にできます。 キャ ッシュ RAM へのアクセスは独立して、 同様に制御できます。

1.3.6 デバッグ

プロセッサには、 CoreSight 準拠のアドバンス トペリ フェラルバス バージ ョ ン3(APBv3) デバッグインタフェースが含まれています。 これによって、 システムはデバッグ リ ソースにアクセスし、 例えばウォッチポイン トやブレークポイン ト を設定できます。

プロセッサは、 リ アルタイムデバッグとパフォーマンスプロファ イ リ ングを幅広くサポート しています。

次のセクシ ョ ンでは、 デバッグの概要について説明します。

• 「システムパフォーマンスの監視」• 「ETM インタフェース」

• 「 リ アルタイムデバッグ機能」

システムパフォーマンスの監視

カウンタグループを構成するこ とによ り、 プロセッサと メモ リ システムの動作を監視できます。 詳細については、 「PMU について」 (ページ 6-6) を参照して下さい。

ETM インタフェース

エンベデッ ド ト レースマクロセル (ETM) インタフェースによ り、 外部の ETM ユニッ ト をプロセッサに接続し、 エンベデッ ドシステムのコアを リ アルタイプでコード ト レースできます。

ETM インタフェースは、 プロセッサの各種の信号を収集し、 それらの信号をプロセッサから駆動します。 インタフェースは単方向で、 プロセッサの 大速度で実行されます。 ETM インタフェースは、 追加の中間ロジッ クを必要とせず、 外部の ETMユニッ トに直接接続されます。 電力削減のため、 ETM インタフェースを非稼働にするこ とができます。 詳細については、 『CoreSight ETM-R4 テクニカルリ ファレンス マニュアル』 を参照して下さい。

リアルタイムデバッグ機能

プロセッサには、 リ アルタイムデバッグ機能を持つ EmbeddedICE-RT ロジッ クユニッ トが組み込まれています。 このユニッ トには次のものが含まれます。

• 大 8 つのブレークポイン ト

• 大 8 つのウォッチポイン ト

• デバッグ通信チャネル (DCC)

注 ブレークポイン ト と ウォ ッチポイン トの数は、 実装時に構成されます。 「構成可能なオプシ ョ ン」 (ページ 1-13) を参照して下さい。

EmbeddedICE-RT ロジッ クは、 内部アドレス とデータバスを監視します。EmbeddedICE-RT ロジッ クには、 メモ リマップされた APB インタフェースを経由してアクセスします。

プロセッサには、 CoreSight をサポートするためのアーキテクチャ拡張機能を含むARMv7 デバッグアーキテクチャが実装されます。

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 1-8ID013111 Non-Confidential

Page 30: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

はじめに

プロセッサのデバッグ機能に完全なアクセスを行うため、 APBv3 スレーブポート を経由してデバッグレジスタ マップにアクセスできます。 デバッグの詳細については、第 11 章 デバッグを参照して下さい。

EmbeddedICE-RT ロジッ クは、 次の 2 つのデバッグ動作モードをサポート しています。

ホールトモード

ブレークポイン トやウォ ッチポイン ト などのデバッグイベン ト時に、 デバッグロジッ クはプロセッサをホールト させ、 強制的にデバッグ状態にします。 この動作によ り、 プロセッサの内部状態とシステムの外部状態を、 他のシステム動作とは無関係に検査できます。 デバッグ処理が完了する と、 プロセッサとシステムの状態が復元され、 通常のプログラムの実行が再開されます。

モニタ デバッグモード

デバッグイベン ト時に、 ホールトモードのよ うにデバッグ状態が開始されるのではなく、 プロセッサによ りデバッグ例外が生成されます。 例外の開始によ り、 デバッグモニタ プログラムは、 重要な割り込みサービスルーチンがプロセッサで動作可能なまま、 プロセッサをデバッグできます。 デバッグモニタ プログラムは、 DCC またはシステムに存在する他の任意の通信インタフェースを経由して、 デバッグホス ト と通信できます。

1.3.7 システム制御コプロセッサ

システム制御コプロセッサは、 メモ リ システムの構成と制御、 および関連する機能を提供します。 メモ リバリ ア命令など他のシステムレベルの操作も、 システム制御コプロセッサによ り管理されます。

詳細については、 「システム制御および構成」 (ページ 4-4) を参照して下さい。

1.3.8 割り込み処理

プロセッサでの割り込み処理は以前の ARM アーキテクチャに互換ですが、 リ アルタイム アプリ ケーシ ョ ンの割り込みパフォーマンスを改善するためいくつかの機能が追加されています。

VIC ポート

コアには、 ARM PrimeCell ベクタ割り込みコン ト ローラ (VIC) などの外部割り込みコン ト ローラが、 割り込み要求 (IRQ) 信号と と もにベクタアドレスを供給できるよ うにするため、 専用のポートが設けられています。 これによって割り込み開始が高速になり ますが、 以前の割り込みコン ト ローラ との互換性のためこのポート を非稼働にするこ と もできます。

注 設計に VIC が含まれない場合、 nIRQ および nFIQ 信号がアサート されて LOW に保持され、 例外ハンド ラによってク リ アされるまで LOW に維持されるこ とを保証する必要があ り ます。

低割り込みレイテンシ

割り込みを受信する と、 プロセッサは再開可能な保留中のメモ リ操作をすべて破棄します。 再開可能なメモ リ操作は、 ノーマルメモ リにアクセス可能な複数ワードの転送命令である LDM、 LDRD、 STRD、 STM、 PUSH、 POP です。

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 1-9ID013111 Non-Confidential

Page 31: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

はじめに

割り込みレイテンシを 小にするため、 次の操作を実行しないこ とをお勧めします。

• デバイスまたはス ト ロング リオーダと してマーク されたメモ リ領域への複数アクセス

• 低速なメモ リ領域への SWP 操作

例外処理

ARMv7-R アーキテクチャには、 割り込みハンド ラの開始および終了時間を減らすための例外処理命令が含まれています。

SRS 復帰状態を、 指定されたスタ ッ クフレームに保存します。

RFE スタ ッ クからのデータを使用して例外から復帰します。

CPS 割り込みマスクのセッ トやク リ ア、 モード変更など、 プロセッサ状態を変更します。

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 1-10ID013111 Non-Confidential

Page 32: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

はじめに

1.4 プロセッサの外部インタフェース

プロセッサには、 外部アクセス用に次のインタフェースが搭載されます。

• 「APB のデバッグインタフェース」

• 「ETM インタフェース」

• 「テス ト インタフェース」

これらのインタフェースの詳細と、 システムへの統合方法については、 『AMBA 3 APB プロ ト コル仕様』 と 『CoreSight アーキテクチャ仕様』 を参照して下さい。

1.4.1 APB のデバッグインタフェース

AMBA APBv3 はデバッグの目的に使用されます。 CoreSight は、 マルチプロセッサのト レース とデバッグ用の ARM アーキテクチャです。 CoreSight は、 デバッグおよびト レースコンポーネン トのどれが必要か、 およびそれらをどのよ うに接続するかを定義します。

注 APB デバッグインタフェースは、 DAP-Lite にも接続できます。 DAP-Lite の詳細については、 『CoreSight DAP-Lite テクニカルリ ファレンス マニュアル』 を参照して下さい。

1.4.2 ETM インタフェース

ETM-R4 は、 ETM インタフェース経由でプロセッサに接続できます。 ETM-R4 はプロセッサに命令とデータの ト レースを提供します。 ETM-R4 とプロセッサとの接続方法の詳細については、 『CoreSight ETM-R4 テクニカルリ ファレンス マニュアル』 を参照して下さい。

特に記載がない限り、 すべての出力はレジスタから直接駆動されます。 特に記載がない限り、 すべての信号は CLKIN との相対です。

ETM インタフェースには次の信号が含まれます。

• 命令インタフェース

• データインタフェース

• イベン ト インタフェース

• ETM への他の接続

これらのインタフェースを構成する信号の名前については、 「ETM インタフェース信号」 (ページ A-19) を参照して下さい。 イベン トバスの詳細については、 「イベン トバス インタフェース」 (ページ 6-19) を参照して下さい。

1.4.3 テスト インタフェース

テス ト インタフェースは、 メモ リ内自己テス ト (MBIST) を使用して、 プロセッサの製造時テス ト をサポート します。 テス ト インタフェースの詳細については、 「MBIST信号」 (ページ A-21) を参照して下さい。 これらの信号のタイ ミ ングについては、『Cortex-R4 および Cortex-R4F インテグレーシ ョ ン マニュアル』 を参照して下さい。

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 1-11ID013111 Non-Confidential

Page 33: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

はじめに

1.5 電力管理

プロセッサには、 電量消費を削減するためのいくつかのマイ クロアーキテクチャ機能が含まれています。

• 正確な分岐予測と復帰予測によ り、 不正確な命令フェッチとデコード処理の回数を減らします。

• キャ ッシュがシーケンシャルアクセス情報を使用するこ とによ り、 タグ RAMへのアクセス回数や、 一致しないデータ RAM へのアクセス回数を減らします。

• ゲーテッ ド ク ロ ッ ク とゲート を多用し、 使用されない機能ブロ ッ クへの入力を不可能にします。 このため、 演算のために能動的に使用されるロジッ クのみが動的電力を消費します。

プロセッサでは、 次の 4 レベルの電力管理が使用されます。

実行モード 実行モードは通常の動作モードで、 コアのすべての機能が使用できます。

スタンバイモード このモードでは、 デバイスを起動したまま、 そのほとんどのクロックが停止されます。 これによ り、 消費される電力を、 静的漏洩電流と、 デバイスをスタンバイモードから起動するのに必要となる 小のクロッ ク電力オーバヘッ ドにまで減らすこ とができます。

シャ ッ ト ダウンモード

このモードでは、 デバイス全体への電力供給が停止します。キャ ッシュおよび TCM の状態を含め、 すべての状態を外部で保存する必要があ り ます。 リセッ トがアサート される と、 プロセッサは実行状態に戻り ます。

休眠モード プロセッサには、 休眠モードのサポート を実装できます。 休眠モードは電力削減モードの 1 つで、 プロセッサロジッ クへの電力供給が停止しますが、 プロセッサの TCM とキャ ッシュ RAM への電力供給は停止しません。 プロセッサの状態は、 キャ ッシュ とTCM の状態を除き、 休眠モードの開始前にメモ リにス ト アされ、終了後に復元されます。

Cortex-R4 で休眠モードをサポートするための準備の詳細については、 ARM にお問い合わせ下さい。

電力管理機能の詳細については、 第 10 章 電力制御を参照して下さい。

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 1-12ID013111 Non-Confidential

Page 34: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

はじめに

1.6 構成可能なオプシ ョ ン

表 1-1 は、 ビルド構成またはピン構成によって構成可能なプロセッサ機能の一覧です。 プロセッサの構成については、 「製品説明書、 設計フロー、 アーキテクチャ」 (ページ 1-21) を参照して下さい。 これらの機能の多くは、 構成に含まれている場合、 ソフ ト ウェア構成によって稼働または非稼働にできます。

表 1-1 構成可能なオプシ ョ ン

機能 オプシ ョ ン サブオプシ ョ ン ビルド構成かピン構成か

コアの冗長化 単一コア (冗長性なし) - ビルド

デュアルコア (冗長化) フェーズ内クロ ッ ク

フェーズ外クロ ッ ク

ビルド

命令キャッシュ I キャ ッシュなし - ビルド

I キャ ッシュあ り エラーチェッ クなし

パリティ エラーチェッ ク

64 ビッ ト ECC エラーチェッ ク

ビルド

4 KB (4 × 1 KB ウェイ)

8 KB (4 × 2 KB ウェイ)

16 KB (4 × 4 KB ウェイ)

32 KB (4 × 8 KB ウェイ)

64 KB (4 × 16 KB ウェイ)

ビルド

データキャ ッシュ D キャ ッシュなし - ビルド

D キャ ッシュあ り エラーチェッ クなし

パリティ エラーチェッ ク

32 ビッ ト ECC エラーチェッ ク

ビルド

4 KB (4 × 1 KB ウェイ )

8 KB (4 × 2 KB ウェイ )

16 KB (4 × 4 KB ウェイ)

32 KB (4 × 8 KB ウェイ)

64 KB (4 × 16 KB ウェイ)

ビルド

ATCM ATCM ポート なし - ビルドおよびピン

ATCM ポート 1 つ エラーチェッ クなし

パリティ エラーチェッ ク

32 ビッ ト ECC エラーチェッ ク

64 ビッ ト ECC エラーチェッ ク

ビルド

4 KB, 8 KB, 16 KB, 32 KB, 64 KB,128 KB, 256 KB, 512 KB, 1 MB, 2 MB, 4 MB, 8 MB

ピン

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 1-13ID013111 Non-Confidential

Page 35: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

はじめに

BTCM BTCM ポート なし - ビルドおよびピン

BTCM ポート 1 つ(B0TCM)

エラーチェッ クなし

パリティ エラーチェッ ク

32 ビッ ト ECC エラーチェッ ク

64 ビッ ト ECC エラーチェッ ク

ビルド

4 KB, 8 KB, 16 KB, 32 KB, 64 KB, 128 KB, 256 KB, 512 KB, 1 MB, 2 MB, 4 MB, 8 MB

ピン

BTCM ポート 2 つ(B0TCM と B1TCM)

エラーチェッ クなし

パリティ エラーチェッ ク

32 ビッ ト ECC エラーチェッ ク

64 ビッ ト ECC エラーチェッ ク

ビルド

2 × 2 KB, 2 × 4 KB, 2 × 8 KB, 2 × 16 KB, 2 × 32 KB, 2 × 64 KB, 2 × 128 KB, 2 × 256 KB, 2 × 512 KB, 2 × 1 MB, 2 × 2 MB, 2 × 4 MB

ピン

メモ リ上で 64 ビッ ト粒度でイン

ターリーブ

メモ リ上で隣接

ピン

命令のエンディアン形式

リ トルエンディアン - ビルド

ピンによ り構成 リ トルエンディアン

ビッグエンディアン

ピン

浮動小数点 (VFP) FPU なし - ビルド

FPU あ り a -

MPU MPU なし - ビルド

MPU あ り MPU 領域 8 個

MPU 領域 12 個

ビルド

TCM バスのパリティ

TCM のアドレスおよび制御バスのパリティなし

- ビルド

TCM アドレスおよび制御バスのパリティを生成

-

AXI バスのパリティ AXI バスのパリティなし - ビルド

AXI バスのパリティを生成

/ チェッ ク

-

ブレークポイン ト 2 ~ 8 のブレークポイン ト レジスタペア

- ビルド

ウォ ッチポイン ト 1 ~ 8 のウォッチポイン トレジスタ

- ビルド

リセッ ト時の ATCM 非稼働 - ピン

稼働b ベースアドレス 0x0

ベースアドレスが構成される

ピンおよびビルド

表 1-1 構成可能なオプシ ョ ン (続き)

機能 オプシ ョ ン サブオプシ ョ ン ビルド構成かピン構成か

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 1-14ID013111 Non-Confidential

Page 36: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

はじめに

ピンによ り、 リセッ ト時に稼働または非稼働に構成できる各種の機能を、 表 1-2 に示します。 この表には、 プロセッサがリセッ ト処理を終了したと きに、 CP15 レジスタのどのフ ィールドがその機能のソフ ト ウェア構成を行うかも示されています。 これらのフ ィールドはすべて、 システム制御レジスタ、 または補助制御レジスタの 1 つに存在します。

リセッ ト時の BTCM 非稼働 - ピン

稼働 b ベースアドレスが構成される

ベースアドレス 0x0

ピンおよびビルド

ペリ フェラル ID のRevAnd フ ィールド

任意の 4 ビッ ト値 - ビルド

AXI スレーブインタフェース

AXI スレーブなし - ビルド

AXI スレーブあ り -

TCM ハードエラー キャ ッシュ

TCM ハードエラー キャ ッ

シュなし

- ビルド

TCM ハードエラー キャ ッ

シュあ り c

-

マスク不能 FIQ 割り込み

不可能 (FIQ はソフ ト ウェアでマスク可能)

- ピン

可能 -

パリティ タイプd 奇数パリティ - ピン

偶数パリティ -

a. Cortex-R4F プロセッサでのみ使用できます。

b. 関連する TCM ポートが含まれている場合のみ。

c. 低 1 つの TCM ポートが含まれ、 ECC エラーチェッ クが使用されている場合のみ。

d. 低 1 つの TCM ポートが含まれ、 パリ ティ エラーチェッ クを使用している、 キャ ッシュの 1 つにパリティチェッ

クが含まれている、 または AXI か TCM バスのパリティが含まれている場合のみ適用されます。

表 1-1 構成可能なオプシ ョ ン (続き)

機能 オプシ ョ ン サブオプシ ョ ン ビルド構成かピン構成か

表 1-2 リセッ ト時に構成可能なオプシ ョ ン

機能 オプシ ョ ン レジスタ

例外のエンディアン形式 例外処理でリ トルエンディアンとビッグエンディアンのどちらのデータを使用するか

EE

例外状態 例外を処理する ARM/Thumb 状態 TE

例外ベクタテーブル 例外ベクタのベースアドレス : 0x00000000/0xFFFF0000 V

TCM エラーチェッ ク ATCM のパリティチェ ッ クが可能a ATCMPCEN

BTCM のパリティチェッ クが、 B0TCM と B1TCM についてそれぞれ独立に可能 a

B0TCMPCEN/B1TCMPCEN

ATCM の ECC チェッ クが可能 a ATCMPCEN

BTCM の ECC チェッ クが、 B0TCM と B1TCM について同時に (それぞれ独立でなく) 可能 a

B0TCMPCEN/B1TCMPCEN

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 1-15ID013111 Non-Confidential

Page 37: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

はじめに

TCM 外部エラー ATCM の外部エラーが可能 ATCMECEN

BTCM の外部エラーが、 B0TCM と B1TCM についてそれぞ

れ独立に可能

B0TCMECEN/B1TCMECEN

TCM ロード / ス ト ア -64 (読み

出し - 変更 - 書き込み) の動作

ATCM ロード / ス ト ア -64 が可能b ATCMRMW

BTCM ロード / ス ト ア -64 が可能 b BTCMRMW

a. 該当する TCM に、 適切なエラーチェッ ク方式と、 適切な数のポートが構成されている と きにのみ可能にできます。

b. 該当する TCM に 32 ビッ ト ECC が構成されていない場合のみ可能にできます。

表 1-2 リセッ ト時に構成可能なオプシ ョ ン (続き)

機能 オプシ ョ ン レジスタ

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 1-16ID013111 Non-Confidential

Page 38: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

はじめに

1.7 実行パイプラインステージ

パイプラインは次のステージから構成されます。

• フェ ッチステージ

• デコードステージ

• 発行ステージ

• 3 つまたは 4 つの実行ステージ

プロセッサのフェ ッチとデコードのパイプラインステージ、 および各ステージで実行されるパイプライン処理について、 図 1-2 に示します。

図 1-2 プロセッサのフェ ッチとデコードのパイプラインステージ

パイプラインステージの名前と機能は、 次のとおりです。

Fe 命令フェッチで、 命令メモ リからデータが返されます。

Pd プリデコードで、 命令がフォーマッ ト され、 分岐予測が行われます。

De 命令デコード

Cortex-R4 プロセッサの発行および実行のパイプラインステージを、 図 1-3 に示します。

図 1-3 Cortex-R4 の発行および実行のパイプラインステージ

Cortex-R4F プロセッサの発行および実行のパイプラインステージを、図 1-4 (ページ 1-18) に示します。

Fe1 Fe2 Pd De

2

EX1

DC1

EX1

DC2 /

Iss Ex1 Ex2 Wr Ret

Wr

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 1-17ID013111 Non-Confidential

Page 39: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

はじめに

図 1-4 Cortex-R4F の発行および実行のパイプラインステージ

共通のパイプラインステージの名前と機能は、 次のとおりです。

Iss レジスタ読み出し と実行ステージへの命令発行

Ex 実行ステージ

Wr 実行パイプラインからのデータの書き戻し

Ret 命令の終了

ロード / ス ト ア パイプラインステージの名前と機能は、 次のとおりです。

DC1 データ メモ リ アクセスの 初のステージ

DC2 データ メモ リ アクセスの 2 番目のステージ

浮動小数点パイプラインステージの名前と機能は、 次のとおりです。

F0 浮動小数点レジスタの読み出し

F1 浮動小数点実行の 初のステージ

F2 浮動小数点実行の 2 番目のステージ

Fwr 浮動小数点の書き戻し

パイプライン構造によ り、 メモ リ アクセスはパイプライン化されて 2 サイクルで行われ、 ロード使用のペナルティは 1 サイクルになり ます。 これによって、 低速のRAM ブロ ッ ク と統合が可能になり、 妥当な周波数で十分な CPI が維持されます。

EX1

DC1

F0

EX1

DC2

F1 F2

/

Iss Ex1 Ex2 Wr Ret

Fwr

Wr

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 1-18ID013111 Non-Confidential

Page 40: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

はじめに

1.8 冗長化コアの比較

プロセッサには、 ほとんどのロジッ クをコピーした 2 番目の冗長化コアを実装できます。 この 2 番目のコアは、 マスタコアと入力ピンおよびキャ ッシュ RAM を共有するため、 必要なキャ ッシュ RAM は 1 セッ トのみです。 マスタコアは、 出力ピンとキャ ッシュ RAM を駆動します。

冗長化コアの出力をマスタコアのものと比較する比較ロジッ クを、 実装時に含めるこ とができます。 いずれかのコアのロジッ クに、 放射線や回路障害などの理由でフォールトが発生する と、 比較ロジッ クによ り検出されます。 RAM エラー検出手法と組み合わせて用いるこ とで、 システムをフォールトから保護するために役立ちます。 入力 DCCMINP[7:0] および DCCMINP2[7:0] と出力 DCCMOUT[7:0] およびDCCMOUT2[7:0] によ り、 プロセッサ内の比較ロジッ クがシステムの他の部分と通信できます。

ARM は比較ロジッ クのサンプルを提供していますが、 実装時にロジッ クは変更できます。 デュアルの冗長化コアを含むプロセッサの実装を計画している場合は、 詳細について ARM にお問い合わせ下さい。 Cortex-R4 マクロセルをデュアルの冗長化コアに統合する場合、 詳細について実装者にお問い合わせ下さい。

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 1-19ID013111 Non-Confidential

Page 41: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

はじめに

1.9 テスト機能

プロセッサは、 完全に合成可能な RTL と して提供され、 完全に静的な設計です。 実装時に、 合成ツールを使用して、 製造テス ト用のスキャンチェインとテス ト ラ ッパを設計に組み入れるこ とができます。 詳細については、 関連する リ ファレンス手法の説明書を参照して下さい。

プロセッサのキャ ッシュおよび TCM RAM の製造テス トは、 専用のパイプライン化された MBIST インタフェースによ り実行できます。 このインタフェースはプロセッサの設計に存在する多重化のいくつかを共有するため、 RAM モジュールにマルチプレクサを追加する場合と比較して高い周波数が可能になり ます。 このインタフェース と、 制御の方法の詳細については、 『Cortex-R4 および Cortex-R4F インテグレーシ ョ ン マニュアル』 を参照して下さい。

また、 AXI スレーブインタフェースを使用して、 キャ ッシュおよび TCM RAM を読み書きできます。 この機能を使用して、 実行中のシステムのキャ ッシュ RAM をテストできます。 安全性が重要なシステムでは、 この手法が必須な場合があ り ます。TCM RAM は、 プロセッサで実行中のプログラムから直接読み書き可能です。 また、AXI スレーブインタフェースを使用して、 テス トプログラムを TCM にスワップインし、 プロセッサで実行するこ とができます。 AXI スレーブインタフェースを使用して RAM にアクセスする方法の詳細については、 「AXI スレーブインタフェースを使用した RAM へのアクセス」 (ページ 9-24) を参照して下さい。

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 1-20ID013111 Non-Confidential

Page 42: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

はじめに

1.10 製品説明書、 設計フロー、 アーキテクチャ

こ こでは、 製品説明書の内容、 設計フローとの関係、 および関連するアーキテクチャの標準とプロ ト コルについて説明します。

注 このセクシ ョ ンに記載されている説明書の詳細については、 「参考資料」 (ページ xx) を参照して下さい。

1.10.1 説明書

プロセッサの説明については、 以下の書籍を参照して下さい。

テクニカルリ ファレンス マニュアル

テクニカルリ ファレンス マニュアル (TRM) は、 プロセッサの機能と、機能オプシ ョ ンがプロセッサの動作に及ぼす影響について説明したものです。 設計フローのすべての段階で必要とな り ます。 プロセッサの実装と統合の手法によっては、 TRM に記載されている動作の一部は適用されないこ とがあ り ます。 プロセッサをプログラムする場合は、 ビルドの構成と実装を特定するために実装者に、 また、 使用する SoC のピン構成を特定するためにインテグレータに、 それぞれお問い合わせ下さい。

構成およびサインオフ ガイ ド

構成およびサインオフ ガイ ド (CSG) には、 次の内容が記載されています。

• 利用可能なビルド構成オプシ ョ ンと、 それらのオプシ ョ ンの選択に関連する問題点

• ビルド構成オプシ ョ ンでレジスタ転送レベル (RTL) を構成する方法

• 構成された RTL と 終的なマクロセルをサインオフする処理

ARM 製品の配布物には、 リ ファレンススク リプ ト と、 それらを使用して設計を実装する方法についての説明が含まれています。 EDA ツールのベンダから入手できる リ ファレンス手法の説明書は、 この CSG を補完するものです。 CSG は非公開書籍で、 ライセンスによってのみ入手できます。

統合マニュアル

統合マニュアル (IM) は、 プロセッサを SoC に統合する方法について、マク ロセルを要求される統合形式に構成するためインテグレータが固定する必要のあるピンを含めて、 説明しています。 統合の一部は、 プロセッサの実装に使用された構成オプシ ョ ンの影響を受けます。 実装されているビルド構成オプシ ョ ンを特定するには、 使用するマク ロセルの実装者にお問い合わせ下さい。 IM は非公開書籍で、 ライセンスによってのみ入手できます。

1.10.2 設計フロー

プロセッサは、 合成可能な RTL と して配布されます。 プロセッサを製品で使用する前に、 次のプロセスを行う必要があ り ます。

1. 実装。 実装者は、 RTL を構成して合成し、 ハードマク ロセルを製造します。 これには、 設計にキャ ッシュ RAM を統合する作業も含まれます。

2. 統合。 インテグレータはハードマクロセルを SoC に統合し、 メモ リ システムに接続し、 目的の機能に応じて適切なペリ フェラルに接続します。 メモ リ システムには、 密結合メモ リ (TCM) が含まれます。

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 1-21ID013111 Non-Confidential

Page 43: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

はじめに

3. プログラ ミ ング。 システムプログラマは、 プロセッサの構成と初期化に必要なソフ ト ウェアを開発し、 プロセッサ上で必要なアプリ ケーシ ョ ンソフ ト ウェアをテス ト します。

これらの段階はそれぞれ、 異なる企業によって実行できます。 各段階に、 それぞれの構成オプシ ョ ンが存在します。 これらのオプシ ョ ンは、 次の段階における動作と、利用可能な機能に影響します。

ビルドの構成

実装者は、 RTL ソースファ イルが事前処理される方法に影響するオプシ ョ ンを選択します。 これには一般に除外ロジッ クが含まれ、 結果と して生成されるマク ロセルの実装面積や 大周波数に影響します。

例えば、 BTCM インタフェースのポート数を 0、 1 (B0TCM) または 2(B0TCM および B1TCM) に構成できます。 1 ポート を選択した場合、 2番目のポート用のロジッ クはマクロセルから除外され、 ピンは残り ますが、 2 番目のポート (B1TCM) はそのマクロセルで使用できません。

構成入力

インテグレータは、 入力を特定の値に固定するこ とで、 プロセッサの機能の一部を構成します。 これらの構成は、 ソフ ト ウェア構成が行われる前の、 起動時の動作に影響します。 構成によ り、 ソフ ト ウェアで使用可能なオプシ ョ ンを制限するこ と もできます。

例えば、 マクロセルのビルド構成に両方の BTCM ポートが含まれている場合、 インテグレータは実際に使用するポートの数を選択でき、 結果的にどれだけの RAM をマク ロセルに統合する必要があるかも選択できます。 インテグレータが 1 つの BTCM ポート しか使用しない場合、RAM を B0TCM ポートにのみ接続し、 ENTCM1IF 入力を 0 に固定して、B1TCM が使用可能でないこ とを示すこ とができます。

ソフ ト ウェア構成

プログラマは、 ソフ ト ウェアから可視のレジスタに特定の値をプログラムして、 プロセッサを構成します。 この操作は、 プロセッサの動作に影響を与えます。

例えば、 BTCM 領域レジスタのイネーブルビッ トは、 BTCM インタフェースに対してメモ リ アクセスが実行されるかど うかを制御します。ただし、 ビルド構成に BTCM ポートが含まれていない場合、 またはピン構成によ り、 BTCM ポートに RAM が統合されていないこ とが示されている場合は、 BTCM を稼動できません。

注 本書には、 ビルド構成オプシ ョ ンに適用可能な実装定義の機能を記載しています。機能が含まれている という記述は、 適切なビルド とピン構成オプシ ョ ンが選択されているこ とを示します。 機能が稼働という記述は、 その機能がソフ ト ウェアでも構成されているこ とを意味します。

1.10.3 アーキテクチャ情報

Cortex-R4 プロセッサは、 次の仕様に準拠、 またはこれらの仕様を実装しています。

ARM アーキテクチャ

次のものが含まれます。

• プロセッサが実行できる命令の動作とエンコード

• プロセッサの可能なモード と状態

• プロセッサに搭載する必要がある各種のデータおよび制御レジスタ

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 1-22ID013111 Non-Confidential

Page 44: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

はじめに

• メモ リ アクセスのプロパティ

• プロセッサのデバッグに使用可能なデバッグアーキテクチャ。TRM では、 実装されているデバッグ機能についてよ り詳しい情報が与えられます。

Cortex-R4 プロセッサは、 ARMv7-R アーキテクチャプロファ イルを実装します。

アドバンス ト マイ クロコン ト ローラバス アーキテクチャプロ ト コル

アドバンス ト マイ クロコン ト ローラバス アーキテクチャ (AMBA) はオープンな標準のオンチップ バス仕様で、 システム オンチップ (SoC)を構成する機能ブロ ッ クの相互接続と管理を定義するものです。 この仕様によ り、 複数のペリ フェラルを持つ組み込みプロセッサの開発が容易になり ます。

IEEE 754 2 進浮動小数点演算の IEEE 標準です。

アーキテクチャ仕様では一般に多くのバージ ョ ンが定義され、 オプシ ョ ンまたは部分的に定義された機能が含まれています。 TRM は、 使用されているアーキテクチャと実装されているバージ ョ ン、 および実装に際して行われたアーキテクチャ上の選択を示しています。 TRM はアーキテクチャに関する詳細な情報を提供しませんが、実装の概要を示すために一部のアーキテクチャの情報が含まれています。 また、 制御レジスタの場合は、 マニュアルを使いやすくするために情報が含まれています。実装されているアーキテクチャの機能の詳細については、 該当する仕様を参照して下さい。

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 1-23ID013111 Non-Confidential

Page 45: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

はじめに

1.11 製品のリビジ ョ ン情報

このマニュアルは、 プロセッサのメジャーリ ビジ ョ ン 1 を対象と しています。 リリースの時点で、 これには r1p0、 r1p1、 r1p2、 r1p3 リ リースが含まれています。 ただし、 本書に含まれている情報のほとんどは、 将来の r1px リ リースにも適用可能です。プロセッサの各リ ビジ ョ ンにおける変更点について、 以下で簡単に説明します。

リ ビジ ョ ン 1

ECC 機能オプシ ョ ンと、 Cortex-R4F プロセッサに実装される FPU オプシ ョ ンが追加されました。

注 r1p0 リ リースは一般公開されていません。

1.11.1 プロセッサの識別

Cortex-R4 プロセッサにはいくつかの識別 (ID) レジスタが含まれており、 ソフ ト ウェアやデバッガはプロセッサが Cortex-R4 であるこ とを識別でき、 設計のバリ アン ト(メジャーリ ビジ ョ ン) と リ ビジ ョ ン (マイナーリ ビジ ョ ン) も識別できます。 これらのレジスタには次の特徴があ り ます。

メ イン ID レジスタ (MIDR)

このレジスタはソフ ト ウェアからアクセス可能で、 部品、 バリ アン ト、リ ビジ ョ ンを識別します。 「c0、 メ イン ID レジスタ」 (ページ 4-14) を参照して下さい。 このレジスタのコピーは、 デバッガがデバッグ APBインタフェース経由で読み出すこ と もできます。 「プロセッサ ID レジスタ」 (ページ 11-32) を参照して下さい。

デバッグ ID レジスタ (DIDR)

このレジスタはデバッガがデバッグ APB インタフェース経由で読み出すこ とができ、 ソフ ト ウェアから読み出すこ と もできます。 バリ アン トと リ ビジ ョ ンを識別します。 「CP14 c0、デバッグ ID レジスタ」 (ページ 11-10) を参照して下さい。

ペリ フェラル識別レジスタ

これらのレジスタは、 デバッグ APB インタフェース経由でのみアクセスでき、 プロセッサのリ ビジ ョ ン番号を識別します。 「デバッグ識別レジスタ」 (ページ 11-35) を参照して下さい。

浮動小数点システム ID レジスタ (FPSID)

ビルド構成に浮動小数点ユニッ トが含まれている場合、 このレジスタは浮動小数点ユニッ トの リ ビジ ョ ン番号を識別します。 「浮動小数点システム ID レジスタ、 FPSID」 (ページ 12-5) を参照して下さい。

注 浮動小数点機能は、 Cortex-R4F プロセッサでのみ提供されます。

ペリ フェラル識別および FPSID レジスタに含まれている、 プロセッサの リ ビジ ョ ン番号は単一のフ ィールドで、 メジャーリ ビジ ョ ンとマイナーリ ビジ ョ ンの両方の情報が含まれています。

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 1-24ID013111 Non-Confidential

Page 46: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

はじめに

すべてのリ リースについて、 これら各種の番号の相互マッピングを、 表 1-3 に示します。

1.11.2 アーキテクチャ情報

ARM アーキテクチャには、 アーキテクチャのバージ ョ ンと、 プロセッサに実装されているそのアーキテクチャの機能の一部を識別する、 いくつかのレジスタが含まれています。 これらのレジスタのフ ィールドにプロセッサによ り実装される値を、第 4 章 システム制御コプロセッサに示します。 これらのフ ィールドの可能な値と、その意味の詳細については、 『ARM アーキテクチャ リ ファレンスマニュアル』 を参照して下さい。

表 1-3 製品の各種のバージョ ンに対応する ID 値

ID 値 r0p0 r0p1 r0p2 r0p3 r1p0 r1p1 r1p2 r1p3

バリ アン ト フ ィールド、 メ イン ID レジスタ 0x0 0x0 0x0 0x0 0x1 0x1 0x1 0x1

リ ビジ ョ ンフ ィールド、 メ イン ID レジスタ 0x0 0x1 0x2 0x3 0x0 0x1 0x2 0x3

バリ アン ト フ ィールド、 デバッグ ID レジスタ 0x0 0x0 0x0 0x0 0x1 0x1 0x1 0x1

リ ビジ ョ ンフ ィールド、 デバッグ ID レジスタ 0x0 0x1 0x2 0x3 0x0 0x1 0x2 0x3

リ ビジ ョ ン番号、 ペリ フェラル識別レジスタ 0x0 0x1 0x2 0x5 0x3 0x4 0x6 0x7

リ ビジ ョ ン番号、 FPSID レジスタ - - - - 0x3 0x4 0x6 0x7

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 1-25ID013111 Non-Confidential

Page 47: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

第 2 章 プログラマモデル

本章では、 プロセッサのレジスタについて説明し、 マイ ク ロプロセッサのプログラ ミ ング方法の概要を紹介します。 本章は次のセクシ ョ ンから構成されています。

• 「プログラマモデルについて」 (ページ 2-2)

• 「命令セッ ト状態」 (ページ 2-3)

• 「動作モード」 (ページ 2-4)

• 「データ型」 (ページ 2-5)

• 「メモ リ フォーマッ ト 」 (ページ 2-6)

• 「レジスタ」 (ページ 2-7)

• 「プログラムステータス レジスタ」 (ページ 2-10)

• 「例外」 (ページ 2-16)

• 「実行環境の高速化」 (ページ 2-27)

• 「アンアラインド データアクセスおよびエンディアン混在データアクセスのサポート」 (ページ 2-28)

• 「ビッグエンディアン命令のサポート 」 (ページ 2-29)

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 2-1ID013111 Non-Confidential

Page 48: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

プログラマモデル

2.1 プログラマモデルについて

プロセッサには、 次の命令セッ ト を提供する ARMv7-R アーキテクチャが実装されています。

• 32 ビッ ト ARM 命令セッ ト

• ARMv6T2 で導入された拡張 Thumb 命令セッ ト。 Thumb-2 テク ノ ロジによって、各種の 32 ビッ ト命令が提供されます。

ARM 命令セッ ト と Thumb 命令セッ トの詳細については、 『ARM アーキテクチャ リファレンスマニュアル』 を参照して下さい。 本章では、 アーキテクチャの主要な機能の一部について説明します。 すべての機能の説明については、 『ARM アーキテクチャ リ ファレンスマニュアル』 を参照して下さい。

本章では、 プロセッサに実装されていない、 以前のバージ ョ ンの ARM アーキテクチャについても言及します。 これは、 以前のバージ ョ ンのアーキテクチャを実装している他のプロセッサと、 Cortex-R4 プロセッサとの動作を比較するためです。

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 2-2ID013111 Non-Confidential

Page 49: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

プログラマモデル

2.2 命令セッ ト状態

プロセッサには次の 2 つの命令セッ ト状態があ り ます。

ARM 状態 この状態では、 32 ビッ トでワードアラインドの ARM 命令が実行されます。

Thumb 状態 この状態では、 32 ビッ トおよび 16 ビッ トで、 ハーフワードアラインドの Thumb 命令が実行されます。

注 ARM 状態と Thumb 状態との間で状態遷移が発生しても、 プロセッサモードやレジスタの内容には影響しません。

2.2.1 状態の切り替え

プロセッサの命令セッ ト状態は、 次の方法で ARM 状態または Thumb 状態に切り替えが可能です。

• BX 命令と BLX 命令、 PC へのロード、 または PC をデスティネーシ ョ ンレジスタと して使用してフラグをセッ ト しないデータ処理命令を使用する。 状態の切り替えの詳細については、 『ARM アーキテクチャ リ ファレンスマニュアル』 を参照して下さい。

注 BXJ 命令が使用された場合、 プロセッサは BX 命令を呼び出します。

• 例外発生時に自動的に。 例外ハンド ラルーチンは、 ARM コードまたは Thumbコードで作成できます。 詳細については、 「例外」 (ページ 2-16) を参照して下さい。

2.2.2 ARM 状態と Thumb 状態のインターワーキング

本プロセッサでは、 ARM コード と Thumb コードを混在させるこ とができます。ARM と Thumb のインターワーキングの詳細については、 『RealView コンパイルツール デベロ ッパガイ ド』 を参照して下さい。

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 2-3ID013111 Non-Confidential

Page 50: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

プログラマモデル

2.3 動作モード

それぞれの状態には、 次の 7 つの動作モードがあ り ます。

• ユーザ (USR) モードは、 ARM プログラムまたは Thumb プログラムを実行するための通常のモードです。 ほとんどのアプリ ケーシ ョ ンプログラムの実行に使用されます。

• 高速割り込み (FIQ) モードは、 高速割り込みの取得時に開始されます。

• 割り込み (IRQ) モードは、 通常割り込みの取得時に開始されます。

• スーパバイザ (SVC) モードは、 オペレーティングシステム用の保護モードで、スーパバイザコール (SVC)、 従来の SWI の取得時に開始されます。

• アボート (ABT) モードは、 データアボート または命令アボート後に開始されます。

• システム (SYS) モードは、 オペレーティングシステム用の特権ユーザモードです。

• 未定義 (UND) モードは、 未定義命令例外の発生時に開始されます。

ユーザモード以外のモードをま とめて、 特権モード と呼びます。 特権モードは、 割り込みまたは例外を処理する場合、 あるいは保護リ ソースにアクセスする場合に使用されます。

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 2-4ID013111 Non-Confidential

Page 51: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

プログラマモデル

2.4 データ型

プロセッサは次のデータ型をサポート しています。

• ダブルワード、 64 ビッ ト

• ワード、 32 ビッ ト

• ハーフワード、 16 ビッ ト

• バイ ト 、 8 ビッ ト

注 • これらのデータ型が符号なし と記載されている場合、 N ビッ トのデータ値は、

通常のバイナリ形式を使用して、 0 ~ + 2N - 1 の範囲の負でない整数を表します。

• これらのデータ型が符号付き と記載されている場合、 N ビッ トのデータ値は、2 の補数形式を使用して、 - 2N - 1 ~ + 2N - 1 - 1 の範囲の整数を表します。

高のパフォーマンスを実現するには、 メモ リ内でこれらのデータ型を次のよ うにアラインする必要があ り ます。

• ダブルワードのデータは 8 バイ ト境界にアラインします (ダブルワードアラインド)。

• ワードのデータは 4 バイ ト境界にアラインします (ワードアラインド)。

• ハート ワードのデータは 2 バイ ト境界にアラインします (ハーフワードアラインド)。

• バイ トのデータは、 任意のバイ ト境界に配置できます。

プロセッサは、 エンディアン混在アクセス とアンアラインドアクセスをサポート しています。 詳細については、 「アンアラインド データアクセスおよびエンディアン混在データアクセスのサポート 」 (ページ 2-28) を参照して下さい。

注 LDRD、 LDM、 STRD、 STM 命令では、 32 ビッ ト アラインドでない 32 ビッ トデータにアクセスできません。

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 2-5ID013111 Non-Confidential

Page 52: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

プログラマモデル

2.5 メモリフォーマッ ト

プロセッサは、 メモ リ を、 0 から昇順に番号が付けられたバイ トの配列と して参照します。 例えば、 バイ ト 0 ~ 3 は格納されている 初のワードを、 バイ ト 4 ~ 7 は 2番目のワードを保持します。

プロセッサは、 メモ リ内のデータワードを、 次のいずれかの形式で格納されているものと して扱う こ とができます。

• 「バイ ト不変ビッグエンディアン形式」• 「 リ トルエンディアン形式」

また、 プロセッサは、 エンディアン混在およびアンアラインドのデータアクセスをサポート しています。 詳細については、 『ARM アーキテクチャ リ ファレンスマニュアル』 を参照して下さい。

2.5.1 バイ ト不変ビッグエンディアン形式

バイ ト不変ビッグエンディアン (BE-8) 形式では、 ワードの 上位バイ トが も小さい番号のバイ トに、 下位バイ トが も大きい番号のバイ トに、 プロセッサによって格納されます。 バイ ト不変ビッグエンディアン (BE-8) 形式の概念を、 図 2-1 に示します。

図 2-1 バイ ト不変ビッグエンディアン (BE-8) 形式

2.5.2 リ トルエンディアン形式

リ トルエンディアン形式では、 ワードの 下位バイ トが も小さい番号のバイ ト 、上位バイ トが も大きい番号のバイ ト とな り ます。 リ トルエンディアン形式の概

念を、 図 2-2 に示します。

図 2-2 リ トルエンディアン形式

A[31:0]

+1

msbyte

lsbyte

+2

+3

B0

07

B1

B3B2B0 B131 24 23 16 15 8 7 0

B2

B3

A[31:0]

+1

msbyte

lsbyte

+2

+3

b0

07

b1

b0b1b3 b231 24 23 16 15 8 7 0

b2

b3

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 2-6ID013111 Non-Confidential

Page 53: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

プログラマモデル

2.6 レジスタ

プロセッサには、 合計 37 個のプログラムレジスタがあ り ます。

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

• 6 つの 32 ビッ ト ステータスレジスタ

これらのレジスタのすべてを同時に使用できるわけではあ り ません。 プログラマが使用できるレジスタは、 プロセッサの状態と動作モードによって異なり ます。

2.6.1 レジスタセッ ト

プロセッサ内では、 ARM 状態と Thumb 状態のどちらでも、 同じレジスタセッ トが使用されます。 16 個の汎用レジスタ と 1 つまたは 2 つのステータスレジスタには、いつでもアクセスできます。 特権モードでは、 モードごとに異なる、 別のバンクレジスタが利用可能になり ます。 各モードで使用可能なレジスタを、 図 2-3 (ページ 2-9) に示します。

レジスタセッ トには、 16 個の直接アクセス可能なレジスタ (R0 ~ R15) が含まれています。 その他にカレン トプログラムステータス レジスタ (CPSR) があ り、 条件コードフラグ、 ステータスビッ ト 、 カレン トモード ビッ トが含まれています。 レジスタのR0 ~ R12 は、 データまたはアドレスの値が保存される汎用レジスタです。 レジスタR13、 R14、 R15、 および CPSR には、 次に示す特別な機能があ り ます。

スタ ッ クポインタ ソフ ト ウェアでは普通、 レジスタ R13 をスタ ッ クポインタ (SP)と して使用します。 SRS 命令と RFE 命令は、 レジスタ R13 を使用します。

リ ンクレジスタ レジスタ R14 は、 サブルーチンへのリ ンクレジスタ (LR) と して使用されます。

リ ンク付き分岐 (BL または BLX) 命令の実行時に、 復帰アドレスがレジスタ R14 に格納されます。

それ以外の場合は、 R14 を汎用レジスタ と して使用できます。 同様に、 割り込みまたは例外が取得された場合、 あるいは、 割り込みまたは例外ルーチン内で BL 命令または BLX 命令が実行された場合は、 対応するバンクレジスタの R14_svc、 R14_irq、 R14_fiq、R14_abt、 R14_und に戻り値が格納されます。

プログラムカウンタ レジスタ R15 には PC が格納されます。

• ARM 状態では、 ワードアラインドです。

• Thumb 状態では、 ワードアラインドかハーフワードアラインドのいずれかです。

注 R15 を読み出す特殊なケースがあ り ます。

• 現在の命令のアドレスに次の値を足したアドレスを読み出す場合

— 4 (Thumb 状態)

— 8 (ARM 状態)

• 0x00000000 (ゼロ) を読み出す場合

R15 に書き込む特殊なケースがあ り ます。

• R15 に書き込まれたアドレスへの分岐を引き起こす場合

• R15 に書き込まれた値を無視する場合

• R15 に書き込まれた値のビッ ト [31:28] が CPSR の条件フラグに書き込まれ、 ビッ ト [27:20] が無視される場合 (MRC 命令でのみ使用されます)

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 2-7ID013111 Non-Confidential

Page 54: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

プログラマモデル

命令の説明に明記されていないかぎ り、 このよ う な特殊なケースを想定しないで下さい。 代わりに、 レジスタフ ィールドが R15 である命令は、 予測不能と して扱う必要があ り ます。

詳細については、 『ARM アーキテクチャ リ ファレンスマニュアル』 を参照して下さい。

特権モードでは、 保存プログラムステータス レジスタ (SPSR) とい う別のレジスタにアクセスできます。 このレジスタに含まれている条件コードフラグ、 ステータスビッ ト 、 カレン トモード ビッ トは、 現在のモードへの移行を引き起こした原因である例外の結果と して保存されたものです。

バンクレジスタには、 どのモードに関連しているかを示すモード識別子が存在します。 これらの識別子を、 表 2-1 に示します。

FIQ モードには、 R8 ~ R14 (R8_fiq ~ R14_fiq) にマップされる 7 つのバンクレジスタがあ り ます。 そのため、 多くの FIQ ハンド ラではレジスタを保存する必要があ り ません。

スーパバイザ、 アボート、 割り込み、 未定義の各モードでは、 モード固有のレジスタが R13 と R14 にマップされるため、 それぞれのモードで専用のスタ ッ クポインタと リ ンクレジスタを使用できます。

レジスタセッ ト と、 バンク されるレジスタを、 図 2-3 (ページ 2-9) に示します。

表 2-1 レジスタモード識別子

モード モード識別子

ユーザ usra

a. 通常、 usr 識別子はレジスタ名から省略されます。 この識別子は、 異なる動作モードから、 ユーザモードまたはシステムモードのレジスタに明示的にアクセスするこ とを示す場合にのみ使用されます。

高速割り込み fiq

割り込み irq

スーパバイザ svc

アボート abt

システム usra

未定義 und

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 2-8ID013111 Non-Confidential

Page 55: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

プログラマモデル

図 2-3 レジスタ構成

注 16 ビッ ト Thumb 命令の場合、 上位レジスタ (R8 ~ R15) は標準レジスタセッ トに含まれません。 特殊な形式の MOV 命令を使用して、 下位レジスタ (R0 ~ R7) から上位レジスタに、 または、 上位レジスタから下位レジスタに値を転送できます。 CMP 命令を使用すれば、 上位レジスタの値と下位レジスタの値とを比較できます。 また、 ADD 命令を使用すれば、 上位レジスタの値を下位レジスタの値に加算できます。 詳細については、 『ARM アーキテクチャ リ ファレンスマニュアル』 を参照して下さい。

=

IRQ

R0

R1

R2

R3

R4

R5

R6

R7

R8

R9

R10

R11

R12

R13

R14

R15

FIQ

R0

R1

R2

R3

R4

R5

R6

R7

R8_fiq

R9_fiq

R10_fiq

R11_fiq

R12_fiq

R13_fiq

R14_fiq

R15 (PC)

R0

R1

R2

R3

R4

R5

R6

R7

R8

R9

R10

R11

R12

R13_svc

R14_svc

R0

R1

R2

R3

R4

R5

R6

R7

R8

R9

R10

R11

R12

R13_abt

R14_abt

R0

R1

R2

R3

R4

R5

R6

R7

R8

R9

R10

R11

R12

R13_irq

R14_irq

R0

R1

R2

R3

R4

R5

R6

R7

R8

R9

R10

R11

R12

R13_und

R14_und

CPSR CPSR CPSR CPSR CPSR CPSR

SPSR_fiq SPSR_svc SPSR_abt SPSR_irq SPSR_und

R15 (PC) R15 (PC) R15 (PC) R15 (PC)

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 2-9ID013111 Non-Confidential

Page 56: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

プログラマモデル

2.7 プログラムステータス レジスタ

プロセッサには、 例外ハンド ラが使用する 1 つの CPSR と、 5 つの SPSR が内蔵されています。 プログラムステータス レジスタには、 次の役割があ り ます。

• 直前に実行された ALU 操作に関する情報を保持する。

• 割り込みの可能 / 不可能を制御する。

• プロセッサの動作モードを設定する。

図 2-4 に、 ステータスレジスタのビッ ト配置を示します。

図 2-4 プログラムステータス レジスタ

次に示すセクシ ョ ンで、 各ビッ トの意味を説明します。

• 「N、 Z、 C、 V ビッ ト 」

• 「Q ビッ ト 」 (ページ 2-11)

• 「IT ビッ ト 」 (ページ 2-11)

• 「J ビッ ト 」 (ページ 2-12)

• 「DNM ビッ ト 」 (ページ 2-12)

• 「GE ビッ ト 」 (ページ 2-12)

• 「E ビッ ト 」 (ページ 2-13)

• 「A ビッ ト 」 (ページ 2-13)

• 「I ビッ ト と F ビッ ト 」 (ページ 2-13)

• 「T ビッ ト 」 (ページ 2-13)

• 「M ビッ ト 」 (ページ 2-14)

2.7.1 N、 Z、 C、 V ビッ ト

N、 Z、 C、 V ビッ トは、 条件コードフラグです。 これらの命令はオプシ ョ ンと して、算術演算や論理演算によってセッ トでき、 R15 への MSR 命令および MRC 命令でもセットできます。 プロセッサは、 命令の条件コードに従ってこれらのフラグをテス ト し、その命令を実行するかど うかを判断します。

ARM 状態では、 ほとんどの命令を N、 Z、 C、 V ビッ トの状態に基づく条件付きで実行できます。 条件付きで実行できない命令は次のとおりです。

• BKPT

• CPS

• LDC2

• MCR2

• MCRR2

• MRC2

M[4:0]TFIAEIT[7:2]GE[3:0]N J

Java

/ /

/

ThumbFIQIRQ

31 30 29 28 27 26 25 24 23 20 19 16 15 10 9 8 7 6 5 4 0

Z C V Q

IT[1:0]

DNM

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 2-10ID013111 Non-Confidential

Page 57: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

プログラマモデル

• MRRC2

• PLD

• RFE

• SETEND

• SRS

• STC2

Thumb 状態では、 分岐命令のみを条件付きで実行できます。 他の命令は、 If-Then(IT)ブロ ッ クに含めるこ とによって条件付きにするこ とができます。 Thumb 状態での条件付き実行の詳細については、 『ARM アーキテクチャ リ ファレンスマニュアル』 を参照して下さい。

2.7.2 Q ビッ ト

特定の乗算命令と小数算術命令で、 スティ ッキーオーバフロー (Q) フラグがセッ トされるこ とがあ り ます。

• QADD

• QDADD

• QSUB

• QDSUB

• SMLAD

• SMLAxy

• SMLAWy

• SMLSD

• SMUAD

• SSAT

• SSAT16

• USAT

• USAT16

Q フラグはスティ ッキーで、 ある命令によってセッ ト される と、 CPSR に書き込むMSR 命令によって明示的にク リ アされるまでセッ ト されたままです。 命令を Q フラグのステータスに基づいて条件付き実行するこ とはできません。

Q フラグのステータスを判断するには、 PSR をレジスタに読み出し、 その内容からQ フラグを抽出する必要があ り ます。 Q フラグのセッ ト と ク リ アの方法については、『ARM アーキテクチャ リ ファレンスマニュアル』 に記載されている各命令の定義を参照して下さい。

2.7.3 IT ビッ ト

IT[7:5] は、 現在の IT ブロ ッ ク (存在していれば) のベース条件コードをエンコードします。 IT ブロ ッ クがアクティブでない場合は、 b000 が格納されます。

IT[4:0] は、 条件付きで実行すべき命令の数と、 それぞれの条件がベース条件コードか、 ベース条件コードの反転かをエンコード します。 IT ブロ ッ クがアクティブでない場合は、 b00000 が格納されます。

IT 命令が実行される と、 命令内の条件と、 命令内の Then および Else (T および E)パラ メータに従って、 これらのビッ トがセッ ト されます。 IT ブロッ クの実行中に、IT[4:0] は次の目的でシフ ト されます。

• 条件付きで実行すべき命令の数を -1 する。

• 次のビッ ト を、 条件コードの 下位ビッ ト を形成する位置に移動する。

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 2-11ID013111 Non-Confidential

Page 58: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

プログラマモデル

IT 実行状態ビッ トの動作の詳細については、 『ARM アーキテクチャ リ ファレンスマニュアル』 を参照して下さい。

2.7.4 J ビッ ト

CPSR の J ビッ トは、 読み出し時に 0 を返します。

注 MSR を使用して CPSR の J ビッ ト を変更するこ とはできません。

2.7.5 DNM ビッ ト

ソフ ト ウェアで変更不可 (DNM) ビッ ト を変更しないで下さい。 これらのビッ トに対しては、 次の処理を行う こ とができます。

• プロセスコンテキス ト スイ ッチ中などにプロセッサの状態を保存するため、 読み出し可能です。

• プロセッサの状態復元を可能にするため、 書き込み可能です。 将来の ARM プロセッサとの互換性を維持するため、 またベス ト プラ クティ ス と して、 CPSRを変更する場合は読み出し - 変更 - 書き込み方式を使用して下さい。

2.7.6 GE ビッ ト

表 2-2 に示すよ うに、 一部の SIMD 命令は、 結果の各ハーフワードまたは各バイ トの「以上」 ビッ ト と して GE[3:0] をセッ ト します。

表 2-2 GE[3:0] の設定

GE[3] GE[2] GE[1] GE[0]

命令 A op B ≧ C A op B ≧ C A op B ≧ C A op B ≧ C

符号付き

SADD16 [31:16] + [31:16] ≥ 0 [31:16] + [31:16] ≥ 0 [15:0] + [15:0] ≥ 0 [15:0] + [15:0] ≥ 0

SSUB16 [31:16] - [31:16] ≥ 0 [31:16] - [31:16] ≥ 0 [15:0] - [15:0] ≥ 0 [15:0] - [15:0] ≥ 0

SADDSUBX [31:16] + [15:0] ≥ 0 [31:16] + [15:0] ≥ 0 [15:0] - [31:16] ≥ 0 [15:0] - [31:16] ≥ 0

SSUBADDX [31:16] - [15:0] ≥ 0 [31:16] - [15:0] ≥ 0 [15:0] + [31:16] ≥ 0 [15:0] + [31:16] ≥ 0

SADD8 [31:24] + [31:24] ≥ 0 [23:16] + [23:16] ≥ 0 [15:8] + [15:8] ≥ 0 [7:0] + [7:0] ≥ 0

SSUB8 [31:24] - [31:24] ≥ 0 [23:16] - [23:16] ≥ 0 [15:8] - [15:8] ≥ 0 [7:0] - [7:0] ≥ 0

符号なし

UADD16 [31:16] + [31:16] ≥ 216 [31:16] + [31:16] ≥ 216 [15:0] + [15:0] ≥ 216 [15:0] + [15:0] ≥ 216

USUB16 [31:16] - [31:16] ≥ 0 [31:16] - [31:16] ≥ 0 [15:0] - [15:0] ≥ 0 [15:0] - [15:0] ≥ 0

UADDSUBX [31:16] + [15:0] ≥ 216 [31:16] + [15:0] ≥ 216 [15:0] - [31:16] ≥ 0 [15:0] - [31:16] ≥ 0

USUBADDX [31:16] - [15:0] ≥ 0 [31:16] - [15:0] ≥ 0 [15:0] + [31:16] ≥ 216 [15:0] + [31:16] ≥216

UADD8 [31:24] + [31:24] ≥ 28 [23:16] + [23:16] ≥ 28 [15:8] + [15:8] ≥ 28 [7:0] + [7:0] ≥ 28

USUB8 [31:24] - [31:24] ≥ 0 [23:16] - [23:16] ≥ 0 [15:8] - [15:8] ≥ 0 [7:0] - [7:0] ≥ 0

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 2-12ID013111 Non-Confidential

Page 59: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

プログラマモデル

注 GE ビッ トは、 A op B ≥ C の場合は 1 に、 それ以外の場合は 0 になり ます。

SEL 命令は GE[3:0] を使用して、 その結果の各バイ トが存在するソースレジスタを選択します。

注 • 符号なし演算の場合は、 通常の ARM 規則によって、 符号なし加算と符号なし

減算のキャ リーアウ ト用の GE ビッ ト 、 つま り、 キャ リーアウ ト ビッ トが決定されます。

• 符号付き演算の場合は、 GE ビッ トの設定に使用される規則が、 符号なし演算での 「以上」 と同様の機能が保たれるよ うに選択されます。

2.7.7 E ビッ ト

ARM 命令と Thumb 命令には、 E ビッ ト をセッ ト / ク リ アするための命令があ り ます。 E ビッ トは、 ロード / ス ト アのエンディアン形式を制御します。 E ビッ トの用途については、 『ARM アーキテクチャ リ ファレンスマニュアル』 を参照して下さい。

ARMv6 以前のバージ ョ ンのアーキテクチャでは、 E ビッ トは SBZ に指定されていました。 これによって、 ロード時またはス ト ア時にエンディアン形式が逆にならないこ とが保証されています。

2.7.8 A ビッ ト

A ビッ トは自動的にセッ ト されます。 このビッ トは不正確データアボート を不可能にします。 A ビッ トの使用方法については、 「不正確アボートのマスク処理」 (ページ 2-23) を参照して下さい。

2.7.9 I ビッ ト と F ビッ ト

I ビッ ト と F ビッ トは、 割り込みディセーブルビッ トです。

• I ビッ トがセッ ト されている と き、 IRQ 割り込みは不可能です。

• F ビッ トがセッ ト されている と き、 FIQ 割り込みは不可能です。

ソフ ト ウェアで MSR、 CPS、 MOVS pc、 SUBS pc、 LDM ..,{..pc}^、 RFE 命令を使用して、 Iビッ ト と F ビッ トの値を変更するこ とができます。

NMFI が可能なと きには、 F ビッ トの更新が抑制されます。 詳細については、 「マスク不能高速割り込み」 (ページ 2-19) を参照して下さい。

2.7.10 T ビッ ト

T ビッ トは命令セッ ト状態を反映します。

• T ビッ トがセッ ト されている と きは、 プロセッサが Thumb 状態で動作します。

• T ビッ トがク リ アされている と きは、 プロセッサが ARM 状態で動作します。

注 MSR 命令を使用して CPSR の T ビッ トの状態を強制的に変更しないで下さい。 MSR 命令を使用して T ビッ ト を変更しよ う と しても、 プロセッサで無視されます。

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 2-13ID013111 Non-Confidential

Page 60: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

プログラマモデル

2.7.11 M ビッ ト

M[4:0] はモードビッ トです。 表 2-3 に示すよ うに、 これらのビッ トによってプロセッサの動作モードが決定されます。

注 • 特権モードでは、 M[4:0] に不正な値がプログラムされている と、 プロセッサが

システムモードに移行します。

• ユーザモードでは、 M[4:0] を読み出すこ とができます。 M[4:0] への書き込みは無視されます。

2.7.12 MSR 命令による PSR ビッ トの変更

ARMv6 よ り前のバージ ョ ンのアーキテクチャで MSR 命令を使用する場合、 CPSR のフラグバイ ト (ビッ ト [31:24]) は任意のモードで変更できますが、 他の 3 バイ トは特権モードでしか変更できません。

ARMv7-R アーキテクチャでは、 CPSR の各ビッ トが次のいずれかのカテゴ リに分類されます。

• MSR 命令によって直接、 または他の命令が CPSR の特定のビッ トや全体へ書き込む副作用がある場合に、 任意のモードで自由に変更可能なビッ ト 。

図 2-4 (ページ 2-10) に示すビッ トの中で、 このカテゴ リに含まれるビッ トは、N、 Z、 C、 V、 Q、 GE[3:0]、 E です。

• MSR 命令による変更が不可能なため、 他の命令の副作用と して書き込むこ とが必要なビッ ト 。 MSR 命令によってこれらのビッ ト を変更しよ う と した場合の結果は、 アーキテクチャ上予測不能です。 プロセッサ内のこれらのビッ トは影響を受けません。

図 2-4 (ページ 2-10) に示すビッ トの中で、 このカテゴ リに含まれるビッ トは、実行状態ビッ トの [26:24]、 [15:10]、 [5] です。

表 2-3 PSR モードビッ トの値

M[4:0] モード可視な状態レジスタ

Thumb ARM

b10000 ユーザ R0 ~ R7, R8 ~ R12, SP, LR, PC, CPSR R0 ~ R14, PC, CPSR

b10001 FIQ R0 ~ R7, R8_fiq ~ R12_fiq, SP_fiq, LR_fiq PC, CPSR, SPSR_fiq

R0 ~ R7, R8_fiq ~ R14_fiq, PC, CPSR, SPSR_fiq

b10010 IRQ R0 ~ R7, R8 ~ R12, SP_irq, LR_irq, PC, CPSR, SPSR_irq

R0 ~ R12, R13_irq ~ R14_irq, PC, CPSR, SPSR_irq

b10011 スーパバイザ R0 ~ R7, R8 ~ R12, SP_svc, LR_svc, PC, CPSR, SPSR_svc

R0 ~ R12, R13_svc, R14_svc, PC, CPSR, SPSR_svc

b10111 アボート R0 ~ R7, R8 ~ R12, SP_abt, LR_abt, PC, CPSR, SPSR_abt

R0 ~ R12, R13_abt, R14_abt, PC, CPSR, SPSR_abt

b11011 未定義 R0 ~ R7, R8 ~ R12, SP_und, LR_und, PC, CPSR, SPSR_und

R0 ~ R12, R13_und, R14_und, PC, CPSR, SPSR_und

b11111 システム R0 ~ R7, R8 ~ R12, SP, LR, PC, CPSR R0 ~ R14, PC, CPSR

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 2-14ID013111 Non-Confidential

Page 61: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

プログラマモデル

• 特権モードでのみ変更可能であ り、 プロセッサがユーザモードの間は命令による変更から完全に保護されるビッ ト 。 「例外」 (ページ 2-16) に記載されているよ うに、 プロセッサがユーザモード中にこれらのビッ ト を変更するには、 プロセッサ例外を開始するしか方法があ り ません。

図 2-4 (ページ 2-10) に示すビッ トの中で、 このカテゴ リに含まれるビッ トは、A、 I、 F、 M[4:0] です。

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 2-15ID013111 Non-Confidential

Page 62: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

プログラマモデル

2.8 例外

例外は、 ペリ フェラルからの割り込みへの対応などのため、 プログラムの通常の流れを一時的に停止しなければならない場合に取得されます。 プロセッサは、 ハンドラルーチンの完了後に元のプログラムを再開できるよ うに、 現在のプロセッサ状態の重要な部分を保存してから例外処理を試みます。

このセクシ ョ ンでは、 プロセッサの例外処理について説明します。

• 「例外の開始と終了の概要」• 「 リ セッ ト 」 (ページ 2-18)

• 「割り込み」 (ページ 2-18)

• 「アボート 」 (ページ 2-22)

• 「スーパバイザコール命令」 (ページ 2-24)

• 「未定義命令」 (ページ 2-25)

• 「ブレークポイン ト命令」 (ページ 2-25)

• 「例外ベクタ」 (ページ 2-26)

注 プロセッサがデバッグホールト状態のと きに例外が発生する と、 通常とは異なる方法で処理されます。 詳細については、 「デバッグ状態での例外」 (ページ 11-47) を参照して下さい。

2.8.1 例外の開始と終了の概要

例外開始時に関連する R14 に保存される PC の値と、 例外ハンド ラの終了に使用が推奨される命令との概要を、 表 2-4 に示します。

表 2-4 例外の開始と終了

例外または開始 推奨復帰命令以前の状態

注ARM R14_x Thumb R14_x

SVCa MOVS PC, R14_svc IA + 4 IA + 2 IA は、 SVC 命令または

未定義命令のアドレスです。

UNDEF 各種b IA + 4 IA + 2

PABT SUBS PC, R14_abt, #4 IA + 4 IA + 4 IA は、 プリ フェッチアボートが発生した命令のアドレスです。

FIQ SUBS PC, R14_fiq, #4 IA + 4 IA + 4 IA は、 FIQ または IRQが優先されたために実行されなかった命令のアドレスです。

IRQ SUBS PC, R14_irq, #4 IA + 4 IA + 4

DABT SUBS PC, R14_abt, #8 IA + 8 IA + 8 IA は、 データアボート

が発生したロードまたはス ト ア命令のアドレスです。

RESET NA - - リセッ ト時に R14_svcに保存される値は予測不能です。

BKPT SUBS PC, R14_abt, #4 IA + 4 IA + 4 ソフ ト ウェアブレークポイン ト

a. 従来の SWIb. UNDEF 例外の処理後に使用する必要のある復帰命令は、 未定義命令を再試行するかど うかと、 再試

行する場合には未定義命令のサイズによって異なり ます。

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 2-16ID013111 Non-Confidential

Page 63: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

プログラマモデル

例外の取得

例外を取得する と、 プロセッサは次の動作を実行します。

1. 次に実行する命令のアドレスを、 適切な LR に保存します。 例外がどの状態で検出されたかによって、 次の動作が行われます。

ARM 状態 プロセッサは、 復帰時に正しい位置からプログラムを再開できるよ うに、 命令のアドレスにオフセッ ト を加算した値 (例外のタイプに応じて、 現在の IA + 4 または IA + 8) を LR に書き込みます。

Thumb 状態 プロセッサは、 復帰時に正しい位置からプログラムを再開できるよ うに、 命令のアドレスにオフセッ ト を加算した値 (例外のタイプに応じて、 現在の IA + 2、 IA + 4、 IA + 8 のいずれか) を LR に書き込みます。

2. CPSR を適切な SPSR にコピーします。 例外のタイプによっては、 例外からの復帰を容易にするため、 この動作の前にプロセッサが CPSR の IT 実行状態ビット を変更するこ とがあ り ます。

3. CPSR のモードビッ ト を、 例外のタイプに応じた値に強制的に設定し、 CPSR のIT 実行状態ビッ ト をク リ アします。

4. EE ビッ トの状態に基づいて E ビッ ト をセッ ト します。 これらのビッ トは、 両方と もシステム制御レジスタに含まれています (「c1、 システム制御レジスタ」 (ページ 4-35) を参照)。

5. TE ビッ トの状態に基づいて T ビッ トがセッ ト されます。

6. 関連する例外ベクタから次の命令をフェ ッチできるよ うに、 PC を設定します。

プロセッサは、 割り込みディセーブルフラグをセッ トするこ とによって、 制御不能な例外のネス ト を回避するこ と もできます。

例外の終了

例外の完了時に、 例外ハンド ラは LR からオフセッ ト を引いた値を PC に移動する必要があ り ます。 表 2-4 (ページ 2-16) に示すよ うに、 オフセッ トは例外のタイプによって異な り ます。

復帰命令は一般に、 S ビッ トがセッ ト され、 Rd = R15 である算術演算または論理演算なので、 プロセッサは SPSR を CPSR にコピーします。 また、 復帰状態がスタ ッ クにプッシュされている場合は、 LDM ..,{..pc}^ または RFE 命令でも同様な動作を実行するこ とができます。

注 SPSR から CPSR を復元する操作は次のとおりです。

• T、 E、 A、 I、 F ビッ トが自動的に、 例外の直前の値に復元されます。

• 通常は、 IT 例外状態ビッ トが例外の直前の値にリセッ ト されます。 例外ハンドラから次の命令に戻る場合は、 その命令に不正な条件コードが適用されないように、 これらのビッ ト を手動で前処理する必要があ り ます。 IT 命令と未定義命令の詳細、 および例外ハンド ラコードの例については、 『ARM アーキテクチャ リ ファレンスマニュアル』 を参照して下さい。

SVC ハンド ラは、 常に SVC 命令の次の命令に戻るこ とが想定されているため、CPSR を SPSR にコピーする前に例外が取得された場合は、 IT 実行状態ビッ トが自動的に前処理されます。

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 2-17ID013111 Non-Confidential

Page 64: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

プログラマモデル

2.8.2 リセッ ト

nRESET 信号が LOW に駆動される と リセッ トが発生し、 プロセッサは実行中の命令を破棄します。

nRESET が再び HIGH に駆動される と、 プロセッサは次の動作を行います。

1. CPSR M[4:0] を b10011 (スーパバイザモード) にセッ ト し、 CPSR の A、 I、 Fビッ ト をセッ ト します。 E ビッ トは、 CFGEE ピンの状態に基づいてセッ ト されます。 CPSR の他のビッ トは不定です。

2. PC を、 リセッ トベクタ アドレスから次の命令をフェッチするよ うに設定します。

3. TEINIT ピンの状態に応じて ARM または Thumb 状態に移行し、 実行を再開します。

リセッ ト後は、 PC および CPSR を除くすべてのレジスタの値は不定です。

プロセッサのリセッ ト動作の詳細については、 第 3 章 プロセッサの初期化、 リセット 、 ク ロ ッ クを参照して下さい。

2.8.3 割り込み

プロセッサには、 通常割り込み (nIRQ) 用と高速割り込み (nFIQ) 用の 2 つの割り込み入力があ り ます。 それぞれの割り込みピンがアサート され、 マスク されていない場合は、 対応する割り込み例外がプロセッサによ り取得されます。 詳細については、「例外」 (ページ 2-16) を参照して下さい。 CPSR.F ビッ ト と CPSR.I ビッ トは、 それぞれ高速割り込みと通常割り込みのマスクを制御します。

割り込みレイテンシ、 つま り、 割り込み入力のアサートから割り込みハンド ラの実行までに要する時間を短縮するための機能が複数用意されています。 プロセッサは、デフォルトで、 ARM アーキテクチャのバージ ョ ン 6 およびそれ以降に導入されている低割り込みレイテンシ (LIL) 動作を実行します。 また、 プロセッサは、 ベクタ割り込みコン ト ローラ (VIC) の接続ポート を備えており、 マスク不能高速割り込み(NMFI) をサポート します。

次に示すサブセクシ ョ ンでは、 割り込みについて説明します。

• 「割り込み要求」• 「高速割り込み要求」 (ページ 2-19)

• 「マスク不能高速割り込み」 (ページ 2-19)

• 「低割り込みレイテンシ」 (ページ 2-20)

• 「割り込みコン ト ローラ」 (ページ 2-20)

割り込み要求

IRQ 例外は、 nIRQ 入力が LOW レベルになるこ とによって発生する通常割り込みです。 IRQ の優先度は FIQ よ り も低いため、 FIQ シーケンスの開始時にマスク されます。 プロセッサが VIC インタフェースまたはソフ ト ウェアハンド ラからの割り込み要求を認識するまで、 nIRQ 入力が LOW に保たれるこ とを保証する必要があ り ます。

例外が ARM 状態と Thumb 状態のどちらで取得されたかにかかわらず、 IRQ ハンドラは次の命令によって割り込みから復帰します。

SUBS PC, R14_irq, #4

CPSR.I ビッ ト を b1 にセッ トする と、 特権モードでの IRQ 例外を不可能にできます。「プログラムステータス レジスタ」 (ページ 2-10) を参照して下さい。 CPSR.I ビッ トをセッ トする と、 IRQ 発生時に IRQ 割り込みが自動的に不可能になり ます。 割り込

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 2-18ID013111 Non-Confidential

Page 65: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

プログラマモデル

みのネス ト を使用するこ と も可能ですが、 破壊される可能性があるすべてのレジスタを保存して、 CPSR.I ビッ ト をク リ アし、 IRQ を再度可能にする処理はプログラムで行う必要があ り ます。

高速割り込み要求

高速割り込み要求 (FIQ) では、 通常割り込みよ り も例外ハンド ラの実行時間が短縮されます。 FIQ モードには 8 つの専用レジスタが存在するため、 レジスタを保存する必要が低減し、 場合によっては不要になるため、 コンテキス ト スイ ッチのオーバヘッ ドが 小限に抑えられます。

FIQ は、 nFIQ 信号入力が LOW に駆動されるこ とによ り、 外部的に生成されます。プロセッサがソフ ト ウェアハンド ラからの割り込み要求を認識するまで、 nFIQ 入力が LOW に保たれるこ とを保証する必要があ り ます。

例外開始が ARM 状態と Thumb 状態のどちらで発生したかにかかわらず、 FIQ ハンド ラは次の命令の実行によって割り込みから復帰します。

SUBS PC, R14_fiq, #4

マスク不能高速割り込み (NMFI) が可能になっていない場合は、 CPSR.F ビッ ト を b1にセッ トするこ とによって、 FIQ 例外をマスクできます。 詳細については、 次のセクシ ョ ンを参照して下さい。

• 「プログラムステータス レジスタ」 (ページ 2-10)

• 「マスク不能高速割り込み」

FIQ 割り込みと IRQ 割り込みは、 CPSR.F ビッ ト と CPSR.I ビッ ト をセッ トするこ とによって、 FIQ 発生時に自動的にマスク されます。 割り込みのネス ト を使用すること も可能ですが、 破壊される可能性があるレジスタを保存して、 割り込みを再度可能にする処理はプログラムで行う必要があ り ます。

マスク不能高速割り込み

NMFI 動作が可能な場合は、 ソフ ト ウェアで FIQ 割り込みをマスクするこ とはできません。 NMFI 動作を可能にする と、 FIQ マスク、 つま り、 CPSR.F ビッ トが リセットハンド ラによってク リ アされている場合は、 高速割り込みの処理中を除いて、 高速割り込みが可能な限り迅速に取得されるこ とが保証されます。 したがって、 高速割り込みは重要なイベン トの通知に適しています。 NMFI 動作は、 構成入力信号のCFGNMFI によって制御されます。 この信号が HIGH にアサート される と、 NMFI 動作が可能になり ます。 NMFI はソフ ト ウェアで制御できません。

ソフ ト ウェアは、 システム制御レジスタの NMFI ビッ ト を読み出すこ とによって、NMFI 動作が可能であるかど うかを検出できます。

NMFI == 0 ソフ ト ウェアで CPSR.F ビッ ト を b1 にセッ トする と、 FIQ をマスクできます。

NMFI == 1 ソフ ト ウェアで FIQ をマスクするこ とはできません。

詳細については、 「c1、 システム制御レジスタ」 (ページ 4-35) を参照して下さい。

システム制御レジスタの NMFI ビッ トが b1 の場合、 次の規則が適用されます。

• 命令で CPSR.F ビッ トに b0 を書き込むと、 b0 にク リ アされます。

• 命令で CPSR.F ビッ トに b1 を書き込んでも、 ビッ トは変化しません。

• CPSR.F ビッ トは、 FIQ またはリセッ ト例外の開始によってのみ b1 にセッ トできます。

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 2-19ID013111 Non-Confidential

Page 66: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

プログラマモデル

低割り込みレイテンシ

低割り込みレイテンシ (LIL) は、 プロセッサの割り込みレイテンシを短縮する一連の動作で、 デフォルトで可能になっています。 これは、 システム制御レジスタの FIビッ ト [21] が読み出し値 1 であるこ とを意味します。

LIL 動作では、 プロセッサが通常よ り も速く保留中の割り込みに応答できるよ うに、マルチワードアクセスや外部アクセスを含むノーマルメモ リへのアクセスを実行途中で破棄するこ とができます。 このよ うに命令が破棄された場合、 プロセッサはその命令が実行されなかったかのよ うに動作します。 割り込み処理後に、 割り込みハンド ラが SUBS pc, r14, #4 命令を使用して通常どおりプログラムに復帰した場合は、破棄された命令が再実行されます。 これは、 命令によって生成される メモ リ アクセスの一部が 2 回実行されるこ とを意味します。

ス ト ロングオーダまたはデバイスタイプと してマーク されたメモ リは、 実行された読み出しまたは書き込みの回数の影響を受けます。 そのため、 ス ト ロングオーダまたはデバイスのメモ リにアクセスする命令は、 メモ リ アクセスの開始後に破棄されるこ とはあ り ません。 このよ う な命令は、 メモ リ アクセスが 後まで行われるか、全く行われないかのどちらかです。 したがって、 割り込みレイテンシを 小限に抑えるには、 ス ト ロングオーダまたはデバイス と してマーク されたメモ リ位置への複数ワードのロード / ス ト ア命令の使用を避ける必要があ り ます。

割り込みコン ト ローラ

プロセッサには、 ベクタ割り込みコン ト ローラ (VIC) を接続するための VIC ポートがあ り ます。 割り込みコン ト ローラは、 複数の割り込みソースを処理するペリ フェラルです。 割り込みコン ト ローラには、 一般に次のよ うな機能があ り ます。

• 割り込みソースごとに 1 つずつの複数の割り込み要求入力と、 プロセッサへの1 つまたは複数の混合割り込み要求出力

• 特定の割り込み要求をマスクする機能

• 割り込みをネス トするための、 割り込みソースの優先順位付け

このよ うな機能を備えた割り込みコン ト ローラを使用するシステムでは、 次のよ うなソフ ト ウェア処理が必要です。

• 割り込みコン ト ローラから、 どの割り込みソースがサービスを要求しているかを判断する。

• その割り込みソースに対応するサービスルーチンがロード される場所を特定する。

• プロセッサの割り込みを再度可能にし、 別の割り込みを取得可能にする前に、その割り込みソースをマスクまたはク リ アする。

VIC は、 これらすべてをハード ウェアで行うため、 割り込みレイテンシが短縮されます。 また、 VIC は、 も優先度が高い、 アサート された割り込みソースに対応するサービスルーチンの開始アドレスを、 直接プロセッサに供給します。 プロセッサはこのアドレスを受け取る と、 その割り込みをマスク して、 ソースをク リ アしな くても割り込みを再度可能にできるよ うにします。 PL192 VIC は、 Cortex-R4 設計で使用するために ARM によって開発、 テス ト、 ラ イセンスされたアドバンス ト マイ クロコン ト ローラバス アーキテクチャ (AMBA) 準拠のシステム オンチップ (SoC) ペリフェラルです。

VIC ポート を使用して、 PL192 VIC をプロセッサに接続するこ とができます。 PL192 VIC の詳細については、 『ARM PrimeCell ベクタ割り込みコン ト ローラ (PL192) テクニカル リ ファレンスマニュアル』 を参照して下さい。 VIC ポートは、 システム制御レジスタの VE ビッ ト をセッ トするこ とで稼働状態にできます。 VIC ポートが稼働中にIRQ が発生した場合は、 プロセッサが VIC インタフェース上のハンドシェイ クを実行して、 IRQ の処理ルーチンのアドレスを取得します。

VIC ポート と、 その信号およびタイ ミ ングの詳細については、 『Cortex-R4 およびCortex-R4F インテグレーシ ョ ン マニュアル』 を参照して下さい。

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 2-20ID013111 Non-Confidential

Page 67: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

プログラマモデル

割り込み開始のフローチャート

図 2-5 は、 プロセッサによる割り込み認識のフローチャートです。 割り込み開始の完全な処理に必要なすべての決定とアクシ ョ ンが示されています。

図 2-5 割り込み開始シーケンス

図 2-5 に示されている I ビッ ト と F ビッ トの詳細については、 「プログラムステータス レジスタ」 (ページ 2-10) を参照して下さい。 図 2-5 に示されている V ビッ ト とVE ビッ トの詳細については、 「c1、 システム制御レジスタ」 (ページ 4-35) を参照して下さい。

LR_fiq = RA+4

CPSR[4:0] = FIQ

CPSR[5] = TE

CPSR[7] = 1 CPSR[6] = 1

SPSR_fiq = CPSR

V==1

FALSE

TRUE

FALSE

!((nFIQ||F)&&

(nIRQ||I))

!(nFIQ||F)

VE==1FALSEV==1

TRUE

PC[31:0] = VIC VICAcknowledge

TRUE

FALSE VIC?

FALSE

TRUE

TRUE

VIC

LR_irq = RA+4

SPSR_irq = CPSR

CPSR[4:0] = IRQ

FALSE

CPSR[7] = 1

CPSR[5] = TE

VE==1

PC[31:0] =0x0000001C

PC[31:0] =0xFFFF001C

PC[31:0] =0xFFFF0018

PC[31:0] =0x00000018

!VE || VIC

FALSE

TRUE

TRUE

TRUE

FALSE

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 2-21ID013111 Non-Confidential

Page 68: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

プログラマモデル

2.8.4 アボート

プロセッサのメモ リ システムでメモ リ アクセスが正常に完了できなかった場合に、アボートが生成されます。 アボートは、 次のよ うなさまざまな原因で発生する可能性があ り ます。

• MPU でアクセス許可フォールトが示された場合

• AXI メモ リバス上の ト ランザクシ ョ ンにエラー応答が返された場合

• ECC チェッ ク ロジッ クでデータエラーが検出された場合

命令フェッチでエラーが発生した場合は、 プ リ フェ ッチアボートが生成されます。データアクセスでエラーが発生した場合は、 データアボートが生成されます。 アボートは、 正確と不正確のいずれかに分類されます。

プ リ フェ ッチアボート またはデータアボートが発生した場合は、 プロセッサが該当するタイプの例外を取得します。 詳細については、 「例外の開始と終了の概要」 (ページ 2-16) を参照して下さい。 アボートのタイプに関する追加情報がレジスタに保存され、 イベン ト と して通知されます。 アボート を引き起こす可能性のあるフォールトのタイプ、 およびプロセッサがそれらのフォールトに関して提供する情報の詳細については、 「フォールト処理」 (ページ 8-7) を参照して下さい。

プリフェ ッチアボート

プリ フェ ッチアボート (PABT) が発生する と、 プロセッサはプリ フェ ッチされた命令を無効と してマークしますが、 その命令が実行されるまで例外を取得しません。 この命令が、 パイプライン内にある間に分岐が発生したなどの理由で実行されない場合は、 アボートは発生しません。

プ リ フェ ッチアボートはすべて正確です。

データアボート

データ メモ リ アクセスでエラーが発生した場合は、 データアボートが生成される可能性があ り ます。 メモ リ アクセスを生成する命令が、 条件コードに失敗したり、 割り込まれたり して実行されなかった場合は、 データアボートは発生しません。

データアボート (DABT) は、 それを引き起こしたフォールトのタイプによって、 正確にも不正確にもな り ます。

プロセッサは、 ベース更新データアボート モデルとは対照的なベース復元データアボート モデルを実装しています。

ベース復元データアボート モデルで、 メモ リ アクセス命令の実行中にデータアボート例外が発生した場合、 プロセッサのハード ウェアは必ず、 命令の実行前に保持されていた値にベースレジスタを復元します。 このため、 データアボート ハンド ラは、アボート された命令によって指定されていた可能性のあるベースレジスタの更新を元に戻す必要があ り ません。 この機能によ り、 ソフ ト ウェア データアボート ハンドラを簡素化できます。 詳細については、 『ARM アーキテクチャ リ ファレンスマニュアル』 を参照して下さい。

正確アボート

正確アボートは同期アボート と も呼ばれ、 アボートが発生したメモ リ アクセスを生成した命令で例外が取得されるこ とが保証されているアボートです。 アボートハンド ラは、 リ ンクレジスタ (r14_abt) の値を使用してアボート を生成した命令を特定でき、 保存プログラムステータス レジスタ内 (SPSR_abt) の値を使用してアボート発生時のプロセッサの状態を特定できます。

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 2-22ID013111 Non-Confidential

Page 69: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

プログラマモデル

不正確アボート

不正確アボートは非同期アボート と も呼ばれ、 アボートが発生したメモ リ アクセスを生成した命令よ り も後の命令で例外が取得されるアボートです。 アボートハンドラは、 アボート を生成した命令、 およびアボート発生時のプロセッサの状態を特定できません。 そのため、 不正確アボートは一般に致命的です。

不正確アボートは、 ノーマルまたはデバイスタイプのメモ リへのス ト ア命令で生成される可能性があ り ます。 通常は、 ス ト ア命令がコ ミ ッ ト されたと き、 メモ リ システムが書き込みアクセスに十分な帯域幅を確保できるまで、 データはバッファに保存されます。 このために、 読み出しアクセスのほうが優先度が高くな り ます。 書き込みデータは長期間バッファに保存できるため、 その間に他の多くの命令が完了する可能性があ り ます。 後の書き込みの実行でエラーが発生した場合は、 不正確アボートが生成されます。

不正確アボートのマスク処理

不正確アボートの特徴は、 プロセッサが別のアボート を処理中に発生する可能性があるこ とです。 このよ う な状況で不正確アボートによ り新しい例外が生成された場合、 r14_abt と SPSR_abt の値が上書きされます。 データがメモ リ内のスタ ッ クにプッシュされる前にこの現象が発生した場合は、 初のアボートに関する状態情報が失われます。 この発生を防ぐために、 CPSR には、 不正確アボート を受け付けられないこ とを示すマスクビッ トの A ビッ トが存在します。 A ビッ トがセッ ト されている場合、 発生したすべての不正確アボートはプロセッサによって保留され、 A ビットがク リ アされた時点で実際に例外が取得されます。 A ビッ トは、 アボート、 IRQ例外、 FIQ 例外の取得時、 およびリセッ ト時に自動的にセッ ト されます。 A ビッ トのク リ アは、 状態情報がメモ リにスタ ッ ク されるか、 不要になった後で、 アボートハンド ラ内でのみ行う こ とが必要です。

不正確アボートの各タイプについて、 保留できる不正確アボートは 1 つだけです。プロセッサは、 次のよ うな保留中の不正確アボート をサポート します。

• 不正確外部アボート

不正確外部アボートが保留中に、 別の不正確外部アボートが通知された場合、後の不正確外部アボートが無視され、 前の不正確外部アボートだけが取得されます。

• TCM ポート ごとに 1 つずつの TCM 書き込み外部エラー

• キャ ッシュ書き込みのパリティ または ECC エラー

キャ ッシュのパリティ または ECC エラーが保留中に、 別のパリ ティ またはECC エラーが通知された場合、 通常は後のエラーが無視され、 前のエラーだけが取得されます。 ただし、 保留中のエラーが修正可能で、 後のエラーが修正不可能な場合は、 保留中のエラーが無視され、 修正不可能なエラーに関するアボートだけが取得されます。

メモリバリア

ノーマルまたはデバイスタイプのメモ リに対して、 1 つのス ト ア命令または一連のスト ア命令を実行した場合、 これらの命令が原因でエラーが発生したかど うかを特定するこ とが必要な場合があ り ます。 これらのエラーのほとんどは正確に報告されないため、 命令の実行直後にアボート例外が生成されない可能性があ り ます。 可能性のあるすべてのエラーが報告されたこ とを確認するには、 DSB 命令を実行する必要があ り ます。 これらの原因でアボート例外が取得されるのは、 マスク されていない場合、 つま り CPSR A ビッ トがク リ アされている場合のみです。 A ビッ トがセッ ト されている場合、 アボートは保留状態に保持されます。

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 2-23ID013111 Non-Confidential

Page 70: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

プログラマモデル

スト ロングリオーダおよびデバイスメモリでのアボート

メモ リ アクセスでアボートが生成された場合は、 メモ リ アクセスがすべて完了していなくても、 そのアクセスを生成した命令は破棄され、 アボート例外が取得されます。 その後で、 アボートハンド ラで次のいずれかを実行するこ とができます。

• エラーを修正して、 破棄された命令に戻り、 再実行する。

• アボート された命令の代わりに適切なデータ転送を実行し、 破棄された命令の次の命令に戻る。

• そのエラーを致命的と して処理し、 プロセスを終了する。

アボートハンド ラが破棄された命令に戻った場合は、 生成されたメモ リ アクセスの一部が繰り返されます。 この場合、 複数ワードのロード / ス ト ア命令では、 同じ メモリ位置に 2 回アクセスする可能性があ り ます。 1 回目のアクセスはアボートの取得前に、 2 回目のアクセスは命令の再開時に発生します。

ス ト ロング リオーダまたはデバイスタイプのメモ リでは、 メモ リ アクセスの繰り返しによって容認できない副作用が発生する場合があ り ます。 このため、 アボートハンド ラでエラーを修正してアボート された命令を再実行できる場合は、 複数ワードのロード / ス ト ア命令で発生するすべてのメモ リエラーについて、 次のこ とを確認する必要があ り ます。

• アクセスの繰り返しによる副作用が重要ではない。

• エラーはアクセスされた 初のワードで発生するか、 全く発生しない。

この規則が適用される命令は次のとおりです。

• すべての形式の ARM 命令の LDM と LDRD、 すべての形式の STM、 VFP バリ アン トを含む STRD、 およびアンアラインドの LDR、 STR、 LDRH、 STRH

• Thumb 命令の LDMIA、 LDRD、 SDRD、 PUSH、 POP、 VFP バリ アン ト を含む STMIA、 およびアンアラインドの LDR、 STR、 LDRH、 STRH

アボートハンド ラ

プロセッサで、 キャ ッシュまたは TCM にパリティ または ECC を構成し、 アボートハンド ラがこれらのメモ リのいずれかに存在している場合は、 アボートハンド ラ内でパリ ティ または ECC エラーが発生する可能性があ り ます。 エラーが修復不可能な場合は、 正確アボートが発生して、 プロセッサが次の割り込みまでループします。また、 元のアボートの LR および SPSR の値が失われます。 そのため、 アボートハンド ラ内で正確アボートが発生しないよ うにソフ ト ウェアを構築する必要があ り ます。つま り、 アボートハンド ラは外部メモ リに配置して、 キャ ッシュされないよ うにする必要があ り ます。

2.8.5 スーパバイザコール命令

スーパバイザコール (SVC) 命令 (従来は SWI と呼ばれていました) を使用して、スーパバイザモードに入るこ とができます。 このモードに入る通常の目的は、 特定のスーパバイザ機能を要求するこ とです。 SVC ハンド ラは、 オペコードを読み出して、 SVC 関数番号を抽出します。 SVC ハンド ラは、 プロセッサの動作状態にかかわらず、 次の命令の実行によ り復帰します。

MOVS PC, R14_svc

この操作によって PC と CPSR が復元され、 SVC の次の命令に復帰します。

ソフ ト ウェア割り込みが発生する と、 IRQ は不可能になり ます。

プロセッサは、 SPSR に書き込む値が SVC の次の命令に適合するよ うに、 例外の開始時に IT 実行状態ビッ ト を変更します。 つま り、 SVC ハンド ラは、 IT 命令を調整するための操作を行う必要があ り ません。 IT 命令の詳細については、 『ARM アーキテクチャ リ ファレンスマニュアル』 を参照して下さい。

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 2-24ID013111 Non-Confidential

Page 71: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

プログラマモデル

2.8.6 未定義命令

未定義の命令が出現した場合、 または VFP が稼働していないと きに VFP への命令が出現した場合、 プロセッサで未定義命令例外が取得されます。 ソフ ト ウェアで、 この機構を利用して未定義のコプロセッサ命令をエミ ュレート し、 ARM 命令セッ ト を拡張するこ とができます。 未定義例外は、 UDIV 命令または SDIV 命令が実行され、 Rmの値が 0 で、 かつシステム制御レジスタの DZ ビッ トがセッ ト されている場合にも発生します。

ハンド ラが未定義例外を引き起こした命令の次の命令に戻るよ うに要求された場合は、 次の操作を行う必要があ り ます。

• SPSR を CPSR に復元する前に、 SPSR の IT 実行状態ビッ ト を前処理します。これは、 復帰時に正しい条件コードが次の命令に適用されるよ うにするためです。 IT ビッ ト を前処理するための擬似コードは次のとおりです。

Mask = SPSR[11,10,26,25];if (Mask != 0) {

Mask = Mask << 1;SPSR[12,11,10,26,25] = Mask;}

if (Mask[3:0] == 0) {SPSR[15:12] = 0;

}

• 未定義例外を引き起こした命令を取得して、 その直後の命令に正し く復帰します。 例外ハンド ラは、 Thumb 状態で 16 ビッ ト命令と 32 ビッ ト命令の両方の可能性を認識している必要もあ り ます。

未定義ハンド ラは、 SPSR をテス ト して、 命令が Thumb 状態で実行されたと判定した場合、 次の擬似コードまたは同等のコードを使用して、 この情報を得る必要があ り ます。

addr = R14_undef - 2instr = Memory[addr,2]if (instr >> 11) > 28 { /* 32-bit instruction */ instr = (instr << 16) | Memory[addr+2,2] if (emulating, so return after instruction wanted) } R14_undef += 2 //

} //}

この後で、 instr に命令 (16 ビッ ト命令の場合は 0x0000 ~ 0xE7FF の範囲、 32ビッ ト命令の場合は 0xE8000000 ~ 0xFFFFFFFF の範囲) が保存されており、 MOVS

PC, R14 を実行して例外から復帰できます。

未定義命令ト ラ ップが発生する と、 IRQ は不可能になり ます。 未定義命令の詳細については、 『ARM アーキテクチャ リ ファレンスマニュアル』 を参照して下さい。

2.8.7 ブレークポイン ト命令

ブレークポイン ト (BKPT) 命令は、 命令によ りプ リ フェ ッチアボートが発生した場合と同様の動作を行います。

ブレークポイン ト命令は、 実行されるまでプロセッサでプリ フェ ッチアボート例外が取得されません。 この命令がパイプライン内にある と きに分岐が発生したなどの理由で実行されない場合は、 ブレークポイン トが発生しません。

ブレークポイン ト を処理した後、 ハンド ラはプロセッサの動作状態にかかわらず、次の命令を実行します。

SUBS PC, R14_abt, #4

この動作によって PC と CPSR の両方が復元され、 ブレークポイン トが発生した命令が再試行されます。

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 2-25ID013111 Non-Confidential

Page 72: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

プログラマモデル

注 EmbeddedICE-RT ロジッ クがホールト デバッグモードに構成されている場合は、 ブレークポイン ト命令によってプロセッサがデバッグ状態に移行します。 「ホールト デバッグモードでのデバッグ」 (ページ 11-3) を参照して下さい。

2.8.8 例外ベクタ

表 2-5 に示すよ うに、 CP15 c1 システム制御レジスタの V ビッ ト をセッ ト してHIVECS を稼働状態にする と、 例外ベクタアドレスの位置を構成できます。

それぞれの例外タイプについて、 例外ベクタアドレス と開始時の状態を、 表 2-6 に示します。

表 2-5 例外ベクタアドレス位置の構成

V ビッ トの値 例外ベクタのベース位置

0 0x00000000

1 (HIVECS) 0xFFFF0000

表 2-6 例外ベクタ

例外ベクタベースからのオフセッ ト

開始時のモード

開始時のA ビッ ト

開始時のF ビッ ト

開始時のI ビッ ト

リセッ ト 0x00 スーパバイザ セッ ト セッ ト セッ ト

未定義命令 0x04 未定義 変更なし 変更なし セッ ト

ソフ ト ウェア割り込み 0x08 スーパバイザ 変更なし 変更なし セッ ト

アボート (プ リ フェ ッチ) 0x0C アボート セッ ト 変更なし セッ ト

アボート (データ) 0x10 アボート セッ ト 変更なし セッ ト

IRQ 0x18 IRQ セッ ト 変更なし セッ ト

FIQ 0x1C FIQ セッ ト セッ ト セッ ト

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 2-26ID013111 Non-Confidential

Page 73: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

プログラマモデル

2.9 実行環境の高速化

ARMv7-R アークテクチャは Jazelle® ソフ ト ウェアとの互換性が必要なため、 プロセッサには 3 つの Jazelle レジスタが実装されています。

Jazelle レジスタ命令の概要と、 命令に対する応答を、 表 2-7 に示します。

注 プロセッサにはハード ウェアアクセラレータが存在しないため、 BXJ 命令が実行された場合は、 BX 命令が呼び出されます。

表 2-7 Jazelle レジスタ命令の概要

レジスタ 命令 応答

Jazelle ID MRC p14, 7, <Rd>, c0, c0, 0

MCR p14, 7, <Rd>, c0, c0, 0

読み出し値 0

書き込み無視

Jazelle メ イン構成 MRC p14, 7, <Rd>, c2, c0, 0

MCR p14, 7, <Rd>, c2, c0, 0

読み出し値 0

書き込み無視

Jazelle OS 制御 MRC p14, 7, <Rd>, c1, c0, 0

MCR p14, 7, <Rd>, c1, c0, 0

読み出し値 0

書き込み無視

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 2-27ID013111 Non-Confidential

Page 74: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

プログラマモデル

2.10 アンアラインド データアクセスおよびエンディアン混在データアクセスのサポート

プロセッサは、 アンアラインド メモ リ アクセスをサポート しています。 アンアラインド メモ リ アクセスは、 ARMv6 で導入されました。 制御レジスタ c1 のビッ ト [22] は常に 1 です。

プロセッサは、 バイ ト不変ビッグエンディアン形式の BE-8 と、 リ トルエンディアン形式の LE をサポート しています。 ワード不変ビッグエンディアン形式の BE-32 はサポート していません。 制御レジスタ c1 のビッ ト [7] は常に 0 です。

アンアラインド データアクセスおよびエンディアン混在データアクセスのサポートの詳細については、 『ARM アーキテクチャ リ ファレンスマニュアル』 を参照して下さい。

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 2-28ID013111 Non-Confidential

Page 75: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

プログラマモデル

2.11 ビッグエンディアン命令のサポート

プロセッサは、 リ トルエンディアンまたはビッグエンディアン フォーマッ ト をサポート していますが、 これは CFGIE ピンの設定に依存します。 この設定は、 システム制御レジスタのビッ ト [31] に反映されます。 詳細については、 「c1、 システム制御レジスタ」 (ページ 4-35) を参照して下さい。

注 ビッグエンディアンまたはリ トルエンディアン命令フォーマッ ト を使用するための機構は実装オプシ ョ ンです。 したがって、 実装によってはその機構を削除するこ とができます。 この機構が存在しない場合でも、 CFGIE ピンの状態がシステム制御レジスタに反映されますが、 命令フォーマッ トは常にリ トルエンディアンになり ます。

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 2-29ID013111 Non-Confidential

Page 76: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

第 3 章 プロセッサの初期化、 リセッ ト、 クロック

プロセッサでアプリ ケーシ ョ ンソフ ト ウェアを実行するには、 プロセッサを リセッ ト して初期化する必要があ り ます。 これには、 適切なソフ ト ウェア構成のロード も含まれます。 本章では、 プロセッサのクロ ッ クおよびリセッ トに関する信号と、 リセッ ト後にソフ ト ウェアでプロセッサを初期化するため必要な手順について説明します。 本章は次のセクシ ョ ンから構成されています。

• 「初期化」 (ページ 3-2)

• 「 リ セッ ト 」 (ページ 3-6)

• 「 リ セッ ト モード」 (ページ 3-7)

• 「ク ロ ッ ク」 (ページ 3-9)

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 3-1ID013111 Non-Confidential

Page 77: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

プロセッサの初期化、 リセッ ト、 クロック

3.1 初期化

r0 ~ r14、 s0 ~ s31、 d0 ~ d15 (浮動小数点が内蔵されている場合) など、 プロセッサ内のアーキテクチャレジスタのほとんどはリセッ ト されません。 そのため、 これらのレジスタはすべてのモードについて、 使用前にイ ミディエート MOV 命令またはPC 相対ロード命令を使用して初期化する必要があ り ます。 カレン トプログラムステータス レジスタ (CPSR) には、 リセッ ト時に既知の値が設定されます。 この詳細については、 『ARM アーキテクチャ リ ファレンスマニュアル』 を参照して下さい。CP15 レジスタの リセッ ト値については、 第 4 章 システム制御コプロセッサのレジスタの説明を参照して下さい。

また、 アプリ ケーシ ョ ンを実行する前に、 次の操作を行う こ とができます。

• スタ ッ クポインタなどのレジスタに特定の値をプログラムする。

• エラー修正など、 各種のプロセッサ機能を稼働状態にする。

• TCM などのメモ リに特定の値をプログラムする。

その他の初期化要件については、 次の項目を参照して下さい。

• 「MPU」

• 「CRS」

• 「FPU」 (ページ 3-3)

• 「キャ ッシュ」 (ページ 3-3)

• 「TCM」 (ページ 3-3)

3.1.1 MPU

プロセッサに MPU が組み込まれている場合は、 それを使用する前に次の操作を実行する必要があ り ます。

• 少なく と も 1 つの領域をプログラムして稼働状態にする。

• システム制御レジスタで MPU を稼働状態にする。

「c6、 MPU メモ リ領域プログラ ミ ングレジスタ」 (ページ 4-49) を参照して下さい。少なく と も 1 つの MPU 領域がプログラムされ、 アクティブになっていない限り、MPU を稼働しないで下さい。 MPU が稼働している場合は、 TCM インタフェースを使用する前に、 TCM 領域をカバーするよ うに MPU 領域をプログラムして、 アクセス許可を設定する必要があ り ます。

3.1.2 CRS

リ ビジ ョ ン r1p2 およびそれ以前のプロセッサでは、 PFU の呼び出し リ ターンスタ ック (CRS) はリセッ ト されません。 つま り、 このスタ ッ クに リセッ ト後に格納されているデータは予測不能です。 CRS を使用する前に初期化するこ とをお勧めします。PFU の詳細については、 第 5 章 プリ フェ ッチユニッ ト を参照して下さい。

この操作を行うには、 BX、 LDR pc、 LDM pc などの復帰命令を実行する前に、 次のよ うに4 つのリ ンク付き分岐命令を実行します。

; Initialise call-return-stack (CRS) with four call instructions.BL call1

call1 BL call2call2 BL call3call3 BL nextnext

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 3-2ID013111 Non-Confidential

Page 78: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

プロセッサの初期化、 リセッ ト、 クロック

3.1.3 FPU

プロセッサに浮動小数点ユニッ ト (FPU) が組み込まれている場合、 VFP 命令を実行する前に、 次の方法で FPU を稼働状態にする必要があ り ます。

• コプロセッサアクセス制御レジスタで、 FPU へのアクセスを可能にする (「c1、コプロセッサアクセス レジスタ」 (ページ 4-44) を参照)。

• FPEXC レジスタの EN ビッ ト をセッ ト し、 FPU を稼働状態にする (「浮動小数点例外レジスタ、 FPEXC」 (ページ 12-7) を参照)。

注 浮動小数点ロジッ クは、 Cortex-R4F プロセッサでのみ利用可能です。

3.1.4 キャッシュ

プロセッサに命令キャ ッシュまたはデータキャ ッシュが組み込まれている場合は、キャ ッシュを稼働状態にする前に無効化が必要です。 これを行わない場合、 予測不能な動作が発生する可能性があ り ます。 「キャ ッシュ操作」 (ページ 4-54) を参照して下さい。

キャ ッシュのエラーチェッ ク方式を使用する場合は、 「補助制御レジスタ」 (ページ 4-38) に記載されているよ うに、 キャ ッシュを無効化する前に補助制御レジスタをプログラムして、 キャ ッシュの無効化時に正しいエラーコードまたはパリティ ビッ トが計算されるこ とを保証し、 この方式を稼働する必要があ り ます。 キャ ッシュ全体の無効化操作では、 ECC またはパリティエラーは報告されません。

3.1.5 TCM

プロセッサは、 TCM RAM を初期化しません。 TCM インタフェースに接続されているすべてのメモ リ を初期化するこ とは絶対に必要ではあ り ませんが、 そ うするこ とをお勧めします。 また、 メ インアプ リ ケーシ ョ ンで使用する命令またはデータをTCM にプリ ロードするこ とができます。 このセクシ ョ ンでは、 データプ リ ロードのさまざまな方法について説明します。 リセッ ト時から TCM を使用するよ うに、 プロセッサを構成するこ と もできます。

TCM のプリロード

ス ト ア命令または AXI スレーブインタフェースを使用して、 TCM にデータを書き込むこ とができます。 選択した方法によっては、 次の要素が必要なこ とがあ り ます。

• 使用している SoC 上の特定のハード ウェア

• ブート コード

• プロセッサに接続されたデバッガ

TCM をプ リ ロードするには、 次の方法があ り ます。

ブート コードの実行による メモ リ コピー

ブート コードには、 ROM からデータを読み出して、 適切な TCM に書き込むメモ リ コピー ルーチンが含まれています。 これを実行するには、TCM を稼働状態にする必要があ り ます。 また、 コピー中とアプリ ケーシ ョ ン実行時とで、 異なるベースアドレスを TCM に設定するこ とが必要な場合があ り ます。

デバッグ通信チャネルからのデータのコピー

ブート コードには、 デバッグ通信チャネル (DCC) からデータを読み出して、 TCM に書き込むルーチンが含まれています。 デバッグホス トは、プロセッサの APB デバッグポート上の適切なレジスタに書き込むこ とによって、 この操作に必要なデータを DCC に送り ます。

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 3-3ID013111 Non-Confidential

Page 79: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

プロセッサの初期化、 リセッ ト、 クロック

デバッグホールト状態でのコードの実行

デバッグホス トによってプロセッサがデバッグホールト状態にな り、 命令転送レジスタ (ITR) を経由してプロセッサに命令がフ ィード されます。 プロセッサがこれらの命令を実行する と、 前述の 2 つの方法のいずれかによってブート コードが置き換えられます。

TCM への DMA

SoC には、 ROM からデータを読み出して、 AXI スレーブインタフェースを経由して TCM に書き込むダイレク ト メモ リ アクセス (DMA) デバイスが組み込まれています。

デバッガからの TCM への直接書き込み

システム内のデバッグアクセス ポート (DAP) は、 AMBA ト ランザクシ ョ ンを生成して、 AXI スレーブインタフェースを通して TCM にデータを書き込むために使用されます。 この DAP は、 JTAG チェーン経由でデバッグホス トから制御されます。

パリテ ィまたは ECC を持つ TCM のプリロード

TCM RAM にエラー検出方式が構成されている場合、 エラーコードまたはパリ ティビッ トはプロセッサで初期化されません。 ECC またはパリ ティチェッ クを稼働状態にして RAM を読み出す前に、 エラーコードまたはパリティ ビッ ト を初期化する必要があ り ます。 エラーコードまたはパリティ ビッ ト を正し く計算するには、 これらのビッ トで保護するデータチャンク内のすべてのデータがロジッ クで必要とな り ます。このため、 TCM の初期化時には、 書き込みはすべてエラー検出方式で保護されるデータチャンク と同じ幅と し、 アラインさせる必要があ り ます。

後述する規則に従って、 エラーチェッ クがオンまたはオフの状態で TCM RAM を初期化できます。 「補助制御レジスタ」 (ページ 4-38) を参照して下さい。 TCM に書き込まれたエラーコードまたはパリティ ビッ トは、 エラーチェッ クがオフの場合でも有効です。

スレーブポート を使用する場合は、 TCM メモ リに書き込むト ランザクシ ョ ンを次のよ うに使用する必要があ り ます。

• エラー検出方式がパリティの場合は、 任意の書き込みト ランザクシ ョ ンを使用できます。

• エラー検出方式が 32 ビッ ト ECC の場合は、 書き込みト ランザクシ ョ ンを 32ビッ ト アラインドアドレスから開始して、 4 の倍数のバイ ト数からなる連続メモリブロッ クを書き込む必要があり ます。 ブロッ ク内のすべてのバイ ト を書き込む、 つま り、 それらのバイ ト レーン ス ト ローブをアサートする必要があり ます。

• エラー検出方式が 64 ビッ ト ECC の場合は、 書き込みト ランザクシ ョ ンを 64ビッ ト アラインドアドレスから開始して、 8 の倍数のバイ ト数からなる連続メモリブロッ クを書き込む必要があり ます。 ブロッ ク内のすべてのバイ ト を書き込む、 つま り、 それらのバイ ト レーン ス ト ローブをアサートする必要があり ます。

プロセッサでコードを実行して初期化を行う場合は、 次のよ うに TCM メモ リ全体に書き込むス ト アループが 良の方法です。

• エラー検出方式がパリティの場合、 またはエラー検出方式が存在しない場合は、 任意のス ト ア命令を使用するこ とができます。

• 32 ビッ ト ECC 方式の場合は、 32 ビッ ト アラインドアドレスに対して、 ワードス ト ア (STR)、 2 ワードのス ト ア (STRD)、 または複数ワードス ト ア (STM) 命令を使用します。

• 64 ビッ ト ECC 方式の場合は、 64 ビッ ト アラインドの開始アドレスを使用して、レジスタ リ ス トに偶数個のレジスタを含む STRD または STM を使用します。

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 3-4ID013111 Non-Confidential

Page 80: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

プロセッサの初期化、 リセッ ト、 クロック

注 プロセッサのアライ メン トチェッ ク機能を使用して、 メモ リ アクセスが 32 ビッ ト アラインドであるこ とを保証できますが、 64 ビッ ト アラ イ メン トのチェッ ク機能はあり ません。 STRD または STM を使用している場合は、 アドレスが 32 ビッ ト アラ インドでなければアライ メン ト フォールトが生成されます。 STR 命令を使用して同じ動作を実行する場合は、 システム制御レジスタの A ビッ ト をセッ トするこ とによって、厳密なアライ メン トチェッ クを可能にします。 「c1、 システム制御レジスタ」 (ページ 4-35) を参照して下さい。

エラー検出方式が 64 ビッ ト ECC の場合、 TCM を初期化する も簡単な方法は次のとおりです。

• エラーチェッ クをオフにします。

• CP15 を使用して 64 ビッ ト ス ト ア動作をオンにします。 「c15、 2 次補助制御レジスタ」 (ページ 4-41) を参照して下さい。

• 任意のス ト ア命令または任意の AXI 書き込みト ランザクシ ョ ンを使用してTCM に書き込みます。 プロセッサは、 エラーチェッ クがオフの場合でも、 すべての書き込みが 64 ビッ ト アラ インドになるこ とを保証するため、 読み出し - 変更 - 書き込みアクセスを実行します。

注 エラーチェッ ク と 64 ビッ ト ス ト ア動作は、 TCM インタフェースごとに可能にするこ とができます。 このよ う な制御に対する上記の参照は、 どの TCM を初期化する場合にも該当します。

リセッ ト時からの TCM の使用

プロセッサのピン構成によって、 リセッ ト時から TCM インタフェースを稼働状態にし、 各 TCM がリセッ ト時に出現するアドレスを選択できます。 詳細については、「TCM の初期化」 (ページ 8-16) を参照して下さい。 これによって、 プロセッサがTCM からブートするよ うに構成できますが、 そのためには、 初に TCM にブートコードをプリ ロードする必要があ り ます。 プロセッサのリセッ ト時に nCPUHALTピンをアサートする と、 リセッ トの完了後にプロセッサが命令のフェッチや実行を行わないよ うにするこ とができます。 このよ うにプロセッサが停止している間に、TCM に適切なデータをプ リ ロードできます。 nCPUHALT ピンをアサート解除すると、 プロセッサは、 通常どおりに リセッ トベク タ アドレスから命令のフェッチを開始します。

注 プロセッサによるフェッチを開始するために nCPUHALT をアサート解除した場合、プロセッサがプロセッサ リセッ ト またはパワーオン リセッ ト中、 つま り nRESET ピンがアサート されている と き以外は、 再度アサート しないで下さい。 プロセッサが実行中に nCPUHALT ピンをアサート しても、 プロセッサは停止しません。

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 3-5ID013111 Non-Confidential

Page 81: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

プロセッサの初期化、 リセッ ト、 クロック

3.2 リセッ ト

プロセッサには次のリセッ ト入力があ り ます。

nRESET この信号はメ インのプロセッサ リセッ トで、 プロセッサロジッ クの大部分を初期化します。

PRESETDBGn この信号は、 プロセッサのデバッグロジッ ク と CoreSight ETM-R4を リセッ ト します。

nSYSPORESET この信号は、 CP14 デバッグロジッ ク と APB デバッグロジッ クを含む、 プロセッサ全体を初期化する リ セッ ト です。 詳細については、 「CP14 レジスタの リ セッ ト 」 (ページ 11-23) を参照して下さい。

nCPUHALT この信号は、 リセッ ト後にプロセッサの命令フェッチを停止させます。

これらの信号はすべてアクティブ LOW で、 プロセッサ内のロジッ クを リセッ ト します。 これらの リセッ ト信号を駆動するロジッ クを設計する場合は注意が必要です。

プロセッサは、 リセッ ト を、 関連するク ロ ッ ク ド メ インと内部的に同期します。

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 3-6ID013111 Non-Confidential

Page 82: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

プロセッサの初期化、 リセッ ト、 クロック

3.3 リセッ トモード

プロセッサのリセッ ト信号を使用して、 設計のさまざまな部分を個別にリセッ トできます。 リセッ ト信号と、 それらの使用可能な組み合わせと用途を、 表 3-1 に示します。

注 nRESET が 1 にセッ ト され、 nSYSPORESET が 0 にセッ ト されている場合の動作は、 アーキテクチャ上予測不能です。

このセクシ ョ ンでは、 次の項目について説明します。

• 「パワーオン リ セッ ト 」

• 「プロセッサリセッ ト 」 (ページ 3-8)

• 「通常の動作」 (ページ 3-8)

• 「ホールト動作」 (ページ 3-8)

3.3.1 パワーオン リセッ ト

システムの電源を 初にオンにする と きは、 パワーオン リ セッ ト またはコールド リセッ ト をプロセッサに適用する必要があ り ます。 パワーオン リ セッ トの場合は、 リセッ ト信号である nRESET および nSYSPORESET の立ち上がりエッジまたは立ち下がりエッジを、 CLKIN に同期させる必要はあ り ません。 nRESET 信号とnSYSPORESET 信号はプロセッサ内部で同期されているため、 これらの信号の同期は必要あ り ません。 パワーオン リセッ トの適用を、 図 3-1 に示します。

図 3-1 パワーオン リセッ ト

正しいリセッ ト動作を保証するために、 リセッ ト信号は 4 CLKIN サイクル以上アサートするこ とをお勧めします。

電源オン時に PRESETDBGn をアサートする必要はあ り ません。

表 3-1 リセッ トモード

リセッ トモード nRESET PRESETDBGn nSYSPORESET nCPUHALT アプリケーシ ョ ン

パワーオン リセッ ト

0 x 0 x 起動時リセッ ト、 フル システム リセッ ト 。 ハード リセッ ト またはコールド リセッ ト 。

プロセッサリセッ ト

0 x 1 x プロセッサのみのリセッ ト 、 ウォ ッチド ッグ リセッ ト 。 ソフ ト リセッ ト またはウォーム リセッ ト 。

ノーマル 1 x 1 1 通常の実行モード

ホールト 1 x 1 0 ホールトモード、 リセッ ト以降にノーマルモードに移行しない場合

デバッグリセッ ト

x 0 x x すべてのデバッグロジッ ク とデバッグAPB インタフェースを リセッ トする

CLKIN

nRESET

nSYSPORESET

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 3-7ID013111 Non-Confidential

Page 83: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

プロセッサの初期化、 リセッ ト、 クロック

3.3.2 プロセッサリセッ ト

プロセッサリセッ ト またはウォーム リセッ トは、 EmbeddedICE-RT ロジッ クを除く、プロセッサの大部分を初期化します。 プロセッサリセッ トは一般に、 ウォ ッチド ッグ リセッ トのよ うに、 ある程度の時間稼動しているシステムのリセッ トに使用されます。

nRESET 信号はプロセッサ内部で同期されるため、 この信号を同期させる必要はあり ません。

3.3.3 通常の動作

通常の動作中は、 プロセッサリセッ ト とパワーオン リセッ トはいずれもアサート されません。 EmbeddedICE-RT が使用されていない場合は、 PRESETDBGn の値を無視できます。

3.3.4 ホールト動作

nCPUHALT がアサート され、 nSYSPORESET と nRESET がアサート解除されている と きは、 プロセッサはリセッ ト状態を完了していますが、 PFU は命令のフェッチを禁止されます。 例えば、 nCPUHALT を使用して、 プロセッサによる TCM へのDMA を可能にできます。 その後で nCPUHALT をアサート解除する と、 PFU がTCM から命令フェッチを開始します。 プロセッサがフェ ッチを開始した後では、 プロセッサのリセッ ト時以外は、 nCPUHALT を再度アサート しないで下さい。

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 3-8ID013111 Non-Confidential

Page 84: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

プロセッサの初期化、 リセッ ト、 クロック

3.4 クロック

プロセッサには、 機能するクロ ッ ク入力が 2 つあ り ます。 プロセッサの外部で、CLKIN と FREECLKIN を互いに接続する必要があ り ます。

これらに加えて、 デバッグ APB バス用の PCLKDBG ク ロ ッ クが存在します。 このクロ ッ クは、 メ インク ロ ッ ク と非同期です。

すべてのクロ ッ クは、 状態を維持したまま無期限に停止するこ とができます。

3 つの追加クロ ッ ク入力 CLKIN2、 DUALCLKIN、 DUALCLKIN2 は、 デュアル冗長コア機能が含まれている場合、 この機能に関係します。 Cortex-R4 マクロセルとデュアル冗長コアを統合する場合は、 マク ロセルの実装者にクロ ッ ク入力の接続方法を問い合わせて下さい。

このセクシ ョ ンでは、 次の項目について説明します。

• 「AXI インタフェースのク ロ ッ ク」

• 「ク ロ ッ クゲート 」

3.4.1 AXI インタフェースのクロック

AXI マスタインタフェース と AXI スレーブインタフェースは、 プロセッサク ロ ッ クの CLKIN に、 よ り低い周波数であっても、 同期している AXI システムに接続する必要があ り ます。 これは、 AXI システムク ロ ッ クのすべての立ち上がりエッジを、CLKIN の立ち上がりエッジに同期させる必要があるこ とを意味します。

AXI マスタインタフェースのクロ ッ ク イネーブル信号 ACLKENM と、 AXI スレーブインタフェースのク ロ ッ ク イネーブル信号 ACLKENS は、 CLKIN の立ち上がりエッジと同時に AXI システムク ロ ッ クの立ち上がりエッジが存在する と き、 毎回必ずアサート されている必要があ り ます。

プロセッサに 400 MH z のク ロ ッ ク (CLKIN) が供給され、 AXI マスタインタフェースに接続された AXI システムに 200 MH z のク ロ ッ ク (ACLKM) が供給されている例を、 図 3-2 に示します。 ACLKENM ク ロ ッ クは、 2 つのクロ ッ クの関係を表しています。

図 3-2 AXI インタフェースのクロック

インタフェースに接続された AXI システムに、 プロセッサと同じ周波数のクロ ッ クを供給する場合は、 対応するク ロ ッ ク イネーブル信号を HIGH に固定する必要があり ます。

3.4.2 クロックゲート

STANDBYWFI 出力を使用する と、 プロセッサがスタンバイモードのと きにクロ ックを TCM にゲートするこ とができます。 これを実行する場合は、 STANDBYWFI がLOW になってから、 4 サイクル以内に TCM ク ロ ッ クが開始するよ うに、 ロジッ クを設計する必要があ り ます。

ACLKM

ACLKENM

CLKIN

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 3-9ID013111 Non-Confidential

Page 85: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

第 4 章 システム制御コプロセッサ

本章では、 システム制御コプロセッサの目的、 構造、 動作、 および使用方法について説明します。 本章は次のセクシ ョ ンから構成されています。

• 「システム制御コプロセッサについて」 (ページ 4-2)

• 「システム制御コプロセッサのレジスタ」 (ページ 4-9)

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 4-1ID013111 Non-Confidential

Page 86: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

システム制御コプロセッサ

4.1 システム制御コプロセッサについて

こ こでは、 システム制御コプロセッサの概要について説明します。 システム制御コプロセッサのレジスタの詳細については、 「システム制御コプロセッサのレジスタ」 (ページ 4-9) を参照して下さい。

システム制御コプロセッサ CP15 の目的は、 プロセッサに実装されている機能のステータス情報を制御および提供するこ とです。 システム制御コプロセッサの主な機能は次のとおりです。

• システム全体の制御と構成

• キャ ッシュの構成と管理

• メモ リ保護ユニッ ト (MPU) の構成と管理

• システムパフォーマンスの監視

システム制御コプロセッサは、 ロジッ クの独立した物理ブロ ッ クに存在するわけではあ り ません。

4.1.1 システム制御コプロセッサの機能グループ

システム制御コプロセッサは、 読み書き可能なレジスタのセッ ト と して見えます。一部のレジスタに対しては、 複数の種類の操作が可能です。 レジスタの機能グループは次のとおりです。

• 「システム制御および構成」 (ページ 4-4)

• 「MPU 制御および構成」 (ページ 4-5)

• 「キャ ッシュ制御および構成」 (ページ 4-5)

• 「TCM 制御および構成」 (ページ 4-6)

• 「システムパフォーマンス モニタ」 (ページ 4-6)

• 「システム検証」 (ページ 4-7)

レジスタによって提供されるシステム制御コプロセッサのすべての機能を、 表 4-1 (ページ 4-3) に示します。 レジスタは機能グループごとに分類されています。

システム制御コプロセッサ内のレジスタ と各レジスタの リセッ ト時の値について、レジスタ順の一覧を、 表 4-2 (ページ 4-9) に示します。

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 4-2ID013111 Non-Confidential

Page 87: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

システム制御コプロセッサ

表 4-1 システム制御コプロセッサのレジスタの機能

機能 レジスタ / 操作 参照先

システム制御および構成

制御 「c1、 システム制御レジスタ」 (ページ 4-35)

補助制御 「補助制御レジスタ」 (ページ 4-38)

コプロセッサアクセス制御 「c1、 コプロセッサアクセス レジスタ」 (ページ 4-44)

メ イン IDa 「c0、 メ イン ID レジスタ」 (ページ 4-14)

製品機能 ID 「プロセッサ機能レジスタ」 (ページ 4-18)

「c0、 デバッグ機能レジスタ 0」 (ページ 4-20)

「c0、 補助機能レジスタ 0」 (ページ 4-21)

「メモ リモデル機能レジスタ」 (ページ 4-21)

「命令セッ ト属性レジスタ」 (ページ 4-26)

マルチプロセッサ ID 「c0、 マルチプロセッサ ID レジスタ」 (ページ 4-18)

スレーブポート制御 「c11、 スレーブポート制御レジスタ」 (ページ 4-59)

コンテキス ト ID 「c13、 コンテキス ト ID レジスタ」 (ページ 4-60)

FCSE PID 「c13、 FCSE PID レジスタ」 (ページ 4-60)

ソフ ト ウェアの互換性 スレッ ドおよびプロセス ID 「c13、 スレッ ドおよびプロセス ID レジスタ」 (ページ 4-61)

MPU 制御および構成 データフォールト ステータス 「c5、 データフォールト ステータスレジスタ」 (ページ 4-45)

補助フォールト ステータス 「c5、 補助フォールト ステータスレジスタ」 (ページ 4-47)

命令フォールト ステータス 「c5、 命令フォールト ステータスレジスタ」 (ページ 4-46)

命令フォールトアドレス 「c6、 命令フォールト アドレスレジスタ」 (ページ 4-49)

データフォールト アドレス 「c6、 データフォールト アドレスレジスタ」 (ページ 4-48)

MPU タイプ 「c0、 MPU タイプレジスタ」 (ページ 4-17)

領域ベースアドレス 「c6、 MPU 領域ベースアドレス レジスタ」 (ページ 4-50)

領域サイズおよびイネーブル 「c6、 MPU 領域サイズおよびイネーブルレジスタ」 (ページ 4-50)

領域アクセス制御 「c6、 MPU 領域アクセス制御レジスタ」 (ページ 4-51)

メモリ領域番号 「c6、 MPU メモ リ領域番号レジスタ」 (ページ 4-53)

キャ ッシュ制御および構成

キャッシュタイプ 「c0、 キャ ッシュタイプ レジスタ」 (ページ 4-15)

カレン ト キャッシュサイズ識別

「c0、 カレン ト キャ ッシュサイズ識別レジスタ」 (ページ 4-32)

カレン ト キャッシュレベル 「c0、 カレン ト キャ ッシュレベル ID レジスタ」 (ページ 4-34)

キャッシュサイズ選択 「c0、 キャ ッシュサイズ選択レジスタ」 (ページ 4-35)

c7、 キャッシュ操作 「キャ ッシュ操作」 (ページ 4-54)

c15、 データキャッシュ全体の無効化

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 4-3ID013111 Non-Confidential

Page 88: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

システム制御コプロセッサ

4.1.2 システム制御および構成

システム制御および構成レジスタは、 次のものを総合的に管理します。

• メモ リの機能

• 割り込み動作

• 例外処理

• プログラムフロー予測

• VFP (CP10 ~ 11) を含む、 CP0 ~ CP13 に対するコプロセッサアクセス権

システム制御および構成レジスタは、 プロセッサ ID と構成済みオプシ ョ ンに関する情報も提供します。

システム制御および構成レジスタは、 18 個の読み出し専用レジスタ と、 7 つの読み出し / 書き込みレジスタ とで構成されます。 この機能グループ内のレジスタ配置を、図 4-1 に示します。

図 4-1 システム制御および構成レジスタ

一部の機能は、 リセッ ト時の外部信号の設定方法によって異なり ます。

システム制御および構成レジスタには、 次の 3 つの機能があ り ます。

• 特定の機能に関するフラグまたは可能のセッ ト

• システム機能を示す数値のセッ ト

• メモ リ内のプロセスを示すアドレスのセッ ト

TCM の制御および

構成

TCM ステータス 「c0、 TCM タイプレジスタ」 (ページ 4-16)

領域 「c9、 BTCM 領域レジスタ」 (ページ 4-57)

「c9、 TCM 選択レジスタ」 (ページ 4-59)

システムパフォーマンスの監視

パフォーマンス監視 第 6 章 イベン ト とパフォーマンスモニタ

検証 システム検証 「検証レジスタ」 (ページ 4-62)

a. 以前の設計では ID コードレジスタ と呼ばれていました。 デバイス ID コードを返します。

表 4-1 システム制御コプロセッサのレジスタの機能 (続き)

機能 レジスタ / 操作 参照先

CRn

c110c00

c13 0c0ID

0

Opcode_2CRmOpcode_1c0 ID0c00

00

{0, 1} 0 1ID

0 30 5

c15

23

{4 7}{0 5}c2

20c11 0 c0

/

FCSE PID1

c15 00 c0c2 0

1

212

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 4-4ID013111 Non-Confidential

Page 89: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

システム制御コプロセッサ

4.1.3 MPU 制御および構成

MPU 制御および構成レジスタの動作には、 次の機能があ り ます。

• プログラムから メモ リへのアクセスを制御する。

• メモ リ領域を次のいずれかと して指定する。

— ノーマル、 キャ ッシュ不可

— ノーマル、 キャ ッシュ可能

— デバイス

— ス ト ロング リオーダ

• MPU フォールト と外部アボート を検出する。

MPU 制御および構成レジスタは、 1 つの読み出し専用レジスタ と、 11 個の読み出し/ 書き込みレジスタ とで構成されます。 この機能グループ内のレジスタ配置を、図 4-2 に示します。

図 4-2 MPU 制御および構成レジスタ

MPU 制御および構成レジスタには次の機能があ り ます。

• MPU の要素を記述する数値、 または現在の状態を示す数値のセッ ト

• MPU 上で機能する操作のセッ ト

4.1.4 キャッシュ制御および構成

キャ ッシュ制御および構成レジスタには、 次の機能があ り ます。

• 命令キャ ッシュ とデータキャ ッシュのサイズとアーキテクチャに関する情報を提供する。

• キャ ッシュのク リーニングと無効化、 バッファのドレインとフラ ッシュ、 アドレス変換を含む、 キャ ッシュ保守操作を制御する。

• デバッグ時、 または割り込み可能なキャ ッシュ操作時のキャ ッシュ動作を変更する。

キャ ッシュ制御および構成レジスタは、 3 つの読み出し専用レジスタ、 1 つの読み出し / 書き込みレジスタ、 およびいくつかの書き込み専用レジスタで構成されます。 この機能グループ内のレジスタ配置を、 図 4-3 (ページ 4-6) に示します。

4 MPUc00

Opcode_2CRmCRn Opcode_1

10

0

c5

10

c00 c0

c1

c6 0 c0

0c1240c2

2

/

0c15 c30

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 4-5ID013111 Non-Confidential

Page 90: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

システム制御コプロセッサ

図 4-3 キャッシュ制御および構成レジスタ

キャ ッシュ制御および構成レジスタには、 次の機能があ り ます。

• キャ ッシュの要素を記述する数値のセッ ト

• 特定のキャ ッシュ機能を可能にするビッ トのセッ ト

• キャ ッシュ上で機能する操作のセッ ト

4.1.5 TCM 制御および構成

TCM 制御および構成レジスタには、 次の機能があ り ます。

• プロセッサに TCM 領域のステータスを通知する。

• TCM 領域を定義する。

TCM 制御および構成レジスタは、 2 つの読み出し専用レジスタ と、 2 つの読み出し / 書き込みレジスタ とで構成されます。 レジスタの配置を、 図 4-4 に示します。

図 4-4 TCM 制御および構成レジスタ

TCM 制御および構成レジスタには、 次の 3 つの機能があ り ます。

• TCM の要素を記述する数値のセッ ト

• 特定の TCM 機能を可能にするビッ トのセッ ト

• TCM に格納されているデータのメモ リ位置を定義するアドレスのセッ ト

4.1.6 システムパフォーマンス モニタ

パフォーマンスモニタ レジスタには、 次の機能があ り ます。

• 監視の動作を制御する。

• イベン ト をカウン トする。

システムパフォーマンス モニタは、 12 個の読み出し / 書き込みレジスタで構成されます。 この機能グループ内のレジスタ配置を、 図 4-5 (ページ 4-7) に示します。

Opcode_2CRmOpcode_1

1c0 0 c0

CRn

c7c15 0

00 c5

/

0c01102 c0

CRm Opcode_2

ATCM1c9 0c0 20

0c0

BTCMTCM

CRn CRmOpcode_1 Opcode_2

TCM0

/

c1

c2

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 4-6ID013111 Non-Confidential

Page 91: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

システム制御コプロセッサ

図 4-5 システムパフォーマンス モニタレジスタ

システムパフォーマンスの監視では、 キャ ッシュ ミ ス、 パイプラインのス トール、その他の関連機能などのシステムイベン ト をカウン ト して、 システム開発者がシステムのパフォーマンスを把握できるよ うにします。 イベン ト数が特定の値に達したと きに、 割り込みを発生させるこ とができます。

パフォーマンスカウンタのプログラマモデルの詳細については、 『ARM アーキテクチャ リ ファレンスマニュアル』 を参照して下さい。

レジスタの詳細については、 第 6 章 イベン ト とパフォーマンスモニタを参照して下さい。

4.1.7 システム検証

システム検証レジスタは、 システムパフォーマンス モニタレジスタの用途を拡張し、いくつかの検証機能を提供します。 このレジスタは他の目的に使用しないで下さい。システム検証レジスタは、 次の動作をスケジュールおよびク リ アします。

• リ セッ ト

• 割り込み

• 高速割り込み

• 外部デバッグ要求

システム検証レジスタは、 9 つの読み出し / 書き込みレジスタ と、 1 つの書き込み専用レジスタ とで構成されます。 レジスタの配置を、 図 4-6 に示します。

図 4-6 システム検証レジスタ

Opcode_2CRmCRn Opcode_1

c9 00 c12123450c1312

0

012

c140

/

0c15Opcode_2Opcode_1 CRmCRn

0

1nVAL IRQnVAL FIQnVALnVALnVAL IRQnVAL FIQ

nVALnVAL

/

c1

234567

c14

0

0

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 4-7ID013111 Non-Confidential

Page 92: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

システム制御コプロセッサ

キャ ッシュサイズは、 設計に実装されているキャ ッシュ RAM でサポート されるサイズにのみ変更できます。

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 4-8ID013111 Non-Confidential

Page 93: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

システム制御コプロセッサ

4.2 システム制御コプロセッサのレジスタ

こ こでは、 システム制御コプロセッサのすべてのレジスタについて説明します。CRn、 Opcode_1、 CRm、 Opcode_2 のレジスタ順に、 レジスタ名とその説明の概要が記載されています。

システム制御コプロセッサの使用方法と、 CP15 レジスタへの一般的なアクセス方法については、 『ARM アーキテクチャ リ ファレンスマニュアル』 を参照して下さい。

4.2.1 レジスタの割り当て

システム制御コプロセッサのレジスタについて、 アドレス割り当てと リセッ ト時の値の概要を、 表 4-2 に示します。 記号の意味は次のとおりです。

• CRn は、 CP15 内でのレジスタ番号です。

• Op1 は、 レジスタの Opcode_1 の値です。

• CRm は、 操作対象のレジスタです。

• Op2 は、 レジスタの Opcode_2 の値です。

表 4-2 CP15 レジスタと操作の概要

CRn Op1 CRm Op2 レジスタまたは操作 タイプ リセッ ト時の値 ページ

c0 0 c0 {0, 3, 6-7} メ イン ID 読み出し専用 0x41xFC14xa (ページ 4-14)

1 キャッシュタイプ 読み出し専用 0x8003C003 (ページ 4-15)

2 TCM タイプ 読み出し専用 0x00010001 (ページ 4-16)

4 MPU タイプ 読み出し専用 0x00000000b (ページ 4-17)

5 マルチプロセッサ ID 読み出し専用 0x00000000 (ページ 4-18)

c1 0 プロセッサ機能 0 読み出し専用 0x00000131 (ページ 4-18)

1 プロセッサ機能 1 読み出し専用 0x00000001 (ページ 4-19)

2 デバッグ機能 0 読み出し専用 0x00010400 (ページ 4-20)

3 補助機能 0 読み出し専用 0x00000000 (ページ 4-21)

4 メモリモデル機能 0 読み出し専用 0x00210030 (ページ 4-21)

5 メモリモデル機能 1 読み出し専用 0x00000000 (ページ 4-22)

6 メモリモデル機能 2 読み出し専用 0x01200000 (ページ 4-24)

7 メモリモデル機能 3 読み出し専用 0x00000011 (ページ 4-25)

c2 0 命令セッ ト属性 0 読み出し専用 0x01101111 (ページ 4-26)

c0 0 c2 1 命令セッ ト属性 1 読み出し専用 0x13112111 (ページ 4-27)

2 命令セッ ト属性 2 読み出し専用 0x21232131 (ページ 4-28)

3 命令セッ ト属性 3 読み出し専用 0x01112131 (ページ 4-30)

4 命令セッ ト属性 4 読み出し専用 0x00010142 (ページ 4-31)

5 命令セッ ト属性 5 読み出し専用 0x00000000 (ページ 4-32)

6-7 予約、 読み出し値 0 (RAZ) 読み出し専用 0x00000000 (ページ 4-32)

c3 ~ c7 0-7 予約、 RAZ 読み出し専用 0x00000000 -

c8 ~ c15 0-7 未定義 - - -

1 c0 0 カレン ト キャッシュ

サイズ ID 読み出し専用 -c d (ページ 4-32)

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 4-9ID013111 Non-Confidential

Page 94: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

システム制御コプロセッサ

1 カレン ト キャッシュ

レベル ID読み出し専用 0x09000003c (ページ 4-34)

2-7 未定義 - - -

c1 ~ c15 0-7

2 c0 0 キャッシュサイズ選択 読み出し / 書き込み 予測不能 (ページ 4-35)

c1 0 c0 0 システム制御 読み出し / 書き込み -d (ページ 4-35)

1 補助制御 読み出し / 書き込み -d (ページ 4-38)

2 コプロセッサアクセス 読み出し / 書き込み 0x00000000 (ページ 4-44)

3-7 未定義 - - -

c1 ~ c15 0-7

c2 ~c4

0 c0 ~ c15 0-7

c5 0 c0 0 データフォールト ステータス

読み出し / 書き込み 予測不能 (ページ 4-45)

1 命令フォールト ステータス 読み出し / 書き込み 予測不能 (ページ 4-46)

2-7 未定義 - - -

c1 0 補助データフォールト ステータス

読み出し / 書き込み 予測不能 (ページ 4-47)

c5 0 c1 1 補助命令フォールトステータス

読み出し / 書き込み 予測不能 (ページ 4-47)

2-7 未定義 - - -

c2 ~ c15 0-7

c6 0 c0 0 データフォールト アドレス

読み出し / 書き込み 予測不能 (ページ 4-48)

1 未定義 - - -

2 命令フォールト アドレス 読み出し / 書き込み 予測不能 (ページ 4-49)

3-7 未定義 - - -

c1 0 MPU 領域ベースアドレス 読み出し / 書き込み 0x00000000 (ページ 4-50)

1 未定義 - - -

2 MPU 領域サイズおよびイネーブル

読み出し / 書き込み 0x00000000 (ページ 4-50)

3 未定義 - - -

4 MPU 領域アクセス制御 読み出し / 書き込み 0x00000000 (ページ 4-51)

5-7 未定義 - - -

c2 0 MPU メモ リ領域番号 読み出し / 書き込み 0x00000000 (ページ 4-53)

1-7 未定義 - - -

c3 ~ c15 1-7

c7 0 c0 0-3 未定義 - - -

4 NOP、 以前は割り込み待ち 書き込み専用 - (ページ 4-54)

5-7 未定義 - - -

表 4-2 CP15 レジスタと操作の概要 (続き)

CRn Op1 CRm Op2 レジスタまたは操作 タイプ リセッ ト時の値 ページ

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 4-10ID013111 Non-Confidential

Page 95: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

システム制御コプロセッサ

c1 ~ c4 0-7

c5 0 命令キャッシュ全体の無効化

書き込み専用 - (ページ 4-55)

c7 0 c5 1 統一時点までの、 アドレスによる命令キャッシュラインの無効化

書き込み専用 - (ページ 4-55)

2-3 未定義 - - -

4 プリ フェッチバッファのフラ ッシュ

書き込み専用 - (ページ 4-55)

5 未定義 - - -

6 分岐予測器アレイ全体の無効化

書き込み専用 - (ページ 4-55)

7 分岐予測器アレイからのアドレスの無効化

書き込み専用 - (ページ 4-55)

c6 0 未定義 - - -

1 物理アドレスによるデータ キャッシュラインの無効化

書き込み専用 - (ページ 4-55)

2 セッ ト / ウェイによるデータ キャッシュラインの無

効化

書き込み専用 - (ページ 4-55)

3-7 未定義 - - -

c7 ~ c9 0-7

c10 0

1 物理アドレスによるデータ キャッシュラインのク リーニング

書き込み専用 - (ページ 4-55)

2 セッ ト / ウェイによるデー

タ キャッシュラインのク

リーニング

書き込み専用 - (ページ 4-55)

3 未定義 - - -

4 データ同期バリア 書き込み専用 - (ページ 4-57)

5 データ メモリ バリア 書き込み専用 - (ページ 4-57)

6-7 未定義 - - -

c11 0

表 4-2 CP15 レジスタと操作の概要 (続き)

CRn Op1 CRm Op2 レジスタまたは操作 タイプ リセッ ト時の値 ページ

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 4-11ID013111 Non-Confidential

Page 96: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

システム制御コプロセッサ

c7 0 c11 1 統一時点までの物理アドレスによるデータ キャッ

シュラインのク リーニング

書き込み専用 - (ページ 4-55)

2-7 未定義 - - -

c12 ~c13

0-7

c14 0

1 統一時点までの物理アドレスによるデータ キャッ

シュラインのク リーニングと無効化

書き込み専用 - (ページ 4-55)

c14 2 セッ ト / ウェイによるデー

タ キャッシュラインのクリーニングと無効化

書き込み専用 - (ページ 4-55)

3-7 未定義 - - -

c15 0-7

c8 0 c0 ~ c15 0-7 未定義 - - -

c9 0 c0 0-7 未定義 - - -

c1 0 BTCM 領域 読み出し / 書き込み -d (ページ 4-57)

1 ATCM 領域 読み出し / 書き込み -d (ページ 4-57)

2-7 未定義 - - -

c2 0 TCM 選択 読み出し / 書き込み 0x00000000 (ページ 4-59)

1-7 未定義 - - -

c3 ~ c11 0-7

c12 0 パフォーマンスモニタ制御 読み出し / 書き込み 0x41141800 (ページ 6-7)

1 カウン ト イネーブル セッ ト

読み出し / 書き込み 予測不能 (ページ 6-8)

2 カウン ト イネーブル ク リ ア

読み出し / 書き込み 予測不能 (ページ 6-9)

3 オーバフローフラグ ステータス

読み出し / 書き込み 予測不能 (ページ 6-10)

4 ソフ ト ウェアインク リ メン ト

書き込み専用 - (ページ 6-11)

c9 0 c12 5 パフォーマンスカウンタ選択

読み出し / 書き込み 予測不能 (ページ 6-12)

6-7 未定義 - - -

c13 0 サイクルカウン ト 読み出し / 書き込み 0x00000000 (ページ 6-13)

1 イベン ト選択 読み出し / 書き込み 予測不能 (ページ 6-13)

2 パフォマンスモニタ カウン ト

読み出し / 書き込み 0x00000000 (ページ 6-15)

3-7 未定義 - - -

表 4-2 CP15 レジスタと操作の概要 (続き)

CRn Op1 CRm Op2 レジスタまたは操作 タイプ リセッ ト時の値 ページ

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 4-12ID013111 Non-Confidential

Page 97: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

システム制御コプロセッサ

c14 0 ユーザイネーブル 読み出し / 書き込み 0x00000000 (ページ 6-15)

1 割り込みイネーブルセッ ト 読み出し / 書き込み 予測不能 (ページ 6-16)

c14 2 割り込みイネーブルク リ ア 読み出し / 書き込み 予測不能 (ページ 6-17)

3-7 未定義 - - -

c15 0-7

c10 0 c0 ~ c15 0-7 未定義 - - -

c11 0 c0 0 スレーブポート制御 読み出し / 書き込み 0x00000000 (ページ 4-59)

c0 1-7 未定義 - - -

c1 ~ c15 0-7

c12 0 c0 ~ c15 0-7

c13 0 c0 0 FCSE PID RAZ、 書き込み無視 0x00000000 (ページ 4-60)

1 コンテキス ト ID 読み出し / 書き込み 0x00000000 (ページ 4-60)

2 ユーザ読み出し / 書き込み

スレッ ドおよびプロセスID

読み出し / 書き込み 0x00000000 (ページ 4-61)

3 ユーザ読み出し専用スレッドおよびプロセス ID

読み出し / 書き込み 0x00000000 (ページ 4-61)

4 特権専用スレッ ドおよびプロセス ID

読み出し / 書き込み 0x00000000 (ページ 4-61)

5-7 未定義 - - -

c13 0 c1 ~ c15 0-7 未定義 - - -

c14 0 c0 ~ c15 0-7

c15 0 c0 0 2 次補助制御 読み出し / 書き込み -d (ページ 4-41)

1-7 未定義 - - -

c1 0 nVAL IRQ イネーブル

セッ ト

読み出し / 書き込み 予測不能 (ページ 4-62)

1 nVAL FIQ イネーブルセッ ト

読み出し / 書き込み 予測不能 (ページ 4-63)

2 nVAL リセッ ト イネーブルセッ ト

読み出し / 書き込み 予測不能 (ページ 4-64)

3 nVAL デバッグ要求

イネーブルセッ ト

読み出し / 書き込み 予測不能 (ページ 4-65)

4 nVAL IRQ イネーブル

ク リア

読み出し / 書き込み 予測不能 (ページ 4-65)

c1 5 nVAL FIQ イネーブル

ク リア

読み出し / 書き込み 予測不能 (ページ 4-66)

6 nVAL リセッ ト イネーブルク リア

読み出し / 書き込み 予測不能 (ページ 4-67)

7 nVAL デバッグ要求イネーブルク リ ア

読み出し / 書き込み 予測不能 (ページ 4-68)

c2 0 ビルドオプシ ョ ン 1 読み出し専用 -d (ページ 4-72)

1 ビルドオプシ ョ ン 2 読み出し専用 -d (ページ 4-73)

表 4-2 CP15 レジスタと操作の概要 (続き)

CRn Op1 CRm Op2 レジスタまたは操作 タイプ リセッ ト時の値 ページ

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 4-13ID013111 Non-Confidential

Page 98: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

システム制御コプロセッサ

4.2.2 c0、 メ イン ID レジスタ

メ イン ID レジスタは、 プロセッサに関する情報を含むデバイス ID コードを返します。

メ イン ID レジスタには次の特徴があ り ます。

• 読み出し専用レジスタ

• 特権モードでのみアクセス可能

レジスタ内のビッ ト配置を、 図 4-7 に示します。

図 4-7 メイン ID レジスタの形式

2-7 未定義 - - -

c3 0 訂正可能フォールト位置 読み出し / 書き込み 予測不能 (ページ 4-70)

1-7 未定義 - - -

c4 0-7

c5 0 すべてのデータキャッシュの無効化

書き込み専用 - (ページ 4-55)

1-7 未定義 - - -

c6 ~ c13 0-7

c15 0 c14 0 キャッシュサイズ オーバライ ド

書き込み専用 - (ページ 4-69)

1-7 未定義 - - -

c15 0-7

a. メ イン ID レジスタのビッ ト [23:20,3:0] の値は、 製品のリ ビジ ョ ンによって異なり ます。 詳細については、 レジスタの説

明を参照して下さい。b. リ セッ ト時の値は、 MPU 領域の数によって異なり ます。

c. リ セッ ト時の値は、 実装されているキャ ッシュサイズによって異なり ます。d. 詳細については、 レジスタの説明を参照して下さい。

表 4-2 CP15 レジスタと操作の概要 (続き)

CRn Op1 CRm Op2 レジスタまたは操作 タイプ リセッ ト時の値 ページ

31 23 20 19 16 15 4 3 024

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 4-14ID013111 Non-Confidential

Page 99: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

システム制御コプロセッサ

メ イン ID レジスタの内容は、 実装によって異なり ます。 メ イン ID レジスタの機能とビッ ト値の対応を、 表 4-3 に示します。

注 MRC 命令が CRn = c0、 Opcode_1 = 0、 CRm = c0、 および未実装または予約済みの ID レジスタに対応する Opcode_2 値を使用して実行された場合、 システム制御コプロセッサはメ イン ID レジスタの値を返します。

メ イン ID レジスタにアクセスするには、 次の命令を使用して CP15 を読み出します。

MRC p15, 0, <Rd>, c0, c0, 0 ; Read Main ID Register

プロセッサ機能の詳細については、 「プロセッサ機能レジスタ」 (ページ 4-18) を参照して下さい。

4.2.3 c0、 キャ ッシュタイプ レジスタ

キャ ッシュタイプ レジスタは、 一定のアドレス範囲を無効化するための、 命令とデータの 小ライン長をバイ ト単位で示します。

キャ ッシュタイプ レジスタには次の特徴があ り ます。

• 読み出し専用レジスタ

• 特権モードでのみアクセス可能

キャ ッシュタイプ レジスタの内容は、 実装によって異なり ます。 レジスタ内のビット配置を、 図 4-8 に示します。

図 4-8 キャッシュタイプ レジスタの形式

表 4-3 メイン ID レジスタのビッ トの機能

ビッ ト フ ィールド 機能

[31:24] 実装者 実装者を示します。

0x41 - ARM Limited

[23:20] バリアン ト プロセッサのメジャーリ ビジ ョ ンを示します。 これは、 製品リ ビジ ョ ンステータスの rnpn 記述の rn 部分に含まれる メジャーリ ビジ ョ ン番号 n です。 このフ ィールド値の詳細については、 「製品のリ ビジ ョ ン情報」 (ページ 1-24)を参照して下さい。

[19:16] アーキテクチャ アーキテクチャのバージ ョ ンを示します。

0xF - 機能レジスタを参照して下さい。

[15:4] 主要部品番号 プロセッサの部品番号を示します。

0xC14 - Cortex-R4

[3:0] リ ビジ ョ ン プロセッサのマイナーリ ビジ ョ ンを示します。 これは、 製品リ ビジ ョ ンステータスの rnpn 記述の pn 部分に含まれるマイナーリ ビジ ョ ン番号 n です。 こ

のフ ィールド値の詳細については、 「製品のリ ビジ ョ ン情報」 (ページ 1-24)を参照して下さい。

1CWG ERG IMinLine

31 0

DMinLine 1

3413141516192028 27 24 23

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 4-15ID013111 Non-Confidential

Page 100: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

システム制御コプロセッサ

キャ ッシュタイプ レジスタの機能とビッ ト値の対応を、 表 4-4 に示します。

キャ ッシュタイプ レジスタにアクセスするには、 次の命令を使用して CP15 を読み出します。

MRC p15, 0, <Rd>, c0, c0, 1 ; Returns cache details

4.2.4 c0、 TCM タイプレジスタ

TCM タイプレジスタは、 システムの ATCM と BTCM の数をプロセッサに通知します。

TCM タイプレジスタには次の特徴があ り ます。

• 読み出し専用レジスタ

• 特権モードでのみアクセス可能

レジスタ内のビッ ト配置を、 図 4-9 に示します。

図 4-9 TCM タイプレジスタの形式

TCM タイプレジスタの機能とビッ ト値との対応を、 表 4-5 に示します。

表 4-4 キャッシュタイプ レジスタのビッ トの機能

ビッ ト フ ィールド 機能

[31:28] - 常に b1000

[27:24] CWG キャ ッシュ ラ イ トバッ クの粒度

0x0 = 情報は提供されません。 「c0、 カレン ト キャ ッシュサイズ識別レジスタ」 (ページ 4-32) で 大キャ ッシュライン サイズを参照して下さい。

[23:20] ERG 排他予約の粒度

0x0 = 情報は提供されません。

[19:16] DMinLine プロセッサによって制御されるデータキャ ッシュおよび統一キャッシュの、小キャ ッシュラインに含まれるワード数の log2 を示します。

0x3 = レベル 1 データ キャ ッシュラインは 8 ワードです。

[15:14] - 常に 0x3

[13: 4] - 常に 0x000

[3: 0] IMinLine プロセッサによって制御される命令キャッシュの、 小キャ ッシュラインに含まれるワード数の log2 を示します。

0x3 = レベル 1 命令キャッシュラインは 8 ワードです。

0

31 30 29 28 19 18 16 15 3 2 0

0 0 BTCM ATCM

表 4-5 TCM タイプレジスタのビッ トの機能

ビッ ト フ ィールド 機能

[31:29] - 常に 0

[28:19] 予約 SBZ

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 4-16ID013111 Non-Confidential

Page 101: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

システム制御コプロセッサ

TCM タイプレジスタにアクセスするには、 次の命令を使用して CP15 を読み出します。

MRC p15, 0, <Rd>, c0, c0, 2 ; Returns TCM type register

注 • ARM アーキテクチャで定義されているよ うに、 TCM タイプレジスタの ATCM

および BTCM フ ィールドは、 ITCM および DTCM フ ィールド と同じスペースを占有します。 これらのフ ィールド、 および対応する TCM インタフェースは、アーキテクチャで定義されているものと同等と見なすこ とができます。

• ARM アーキテクチャでは、 ITCM のみを命令とデータの両側からアクセス可能にする必要があ り ます。 Cortex-R4 プロセッサでは、 ATCM と BTCM の両方が、命令とデータの両側からアクセス可能です。

4.2.5 c0、 MPU タイプレジスタ

MPU タイプレジスタは、 プロセッサに実装されている命令およびデータのメモ リ領域の数を示す値を保持します。

MPU タイプレジスタには次の特徴があ り ます。

• 読み出し専用レジスタ

• 特権モードでのみアクセス可能

レジスタ内のビッ ト配置を、 図 4-10 に示します。

図 4-10 MPU タイプレジスタの形式

MPU タイプレジスタの機能とビッ ト値との対応を、 表 4-6 に示します。

MPU タイプレジスタにアクセスするには、 次の命令を使用して CP15 を読み出します。

MRC p15, 0, <Rd>, c0, c0, 4 ; Returns MPU details

[18:16] BTCM 実装されている BTCM の数を示します。 プロセッサには BTCM が 1 つしか内

蔵されていないため、 常に b001 に設定されています。

[15:3] 予約 SBZ

[2:0] ATCM 実装されている ATCM の数を示します。 常に b001 に設定されています。 プロセッサには、 ATCM が 1 つしか内蔵されていません。

表 4-5 TCM タイプレジスタのビッ トの機能 (続き)

ビッ ト フ ィールド 機能

S

31 16 8 7 1 0

DRegion

表 4-6 MPU タイプレジスタのビッ トの機能

ビッ ト フ ィールド 機能

[31:16] 予約 SBZ

[15:8] DRegion 統一 MPU 領域の数を示します。 0、 8、 または 12 個のデータ MPU 領域に設定します。

[7:1] 予約 SBZ

[0] S プロセッサ内の MPU 領域のタイプ (統一または分離) を示します。

常に 0 に設定します。 プロセッサには統一メモ リ領域が内蔵されています。

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 4-17ID013111 Non-Confidential

Page 102: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

システム制御コプロセッサ

4.2.6 c0、 マルチプロセッサ ID レジスタ

マルチプロセッサ ID レジスタを使用して、 マルチプロセッサシステム内のコアを認識して、 特徴付けるこ とができます。

マルチプロセッサ ID レジスタには次の特徴があ り ます。

• 読み出し専用レジスタ

• 特権モードでのみアクセス可能

レジスタのビッ ト配置を、 図 4-11 に示します。

図 4-11 マルチプロセッサ ID レジスタの形式

本プロセッサはユニプロセッサシステム用なので、 このレジスタは読み出し値 0 です。

マルチプロセッサ ID レジスタにアクセスするには、 次の命令を使用して CP15 を読み出します。

MRC p15, 0, <Rd>, c0, c0, 5 ; Returns Multiprocessor ID details

4.2.7 プロセッサ機能レジスタ

プロセッサ機能レジスタには、 PFR0 と PFR1 の 2 つがあ り ます。 こ こでは、 次の トピッ クについて説明します。

• 「c0、 プロセッサ機能レジスタ 0、 PFR0」

• 「c0、 プロセッサ機能レジスタ 1、 PFR1」 (ページ 4-19)

c0、 プロセッサ機能レジスタ 0、 PFR0

プロセッサ機能レジスタ 0 は、 プロセッサの実行状態サポート とプログラマモデルに関する情報を提供します。

プロセッサ機能レジスタ 0 には次の特徴があ り ます。

• 読み出し専用レジスタ

• 特権モードでのみアクセス可能

プロセッサ機能レジスタ 0 のビッ ト配置を、 図 4-12 に示します。

図 4-12 プロセッサ機能レジスタ 0 の形式

2

31 16 8 7 0

01

24 23

State3

31 16 15 8 7 3 0

State2 State1 State0

41112

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 4-18ID013111 Non-Confidential

Page 103: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

システム制御コプロセッサ

プロセッサ機能レジスタ 0 の機能とビッ ト値との対応を、 表 4-7 に示します。

プロセッサ機能レジスタ 0 にアクセスするには、 次の命令を使用して CP15 を読み出します。

MRC p15, 0, <Rd>, c0, c1, 0 ; Read Processor Feature Register 0

c0、 プロセッサ機能レジスタ 1、 PFR1

プロセッサ機能レジスタ 1 は、 プロセッサの実行状態サポート とプログラマモデルに関する情報を提供します。

プロセッサ機能レジスタ 1 には次の特徴があ り ます。

• 読み出し専用レジスタ

• 特権モードでのみアクセス可能

プロセッサ機能レジスタ 1 のビッ ト配置を、 図 4-13 に示します。

図 4-13 プロセッサ機能レジスタ 1 の形式

プロセッサ機能レジスタ 1 の機能とビッ ト値との対応を、 表 4-8 に示します。

表 4-7 プロセッサ機能レジスタ 0 のビッ トの機能

ビッ ト フ ィールド 機能

[31:16] 予約 SBZ

[15:12] State3 Thumb 実行環境 (ThumbEE) のサポート を示します。

0x0、 未サポート

[11:8] State2 ハードウェアまたはソフ ト ウェアでの実行環境アクセラレーシ ョ ンのサポート を示します。

0x1、 プロセッサはソフ ト ウェアでの実行環境アクセラレーシ ョ ンをサポートします。

[7:4] State1 プロセッサがサポートする Thumb エンコードのタイプを示します。

0x3、 プロセッサは、 すべての Thumb 命令による Thumb エンコードをサポー

ト します。

[3:0] State0 ARM 命令セッ トのサポート を示します。

0x1、 プロセッサは ARM 命令をサポート します。

31 12 11 8 7 4 3 0

ARMv4

表 4-8 プロセッサ機能レジスタ 1 のビッ トの機能

ビッ ト フ ィールド 機能

[31:12] 予約 SBZ

[11:8] マイクロコン ト ローラ プログラマモデル

マイクロコン ト ローラ プログラマモデルのサポート を示します。

0x0、 未サポート

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 4-19ID013111 Non-Confidential

Page 104: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

システム制御コプロセッサ

プロセッサ機能レジスタ 1 にアクセスするには、 次の命令を使用して CP15 を読み出します。

MRC p15, 0, <Rd>, c0, c1, 1 ; Read Processor Feature Register 1

4.2.8 c0、 デバッグ機能レジスタ 0

デバッグ機能レジスタ 0 は、 プロセッサのデバッグシステムに関する情報を提供します。

デバッグ機能レジスタ 0 には次の特徴があ り ます。

• 読み出し専用レジスタ

• 特権モードでのみアクセス可能

デバッグ機能レジスタ 0 のビッ ト配置を、 図 4-14 に示します。

図 4-14 デバッグ機能レジスタ 0 の形式

デバッグ機能レジスタ 0 の機能とビッ ト値との対応を、 表 4-9 に示します。

[7:4] セキュ リティ拡張機能 セキュ リティ拡張機能アーキテクチャのサポート を示します。

0x0、 未サポート

[3:0] ARMv4 プログラマモデル ARMv4 プログラマモデルのサポート を示します。

0x1、 プロセッサは ARMv4 モデルをサポート します。

表 4-8 プロセッサ機能レジスタ 1 のビッ トの機能 (続き)

ビッ ト フ ィールド 機能

--

--

-

31 24 23 20 19 16 15 12 11 8 7 4 3 0

表 4-9 デバッグ機能レジスタ 0 のビッ トの機能

ビッ ト フ ィールド 機能

[31:24] 予約 SBZ

[23:20] マイクロコン ト ローラデバッグ モデル - メモリマップ

メモ リマップによるマイ クロコン ト ローラデバッグ モデルのサポート を示します。

0x0、 未サポート

[19:16] ト レースデバッグ モデル - メモリマップ

メモ リマップによる ト レースデバッグ モデルのサポート を示します。

0x1、 ト レースがサポート されており、 メモ リマップによ りアクセスされます。

[15:12] ト レースデバッグ モデル - コプロセッサ

コプロセッサによる ト レースデバッグ モデルのサポート を示します。

0x0、 未サポート

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 4-20ID013111 Non-Confidential

Page 105: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

システム制御コプロセッサ

デバッグ機能レジスタ 0 にアクセスするには、 次の命令を使用して CP15 を読み出します。

MRC p15, 0, <Rd>, c0, c1, 2 ; Read Debug Feature Register 0

4.2.9 c0、 補助機能レジスタ 0

補助機能レジスタ 0 は、 プロセッサの機能に関する追加情報を提供します。

補助機能レジスタ 0 には次の特徴があ り ます。

• 読み出し専用レジスタ

• 特権モードでのみアクセス可能

プロセッサ上では、 補助機能レジスタ 0 は 0x00000000 と して読み出されます。

補助機能レジスタ 0 にアクセスするには、 次の命令を使用して CP15 を読み出します。

MRC p15, 0, <Rd>, c0, c1, 3 ; Read Auxiliary Feature Register 0.

4.2.10 メモリモデル機能レジスタ

メモ リモデル機能レジスタには、 MMFR0 ~ MMFR3 の 4 つがあ り ます。 次に示すサブセクシ ョ ンでは、 これらのレジスタについて説明します。

• 「c0、 メモ リモデル機能レジスタ 0、 MMFR0」

• 「c0、 メモ リモデル機能レジスタ 1、 MMFR1」 (ページ 4-22)

• 「c0、 メモ リモデル機能レジスタ 2、 MMFR2」 (ページ 4-24)

• 「c0、 メモ リモデル機能レジスタ 3、 MMFR3」 (ページ 4-25)

c0、 メモリモデル機能レジスタ 0、 MMFR0

メモ リモデル機能レジスタ 0 は、 プロセッサのメモ リモデル、 メモ リ管理、 キャ ッシュサポート操作に関する情報を提供します。

メモ リモデル機能レジスタ 0 には次の特徴があ り ます。

• 読み出し専用レジスタ

• 特権モードでのみアクセス可能

メモ リモデル機能レジスタ 0 のビッ ト配置を、 図 4-15 (ページ 4-22) に示します。

[11:8] コアデバッグ モデル - メモリ

マップ

プロセッサがサポートする組み込みプロセッサ デバッグモデルのタ

イプを示します。

0x4、 ARMv7 ベースのモデル - メモ リマップ

[7:4] セキュアデバッグ モデル プロセッサがサポートするセキュアデバッグ モデルのタイプを示し

ます。

0x0、 未サポート

[3:0] コアデバッグ モデル - コプロ

セッサ

プロセッサがサポートするアプリ ケーシ ョ ンプロセッサ デバッグモ

デルのタイプを示します。

0x0、 未サポート

表 4-9 デバッグ機能レジスタ 0 のビッ トの機能 (続き)

ビッ ト フ ィールド 機能

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 4-21ID013111 Non-Confidential

Page 106: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

システム制御コプロセッサ

図 4-15 メモリモデル機能レジスタ 0 の形式

メモ リモデル機能レジスタ 0 の機能とビッ ト値との対応を、 表 4-10 に示します。

メモ リモデル機能レジスタ 0 にアクセスするには、 次の命令を使用して CP15 を読み出します。

MRC p15, 0, <Rd>, c0, c1, 4 ; Read Memory Model Feature Register 0.

c0、 メモリモデル機能レジスタ 1、 MMFR1

メモ リモデル機能レジスタ 1 は、 プロセッサのメモ リモデル、 メモ リ管理、 キャ ッシュサポートに関する情報を提供します。

メモ リモデル機能レジスタ 1 には次の特徴があ り ます。

• 読み出し専用レジスタ

• 特権モードでのみアクセス可能

メモ リモデル機能レジスタ 1 のビッ ト配置を、 図 4-16 (ページ 4-23) に示します。

31 28 27 24 23 20 19 16 15 12 11 8 7 4 3 0

FCSE TCM PMSA VMSA

表 4-10 メモリモデル機能レジスタ 0 のビッ トの機能

ビッ ト フ ィールド 機能

[31:28] 予約 SBZ

[27:24] FCSE 高速コンテキス ト スイ ッチ拡張機能 (FCSE) のサポート を示します。

0x0、 未サポート

[23:20] 補助制御レジスタ 補助レジスタのサポート を示します。

0x2、 プロセッサは、 補助命令フォールト ステータスレジスタ (AIFSR)、補助データフォールト ステータスレジスタ (ADFSR)、 および補助制御レジスタをサポート します。

[19:16] TCM TCM と、 関連する DMA のサポート を示します。

0x1、 実装定義

[15:12] 外部共有可能 外部共有可能属性のサポート を示します。

0x0、 未サポート

[11:8] キャ ッシュコ ヒーレンシ キャ ッシュコ ヒーレンシ保守のサポート を示します。

0x0、 共有キャ ッシュに対するサポート なし

[7:4] PMSA 物理メモ リシステム アーキテクチャ (PMSA) のサポート を示します。

0x3、 プロセッサは PMSAv7 をサポート します (サブセクシ ョ ンサポー

ト )。

[3:0] VMSA 仮想メモ リシステム アーキテクチャ (VMSA) のサポート を示します。

0x0、 未サポート

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 4-22ID013111 Non-Confidential

Page 107: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

システム制御コプロセッサ

図 4-16 メモリモデル機能レジスタ 1 の形式

メモ リモデル機能レジスタ 1 の機能とビッ ト値との対応を、 表 4-11 に示します。

メモ リモデル機能レジスタ 1 にアクセスするには、 次の命令を使用して CP15 を読み出します。

MRC p15, 0, <Rd>, c0, c1, 5 ; Read Memory Model Feature Register 1.

31 28 27 24 23 20 19 16 15 12 11 8 7 4 3 0

11

11 - /

1 - /1 - MVA

1 - MVA

表 4-11 メモリモデル機能レジスタ 1 のビッ トの機能

ビッ ト フ ィールド 機能

[31:28] 分岐予測器 分岐予測器の管理要件を示します。

0x0、 MMU なし

[27:24] レベル 1 テス ト ク リー

ニング操作

ハーバードまたは統一アーキテクチャのデータキャ ッシュに対する、 テス トおよびク リーニング操作のサポート を示します。

0x0、 未サポート

[23:20] レベル 1 キャ ッシュ保

守操作 (統一)

統一アーキテクチャのレベル 1 キャ ッシュについて、 キャ ッシュ全体の保守

操作のサポート を示します。

0x0、 未サポート

[19:16] レベル 1 キャ ッシュ保守操作 (ハーバード)

ハーバードアーキテクチャのレベル 1 キャ ッシュについて、 キャ ッシュ全体の保守操作のサポート を示します。

0x0、 未サポート

[15:12] レベル 1 キャ ッシュライン保守操作 - セッ ト / ウェイ (統一)

統一アーキテクチャのレベル 1 キャ ッシュについて、 セッ ト / ウェイによるキャ ッシュライン保守操作のサポート を示します。

0x0、 未サポート

[11:8] レベル 1 キャ ッシュラ

イン保守操作 - セッ ト / ウェイ (ハーバード)

ハーバードアーキテクチャのレベル 1 キャ ッシュについて、 セッ ト / ウェイに

よるキャ ッシュライン保守操作のサポート を示します。

0x0、 未サポート

[7:4] レベル 1 キャ ッシュライン保守操作 - MVA(統一)

統一アーキテクチャのレベル 1 キャ ッシュについて、 アドレスによるキャ ッシュライン保守操作のサポート を示します。

0x0、 未サポート

[3:0] レベル 1 キャ ッシュラ

イン保守操作 - MVA(ハーバード)

ハーバードアーキテクチャのレベル 1 キャ ッシュについて、 アドレスによる

キャ ッシュライン保守操作のサポート を示します。

0x0、 未サポート

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 4-23ID013111 Non-Confidential

Page 108: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

システム制御コプロセッサ

c0、 メモリモデル機能レジスタ 2、 MMFR2

メモ リモデル機能レジスタ 2 は、 プロセッサのメモ リモデル、 メモ リ管理、 キャ ッシュサポート操作に関する情報を提供します。

メモ リモデル機能レジスタ 2 には次の特徴があ り ます。

• 読み出し専用レジスタ

• 特権モードでのみアクセス可能

メモ リモデル機能レジスタ 2 のビッ ト配置を、 図 4-17 に示します。

図 4-17 メモリモデル機能レジスタ 2 の形式

メモ リモデル機能レジスタ 2 の機能とビッ ト値との対応を、 表 4-12 に示します。

31 28 27 24 23 20 19 16 15 12 11 8 7 4 3 0

WFI

TLBTLB

111

表 4-12 メモリモデル機能レジスタ 2 のビッ トの機能

ビッ ト フ ィールド 機能

[31:28] ハードウェアアクセス フラグ

ハード ウェアアクセス フラグのサポート を示します。

0x0、 未サポート

[27:24] WFI 割り込み待ちス トールのサポート を示します。

0x1、 プロセッサは割り込み待ちをサポート します。

[23:20] メモ リバリ ア メモ リバリ ア操作のサポート を示します。

0x2、 プロセッサは次の操作をサポート します。

• DSB (以前の DWB)

• ISB (以前のプリ フェッチフラ ッシュ)

• DMB

[19:16] TLB 保守操作

(統一)

統一アーキテクチャの TLB 保守操作のサポート を示します。

0x0、 未サポート

[15:12] TLB 保守操作

(ハーバード)

ハーバードアーキテクチャの TLB 保守操作のサポート を示します。

0x0、 未サポート

[11:8] レベル 1 キャ ッシュ

範囲保守操作(ハーバード)

ハーバードアーキテクチャでの、 キャ ッシュの範囲保守操作のサポート を示します。

0x0、 未サポート

[7:4] レベル 1 バッ クグラ

ウンド プリ フェッチキャ ッシュ操作

ハーバート アーキテクチャでの、 バッ クグラウンド プリ フェッチキャ ッシュ

範囲操作のサポート を示します。

0x0、 未サポート

[3:0] レベル 1 フォアグラウンド プリ フェッチ

キャ ッシュ操作

ハーバードアーキテクチャでの、 フォアグラウンド プリ フェッチキャ ッシュ範囲操作のサポート を示します。

0x0、 未サポート

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 4-24ID013111 Non-Confidential

Page 109: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

システム制御コプロセッサ

メモ リモデル機能レジスタ 2 にアクセスするには、 次の命令を使用して CP15 を読み出します。

MRC p15, 0, <Rd>, c0, c1, 6 ; Read Memory Model Feature Register 2.

c0、 メモリモデル機能レジスタ 3、 MMFR3

メモ リモデル機能レジスタ 3 は、 プロセッサの 2 つのキャ ッシュライン保守操作に関する情報を提供します。

メモ リモデル機能レジスタ 3 には次の特徴があ り ます。

• 読み出し専用レジスタ

• 特権モードでのみアクセス可能

メモ リモデル機能レジスタ 3 のビッ ト配置を、 図 4-18 に示します。

図 4-18 メモリモデル機能レジスタ 3 の形式

メモ リモデル機能レジスタ 3 の機能とビッ ト値との対応を、 表 4-13 に示します。

メモ リモデル機能レジスタ 3 にアクセスするには、 次の命令を使用して CP15 を読み出します。

MRC p15, 0, <Rd>, c0, c1, 7 ; Read Memory Model Feature Register 3.

31 8 7 3 0412 11

/MVA

表 4-13 メモリモデル機能レジスタ 3 のビッ トの機能

ビッ ト フ ィールド 機能

[31:12] 予約 SBZ

[11:8] 分岐予測器保守操作 階層型キャッシュ保守操作を持つシステムでの、 分岐予測器保守操作のサポート を示します。

0x0、 未サポート

[7:4] セッ ト / ウェイによる階層型

キャッシュ保守操作

セッ ト / ウェイによる階層型キャッシュ保守操作のサポート を示し

ます。

0x1、 プロセッサは、 セッ ト / ウェイによるキャ ッシュの無効化、 クリーニングと無効化、 ク リーニングをサポート します。

[3:0] MVA による階層型キャッシュ

保守操作

アドレスによる階層型キャッシュ保守操作のサポート を示します。

0x1、 プロセッサは次の操作をサポート します。

• アドレスによるデータキャ ッシュの無効化

• アドレスによるデータキャ ッシュのク リーニング

• アドレスによるデータキャ ッシュのク リーニングと無効化

• アドレスによる命令キャッシュの無効化

• すべての命令キャッシュエン ト リの無効化

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 4-25ID013111 Non-Confidential

Page 110: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

システム制御コプロセッサ

4.2.11 命令セッ ト属性レジスタ

命令セッ ト属性レジスタには ISAR0 ~ ISAR7 の 8 つがあ り ますが、 そのうちの 3 つは現時点では使用されていません。 こ こでは、 次の ト ピッ クについて説明します。

• 「c0、 命令セッ ト属性レジスタ 0、 ISAR0」

• 「c0、 命令セッ ト属性レジスタ 1、 ISAR1」 (ページ 4-27)

• 「c0、 命令セッ ト属性レジスタ 2、 ISAR2」 (ページ 4-28)

• 「c0、 命令セッ ト属性レジスタ 3、 ISAR3」 (ページ 4-30)

• 「c0、 命令セッ ト属性レジスタ 4、 ISAR4」 (ページ 4-31)

• 「c0、 命令セッ ト属性レジスタ 5 ~ 7」 (ページ 4-32)

c0、 命令セッ ト属性レジスタ 0、 ISAR0

命令セッ ト属性レジスタ 0 は、 プロセッサが基本セッ ト以外にサポートする命令セッ トに関する情報を提供します。

命令セッ ト属性レジスタ 0 には次の特徴があ り ます。

• 読み出し専用レジスタ

• 特権モードでのみアクセス可能

命令セッ ト属性レジスタ 0 のビッ ト配置を、 図 4-19 に示します。

図 4-19 命令セッ ト属性レジスタ 0 の形式

命令セッ ト属性レジスタ 0 の機能とビッ ト値との対応を、 表 4-14 に示します。

31 28 27 24 23 20 19 16 15 12 11 8 7 4 3 0

表 4-14 命令セッ ト属性レジスタ 0 のビッ トの機能

ビッ ト フ ィールド 機能

[31:28] 予約 SBZ

[27:24] 除算命令 除算命令のサポート を示します。

0x1、 プロセッサは SDIV 命令と UDIV 命令をサポート します。

[23:20] デバッグ命令 デバッグ命令のサポート を示します。

0x1、 プロセッサは BKPT をサポート します。

[19:16] コプロセッサ命令 CP15 レジスタや VFP など、 属性が異なる機能レジスタ以外のコプロ

セッサ命令のサポート を示します。

0x0、 未サポート

[15:12] 比較命令と分岐命令 比較命令と分岐命令の組み合わせのサポート を示します。

0x1、 プロセッサは比較命令と分岐命令を組み合わせた CBNZ と CBZ をサポート します。

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 4-26ID013111 Non-Confidential

Page 111: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

システム制御コプロセッサ

命令セッ ト属性レジスタ 0 にアクセスするには、 次の命令を使用して CP15 を読み出します。

MRC p15, 0, <Rd>, c0, c2, 0 ; Read Instruction Set Attributes Register 0

c0、 命令セッ ト属性レジスタ 1、 ISAR1

命令セッ ト属性レジスタ 1 は、 プロセッサが基本セッ ト以外にサポートする命令セッ トに関する情報を提供します。

命令セッ ト属性レジスタ 1 には次の特徴があ り ます。

• 読み出し専用レジスタ

• 特権モードでのみアクセス可能

命令セッ ト属性レジスタ 1 のビッ ト配置を、 図 4-20 に示します。

図 4-20 命令セッ ト属性レジスタ 1 の形式

[11:8] ビッ ト フ ィールド命令 ビッ ト フ ィールド命令のサポート を示します。

0x1、 プロセッサはビッ ト フ ィールド命令の BFC、 BFI、 SBFX、 UBFX をサポート します。

[7:4] ビッ ト カウン ト命令 ビッ ト カウン ト命令のサポート を示します。

0x1、 プロセッサは CLZ をサポート します。

[3:0] ア ト ミ ッ ク命令 ア ト ミ ッ ク ロードおよびア ト ミ ッ クス ト ア命令のサポート を示します。

0x1、 プロセッサは SWP と SWPB をサポート します。

表 4-14 命令セッ ト属性レジスタ 0 のビッ トの機能 (続き)

ビッ ト フ ィールド 機能

31 28 27 24 23 20 19 16 15 12 11 8 7 4 3 0

Jazelle

ITE

21

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 4-27ID013111 Non-Confidential

Page 112: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

システム制御コプロセッサ

命令セッ ト属性レジスタ 1 の機能とビッ ト値との対応を、 表 4-15 に示します。

命令セッ ト属性レジスタ 1 にアクセスするには、 次の命令を使用して CP15 を読み出します。

MRC p15, 0, <Rd>, c0, c2, 1 ; Read Instruction Set Attributes Register 1

c0、 命令セッ ト属性レジスタ 2、 ISAR2

命令セッ ト属性レジスタ 2 は、 プロセッサが基本セッ ト以外にサポートする命令セッ トに関する情報を提供します。

命令セッ ト属性レジスタ 2 には次の特徴があ り ます。

• 読み出し専用レジスタ

• 特権モードでのみアクセス可能

表 4-15 命令セッ ト属性レジスタ 1 のビッ トの機能

ビッ ト フ ィールド 機能

[31:28] Jazelle 命令 Jazelle 命令のサポート を示します。

0x1、 プロセッサは次の命令をサポート します。

• BXJ 命令

• PSR の J ビッ ト

詳細については、 「プログラムステータス レジスタ」 (ページ 2-10) と 「実行環境の高速化」 (ページ 2-27) を参照して下さい。

[27:24] インタワーキング命令

インタワーキング命令のサポート を示します。

0x3、 プロセッサは次の命令をサポート します。

• BX、 および PSR の T ビッ ト

• BLX、 および BX 動作を持つ PC ロード

• ARM 命令セッ トのデータ処理命令は、 デスティネーシ ョ ンが PC で、 S ビッ

トがク リ アされている場合、 BX と似た動作をします。

[23:20] イ ミディエート命令

イ ミディエート命令のサポート を示します。

0x1、 プロセッサは次の命令をサポート します。

• MOVT 命令

• 16 ビッ ト イ ミディエート を使用した MOV 命令エンコード

• 12 ビッ ト イ ミディエート を使用した Thumb ADD および SUB 命令

[19:16] ITE 命令 If Then 命令のサポート を示します。

0x1、 プロセッサは IT 命令をサポート します。

[15:12] 拡張命令 符号拡張命令またはゼロ拡張命令のサポート を示します。

0x2、 プロセッサは次の命令をサポート します。

• SXTB, SXTB16, SXTH, UXTB, UXTB16, UXTH

• SXTAB, SXTAB16, SXTAH, UXTAB, UXTAB16, UXTAH

[11:8] 例外 2 命令 例外 2 命令のサポート を示します。

0x1、 プロセッサは RFE、 SRS、 CPS をサポート します。

[7:4] 例外 1 命令 例外 1 命令のサポート を示します。

0x1、 プロセッサは LDM (例外からの復帰)、 LDM (ユーザレジスタ)、 STM (ユーザレジスタ) をサポート します。

[3:0] エンディアン命令

エンディアン形式制御命令のサポート を示します。

0x1、 プロセッサは SETEND、 および PSR の E ビッ ト をサポート します。

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 4-28ID013111 Non-Confidential

Page 113: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

システム制御コプロセッサ

命令セッ ト属性レジスタ 2 のビッ ト配置を、 図 4-21 に示します。

図 4-21 命令セッ ト属性レジスタ 2 の形式

命令セッ ト属性レジスタ 2 の機能とビッ ト値との対応を、 表 4-16 に示します。

命令セッ ト属性レジスタ 2 にアクセスするには、 次の命令を使用して CP15 を読み出します。

MRC p15, 0, <Rd>, c0, c2, 2 ; Read Instruction Set Attributes Register 2

31 28 27 24 23 20 19 16 15 12 11 8 7 4 3 0

PSR

/

表 4-16 命令セッ ト属性レジスタ 2 のビッ トの機能

ビッ ト フ ィールド 機能

[31:28] 反転命令 反転命令のサポート を示します。

0x2、 プロセッサは REV、 REV16、 REVSH、 RBIT をサポート します。

[27:24] PSR 命令 PSR 命令のサポート を示します。

0x1、 プロセッサは MRS と MSR、 および例外復帰形式のデータ処理命令をサポート します。

[23:20] 符号なし乗算命令

高度な符号なし乗算命令のサポート を示します。

0x2、 プロセッサは次の命令をサポート します。

• UMULL と UMLAL

• UMAAL

[19:16] 符号付き乗算命令

高度な符号付き乗算命令のサポート を示します。

0x3、 プロセッサは次の命令をサポート します。

• SMULL と SMLAL

• SMLABB, SMLABT, SMLALBB, SMLALBT, SMLALTB, SMLALTT, SMLATB, SMLATT, SMLAWB, SMLAWT, SMULBB, SMULBT, SMULTB, SMULTT, SMULWB, SMULWT, および PSR の Q フラグ

• SMLAD, SMLADX, SMLALD, SMLALDX, SMLSD, SMLSDX, SMLSLD, SMLSLDX, SMMLA, SMMLAR, SMMLS, SMMLSR, SMPUL, SMPULR, SMUAD, SMUADX, SMUSD, SMUSDX

[15:12] 乗算命令 乗算命令のサポート を示します。

0x2、 プロセッサは MUL、 MLA、 MLS をサポート します。

[11:8] 割り込み可能命令

マルチアクセス割り込み可能命令のサポート を示します。

0x1、 プロセッサは再開可能な LDM と STM をサポート します。

[7:4] メモ リ ヒ ン ト命令

メモ リ ヒ ン ト命令のサポート を示します。

0x3、 プロセッサは PLD と PLI をサポート します。

[3:0] ロード / ス ト ア

命令

追加のロード命令とス ト ア命令のサポート を示します。

0x1、 プロセッサは LDRD と STRD をサポート します。

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 4-29ID013111 Non-Confidential

Page 114: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

システム制御コプロセッサ

c0、 命令セッ ト属性レジスタ 3、 ISAR3

命令セッ ト属性レジスタ 3 は、 プロセッサが基本セッ ト以外にサポートする命令セッ トに関する情報を提供します。

命令セッ ト属性レジスタ 3 には次の特徴があ り ます。

• 読み出し専用レジスタ

• 特権モードでのみアクセス可能

命令セッ ト属性レジスタ 3 のビッ ト配置を、 図 4-22 に示します。

図 4-22 命令セッ ト属性レジスタ 3 の形式

命令セッ ト属性レジスタ 3 の機能とビッ ト値との対応を、 表 4-17 に示します。

31 28 27 24 23 20 19 16 15 12 11 8 7 4 3 0

ThumbEENOP

Thumb

SVCSIMD

表 4-17 命令セッ ト属性レジスタ 3 のビッ トの機能

ビッ ト フ ィールド 機能

[31:28] ThumbEE 拡張機能 ThumbEE 実行環境拡張機能のサポート を示します。

0x0、 未サポート

[27:24] 真の NOP 命令 真の NOP 命令のサポート を示します。

0x1、 プロセッサは NOP16、 NOP32、 および ARM 命令セッ ト と Thumb 命令セッ ト内のさまざまな NOP 互換ヒン ト をサポート します。

[23:20] Thumb コピー命令 Thumb コピー命令のサポート を示します。

0x1、 プロセッサは Thumb MOV(3) 下位レジスタ ⇒ 下位レジスタをサポート します。

[19:16] テーブル分岐命令 テーブル分岐命令のサポート を示します。

0x1、 プロセッサは、 テーブル分岐命令の TBB と TBH をサポート します。

[15:12] 同期化基本命令 同期化基本命令のサポート を示します。

0x2、 プロセッサは次の命令をサポート します。

• LDREX と STREX

• LDREXB, LDREXH, LDREXD, STREXB, STREXH, STREXD, CLREX

[11:8] SVC 命令 SVC (以前の SWI) 命令のサポート を示します。

0x1、 プロセッサは SVC をサポート します。

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 4-30ID013111 Non-Confidential

Page 115: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

システム制御コプロセッサ

命令セッ ト属性レジスタ 3 にアクセスするには、 次の命令を使用して CP15 を読み出します。

MRC p15, 0, <Rd>, c0, c2, 3 ; Read Instruction Set Attributes Register 3

c0、 命令セッ ト属性レジスタ 4、 ISAR4

命令セッ ト属性レジスタ 4 は、 プロセッサが基本セッ ト以外にサポートする命令セッ トに関する情報を提供します。

命令セッ ト属性レジスタ 4 には次の特徴があ り ます。

• 読み出し専用レジスタ

• 特権モードでのみアクセス可能

命令セッ ト属性レジスタ 4 のビッ ト配置を、 図 4-23 に示します。

図 4-23 命令セッ ト属性レジスタ 4 の形式

命令セッ ト属性レジスタ 4 の機能とビッ ト値との対応を、 表 4-18 に示します。

[7:4] SIMD 命令 単一命令複数データ (SIMD) 命令のサポート を示します。

0x3、 プロセッサは次の命令をサポート します。

PKHBT, PKHTB, QADD16, QADD8, QASX, QSUB16, QSUB8, QSAX, SADD16, SADD8, SASX, SEL, SHADD16, SHADD8, SHASX, SHSUB16, SHSUB8, SHSAX, SSAT, SSAT16, SSUB16, SSUB8, SSAX, SXTAB16, SXTB16, UADD16, UADD8, UASX, UHADD16, UHADD8, UASX, UHSUB16, UHSUB8, USAX, UQADD16, UQADD8, UQASX, UQSUB16, UQSUB8, UQSAX, USAD8, USADA8, USAT, USAT16, USUB16, USUB8, USAX, UXTAB16, UXTB16, および PSR のGE[3:0] ビッ ト

[3:0] 飽和命令 飽和命令のサポート を示します。

0x1, プロセッサは QADD, QDADD, QDSUB, QSUB, および PSR の Q フラグをサポート します。

表 4-17 命令セッ ト属性レジスタ 3 のビッ トの機能 (続き)

ビッ ト フ ィールド 機能

31 24 23 20 19 16 15 12 11 8 7 4 3 0

SMC

表 4-18 命令セッ ト属性レジスタ 4 のビッ トの機能

ビッ ト フ ィールド 機能

[31:24] 予約 SBZ

[23:20] 排他命令 排他命令のサポート を示します。

0x0、 ISAR3 レジスタのビッ ト [15:12] で示されているよ うに、 同期化基本

命令のみをサポート します。 詳細については、 「c0、 命令セッ ト属性レジスタ 3、 ISAR3」 (ページ 4-30) を参照して下さい。

[19:16] バリ ア命令 バリ ア命令のサポート を示します。

0x1、 プロセッサは DMB、 DSB、 ISB 命令をサポート します。

[15:12] SMC 命令 セキュアモニタ コール (SMC) (以前の SMI) 命令のサポート を示します。

0x0、 未サポート

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 4-31ID013111 Non-Confidential

Page 116: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

システム制御コプロセッサ

命令セッ ト属性レジスタ 4 にアクセスするには、 次の命令を使用して CP15 を読み出します。

MRC p15, 0, <Rd>, c0, c2, 4 ; Read Instruction Set Attributes Register 4

c0、 命令セッ ト属性レジスタ 5 ~ 7

命令セッ ト属性レジスタ 5 ~ 7 は、 プロセッサのプロパティに関する追加情報を提供します。

命令セッ ト属性レジスタ 5 には次の特徴があ り ます。

• 読み出し専用レジスタ

• 特権モードでのみアクセス可能

プロセッサ上では、 命令セッ ト属性レジスタ 5 は 0x00000000 と して読み出されます。

命令セッ ト属性レジスタ 5 にアクセスするには、 次の命令を使用して CP15 を読み出します。

MRC p15, 0, <Rd>, c0, c2, 5 ; Read Instruction Set Attribute Register 5

命令セッ ト属性レジスタ 6 と 7 は実装されていません。 レジスタマップ内の位置は予約されています。 次の命令を使用した CP15 アクセスに対応します。

MRC p15, 0, <Rd>, c0, c2, 6 ; Read Instruction Set Attribute Register 6MRC p15, 0, <Rd>, c0, c2, 7 ; Read Instruction Set Attribute Register 7

これらのレジスタは読み出し専用で、 特権モードでのみアクセス可能です。

4.2.12 c0、 カレン ト キャッシュサイズ識別レジスタ

カレン ト キャ ッシュサイズ識別レジスタは、 命令キャ ッシュ とデータキャ ッシュに関する現在のキャ ッシュサイズ情報を提供します。 アーキテクチャ上は、 命令キャ ッシュ、 データキャ ッシュ、 統一キャ ッシュを含めて 大 8 レベルのキャ ッシュを実装するこ とができます。 このプロセッサには、 レベル 1 命令キャ ッシュ とレベル 1 データキャ ッシュが内蔵されています。 キャ ッシュサイズ選択レジスタによって、 選択するカレン ト キャ ッシュサイズ識別レジスタが決定されます (「c0、キャ ッシュサイズ選択レジスタ」 (ページ 4-35) を参照)。

カレン ト キャ ッシュサイズ識別レジスタには次の特徴があ り ます。

• 読み出し専用レジスタ

• 特権モードでのみアクセス可能

カレン ト キャ ッシュサイズ識別レジスタのビッ トの配置を、 図 4-24 (ページ 4-33)に示します。

[11:8] ライ トバッ ク命令 ライ トバッ ク命令のサポート を示します。

0x1、 ARMv7 で定義されているすべてのライ トバッ ク アドレシングモード

をサポート します。

[7:4] シフ ト付き命令 シフ ト付き命令のサポート を示します。

0x4、 プロセッサは次のオプシ ョ ンをサポート します。

• ロード / ス ト ア命令とその他の命令に対する定数シフ トオプシ ョ ンの全範囲

• レジスタ制御シフ トオプシ ョ ン

[3:0] 非特権命令 非特権命令のサポート を示します。

0x2、 プロセッサは LDR{SB|B|SH|H}T と STR{B|H}T をサポート します。

表 4-18 命令セッ ト属性レジスタ 4 のビッ トの機能 (続き)

ビッ ト フ ィールド 機能

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 4-32ID013111 Non-Confidential

Page 117: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

システム制御コプロセッサ

図 4-24 カレン ト キャッシュサイズ識別レジスタの形式

カレン ト キャ ッシュサイズ識別レジスタの機能とビッ ト値との対応を、 表 4-19 に示します。

LineSize フ ィールドでは、 キャ ッシュライン内のワード数の log(2) から 2 を引いた値と してエンコード されます。 例えば、 0x0 の値は、 キャ ッシュラインが 4 ワードであるこ とを示します。 これはキャ ッシュの 小サイズです。 0x1 の値は、 キャ ッシュラインが 8 ワードであるこ とを示します。

カレン ト キャ ッシュサイズ識別レジスタの、 各ビッ ト フ ィールド とレジスタ全体のエンコードを、 表 4-20 に示します。 これは、 カレン ト キャ ッシュサイズ選択レジスタ (CSSR) によって設定されたキャ ッシュサイズとキャ ッシュレベルを照合するために使用します。 「c0、 キャ ッシュサイズ選択レジスタ」 (ページ 4-35) を参照して下さい。

LineSizeWT

31 30 29 28 27 13 12 2 0

WB

RA

WA NumSets Associativity

表 4-19 カレン ト キャッシュサイズ識別レジスタのビッ トの機能

ビッ ト フ ィールド 機能

[31] WT ライ ト スルーに使用可能なサポート を示します。

1 = ライ ト スルー サポートが使用可能a

a. 有効なビッ ト フ ィールド エンコードについては、 表 4-20 を参照して下さい。

[30] WB ライ トバッ クに使用可能なサポート を示します。

1 = ライ トバッ ク サポートが使用可能 a

[29] RA 読み出し割り当てに使用可能なサポート を示します。

1 = 読み出し割り当てサポートが使用可能 a

[28] WA 書き込み割り当てに使用可能なサポート を示します。

1 = 書き込み割り当てサポートが使用可能 a

[27:13] NumSets 次のよ うにセッ ト数を示します。

(セッ ト数) - 1a

[12:3] Associativity 次のよ うにウェイ数を示します。

(ウェイ数) - 1a

[2:0] LineSize キャ ッシュラインごとのワード数を示します a。

表 4-20 カレン ト キャッシュサイズ識別レジスタのビッ ト フ ィールド とレジスタエンコード

サイズレジスタ全体のエンコード

レジスタのビッ ト フ ィールドのエンコード

WT WB RA WA NumSets Associativity LineSize

4 KB 0xF003E019 1 1 1 1 0x001F 0x3 0x1

8 KB 0xF007E019 1 1 1 1 0x003F

16 KB 0xF00FE019 1 1 1 1 0x007F

32 KB 0xF01FE019 1 1 1 1 0x00FF

64 KB 0xF03FE019 1 1 1 1 0x01FF

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 4-33ID013111 Non-Confidential

Page 118: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

システム制御コプロセッサ

カレン ト キャ ッシュサイズ識別レジスタにアクセスするには、 次の命令を使用してCP15 を読み出します。

MRC p15, 1, <Rd>, c0, c0, 0 ; Read Current Cache Size Identification Register

4.2.13 c0、 カレン ト キャッシュレベル ID レジスタ

カレン ト キャ ッシュレベル ID レジスタは、 実装されているキャ ッシュレベルを示します。 アーキテクチャ上は、 命令側とデータ側とで異なる数のキャ ッシュレベルを実装するこ とができます。 このレジスタは、 コ ヒーレンシ時点と統一時点もキャプチャします。

カレン ト キャ ッシュレベル ID レジスタには次の特徴があ り ます。

• 読み出し専用レジスタ

• 特権モードでのみアクセス可能

カレン ト キャ ッシュレベル ID レジスタのビッ ト配置を、 図 4-25 に示します。

図 4-25 カレン ト キャッシュレベル ID レジスタの形式

カレン ト キャ ッシュレベル ID レジスタの機能とビッ ト値との対応を、 表 4-21 に示します。

カレン ト キャ ッシュレベル ID レジスタにアクセスするには、 次の命令を使用してCP15 を読み出します。

CL 8 CL 7 CL 6 CL 5 CL 4 CL 3 CL 2 CL 1

31 30 29 27 26 24 23 21 20 18 17 15 14 12 11 10 8 6 5 3 2 0

LoU LoC

表 4-21 カレン ト キャッシュレベル ID レジスタのビッ トの機能

ビッ ト フ ィールド 機能

[31:30] 予約 SBZ

[29:27] LoU 0b001 = 統一レベル

[26:24] LoC 0b001 = コ ヒーレンシレベル

[23:21] CL 8 0b000 = キャ ッシュレベル (CL) 8 にキャッシュが存

在しない

[20:18] CL 7 0b000 = CL 7 にキャッシュが存在しない

[17:15] CL 6 0b000 = CL 6 にキャッシュが存在しない

[14:12] CL 5 0b000 = CL 5 にキャッシュが存在しない

[11:9] CL 4 0b000 = CL 4 にキャッシュが存在しない

[8:6] CL 3 0b000 = CL 3 にキャッシュが存在しない

[5:3] CL 2 0b000 = CL 2 にキャッシュが存在しない

[2] CL 1 RAZ。 CL 1 に統一キャッシュが存在しないこ とを示します。

[1] CL 1 データキャ ッシュが実装されている場合、 0b001

データキャ ッシュが実装されていない場合、 0b000

[0] CL 1 命令キャ ッシュが実装されている場合、 0b001

命令キャ ッシュが実装されていない場合、 0b000

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 4-34ID013111 Non-Confidential

Page 119: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

システム制御コプロセッサ

MRC p15, 1, <Rd>, c0, c0, 1 ; Read Current Cache Level ID Register

4.2.14 c0、 キャ ッシュサイズ選択レジスタ

キャ ッシュサイズ選択レジスタは、 プロセッサがカレン ト キャ ッシュサイズ識別レジスタを選択するために使用する値を保持します。

キャ ッシュサイズ選択レジスタには次の特徴があ り ます。

• 読み出し / 書き込みレジスタ

• 特権モードでのみアクセス可能

キャ ッシュサイズ選択レジスタのビッ ト配置を、 図 4-26 に示します。

図 4-26 キャッシュサイズ選択レジスタの形式

キャ ッシュサイズ選択レジスタの機能とビッ ト値との対応を、 表 4-22 に示します。

カレン ト キャ ッシュサイズ識別レジスタにアクセスするには、 次の命令を使用してCP15 を読み書きします。

MRC p15, 2, <Rd>, c0, c0, 0 ; Read Cache Size Selection RegisterMCR p15, 2, <Rd>, c0, c0, 0 ; Write Cache Size Selection Register

4.2.15 c1、 システム制御レジスタ

システム制御レジスタは、 次の要素についての制御および構成情報を提供します。

• メモ リ アライ メン ト 、 エンディアン形式、 保護、 フォールト動作

• MPU イネーブル、 キャ ッシュイネーブル、 キャ ッシュ置換方式

• 割り込みおよび割り込みレイテンシ動作

• 例外ベクタの位置

• プログラムフローの予測

システム制御レジスタには次の特徴があ り ます。

• 読み出し / 書き込みレジスタ

• 特権モードでのみアクセス可能

レジスタ内のビッ ト配置を、 図 4-27 (ページ 4-36) に示します。

4 3 1 0

InD

31

表 4-22 キャッシュサイズ選択レジスタのビッ トの機能

ビッ ト フ ィールド 機能

[31: 4] 予約 SBZ

[3:1] レベル 選択するキャ ッシュレベルを識別します。

b000 = レベル 1 キャ ッシュ

このフ ィールドは読み出し専用で、 書き込みは無視されます。

[0] InD 使用する命令キャッシュ とデータキャ ッシュを識別します。

1 = 命令

0 = データ

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 4-35ID013111 Non-Confidential

Page 120: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

システム制御コプロセッサ

図 4-27 システム制御レジスタの形式

システム制御レジスタの各ビッ トの目的を、 表 4-23 に示します。

TRE

IETE

AFE

NMFISBZ

EEVE

ZRRSBZSBOBRSBO

FIDZSBZ

M

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 7 6 3 2 1 0

SBO 1 V I SBZ SBO C A

表 4-23 システム制御レジスタのビッ トの機能

ビッ ト フ ィールド 機能

[31] IE 現在使用されている命令のエンディアン形式が、 リ トルエンディアンかビッグエンディアンかを識別します。

0 = リ トルエンディアン形式

1 = ビッグエンディアン形式

リセッ ト時の値は、 基本入力 CFGIE によって定義されます。 このビッ トは読み出し専用です。

[30] TE Thumb 例外イネーブル。

0 = ARM 例外生成が可能です。

1 = Thumb 例外生成が可能です。

リセッ ト時の値は、 基本入力 TEINIT によって定義されます。

[29] AFE アクセスフラグ イネーブル。 プロセッサ上では、 このビッ トは SBZ です。

[28] TRE TEX 再マップ イネーブル。 プロセッサ上では、 このビッ トは SBZ です。

[27] NMFI NMFI (マスク不能高速割り込み) イネーブル。

0 = ソフ ト ウェアで FIQ を不可能にできます。

1 = ソフ ト ウェアで FIQ を不可能にできません。

このビッ トは読み出し専用です。 値は、 構成入力 CFGNMFI によって定義されます。

[26] 予約 SBZ

[25] EE 例外発生時に CPSR.E ビッ トがどのよ うに設定されるかを決定します。

0 = 例外発生時に CPSR E ビッ トが 0 に設定されます。

1 = 例外発生時に CPSR E ビッ トが 1 に設定されます。

リセッ ト時の値は、 基本入力 CFGEE によって定義されます。

[24] VE ベクタ割り込みを構成します。

0 = IRQ のオフセッ ト = 0x18

1 = VIC コン ト ローラが IRQ のオフセッ ト を提供します。

このビッ トの リセッ ト時の値は 0 です。

[23:22] 予約 SBO

[21] FI 高速割り込みイネーブル。

プロセッサでは、 高速割り込みが常に可能です。 このビッ トは SBO です。

[20] 予約 SBZ

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 4-36ID013111 Non-Confidential

Page 121: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

システム制御コプロセッサ

システム制御レジスタを使用する場合は、 読み出し - 変更 - 書き込み手法の使用をお勧めします。 システム制御レジスタにアクセスするには、 次の命令を使用して CP15を読み書きします。

MRC p15, 0, <Rd>, c1, c0, 0 ; Read System Control Register configuration dataMCR p15, 0, <Rd>, c1, c0, 0 ; Write System Control Register configuration data

[19] DZ 0 による除算。

0 = 未定義命令例外を生成しません。

1 = 未定義命令例外を生成します。

このビッ トの リセッ ト時の値は 0 です。

[18] 予約 SBO

[17] BR MPU バッ クグラウンド領域イネーブル。

[16] 予約 SBO

[15] 予約 SBZ

[14] RR ラウンド ロビン ビッ トで、 命令キャッシュ とデータキャッシュの置換方式を制御します。

0 = ランダム置換方式

1 = ラウンド ロビン置換方式

このビッ トの リセッ ト時の値は 0 です。 プロセッサは、 このビッ トの状態にかかわらず、

常にランダム置換方式を使用します。

[13] V 例外ベクタの位置を決定します。

0 = 正規例外ベクタを選択、 アドレス範囲 = 0x00000000 ~ 0x0000001C

1 = 上位例外ベクタ (HIVECS) を選択、 アドレス範囲 = 0xFFFF0000~ 0xFFFF001C

リセッ ト時の値は、 基本入力 VINITHI によって定義されます。

[12] I レベル 1 命令キャ ッシュの稼働。

0 = 命令キャッシュを非稼働にします。 これはリセッ ト時の値です。

1 = 命令キャッシュを稼働状態にします。

命令キャッシュが実装されていない場合、 このビッ トは SBZ です。

[11] Z 分岐予測ビッ ト

プロセッサは、 分岐予測をサポート します。 このビッ トは SBO です。 補助制御レジスタ

で分岐予測を制御するこ とができます (「補助制御レジスタ」 (ページ 4-38) を参照)。

[10:7] 予約 SBZ

[6:3] 予約 SBO

[2] C レベル 1 データキャ ッシュの稼働。

0 = データキャ ッシュを非稼働にします。 これはリセッ ト時の値です。

1 = データキャ ッシュを稼働状態にします。

データキャ ッシュが実装されていない場合、 このビッ トは SBZ です。

[1] A 厳格なデータアライ メン トによって、 データアクセス中のアライ メン ト フォールトの検出を可能にします。

0 = 厳格なアライ メン ト フォールト チェッ クを不可能にします。 これはリセッ ト時の値です。

1 = 厳格なアライ メン ト フォールト チェッ クを可能にします。

[0] M MPU のイネーブル。

0 = MPU を非稼働にします。 これはリセッ ト時の値です。

1 = MPU を稼働状態にします。

MPU が実装されていない場合は、 MPU に領域が存在せず、 このビッ トは SBZ です。

表 4-23 システム制御レジスタのビッ トの機能 (続き)

ビッ ト フ ィールド 機能

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 4-37ID013111 Non-Confidential

Page 122: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

システム制御コプロセッサ

ユーザモードでシステム制御レジスタを読み書きしよ う とする と、 未定義例外が発生します。

4.2.16 補助制御レジスタ

補助制御レジスタの制御対象は次のとおりです。

• 分岐予測

• パフォーマンス機能

• エラーおよびパリティ ロジッ ク

c1、 補助制御レジスタ

補助制御レジスタには次の特徴があ り ます。

• 読み出し / 書き込みレジスタ

• 特権モードでのみアクセス可能

レジスタ内のビッ ト配置を、 図 4-28 に示します。

図 4-28 補助制御レジスタの形式

補助制御レジスタの機能とビッ ト値との対応を、 表 4-24 に示します。

31 25 24 23 22 21 19 18 17 16 15 14 13 12 11 7 6 3 2 1 0

CEC

26272830 29

DIADI

1020

DICDIDIB2DIDIB1DI

B1TCMPCENB0TCMPCEN

ATCMPCENAXISCEN

9

BP

58

AXISCUENDILSM

DEOLPDBHE

FRCDIS RSDIS

ATCMECENB0TCMECENB1TCMECENDILSsMOVFDSnSFWTFORADNCHERPEGDLFODBWR

表 4-24 補助制御レジスタのビッ トの機能

ビッ ト フ ィールド 機能

[31] DICDIa ケース C デュアル発行の制御。

0 = 可能。 これはリセッ ト時の値です。

1 = 不可能

[30] DIB2DIa ケース B2 デュアル発行の制御。

0 = 可能。 これはリセッ ト時の値です。

1 = 不可能

[29] DIB1DIa ケース B1 デュアル発行の制御。

0 = 可能。 これはリセッ ト時の値です。

1 = 不可能

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 4-38ID013111 Non-Confidential

Page 123: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

システム制御コプロセッサ

[28] DIADIa ケース A デュアル発行の制御。

0 = 可能。 これはリセッ ト時の値です。

1 = 不可能

[27] B1TCMPCEN B1TCM パリティ または ECC チェッ クのイネーブル。

0 = 不可能

1 = 可能

リセッ ト時の値は、 基本入力 PARECCENRAM[2]b によって定義されます。

BTCM に ECC が構成されている場合は、 このビッ トは必ず B0TCMPCEN と同じ値に設定する必要があ り ます。

[26] B0TCMPCEN B0TCM パリティ または ECC チェッ クのイネーブル。

0 = 不可能

1 = 可能

リセッ ト時の値は、 基本入力 PARECCENRAM[1]b によって定義されます。

BTCM に ECC が構成されている場合は、 このビッ ト を必ず B1TCMPCEN と同じ値に設定する必要があ り ます。

[25] ATCMPCEN ATCM パリティ または ECC チェッ クのイネーブル。

0 = 不可能

1 = 可能

リセッ ト時の値は、 基本入力 PARECCENRAM[0]b によって定義されます。

[24] AXISCEN AXI スレーブキャ ッシュ RAM アクセスのイネーブル。

0 = 不可能。 これはリセッ ト時の値です。

1 = 可能

注 AXI スレーブ キャ ッシュアクセスが可能な場合は、 キャ ッシュが非稼働になっているため、 プロセッサはキャ ッシュ保守操作を実行できません。 プロセッサがキャ ッシュ保守操作を試みる と、 未定義命令例外が取得されます。

[23] AXISCUEN AXI スレーブキャ ッシュ RAM 非特権アクセスのイネーブル。

0 = 不可能。 これはリセッ ト時の値です。

1 = 可能

[22] DILSM 複数ロード / ス ト アでの低割り込みレイテンシ (LIL) のディセーブル。

0 = 複数ロード / ス ト アでの LIL を可能にします。 これはリセッ ト時の値です。

1 = すべての複数ロード / ス ト アで LIL を不可能にします。

[21] DEOLP ループ終了予測のディセーブル。

0 = ループ予測を可能にします。 これはリセッ ト時の値です。

1 = ループ予測を不可能にします。

[20] DBHE 分岐履歴 (BH) 拡張機能のディセーブル。

0 = 拡張機能を稼働状態にします。 これはリセッ ト時の値です。

1 = 拡張機能を不可能にします。

[19] FRCDIS フェ ッチレート制御のディセーブル。

0 = 通常のフェッチレート制御操作。 これはリセッ ト時の値です。

1 = フェッチレート制御は不可能です。

[18] 予約 SBZ

表 4-24 補助制御レジスタのビッ トの機能 (続き)

ビッ ト フ ィールド 機能

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 4-39ID013111 Non-Confidential

Page 124: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

システム制御コプロセッサ

[17] RSDIS リ ターンスタ ッ クのディセーブル。

0 = 通常のリ ターンスタ ッ ク操作。 これはリセッ ト時の値です。

1 = リ ターンスタ ッ クは非稼働です。

[16:15] BP このフ ィールドによって、 分岐予測ポリシーが制御されます。

b00 = 通常動作。 これはリセッ ト時の値です。

b01 = 分岐は必ず行われるものと予測されます。

b10 = 分岐は一切行われないものと予測されます。

b11 = 予約。 このフ ィールドが b11 に設定されている場合、 動作は予測不能です。

[14] DBWR AXI マスタでの書き込みバース トのディセーブル。

0 = 通常動作。 これはリセッ ト時の値です。

1 = 書き込みバース ト 適化を不可能にします。

[13] DLFO AXI マスタでのラインフ ィル 適化ディセーブル。

0 = 通常動作。 これはリセッ ト時の値です。

1 = 未解決のデータラインフ ィルの数を 2 に制限します。

[12] ERPEGc ランダム パリ ティエラー生成イネーブル。

0 = ランダム パリティエラー生成が不可能です。 これはリセッ ト時の値です。

1 = キャ ッシュ RAM でのランダム パリティエラー生成が可能です。

注 このビッ トによって、 システム検証中のエラー生成ロジッ クが制御されます。 通常、 合成 ASIC にはこのよ うなモデルが存在しないため、 ASIC の場合、 このビッ ト

は不要です。

[11] DNCH AXI マスタでのキャ ッシュ不可アクセスのデータフォワードのディセーブル。

0 = 通常動作。 これはリセッ ト時の値です。

1 = キャ ッシュ不可アクセスのデータフォワードを不可能にします。

[10] FORA 外部書き込み割り当て (OWA) 領域に対する外部読み出し割り当て (ORA) の強制。

0 = ORA の強制なし。 これはリセッ ト時の値です。

1 = OWA 領域に対して ORA が強制されます。

[9] FWT ライ トバッ ク (WB) 領域に対するライ ト スルー (WT) の強制。

0 = WT の強制なし。 これはリセッ ト時の値です。

1 = WB 領域に対して WT が強制されます。

[8] FDSnS MPU がオフのと きに D 側を強制的に非共有にします。

0 = 通常動作。 これはリセッ ト時の値です。

1 = MPU がオフのと き、 D 側の通常キャッシュ不可を強制的に非共有にします。

[7] sMOV 除算の sMOV は、 アウ トオブオーダ完了を行いません。 除算が完了するまで他の命

令は発行されません。

0 = 通常動作。 これはリセッ ト時の値です。

1 = sMOV アウ トオブオーダが不可能です。

[6] DILS すべてのロード / ス ト ア命令での低割り込みレイテンシを不可能にします。

0 = すべてのロード / ス ト ア命令で LIL を可能にします。 これはリセッ ト時の値です。

1 = すべてのロード / ス ト ア命令で LIL を不可能にします。

[5:3] CEC キャ ッシュパリティおよび ECC エラーに対するキャ ッシュエラー制御。

これらのビッ トの使用方法については、 表 8-2 (ページ 8-21) と表 8-3 (ページ 8-22) を参照して下さい。 リセッ ト時の値は b100 です。

表 4-24 補助制御レジスタのビッ トの機能 (続き)

ビッ ト フ ィールド 機能

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 4-40ID013111 Non-Confidential

Page 125: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

システム制御コプロセッサ

補助制御レジスタにアクセスするには、 次の命令を使用して CP15 を読み書きします。

MRC p15, 0, <Rd>, c1, c0, 1 ; Read Auxiliary Control RegisterMCR p15, 0, <Rd>, c1, c0, 1 ; Write Auxiliary Control Register

ビッ トの [31:28] または [7] を変更する命令を実行する場合は、 その直後に ISB 命令を実行するこ とをお勧めします。 これによって、 それらに依存する命令が実行される前に変更が適用されるこ とが保証されます。

c15、 2 次補助制御レジスタ

2 次補助制御レジスタには次の特徴があ り ます。

• 読み出し / 書き込みレジスタ

• 特権モードでのみアクセス可能

注 このレジスタは、 r1pm リ リースおよびそれ以降のプロセッサに実装されています。r0pm リ リースのプロセッサでこのレジスタにアクセスしよ う とする と、 未定義命令例外が発生します。

レジスタ内のビッ ト配置を、 図 4-29 (ページ 4-42) に示します。

[2] B1TCMECEN B1TCM 外部エラーのイネーブル。

0 = 不可能

1 = 可能

リセッ ト時の値は、 基本入力 ERRENRAM[2] によって定義されます。

[1] B0TCMECEN B0TCM 外部エラーのイネーブル。

0 = 不可能

1 = 可能

リセッ ト時の値は、 基本入力 ERRENRAM[1] によって定義されます。

[0] ATCMECEN ATCM 外部エラーのイネーブル。

0 = 不可能

1 = 可能

リセッ ト時の値は、 基本入力 ERRENRAM[0] によって定義されます。

a. 「デュアル発行」 (ページ 14-34) を参照して下さい。

b. 「構成信号」 (ページ A-4) を参照して下さい。

c. このビッ トは、 パリティエラー生成が設計に実装されている場合のみサポート されます。

表 4-24 補助制御レジスタのビッ トの機能 (続き)

ビッ ト フ ィールド 機能

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 4-41ID013111 Non-Confidential

Page 126: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

システム制御コプロセッサ

図 4-29 2 次補助制御レジスタの形式

2 次補助制御レジスタの機能とビッ ト値との対応を、 表 4-25 に示します。

31 22 21 19 18 17 16 15 14 13 12 11 7 3 2 1 01020 9 48

DR2BDF6DIDF2DI

DOODPFPDDI

ATCMRMW

ATCMECC

IDCDZCIOCUFCOFC

IXC

DOOFMACS

BTCMRMW

B0TCMECC

DCHE

23

表 4-25 2 次補助制御レジスタのビッ トの機能

ビッ ト フ ィールド 機能

[31:23] 予約 SBZ

[22] DCHE キャ ッシュ内でのハードエラー サポート を不可能にします。a

0 = 可能。 一部のハードエラーからキャ ッシュロジッ クが復旧します。 リ ビジ ョ ンr1p2 またはそれ以前のプロセッサでは、 この値を使用しないで下さい。

1 = 不可能。 キャ ッシュ内のほとんどのハードエラーが致命的になり ます。 これはリ

セッ ト時の値です。

詳細については、 「ハードエラー」 (ページ 8-5) を参照して下さい。

[21] DR2Bb キャ ッシュ RAM でのランダム 2 ビッ トエラー生成を可能にします。 ECC が構成さ

れていない場合、 このビッ トは機能しません (「構成可能なオプシ ョ ン」 (ページ 1-13) を参照)。

0 = 不可能。 これはリセッ ト時の値です。

1 = 可能

注 このビッ トによって、 システム検証中のエラー生成ロジッ クが制御されます。 通常、

合成 ASIC にはこのよ うなモデルが存在しないため、 ASIC の場合、 このビッ トは不要です。

[20] DF6DI F6 デュアル発行の制御 c

0 = 可能。 これはリセッ ト時の値です。

1 = 不可能

[19] DF2DI F2_Id/F2_st/F2D デュアル発行の制御 c

0 = 可能。 これはリセッ ト時の値です。

1 = 不可能

[18] DDI F1/F3/F4 デュアル発行の制御 c

0 = 可能。 これはリセッ ト時の値です。

1 = 不可能

[17] DOODPFP アウ トオブオーダ倍精度浮動小数点命令の制御 c

0 = 可能。 これはリセッ ト時の値です。

1 = 不可能

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 4-42ID013111 Non-Confidential

Page 127: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

システム制御コプロセッサ

[16] DOOFMACS アウ トオブオーダ FMACS の制御。 c

0 = 可能。 これはリセッ ト時の値です。

1 = 不可能

[15:14] 予約 SBZ

[13] IXC 浮動小数点不正確例外出力のマスク。c

0 = 浮動小数点不正確例外出力をマスクします。 出力の FPIXC は強制的に 0 になり

ます。 これはリセッ ト時の値です。

1 = 浮動小数点不正確例外フラグの FPSCR.IXC を出力の FPIXC に反映させます。

[12] OFC 浮動小数点オーバフロー例外出力のマスク c

0 = 浮動小数点オーバフロー例外出力をマスクします。 出力の FPOFC は強制的に 0になり ます。 これはリセッ ト時の値です。

1 = 浮動小数点オーバフロー例外フラグの FPSCR.OFC を出力の FPOFC に反映させます。

[11] UFC 浮動小数点アンダーフロー例外出力のマスク c

0 = 浮動小数点アンダーフロー例外出力をマスクします。 出力の FPUFC は強制的に

0 になり ます。 これはリセッ ト時の値です。

1 = 浮動小数点アンダーフロー例外フラグの FPSCR.UFC を出力の FPUFC に反映させます。

[10] IOC 浮動小数点無効操作例外出力のマスク c

0 = 浮動小数点無効操作例外出力をマスクします。 出力の FPIOC は強制的に 0 にな

り ます。 これはリセッ ト時の値です。

1 = 浮動小数点無効操作例外フラグの FPSCR.IOC を出力の FPIOC に反映させます。

[9] DZC 浮動小数点の 0 による除算例外出力のマスク c

0 = 浮動小数点の 0 による除算例外出力をマスク します。 出力の FPDZC は強制的に

0 になり ます。 これはリセッ ト時の値です。

1 = 浮動小数点の 0 による除算例外フラグの FPSCR.DZC を出力の FPDZC に反映させます。

[8] IDC 浮動小数点入力非正規化例外出力のマスク c

0 = 浮動小数点入力非正規化例外出力をマスクします。 出力の FPIDC は強制的に 0になり ます。 これはリセッ ト時の値です。

1 = 浮動小数点入力非正規化例外フラグの FPSCR.IDC を、 出力の FPIDC に反映させます。

[7:4} 予約 SBZ

[3] BTCMECC BTCM ポート上での内部 ECC ロジッ クの補正d

0 = 可能。 これはリセッ ト時の値です。

1 = 不可能

[2] ATCMECC ATCM ポート上での内部 ECC ロジッ クの補正 d

0 = 可能。 これはリセッ ト時の値です。

1 = 不可能

表 4-25 2 次補助制御レジスタのビッ トの機能 (続き)

ビッ ト フ ィールド 機能

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 4-43ID013111 Non-Confidential

Page 128: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

システム制御コプロセッサ

2 次補助制御レジスタにアクセスするには、 次の命令を使用して CP15 を読み書きします。

MRC p15, 0, <Rd>, c15, c0, 0 ; Read Secondary Auxiliary Control RegisterMCR p15, 0, <Rd>, c15, c0, 0 ; Write Secondary Auxiliary Control Register

ビッ ト [20:16] を変更する命令を実行する場合は、 その直後に ISB 命令を実行することをお勧めします。 これによって、 それらに依存する命令が実行される前に変更が適用されるこ とが保証されます。

4.2.17 c1、 コプロセッサアクセス レジスタ

コプロセッサアクセス レジスタは、 コプロセッサ CP0 ~ CP13 に対してアクセス権を設定します。 このレジスタは、 CP14、 デバッグ制御レジスタ、 または CP15 (システム制御コプロセッサ) には影響を与えません。 また、 このレジスタは、 特定のコプロセッサ (CP0 ~ CP13) がシステム内に存在するかど うかを特定する手段をソフ トウェアに提供します。

コプロセッサアクセス レジスタには次の特徴があ り ます。

• 読み出し / 書き込みレジスタ

• 特権モードでのみアクセス可能

本プロセッサはコプロセッサの CP0 ~ CP9、 CP12、 CP13 をサポート していないため、 このレジスタのビッ ト [27:24] と [19:0] は読み出し値 0 で、 書き込みは無視されます。

レジスタ内のビッ ト配置を、 図 4-30 に示します。

図 4-30 コプロセッサアクセス レジスタの形式

[1] BTCMRMW BTCM に対する 64 ビッ ト ス ト アのイネーブル。 可能な場合、 プロセッサは読み出し

- 変更 - 書き込みを使用して、 BTCM ポートに出力されるすべての読み出し と書き込

みが 64 ビッ ト幅であるこ とを保証します。e

0 = 不可能

1 = 可能

リセッ ト時の値は、 基本入力 RMWENRAM[1] によって定義されます。

[0] ATCMRMW ATCM に対する 64 ビッ ト ス ト アのイネーブル。 可能な場合、 プロセッサは読み出し

- 変更 - 書き込みを使用して、 ATCM ポートに出力されるすべての読み出し と書き込みが 64 ビッ ト幅であるこ とを保証します。 e

0 = 不可能

1 = 可能

リセッ ト時の値は、 基本入力 RMWENRAM[0] によって定義されます。

a. 両方のキャ ッシュに ECC とパリ ティのいずれも存在しない場合、 このビッ トは RAZ です。

b. このビッ トは、 パリ ティエラー生成が設計に実装されている場合のみサポート されます。c. 浮動小数点ユニッ ト (FPU) が構成されていない場合、 このビッ トは機能しません (「構成可能なオプシ ョ ン」

(ページ 1-13) を参照)。

d. 各 TCM インタフェースに対して TCM ECC ロジッ クが構成されていない場合、 このビッ トは機能しません

(「構成可能なオプシ ョ ン」 (ページ 1-13) を参照)。

e. TCM インタフェースが 32 ビッ ト ECC で構築されている場合、 この機能は使用できません。

表 4-25 2 次補助制御レジスタのビッ トの機能 (続き)

ビッ ト フ ィールド 機能

31 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0

cp13 cp12 cp11 cp10 cp9 cp8 cp7 cp6 cp5 cp4 cp3 cp2 cp1 cp0

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 4-44ID013111 Non-Confidential

Page 129: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

システム制御コプロセッサ

コプロセッサアクセス レジスタの機能とビッ ト値との対応を、 表 4-26 に示します。

コプロセッサアクセス レジスタにアクセスするには、 次の命令を使用して CP15 を読み書きします。

MRC p15, 0, <Rd>, c1, c0, 2 ; Read Coprocessor Access RegisterMCR p15, 0, <Rd>, c1, c0, 2 ; Write Coprocessor Access Register

4.2.18 フォールトステータス レジスタとフォールトアドレス レジスタ

プロセッサは、 動作中に発生したフォールトのステータス とアドレスを報告します。データフォールト と命令フォールトの両方に、 2 つのフォールト ステータス レジスタ (FSR) と 1 つのフォールト アドレス レジスタ (FAR) が存在します。

データ FSR と命令 FSR のフィールドは、 フォールトの優先度と ソース、 および対応する FAR のアドレスの有効性を示します。 FSR のエンコードを、 表 4-27 に示します。

他の FSR ビッ トのエンコードはすべて予約されています。

c5、 データフォールト ステータスレジスタ

データフォールト ステータスレジスタ (DFSR) は、 後のデータアボートのソースに関するステータス情報を保持します。

表 4-26 コプロセッサアクセス レジスタのビッ トの機能

ビッ ト フ ィールド 機能

[31:28] 予約 SBZ

[27:0] cp<n>a 各コプロセッサのアクセス許可を定義します。

リセッ ト時の状態はアクセス拒否で、 コプロセッサが存在しない場合もこの状態です。

b00 = アクセス拒否。 アクセスを試みる と、 未定義例外が生成されます。

b01 = 特権モードアクセスのみ

b10 = 予約

b11 = 特権モードアクセス とユーザモード アクセス

FPU へのアクセス許可は、 フ ィールド cp10 および cp11 によ り設定されます。

他のすべてのコプロセッサフ ィールドの値は、 b00 に固定されています。

a. n は、 0 ~ 13 のコプロセッサ番号です。

表 4-27 フォールトステータス レジスタのエンコード

優先度 ソース FSR[10,3:0] FAR

高 アライ メン ト 0b00001 有効

バッ クグラウンド 0b00000 有効

アクセス許可 0b01101 有効

正確外部アボート 0b01000 有効

不正確外部アボート 0b10110 予測不能

正確パリティ /ECC エラー 0b11001 有効

不正確パリティ /ECC エラー 0b11000 予測不能

低 デバッグイベン ト 0b00010 変更なし

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 4-45ID013111 Non-Confidential

Page 130: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

システム制御コプロセッサ

データフォールト ステータスレジスタには次の特徴があ り ます。

• 読み出し / 書き込みレジスタ

• 特権モードでのみアクセス可能

データフォールト ステータスレジスタのビッ ト配置を、 図 4-31 に示します。

図 4-31 データフォールト ステータスレジスタの形式

データフォールト ステータスレジスタの機能とビッ ト値との対応を、 表 4-28 に示します。

DFSR を使用するには、 次の命令を使用して CP15 を読み書きします。

MRC p15, 0, <Rd>, c5, c0, 0 ; Read Data Fault Status RegisterMCR p15, 0, <Rd>, c5, c0, 0 ; Write Data Fault Status Register

c5、 命令フォールト ステータスレジスタ

命令フォールト ステータスレジスタ (IFSR) は、 後の命令アボートのソースに関するステータス情報を保持します。

命令フォールト ステータスレジスタには次の特徴があ り ます。

• 読み出し / 書き込みレジスタ

• 特権モードでのみアクセス可能

命令フォールト ステータスレジスタのビッ ト配置を、 図 4-32 (ページ 4-47) に示します。

0

31 8 7 4 3 09

0S

10111213

RWSD

表 4-28 データフォールト ステータスレジスタのビッ トの機能

ビッ ト フ ィールド 機能

[31:13] 予約 SBZ

[12] SD 外部アボートでの AXI デコードエラーとスレーブエラーを区別します。 このビッ トは、

外部アボートに対してのみ有効です。 その他のアボート タイプでは、 このビッ トは 0 にセッ ト されます。

0 = AXI デコードエラー (DECERR) でアボートが発生しました。

1 = AXI スレーブエラー (SLVERR、 または排他的読み出し ト ランザクシ ョ ンに対する応

答の OKAY) でアボートが発生しました。

[11] RW 読み出しアクセス と書き込みアクセスのどちらでアボートが発生したかを示します。

0 = 読み出しアクセスでアボートが発生しました。

1 = 書き込みアクセスでアボートが発生しました。

[10]a S ステータスフ ィールドの一部

[9:8] - 常に 0 と して読み出されます。 書き込みは無視されます。

[7:4] ド メ イン SBZ。 これは、 このプロセッサにド メ インが実装されていないためです。

[3:0]a ステータス 生成されたフォールトのタイプを示します。 データフォールト を特定するには、 ビッ ト[12] およびビッ ト [10] とビッ ト [3:0] とを組み合わせて使用する必要があ り ます。

a. フォールト報告時のこれらのビッ トの使用方法については、 表 4-27 (ページ 4-45) を参照して下さい。

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 4-46ID013111 Non-Confidential

Page 131: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

システム制御コプロセッサ

図 4-32 命令フォールト ステータスレジスタの形式

命令フォールト ステータスレジスタの機能とビッ ト値との対応を、 表 4-29 に示します。

IFSR にアクセスするには、 次の命令を使用して CP15 を読み書きします。

MRC p15, 0, <Rd>, c5, c0, 1 ; Read Instruction Fault Status RegisterMCR p15, 0, <Rd>, c5, c0, 1 ; Write Instruction Fault Status Register

c5、 補助フォールト ステータスレジスタ

補助フォールト ステータスレジスタは、 次の 2 つです。

• 補助データフォールト ステータスレジスタ (ADFSR)

• 補助命令フォールト ステータスレジスタ (AIFSR)

これらのレジスタは、 データおよび命令のパリティ、 ECC、 外部 TCM エラーに関する追加情報を提供します。

補助フォールト ステータスレジスタには次の特徴があ り ます。

• 読み出し / 書き込みレジスタ

• 特権モードでのみアクセス可能

補助フォールト ステータスレジスタのビッ ト配置を、 図 4-33 (ページ 4-48) に示します。

S

31 3 04910111213

SD

8 7

表 4-29 命令フォールト ステータスレジスタのビッ トの機能

ビッ ト フ ィールド 機能

[31:13] 予約 SBZ

[12] SD 外部アボートでの AXI デコードエラーとスレーブエラーを区別します。 このビッ トは、

外部アボートに対してのみ有効です。 その他のアボート タイプでは、 このビッ トは 0 にセッ ト されます。

0 = AXI デコードエラー (DECERR) でアボートが発生しました。

1 = AXI スレーブエラー (SLVERR) でアボートが発生しました。

[11] 予約 SBZ

[10]a S ステータスフ ィールドの一部

[9:8] 予約 SBZ

[7:4] ド メ イン SBZ。 これは、 このプロセッサにド メ インが実装されていないためです。

[3:0]a ステータス 生成されたフォールトのタイプを示します。 命令フォールト を特定するには、 ビッ ト[12] およびビッ ト [10] とビッ ト [3:0] とを組み合わせて使用する必要があ り ます。

a. フォールト報告時のこれらのビッ トの使用方法につては、 表 4-27 (ページ 4-45) を参照して下さい。

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 4-47ID013111 Non-Confidential

Page 132: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

システム制御コプロセッサ

図 4-33 補助フォールト ステータスレジスタの形式

補助フォールト ステータスレジスタの機能とビッ ト値との対応を、 表 4-30 に示します。

補助フォールト ステータスレジスタにアクセスするには、 次の命令を使用して CP15を読み書きします。

MCR p15, 0, <Rd>, c5, c1, 0 ; Write Auxiliary Data Fault Status Register MRC p15, 0, <Rd>, c5, c1, 0 ; Read Auxiliary Data Fault Status Register MCR p15, 0, <Rd>, c5, c1, 1 ; Write Auxiliary Instruction Fault Status RegisterMRC p15, 0, <Rd>, c5, c1, 1 ; Read Auxiliary Instruction Fault Status Register

補助フォールト ステータスレジスタの内容は、 対応するデータフォールト ステータスレジスタまたは命令フォールト ステータスレジスタがパリ ティエラーの発生を示している場合にのみ有効です。 その他の場合、 補助フォールト ステータスレジスタの内容は予測不能です。

c6、 データフォールト アドレスレジスタ

データフォールト アドレスレジスタ (DFAR) は、 正確アボートが発生した場合にフォールト アドレスを保持します。

DFAR には次の特徴があ り ます。

• 読み出し / 書き込みレジスタ

• 特権モードでのみアクセス可能

31 0427 24 23 22 14 13 528 21 20

表 4-30 ADFSR と AIFSR のビッ トの機能

ビッ ト フ ィールド 機能

[31:28] 予約 SBZ

[27:24] CacheWaya このフ ィールドに返される値は、 エラーが発生したキャ ッシュウェイを示します。

[23:22] Side このフ ィールドに返される値は、 エラーのソースを示します。 可能な値は次のとおりです。

b00 = キャ ッシュまたは AXI マスタインタフェース

b01 = ATCMb10 = BTCM

b11 = 予約

[21] 回復可能なエラー

このフ ィールドに返される値は、 エラーが回復可能かど うかを示します。

0 = 回復不能なエラー

1 = 回復可能なエラー。 これには、 すべての訂正可能なパリティ /ECC エラーと、 回復可能な TCM 外部エラーが含まれます。

[20:14] 予約 SBZ

[13:5] インデクスb このフ ィールドは、 エラーを引き起こしたアクセスのインデクス値を返します。

[4:0] 予約 SBZ

a. このフ ィールドは、 データキャ ッシュ ス ト アのパリティ /ECC エラーの場合にのみ有効です。 それ以外の場合

は予測不能です。b. このフ ィールドは、 データキャ ッシュ ス ト アのパリティ /ECC エラーの場合にのみ有効です。 AIFSR 上、 およ

び TCM アクセスの場合、 このフ ィールドは SBZ です。

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 4-48ID013111 Non-Confidential

Page 133: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

システム制御コプロセッサ

データフォールト アドレスレジスタのビッ ト [31:0] には、 正確アボートが発生したアドレスが格納されます。

DFAR にアクセスするには、 次の命令を使用して CP15 を読み書きします。

MRC p15, 0, <Rd>, c6, c0, 0 ; Read Data Fault Address RegisterMCR p15, 0, <Rd>, c6, c0, 0 ; Write Data Fault Address Register

このレジスタに書き込むと、 書き込まれたデータ値に DFAR が設定されます。 これは、 デバッガで DFAR の値を復元するために役立ちます。

プロセッサは、 ウォ ッチポイン トによるデバッグ例外エン ト リでも DFAR を更新します。 詳細については、 「CP15 レジスタおよび WFAR へのデバッグ例外の影響」 (ページ 11-42) を参照して下さい。

c6、 命令フォールト アドレスレジスタ

命令フォールト アドレスレジスタ (IFAR) の目的は、 プリ フェ ッチアボート を引き起こした命令のアドレスを保持するこ とです。

IFAR には次の特徴があ り ます。

• 読み出し / 書き込みレジスタ

• 特権モードでのみアクセス可能

命令フォールト アドレスレジスタのビッ ト [31:0] には、 命令フォールト アドレスが格納されます。

IFAR にアクセスするには、 次の命令を使用して CP15 を読み書きします。

MRC p15, 0, <Rd>, c6, c0, 2 ; Read Instruction Fault Address RegisterMCR p15, 0, <Rd>, c6, c0, 2 ; Write Instruction Fault Address Register

このレジスタに書き込むと、 書き込まれたデータ値に IFAR が設定されます。 これは、 デバッガで IFAR の値を復元するために役立ちます。

4.2.19 c6、 MPU メモリ領域プログラ ミングレジスタ

MPU メモ リ領域プログラ ミ ングレジスタは、 MPU 領域をプログラムします。

領域レジスタのどのセッ トにアクセスするかを指定するレジスタが 1 つ存在します。「c6、 MPU メモ リ領域番号レジスタ」 (ページ 4-53) を参照して下さい。 各領域には、 次に示す項目を指定するための個別のレジスタが存在します。

• 領域ベースアドレス

• 領域サイズおよびイネーブル

• 領域アクセス制御

プロセッサには、 8 つまたは 12 個の領域を実装できます。 または、 MPU なしで実装するこ と もできます。 プロセッサを MPU なしで実装した場合、 領域、 および領域プログラ ミ ングレジスタは存在しません。

注 • MPU が稼働状態の場合は、 次の規則が適用されます。

— MPU が、 TCM を含むすべてのメモ リ アクセスに対するアクセス許可を決定します。 そのため、 MPU 内のメモ リ領域が、 適切なアクセス許可が設定された TCM アドレス空間を完全にカバーするよ うにプログラムされているこ とを保証する必要があ り ます。 MPU には 1 つ以上の領域を定義する必要があ り ます。

— メモ リの未定義領域にアクセスする と、 バッ クグラウンドフォールトが発生します。

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 4-49ID013111 Non-Confidential

Page 134: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

システム制御コプロセッサ

• TCM 空間では、 プロセッサはアクセス許可を使用しますが、 MPU からの領域属性は無視します。

TCM ベースアドレスの位置は、 CP15、 c9 によって設定されます。 詳細については、 「c9、 BTCM 領域レジスタ」 (ページ 4-57) と 「c9、 ATCM 領域レジスタ」 (ページ 4-58) を参照して下さい。

c6、 MPU 領域ベースアドレス レジスタ

MPU 領域ベースアドレス レジスタは、 メモ リ領域番号レジスタで指定された領域のベースアドレスを示します。 この領域ベースアドレスは、 領域サイズに常にアラインしている必要があ り ます。

MPU 領域ベースアドレス レジスタには次の特徴があ り ます。

• 32 ビッ トの読み出し / 書き込みレジスタ

• 特権モードでのみアクセス可能

レジスタのビッ ト配置を、 図 4-34 に示します。

図 4-34 MPU 領域ベースアドレス レジスタの形式

MPU 領域ベースアドレス レジスタの機能とビッ ト値との対応を、 表 4-31 に示します。

MPU 領域ベースアドレス レジスタにアクセスするには、 次の命令を使用して CP15を読み書きします。

MRC p15, 0, <Rd>, c6, c1, 0 ; Read MPU Region Base Address RegisterMCR p15, 0, <Rd>, c6, c1, 0 ; Write MPU Region Base Address Register

c6、 MPU 領域サイズおよびイネーブルレジスタ

MPU 領域サイズおよびイネーブルレジスタの機能は次のとおりです。

• メモ リ領域番号レジスタで指定された領域のサイズを指定します。

• 特定の領域に使用されるアドレス範囲を識別します。

• メモ リ領域番号レジスタで指定された領域とそのサブ領域を、 稼働または非稼働にします。

MPU 領域サイズおよびイネーブルレジスタには次の特徴があ り ます。

• 32 ビッ トの読み出し / 書き込みレジスタ

• 特権モードでのみアクセス可能

レジスタのビッ ト配置を、 図 4-35 (ページ 4-51) に示します。

31 045

表 4-31 MPU 領域ベースアドレス レジスタのビッ トの機能

ビッ ト フ ィールド 機能

[31:5] ベースアドレス 物理ベースアドレス。 領域のベースアドレスを定義します。

[4:0] 予約 SBZ

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 4-50ID013111 Non-Confidential

Page 135: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

システム制御コプロセッサ

図 4-35 MPU 領域サイズおよびイネーブルレジスタの形式

MPU 領域サイズおよびイネーブルレジスタの機能とビッ ト値との対応を、 表 4-32 に示します。

MPU 領域サイズおよびイネーブルレジスタにアクセスするには、 次の命令を使用して CP15 を読み書きします。

MRC p15, 0, <Rd>, c6, c1, 2 ; Read Data MPU Region Size and Enable RegisterMCR p15, 0, <Rd>, c6, c1, 2 ; Write Data MPU Region Size and Enable Register

範囲外の領域サイズを書き込んだ場合、 動作は予測不能です。

c6、 MPU 領域アクセス制御レジスタ

MPU 領域アクセス制御レジスタは、 メモ リ領域番号レジスタで指定された領域に関する、 領域属性とアクセス許可を保持します。

31 6 5 01781516

表 4-32 領域サイズレジスタのビッ トの機能

ビッ ト フ ィールド 機能

[31:16] 予約 SBZ

[15:8] サブ領域ディセーブル 各ビッ ト位置がサブ領域の 0 ~ 7 を表します。a

ビッ ト [8] がサブ領域 0 に対応します。

...

ビッ ト [15] がサブ領域 7 に対応します。

各ビッ トの意味は次のとおりです。

0 = アドレス範囲はこの領域の一部です。

1 = アドレス範囲はこの領域の一部ではあ り ません。

予約 SBZ

[5:1] 領域サイズ 領域サイズを定義します。

b00000 ~ b00011 = 予測不能

b00100 = 32 バイ ト

b00101 = 64 バイ ト

b00110 = 128 バイ ト

b00111 = 256 バイ ト

b01000 = 512 バイ ト

b01001 = 1 KBb01010 = 2 KBb01011 = 4 KB

b01100 = 8 KBb01101 = 16 KBb01110 = 32 KBb01111 = 64 KBb10000 = 128 KBb10001 = 256 KBb10010 = 512 KBb10011 = 1 MBb10100 = 2 MBb10101 = 4 MB

b10110 = 8 MBb10111 = 16 MBb11000 = 32 MBb11001 = 64 MBb11010 = 128 MBb11011 = 256 MBb11100 = 512 MBb11101 = 1 GBb11110 = 2 GBb11111 = 4 GB

[0] イネーブル メモ リ領域を稼働または非稼働にします。

0 = メモ リ領域は非稼働です。 リセッ ト時には、 メモ リ領域は非稼働にな

り ます。

1 = メモ リ領域は稼働状態です。 メモ リ領域を使用する前に、 稼働状態に

する必要があ り ます。

a. サブ領域 0 は領域内の 下位アドレスをカバーし、 サブ領域 7 は領域内の 上位アドレスをカバーします。

詳細については、 「サブ領域」 (ページ 7-3) を参照して下さい。

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 4-51ID013111 Non-Confidential

Page 136: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

システム制御コプロセッサ

MPU 領域アクセス制御レジスタには次の特徴があ り ます。

• 読み出し / 書き込みレジスタ

• 特権モードでのみアクセス可能

レジスタのビッ ト配置を、 図 4-36 に示します。

図 4-36 MPU 領域アクセス制御レジスタの形式

領域アクセス制御レジスタの機能とビッ ト値との対応を、 表 4-33 に示します。

特権およびユーザ データアクセスの許可を示す AP ビッ ト値を、 表 4-34 に示します。

BC

31 3 0

TEX S

12567811 1012

XN AP

13

表 4-33 MPU 領域アクセス制御レジスタのビッ トの機能

ビッ ト フ ィールド 機能

[31:13] 予約 SBZ

[12] XN 実行不可。 特定のメモ リ領域が実行可能かど うかを示します。

0 = すべての命令フェッチが可能です。

1 = すべての命令フェッチが不可能です。

[11] - 予約

[10:8] AP アクセス許可。 データアクセス許可を定義します。 AP ビッ ト値の詳細については、

表 4-34 を参照して下さい。

[7:6] 予約 SBZ

[5:3] TEX タイプ拡張。 タイプ拡張属性を定義します。a

[2] S 共有。 メモ リ領域が共有か非共有かを示します。

0 = 非共有

1 = 共有

このビッ トは、 ノーマルメモ リにのみ適用され、 デバイスまたはス ト ロング リオーダメモ リには適用されません。

[1] C C ビッ ト a

[0] B B ビッ ト a

a. この領域属性の詳細については、 表 7-3 (ページ 7-9) を参照して下さい。

表 4-34 アクセスデータ許可ビッ トのエンコード

AP ビッ ト値 特権アクセス許可 ユーザアクセス許可 説明

b000 アクセス不可 アクセス不可 すべてのアクセスでアクセス許可フォールトが生成される

b001 読み出し / 書き込み アクセス不可 特権アクセスのみ

b010 読み出し / 書き込み 読み出し専用 ユーザモードで書き込みを行う とアクセス許可フォールトが生成される

b011 読み出し / 書き込み 読み出し / 書き込み 完全アクセス

b100 UNP UNP 予約

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 4-52ID013111 Non-Confidential

Page 137: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

システム制御コプロセッサ

MPU 領域アクセス制御レジスタにアクセスするには、 次の命令を使用して CP15 を読み書きします。

MRC p15, 0, <Rd>, c6, c1, 4 ; Read Region access control RegisterMCR p15, 0, <Rd>, c6, c1, 4 ; Write Region access control Register

ユーザモード と特権モードで命令を実行するには、 次の条件が満たされているこ とが必要です。

• その領域について、 AP ビッ トで読み出しアクセス権が定義されている。

• XN ビッ トが 0 にセッ ト されている。

c6、 MPU メモリ領域番号レジスタ

MPU 領域レジスタは複数存在し、 実装されている メモ リ領域ごとに 1 つのレジスタが対応します。 MPU メモ リ領域番号レジスタに格納されている値によ り、 どのレジスタにアクセスするかが決定されます。

MPU メモ リ領域番号レジスタには次の特徴があ り ます。

• 読み出し / 書き込みレジスタ

• 特権モードでのみアクセス可能

レジスタ内のビッ ト配置を、 図 4-37 に示します。

図 4-37 MPU メモリ領域番号レジスタの形式

MPU メモ リ領域番号レジスタの機能とビッ ト値との対応を、 表 4-35 に示します。

MPU メモ リ領域番号レジスタにアクセスするには、 次の命令を使用して CP15 を読み書きします。

MRC p15, 0, <Rd>, c6, c2, 0 ; Read MPU Memory Region Number RegisterMCR p15, 0, <Rd>, c6, c2, 0 ; Write MPU Memory Region Number Register

このレジスタに、 MPU タイプレジスタから取得した領域数以上の値を書き込んだ場合、 動作は予測不能です。 関連するレジスタバンクへのアクセスも予測不能になります。

b101 読み出し専用 アクセス不可 特権読み出し専用

b110 読み出し専用 読み出し専用 特権 / ユーザ読み出し専用

b111 UNP UNP 予約

表 4-34 アクセスデータ許可ビッ トのエンコード (続き)

AP ビッ ト値 特権アクセス許可 ユーザアクセス許可 説明

31 4 03

表 4-35 MPU メモリ領域番号レジスタのビッ トの機能

ビッ ト フ ィールド 機能

[31:4] 予約 SBZ

[3:0] 領域 アクセス対象のレジスタグループを定義します。 MPU タイプレジスタを読み出すと、 サポート されている領域の数を特定できます (「c0、 MPU タイプレジスタ」 (ページ 4-17)を参照)。

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 4-53ID013111 Non-Confidential

Page 138: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

システム制御コプロセッサ

4.2.20 キャッシュ操作

c7 は、 関連するキャ ッシュの管理に使用されます。 保守操作は、 2 つの管理グループに分類されます。

• セッ ト / ウェイによる操作

— ク リーニング

— 無効化

— ク リーニングと無効化

• アドレスによる操作。 通常、 このアドレスには MVA (修飾仮想アドレス) のラベルが付けられますが、 本プロセッサではすべてのアドレスが同一です。

— ク リーニング

— 無効化

— ク リーニングと無効化

加えて、 保守操作では次の定義が使用されます。

コ ヒーレンシ時点 (PoC)

すべての命令、 データ、 または変換テーブルウォークが、 システム内のすべてのプロセッサから可視になる時点。

統一時点 (PoU)

命令とデータが統一され、 自己変更コードが動作可能となる時点。

MCR 命令と MRC 命令を使用して動作する、 このグループ内の機能の配置を、 図 4-38 (ページ 4-55) に示します。

注 図 4-38 (ページ 4-55) に示すよ うに、 次の操作は、 無操作 (NOP) と してプロセッサに実装されています。

• 割り込み待ち、 CRm= c0、 Opcode_2 = 4

• 分岐予測器アレイ全体の無効化、 CRm= c5、 Opcode_2 = 6

• MVA による分岐予測器アレイラインの無効化、 CRm= c5、 Opcode_2 = 7

割り込み待ち (WFI) 命令は、 割り込み待ち機能を提供します。 詳細については、『ARM アーキテクチャ リ ファレンスマニュアル』 を参照して下さい。

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 4-54ID013111 Non-Confidential

Page 139: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

システム制御コプロセッサ

図 4-38 キャッシュ操作

本プロセッサでは、 レジスタ c7 のキャ ッシュ管理機能に加えて、 データキャ ッシュ全体の無効化操作が c15 操作と して提供されます。 便宜上、 この c15 操作についても このセクシ ョ ンで説明します。

注 • c7 に、 図 4-38 に記載されていない CRm と Opcode_2 の組み合わせを書き込む

と、 未定義例外が発生します。

• 本プロセッサでは、 c7 を読み出すと未定義例外が発生します。

• c7 に対するすべてのアクセスは、 プ リ フェ ッチバッファのフラ ッシュ、 データ同期バリ ア、 データ メモ リバリ アの操作を除いて、 特権モード動作時にのみ実行できます。 これら 3 つの操作は、 ユーザモードで実行できます。 ユーザモードで特権命令の実行を試みる と、 未定義例外が発生します。

• 本プロセッサには、 アドレスベースの分岐予測器アレイは内蔵されていません。

無効化操作とクリーニング操作

無効化、 ク リーニング、 プ リ フェ ッチ操作という用語の意味は、 『ARM アーキテクチャ リ ファレンスマニュアル』 で定義されています。

次の要素に対して、 無効化操作と ク リーニング操作を実行できます。

• 単一のキャ ッシュライン

• キャ ッシュ全体

セッ ト / ウェイの形式

無効化操作と ク リーニング操作に使用されるセッ ト / ウェイの形式を、 図 4-39 (ページ 4-56) に示します。

c7 SBZ

SBZ

MVA

SBZ

MVA

MVA

SBZ

SBZ

MVA

/MVA

(NOP)

(NOP)

VA (NOP)

MVA

MVA

MVA/

MVA/

Opcode_2CRmCRn Opcode_1

SBZ

MVA

SBZ 0MVA MVA

/

SBZ0c15

/

4c001467

c5

1

2c6

1c102451c11

0

1c142

c50

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 4-55ID013111 Non-Confidential

Page 140: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

システム制御コプロセッサ

図 4-39 c7 のセッ ト / ウェイ形式

セッ ト / ウェイ形式での操作について、 キャ ッシュ操作機能とビッ ト値との対応を、表 4-36 に示します。

キャ ッシュサイズと、 セッ トのビッ ト範囲との関係を、 表 4-37 に示します。

キャ ッシュサイズの詳細については、 「c0、 キャ ッシュタイプ レジスタ」 (ページ 4-15) を参照して下さい。

アドレス形式

無効化操作と ク リーニング操作のアドレス形式を、 図 4-40 に示します。

図 4-40 キャッシュ操作のアドレス形式

05 4S+4S+531 2930

表 4-36 c7 のセッ ト / ウェイビッ ト

ビッ ト フ ィールド 機能

[31:30] ウェイ 無効化またはク リーニングするキャ ッシュウェイを示します。

[29:S + 5] 予約 SBZ

[S + 4:5] セッ ト 無効化またはク リーニングするキャ ッシュセッ ト を示します。 キャ ッシュサイズは構成可能なため、 セッ ト フ ィールドの幅はキャッシュサイズによって異なり ます。表 4-37 を参照して下さい。

[4:0] 予約 SBZ

表 4-37 レベル 1 キャッシュサイズとセッ ト フ ィールド幅との関係

サイズ セッ ト

4 KB [9:5]

8 KB [10:5]

16 KB [11:5]

32 KB [12:5]

64 KB [13:5]

31 4 05

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 4-56ID013111 Non-Confidential

Page 141: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

システム制御コプロセッサ

無効化操作と ク リーニング操作のアドレス形式とビッ ト値との対応を、 表 4-38 に示します。

データ同期バリア操作

データ同期バリ ア操作は、 未解決のすべての明示的なメモ リ ト ランザクシ ョ ンが、後続の命令の開始前に完了するこ とを保証するために使用します。 これによって、プロセッサが後続の命令を実行する前に、 メモ リ内のデータが 新の状態になることが保証されます。

データ同期バリ アレジスタには次の特徴があ り ます。

• 書き込み専用操作

• ユーザモード と特権モードの両方でアクセス可能

データ同期バリア操作にアクセスするには、 次の命令を使用して CP15 に書き込みます。

MCR p15, 0, <Rd>, c7, c10, 4 ; Data Synchronization Barrier operation

メモ リバリ アの詳細については、 『ARM アーキテクチャ リ ファレンスマニュアル』を参照して下さい。

データ メモリバリア操作

データ メモ リバリ ア操作は、 未解決のすべての明示的なメモ リ ト ランザクシ ョ ンが、後続の明示的なメモ リ ト ランザクシ ョ ンの開始前に完了するこ とを保証するために使用します。 これによって、 メモ リ内のデータが、 それに依存するいずれかのメモリ ト ランザクシ ョ ンが行われる前に 新の状態になるこ とが保証されます。

データ メモ リバリ ア操作には次の特徴があ り ます。

• 書き込み専用

• ユーザモード と特権モードでアクセス可能

データ メモ リバリ ア操作にアクセスするには、 次の命令を使用して CP15 に書き込みます。

MCR p15, 0, <Rd>, c7, c10,5 ; Data Memory Barrier Operation.

メモ リバリ アの詳細については、 『ARM アーキテクチャ リ ファレンスマニュアル』を参照して下さい。

4.2.21 c9、 BTCM 領域レジスタ

BTCM 領域レジスタは、 BTCM のベースアドレス とサイズを保持します。 また、BTCM が稼働しているかど うかも示します。

BTCM 領域レジスタには次の特徴があ り ます。

• 読み出し / 書き込みレジスタ

• 特権モードでのみアクセス可能

レジスタ内のビッ ト配置を、 図 4-41 (ページ 4-58) に示します。

表 4-38 c7 のアドレス形式ビッ ト

ビッ ト フ ィールド 機能

[31:5] アドレス 無効化またはク リーニングするアドレスを示す

[4:0] 予約 SBZ

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 4-57ID013111 Non-Confidential

Page 142: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

システム制御コプロセッサ

図 4-41 BTCM 領域レジスタ

BTCM 領域レジスタの機能とビッ ト値との対応を、 表 4-39 に示します。

BTCM 領域レジスタにアクセスするには、 次の命令を使用して CP15 を読み書きします。

MRC p15, 0, <Rd>, c9, c1, 0 ; Read BTCM Region RegisterMCR p15, 0, <Rd>, c9, c1, 0 ; Write BTCM Region Register

4.2.22 c9、 ATCM 領域レジスタ

ATCM 領域レジスタは、 ATCM のベースアドレス とサイズを保持します。 また、ATCM が稼働しているかど うかも示します。

ATCM 領域レジスタには次の特徴があ り ます。

• 読み出し / 書き込みレジスタ

• 特権モードでのみアクセス可能

レジスタ内のビッ ト配置を、 図 4-42 (ページ 4-59) に示します。

31 12 11 7 6 2 1 0

表 4-39 BTCM 領域レジスタのビッ トの機能

ビッ ト フ ィールド 機能

[31:12] ベースアドレス

ベースアドレス。 BTCM のベースアドレスを定義します。 このベースアドレスは、

BTCM のサイズにアラインしている必要があ り ます。 [(log2(RAMSize) - 1):12] の範囲内

のビッ トはすべて無視されます。

リセッ ト時に、 LOCZRAMA が設定されている値によ り、 ベースアドレスが次のよ う

に設定されます。

0 = 初期ベースアドレスは 0x0 です。

1 = 初期ベースアドレスは実装定義です。 「構成可能なオプシ ョ ン」 (ページ 1-13) を参

照して下さい。

[11:7] 予約 読み出し時は UNP、 書き込み時は SBZ

[6:2] サイズ サイズ。 読み出し時には、 BTCM のサイズを示します。 このフ ィールドへの書き込みは無視されます。 「TCM について」 (ページ 8-13) を参照して下さい。

b00000 = 0 KBb00011 = 4 KBb00100 = 8 KBb00101 = 16 KB

b00110 = 32 KBb00111 = 64 KBb01000 = 128 KBb01001 = 256 KB

b01010 = 512 kBb01011 = 1 MBb01100 = 2 MBb01101 = 4 MBb01110 = 8 MB

[1] 予約 SBZ

[0] イネーブル BTCM を稼働または非稼働にします。

0 = 非稼働

1 = 稼働。 このフ ィールドの リセッ ト時の値は、 INITRAMB 入力ピンで決定されます。

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 4-58ID013111 Non-Confidential

Page 143: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

システム制御コプロセッサ

図 4-42 ATCM 領域レジスタ

ATCM 領域レジスタの機能とビッ ト値との対応を、 表 4-40 に示します。

ATCM 領域レジスタにアクセスするには、 次の命令を使用して CP15 を読み書きします。

MRC p15, 0, <Rd>, c9, c1, 1 ; Read ATCM Region RegisterMCR p15, 0, <Rd>, c9, c1, 1 ; Write ATCM Region Register

4.2.23 c9、 TCM 選択レジスタ

TCM 選択レジスタは、 プロセッサが書き込む TCM 領域レジスタを示します。 本プロセッサは、 TCM インタフェースごとに 1 つの TCM 領域のみをサポート します。TCM 選択レジスタは読み出し値 0 で、 書き込みは無視されます。 特権モードでのみアクセス可能です。

4.2.24 c11、 スレーブポート制御レジスタ

スレーブポート制御レジスタは、 特権モードまたはユーザモードでの AXI スレーブポートに対する TCM アクセスを可能または不可能にします。

注 AXI スレーブポート経由のキャ ッシュ RAM へのアクセスを可能にするには、 補助制御レジスタを使用します。 「補助制御レジスタ」 (ページ 4-38) を参照して下さい。

31 12 11 7 6 2 1 0

表 4-40 ATCM 領域レジスタのビッ トの機能

ビッ ト フ ィールド 機能

[31:12] ベースアドレス

ベースアドレス。 ATCM のベースアドレスを定義します。 このベースアドレスは、

ATCM のサイズにアラインしている必要があ り ます。 [(log2(RAMSize) - 1):12] の範囲内

のビッ トはすべて無視されます。

リセッ ト時に、 LOCZRAMA が設定されている値によ り、 ベースアドレスが次のよ う

に設定されます。

0 = 初期ベースアドレスは実装定義です。 「構成可能なオプシ ョ ン」 (ページ 1-13) を参

照して下さい。

1 = 初期ベースアドレスは 0x0 です。

[11:7] 予約 読み出し時は UNP、 書き込み時は SBZ

[6:2] サイズ サイズ。 読み出し時には、 ATCM のサイズを示します。 このフ ィールドへの書き込みは無視されます。 「TCM について」 (ページ 8-13) を参照して下さい。

b00000 = 0 KBb00011 = 4 KBb00100 = 8 KBb00101 = 16 KB

b00110 = 32 KBb00111 = 64 KBb01000 = 128 KBb01001 = 256 KB

b01010 = 512 kBb01011 = 1 MBb01100 = 2 MBb01101 = 4 MBb01110 = 8 MB

[1] 予約 SBZ

[0] イネーブル ATCM を稼働または非稼働にします。

0 = 非稼働

1 = 稼働。 このフ ィールドの リセッ ト時の値は、 INITRAMA 入力ピンで決定されます。

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 4-59ID013111 Non-Confidential

Page 144: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

システム制御コプロセッサ

スレーブポート制御レジスタには次の特徴があ り ます。

• 読み出し / 書き込みレジスタ

• ユーザモード と特権モードでアクセス可能

レジスタ内のビッ ト配置を、 図 4-43 に示します。

図 4-43 スレーブポート制御レジスタ

スレーブポート制御レジスタの機能とビッ ト値との対応を、 表 4-41 に示します。

スレーブポート制御レジスタにアクセスするには、 次の命令を使用して CP15 を読み書きします。

MRC p15, 0, <Rd>, c11, c0, 0 ; Read Slave Port Control RegisterMCR p15, 0, <Rd>, c11, c0, 0 ; Write Slave Port Control Register

4.2.25 c13、 FCSE PID レジスタ

このプロセッサは、 高速コンテキス ト スイ ッチ拡張機能 (FCSE) をサポート しません。

FCSE のプロセス ID(PID) レジスタには、 特権モードでのみアクセスできます。 このレジスタは 0 と して読み出され、 書き込みは無視されます。

4.2.26 c13、 コンテキスト ID レジスタ

コンテキス ト ID レジスタは、 現在実行中のプロセスのプロセス識別 (ID) 値を保持します。

このレジスタは、 エンベデッ ド ト レース マクロセル (ETM) とデバッグロジッ クで使用されます。 ETM は、 その値をブロードキャス ト して、 現在実行中のプロセスを示すこ とができます。 各プロセスは一意の番号でプログラムする必要があ り ます。

コンテキス ト ID 値によって、 プロセスに依存するブレークポイン トや命令を可能にするこ と もできます。

コンテキス ト ID レジスタには次の特徴があ り ます。

• 読み出し / 書き込みレジスタ

31 2 1 0

AXI

表 4-41 スレーブポート制御レジスタのビッ トの機能

ビッ ト フ ィールド 機能

[31:2] 予約 RAZ/UNP

[1] 特権アクセス TCM アクセスのアクセスレベルを定義します。

0 = 非特権アクセス と特権アクセス。 これはリセッ ト

時の値です。

1 = 特権アクセスのみ

[0] AXI スレーブのイネーブル

TCM アクセス用に AXI スレーブポート を稼働または非稼働にします。

0 = AXI スレーブポート を稼働状態にします。 これは

リセッ ト時の値です。

1 = AXI スレーブポート を非稼働にします。

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 4-60ID013111 Non-Confidential

Page 145: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

システム制御コプロセッサ

• 特権モードでのみアクセス可能

コンテキス ト ID レジスタのビッ ト [31:0] には、 プロセス ID 番号が格納されます。

コンテキス ト ID レジスタを使用するには、 次の命令を使用して CP15 を読み書きします。

MRC p15, 0, <Rd>, c13, c0, 1 ; Read Context ID RegisterMCR p15, 0, <Rd>, c13, c0, 1 ; Write Context ID Register

4.2.27 c13、 スレッ ドおよびプロセス ID レジスタ

スレッ ドおよびプロセス ID レジスタは、 オペレーティングシステム (OS) での管理のために、 ソフ ト ウェアスレッ ド とプロセスの ID を保存します。

スレッ ドおよびプロセス ID レジスタには次の特徴があ り ます。

• 次の 3 つの読み出し / 書き込みレジスタが存在します。

— ユーザ読み出し / 書き込み可能なスレッ ドおよびプロセス ID レジスタ

— ユーザ読み出し専用のスレッ ドおよびプロセス ID レジスタ

— 特権専用のスレッ ドおよびプロセス ID レジスタ

• それぞれが異なるモードでアクセス可能です。

— ユーザ読み出し / 書き込みレジスタは、 ユーザモード と特権モードで読み書きできます。

— ユーザ読み出し専用レジスタは、 ユーザモードでは読み出ししかできませんが、 特権モードでは読み書きできます。

— 特権専用レジスタは、 特権モードでのみ読み書きできます。

スレッ ドおよびプロセス ID レジスタにアクセスするには、 次の命令を使用してCP15 を読み書きします。

MRC p15, 0, <Rd>, c13, c0, 2 ; Read User read/write Thread and Proc. ID RegisterMCR p15, 0, <Rd>, c13, c0, 2 ; Write User read/write Thread and Proc. ID RegisterMRC p15, 0, <Rd>, c13, c0, 3 ; Read User Read Only Thread and Proc. ID RegisterMCR p15, 0, <Rd>, c13, c0, 3 ; Write User Read Only Thread and Proc. ID RegisterMRC p15, 0, <Rd>, c13, c0, 4 ; Read Privileged Only Thread and Proc. ID RegisterMCR p15, 0, <Rd>, c13, c0, 4 ; Write Privileged Only Thread and Proc. ID Register

スレッ ドおよびプロセス ID レジスタの読み書きは、 プロセッサの状態や操作に影響を与えません。 これらのレジスタは OS サポート を提供します。 OS がこれらのレジスタを管理する必要があ り ます。

プロセス間のデータ漏洩を防ぐために、 プロセススイ ッチ時にはすべてのスレッ ドおよびプロセス ID レジスタの内容をク リ アする必要があ り ます。 これは、 データのセキュ リ テ ィ を保証するために重要な作業です。 これらのレジスタの リセッ ト時の値は 0 です。

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 4-61ID013111 Non-Confidential

Page 146: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

システム制御コプロセッサ

4.2.28 検証レジスタ

プロセッサには、 一連の検証レジスタが実装されています。 こ こでは、 次の ト ピックについて説明します。

• 「c15、 nVAL IRQ イネーブルセッ ト レジスタ」

• 「c15、 nVAL FIQ イネーブルセッ ト レジスタ」 (ページ 4-63)

• 「c15、 nVAL リ セッ ト イネーブルセッ ト レジスタ」 (ページ 4-64)

• 「c15、 nVAL デバッグ要求イネーブルセッ ト レジスタ」 (ページ 4-65)

• 「c15、 nVAL IRQ イネーブルク リ ア レジスタ」 (ページ 4-65)

• 「c15、 nVAL FIQ イネーブルク リ ア レジスタ」 (ページ 4-66)

• 「c15、 nVAL リ セッ ト イネーブルク リ ア レジスタ」 (ページ 4-67)

• 「c15、 nVAL デバッグ要求イネーブルク リ ア レジスタ」 (ページ 4-68)

• 「c15、 nVAL キャ ッシュサイズ オーバライ ドレジスタ」 (ページ 4-69)

c15、 nVAL IRQ イネーブルセッ ト レジスタ

nVAL IRQ イネーブルセッ ト レジスタは、 PMC レジスタ (PMC0 ~ PMC2) のいずれかと CCNT で、 オーバフロー時に割り込み要求を生成するために使用します。 可能な場合、 nVALIRQ を LOW にアサートするこ とによって、 割り込み要求が通知されます。

nVAL IRQ イネーブルセッ ト レジスタには次の特徴があ り ます。

• 読み出し / 書き込みレジスタ

• 特権モードでは常にアクセス可能。 USEREN レジスタによ りアクセスが決定されます (「c9、 ユーザイネーブル レジスタ」 (ページ 6-15) を参照)。

nVAL IRQ イネーブルセッ ト レジスタのビッ ト配置を、 図 4-44 に示します。

図 4-44 nVAL IRQ イネーブルセッ ト レジスタの形式

nVAL IRQ イネーブルセッ ト レジスタの機能とビッ ト値との対応を、 表 4-42 に示します。

nVAL IRQ イネーブルセッ ト レジスタにアクセスするには、 次の命令を使用してCP15 を読み書きします。

MRC p15, 0, <Rd>, c15, c1, 0 ; Read nVAL IRQ Enable Set Register

MCR p15, 0, <Rd>, c15, c1, 0 ; Write nVAL IRQ Enable Set Register

C

31 3 2 1 0

P2P1P0

IRQIRQ

表 4-42 nVAL IRQ イネーブルセッ ト レジスタのビッ トの機能

ビッ ト フ ィールド 機能

[31] C CCNT オーバフロー IRQ 要求

[30: 3] 予約 UNP または SBZP

[2] P2 PMC2 オーバフロー IRQ 要求

[1] P1 PMC1 オーバフロー IRQ 要求

[0] P0 PMC0 オーバフロー IRQ 要求

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 4-62ID013111 Non-Confidential

Page 147: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

システム制御コプロセッサ

読み出し時には、 このレジスタは現在の設定値を返します。 書き込みを行う と、 割り込み要求を可能にできます。 割り込み要求が可能な場合、 nVAL IRQ イネーブルクリ ア レジスタに書き込むと不可能にな り ます (「c15、 nVAL IRQ イネーブルク リ ア レジスタ」 (ページ 4-65) を参照)。

1 つ以上の IRQ 要求フ ィールド (P2、 P1、 P0、 C) が可能で、 対応するカウンタがオーバフローしている場合は、 nVALIRQ を LOW にアサートするこ とによって IRQ要求が示されます。 この信号は、 システム割り込みコン ト ローラに渡すこ とができます。

c15、 nVAL FIQ イネーブルセッ ト レジスタ

nVAL FIQ イネーブルセッ ト レジスタは、 PMC レジスタ (PMC0 ~ PMC2) のいずれかと CCNT で、 オーバフロー時に高速割り込み要求を生成するために使用します。可能な場合、 nVALFIQ を LOW にアサートするこ とによって、 割り込み要求が通知されます。

nVAL FIQ イネーブルセッ ト レジスタには次の特徴があ り ます。

• 読み出し / 書き込みレジスタ

• 特権モードでは常にアクセス可能。 USEREN レジスタによ りアクセスが決定されます (「c9、 ユーザイネーブル レジスタ」 (ページ 6-15) を参照)。

nVAL FIQ イネーブルセッ ト レジスタのビッ ト配置を、 図 4-45 に示します。

図 4-45 nVAL FIQ イネーブルセッ ト レジスタの形式

nVAL FIQ イネーブルセッ ト レジスタの機能とビッ ト値との対応を、 表 4-43 に示します。

nVAL FIQ イネーブルセッ ト レジスタにアクセスするには、 次の命令を使用してCP15 を読み書きします。

MRC p15, 0, <Rd>, c15, c1, 1 ; Read FIQ Enable Set RegisterMCR p15, 0, <Rd>, c15, c1, 1 ; Write FIQ Enable Set Register

読み出し時には、 このレジスタは現在の設定値を返します。 書き込みを行う と、 割り込み要求を可能にできます。 割り込み要求が可能な場合、 FIQ イネーブルク リ ア レジスタに書き込むと、 不可能になり ます (「c15、 nVAL FIQ イネーブルク リ ア レジスタ」 (ページ 4-66) を参照)。

C

31 3 2 1 0

P2P1P0

FIQFIQ

表 4-43 nVAL FIQ イネーブルセッ ト レジスタのビッ トの機能

ビッ ト フ ィールド 機能

[31] C CCNT オーバフロー FIQ 要求

[30:3] 予約 UNP または SBZP

[2] P2 PMC2 オーバフロー FIQ 要求

[1] P1 PMC1 オーバフロー FIQ 要求

[0] P0 PMC0 オーバフロー FIQ 要求

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 4-63ID013111 Non-Confidential

Page 148: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

システム制御コプロセッサ

1 つ以上の FIQ 要求フィールド (P2、 P1、 P0、 C) が可能で、 対応するカウンタがオーバフローしている場合は、 nVALFIQ を LOW にアサートするこ とによって FIQ 要求が通知されます。 この信号は、 システム割り込みコン ト ローラに渡すこ とができます。

c15、 nVAL リセッ ト イネーブルセッ ト レジスタ

nVAL リ セッ ト イネーブルセッ ト レジスタは、 PMC レジスタ (PMC0 ~ PMC2) のいずれかと CCNT で、 オーバフロー時にリセッ ト要求を生成するために使用します。可能な場合、 nVALRESET を LOW にアサートするこ とによって、 リセッ ト要求が通知されます。

nVAL リ セッ ト イネーブルセッ ト レジスタには次の特徴があ り ます。

• 読み出し / 書き込みレジスタ

• 特権モードでは常にアクセス可能。 USEREN レジスタによ りアクセスが決定されます (「c9、 ユーザイネーブル レジスタ」 (ページ 6-15) を参照)。

nVAL リ セッ ト イネーブルセッ ト レジスタのビッ ト配置を、 図 4-46 に示します。

図 4-46 nVAL リセッ ト イネーブルセッ ト レジスタの形式

nVAL リ セッ ト イネーブルセッ ト レジスタの機能とビッ ト値との対応を、 表 4-44 に示します。

nVAL リ セッ ト イネーブルセッ ト レジスタにアクセスするには、 次の命令を使用して CP15 を読み書きします。

MRC p15, 0, <Rd>, c15, c1, 2 ; Read nVAL Reset Enable Set RegisterMCR p15, 0, <Rd>, c15, c1, 2 ; Write nVAL Reset Enable Set Register

読み出し時には、 このレジスタは現在の設定値を返します。 書き込みを行う と、 リセッ ト要求を可能にできます。 リセッ ト要求が可能な場合、 nVAL リ セッ ト イネーブルク リ ア レジスタに書き込むと不可能にな り ます。 「c15、 nVAL リ セッ ト イネーブルク リ ア レジスタ」 (ページ 4-67) を参照して下さい。

1 つ以上のリセッ ト要求フ ィールド (P2、 P1、 P0、 C) が可能で、 対応するカウンタがオーバフローしている場合は、 nVALRESET を LOW にアサートするこ とによって リセッ ト要求が通知されます。 この信号は、 システム リセッ ト コン ト ローラに渡すことができます。

C

31 3 2 1 0

P2P1P0

表 4-44 nVAL リセッ ト イネーブルセッ ト レジスタのビッ トの機能

ビッ ト フ ィールド 機能

[31] C CCNT オーバフローリセッ ト要求

[30:3] 予約 UNP または SBZP

[2] P2 PMC2 オーバフローリセッ ト要求

[1] P1 PMC1 オーバフローリセッ ト要求

[0] P0 PMC0 オーバフローリセッ ト要求

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 4-64ID013111 Non-Confidential

Page 149: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

システム制御コプロセッサ

c15、 nVAL デバッグ要求イネーブルセッ ト レジスタ

デバッグ要求イネーブルセッ ト レジスタは、 PMC レジスタ (PMC0 ~ PMC2) のいずれかと CCNT で、 オーバフロー時にデバッグ要求を生成するために使用します。 可能な場合、 VALEDBGRQ を HIGH にアサートするこ とによって、 デバッグ要求が通知されます。

nVAL デバッグ要求イネーブルセッ ト レジスタには次の特徴があ り ます。

• 読み出し / 書き込みレジスタ

• 特権モードでは常にアクセス可能。 USEREN レジスタによ りアクセスが決定されます (「c9、 ユーザイネーブル レジスタ」 (ページ 6-15) を参照)。

nVAL デバッグ要求イネーブルセッ ト レジスタのビッ ト配置を、 図 4-47 に示します。

図 4-47 nVAL デバッグ要求イネーブルセッ ト レジスタの形式

nVAL デバッグ要求イネーブルセッ ト レジスタの機能とビッ ト値との対応を、表 4-45 に示します。

nVAL デバッグ要求イネーブルセッ ト レジスタにアクセスするには、 次の命令を使用して CP15 を読み書きします。

MRC p15, 0, <Rd>, c15, c1, 3 ; Read nVAL Debug Request Enable Set RegisterMCR p15, 0, <Rd>, c15, c1, 3 ; Write nVAL Debug Request Enable Set Register

読み出し時には、 このレジスタは現在の設定値を返します。 書き込みを行う と、 デバッグ要求を可能にできます。 デバッグ要求が可能な場合、 nVAL デバッグ要求イネーブルク リ ア レジスタに書き込むと、 不可能にな り ます。 「c15、 nVAL デバッグ要求イネーブルク リ ア レジスタ」 (ページ 4-68) を参照して下さい。

1 つ以上のリセッ ト要求フィールド (P2、 P1、 P0、 C) が可能で、 対応するカウンタがオーバフローしている場合は、 VALEDBGRQ を HIGH にアサートすることによってデバッグリセッ ト要求が通知されます。 この信号は、 外部デバッガに渡すことができます。

c15、 nVAL IRQ イネーブルクリア レジスタ

nVAL IRQ イネーブルク リ ア レジスタは、 PMC レジスタ (PMC0 ~ PMC2) のいずれかと CCNT からの、 可能な状態のオーバフロー IRQ 要求を不可能にします。

nVAL IRQ イネーブルク リ ア レジスタには次の特徴があ り ます。

• 読み出し / 書き込みレジスタ

C

31 3 2 1 0

P2P1P0

表 4-45 nVAL デバッグ要求イネーブルセッ ト レジスタのビッ トの機能

ビッ ト フ ィールド 機能

[31] C CCNT オーバフローデバッグ要求

[30:3] 予約 UNP または SBZP

[2] P2 PMC2 オーバフローデバッグ要求

[1] P1 PMC1 オーバフローデバッグ要求

[0] P0 PMC0 オーバフローデバッグ要求

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 4-65ID013111 Non-Confidential

Page 150: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

システム制御コプロセッサ

• 特権モードでは常にアクセス可能。 USEREN レジスタによ りアクセスが決定されます (「c9、 ユーザイネーブル レジスタ」 (ページ 6-15) を参照)。

nVAL IRQ イネーブルク リ ア レジスタのビッ ト配置を、 図 4-48 に示します。

図 4-48 nVAL IRQ イネーブルクリア レジスタの形式

nVAL IRQ イネーブルク リ ア レジスタの機能とビッ ト値との対応を、 表 4-46 に示します。

nVAL IRQ イネーブルク リ ア レジスタにアクセスするには、 次の命令を使用してCP15 を読み書きします。

MRC p15, 0, <Rd>, c15, c1, 4 ; Read nVAL IRQ Enable Clear RegisterMCR p15, 0, <Rd>, c15, c1, 4 ; Write nVAL IRQ Enable Clear Register

読み出し時には、 このレジスタは現在の設定値を返します。 書き込みを行う と、 現在は可能になっているオーバフロー割り込み要求を不可能にできます。

カウンタオーバフローでの IRQ 要求を可能にする方法と、 要求の通知方法については、 「c15、 nVAL IRQ イネーブルセッ ト レジスタ」 (ページ 4-62) を参照して下さい。

c15、 nVAL FIQ イネーブルクリア レジスタ

nVAL FIQ イネーブルク リ ア レジスタは、 PMC レジスタ (PMC0 ~ PMC2) のいずれかと CCNT からの、 可能なオーバフロー FIQ 要求を不可能にします。

nVAL FIQ イネーブルク リ ア レジスタには次の特徴があ り ます。

• 読み出し / 書き込みレジスタ

• 特権モードでは常にアクセス可能。 アクセスモードは、 USEREN レジスタによって決定されます (「c9、 ユーザイネーブル レジスタ」 (ページ 6-15) を参照)。

nVAL FIQ イネーブルク リ ア レジスタのビッ ト配置を、 図 4-49 (ページ 4-67) に示します。

C

31 3 2 1 0

P2P1P0

IRQIRQ

表 4-46 nVAL IRQ イネーブルクリア レジスタのビッ トの機能

ビッ ト フ ィールド 機能

[31] C CCNT オーバフロー IRQ 要求

[30:3] 予約 UNP または SBZP

[2] P2 PMC2 オーバフロー IRQ 要求

[1] P1 PMC1 オーバフロー IRQ 要求

[0] P0 PMC0 オーバフロー IRQ 要求

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 4-66ID013111 Non-Confidential

Page 151: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

システム制御コプロセッサ

図 4-49 nVAL FIQ イネーブルクリア レジスタの形式

nVAL FIQ イネーブルク リ ア レジスタの機能とビッ ト値との対応を、 表 4-47 に示します。

FIQ イネーブルク リ アレジスタにアクセスするには、 次の命令を使用して CP15 を読み書きします。

MRC p15, 0, <Rd>, c15, c1, 5 ; Read FIQ Enable Clear RegisterMCR p15, 0, <Rd>, c15, c1, 5 ; Write FIQ Enable Clear Register

読み出し時には、 このレジスタは現在の設定値を返します。 書き込みを行う と、 現在は可能になっているオーバフロー割り込み要求を不可能にできます。

カウンタオーバフローでの FIQ 要求を可能にする方法と、 要求の通知方法については、 「c15、 nVAL FIQ イネーブルセッ ト レジスタ」 (ページ 4-63) を参照して下さい。

c15、 nVAL リセッ ト イネーブルクリア レジスタ

nVAL リセッ ト イネーブルク リア レジスタは、 PMC レジスタ (PMC0 ~ PMC2) のいずれかと CCNT からの、 可能になっているオーバフローリセッ ト要求を不可能にします。

nVAL リ セッ ト イネーブルク リ ア レジスタには次の特徴があ り ます。

• 読み出し / 書き込みレジスタ

• 特権モードでは常にアクセス可能。 USEREN レジスタによ りアクセスが決定されます (「c9、 ユーザイネーブル レジスタ」 (ページ 6-15) を参照)。

nVAL リ セッ ト イネーブルク リ ア レジスタのビッ ト配置を、 図 4-50 に示します。

図 4-50 nVAL リセッ ト イネーブルクリア レジスタの形式

C

31 3 2 1 0

P2P1P0

FIQFIQ

表 4-47 nVAL FIQ イネーブルクリア レジスタのビッ トの機能

ビッ ト フ ィールド 機能

[31] C CCNT オーバフロー FIQ 要求

[30:3] 予約 UNP または SBZP

[2] P2 PMC2 オーバフロー FIQ 要求

[1] P1 PMC1 オーバフロー FIQ 要求

[0] P0 PMC0 オーバフロー FIQ 要求

C

31 3 2 1 0

P2P1P0

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 4-67ID013111 Non-Confidential

Page 152: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

システム制御コプロセッサ

nVAL リ セッ ト イネーブルク リ ア レジスタの機能とビッ ト値との対応を、 表 4-48 に示します。

nVAL リ セッ ト イネーブルク リ ア レジスタにアクセスするには、 次の命令を使用して CP15 を読み書きします。

MRC p15, 0, <Rd>, c15, c1, 6 ; Read nVAL Reset Enable Clear RegisterMCR p15, 0, <Rd>, c15, c1, 6 ; Write nVAL Reset Enable Clear Register

読み出し時には、 このレジスタは現在の設定値を返します。 書き込みを行う と、 現在は可能なオーバフローリセッ ト要求を不可能にできます。

カウンタオーバフローでのリセッ ト要求を可能にする方法と、 要求の通知方法については、 「c15、 nVAL リセッ ト イネーブルセッ ト レジスタ」 (ページ 4-64) を参照して下さい。

c15、 nVAL デバッグ要求イネーブルクリア レジスタ

nVAL デバッグ要求イネーブルク リ ア レジスタは、 PMC レジスタ (PMC0 ~ PMC2)のいずれかと CCNT からの、 可能になっているオーバフローデバッグ要求を不可能にします。

nVAL デバッグ要求イネーブルク リ ア レジスタには次の特徴があ り ます。

• 読み出し / 書き込みレジスタ

• 特権モードでは常にアクセス可能。 USEREN レジスタによ りアクセスが決定されます (「c9、 ユーザイネーブル レジスタ」 (ページ 6-15) を参照)。

nVAL デバッグ要求イネーブルク リ ア レジスタのビッ ト配置を、 図 4-51 に示します。

図 4-51 nVAL デバッグ要求イネーブルクリア レジスタの形式

nVAL デバッグ要求イネーブルク リ ア レジスタの機能とビッ ト値との対応を、表 4-49 に示します。

表 4-48 nVAL リセッ ト イネーブルクリア レジスタのビッ トの機能

ビッ ト フ ィールド 機能

[31] C CCNT オーバフローリセッ ト要求

[30:3] 予約 UNP または SBZP

[2] P2 PMC2 オーバフローリセッ ト要求

[1] P1 PMC1 オーバフローリセッ ト要求

[0] P0 PMC0 オーバフローリセッ ト要求

C

31 3 2 1 0

P2P1P0

表 4-49 nVAL デバッグ要求イネーブルクリア レジスタのビッ トの機能

ビッ ト フ ィールド 機能

[31] C CCNT オーバフローデバッグ要求

[30:3] 予約 UNP または SBZP

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 4-68ID013111 Non-Confidential

Page 153: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

システム制御コプロセッサ

nVAL デバッグ要求イネーブルク リ ア レジスタにアクセスするには、 次の命令を使用して CP15 を読み書きします。

MRC p15, 0, <Rd>, c15, c1, 7 ; Read nVAL Debug Request Enable Clear RegisterMCR p15, 0, <Rd>, c15, c1, 7 ; Write nVAL Debug Request Enable Clear Register

読み出し時には、 このレジスタは現在の設定値を返します。 書き込みを行う と、 現在は可能になっているオーバフローデバッグ要求を不可能にできます。

カウンタオーバフローでのデバッグ要求を可能にする方法と、 要求の通知方法については、 「c15、 nVAL デバッグ要求イネーブルセッ ト レジスタ」 (ページ 4-65) を参照して下さい。

c15、 nVAL キャッシュサイズ オーバライ ドレジスタ

nVAL キャ ッシュサイズ オーバライ ドレジスタは、 メ インレジスタのキャ ッシュサイズ フ ィールドをオーバライ ド します。 これによって、 実装されているものよ り小さな命令キャ ッシュ とデータキャ ッシュを選択するこ とができます。

nVAL キャ ッシュサイズ オーバライ ドレジスタには次の特徴があ り ます。

• 書き込み専用レジスタ

• 特権モードでのみアクセス可能

nVAL キャ ッシュサイズ オーバライ ドレジスタのビッ ト配置を、 図 4-52 に示します。

図 4-52 nVAL キャッシュサイズ オーバライ ドレジスタの形式

nVAL キャ ッシュサイズ オーバライ ドレジスタの機能とビッ ト値との対応を、表 4-50 に示します。

nVAL 命令キャ ッシュおよびデータキャ ッシュのサイズのエンコードを、 表 4-51 に示します。

[2] P2 PMC2 オーバフローデバッグ要求

[1] P1 PMC1 オーバフローデバッグ要求

[0] P0 PMC0 オーバフローデバッグ要求

表 4-49 nVAL デバッグ要求イネーブルクリア レジスタのビッ トの機能 (続き)

ビッ ト フ ィールド 機能

Icache

31 16 15 78 4 3 0

Dcache

表 4-50 nVAL キャッシュサイズ オーバライ ドレジスタ

ビッ ト フ ィールド 機能

[31:8] 予約 SBZ

[7:4] Dcache nVAL データキャ ッシュのサイズを定義します。

表 4-51 を参照して下さい。

[3:0] Icache nVAL 命令キャッシュのサイズを定義します。表 4-51 を参照して下さい。

表 4-51 nVAL 命令キャッシュおよびデータキャッシュのサイズのエンコード

エンコード 命令キャッシュとデータキャッシュのサイズ

b0000 4 KB

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 4-69ID013111 Non-Confidential

Page 154: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

システム制御コプロセッサ

nVAL キャ ッシュサイズ オーバライ ドレジスタにアクセスするには、 次の命令を使用して CP15 に書き込みます。

MCR p15, 0, <Rd>, c15, c14, 0 ; nVAL Cache Size Override Register

注 nVAL キャ ッシュサイズ オーバライ ドレジスタは、 適切な RAM が統合されているキャ ッシュサイズを選択するためにのみ使用できます。 キャ ッシュサイズが大きいほど、 よ り深いデータ RAM と タグ RAM が必要になり、 キャ ッシュサイズが小さいほど、 よ り広いタグ RAM が必要になり ます。 このため、 キャ ッシュ RAM のシ ミ ュレーシ ョ ンモデルを使用している場合を除いて、 このレジスタを使用してキャ ッシュサイズを変更する機会はほとんどあ り ません。

4.2.29 訂正可能フォールト位置レジスタ

訂正可能フォールト位置レジスタ (CFLR) は、 キャ ッシュまたは TCM 操作で発生した 後の訂正可能なエラーの位置を示します。 このレジスタは、 直前の分岐が原因で実行されなかった命令の命令フェッチなど、 投機的なアクセスでは更新されません。 このレジスタには次の特徴があ り ます。

• 読み出し / 書き込みレジスタ

• 特権モードでのみアクセス可能

注 このレジスタは、 r1pm リ リースおよびそれ以降のプロセッサに実装されています。r0pm リ リースのプロセッサでこのレジスタにアクセスを試みる と、 未定義命令例外が発生します。

プロセッサは、 アボートが取得されたかど うかや、 エラーに応答してアクセスが再試行されたかど うかにかかわらず、 このレジスタを更新します。

このレジスタは次のタイ ミ ングで更新されます。

• 命令キャ ッシュ内のパリティ または ECC エラー

• データキャ ッシュ内の単一ビッ ト ECC エラー

• ラ イ ト スルー動作が実行されている場合の、 データキャ ッシュ内のパリティ または複数ビッ トエラー

• 単一ビッ ト TCM ECC エラー

CFLR は、 TCM 外部エラーや外部再試行要求では更新されません。

CFLR を更新する訂正可能なエラーごとに、 関連イベン トが発生します。 どのイベントが CFLR の更新に関係するかは、 表 6-1 (ページ 6-2) を参照して下さい。 AXI スレーブエラーと LSU または PFU エラーのよ うに、 2 つの訂正可能なエラーが同時に発生した場合は、 LSU または PFU の書き込みが優先されます。 複数のエラーが発生した場合、 CFLR 内の値は 後のイベン トの位置を反映しています。

b0001 8 KB

b0011 16 KB

b0111 32 KB

b1111 64 KB

表 4-51 nVAL 命令キャッシュおよびデータキャッシュのサイズのエンコード (続き)

エンコード 命令キャッシュとデータキャッシュのサイズ

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 4-70ID013111 Non-Confidential

Page 155: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

システム制御コプロセッサ

すべての訂正可能なエラーでは、 同じレジスタが更新されます。 ビッ ト [25:24] を読み出すこ とによって、 エラーがキャ ッシュアクセス と TCM アクセスのどちらで発生したかを判断できます。 訂正可能なキャ ッシュエラーを示している場合の CFLR のビッ ト配置を、 図 4-53 に示します。

図 4-53 訂正可能フォールト位置レジスタ - キャッシュ

訂正可能なキャ ッシュエラーを示している場合の CFLR の機能とビッ ト値との対応を、 表 4-52 に示します。

訂正可能な TCM エラーを示している場合の CFLR のビッ ト配置を、 図 4-54 に示します。

図 4-54 訂正可能フォールト位置レジスタ - TCM

訂正可能な TCM エラーを示している場合の CFLR の機能とビッ ト値との対応を、表 4-53 に示します。

31 30 29 26 25 24 23 14 13 5 4 2 1 0

表 4-52 訂正可能フォールト位置レジスタ - キャッシュ

ビッ ト フ ィールド 機能

[31:30] 予約 RAZ

[29:26] ウェイ エラーのウェイを示します。

[25:24] 側 エラーのソースを示します。 キャ ッシュエラーの場合、 この値は常に 0b00 です。

[23:14] 予約 RAZ

[13:5] インデクス エラーが発生した位置のインデクスを示します。

[4:2] 予約 RAZ

[1:0] タイプ エラーを引き起こしたアクセスのタイプを示します。

0b00 = 命令キャッシュ

0b01 = データキャ ッシュ

31 26 25 24 23 22 3 2 1 0

[22:3]

表 4-53 訂正可能フォールト位置レジスタ - TCM

ビッ ト フ ィールド 機能

[31:26] 予約 RAZ

[25:24] 側 エラーのソースを示します。

0b01 = ATCM

0b10 = BTCM

[23] 予約 RAZ

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 4-71ID013111 Non-Confidential

Page 156: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

システム制御コプロセッサ

訂正可能フォールト位置レジスタにアクセスするには、 次の命令を使用して CP15 を読み書きします。

MRC p15, 0, <Rd>, c15, c3, 0 : Read CFLRMCR p15, 0, <Rd>, c15, c3, 0 : Write CFLR

4.2.30 ビルドオプシ ョ ン レジスタ

ビルドオプシ ョ ン レジスタは、 プロセッサの構築に使用されたビルド構成オプシ ョンを反映します。 ピン構成オプシ ョ ンは反映しません。 これらのレジスタには次の特徴があ り ます。

• 読み出し専用レジスタ

• 特権モードでのみアクセス可能

注 これらのレジスタは、 r1pm リ リースおよびそれ以降のプロセッサに内蔵されています。 r0pm リ リースのプロセッサでこれらのレジスタにアクセスを試みる と、 未定義命令例外が発生します。

c15、 ビルドオプシ ョ ン 1 レジスタ

ビルドオプシ ョ ン 1 レジスタのビッ ト配置を、 図 4-55 に示します。

図 4-55 ビルドオプシ ョ ン 1 レジスタの形式

ビルドオプシ ョ ン 1 レジスタの機能とビッ ト値との対応を、 表 4-54 に示します。

ビルドオプシ ョ ン 1 レジスタにアクセスするには、 次の命令を使用して CP15 に書き込みます。

MRC p15, 0, <Rd>, c15, c2, 0 ; read Build Options 1 Register

[22:3] アドレス エラーが発生した TCM 内のアドレスを示します。

[2] 予約 RAZ

[1:0] タイプ エラーを引き起こしたアクセスのタイプを示します。

0b00 = 命令

0b01 = データ

0b10、 0b11 = AXI スレーブ

表 4-53 訂正可能フォールト位置レジスタ - TCM (続き)

ビッ ト フ ィールド 機能

31 11 012

TCM_HI_INIT_ADDR

表 4-54 ビルドオプシ ョ ン 1 レジスタ

ビッ ト フ ィールド 機能

[31:12] TCM_HI_INIT_ADDR TCM のデフォルトの上位アドレ

[11:0] 予約 SBZ

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 4-72ID013111 Non-Confidential

Page 157: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

システム制御コプロセッサ

c15、 ビルドオプシ ョ ン 2 レジスタ

ビルドオプシ ョ ン 2 レジスタのビッ ト配置を、 図 4-56 に示します。

図 4-56 ビルドオプシ ョ ン 2 レジスタの形式

ビルドオプシ ョ ン 2 レジスタの機能とビッ ト値との対応を、 表 4-55 に示します。

31 25 24 23 22 21 19 17 16 14 13 12 11 7 6 3 026272830 29 1020 9 458

DUAL_COREDUAL_NCLKNO_ICACHE

NO_DCACHEATCM_ESBTCM_ES

NO_IENO_FPUNO_MPU

MPU_REGIONSBREAK_POINTS

WATCH_POINTSNO_A_TCM_INF

NO_B0_TCM_INFNO_B1_TCM_INFTCMBUSPARITY

NO_SLAVEICACHE_ES

DCACHE_ESN0_HARD_ERROR_CACHE

AXIBUSPARITY

2

表 4-55 ビルドオプシ ョ ン 2 レジスタ

ビッ ト フ ィールド 機能

[31] DUAL_COREa プロセッサロジッ ク とチェッ ク ロジッ クの 2 つ目の (冗長) コピーがインスタンス化されたかど うかを示します。

0 = 単一コア

1 = デュアルコア

[30] DUAL_NCLKa 冗長コアに対して反転クロ ッ クが使用されているかど うかを示します。

0 = 反転クロ ッ クが使用されていません。

1 = 反転クロ ッ クが使用されています。

[29] NO_ICACHE プロセッサに命令キャッシュが内蔵されているかど うかを示します。

0 = プロセッサに命令キャッシュが内蔵されています。

1 = プロセッサに命令キャッシュが内蔵されていません。

[28] NO_DCACHE プロセッサにデータキャ ッシュが内蔵されているかど うかを示します。

0 = プロセッサにデータキャ ッシュが内蔵されています。

1 = プロセッサにデータキャ ッシュが内蔵されていません。

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 4-73ID013111 Non-Confidential

Page 158: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

システム制御コプロセッサ

[27:26] ATCM_ES ATCM インタフェースにエラー検出方式が実装されているかど うかを示します。

00 = エラー検出方式なし

01 = 8 ビッ ト パリティ ロジッ ク

10 = 32 ビッ トエラー検出および訂正

11 = 64 ビッ トエラー検出および訂正

[25:24] BTCM_ES BTCM インタフェースにエラー検出方式が実装されているかど うかを示します。

00 = エラー検出方式なし

01 = 8 ビッ ト パリティ ロジッ ク

10 = 32 ビッ トエラー検出および訂正

11 = 64 ビッ トエラー検出および訂正

[23] NO_IE プロセッサがビッグエンディアン命令をサポート しているかど うかを示します。

0 = プロセッサはビッグエンディアン命令をサポート しています。

1 = プロセッサはビッグエンディアン命令をサポート していません。

[22] NO_FPU プロセッサに浮動小数点ユニッ トが内蔵されているかど うかを示します。

0 = プロセッサに浮動小数点ユニッ トが内蔵されています。

1 = プロセッサに浮動小数点ユニッ トが内蔵されていません。

[21] NO_MPU プロセッサにメモリ保護ユニッ ト (MPU) が内蔵されているかど うかを示します。

0 = プロセッサに MPU が内蔵されています。

1 = プロセッサに MPU が内蔵されていません。

[20] MPU_REGIONS 内蔵されている MPU の領域数を示します。

0 = 81 = 12

プロセッサに MPU が内蔵されていない (ビッ ト [21] が 0 に設定されている)

場合、 このビッ トは 0 に設定されます。

[19:17] BREAK_POINTS プロセッサに実装されているブレークポイン ト数 - 1 を示します。

[16:14] WATCH_POINTS プロセッサに実装されているウォッチポイン ト数 - 1 を示します。

[13] NO_A_TCM_INF プロセッサに ATCM ポートが内蔵されているかど うかを示します。

0 = プロセッサに ATCM ポートが内蔵されています。

1 = プロセッサに ATCM ポートが内蔵されていません。

[12] NO_B0_TCM_INF プロセッサに B0TCM ポートが内蔵されているかど うかを示します。

0 = プロセッサに B0TCM ポートが内蔵されています。

1 = プロセッサに B0TCM ポートが内蔵されていません。

[11] NO_B1_TCM_INF プロセッサに B1TCM ポートが内蔵されているかど うかを示します。

0 = プロセッサに B1TCM ポートが内蔵されています。

1 = プロセッサに B1TCM ポートが内蔵されていません。

[10] TCMBUSPARITY プロセッサに TCM アドレスバス パリティ ロジッ クが内蔵されているかど うか

を示します。

0 = プロセッサに TCM アドレスバス パリティ ロジッ クが内蔵されていません。

1 = プロセッサに TCM アドレスバス パリティ ロジッ クが内蔵されています。

[9] NO_SLAVE プロセッサに AXI スレーブポートが内蔵されているかど うかを示します。

0 = プロセッサに AXI スレーブポートが内蔵されています。

1 = プロセッサに AXI スレーブポートが内蔵されていません。

表 4-55 ビルドオプシ ョ ン 2 レジスタ (続き)

ビッ ト フ ィールド 機能

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 4-74ID013111 Non-Confidential

Page 159: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

システム制御コプロセッサ

ビルドオプシ ョ ン 2 レジスタにアクセスするには、 次の命令を使用して CP15 に書き込みます。

MRC p15, 0, <Rd>, c15, c2, 1 ; read Build Options 2 Register

[8:7] ICACHE_ES 命令キャッシュ用のエラー検出方式が実装されているかど うかを示します。

00 = エラー検出方式なし

01 = 8 ビッ ト パリティエラー検出

11 = 64 ビッ トエラー検出および訂正

プロセッサに I キャ ッシュが内蔵されていない場合、 これらのビッ トは 00 に

セッ ト されます。

[6:5] DCACHE_ES データキャ ッシュ用のエラー検出方式が実装されているかど うかを示します。

00 = エラー検出方式なし

01 = 8 ビッ ト パリティエラー検出

10 = 32 ビッ トエラー検出および訂正

プロセッサに D キャ ッシュが内蔵されていない場合、 これらのビッ トは 00 に

セッ ト されます。

[4] NO_HARD_ERROR_CACHE プロセッサに訂正済み TCM エラー用のキャッシュが内蔵されているかど うか

を示します。

0 = プロセッサに TCM エラーキャ ッシュが内蔵されています。

1 = プロセッサに TCM エラーキャ ッシュが内蔵されていません。

[3] AXIBUSPARITY プロセッサに AXI バス パリティ ロジッ クが内蔵されているかど うかを示します。

0 = プロセッサに AXI バス パリ ティ ロジッ クが内蔵されていません。

1 = プロセッサに AXI バス パリ ティ ロジッ クが内蔵されています。

[2:0] 予約 未定義

a. リ ビジ ョ ン r1p0 のプロセッサでは、 このビッ トの値は予測不能です。

表 4-55 ビルドオプシ ョ ン 2 レジスタ (続き)

ビッ ト フ ィールド 機能

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 4-75ID013111 Non-Confidential

Page 160: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

第 5 章 プリフェ ッチユニッ ト

本章では、 プ リ フェ ッチユニッ ト (PFU) と DPU の組み合わせによ り、 プログラムフローの予測を行い、 命令ス ト リームに含まれている分岐を見つける方法と、 分岐が行われる可能性と行われない可能性を判定するために使用される方式について説明します。本章は次のセクシ ョ ンから構成されています。

• 「プ リ フェ ッチユニッ トについて」 (ページ 5-2)

• 「分岐予測」 (ページ 5-3)

• 「 リ ターンスタ ッ ク」 (ページ 5-5)

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 5-1ID013111 Non-Confidential

Page 161: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

プリフ ェ ッチユニッ ト

5.1 プリフェ ッチユニッ トについて

PFU は次の目的に使用されます。

• 分岐命令の結果を予測し、 DPU の先にある命令の投機的なフェッチを行う。

• 命令データを、 DPU の効率的な実装に役立つよ うな形式にフォーマッ トする。

PFU は、 DPU の制御下にある メモ リ システムと、 内部コプロセッサ CP14 およびCP15 から命令をフェッチします。 ARM 状態では、 メモ リ システムはサイ クルごとに 大 2 つの命令を供給できます。 Thumb 状態では、 メモ リ システムはサイ クルごとに 大 4 つの命令を供給できます。

PFU は、 大 3 つの命令データフェッチを FIFO にバッファ します。 PFU と DPU との間には追加の FIFO が存在し、 通常は 8 つまでの命令をバッファできます。 これによって、 分岐命令後のス トールサイ クルが減少または排除されます。 結果と して、プロセッサのパフォーマンスが向上します。

プログラムフローの予測は、 PFU 内で次の方法で行われます。

• 分岐予測器を使用して、 条件付き分岐の結果を予測する。 直接分岐の場合は、命令にエンコード されているオフセッ ト を使用して、 分岐先アドレスの計算も行います。

• リ ターンスタ ッ クを使用して、 プロシージャの復帰先を予測する。

DPU は、 PFU が行うプログラムフロー予測を解決します。

PFU は、 次の要素からの指示に従って命令ス ト リームをフェ ッチします。

• プログラムカウンタ

• 分岐予測器

• リ ターンスタ ッ クによ り引き起こ される、 プロシージャからの復帰

• DPU によって引き起こ されるアボートおよび割り込みを含む例外

• DPU によって示される、 予測に失敗した分岐の訂正

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 5-2ID013111 Non-Confidential

Page 162: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

プリフ ェ ッチユニッ ト

5.2 分岐予測

PFU は通常、 アドレス順に命令をフェッチします。 分岐命令をフェッチした場合、 次にフェッチすべき命令を確実に決定するには、 その命令が DPU のパイプラインの終端で実行完了するまで待つ必要があ り ます。 分岐が実行された場合、 次に実行される命令は連続したアドレスではなくな り ます。 分岐命令の実行中に PFU がフェッチした、 連続したアドレスの命令をパイプラインからフラ ッシュし、 正しい命令をフェッチする必要があり ます。 このため、 プロセッサのパフォーマンスが低下します。

PFU はパイプラインの Pd ステージで分岐を検出し、 その分岐が実行されるかど うかを予測し、 実行される場合には分岐先のアドレスを決定または予測できます。 これによって、 PFU は分岐の実行が DPU で完了する前に、 実行される分岐の分岐先に存在する命令のフェッチを開始できます。 分岐命令の実行は DPU で続行され、 予測が正しいかど うかの判定が行われます。 分岐の予測が間違っていた場合、 パイプラインをフラ ッシュし、 正しい命令をフェッチする必要があ り ます。 一般に、 分岐が正し く予測される可能性は、 予測に失敗する可能性よ り も高いため、 パイプラインのフラ ッシュが発生するこ とは少なく、 プロセッサのパフォーマンスは向上します。

プロセッサの予測機構では、 分岐は大き く 2 つのク ラスに分けられます。

1. B、 BL、 CZB、 BLX のイ ミディエート を含む直接分岐。 これらの命令では、 命令にエンコード されている固定オフセッ ト とプログラムカウンタによ り分岐先が決定されます。 これらの命令をフェ ッチした場合、 プログラムカウンタが既知であれば、 命令の条件コードチェッ クが成功するか失敗するか、 つま り分岐が行われるか行われないかを予測するだけで、 分岐先を予測できます。

2. ロードおよび分岐と状態遷移 (BX) などの間接分岐。 これらの命令は PC への書き込みを行い、 一般にプロシージャ呼び出しからの復帰と見なされます。 識別可能な例と して、 次の 2 つが挙げられます。

• R13 から派生したアドレスを PC にロードする。

• R0 ~ R14 からの BX

これらの場合、 呼び出し操作も識別可能であれば、 復帰先と見なされるアドレスを リ ターンスタ ッ クに格納できます。 一般的な呼び出し操作には、 BL 命令とBLX 命令があ り ます。

注 プログラムフローがどちらのク ラスでも、 無条件分岐は常に実行されるため、 予測履歴には影響しません。 無条件リ ターンスタ ッ ク操作は、 常にリ ターンスタ ッ クに影響を与えます。

こ こでは、 次の ト ピッ クについて説明します。

• 「プログラムフロー予測の禁止」• 「分岐予測器」 (ページ 5-4)

• 「誤った予測と訂正」 (ページ 5-4)

5.2.1 プログラムフロー予測の禁止

CP15 レジスタ c1 の Z ビッ ト (ビッ ト [11]) を使用して、 プログラムフロー予測を禁止するこ とはできません。 Z ビッ トは 1 に固定されています。 プログラムフロー予測を禁止するには、 リ ターンスタ ッ クを非稼働にし、 分岐予測ポ リ シーを 「実行しない」 に設定します。 詳細については、 「c1、 システム制御レジスタ」 (ページ 4-35) を参照して下さい。

補助制御レジスタを使用して、 リ ターンスタ ッ ク、 分岐予測器、 フェ ッチレート を制御するこ と もできます。 詳細については、 「補助制御レジスタ」 (ページ 4-38) を参照して下さい。

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 5-3ID013111 Non-Confidential

Page 163: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

プリフ ェ ッチユニッ ト

5.2.2 分岐予測器

プロセッサの分岐予測は動的で、 グローバルな履歴予測方式に基づいています。 また、 長いループを切り詰める予測、 およびループの 後の予測を処理するための追加ロジッ ク も存在します。

グローバルな履歴方式は、 過去に行われた分岐の動作パターンの履歴に基づいて、実行中に分岐の動作を学習する、 適応型の予測器です。 分岐の動作の各パターンについて、 2 ビッ トのヒ ン ト値が履歴テーブルに保持されます。 この 2 ビッ トのヒ ン トは、 分岐の過去の動作に基づいて、 次の分岐が行われるものと予測すべきか、 行われないものと予測すべきかを示しています。 履歴テーブルには 256 エン ト リが含まれます。

一定回数以上繰り返されるループについては、 履歴から学習してループの終了を予測するための十分な領域が分岐履歴に存在しません。 PFU には、 ループの繰り返し回数をカウン ト し ( 大 31 回)、 分岐が行われずループが終了するこ とを予測するロジッ クが含まれています。 繰り返しの回数が 31 回を超える場合、 ループ分岐が行われないと予測されるこ とはあ り ません。

複数の分岐履歴が同じ ヒン ト値を指している場合、 履歴テーブルのスラ ッシングが発生し、 分岐予測器の正確性が低下するこ とがあ り ます。 分岐予測器のロジッ クはこのよ う な事例を検出し、 ヒ ン ト値に対して順応を行います。

直接分岐の場合、 分岐先は命令のエンコードおよびプログラムカウンタから静的に計算されます。 間接分岐の場合、 分岐が行われるかど うかはヒ ン ト値によ り予測され、 分岐先を予測するためにリ ターンスタ ッ クが使用されるこ と もあ り ます。 分岐先を静的に計算した り、 リ ターンスタ ッ クからポップした りできない場合、 PFU は分岐が行われないものと想定します。

PFU は、 分岐の発生ごとに、 その分岐がどのよ うに解決されたかが DPU によって示されていれば、 履歴を更新します。

分岐予測器の構成

分岐予測器を構成するには、 補助制御レジスタのビッ ト を設定します。

• ビッ ト [16:15] を b00 にセッ トする と、 パターン履歴テーブルを使用する予測が許可されます。

• ビッ ト [16:15] を b01 にセッ トする と、 分岐が常に行われるものと予測されます。

• ビッ ト [16:15] を b10 にセッ トすると、 分岐は一切行われないものと予測されます。

• ビッ ト [21] をセッ トする と、 動的分岐予測器のループキャ ッシュを使用する予測が禁止されます。

• ビッ ト [20] をセッ トする と、 動的分岐予測器のレジスタ拡張キャ ッシュを使用する予測が禁止されます。

詳細については、 「c1、 補助制御レジスタ」 (ページ 4-38) を参照して下さい。

5.2.3 誤った予測と訂正

DPU は、 動的分岐予測器によ りパイプラインの Wr ステージで予測された分岐を解決します。 図 1-3 (ページ 1-17) を参照して下さい。 誤った予測が行われた場合、PFU はパイプラインをフラ ッシュし、 正しい命令ス ト リームをフェ ッチします。

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 5-4ID013111 Non-Confidential

Page 164: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

プリフ ェ ッチユニッ ト

5.3 リ ターンスタ ック

呼び出し リ ターンスタ ッ クは、 ロードなどプログラムフローの変更であるプロシージャからの復帰と、 分岐レジスタを予測します。 動的分岐予測器は、 条件付きのプロシージャ復帰が行われるか、 行われないかの予測を決定します。 リ ターンスタ ックは、 無条件のプロシージャ復帰、 および分岐予測器によって行われる と予測された条件付きプロシージャ復帰の戻り先アドレスを予測します。

リ ターンスタ ッ クは、 4 エン ト リの循環バッファで構成されます。 PFU は、 プロシージャ呼び出し命令が行われるこ とを検出する と、 復帰アドレスを リ ターンスタ ッ クにプッシュします。 PFU がプロシージャ呼び出し と して認識する命令は次のとおりです。

• ARM および Thumb 命令の場合

— BL イ ミディエート

— BLX イ ミディエート

— BLX Rm

リ ターンスタ ッ クが復帰命令の実行を検出した場合、 PFU はリ ターンスタ ッ クの上端の位置から命令フェッチを発行し、 リ ターンスタ ッ クをポップします。 PFU がプロシージャ復帰と して認識する命令は次のとおりで、 ARM と Thumb どちらの命令セッ トでも同じです。

• POP {..,pc}

• LDMIB Rn{!}, {..,pc}

• LDMDA Rn{!}, {..,pc}

• LDMDB Rn{!}, {..,pc}

• LDR pc, [sp], #4

• BX Rm

リ ターンスタ ッ クの予測ミ スは、 次の場合に発生するこ とがあ り ます。

• 条件付き復帰で、 条件コードが成功するか失敗するかの予測が正し くなかった。

• 復帰アドレスが正し くなかった。 DPU は、 リ ターンスタ ッ クによ りパイプラインの Ret ステージで予測された間接分岐を解決します。 図 1-3 (ページ 1-17) を参照して下さい。 誤った予測が行われた場合、 PFU はパイプラインをフラ ッシュし、 正しい命令ス ト リームをフェッチします。

リ ターンスタ ッ クには、 アンダーフローやオーバフローの検出はあ り ません。 これらの状況では、 誤った予測が行われる可能性が高くな り ます。

注 MOV PC, LR 命令はデコード されず、 復帰と して予測されません。

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 5-5ID013111 Non-Confidential

Page 165: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

第 6 章 イベン ト とパフォーマンスモニタ

本章では、 パフォーマンスモニタ ユニッ ト (PMU) と イベン トバス インタフェースについて説明します。 本章は次のセクシ ョ ンから構成されています。

• 「イベン トについて」 (ページ 6-2)

• 「PMU について」 (ページ 6-6)

• 「パフォーマンスモニタ レジスタ」 (ページ 6-7)

• 「イベン トバス インタフェース」 (ページ 6-19)

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 6-1ID013111 Non-Confidential

Page 166: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

イベン ト とパフォーマンスモニタ

6.1 イベン トについて

プロセッサには、 発生する各種のイベン ト、 例えばキャ ッシュ ミ スなどを検出するためのロジッ クが含まれています。 これらのイベン トは、 プロセッサの動作について有益な情報を提供し、 コードのデバッグやプロファ イ リ ングに使用できます。

イベン トは出力バス EVNTBUS 上で観測でき、 パフォーマンスモニタ ユニッ ト(PMU) のレジスタを使用してカウン トできます。 イベン トバスの詳細については「イベン トバス インタフェース」 (ページ 6-19) を、 PMU の詳細については 「PMUについて」 (ページ 6-6) を参照して下さい。 生成されるイベン トの一覧を、 表 6-1に示します。 この表には、 イベン トバス上での各イベン トのビッ ト位置と、 PMU でイベン ト を指すために使用される番号も示されています。 この表に示されていないイベン ト参照番号は予約されています。 CFLR 関連イベン トの詳細については、 「エラー検出イベン ト 」 (ページ 8-36) を参照して下さい。

表 6-1 イベン トバス インタフェースのビッ トの機能

EVNTBUS の

ビッ ト位置説明

CFLR の

更新イベン ト参照番号

なし ソフ ト ウェアインク リ メン ト。 レジスタは、 ソフ ト ウェアインク リ メン ト レジスタへの書き込みによってのみインク リ メン ト されます。「c9、 ソフ ト ウェアインク リ メン ト レジスタ」 (ページ 6-11) を参照し

て下さい。

- 0x00

[0] 命令キャッシュ ミ ス。

通常のキャッシュ可能メモリからの命令フェッチで、 レベル 2 メモ リ

システムからのリ フ ィルが発生するごとに、 このイベン トが生成されます。 新しいキャ ッシュ リ フ ィルを引き起こ さず、 以前のミ スによるデータのリ フ ィルによって満たされるものはカウン ト されません。 命令フェッチが複数の命令で構成される場合、 これらのアクセスは 1 つのイベン ト と してカウン ト されます。 CP15 キャ ッシュ保守操作は、 イ

ベン ト と してカウン ト されません。

- 0x01

[1] データキャ ッシュ ミ ス。

通常のキャッシュ可能メモリからのデータ読み出し / 書き込みで、 レ

ベル 2 メモ リ システムからのリ フ ィルが発生するごとに、 このイベン

トが生成されます。 新しいキャ ッシュ リ フ ィルを引き起こ さず、 以前のミ スによるデータのリ フ ィルによって満たされるものはカウン ト されません。 通常のキャッシュ可能メモ リに対するキャ ッシュラインへのアクセスで、 新しいラインフ ィルが引き起こ された場合、 LDM や STM

の複数のト ランザクシ ョ ンも含めてすべてカウン ト されます。 ライ トスルーの書き込みがキャッシュにヒ ッ ト した場合、 ラインフ ィルが引き起こ されないため、 カウン ト されません。 CP15 キャ ッシュ保守操作は、 イベン ト と してカウン ト されません。

- 0x03

[2] データキャ ッシュへのアクセス。

キャ ッシュラインへの各アクセスが、 LDM および STM による複数のト ランザクシ ョ ンや、 他の操作も含めてカウン ト されます。 CP15 キャ ッシュ保守操作は、 イベン ト と してカウン ト されません。

- 0x04

[3] データ読み出しのアーキテクチャ的な実行。

このイベン トは、 SWP も含めて、 明示的にデータを読み出すすべての命令について発生します。

- 0x06

[4] データ書き込みのアーキテクチャ的な実行。

このイベン トは、 SWP も含めて、 明示的にデータを書き込むすべての命令について発生します。

- 0x07

[5] アーキテクチャ的に実行された命令。 - 0x08

[6] アーキテクチャ的に実行された、 デュアル発行された命令のペア。 - 0x5e

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 6-2ID013111 Non-Confidential

Page 167: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

イベン ト とパフォーマンスモニタ

[7] 取得された例外。

このイベン トは、 例外の取得ごとに発生します。

- 0x09

[8] アーキテクチャ的に実行された、 例外からの復帰。

このイベン トは、 RFE、 MOVS、 PC、 LDM PC^ など、 例外からの復帰すべてについて発生します。

- 0x0A

[9] コンテキス ト ID 変更の実行。 - 0x0B

[10] アーキテクチャ的に実行された、 ソフ ト ウェアによる PC の変更。 ただし、 例外によるものは除外されます。

- 0x0C

[11] アーキテクチャ的に実行された、 B イ ミディエート、 BL イ ミディエート、 または BLX イ ミディエート命令 (分岐が実行されたかど うかにかかわらず)

- 0x0D

[12] アーキテクチャ的に実行されたプロシージャからの復帰、 例えば BX

Rm; LDM PC。 ただし、 例外からの復帰は除外されます。

MOV PC, LRは復帰として予測されないため、 このイベン トを生成しません。

- 0x0E

[13] アーキテクチャ的に実行されたアンアラインドアクセス。

このイベン トは、 アンアラインドアドレスへの各命令について、 アライ メン ト フォールトが ト リガされた場合、 またはシステム制御レジスタの A ビッ トがセッ ト されていればアライ メン ト フォールト を引き起

こしたであろ う場合について発生します。

- 0x0F

[14] 予測に失敗したか、 予測されなかった分岐。

このイベン トは、 分岐によってパイプラインのフラ ッシュが引き起こされるたびに発生します。

- 0x10

なし サイクルカウン ト - 0x11

[15] プロセッサの分岐予測リ ソースによって予測が可能であった、 分岐または他のプログラムフロー変更

- 0x12

[16] 命令バッファが命令を供給できないこ とによるス トール。

ICache ミ スを示しているこ とがあ り ます。 このイベン トは、 この条件が存在しているサイクルすべてにおいて発生します。

- 0x40

[17] 命令間のデータ依存関係によるス トール。

このイベン トは、 この条件が存在しているサイクルすべてにおいて発生します。

- 0x41

[18] データキャ ッシュのライ トバッ ク。

このイベン トは、 キャ ッシュから書き戻される各ラインについて 1 回発生します。

- 0x42

[19] 外部メモリ要求。

例と しては、 キャ ッシュのリ フ ィル、 キャ ッシュ不可アクセス、 ライト スルー書き込み、 キャ ッシュラインの退出 (ライ トバッ ク) が挙げられます。

- 0x43

[20] LSU ビジーによるス トール。

このイベン トは、 この条件が満たされているクロ ッ クサイ クルすべてについて発生します。 このイベン トの発生が多い場合、 パイプラインが外部バスの ト ランザクシ ョ ン完了を待っているこ とが多いこ とを示しています。

- 0x44

[21] ス ト アバッファが強制的に、 完全にドレインされました。

例と して、 DMB、 ス ト ロング リオーダメモ リへのアクセス、 または同様のイベン トが挙げられます。

- 0x45

なし FIQ 割り込みが不可能になっているサイクル数 - 0x46

表 6-1 イベン トバス インタフェースのビッ トの機能 (続き)

EVNTBUS の

ビッ ト位置説明

CFLR の

更新イベン ト参照番号

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 6-3ID013111 Non-Confidential

Page 168: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

イベン ト とパフォーマンスモニタ

なし IRQ 割り込みが不可能になっているサイ クル数 - 0x47

なし ETMEXTOUT[0] - 0x48

なし ETMEXTOUT[1] - 0x49

[22] 命令キャッシュのタグ RAM のパリティ または ECC エラー (訂正可能)

はい 0x4A

[23] 命令キャッシュのデータ RAM のパリティ または ECC エラー (訂正可

能)

はい 0x4B

[24] データキャ ッシュのタグまたはダーティ RAM のパリティエラー、 ま

たは訂正可能な ECC エラー

はい 0x4C

[25] データキャ ッシュのデータ RAM のパリティエラー、 または訂正可能

な ECC エラー

はい 0x4D

[26] プリ フェッチユニッ トから報告された TCM パリティエラー、 または致命的な ECC エラー

- 0x4E

[27] ロード / ス ト アユニッ トから報告された TCM パリティエラー、 または致命的な ECC エラー

- 0x4F

なし ス ト アバッファのマージ - 0x50

なし ス ト アバッファがいっぱいになったため発生した LSU ス トール - 0x51

なし ス ト アキューがいっぱいになったため発生した LSU ス トール - 0x52

なし 整数除算命令 SDIV または UDIV の実行 - 0x53

なし 整数除算によって引き起こ されたス トールサイクル - 0x54

なし ラインフ ィルを開始する PLD 命令 - 0x55

なし リ ソース不足のためラインフ ィルが開始されなかった PLD 命令 - 0x56

なし AXI マスタバスへのキャッシュ不可アクセス - 0x57

[28] 命令キャッシュへのアクセス。

イベン ト 0x04 と類似のイベン トです。

- 0x58

なし ス ト アバッファ操作によ り、 2 つのスロ ッ トに同じキャ ッシュライン

のデータが存在し、 それぞれの属性が異なっているこ とが検出されました。

- 0x59

[29] デュアル発行ケース A (分岐) - 0x5A

[30] デュアル発行ケース B1、 B2、 F2 (ロード / ス ト ア)、 F2D - 0x5B

[31] その他のデュアル発行 - 0x5C

[32] 倍精度浮動小数点演算または変換命令の実行 - 0x5D

[33] データキャ ッシュのデータ RAM の致命的な ECC エラー - 0x60

[34] データキャ ッシュのタグまたはダーティ RAM の致命的な ECC エラー - 0x61

[35] ハードエラーまたは例外ベクタでの例外による、 プロセッサのライブロ ッ ク a

- 0x62

[36] 未使用 - 0x63

[37] ATCM のパリティ または複数ビッ トの ECC エラー - 0x64

[38] B0TCM のパリティ または複数ビッ トの ECC エラー - 0x65

[39] B1TCM のパリティ または複数ビッ トの ECC エラー - 0x66

表 6-1 イベン トバス インタフェースのビッ トの機能 (続き)

EVNTBUS の

ビッ ト位置説明

CFLR の

更新イベン ト参照番号

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 6-4ID013111 Non-Confidential

Page 169: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

イベン ト とパフォーマンスモニタ

[40] ATCM の単一ビッ トの ECC エラー - 0x67

[41] B0TCM の単一ビッ トの ECC エラー - 0x68

[42] B1TCM の単一ビッ トの ECC エラー - 0x69

[43] ロード / ス ト アユニッ トによ り報告された、 TCM の訂正可能な ECCエラー

はい 0x6A

[44] プリ フェッチユニッ トによ り報告された、 TCM の訂正可能な ECC エ

ラー

はい 0x6B

[45] AXI スレーブインタフェースによ り報告された、 TCM のパリティ また

は致命的な ECC エラー

- 0x6C

[46] AXI スレーブインタフェースによ り報告された、 TCM の訂正可能な

ECC エラー

はい 0x6D

なし サイクルカウン ト - 0xFF

a. このイベン トは、 r1p2 およびそれ以降のプロセッサでのみ生成されます。

表 6-1 イベン トバス インタフェースのビッ トの機能 (続き)

EVNTBUS の

ビッ ト位置説明

CFLR の

更新イベン ト参照番号

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 6-5ID013111 Non-Confidential

Page 170: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

イベン ト とパフォーマンスモニタ

6.2 PMU について

PMU は、 3 つのイベン ト カウン ト レジスタ、 1 つのサイクルカウン ト レジスタ、 およびカウンタの制御と調査に使用される 12 個の CP15 レジスタで構成されます。 パフォーマンスモニタ レジスタは、 特権モードでは常にアクセス可能です。 ユーザイネーブル (USEREN) レジスタを使用する と、 USEREN、 割り込みイネーブルセッ ト(INTENS)、 割り込みイネーブルク リ ア (INTENC) レジスタを除くすべてのパフォーマンスモニタ レジスタを、 ユーザモードからアクセス可能にできます。

3 つのイベン ト カウンタはすべて、 同じ CP15 レジスタを経由して読み書きされます。 パフォーマンスカウンタ選択 (PMNXSEL) レジスタによ り、 どのカウンタを読み書きするかが決定されます。 イベン ト選択レジスタはカウンタごとに 1 つ、 合計 3つ存在し、 同様に 1 つの CP15 レジスタ経由で読み書きされます。

制御レジスタを使用して、 それぞれのイベン ト カウンタを個別に稼働または非稼働にし、 各カウンタについてオーバフローフラグの読み出し と リセッ トが可能です。任意の、 またはすべてのカウンタについて、 オーバフロー時に割り込み要求出力nPMUIRQ のアサート を可能にできます。

プロセッサがデバッグホールト状態のと き、 次の規則が適用されます。

• PMU はイベン ト をカウン ト しない。

• イベン トは ETM インタフェースから不可視である。

• サイクルカウン ト (CCNT) レジスタはホールト状態である。

デバッグ状態の詳細については、 第 11 章 デバッグを参照して下さい。

PMU は、 非侵襲性デバッグが可能なと き、 つま り DBGEN または NIDEN 入力がアサート されている と きのみイベン ト をカウン ト します。 サイ クルカウン ト (CCNT) レジスタは、 PMNC レジスタの DP ビッ トがセッ ト されていない限り、 非侵襲性デバッグが可能かど うかにかかわらず常に稼働しています。 「c9、 パフォーマンスモニタ制御レジスタ」 (ページ 6-7) を参照して下さい。

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 6-6ID013111 Non-Confidential

Page 171: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

イベン ト とパフォーマンスモニタ

6.3 パフォーマンスモニタ レジスタ

パフォーマンスモニタ レジスタについては、 次に示すセクシ ョ ンで説明します。

• 「c9、 パフォーマンスモニタ制御レジスタ」

• 「c9、 カウン ト イネーブルセッ ト レジスタ」 (ページ 6-8)

• 「c9、 カウン ト イネーブルク リ ア レジスタ」 (ページ 6-9)

• 「c9、 オーバフローフラグステータス レジスタ」 (ページ 6-10)

• 「c9、 ソフ ト ウェアインク リ メ ン ト レジスタ」 (ページ 6-11)

• 「c9、 パフォーマンスカウンタ選択レジスタ」 (ページ 6-12)

• 「c9、 サイ クルカウン ト レジスタ」 (ページ 6-13)

• 「c9、 イベン ト選択レジスタ」 (ページ 6-13)

• 「c9、 パフォーマンスモニタカウン ト レジスタ」 (ページ 6-15)

• 「c9、 ユーザイネーブル レジスタ」 (ページ 6-15)

• 「c9、 割り込みイネーブルセッ ト レジスタ」 (ページ 6-16)

• 「c9、 割り込みイネーブルク リ ア レジスタ」 (ページ 6-17)

6.3.1 c9、 パフォーマンスモニタ制御レジスタ

パフォーマンスモニタ制御 (PMNC) レジスタは、 3 つのカウン ト レジスタ、 およびCCNT レジスタの動作を制御します。

PMNC レジスタには次の特徴があ り ます。

• 読み出し / 書き込みレジスタ

• 特権モードでは常にアクセス可能。 ユーザモードでアクセス可能かど うかはUSEREN レジスタによ り決定されます。 「c9、 ユーザイネーブル レジスタ」 (ページ 6-15) を参照して下さい。

PMNC レジスタのビッ ト配置を、 図 6-1 に示します。

図 6-1 PMNC レジスタの形式

PMNC レジスタの各ビッ ト値の意味を、 表 6-2 に示します。

D C P EIMP

31 11 6 4 3 2 1 0

IDCODE N

10

DP

5

X

24 23 16 15

表 6-2 PMNC レジスタのビッ トの機能

ビッ ト フ ィールド 機能

[31:24] IMP 実装者コード。

0x41 = ARM

[23:16] IDCODE ID コード。

0x14 = Cortex-R4

[15:11] N 実装されているカウンタの数を示します。

0x3 = 3 つのカウンタが実装されている

[10: 6] 予約 読み出し時は RAZ、 書き込み時は常に 0 または保持 (SBZP)

[5] DP 禁止されている、 つま り非侵襲性デバッグが不可能なときに、 CCNT を非稼働にします。

0 = 禁止領域でカウン トが稼動中。 これはリセッ ト時の値です。

1 = 禁止領域でカウン トが非稼動

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 6-7ID013111 Non-Confidential

Page 172: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

イベン ト とパフォーマンスモニタ

PMNC レジスタは、 特権モードでは常にアクセス可能です。 このレジスタにアクセスするには、 次の命令を使用して CP15 を読み書きします。

MRC p15, 0, <Rd>, c9, c12, 0 ; Read PMNC RegisterMCR p15, 0, <Rd>, c9, c12, 0 ; Write PMNC Register

6.3.2 c9、 カウン ト イネーブルセッ ト レジスタ

カウン ト イネーブル セッ ト (CNTENS) レジスタは、 任意のパフォーマンスモニタ カウン ト レジスタを稼働します。 読み出し時には、 このレジスタはどのカウンタが稼働中かを示します。 特定のカウン ト イネーブルビッ トに 1 を書き込むと、 そのカウンタが稼働状態になり ます。 カウン ト イネーブルビッ トに 0 を書き込んでも効果はあ り ません。 カウンタを非稼働にするには、 カウン ト イネーブルク リ ア レジスタを使用する必要があ り ます。

CNTENS レジスタには次の特徴があ り ます。

• 読み出し / 書き込みレジスタ

• 特権モードでは常にアクセス可能。 ユーザモードでアクセス可能かど うかはUSEREN レジスタによ り決定されます。 「c9、 ユーザイネーブル レジスタ」 (ページ 6-15) を参照して下さい。

このレジスタの値は、 PMNC レジスタの E ビッ ト (ビッ ト [0]) がセッ ト されていない限り無視されます。 「c9、 パフォーマンスモニタ制御レジスタ」 (ページ 6-7) を参照して下さい。

CNTENS レジスタのビッ ト配置を、 図 6-2 (ページ 6-9) に示します。

[4] X イベン ト を、 ETM などの外部モニタブロッ クのイベン トパスにエクスポート し、 イベ

ン ト を ト レースできるよ うにします。

0 = エクスポートが不可能。 これはリセッ ト時の値です。

1 = エクスポートが可能

[3] D サイ クルカウン ト ディバイダ。

0 = プロセッサのすべてのクロックサイクルをカウン トする。 これはリセッ ト時の値です。

1 = プロセッサのクロ ッ クを 64 サイクルごとにカウン トする。

[2] C サイ クルカウンタのリセッ ト 。

0 = 動作を行いません。

1 = サイクルカウンタ (CCNT) を 0 にリセッ ト します。

このビッ トは RAZ です。

[1] P イベン ト カウンタのリセッ ト 。

0 = 動作を行いません。

1 = すべてのイベン ト カウンタを 0 にリセッ ト します。

このビッ トは RAZ です。

[0] E イネーブルビッ ト 。

0 = CCNT を含むすべてのカウンタを非稼働にします。 これはリセッ ト時の値です。

1 = CCNT を含むすべてのカウンタを稼働します。

表 6-2 PMNC レジスタのビッ トの機能 (続き)

ビッ ト フ ィールド 機能

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 6-8ID013111 Non-Confidential

Page 173: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

イベン ト とパフォーマンスモニタ

図 6-2 CNTENS レジスタの形式

CNTENS レジスタの各ビッ ト値の意味を、 表 6-3 に示します。

CNTENS レジスタにアクセスするには、 次の命令を使用して CP15 を読み書きします。

MRC p15, 0, <Rd>, c9, c12, 1 ; Read CNTENS RegisterMCR p15, 0, <Rd>, c9, c12, 1 ; Write CNTENS Register

CNTENS レジスタは、 PMNC のイネーブルビッ トがク リ アされている と き、 設定は無視されますが、 値は保持されます。

6.3.3 c9、 カウン ト イネーブルクリア レジスタ

カウン ト イネーブル ク リ ア (CNTENS) レジスタは、 任意のパフォーマンスモニタ カウン ト レジスタを非稼働にします。

このレジスタを読み出すと き、 0 と して読み出されるビッ トは、 対応するカウンタが非稼働であるこ とを示します。 1 と して読み出されるビッ トは、 対応するカウンタが稼働しているこ とを示します。

このレジスタに書き込むと き、 値が 0 であるビッ トは無視され、 そのビッ トは更新されません。 値が 1 であるビッ トは、 そのカウンタの稼働をク リ アします。

CNTENC レジスタには次の特徴があ り ます。

• 読み出し / 書き込みレジスタ

• 特権モードでは常にアクセス可能。 ユーザモードでアクセス可能かど うかはユーザイネーブル レジスタによ り決定されます。 「c9、 ユーザイネーブル レジスタ」 (ページ 6-15) を参照して下さい。

CNTENC レジスタのビッ ト配置を、 図 6-3 (ページ 6-10) に示します。

C

31 3 2 1 0

P2P1P0

表 6-3 CNTENS レジスタのビッ トの機能

ビッ ト フ ィールド 機能

[31] C サイクルカウンタ イネーブルのセッ ト。

0 = 非稼働

1 = 稼働

[30:3] 予約 読み出し時は UNP、 書き込み

時は SBZP

[2] P2 カウンタ 2 稼働

[1] P1 カウンタ 1 稼働

[0] P0 カウンタ 0 稼働

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 6-9ID013111 Non-Confidential

Page 174: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

イベン ト とパフォーマンスモニタ

図 6-3 CNTENC レジスタの形式

CNTENC レジスタの各ビッ ト値の意味を、 表 6-4 に示します。

CNTENC レジスタにアクセスするには、 次の命令を使用して CP15 を読み書きします。

MRC p15, 0, <Rd>, c9, c12, 2 ; Read CNTENC RegisterMCR p15, 0, <Rd>, c9, c12, 2 ; Write CNTENC Register

このレジスタのビッ トに書き込むと各カウンタが非稼働になり、 CNTENS レジスタの対応するビッ トがク リ アされます。 「c9、 カウン ト イネーブルセッ ト レジスタ」 (ページ 6-8) を参照して下さい。

PMNC レジスタのイネーブル (EN、 ビッ ト [0]) を使用して、 CCNT を含むすべてのパフォーマンスカウンタを非稼働にできます。 「c9、 パフォーマンスモニタ制御レジスタ」 (ページ 6-7) を参照して下さい。

CNTENC および CNTENS レジスタは、 PMNC のイネーブルビッ トがク リ アされている と き、 設定は無視されますが、 値は保持されます。 CNTENC レジスタは、 PMNCレジスタですべてのカウンタが非稼働になっている と きでも、 個別のカウンタのイネーブルフラグをク リ アするために使用できます。

6.3.4 c9、 オーバフローフラグステータス レジスタ

オーバフローフラグ ステータス (FLAG) レジスタは、 パフォーマンスモニタ カウンタがオーバフローしたかど うかを示します。

FLAG レジスタには次の特徴があ り ます。

• 読み出し / 書き込みレジスタ

• 特権モードでは常にアクセス可能。 ユーザモードでアクセス可能かど うかはUSEREN レジスタによ り決定されます。 「c9、 ユーザイネーブル レジスタ」 (ページ 6-15) を参照して下さい。

FLAG レジスタのビッ ト配置を、 図 6-4 (ページ 6-11) に示します。

C

31 3 2 1 0

P2P1P0

表 6-4 CNTENC レジスタのビッ トの機能

ビッ ト フ ィールド 機能

[31] C サイ クルカウンタ イネーブルのク リ ア。

0 = 非稼働

1 = 稼働

[30:3] 予約 読み出し時は UNP、 書き込

み時は SBZP

[2] P2 カウンタ 2 稼働

[1] P1 カウンタ 1 稼働

[0] P0 カウンタ 0 稼働

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 6-10ID013111 Non-Confidential

Page 175: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

イベン ト とパフォーマンスモニタ

図 6-4 FLAG レジスタの形式

FLAG レジスタの各ビッ ト値の意味を、 表 6-5 に示します。

FLAG レジスタにアクセスするには、 次の命令を使用して CP15 を読み書きします。

MRC p15, 0, <Rd>, c9, c12, 3 ; Read FLAG RegisterMCR p15, 0, <Rd>, c9, c12, 3 ; Write FLAG Register

FLAG レジスタのオーバフローフラグが 1 にセッ ト されている場合、 次のいずれかが発生するまでセッ ト された状態に保持されます。

• FLAG レジスタのフラグビッ トに 1 が書き込まれ、 フラグがク リ アされる。

• プロセッサがリセッ ト される。

次の操作では、 オーバフローフラグはク リ アされません。

• オーバフローしたカウンタが、 CNTENC レジスタで非稼働にされる。

• PMNC レジスタですべてのカウンタが非稼働にされる。

• PMNC レジスタを使用して、 オーバフローしたカウンタが リセッ ト される。

6.3.5 c9、 ソフ トウェアインクリ メン ト レジスタ

ソフ ト ウェアインク リ メ ン ト (SWINCR) レジスタは、 パフォーマンスモニタカウント レジスタのカウン ト をインク リ メ ン ト します。

SWINCR レジスタには次の特徴があ り ます。

• 書き込み専用レジスタで、 読み出し値は 0

• 特権モードでは常にアクセス可能。 ユーザモードでアクセス可能かど うかはUSEREN レジスタによ り決定されます。 「c9、 ユーザイネーブル レジスタ」 (ページ 6-15) を参照して下さい。

注意 SWINCR レジスタを使用してパフォーマンスモニタカウン ト レジスタをインク リ メン トするのは、 イベン ト選択レジスタで、 カウンタイベン トが 0x00 (ソフ ト ウェアカウン ト ) に設定されている場合のみにする必要があ り ます。 「c9、 イベン ト選択レジスタ」 (ページ 6-13) を参照して下さい。

C

31 3 2 1 0

P2P1P0

表 6-5 オーバフローフラグステータス レジスタのビッ トの機能

ビッ ト フ ィールド 機能

[31] サイクルカウンタ オーバフロー

サイクルカウンタ オーバフローフラグ

0 = 非稼働

1 = 稼働

[30:3] 予約 読み出し時は UNP、 書き込み時はSBZP

[2] P2 カウンタ 2 のオーバフローフラグ

[1] P1 カウンタ 1 のオーバフローフラグ

[0] P0 カウンタ 0 のオーバフローフラグ

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 6-11ID013111 Non-Confidential

Page 176: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

イベン ト とパフォーマンスモニタ

カウンタイベン トが 0x00 以外の値に設定されている場合、 SWINCR レジスタを使用してパフォーマンスモニタカウン ト レジスタのインク リ メ ン ト を行う と、 結果は予測不能です。

SWINCR レジスタのビッ ト配置を、 図 6-5 に示します。

図 6-5 SWINCR レジスタの形式

SWINCR レジスタの各ビッ ト値の意味を、 表 6-6 に示します。

SWINCR レジスタにアクセスするには、 次の命令を使用して CP15 を読み書きします。

MRC p15, 0, <Rd>, c9, c12, 4 ; Read SWINCR RegisterMCR p15, 0, <Rd>, c9, c12, 4 ; Write SWINCR Register

6.3.6 c9、 パフォーマンスカウンタ選択レジスタ

パフォーマンスカウンタ選択 (PMNXSEL) レジスタは、 パフォーマンスモニタカウント レジスタを選択します。 イベン ト選択レジスタおよびパフォーマンスモニタカウン ト レジスタへのアクセスによって、 どのカウン ト レジスタがアクセスまたは制御されるかを決定します。

PMNXSEL レジスタには次の特徴があ り ます。

• 読み出し / 書き込みレジスタ

• 特権モードでは常にアクセス可能。 ユーザモードでアクセス可能かど うかはUSEREN レジスタによ り決定されます。 「c9、 ユーザイネーブル レジスタ」 (ページ 6-15) を参照して下さい。

PMNXSEL レジスタのビッ ト配置を、 図 6-6 に示します。

図 6-6 PMNXSEL レジスタの形式

31 3 2 1 0

P2P1P0

表 6-6 SWINCR レジスタのビッ トの機能

ビッ ト フ ィールド 機能

[31:3] 予約 読み出し時は RAZ、 書き込み

時は SBZP

[2] P2 カウンタ 2 のインク リ メン ト

[1] P1 カウンタ 1 のインク リ メン ト

[0] P0 カウンタ 0 のインク リ メン ト

SEL

31 4 05

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 6-12ID013111 Non-Confidential

Page 177: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

イベン ト とパフォーマンスモニタ

PMNXSEL レジスタの各ビッ ト値の意味を、 表 6-7 に示します。

表 6-7 に示されている以外の値を PMNXSEL レジスタにプログラムした場合、 結果は予測不能です。

PMNXSEL レジスタにアクセスするには、 次の命令を使用して CP15 を読み書きします。

MRC p15, 0, <Rd>, c9, c12, 5 ; Read PMNXSEL RegisterMCR p15, 0, <Rd>, c9, c12, 5 ; Write PMNXSEL Register

6.3.7 c9、 サイクルカウン ト レジスタ

サイクルカウン ト (CCNT) レジスタは、 ク ロ ッ クサイ クルをカウン ト します。

CCNT レジスタには次の特徴があ り ます。

• 読み出し / 書き込みレジスタ

• 特権モードでは常にアクセス可能。 ユーザモードでアクセス可能かど うかはUSEREN レジスタによ り決定されます。 「c9、 ユーザイネーブル レジスタ」 (ページ 6-15) を参照して下さい。

CCNT にアクセスするには、 次の命令を使用して CP15 を読み書きします。

MRC p15, 0, <Rd>, c9, c13, 0 ; Read CCNT RegisterMCR p15, 0, <Rd>, c9, c13, 0 ; Write CCNT Register

サイクルカウン ト レジスタは、 ソフ ト ウェアからの書き込みを行う前に非稼働にする必要があ り ます。 このレジスタが稼働中にソフ ト ウェアによ り書き込みを行った場合、 結果は予測不能です。

6.3.8 c9、 イベン ト選択レジスタ

プロセッサには 3 つのイベン ト選択レジスタ (EVTSEL0 ~ EVTSEL2) が存在し、 それぞれはパフォーマンスモニタ カウン ト (PMC) レジスタの PMC0 ~ PMC2 に対応します。 各レジスタは、 PMC レジスタによってカウン トするイベン ト を選択します。アクセス対象となるレジスタは、 パフォーマンスカウンタ選択レジスタの値によって決定されます。

EVTSEL レジスタには次の特徴があ り ます。

• 読み出し / 書き込みレジスタ

• 特権モードでは常にアクセス可能。 ユーザモードでアクセス可能かど うかはUSEREN レジスタによ り決定されます。 「c9、 ユーザイネーブル レジスタ」 (ページ 6-15) を参照して下さい。

EVTSELx レジスタのビッ ト配置を、 図 6-7 (ページ 6-14) に示します。

表 6-7 パフォーマンスカウンタ選択レジスタのビッ トの機能

ビッ ト フ ィールド 機能

[31:5] 予約 読み出し時は RAZ、 書き込

み時は SBZP

[4:0] SEL カウンタ選択。

b00000 = カウンタ 0 を選択

b00001 = カウンタ 1 を選択

b00010 = カウンタ 2 を選択

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 6-13ID013111 Non-Confidential

Page 178: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

イベン ト とパフォーマンスモニタ

図 6-7 EVTSELx レジスタの形式

EVTSELx レジスタの各ビッ ト値の意味を、 表 6-8 に示します。

EVTSELx レジスタにアクセスするには、 次の命令を使用して CP15 を読み書きします。

MRC p15, 0, <Rd>, c9, c13, 1 ; Read EVTSELx RegisterMCR p15, 0, <Rd>, c9, c13, 1 ; Write EVTSELx Register

記録されるイベン トの絶対的なカウン ト数は、 パイプラインの影響によ り変化する可能性があ り ます。 これは、 カウンタが稼働している時間が非常に短いと き以外は無視できます。

プロセッサ内のカウンタに加えて、 表 6-1 (ページ 6-2) に示されているイベン トのほとんどは、 ETM ユニッ ト または他の外部ト レースハード ウェアから利用可能で、イベン トの監視に使用できます。 これらのイベン ト を監視する方法については、『CoreSight ETM-R4 テクニカルリ ファレンス マニュアル』 を参照して下さい。

SEL

31 08 7

表 6-8 EVTSELx レジスタのビッ トの機能

ビッ ト フ ィールド 機能

[31:8] 予約 RAZ または SBZP

[7:0] SEL 選択されているイベン ト番号。 値については表 6-1 (ページ 6-2) を参照して下さい。

このフ ィールドのリセッ ト時の値は予測不能です。

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 6-14ID013111 Non-Confidential

Page 179: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

イベン ト とパフォーマンスモニタ

6.3.9 c9、 パフォーマンスモニタカウン ト レジスタ

プロセッサには、 3 つの PMC レジスタ (PMC0 ~ PMC2) が存在します。 各 PMC レジスタは PMNXSEL レジスタによ り選択され、 EVTSEL レジスタによって選択されたイベン トのインスタンスをカウン ト します。 各 PMC レジスタのビッ ト [31:0] に、イベン トのカウン トが格納されます。 アクセス対象となるレジスタは、 パフォーマンスカウンタ選択レジスタの値によって決定されます。

各 PMC レジスタには、 次の特徴があ り ます。

• 読み出し / 書き込みレジスタ

• 特権モードでは常にアクセス可能。 USEREN レジスタによ りアクセスが決定されます。 「c9、 ユーザイネーブル レジスタ」 を参照して下さい。

パフォーマンスモニタカウン ト レジスタにアクセスするには、 次の命令を使用してCP15 を読み書きします。

MRC p15, 0, <Rd>, c9, c13, 2 ; Read current PMNx RegisterMCR p15, 0, <Rd>, c9, c13, 2 ; Write current PMNx Register

6.3.10 c9、 ユーザイネーブル レジスタ

ユーザイネーブル (USEREN) レジスタは、 ユーザモードから次のレジスタへのアクセスを可能にします。

• パフォーマンスモニタ レジスタ。 「パフォーマンスモニタ レジスタ」 (ページ 6-7) を参照して下さい。

• 検証レジスタ。 「検証レジスタ」 (ページ 4-62) を参照して下さい。

注 USEREN では、 割り込み生成を制御するレジスタへのアクセスは提供されません。

USEREN レジスタには次の特徴があ り ます。

• 読み出し / 書き込みレジスタ

• 特権モードでのみ書き込み可能、 すべてのプロセッサモードで読み出し可能

USEREN レジスタのビッ ト配置を、 図 6-8 に示します。

図 6-8 USEREN レジスタの形式

パフォーマンスモニタ カウン ト イネーブルセッ ト レジスタの各ビッ ト値の意味を、表 6-9 に示します。

31 1 0

EN

表 6-9 USEREN レジスタのビッ トの機能

ビッ ト フ ィールド 機能

[31:1] 予約 RAZ または SBZP

[0] EN パフォーマンスモニタおよび検証レジスタへのユーザモードでのアクセス。

0 = 不可能。 これはリセッ ト時の値です。

1 = 可能

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 6-15ID013111 Non-Confidential

Page 180: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

イベン ト とパフォーマンスモニタ

USEREN レジスタの EN ビッ トがセッ ト されていない場合、 ユーザモードからパフォーマンスモニタ レジスタまたは検証レジスタにアクセスを試みる と、 未定義命令例外が引き起こ されます。

注 パフォーマンスモニタ レジスタおよび検証レジスタへのアクセス許可の詳細については、 『ARM アーキテクチャ リ ファレンスマニュアル』 を参照して下さい。

USEREN レジスタにアクセスするには、 次の命令を使用して CP15 を読み書きします。

MRC p15, 0, <Rd>, c9, c14, 0 ; Read USEREN RegisterMCR p15, 0, <Rd>, c9, c14, 0 ; Write USEREN Register

6.3.11 c9、 割り込みイネーブルセッ ト レジスタ

割り込みイネーブルセッ ト (INTENS) レジスタは、 PMC レジスタ (PMC0 ~ PMC2)および CCNT のいずれかが、 オーバフロー時に割り込み要求を生成するかど うかを決定します。

INTENS レジスタには次の特徴があ り ます。

• 読み出し / 書き込みレジスタ

• 特権モードでのみアクセス可能

このレジスタを読み出すと、 現在の設定値が返されます。 このレジスタに書き込むと、 割り込みが可能になり ます。 割り込みを不可能にする方法は、 INTENC レジスタへの書き込みのみです。

INTENS レジスタのビッ ト配置を、 図 6-9 に示します。

図 6-9 INTENS レジスタの形式

INTENS レジスタの各ビッ ト値の意味を、 表 6-10 に示します。

INTENS レジスタのビッ ト [31]、 [2]、 [1]、 [0] を読み出したと き、 値の意味は次のとおりです。

• 0 = 割り込みが不可能

• 1 = 割り込みが可能

C

31 3 2 1 0

P2P1P0

表 6-10 INTENS レジスタのビッ トの機能

ビッ ト フ ィールド 機能

[31] C CCNT オーバフロー割り込みが可能

[30:3] 予約 読み出し時は UNP、 書き込み時は SBZP

[2] P2 PMC2 オーバフロー割り込みが可能

[1] P1 PMC1 オーバフロー割り込みが可能

[0] P0 PMC0 オーバフロー割り込みが可能

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 6-16ID013111 Non-Confidential

Page 181: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

イベン ト とパフォーマンスモニタ

INTENS レジスタのビッ ト [31]、 [2]、 [1]、 [0] に書き込むと き、 値の意味は次のとおりです。

• 0 = 何の動作も行われません。

• 1 = 割り込みが可能になり ます。

割り込みイネーブルセッ ト レジスタにアクセスするには、 次の命令を使用して CP15を読み書きします。

MRC p15, 0, <Rd>, c9, c14, 1 ; Read INTENS RegisterMCR p15, 0, <Rd>, c9, c14, 1 ; Write INTENS Register

このユニッ トが割り込みを生成した場合、 プロセッサは nPMUIRQ ピンをアサートします。 このピンを外部の割り込みコン ト ローラへルーティングし、 優先度付けやマスク処理に使用できます。 この割り込みをプロセッサに通知する他の機構は存在しません。

注 パフォーマンスモニタ割り込み要求信号 nPMUIRQ は、 システム割り込みコン トローラへ接続するこ とを想定したものです。

6.3.12 c9、 割り込みイネーブルクリア レジスタ

割り込みイネーブルク リ ア (INTENC) レジスタは、 PMC レジスタ (PMC0 ~ PMC2)および CCNT のいずれかが、 オーバフロー時に割り込み要求を生成するかど うかを決定します。

INTENC レジスタには次の特徴があ り ます。

• 読み出し / 書き込みレジスタ

• 特権モードでのみアクセス可能

このレジスタを読み出すと、 現在の設定値が返されます。 このレジスタに書き込むと、 割り込み要求が不可能になり ます。 割り込み要求を可能にする方法は、 INTENSレジスタへの書き込みのみです。

INTENC レジスタのビッ ト配置を、 図 6-10 に示します。

図 6-10 INTENC レジスタの形式

INTENC レジスタの各ビッ ト値の意味を、 表 6-11 に示します。

C

31 3 2 1 0

P2P1P0

表 6-11 INTENC レジスタのビッ トの機能

ビッ ト フ ィールド 機能

[31] C CCNT オーバフロー割り込みイネーブルビッ ト

[30:3] 予約 読み出し時は UNP、 書き込み時は SBZP

[2] P2 可能な場合、 PMC2 オーバフロー時に割り込みが発生する

[1] P1 可能な場合、 PMC1 オーバフロー時に割り込みが発生する

[0] P0 可能な場合、 PMC0 オーバフロー時に割り込みが発生する

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 6-17ID013111 Non-Confidential

Page 182: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

イベン ト とパフォーマンスモニタ

INTENC レジスタのビッ ト [31]、 [2]、 [1]、 [0] を読み出したと き、 値の意味は次のとおりです。

• 0 = 割り込みが不可能

• 1 = 割り込みが可能

INTENC レジスタのビッ ト [31]、 [2]、 [1]、 [0] に書き込むと き、 値の意味は次のとおりです。

• 0 = 何の動作も行われません。

• 1 = 割り込みが不可能になり ます。

INTENC レジスタにアクセスするには、 次の命令を使用して CP15 を読み書きします。

MRC p15, 0, <Rd>, c9, c14, 2 ; Read INTENC RegisterMCR p15, 0, <Rd>, c9, c14, 2 ; Write INTENC Register

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 6-18ID013111 Non-Confidential

Page 183: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

イベン ト とパフォーマンスモニタ

6.4 イベン トバス インタフェース

イベン トバス EVNTBUS は、 イベン トが発生したと きの通知に使用されます。 イベン トバスには、 パフォーマンス監視ユニッ トによってカウン ト可能なイベン トのほとんどが含まれていますが、 すべてが含まれているわけではあ り ません。 各イベントは、 このバスの各ビッ トに割り当てられており、 そのビッ トはイベン トが発生するごとに 1 サイクルの間アサート されます。

イベン トバスは、 稼働状態でのみイベン ト を通知します。 パフォーマンスモニタ制御レジスタの X ビッ ト をセッ トする と、 イベン トバスが稼働状態になり ます。 「c9、パフォーマンスモニタ制御レジスタ」 (ページ 6-7) を参照して下さい。

各イベン トがイベン トバスのどのビッ トで通知されるかについては、表 6-1 (ページ 6-2) を参照して下さい。

注 イベン トが PMU でカウン ト されている場合、 カウン トがインク リ メ ン ト されるサイクルは、 イベン トがイベン トバス上で通知されるサイ クルと正確に同じではあ り ません。

6.4.1 イベン トバスとカウンタの使用

イベン トバスは、 ETM-R4 に接続されるよ う設計されており、 これによってプロセッサイベン トがデバッグの目的で ト レースを ト リガするこ とが可能にな り ます。プロセッサの外部に存在するイベン ト カウン ト レジスタや、 割り込みジェネレータにイベン トバスを接続するこ と もできます。

それぞれの EVNTBUS ピンは、 イベン トの発生ごとに 1 サイクルだけアサート されるため、 複数の EVNTBUS ピンを論理和で組み合わせて複合イベン ト を作成すること も可能です。 このよ う な複合イベン ト信号は、 それに含まれているイベン トのいずれかが発生したと きにアサート されますが、 同じサイ クルで複数のイベン トが発生しても、 複合イベン トは 1 回しか発生しません。

プロセッサには、 2 つのイベン ト入力ピン ETMEXTOUT[1:0] も存在します。 このバスは通常、 ETM への接続を目的と したもので、 Cortex-R4 パフォーマンスモニタがETM によ り生成されるイベン ト をカウン トするために使用されます。 これらの入力を、 プロセッサの外部で生成される複合イベン トに使用するこ と も可能です。

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 6-19ID013111 Non-Confidential

Page 184: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

第 7 章 メモリ保護ユニッ ト

本章では、 メモ リ保護ユニッ ト (MPU) について説明します。 本章は次のセクシ ョ ンから構成されています。

• 「MPU について」 (ページ 7-2)

• 「メモ リ タイプ」 (ページ 7-7)

• 「領域属性」 (ページ 7-9)

• 「MPU と メモ リ システムとの相互動作」 (ページ 7-11)

• 「MPU フォールト 」 (ページ 7-12)

• 「MPU のソフ ト ウェアアクセス可能レジスタ」 (ページ 7-13)

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 7-1ID013111 Non-Confidential

Page 185: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

メモリ保護ユニッ ト

7.1 MPU について

MPU は、 レベル 1 メモ リ システムと連携して動作し、 レベル 1 および外部メモ リへのアクセスを制御します。 MPU のアーキテクチャの完全な説明については、 『ARMアーキテクチャ リ ファレンスマニュアル』 を参照して下さい。

MPU によ り、 メモ リ を領域に分割し、 領域ごとに個別の保護属性を設定できます。MPU は 0、 8 つ、 または 12 個のメモ リ領域をサポート します。

注 MPU の領域数が 0 の場合、 MPU の稼働やプログラムは行えません。 実装されている領域数が 0 の場合、 属性はデフォルト メモ リマップのみによって決定されます。

各領域にはベースアドレス とサイズがプログラムされ、 領域をオーバラ ップさせてメモ リマップのプログラ ミ ングを効率化するこ とが可能です。 オーバラ ップをサポートするため、 領域には優先度が割り当てられており、 領域 0 の優先度は 低で、領域 11 の優先度が 高になり ます。 MPU は、 アドレスがヒ ッ ト した領域のうち、

も優先度の高い領域のアクセス許可と属性を返します。

MPU は、 CP15 レジスタ c1 および c6 を使用してプログラムされます。 「MPU 制御および構成」 (ページ 4-5) を参照して下さい。 メモ リ領域の制御 (読み出し / 書き込み) アクセスは、 特権モードでのみ許可されます。

デフォルトのメモ リマップを、 表 7-1 に示します。

こ こでは、 次の ト ピッ クについて説明します。

• 「メモ リ領域」 (ページ 7-3)

• 「オーバラ ップしている領域」 (ページ 7-4)

表 7-1 デフォルトのメモリマップ

アドレスの範囲

命令メモリ タイプ データ メモリ タイプ

実行不可命令キャッシュが稼動している

命令キャッシュが稼動していない

データキャッシュが稼動している

データキャッシュが稼動していない

0xFFFFFFFF ノーマル、 キャ ッシュ不可、HIVECS が TRUEの場合のみ

ノーマル、 キャ ッシュ不可、HIVECS が TRUEの場合のみ

ス ト ロングリオーダ

ス ト ロングリオーダ

HIVECS が TRUEのと きのみ命令の実行が許可される

0xF0000000

0xEFFFFFFF - - ス ト ロングリオーダ

ス ト ロングリオーダ

実行不可

0xC0000000

0xBFFFFFFF - - 共有デバイス 共有

デバイス

実行不可

0xA0000000

0x9FFFFFFF - - 非共有

デバイス

非共有

デバイス

実行不可

0x80000000

0x7FFFFFFF ノーマル、 キャ ッシュ可能、 非共有

ノーマル、 キャ ッシュ不可、 非共有

ノーマル、 キャ ッシュ不可、 共有

ノーマル、 キャ ッシュ不可、 共有

命令の実行が許可される

0x60000000

0x5FFFFFF ノーマル、 キャ ッシュ可能、 非共有

ノーマル、 キャ ッシュ不可、 非共有

ノーマル、 ライ トスルーキャ ッシュ可能、 非共有

ノーマル、 キャ ッシュ不可、 共有

命令の実行が許可される

0x40000000

0x3FFFFFFF ノーマル、 キャ ッシュ可能、 非共有

ノーマル、 キャ ッシュ不可、 非共有

ノーマル、 ライ トスルー / 書き込み割り当てキャ ッシュ可能、 非共有

ノーマル、 キャ ッシュ不可、 共有

命令の実行が許可される

0x00000000

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 7-2ID013111 Non-Confidential

Page 186: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

メモリ保護ユニッ ト

• 「バッ クグラウンド領域」 (ページ 7-6)

• 「TCM 領域」 (ページ 7-6)

7.1.1 メモリ領域

MPU を稼働する前に、 低 1 つの有効な保護領域をプログラムする必要があ り ます。 この操作を行わないと、 プロセッサはリセッ トによってのみ回復可能な状態になり ます。

MPU が非稼働のとき、 アクセス許可のチェッ クは行われず、 メモリ属性はデフォルトのメモリマップに従って割り当てられます。 表 7-1 (ページ 7-2) を参照して下さい。

MPU を稼働 / 非稼働にする方法の詳細については、 「MPU と メモ リ システムとの相互動作」 (ページ 7-11) を参照して下さい。

MPU の領域の数は、 実装によ り 大 8 つまたは 12 個です。 CP15 レジスタ c6 を使用して、 各領域について次のものを指定できます。

• 領域ベースアドレス

• 領域サイズ

• サブ領域の稼働

• 領域属性

• 領域のアクセス許可

• 領域の稼働

領域ベースアドレス

ベースアドレスは、 メモ リ領域の開始を定義します。 このアドレスは、 領域サイズの境界にアラインしている必要があ り ます。 例えば、 領域のサイズを 8 KB にプログラムする場合、 ベースアドレスは 8 KB の倍数にする必要があ り ます。

注 領域が正し くアラインしていない場合、 動作は予測不能です。

領域サイズ

領域サイズは 5 ビッ ト値と して指定され、 32 バイ ト (キャ ッシュライン長) ~ 4 GBまでの範囲の値がエンコード されます。 エンコードを、 表 4-32 (ページ 4-51) に示します。

サブ領域

それぞれの領域は、 8 つのサブ領域に分割できます。 これらのサブ領域は同じサイズで、 オーバラ ップしません。 非稼働のサブ領域に含まれる メモ リ アドレスへのアクセスでは、 その領域について定義されている属性とアクセス許可が使用されません。その代わりに、 よ り優先度の低い領域の属性とアクセス許可が使用され、 そのアドレスに他の領域がオーバラ ップしていない場合はバッ クグラウンドフォールトが生成されます。 これによって、 保護の強化と、 メモ リ属性の細かい設定が可能になります。

256 バイ ト~ 4 GB のサイズの領域はすべて、 8 つのサブ領域をサポート します。 256バイ ト未満のサイズの領域はサブ領域をサポート しないため、 これらの領域ではサブ領域非稼働フ ィールドは SBZ/UNP です。

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 7-3ID013111 Non-Confidential

Page 187: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

メモリ保護ユニッ ト

領域属性

それぞれの領域には、 多くの属性が関連付けられています。 これらの属性は、 その領域に属するアドレスに対してプロセッサがアクセスしたと き、 メモ リ アクセスがどのよ うに実行されるかを制御します。 属性には次のものがあ り ます。

• メモ リ タイプ。 次のいずれかです。

— ス ト ロング リオーダ

— デバイス

— ノーマル

• 共有 / 非共有

• キャ ッシュ不可

• ラ イ ト スルーキャ ッシュ可能

• ラ イ トバッ クキャ ッシュ可能

• 読み出し割り当て

• 書き込み割り当て

メモ リ タイプの詳細については 「メモ リ タイプ」 (ページ 7-7) を、 領域にタイプと属性を割り当てる方法については 「領域属性」 (ページ 7-9) を参照して下さい。

領域のアクセス許可

それぞれの領域には、 特権モードまたはすべてのモードに対して、 アクセス不可、読み出し専用アクセス、 読み出し / 書き込みアクセスのいずれかのアクセス許可を設定できます。 また、 それぞれの領域を実行不可 (XN) と してマークし、 その領域からの命令フェッチを禁止できます。

例えば、 ユーザモード アプ リ ケーシ ョ ンが、 特権モードアクセスのみの領域にアクセスを試みる と、 アクセス許可フォールトが引き起こ されます。

ARM アーキテクチャは、 アドレス計算を実行するために、 インライン リ テラルと呼ばれる定数を使用します。 アセンブラおよびコンパイラはこれらの定数を自動的に生成し、 命令コードにインラインと して格納します。 正しい動作を保証するため、データの読み出しアクセス許可のある メモ リ領域からのみ命令を実行できます。 詳細については、 『ARM アーキテクチャ リ ファレンスマニュアル』 を参照して下さい。アクセス許可をプログラムする方法については、 表 4-34 (ページ 4-52) を参照して下さい。

デバイスまたはス ト ロング リオーダのメモ リ タイプ属性を持つ領域からは、 命令を実行できません。 プロセッサは、 このよ うな領域を、 XN アクセス許可を持つものとして扱います。

7.1.2 オーバラップしている領域

MPU には、 複数のオーバラ ップする領域をプログラムできます。 オーバラ ップしている領域については、 固定の優先度決定方式によ り、 メモ リ アクセスの属性および許可が決定されます。 領域 11 の属性およびアクセス許可が も優先度が高く、 領域0 は優先度が 低です。 次に例を示します。

領域 2 サイズが 4 KB で、 アドレス 0x3000 から開始されます。 特権モードでは完全アクセス、 ユーザモードでは読み出し専用アクセスです。

領域 1 サイズが 16 KB で、 アドレス 0x0000 から開始されます。 特権モード とユーザモードの両方で完全アクセスが許可されます。

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 7-4ID013111 Non-Confidential

Page 188: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

メモリ保護ユニッ ト

プロセッサがユーザモードでアドレス 0x3010 へのデータ書き込みを実行する と、図 7-1 に示すよ うに、 そのアドレスは領域 1 と領域 2 の両方に属します。 これらの領域のアクセス許可は異なるため、 領域 2 に関連付けられているアクセス許可が適用されます。 この領域について、 ユーザモードは読み取り専用アクセスなので、 アクセス許可フォールトが発生し、 データアボートが引き起こ されます。

図 7-1 オーバラップしているメモリ領域

オーバラップしている領域の使用例

オーバラップしている領域を、 スタッ ク保護のため使用できます。 次に例を示します。

• すべてのスタ ッ クに適切なサイズを、 領域 1 に割り当てます。

• 領域 2 に 小の領域サイズである 32 バイ ト を割り当て、 現在のプロセスで使用されるスタ ッ クの 後に配置します。

• 領域 2 のアクセス許可を、 アクセス不可に設定します。

現在のプロセスが使用中のスタ ッ クをオーバフローした場合、 プロセッサによ り領域 2 へ書き込みアクセスが行われ、 MPU によってアクセス許可フォールトが引き起こ されます。

図 7-2 オーバーレイによるスタ ック保護

サブ領域の使用例

サブ領域を、 スタ ッ ク保護のため使用できます。 次に例を示します。

• すべてのスタ ッ クに適切なサイズを、 領域 1 に割り当てます。

• 下位のサブ領域の非稼働ビッ ト をセッ ト します。 すなわち、 CP15 MPU 領域サイズレジスタのサブ領域の非稼働ビッ ト (ビッ ト [15:8]) を 0x01 にセッ ト します。

2

1

0x4000

0x0000

0x3000

0x3010

1

0x4000

0x0000 2

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 7-5ID013111 Non-Confidential

Page 189: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

メモリ保護ユニッ ト

現在のプロセスが使用中のスタ ッ クをオーバフローした場合、 プロセッサによ り非稼働のサブ領域へ書き込みアクセスが行われ、 MPU によってバッ クグラウンドフォールトが引き起こ されます。

図 7-3 オーバラップしているメモリのサブ領域

7.1.3 バックグラウンド領域

領域のオーバラ ップによ り、 領域をシステムの物理メモリデバイスに、 よ り柔軟にマッピングできます。 オーバラ ップしているプロパティは、 バッ クグラウンド領域の指定にも使用できます。 例えば、 多数の物理メモリ領域が、 4 GB のアドレス空間に間隔をあけて分散している と仮定します。 プログラムのエラーが発生した場合、 プロセッサは定義済みのどの領域にも属さないアドレスを発行する可能性があり ます。

プロセッサが発行するアドレスが、 定義済みのどの領域にも属さない場合、 MPU は必ずそのアクセスをアボート します。 つま り、 MPU の領域にマップされていないアドレスへのアクセスはすべて、 バッ クグラウンドフォールト を生成します。 この動作は、 領域 0 を 4 GB のバッ クグラウンド領域と してプログラムするこ とによ りオーバライ ドできます。 この場合、 アドレスが他の 11 の領域のいずれにも属さないと きは、領域 0 に指定されている属性とアクセス許可が、 アクセスの制御に使用されます。

特権モードでは、 システム制御レジスタの BR ビッ ト (ビッ ト [17]) をセッ ト して、この動作をオーバライ ドするこ と もできます。 これによって、 定義済み領域のいずれにも属さない特権アクセスは、 デフォルトのメモ リマップを使用するよ うにな ります。

7.1.4 TCM 領域

TCM インタフェースを使用してアクセスするよ うに構成されたメモ リ アドレスには、 そのアドレスが属する MPU 領域の属性とは無関係に、 ノーマル、 非共有タイプの属性が与えられます。 TCM 領域内のアドレスのアクセス許可は、 そのアドレスが属する MPU 領域から引き継がれます。 詳細については、 「TCM について」 (ページ 8-13) を参照して下さい。

0x4000

0x0000

0x0800

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 7-6ID013111 Non-Confidential

Page 190: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

メモリ保護ユニッ ト

7.2 メモリ タイプ

ARM アーキテクチャでは、 特定のデバイスに適した特性を持つメモ リ タイプの組が定義されています。 メモ リ タイプ属性は次の 3 種類で、 これらは相互に排他的です。

• ス ト ロング リオーダ

• デバイス

• ノーマル

それぞれの MPU メモ リ領域には、 個別のメモ リ タイプ属性を割り当てるこ とができます。 メモ リ タイプの要約を、 表 7-2 に示します。

注 プロセッサのレベル 1 キャ ッシュは、 共有ノーマル領域をキャ ッシュしません。

メモ リ属性と タイプ、 メモ リバリ ア、 およびメモ リ アクセスの順序付け要件の詳細については、 『ARM アーキテクチャ リ ファレンスマニュアル』 および 『アプ リ ケーシ ョ ン ノート 204、 プロセッサのメモ リ タイプとアクセスの順序付け』 を参照して下さい。

7.2.1 メモリ タイプの使用

プロセッサのメモ リ システムにはス ト アバッファが含まれており、 ノーマルタイプ メモ リへのアクセスのスループッ ト改善に役立ちます。 詳細については、 「ス ト アバッファ」 (ページ 8-18) を参照して下さい。 順序付け規則の関係で、 他のタイプのメモ リへのアクセスは一般に、 ノーマルメモ リへのアクセスよ り もスループッ トが低いか、 レイテンシが長くな り ます。 特に、 次の項目について注意が必要です。

• デバイス メモ リからの読み出しでは、 初にデバイス メモ リへのすべての書き込みのス ト アバッファをドレインする必要があ り ます。

• ス ト ロング リオーダ メモ リへのすべてのアクセスでは、 初にス ト アバッファを完全にドレインする必要があ り ます。

同様に、 ス ト ロング リオーダまたはデバイスタイプのメモ リにアクセスする と きは、プロセッサの割り込み応答を変更する必要があるため、 割り込み応答のレイテンシが増大します。 詳細については、 「低割り込みレイテンシ」 (ページ 2-20) を参照して下さい。

表 7-2 メモリ属性の要約

メモリ タイプ属性

共有 / 非共有 その他の属性 説明

ス ト ロングリオーダ

- - ス ト ロング リオーダメモリに対する メモリ アクセスは、すべてプログラム順に発生します。 ス ト ロング リオーダアクセスはすべて、 共有されるこ とを前提と しています。

デバイス 共有 - いくつかのプロセッサで共有される、 メモ リマップされたペリ フェラル

非共有 - 1 つのプロセッサでのみ使用される、 メモ リマップされ

たペリ フェラル

ノーマル 共有 キャッシュ不可、 ライト スルーキャ ッシュ可能、 ライ トバッ クキャ ッシュ可能

いくつかのプロセッサ間で共有される ノーマルメモ リ

非共有 キャッシュ不可、 ライト スルーキャ ッシュ可能、 ライ トバッ クキャ ッシュ可能

1 つのプロセッサでのみ使用される ノーマルメモ リ

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 7-7ID013111 Non-Confidential

Page 191: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

メモリ保護ユニッ ト

良のパフォーマンスを保証するため、 各メモ リ タイプのアーキテクチャ的な意味を理解する必要があ り ます。 デバイス メモ リ タイプは適切なメモ リ領域、 一般にはペリ フェラルに使用し、 ス ト ロング リオーダ メモ リ タイプはそれが絶対に必要なメモ リ領域にのみ使用するよ うにします。

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 7-8ID013111 Non-Confidential

Page 192: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

メモリ保護ユニッ ト

7.3 領域属性

それぞれの領域には、 多くの属性が関連付けられています。 これらの属性は、 その領域に属するアドレスに対してプロセッサがアクセスしたと き、 メモ リ アクセスがどのよ うに実行されるかを制御します。 属性には次のものがあ り ます。

• メモ リ タイプ。 「メモ リ タイプ」 (ページ 7-7) を参照して下さい。 次のいずれかです。

— ス ト ロング リオーダ

— デバイス

— ノーマル

• 共有 / 非共有

• キャ ッシュ不可

• ラ イ ト スルー キャ ッシュ可能

• ラ イ トバッ ク キャ ッシュ可能

• 読み出し割り当て

• 書き込み割り当て

領域アクセス制御レジスタは、 メモ リ領域のタイプをエンコードするため、TEX[2:0]、 C、 B の 5 ビッ ト を使用します。 これらのビッ トから メモ リ領域属性へのマッピングを、 表 7-3 に示します。

注 アーキテクチャの以前のバージ ョ ンでは、 TEX、 C、 B ビッ トは、 それぞれタイプ拡張、 キャ ッシュ可能、 バッファ可能ビッ ト と呼ばれていました。 これらの名前は、現在では B、 C、 TEX ビッ トの機能を適切に表現しなくなっています。

ラ イ トバッ クまたはライ ト スルーのキャ ッシュ可能であるすべてのメモ リ属性は、暗黙的に読み出し割り当てでもあ り ます。 どの属性が書き込み割り当てかを、 表 7-3に示します。

領域アクセス制御レジスタには、 共有ビッ ト (S) も含まれています。 このビッ トはノーマルメモ リにのみ適用され、 メモ リ領域が共有可能 (1) と共有不可 (0) のどちらであるかを決定します。

表 7-3 TEX[2:0]、 C、 B のエンコード

TEX[2:0] C B 説明 メモリ タイプ 共有可能か

000 0 0 ス ト ロング リオーダ ス ト ロングリオーダ

共有可能

000 0 1 共有可能デバイス デバイス 共有可能

000 1 0 外部および内部ライ ト スルー、 書き込み割り当てなし ノーマル S ビッ ト a

000 1 1 外部および内部ライ トバッ ク、 書き込み割り当てなし ノーマル S ビッ ト a

001 0 0 外部および内部キャッシュ不可 ノーマル S ビッ ト a

001 0 1 予約 - -

001 1 0

001 1 1 外部および内部ライ トバッ ク、 書き込み割り当て ノーマル S ビッ ト a

010 0 0 共有不可デバイス デバイス 共有不可

010 0 1 予約 - -

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 7-9ID013111 Non-Confidential

Page 193: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

メモリ保護ユニッ ト

7.3.1 キャッシュ可能メモリのポリシー

TEX[2] == 1 の場合、 メモ リ領域はキャ ッシュ可能メモ リで、 残りのエンコードにより内部と外部のキャ ッシュポ リシーが定義されます。

TEX[1:0] 外部キャ ッシュポ リ シーを定義します。

C、 B 内部キャ ッシュポ リ シーを定義します。

内部と外部のキャ ッシュポ リシーでは、 同じエンコードが使用されます。 エンコードを、 表 7-4 に示します。

プロセッサが AXI バスマスタ インタフェース経由でメモ リ アクセスを実行する と きは、 次の規則が適用されます。

• 内部属性は、 A*USERM 信号によって示されます。 エンコードについては、表 9-3 (ページ 9-5) を参照して下さい。

• 外部属性は、 A*CACHEM 信号によって示されます。 エンコードについては、表 9-2 (ページ 9-5) を参照して下さい。

領域属性の詳細については、 『ARM アーキテクチャ リ ファレンスマニュアル』 を参照して下さい。

010 1 X 予約 - -

011 X X 予約 - -

1BB A A キャ ッシュ可能メモ リ AAb = 内部ポ リシー

BBb = 外部ポリシー

ノーマル S ビッ ト a

a. 領域は、 S == 1 の場合に共有可能で、 S == 0 の場合に共有不可です。

b. これらのビッ トのエンコードを、 表 7-4 に示します。

表 7-3 TEX[2:0]、 C、 B のエンコード (続き)

TEX[2:0] C B 説明 メモリ タイプ 共有可能か

表 7-4 内部と外部のキャッシュポリシーのエンコード

メモリ属性のエンコード キャッシュポリシー

00 キャ ッシュ不可

01 ライ トバッ ク、 書き込み割り当て

10 ライ ト スルー、 書き込み割り当てなし

11 ライ トバッ ク、 書き込み割り当てなし

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 7-10ID013111 Non-Confidential

Page 194: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

メモリ保護ユニッ ト

7.4 MPU と メモリシステムとの相互動作

こ こでは、 MPU を稼働 / 非稼働にする方法について説明します。 MPU を稼働 / 非稼働にしたあとで、 MPU をオン / オフした影響が以後の命令フェッチすべてに反映されるこ とを保証するため、 ISB および DSB 命令を使用してパイプラインをフラ ッシュする必要があ り ます。

MPU を稼働 / 非稼働にする前に、 次の動作を行う必要があ り ます。

1. 関連する CP15 レジスタをすべてプログラムします。 これには、 現在実行中のコードを含む、 低 1 つのメモ リ領域のセッ ト アップが含まれます。 この領域の属性およびアクセス許可は、 そのコードを含むデフォルト メモ リマップ内の領域の属性およびアクセス許可と同じで、 その領域は特権モードで実行可能な必要があ り ます。

2. データキャ ッシュのク リーニングと無効化を行います。

3. キャ ッシュを非稼働にします。

4. 命令キャ ッシュを無効化します。

次に示すのは、 MPU を稼働するコードの例です。

MRC p15, 0, R1, c1, c0, 0 ; read CP15 register 1ORR R1, R1, #0x1DSBMCR p15, 0, R1, c1, c0, 0 ; enable MPUISBFetch from programmed memory mapFetch from programmed memory mapFetch from programmed memory mapFetch from programmed memory map

次に示すのは、 MPU を非稼働にするコードの例です。

MRC p15, 0, R1, c1, c0, 0 ; read CP15 register 1BIC R1, R1, #0x1DSBMCR p15, 0, R1, c1, c0, 0 ; disable MPU ISBFetch from default memory mapFetch from default memory mapFetch from default memory mapFetch from default memory map

デフォルトのメモ リマップを、 表 7-1 (ページ 7-2) に示します。

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 7-11ID013111 Non-Confidential

Page 195: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

メモリ保護ユニッ ト

7.5 MPU フォールト

MPU は 3 つのタイプのフォールト を生成できます。

• 「バッ クグラウンドフォールト 」• 「アクセス許可フォールト 」• 「アラ イ メン ト フォールト 」

フォールトが発生する と、 メモ リ アクセスまたは命令フェッチは正確にアボート し、対応するプリ フェ ッチアボート またはデータアボート例外が取得されます。 AXI バスマスタ インタフェース上でメモ リ アクセスは実行されません。 フォールト処理の詳細については、 「フォールト処理」 (ページ 8-7) を参照して下さい。

7.5.1 バックグラウンド フォールト

バッ クグラウンドフォールトは、 MPU が稼働中で、 MPU 領域の稼働中のサブ領域に含まれないアドレスに対してメモリ アクセスが行われたと きに生成されます。 バッ クグラウンド領域が稼働中で、 アクセスが特権付きの場合、 バッ クグラウンドフォールトは発生しません。 「バッ クグラウンド領域」 (ページ 7-6) を参照して下さい。

7.5.2 アクセス許可フォールト

アクセス許可フォールトは、 メモ リ アクセスが、 アクセス対象のメモ リ領域に定義されているアクセス許可の要件に合致しない場合に生成されます。 「領域のアクセス許可」 (ページ 7-4) を参照して下さい。

7.5.3 アライメン ト フォールト

アライ メン ト フォールトは、 アクセスのサイズにアラインしていないアドレスに対してデータアクセスが行われ、 かつそのアクセスについて厳格なアライ メン トが要求されている場合に生成されます。 メモ リにアクセスする命令の多く、 例えば LDM とSTC では厳格なアライ メン トが要求されます。 詳細については、 『ARM アーキテクチャ リ ファレンスマニュアル』 を参照して下さい。 システム制御レジスタの A ビット をセッ トするこ とで、 すべてのデータアクセスについて厳格なアライ メン ト を要求するこ と もできます。 「c1、 システム制御レジスタ」 (ページ 4-35) を参照して下さい。

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 7-12ID013111 Non-Confidential

Page 196: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

メモリ保護ユニッ ト

7.6 MPU のソフ トウェアアクセス可能レジスタ

MPU を制御する CP15 レジスタを、 図 4-2 (ページ 4-5) に示します。

MPU が存在しない場合、 特権モードで 「c6、 MPU メモ リ領域プログラ ミ ングレジスタ」 (ページ 4-49) の読み出し値は 0、 書き込みは無視されます。 未定義命令例外は取得されません。

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 7-13ID013111 Non-Confidential

Page 197: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

第 8 章 レベル 1 メモリシステム

本章では、 プロセッサのレベル 1 (L1) メモ リ システムについて説明します。 本章は次のセクシ ョ ンから構成されています。

• 「レベル 1 メモ リ システムについて」 (ページ 8-2)

• 「エラー検出および訂正方式について」 (ページ 8-4)

• 「フォールト処理」 (ページ 8-7)

• 「TCM について」 (ページ 8-13)

• 「キャ ッシュについて」 (ページ 8-18)

• 「内部排他モニタ」 (ページ 8-34)

• 「メモ リ タイプとレベル 1 メモ リ システムの動作」 (ページ 8-35)

• 「エラー検出イベン ト 」 (ページ 8-36)

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 8-1ID013111 Non-Confidential

Page 198: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

レベル1 メモリシステム

8.1 レベル 1 メモリシステムについて

プロセッサのレベル 1 メモ リ システムは、 実装時および統合時に構成が可能です。このシステムには、 次のものが含まれる可能性があ り ます。

• 独立した命令用とデータ用のキャ ッシュ

• 複数の密結合メモ リ (TCM) 領域

• メモ リ保護ユニッ ト (MPU)

命令側とデータ側には、 それぞれに独自のレベル 1 キャ ッシュをオプシ ョ ンと して持たせるこ とができます。 キャ ッシュアーキテクチャはハーバードで、 I キャ ッシュからは命令のみをフェッチでき、 D キャ ッシュからはデータのみをフェ ッチできます。 それぞれのキャ ッシュ と並列に、 2 つの専用の RAM 領域が存在し、 これらは命令側とデータ側のどちらから もアクセスできます。 これらは TCM の領域です。ATCM インタフェースを使用して 1 つの TCM を、 BTCM インタフェースを使用して大 2 つの TCM を実装できます。 この構造を、 図 8-1 (ページ 8-3) に示します。

それぞれの TCM およびキャ ッシュには、 メモ リに格納されているデータをエラーから保護するため、 実装時にエラー検出および訂正機構を構成できます。 また、 それぞれの TCM インタフェースは、 エラーの発生をプロセッサに通知するための、 プロセッサ外部のロジッ クをサポート しています。

MPU は、 命令およびデータの両方の側に対するアクセスを処理します。 MPU は、 保護チェッ ク、 アドレスのアクセス許可、 メモ リ属性を処理します。 これらの機能の一部は、 AXI マスタ経由でレベル 2 メモ リ システムに渡すこ とができます。 MPU の詳細については、 第 7 章 メモ リ保護ユニッ ト を参照して下さい。

レベル 1 メモ リ システムには、 排他アクセス用のモニタが含まれています。 排他ロード / ス ト ア命令、 例えば LDREX や STREX を適切なメモ リ監視と と もに使用して、プロセス間やプロセッサ間の同期およびセマフォを提供できます。 詳細については、『ARM アーキテクチャ リ ファレンスマニュアル』 を参照して下さい。 モニタは、 プロセッサ内部でいくつかの排他監視を処理できます。

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 8-2ID013111 Non-Confidential

Page 199: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

レベル1 メモリシステム

図 8-1 レベル 1 メモリシステムのブロック図

AXI

RAMRAMB0TCM

AXI

AXI

(TCM)

AXI

(DPU)

(MPU)(PFU) (LSU)

ATCMB1TCM

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 8-3ID013111 Non-Confidential

Page 200: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

レベル1 メモリシステム

8.2 エラー検出および訂正方式について

シ リ コンデバイスでは、 漂遊放射線や他の影響によ り、 RAM に格納されているデータが破損するこ とがあ り ます。 Cortex-R4 の TCM およびキャ ッシュは、 RAM に発生するエラーの検出と訂正を行う よ うに構成できます。 プロセッサによ り、 追加の冗長データが計算され、 実際のデータ と一緒に RAM に格納されます。 プロセッサがRAM からデータを読み出すと き、 冗長データが実際のデータ と整合しているかど うかのチェッ クが行われ、 エラーを通知するか、 エラー訂正を試みるこ とができます。

各種のエラー処理方式が利用可能です。 説明については、 次に示すセクシ ョ ンを参照して下さい。

• 「パ リ テ ィ」• 「64 ビッ ト ECC」 (ページ 8-5)

• 「32 ビッ ト ECC」 (ページ 8-5)

これらは、 検出および訂正が可能なエラーの数や、 冗長データを格納するために必要な追加 RAM 容量の点で特性が異なっています。 必要なロジッ クは方式によって異なるため、 ビルド時の構成で方式を選択する必要があ り ます。 ただし、 ソフ ト ウェア構成によってエラー処理方式を稼働 / 非稼働にする、 または動作を変更するこ とは可能です。 こ こでは、 それぞれの方式の一般的な特性について説明します。 それぞれの方式の、 実装者から見た利点と欠点の詳細については、 付録 B ECC 方式を参照して下さい。 キャ ッシュのエラー処理方式の動作の詳細については、 「キャ ッシュエラーの検出と訂正」 (ページ 8-20) を参照して下さい。 TCM については、 「TCM の内部エラーの検出と訂正」 (ページ 8-14) を参照して下さい。

それぞれのエラー処理方式は、 ダブルワード (64 ビッ ト ) のデータに対しての動作と して説明されています。 これは、 プロセッサのレベル 1 メモ リ システムが各サイクルに転送できるデータの量です。 キャ ッシュに関連付けられているタグおよびダーティ RAM のサイズは異な り ますが、 原則は同じです。 エラーとは、 データの単一のビッ トが正しい値とは反転しているものと見なされます。

エラー処理方式を、 図 8-2 に示します。 影付きの領域は、 エラーの存在するビッ ト を示しています。

図 8-2 エラーの検出および訂正方式

8.2.1 パリテ ィ

各バイ トについてパリティ ビッ トが計算され、 そのバイ ト と一緒に格納されます。これには、 ダブルワードごとに 8 ビッ トのパリティ (冗長データ) が必要です。 パリティ方式では、 バイ ト内の単一エラー、 またはパリティ ビッ トのエラーを検出できますが、 訂正はできません。 つま り、 ダブルバイ ト内の 8 つのエラーを、 それらのエラーがすべて異なるバイ トに存在するなら、 検出可能です。 ただし、 同じバイトに 2 つのエラーが存在する場合は検出できません。 奇数または偶数パリティを使用でき、 統合時にピン構成可能です。

1

64 ECC1

64 ECC2

32 ECC2

32 ECC1

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 8-4ID013111 Non-Confidential

Page 201: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

レベル1 メモリシステム

8.2.2 エラーのチェ ックと訂正

プロセッサは、 64 ビッ ト または 32 ビッ トのデータについてエラーチェッ クおよび訂正 (ECC) 方式をサポート しており、 ECC 方式が適用されるデータチャンクのサイズは異なり ますが、 ほぼ同じ特性があ り ます。 それぞれのデータチャンク (32 ビッ トまたは 64 ビッ ト 、 アラ インド) について、 いくつかの冗長コードビッ トが計算され、 データ と一緒に格納されます。 これによって、 プロセッサはデータチャンクまたはそのコードビッ トに含まれている、 大 2 つのエラーを検出でき、 任意の単一のエラーを訂正できます。 この方式は、 単一エラー訂正、 2 エラー検出 (SEC-DED) ECC 方式と呼ばれるこ と もあ り ます。

データチャンクおよび関連するコードビッ トに 2 つよ り多いエラーが存在する場合、そのエラーは検出されない可能性があ り ます。 このエラー処理方式では、 このよ うな状況が単一のエラーと解釈され、 訂正が試みられて、 失敗するこ とがあ り ます。

64 ビッ ト ECC

64 ビッ トのデータごとに、 8 つのコードビッ トが計算されます。 この方式では、 任意のダブルワードに発生した任意の単一エラーを訂正でき、 任意の 2 つのエラーを検出できます。

32 ビッ ト ECC

32 ビッ トのデータごとに 7 つのコードビッ トが計算され、 ダブルワードごとに 14ビッ トの冗長データが必要とな り ます。 この方式では、 ダブルワードごとに 2 つのエラーを、 それらが異なるワードに存在していれば、 訂正できます。 ダブルワードごとに 4 つのエラーを、 それらが各ワードに 2 つずつであれば検出できます。

8.2.3 読み出し - 変更 - 書き込み

プロセッサが書き込めるデータの 小単位はバイ トです。 ただし、 どちらの ECC 方式も、 それよ り大きなデータチャンクに対して計算されます。 ECC で保護されたRAM にデータを書き込むには、 そのデータのエラーコードを再計算し、 再度書き込む必要があ り ます。 データチャンク全体を書き込まない、 例えば 32 ビッ トのエラー処理方式で、 ハーフワード (16 ビッ ト ) を RAM のアドレス 0x4 に書き込む場合、 エラーコードの一部は書き込まれるデータから、 一部はすでに RAM に格納されているデータから計算する必要があ り ます。 この例では、 ハーフワードは RAM のアドレス0x6 に存在します。

このよ う な書き込みでエラーコードを計算するため、 プロセッサは 初にデータをRAM から読み出し、 書き込まれるデータ と結合してからエラーコードを計算し、データ と新しいエラーコードを RAM に書き込む必要があ り ます。 この処理を、 読み出し - 変更 - 書き込みと呼びます。

8.2.4 ハードエラー

本章で説明されているエラーはすべてソフ トエラー、 つま り RAM チャンクに格納されているデータの 1 つまたは複数のビッ トが反転している状態を想定しています。この状態では、 新しい値を RAM に書き込むこ とができ、 再度別のソフ トエラーが発生しない限り、 新たに書き込んだ値は正し く読み出されます。

メモ リ内のエラーがハードエラー、 つま り RAM 回路に物理的な障害が存在し、 ビットの正しい読み書きが不可能になっている状態の場合、 プロセッサはエラーの訂正やエラーからの回復が不可能になる可能性があ り ます。 プロセッサには、 一部のハードエラーから回復するための機能が含まれています。 プロセッサの実装時にこれらの機能が必要である場合、 機能と要件について ARM へお問い合わせ下さい。

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 8-5ID013111 Non-Confidential

Page 202: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

レベル1 メモリシステム

8.2.5 エラー訂正

RAM から読み出されたデータに訂正可能なエラーが検出された場合、 プロセッサは各種の方法で正しいデータを生成します。 これは、 次のいずれかの方式で行われます。

インライン訂正

エラーコード ビッ ト を使用して、 RAM から読み出されたデータを訂正し、 そのデータを使用します。 これは、 データを訂正する も単純な方法です。

訂正と再試行

エラーコード ビッ ト を使用してデータを訂正し、 そのデータを RAM へ書き戻します。 その後で、 プロセッサは読み出しを引き起こした命令を再実行して読み出しアクセスを繰り返し、 再度エラーが発生しなければ、 訂正されたデータを RAM から読み出します。 この方法では、 エラーが発生した場合によ り多くのクロ ッ クサイ クル ( 低 9 サイクル)が消費されますが、 RAM のデータを訂正するため、 そのデータのエラーが悪化しないという副作用があ り ます。

注 RAM エラーの発生頻度は一般に低いため、 訂正と再試行を実行するた

めに必要な追加サイ クルで、 平均パフォーマンスが大き く低下するこ とはあ り ません。

プロセッサが使用する訂正方式は、 エラーごとに異な り ます。 プロセッサは、 AXIスレーブインタフェースによって行われた TCM 読み出しで訂正可能なエラーを検出した場合、 インラインエラー訂正を使用します。 命令側またはデータ側によって行われた TCM 読み出しで訂正可能な ECC エラーを検出した場合は、 訂正と再試行の訂正方式を使用します。

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 8-6ID013111 Non-Confidential

Page 203: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

レベル1 メモリシステム

8.3 フォールト処理

フォールトは、 命令フェッチにおいて、 次の理由で発生します。

• MPU バッ クグラウンドフォールト

• MPU アクセス許可フォールト

• 外部 AXI スレーブエラー (SLVERR)

• 外部 AXI デコードエラー (DECERR)

• キャ ッシュのパリティ または ECC エラー

• TCM のパリティ または ECC エラー

• TCM 外部エラー

• TCM 外部再試行要求

• ブレークポイン トおよびベクタキャプチャ イベン ト

フォールトは、 データアクセスにおいて、 次の理由で発生します。

• MPU バッ クグラウンドフォールト

• MPU アクセス許可フォールト

• MPU アライ メン ト フォールト

• 外部 AXI スレーブエラー (SLVERR)

• 外部 AXI デコードエラー (DECERR)

• キャ ッシュのパリティ または ECC エラー

• TCM のパリティ または ECC エラー

• TCM 外部エラー

• TCM 外部再試行要求

• ウォ ッチポイン ト

フォールト処理については、 次に示すセクシ ョ ンで説明します。

• 「フォールト 」• 「フォールト ステータス情報」 (ページ 8-9)

• 「訂正可能フォールト位置レジスタ」 (ページ 8-10)

• 「使用モデル」 (ページ 8-10)

8.3.1 フォールト

次のク ラスのフォールトが発生する可能性があ り ます。

• 「MPU フォールト 」

• 「外部フォールト 」 (ページ 8-8)

• 「キャ ッシュ と TCM のパリティおよび ECC エラー」 (ページ 8-8)

• 「TCM 外部フォールト 」 (ページ 8-8)

• 「デバッグイベン ト 」 (ページ 8-9)

MPU フォールト

MPU は、 各種の理由でアボート を生成するこ とがあ り ます。 詳細については、「MPU フォールト 」 (ページ 7-12) を参照して下さい。 MPU フォールトは常に正確で、 他の種類のアボート よ り も優先されます。 MPU フォールトが発生したアクセスが、 TCM 内のものではなく、 キャ ッシュ不可であるか、 キャ ッシュ ミ スを引き起こした場合、 そのアクセスに対する AXI ト ランザクシ ョ ンは行われません。

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 8-7ID013111 Non-Confidential

Page 204: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

レベル1 メモリシステム

外部フォールト

AXI マスタインタフェースを経由して実行されたメモ リ アクセスは、 スレーブエラー (SLVERR) またはデコードエラー (DECERR) の 2 種類のエラー応答を生成する可能性があ り ます。 これらは、 プロセッサの外部に存在する AXI システムによって生成されるため、 外部エラーと呼ばれます。 命令フェッチ、 データロード、 およびス ト ロング リオーダ タイプのメモ リへのデータス ト アについては、 正確アボートが生成されます。 ノーマルタイプまたはデバイスタイプのメモ リへのス ト アについては、 不正確アボートが生成されます。

注 排他ト ランザクシ ョ ンを処理できない AXI スレーブは、 排他読み出しへの応答と して OKAY を返します。 これも外部エラーと して扱われ、 プロセッサは応答がSLVERR の場合と同じに動作します。

キャッシュと TCM のパリテ ィおよび ECC エラー

プロセッサに適切なビルドオプシ ョ ンが構成されていれば、 キャ ッシュおよび TCM RAM に発生するデータエラーを、 パリティ または ECC ロジッ クで検出できます。キャ ッシュエラーの詳細については、 「キャ ッシュのパリティエラーの処理」 (ページ 8-21) および 「キャ ッシュの ECC エラーの処理」 (ページ 8-22) を参照して下さい。 TCM エラーの詳細については、 「TCM のパリティエラーの処理」 (ページ 8-15)および 「TCM の ECC エラーの処理」 (ページ 8-15) を参照して下さい。 プロセッサのソフ ト ウェア構成によ り、 これらのエラーに対して、 無視される、 アボートが生成される、 アボート を生成せず自動的に訂正される、 訂正されアボートが生成される、 のいずれかの動作が行われます。 プロセッサがデバッグホールト状態の場合は、その状態でない場合は自動的に訂正されるエラーでもアボートが生成されます。

パリティおよび ECC エラーは読み出し時にのみ発生しますが、 これらの読み出しはス ト ア命令の副作用と して発生するこ と もあ り ます。 ロードによって生成されるアボートは、 必ず正確です。 TCM へのス ト ア命令によって生成されるアボート も必ず正確ですが、 キャ ッシュへのス ト アでは常に不正確です。 これらのエラーは、 一部のキャ ッシュ保守操作で発生するこ と もあ り、 この場合は不正確アボートが生成されます。 「キャ ッシュ保守操作でのエラー」 (ページ 8-23) を参照して下さい。

パリティおよび ECC エラーの多くは、 イベン トの生成によっても通知されます。第 6 章 イベン ト とパフォーマンスモニタを参照して下さい。 これらのイベン トの一部は、 アボートが取得されたかど うかにかかわらず、 エラーの検出時に生成されます。アボートは、 エラーのある メモリアクセスがコ ミ ッ ト されたときのにみ取得されます。その他のイベン トは、 アボートが取得されたとき、 そのときにのみ通知されます。

プロセッサによ り訂正可能なパリティ または ECC エラーはすべて、 プロセッサがそのフォールト を訂正するよ うに構成されているかど うかにかかわらず、 訂正可能なフォールト と見なされます。

TCM 外部フォールト

TCM ポートには、 TCM ト ランザクシ ョ ンでのエラーを通知するために使用可能な信号が含まれています。 TCM ポートの詳細については、 『Cortex-R4 および Cortex-R4Fインテグレーシ ョ ン マニュアル』 を参照して下さい。 可能になっていれば、 これによってプロセッサは命令およびデータアクセスに応じた適切なタイプのアボート を取得するか、 AXI スレーブ ト ランザクシ ョ ンに対して SLVERR 応答を生成します。書き込みト ランザクシ ョ ンは常に不正確アボート を生成し、 読み出し ト ランザクシ ョ ンは常に正確アボート を生成します。

読み出し ト ランザクシ ョ ンで通知されたエラーは、 再試行要求も通知する場合があり、 これはプロセッサに対して、 例外を取得する代わりに同じ動作の再試行を要求するこ とにな り ます。

TCM ポートからの再試行要求は、 回復可能なエラーと見なされます。 訂正可能なECC フォールト も、 回復可能と見なされます。

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 8-8ID013111 Non-Confidential

Page 205: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

レベル1 メモリシステム

デバッグイベン ト

プロセッサのデバッグロジッ クは、 命令フェッチ時のブレークポイン ト またはベクタキャプチャ イベン ト 、 およびデータアクセス時のウォッチポイン ト を生成するように構成できます。 プロセッサがモニタモード デバッグ用にソフ ト ウェア構成されている場合、 これらのいずれかのイベン トが発生したと き、 または BKPT 命令が実行されたと きにアボートが取得されます。 詳細については、 第 11 章 デバッグを参照して下さい。

正確アボート と不正確アボート

正確アボート と不正確アボート との相違点の詳細については、 「アボート 」 (ページ 2-22) を参照して下さい。

8.3.2 フォールトステータス情報

アボートが発生する と、 アボートの種類に応じて、 フォールトの原因についての情報がいくつかのレジスタに記録されます。

• 「アボート例外」• 「正確アボート例外」 (ページ 8-10)

• 「不正確アボート例外」 (ページ 8-10)

アボート例外

アボート例外が取得される と、 次に示すレジスタが更新されます。

リ ンクレジスタ

r14_abt レジスタは、 他の種類の例外と同様に、 例外が取得された命令のアドレスについての情報で更新されます。 詳細については、 「例外」 (ページ 2-16) を参照して下さい。 この情報を使用して、 アボートが処理された後でプログラムの実行を再開できます。

注 プリ フェッチアボートが発生したと きは、 アボートのアドレスを決定す

るためにリ ンクレジスタの値を使用しないこ とをお勧めします。 これは、 32 ビッ ト Thumb 命令はワードアラインド とは限らず、 どちらのハーフワードでもアボート を引き起こす可能性があるためです。 これは、 システムのコードが ARMv6T2 で導入された追加の 32 ビッ ト Thumb命令をいっさい使用していない場合にも適用されます。 初期の BL およびBLX 命令はいずれも 32 ビッ ト長であるためです。 その代わりに、 こ こで説明されているフォールト アドレス レジスタを使用して下さい。

保存プログラムステータス レジスタ

SPSR_abt レジスタには、 他の種類の例外と同様に、 例外が取得されたと きのプロセッサの状態とモードが記録されます。 詳細については、「例外」 (ページ 2-16) を参照して下さい。

フォールト ステータス レジスタ

フォールト ステータス レジスタは 2 つ存在し、 1 つはプリ フェッチアボート用 (IFSR)、 も う 1 つはデータアボート用 (DFSR) です。 これらのレジスタは、 発生したアボートのタイプと、 それが読み出し時と書き込み時のどちらで発生したかを記録します。 特に、 これによってアボートハンド ラは正確アボート、 不正確アボート、 デバッグイベン ト を区別できます。 このレジスタのフォーマッ トおよび使用されるエンコードの詳細については、 「フォールト ステータス レジスタ とフォールト アドレス レジスタ」 (ページ 4-45) を参照して下さい。

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 8-9ID013111 Non-Confidential

Page 206: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

レベル1 メモリシステム

正確アボート例外

正確アボート例外が取得される と、 次に示すレジスタが更新されます。

フォールト アドレス レジスタ

フォールト アドレス レジスタは 2 つ存在し、 1 つはプリ フェ ッチアボート用 (IFAR)、 も う 1 つはデータアボート用 (DFAR) です。 これらのレジスタは、 フォールト を引き起こしたメモ リ アクセスのアドレスを示しています。 「フォールト ステータス レジスタ とフォールト アドレス レジスタ」 (ページ 4-45) を参照して下さい。

補助フォールト ステータス レジスタ

補助フォールト ステータス レジスタは 2 つ存在し、 1 つはプリ フェ ッチアボート用 (AIFSR)、 も う 1 つはデータアボート用 (ADFSR) です。 これらのレジスタは、 フォールトの性質と場所について、 回復可能なエラーかど うか、 キャ ッシュ と AXI マスタインタフェースのどちらで発生したものか、 ATCM か BTCM か、 どのキャ ッシュウェイでエラーが発生したか (該当する場合) などの追加情報を記録します。 正確アボートの場合、 キャ ッシュのインデクスはフォールト アドレスから導出可能なため、 記録されません。 「フォールト ステータス レジスタ とフォールト アドレス レジスタ」 (ページ 4-45) を参照して下さい。

不正確アボート例外

不正確アボート例外が取得される と、 次に示すレジスタが更新されます。

補助データフォールト ステータスレジスタ

ADFSR は、 フォールトが回復可能であったか、 キャ ッシュ内で発生したか、 ATCM と BTCM のどちらか、 エラーの発生したキャ ッシュセットおよびウェイ (該当する場合) を示す値で更新されます。 DFAR は不正確アボートで更新されないため、 不正確アボートは、 キャ ッシュ内でエラーが発生した場合を除いて、 通常の方法で位置を特定するこ とはできません。

デバッグイベン トがこれらのレジスタに与える影響を、 「デバッグ例外」 (ページ 11-41) に示します。

8.3.3 訂正可能フォールト位置レジスタ

訂正可能フォールトによ りアボート例外が生成された場合、 フォールトの位置についての情報が、 各種のフォールト ステータス レジスタに記録されます。 ただし、フォールトがプロセッサによって自動的に訂正される場合、 構成によっては例外が生成されず、 フォールト ステータス レジスタが更新されないこ と もあ り ます。 すべての場合について、 フォールトの位置についての情報は訂正可能フォールト位置レジスタ (CFLR) に記録されます。

すべての訂正可能なフォールトは、 フォールト を生成したのが命令フェッチ、 データアクセス、 DMA (AXI スレーブ) アクセスのどれであるか、 およびフォールトがATCM、 BTCM、 キャッシュのどれで発生したかにかかわらず、 同じレジスタに記録されます。 CFLR には、 どの種類のアクセスがフォールト を生成したか、 およびどのデバイスで発生したかを識別するための情報が含まれています。 このレジスタの形式の詳細については、 「訂正可能フォールト位置レジスタ」 (ページ 4-70) を参照して下さい。 CFLR が更新されるたびに、 すでに CFLR に記録されている情報は破棄されるため、 CFLR には も新しい訂正可能フォールトについての情報のみが含まれています。

8.3.4 使用モデル

こ こでは、 システムでエラーを処理する、 いくつかの方法について説明します。 エラーを処理するため、 プロセッサを実際にどのよ うにプログラムするかは、 プロセッサとシステムの構成、 および目的によって異なり ます。

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 8-10ID013111 Non-Confidential

Page 207: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

レベル1 メモリシステム

アボート例外が取得される と、 アボートハンド ラはリ ンクレジスタ、 SPSR、 およびフォールト ステータス レジスタの情報を読み出し、 アボートのタイプを判別します。一部のタイプのアボートはシステムに致命的なのに対して、 他のタイプは修正でき、プログラムの実行を再開できます。 例えば、 MPU バッ クグラウンドフォールトはスタ ッ クオーバフローを示している可能性があ り、 スタ ッ クの割り当てを増やしてから、 それを反映するよ う MPU の再プログラムを行う こ とで修正できます。 または、不正確外部アボートはソフ ト ウェアエラーで、 マップされていないメモ リ アドレスに対してス ト ア命令が発生したこ とを示している可能性があ り ます。 このよ う なアボートは、 エラーが発生したアドレスや、 エラーを引き起こした命令についての情報が記録されないため、 システムやプロセスに対して致命的です。

エラーの位置が記録されない、 またはエラーが回復不能なため、 一般的に致命的なものとなるアボートのタイプを、 表 8-1 に示します。 致命的でないとマーク されている一部のアボートは、 システムによっては、 エラーの原因が特定された時点で致命的なものと判明するこ とがあ り ます。 例えば、 MPU バッ クグラウンドフォールトはスタ ッ クオーバフローを示している場合があ り、 その場合には修正できますが、 ソフ ト ウェアのバグによ り存在しないメモ リ位置がアクセスされた可能性もあ り、 この場合には致命的です。 これらの事例は、 エラーの発生した位置を特定するこ とで識別可能です。 エラーが回復不能な場合、 つま り修正可能なパリティや ECC エラーでなく、 TCM 外部再試行要求でもない場合、 エラーの位置が記録されているかど うかにかかわらず、 通常は致命的です。 外部 TCM、 パリ ティ、 または ECC エラーでアボートが取得された場合、 そのエラーが回復可能かど うかが、 適切な補助フォールト ステータス レジスタに記録されます。 「フォールト ステータス レジスタ とフォールト アドレス レジスタ」 (ページ 4-45) を参照して下さい。

訂正可能なエラー

プロセッサがアボート例外を取得せず、 ECC エラーを自動的に訂正するよ う構成されているシステムでも、 そのよ うなエラーに応答するよ うプロセッサを構成することは可能です。 訂正可能なエラーを示すイベン ト出力を、 割り込みコン ト ローラへ接続します。 このよ うなイベン トが発生する と、 プロセッサへの割り込み入力が設定され、 プロセッサは割り込み例外を取得します。 割り込みハンド ラは、 割り込みのソースが訂正可能なエラーと識別してから、 CFLR を読み出して、 発生した ECCエラーの位置を特定できます。 この情報を調べるこ とで、 このよ う なエラーの傾向

表 8-1 アボートのタイプ

タイプ 条件 ソース 正確アボートか 致命的か

MPU フォールト MPU によ りアクセスが許可されないa MPU はい いいえ

正確外部 レベル 2 メモ リ インタフェースを使用するロード AXI はい いいえ

不正確外部 レベル 2 メモ リ インタフェースを使用する ノーマ

ルまたはデバイス メモ リへのス ト ア

AXI いいえ はい

正確パリティ / ECC キャ ッシュ

キャ ッシュからのロード b キャ ッシュ はい 可能性c

正確パリティ / ECC TCM TCM とのロード / ス ト アd TCM はい 可能性 c

正確 TCM 外部エラー TCM とのロード / ス ト アe TCM はい はい

不正確パリティ / ECCキャ ッシュ

キャ ッシュへのス ト ア、 またはキャ ッシュ保守操作 b

キャ ッシュ いいえ 可能性 c

不正確 TCM 外部エラー TCM へのス ト ア e TCM いいえ はい

a. MPU フォールト タイプの詳細については、 「MPU フォールト 」 (ページ 7-12) を参照して下さい。

b. キャッシュのパリティ / ECC エラーの詳細については、 「キャッシュエラーの検出と訂正」 (ページ 8-20) を参照して下さい。

c. これらのタイプのエラーは、 訂正可能な場合も、 不可能な場合もあ り ます。 訂正不能なエラーは一般に致命的です。 訂正可能なエラーはハード ウェアによって自動的に訂正され、 ハンド ラが呼び出されないこ と もあ り ます。 「キャ ッシュエラーの検出と訂正」 (ページ 8-20) および 「TCM の内部エラーの検出と訂正」 (ページ 8-14) を参照して下さい。

d. TCM のパリティ / ECC エラーの詳細については、 「TCM の内部エラーの検出と訂正」 (ページ 8-14) を参照して下さい。

e. 外部 TCM エラーによ り生成されるアボートは常に回復不能で、 したがって致命的です。 TCM からの外部エラーの詳細につ

いては、 「外部 TCM エラー」 (ページ 8-16) を参照して下さい。

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 8-11ID013111 Non-Confidential

Page 208: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

レベル1 メモリシステム

を識別できます。 必要に応じて割り込みをマスクするこ とで、 ソフ ト ウェアが重要なコードを実行している と き、 エラーはプロセッサによって自動的に訂正される一方で、 エラーに関する情報の検査は、 重要なコードが完了するまで遅らせるこ とができます。

プロセッサがデバッグホールト状態のと き、 訂正可能なエラーは適切に訂正されますが、 正しいデータをフェ ッチするためにメモ リ アクセスが繰り返されないため、エラーを生成した命令は正し く完了しません。 その代わりに、 DSCR のスティ ッキー正確アボート フラグがセッ ト されます。 「CP14 c1、 デバッグステータスおよび制御レジスタ」 (ページ 11-14) を参照して下さい。

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 8-12ID013111 Non-Confidential

Page 209: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

レベル1 メモリシステム

8.4 TCM について

プロセッサには、 ローカルメモ リの接続をサポートする 2 つの TCM インタフェースが存在します。 ATCM インタフェースには、 TCM ポートが 1 つ存在します。 BTCMインタフェースは、 1 つまたは 2 つの TCM ポート をサポートできます。 それぞれのTCM ポートはプロセッサ上の物理的な接続で、 小の中間ロジッ クで SRAM を接続するために適しています。 これらのポートは、 レイテンシの短いメモ リ用に 適化されています。

TCM ポートは、 RAM、 または RAM と同様のノーマルタイプのメモリに接続するように設計されています。 プロセッサは、 これらのインタフェースに対して投機的な読み出しアクセスを発行でき、 書き込みアクセスを発行したス ト ア命令の一部に割り込むこ とができます。 このため、 TCM インタフェースを経由した読み出しおよび書き込みアクセスは、 いずれも繰り返されるこ とがあ り ます。 この理由から、 TCP ポートは一般に、 FIFO など読み出しまたは書き込みの回数の影響を受けるデバイスには適していません。 ROM は通常、 ECC が使用されない場合のみ TCM ポートに接続できます。 「ハードエラー」 (ページ 8-5) を参照して下さい。 アクセスが投機的である場合、 プロセッサは TCM ポート上で通知されたエラーや再試行をすべて無視します。

TCM ポートには、 低速なメモ リのサポートや、 外部エラーの検出および訂正に使用するための、 ウェイ トおよびエラー信号も存在します。 詳細については、 「外部 TCMエラー」 (ページ 8-16) を参照して下さい。

PFU は、 TCM インタフェースを使用してデータを読み出すこ とができます。 LSU および AXI スレーブは、 いずれも TCM インタフェースを使用してデータの読み書きを実行できます。

それぞれの TCM インタフェースには専用のベースアドレスが存在し、 このベースアドレスは物理アドレスマップのどこにでも配置できますが、 外部に実装されているメモ リ と重ならないよ うにする必要があ り ます。 ATCM および BTCM インタフェースは互いに別のベースアドレスを持ち、 オーバラ ップしていない必要があ り ます。

こ こでは、 次の ト ピッ クについて説明します。• 「TCM の属性とアクセス許可」

• 「ATCM および BTCM の構成」 (ページ 8-14)• 「TCM の内部エラーの検出と訂正」 (ページ 8-14)• 「TCM アービ ト レーシ ョ ン」 (ページ 8-16)• 「TCM の初期化」 (ページ 8-16)• 「TCM ポートのプロ ト コル」 (ページ 8-16)• 「外部 TCM エラー」 (ページ 8-16)• 「TCM の AXI スレーブインタフェース」 (ページ 8-17)

8.4.1 TCM の属性とアクセス許可

LSU および PFU から、 TCM へのアクセスでは、 MPU に対してアクセス許可チェックが行われます。 メモ リのアクセス属性とアクセス許可は、 このインタフェースにエクスポート されません。 MPU フォールト を生成する読み出しは TCM インタフェースにブロードキャス ト されますが、 データが使用される前にアボートが取得され、 保護が維持されているこ とを保証します。

TCM は、 その TCM に保持されているアドレスを含むメモ リ領域について MPU に定義されている メモ リ タイプ属性にかかわらず、 常にキャ ッシュ不可、 非共有のノーマルメモ リ と して動作します。 TCM アクセスのアクセス許可は、 同じアドレスにMPU が割り当てているアクセス許可属性と同一です。 メモ リ属性、 タイプ、 アクセス許可の詳細については、 第 7 章 メモ リ保護ユニッ ト を参照して下さい。

注 MPU 領域内で、 デバイスまたはス ト ロング リオーダのメモ リ タイプ属性を持つアドレスには、 暗黙的に実行不可 (XN) アクセス許可が付与されます。 このよ う なアドレスが TCM 領域にも含まれている場合、 そのアドレスへの TCM アクセスにも XN ア

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 8-13ID013111 Non-Confidential

Page 210: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

レベル1 メモリシステム

クセス許可が適用されます。 デバイスまたはス ト ロング リオーダの他の動作は、TCM 領域のアドレスには適用されません。

8.4.2 ATCM および BTCM の構成

TCM インタフェースは、 実装および統合の時点で構成されます。

構成から ATCM インタフェースを取り除き、 プロセッサの設計に含めないこ と もできます。 実装する場合、 ATCM のポートは 1 つだけです。

BTCM インタフェースは、 次のいずれかの構成が可能です。

• 取り除き、 プロセッサの設計に含めない

• 単一の BTCM ポート を持つ

• 2 つのバンク BTCM ポート を持ち、 次のいずれかによってインターリーブする

— アドレスのビッ ト [3]— BTCM インタフェースのアドレスの 上位ビッ ト。 これは、 BTCM のサ

イズによって異な り ます。

実装時に、 ATCM、 BTCM、 または両方でエラー防護方式を使用して、 TCM に格納されているデータを保護するよ う構成できます。 「TCM の内部エラーの検出と訂正」を参照して下さい。

それぞれの TCM インタフェースのサイズは、 統合時に構成されます。 詳細については、 『Cortex-R4 および Cortex-R4F インテグレーシ ョ ン マニュアル』 を参照して下さい。 使用できる TCM サイズは、 次のいずれかです。

• 0 KB• 4 KB• 8 KB• 16 KB• 32 KB• 64 KB• 128 KB• 256 KB• 512 KB• 1 MB• 2 MB• 4 MB• 8 MB

BTCM インタフェースに 2 つのポートが存在する場合、 各ポートに接続されているRAM のサイズは、 BTCM インタフェースの合計サイズの半分です。

TCM インタフェースのサイズは、 TCM 領域レジスタでソフ ト ウェアによ り参照できます。 「c9、 BTCM 領域レジスタ」 (ページ 4-57) および 「c9、 ATCM 領域レジスタ」 (ページ 4-58) を参照して下さい。 TCM インタフェースのすべてのビルド構成オプシ ョ ンは、 ビルドオプシ ョ ン レジスタから読み出すこ とができます。 「c15、 ビルドオプシ ョ ン 1 レジスタ」 (ページ 4-72) および 「c15、 ビルドオプシ ョ ン 2 レジスタ」 (ページ 4-73) を参照して下さい。

8.4.3 TCM の内部エラーの検出と訂正

それぞれの TCM インタフェースには、 パリテ ィ、 32 ビッ ト ECC、 64 ビッ ト ECC のいずれかのエラー処理方式を構成できます。 BTCM ポートが 2 つ存在する場合、 両方のエラー処理方式が同じであるこ とが必要です。 次に示すセクシ ョ ンでは、 これらのエラー処理方式について説明します。• 「TCM のパリティエラーの処理」 (ページ 8-15)• 「TCM の ECC エラーの処理」 (ページ 8-15)

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 8-14ID013111 Non-Confidential

Page 211: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

レベル1 メモリシステム

TCM のパリテ ィエラーの処理

TCM インタフェースにパリティエラー チェッ クが組み込まれていれば、 補助制御レジスタの適切なビッ ト をセッ トするこ とで稼働できます。 「c1、 補助制御レジスタ」 (ページ 4-38) を参照して下さい。 BTCM インタフェースに 2 つのポートが組み込まれている場合、 それぞれのポートについて個別にパリティチェッ クを稼働できます。 プロセッサでイネーブルビッ トのピンを構成し、 必要に応じて PARECCENRAM 入力を固定するこ とで、 リセッ ト時にパリティチェッ クを稼働状態にするこ と もできます。

データのパリ ティ ビッ トは、 読み出し時にパリティ ビッ トのチェッ クが行われるかど うかにかかわらず、 すべての TCM 書き込みについて生成されます。 TCM 読み出しでパリティエラーが検出される と、 正確アボートが生成されます。 アボートのタイプは、 該当するフォールト ステータス レジスタ (FSR) に、 正確パリティエラーとして示されます。 プロセッサは、 TCM のパリティエラーを修正できません。

パリティエラー検出方式を使用する と きは、 プロセッサへの PARLVRAM 入力によって奇数パリティか偶数パリティかが選択されます。

TCM の ECC エラーの処理

TCM インタフェースに 32 ビッ ト または 64 ビッ トの ECC エラー チェッ クが組み込まれていれば、 補助制御レジスタの適切なビッ ト をセッ トするこ とで稼働できます。「c1、 補助制御レジスタ」 (ページ 4-38) を参照して下さい。 BTCM インタフェースでは、 両方のポートについて同時に ECC チェッ クを稼働するか、 両方で非稼働にするかのみを選択できます。 プロセッサでイネーブルビッ トのピンを構成し、 必要に応じて PARECCENRAM 入力を固定するこ とで、 リセッ ト時に ECC チェッ クを稼働状態にするこ と もできます。

TCM 読み出し時に致命的なエラー、 つま り 2 ビッ トの ECC エラーが検出される と、エラーが生成されます。 命令およびデータ読み出しは適切なタイプの正確アボート を生成し、 AXI スレーブインタフェースは AXI システムに SLVERR 応答を返します。

AXI スレーブインタフェースによって行われた TCM 読み出しで訂正可能なエラー、つま り 1 ビッ トの ECC エラーが検出された場合、 プロセッサはシステムに復帰する前に、 データをインラインで訂正します。

命令側またはデータ側によって行われた TCM 読み出しで、 訂正可能な ECC エラーが検出された場合、 通常はプロセッサが正しいデータを生成し、 TCM へ書き戻します。 同時に、 プロセッサは正しい命令またはデータをフェッチするため読み出しを再試行します。 2 次補助制御レジスタの適切なビッ ト をセッ トする と、 この動作を不可能にできます。 「c15、 2 次補助制御レジスタ」 (ページ 4-41) を参照して下さい。プロセッサは、 TCM のエラーを訂正する代わりに、 適切なタイプの正確アボート を生成します。

すべての ECC コード生成と ECC チェッ クは、 完全なデータチャンクに対して実行する必要があ り ます。 これは、 構成によ り 32 ビッ ト または 64 ビッ トです。 データチャンクよ り も小さいサイズの読み出しアクセスが要求された場合、 チャンク全体が読み出されます。 データチャンクよ り も小さいサイズの書き込みが要求された場合、 プロセッサは正しいデータ と ECC コードを生成するため、 読み出し - 変更 - 書き込みを実行する必要があ り ます。 ただし、 これは ECC エラーチェッ クが稼働している と きのみ行われます。 読み出し - 変更 - 書き込みシーケンスの一部と して読み出されたデータについて ECC エラーのチェッ クが行われ、 エラーは他の TCM 読み出しの場合と同様に処理されます。 ECC コードは、 エラーチェッ クが稼働しているかど うかにかかわらず、 すべての書き込みについて生成され、 TCM へ書き込まれますが、 このコードが正しいのは、 書き込みが完全なデータチャンクについて行われた場合と、 プロセッサが読み出し - 変更 - 書き込みを実行し、 完全なデータチャンクを生成した場合のみです。 ECC ロジッ クによって生成されるすべてのデータおよび命令アボートは、 該当する FSR に、 正確パリティエラーと して示されます。

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 8-15ID013111 Non-Confidential

Page 212: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

レベル1 メモリシステム

8.4.4 TCM アービ ト レーシ ョ ン

それぞれの TCM ポートは、 LSU、 PFU、 および AXI スレーブから要求を受け取り ます。 ほとんどの場合は、 LSU の優先度が も高く、 次が PFU で、 AXI スレーブの優先度が も低くな り ます。

優先度の高いデバイスが TCM ポートにアクセスする と き、 優先度の低いデバイスからのアクセスはス トールする必要があ り ます。

LSU または AXI スレーブインタフェースが TCM ポートで読み出し - 変更 - 書き込み操作を実行する と き、 AXI スレーブインタフェースまたは LSU のいずれかについて各種の内部データハザードが存在します。 このよ う な場合、 通常のアービ ト レーシ ョ ンに必要なものに加えて、 追加のス トールサイ クルが生成されます。 プロセッサに ECC を構成している と き、 高のパフォーマンスを達成するには、 AXI スレーブインタフェースから TCM へのすべての書き込みバース トが完全なデータチャンクである、 つま りエラー処理方式に応じて 32 ビッ ト または 64 ビッ トで、 自然アラインしているこ とを保証して下さい。

8.4.5 TCM の初期化

ATCM または BTCM からプロセッサをブート可能にするこ とができます。 INITRAMAおよび INITRAMB ピンが HIGH に固定されている と、 それぞれ ATCM および BTCMがリセッ ト終了時に稼働状態になり ます。 LOCZRAMA ピンは、 TCM の 1 つについて、 ベースアドレスを強制的に 0x0 にします。 LOCZRAMA が HIGH に固定されている場合、 ATCM の初期ベースアドレスが 0x0 です。 それ以外の場合、 BTCM の初期ベースアドレスが 0x0 です。 いずれの場合も、 他の TCM の初期ベースアドレスは実装定義です。 「構成可能なオプシ ョ ン」 (ページ 1-13) を参照して下さい。

ATCM 領域レジスタおよび BTCM 領域レジスタは、 それぞれ ATCM および BTCMのベースアドレスを決定します。 TCM 領域レジスタを読み出す方法の詳細については、 「c9、 BTCM 領域レジスタ」 (ページ 4-57) または 「c9、 ATCM 領域レジスタ」 (ページ 4-58) を参照して下さい。 データを TCM にプリ ロードする方法の詳細については、 「TCM」 (ページ 3-3) を参照して下さい。

8.4.6 TCM ポートのプロ ト コル

それぞれの TCM ポートは独立に動作し、 接続されている メモ リ との間でデータの読み書きを行います。 アクセス対象のメモ リ位置についての情報は、 書き込まれるデータ、 および該当する場合はデータに関連するエラーコードやパリ ティ ビッ ト とと もに、 TCM ポート上で渡されます。 さ らに、 TCM ポートは、 そのアクセスがPFU からの命令フェッチ、 LSU からのデータアクセス、 AXI スレーブインタフェースからの DMA 転送のどれによって発生したものであるかの情報も提供します。 それぞれの TCM ポートにはパリ ティ ビッ ト も関連付けられており、 これらはポートのアドレスおよび制御信号から計算されます。

読み出されたデータ と、 関連するエラーコードまたはパリティ ビッ トは、 TCM ポートから読み戻されます。 さ らに、 TCM メモ リ コン ト ローラは、 プロセッサが応答を読み出す前に 1 サイ クル、 またはそれ以上待つ必要があるこ とや、 エラーが発生し、アボートや再試行が必要なこ とを通知できます。 TCM エラーの詳細については、「外部 TCM エラー」 を参照して下さい。

TCM ポートのプロ ト コル、 信号、 タイ ミ ングの詳細については、 『Cortex-R4 およびCortex-R4F インテグレーシ ョ ン マニュアル』 を参照して下さい。

8.4.7 外部 TCM エラー

それぞれの TCM ポートには、 TCM RAM と、 プロセッサの外部の RAM コン ト ローラロジッ クに実装されているエラーチェッ ク方式との統合を行うために、 統合者が利用できる多くの機能が含まれています。

外部のエラーチェッ ク機構がエラーを検出した場合、 それぞれの TCM ポートにエラーを通知でき、 プロセッサで可能になっていれば、 適切な命令、 データアボート、または AXI エラー応答がプロセッサによ り生成されます。 命令側またはデータ側か

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 8-16ID013111 Non-Confidential

Page 213: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

レベル1 メモリシステム

らの TCM 読み出し時には、 アボート を生成する代わりに、 読み出しの再試行が必要なこ とを TCM コン ト ローラが通知できます。

補助制御レジスタの適切なビッ ト をセッ トするこ とで、 各 TCM ポートについて個別に、 外部エラーを可能にできます。 「c1、 補助制御レジスタ」 (ページ 4-38) を参照して下さい。 TCM ポートについて外部エラーが不可能な場合、 プロセッサはそのポートで通知されたすべてのエラーを無視します。 プロセッサでイネーブルビッ トのピンを構成し、 必要に応じて ERRENRAM 入力を固定するこ とで、 リセッ ト時に外部エラーチェッ クを稼働状態にするこ と もできます。

さ らに、 外部エラー検出方式では、 データを特定のサイズのチャンクで読み書きするこ とが必要な場合もあ り ます。 特定の TCM インタフェースでロード / ス ト ア 64機能が可能になっている場合、 TCM ポートへのすべてのロードおよびス ト アは 64ビッ トのデータに対して行われます。 この機能では、 64 ビッ ト よ り も小さいス ト アに対しては、 プロセッサによ り読み出し - 変更 - 書き込みシーケンスが生成されるため、 読み出し - 変更 - 書き込み (RMW) と も呼ばれます。 2 次補助制御レジスタの適切なビッ ト をセッ トするこ とで、 各 TCM ポートについて個別に、 RMW 動作を可能にできます。 「c1、 補助制御レジスタ」 (ページ 4-38) を参照して下さい。 プロセッサでイネーブルビッ トのピンを構成し、 必要に応じて RMWENRAM 入力を固定するこ とで、 リセッ ト時に RMW 動作を可能にするこ と もできます。

注 ロード / ス ト ア 64 機能は、 32 ビッ ト ECC を使用するよ うに構成されている TCM インタフェースでは使用できません。

各 TCM ポートのエラー入力は、 他のタイプのエラー、 例えばアクセス対象のアドレスが、 TCM ポートに接続されている RAM の範囲外であるこ とを通知するためにも使用できます。 データ側からの書き込みに対して通知されるエラーは、 不正確アボート を生成します。 外部エラーによって生成される他のすべてのアボートは正確です。 アボートのタイプは、 対応する FSR に、 正確または不正確パリティエラーとして示されます。

8.4.8 TCM の AXI スレーブインタフェース

プロセッサには 64 ビッ トの AXI スレーブインタフェースが含まれており、 AXI バスから TCM インタフェースへのアクセスを提供します。 このインタフェースはデフォルトで含まれていますが、 プロセッサの構成時に除外するこ と もできます。

スレーブポート を使用して、 TCM メモ リにアクセスできます。 これによって、 メモリの一貫したビューを持つシステムを構築できます。 これは、 プロセッサとシステムバスから見て、 TCM が同じアドレスに存在するこ とを意味します。

AXI スレーブポートのアクセスは、 LSU または PFU のアクセスよ り も優先度が低くな り ます。

MPU は、 AXI スレーブからのアクセスをチェッ ク しません。 AXI スレーブポートから TCM インタフェースに対して、 特権または非特権アクセスを可能にするよ うにプロセッサを構成できます。

AXI スレーブインタフェースは、 ロ ッ クおよび排他アクセスをサポート しません。つま り、 プロセッサ以外の AXI マスタは、 TCM で安全にセマフォを使用できません。 Cortex-R4 プロセッサは TCM 内のセマフォをプロセス間同期に使用できますが、AXI スレーブインタフェースを使用して TCM のセマフォに書き込むこ とはできません。 プロセッサには、 そのよ うな書き込みに対して自身の排他性を保持するためのロジッ クが存在しません。

AXI スレーブインタフェースの詳細については、 「AXI スレーブインタフェース」 (ページ 9-20) を参照して下さい。

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 8-17ID013111 Non-Confidential

Page 214: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

レベル1 メモリシステム

8.5 キャッシュについて

レベル 1 メモ リシステムは、 各種のサイズの命令およびデータキャッシュを含めるように構成できます。 キャ ッシュコン ト ローラを含めるかど うかを構成でき、 含める場合には各キャッシュのサイズを個別に構成できます。 キャ ッシュされる命令やデータは、 レベル 2 メモ リ インタフェースを使用して外部メモリからフェッチされます。キャ ッシュコン ト ローラは、 実装時に Cortex-R4 マクロセルに統合される RAM を使用します。

TCM が対象ではないすべてのアクセスは、 適切なキャ ッシュコン ト ローラによって処理されます。 アクセスがキャ ッシュ可能メモ リに対して行われ、 キャ ッシュが稼働している場合、 キャ ッシュのルッ クアップが行われ、 アクセス対象のデータがキャ ッシュに見つかった (キャ ッシュ ヒ ッ ト ) 場合は、 データがキャ ッシュからフェ ッチされるか、 キャ ッシュに書き込まれます。 キャ ッシュが非稼働の場合、 およびキャ ッシュ不可のメモ リに対してアクセスが行われた場合は、 レベル 2 メモ リインタフェースに対してアクセスが実行されます。

どちらのキャ ッシュも、 読み出しが原因でキャ ッシュ ミ スが発生した場合、 キャ ッシュラインにメモ リ位置を割り当てます。 つま り、 すべてのキャ ッシュ可能な場所は読み出し割り当て (RA) です。 これに加えて、 データキャ ッシュは、 そのメモ リ位置が書き込み割り当て (WA) にマーク されている場合、 書き込みアクセスでも割り当て可能です。 キャ ッシュラインが割り当てられる と きは、 キャ ッシュへの書き込みが行われる前に、 レベル 2 メモ リ インタフェースによって該当する メモ リがラインフ ィルバッファにフェッチされます。 「ラ インフ ィルバッファ と AXI マスタインタフェース」 (ページ 9-4) を参照して下さい。 ラ インフ ィルバッファは常に、 要求されたデータを 初に、 キャ ッシュラインの他の部分をその後でフェッチします。 これによって、 読み出されたデータを、 ラ インフ ィルの完了を待つこ となしにパイプラインで使用できます。 この処理を重要ワード優先、 非ブロ ッキング動作と呼びます。 ラ インフ ィル時にレベル 2 メモ リ インタフェースに対してエラーが報告された場合、 そのラインフ ィルではキャ ッシュ RAM が更新されません。 アボートは、 重要ワードについてエラーが報告された場合のみ生成されます。

セッ トに含まれているすべてのキャ ッシュラインが有効な場合、 キャ ッシュコン トローラはキャ ッシュに別のアドレスを割り当てるため、 キャ ッシュから ラインの 1つを退出させる必要があ り ます。

キャッシュにヒ ッ ト した書き込みアクセスは、 キャッシュ RAM に書き込まれます。そのメモリ位置がライ ト スルー (WT) にマークされている場合、 書き込みはレベル 2メモリ インタフェースでも実行され、 RAM に格納されているデータ と外部メモリシステムのデータ との整合性が維持されます。 メモリがライ トバッ ク (WB) の場合、キャッシュラインはダーティ と してマークされ、 そのラインが退出するときのみレベル 2 メモリ インタフェースへの書き込みが実行されます。 ダーティ キャッシュラインが退出するとき、 データはレベル 2 メモリ インタフェースの退出バッファに渡され、外部メモリシステムへ書き込まれます。 詳細については、 「退出バッファ」 (ページ 9-5) を参照して下さい。

キャ ッシュコン ト ローラは、 「キャ ッシュ保守操作」 (ページ 8-19) に説明されているキャ ッシュ保守動作も管理します。

それぞれのキャ ッシュには、 パリティ または ECC エラーチェッ ク方式を構成すること もできます。 エラーチェッ ク方式が実装され、 稼働している場合、 各ラインにはタグが関連付けられ、 キャ ッシュでルッ クアップが実行されるたびに、 キャ ッシュから読み出されたデータのチェッ クが行われます。 詳細については、 「キャ ッシュエラーの検出と訂正」 (ページ 8-20) を参照して下さい。

メモ リの属性と動作の一般的な規則の詳細については、 『ARM アーキテクチャ リファレンスマニュアル』 を参照して下さい。

8.5.1 ストアバッファ

キャッシュコン ト ローラには、 キャッシュ RAM に書き込まれる、 または AXI マスタインフェースに渡される前のデータを保持する、 ス トアバッファが含まれています。 このス トアバッファには 4 つのエン ト リが存在します。 各エン ト リは、 大 64 ビッ トの

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 8-18ID013111 Non-Confidential

Page 215: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

レベル1 メモリシステム

データと、 32 ビッ トのアドレスを保持できます。 データ側からの書き込み要求のうち、TCM インタフェースが対象でないものはすべて、 ス トアバッファに格納されます。

ストアバッファの結合

ス ト アバッファには結合の機能があ り ます。 以前の書き込みアクセスによ りエン トリが更新されている場合、 同じラインに対する他の書き込みアクセスはそのエン トリに結合可能です。 結合が可能なのは、 ノーマルメモ リへのス ト アのみです。

互いにリ ンク可能な複数のエン ト リについては、 各エン ト リのデータが同じキャ ッシュラインに属するものであれば、 結合が可能です。

ス ト ロング リオーダまたはデバイス メモ リへの書き込みについては、 結合は行われません。 プロセッサは、 ス ト ロング リオーダのアクセス、 またはデバイス読み出しを実行する前に、 ス ト アバッファを自動的にドレインします。

ストアバッファの動作

ス ト アバッファは、 次に示すブロ ッ クに書き込み要求を リダイレク ト します。

• キャ ッシュ可能な書き込みがヒ ッ ト した場合は、 キャ ッシュコン ト ローラ

ス ト アバッファは、 指定されたラインにキャ ッシュがヒ ッ トするかど うかをチェッ クするためキャ ッシュのルッ クアップを送信し、 ヒ ッ ト した場合は、 エン ト リがドレインされる と きにデータをキャ ッシュに結合します。

• AXI マスタインタフェース

— キャ ッシュ不可のス ト ア、 またはライ ト スルーキャ ッシュ可能のス ト アの場合、 書き込みアクセスは AXI マスタインタフェースで実行されます。

— ライ トバッ クかつ書き込み割り当てのス トアでデータキャッシュ ミ スが発生した場合、 2 つのラインフ ィルバッファのいずれかを使用してラインフ ィルが開始されます。 ラインフ ィルデータがレベル 2 メモリシステムから返される と、 ス ト アバッファのデータはラインフ ィルバッファに結合されます。

ストアバッファのドレイン

ス ト アバッファのエン ト リは、 次の場合にドレインされます。• エン ト リのすべてのバイ トが書き込まれた。 これは、 結合の結果と して発生す

るこ とがあ り ます。• エン ト リがラインフ ィルバッファに結合可能である。• エン ト リに、 デバイスまたはス ト ロング リオーダ メモ リへのス ト アが含まれて

いる。

ス ト アバッファは、 次の場合に完全にドレインされます。• 明示的なド メ イン要求は、 次の場合に行われます。

— システム制御コプロセッサのキャ ッシュ保守操作— DMB または DSB 命令

— ス ト ロング リオーダ メモ リへのロード / ス ト ア

— 共有メモ リへの排他ロード / ス ト ア

— キャ ッシュ不可メモ リへの SWP または SWPB

• ス ト アバッファがいっぱいである、 またはいっぱいになる と予測される。

デバイス メモ リからのロードが実行される前には、 ス ト アバッファでデバイス メモリへのすべてのス ト アがドレインされます。

8.5.2 キャッシュ保守操作

すべてのキャ ッシュ保守操作は、 システム制御コプロセッサ (CP15) 経由で行われます。 システム制御コプロセッサでサポート されているデータキャ ッシュ操作は次のとおりです。

• 全体の無効化

• アドレス (MVA) による無効化

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 8-19ID013111 Non-Confidential

Page 216: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

レベル1 メモリシステム

• セッ ト / ウェイの組み合わせによる無効化

• アドレス (MVA) による ク リーニング

• セッ ト / ウェイの組み合わせによるク リーニング

• アドレス (MVA) による ク リーニングと無効化

• セッ ト / ウェイの組み合わせによるク リーニングと無効化

• データ メモ リ バリ ア (DMB) およびデータ同期バリ ア (DSB) 操作

システム制御コプロセッサでサポート されている命令キャ ッシュ操作は次のとおりです。

• 全体の無効化

• アドレスによる無効化

キャ ッシュ操作の詳細については、 「キャ ッシュ操作」 (ページ 4-54) を参照して下さい。

8.5.3 キャッシュエラーの検出と訂正

こ こでは、 プロセッサでキャ ッシュ メモ リのエラーの検出、 処理、 報告、 訂正を行う方法について説明します。 メモ リエラーは、 フォールト ステータス レジスタ(FSR) の値によって、 他の理由のアボート と区別できます。

こ こでは、 次の ト ピッ クについて説明します。

• 「エラーのビルドオプシ ョ ン」• 「アド レスデコーダのフォールト 」 (ページ 8-21)

• 「キャ ッシュのパリティエラーの処理」 (ページ 8-21)

• 「キャ ッシュの ECC エラーの処理」 (ページ 8-22)

• 「命令キャ ッシュ読み出しでのエラー」 (ページ 8-23)

• 「データキャ ッシュ読み出しでのエラー」 (ページ 8-23)

• 「データキャ ッシュ書き込みでのエラー」 (ページ 8-23)

• 「退出時のエラー」 (ページ 8-23)

• 「キャ ッシュ保守操作でのエラー」 (ページ 8-23)

エラーのビルドオプシ ョ ン

キャ ッシュは、 実装で使用されたビルドオプシ ョ ンに応じて、 エラーの検出と訂正を行えます。 命令キャ ッシュのビルドオプシ ョ ンは、 データキャ ッシュのものとは異なる場合があ り ます。

ビルドオプシ ョ ンでパリティが可能になっている場合、 キャ ッシュはパリティ ビットによって保護されます。 命令キャ ッシュ とデータキャ ッシュの両方について、データ RAM には 1 バイ ト ごとに 1 ビッ トのパリティが含まれます。 タグ RAM には、 タグおよび有効ビッ ト をカバーする 1 ビッ トのパリティが含まれます。

ECC ビルドオプシ ョ ンが可能になっている場合、 次の規則が適用されます。

• 命令キャ ッシュは 64 ビッ ト ECC 方式によ り保護されます。 データ RAM には、64 ビッ トのデータごとに、 8 ビッ トの ECC コードが含まれます。 タグ RAM には、 タグおよび有効ビッ ト をカバーする 7 ビッ トの ECC コードが含まれます。

• データキャ ッシュは 32 ビッ ト ECC 方式によ り保護されます。 データ RAM には、 32 ビッ トのデータごとに、 7 ビッ トの ECC コードが含まれます。 タグRAM には、 タグおよび有効ビッ ト をカバーする 7 ビッ トの ECC コードが含まれます。 ダーティ RAM には、 ダーティ ビッ トおよび 2 つの外部属性ビッ ト をカバーする 4 ビッ トの ECC が含まれます。

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 8-20ID013111 Non-Confidential

Page 217: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

レベル1 メモリシステム

アドレスデコーダのフォールト

こ こで説明されているエラー検出方式は、 キャ ッシュ RAM に格納されているデータに発生するエラーに対する保護を提供するものです。 それぞれの RAM には通常、 そのデータへのアクセスを可能にするためのデコーダが含まれており、 このロジッ クにエラーが発生した場合は、 これらのエラー検出方式では一般に検出されません。プロセッサには、 アドレスデコーダのフォールトの一部を検出できる機能が含まれています。 プロセッサの実装時にこれらの機能が必要である場合、 機能と要件について ARM へお問い合わせ下さい。

キャッシュのパリテ ィエラーの処理

キャ ッシュにパリティエラーが発生したと きのプロセッサの動作は、 表 8-2 に示すように、 補助制御レジスタのビッ ト [5:3] によって異な り ます。 「補助制御レジスタ」 (ページ 4-38) を参照して下さい。

これらのビッ ト を安全に変更する方法については、「エラーチェッ クの可能 / 不可能」 (ページ 8-32) を参照して下さい。

ハードウェア回復

パリティチェ ッ クが可能なと き、 ハード ウェア回復は常に可能です。 ライ トバッ ク、書き込み割り当てと してマーク されたメモ リは、 ラ イ ト スルーと して動作します。これによって、 キャ ッシュラインがダーティ となるこ とはないため、 パリティエラーを含むキャ ッシュラインを無効化するこ とで、 エラーから常に回復できます。プロセッサは、 エラーを検出する と、 この無効化を自動的に実行します。 その後で、正しいデータがレベル 2 メモ リ システムから再度読み出されます。

パリテ ィアボート

パリティエラー時のアボートが可能になっている場合、 データアボート またはプリフェ ッチアボートによ り、 ソフ ト ウェアへエラーが通知されます。 アボートが生成される場合も、 エラーはハード ウェアによって自動的に訂正されます。

アボート生成が不可能になっている場合、 ハード ウェアによる回復はソフ ト ウェアから不可視です。 必要なら、 ソフ ト ウェアでイベン ト 、 および訂正可能フォールト位置レジスタを使用して、 検出と訂正が行われたエラーを監視できます。 「エラー検出イベン ト 」 (ページ 8-36) および 「訂正可能フォールト位置レジスタ」 (ページ 4-70) を参照して下さい。

表 8-2 キャッシュのパリテ ィエラーに対する動作

値 動作

b000 すべてのパリティエラーでアボート、 強制的にライ ト スルー、 ハード ウェア回復可能b001

b010

b011 予約

b100 パリティチェッ クが不可能

b101 強制的にライ ト スルー、 ハード ウェア回復可能、 パリティエラー時にアボートを生成しないb110

b111 予約

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 8-21ID013111 Non-Confidential

Page 218: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

レベル1 メモリシステム

キャッシュの ECC エラーの処理

キャ ッシュに ECC エラーが発生したと きのプロセッサの動作は、 表 8-3 に示すよ うに、 補助制御レジスタのビッ ト [5:3] によって異なり ます。 「補助制御レジスタ」 (ページ 4-38) を参照して下さい。

これらのビッ ト を安全に変更する方法については、「エラーチェッ クの可能 / 不可能」 (ページ 8-32) を参照して下さい。

ECC チェッ クが可能なと き、 ハード ウェア回復は常に可能です。 ECC エラーが検出される と、 プロセッサはエラーを含むキャ ッシュラインの退出を試みます。 ラインがク リーンな場合、 無効化され、 正しいデータがレベル 2 メモ リ システムから再ロード されます。 ラ インがダーティな場合、 退出によ りダーティデータがレベル 2メモ リ システムへ書き込まれ、 この過程で 1 ビッ トエラーは訂正されます。 その後で、 訂正されたデータがレベル 2 メモ リ システムから再ロード されます。

ダーティ ラインに 2 ビッ トエラーが検出された場合、 エラーは訂正不能です。 タグまたはダーティ RAM に 2 ビッ トエラーが存在する場合、 レベル 2 メモ リシステムへデータは書き込まれません。 データ RAM に 2 ビッ トエラーが存在する場合、 キャ ッシュラインがレベル 2 メモ リシステムへ書き込まれますが、 AXI マスタポートのWSTRBM 信号が、 エラーを含むデータについて LOW になり ます。 訂正不能なエラーが検出された場合、 データが消失した可能性があるこ とから、 必ずアボートが生成されます。 このよ うな状況は、 実行中のソフ ト ウェアプロセスに対して致命的な可能性があり ます。

強制的なライ ト スルー設定のいずれかが可能になっている場合、 ライ トバッ ク、 書き込み割り当てと してマーク されている メモ リはライ ト スルーと して動作します。これによって、 キャ ッシュラインがダーティ となるこ とはないため、 ECC エラーを含むキャ ッシュラインを無効化するこ とで、 エラーから常に回復できます。

命令キャ ッシュにダーティデータが含まれるこ とはないため、 命令キャ ッシュの検出可能なエラーは必ず回復可能です。

ECC アボート

ECC エラー時のアボートが可能になっている場合、 データアボート またはプリフェ ッチアボートによ り、 ソフ ト ウェアへエラーが通知されます。 アボートが生成される場合も、 エラーはハード ウェアによって自動的に訂正されます。

アボート生成が不可能になっている場合、 ハード ウェアによる回復はソフ ト ウェアから不可視です。 必要なら、 ソフ ト ウェアでイベン ト 、 および訂正可能フォールト位置レジスタを使用して、 検出と訂正が行われたエラーを監視できます。 「エラー検出イベン ト 」 (ページ 8-36) および 「訂正可能フォールト位置レジスタ」 (ページ 4-70) を参照して下さい。

表 8-3 キャッシュの ECC エラーに対する動作

値 動作

b000 すべての ECC エラーでアボート、 ハードウェア回復可能

b001

b010 すべての ECC エラーでアボート、 強制的にライ ト スルー、 ハード ウェア回復

可能

b011 予約

b100 ECC チェッ クが不可能

b101 ハードウェア回復可能、 ECC エラーでアボート を生成しない

b110 強制的にライ ト スルー、 ハード ウェア回復可能、 ECC エラー時にアボート を生成しない

b111 予約

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 8-22ID013111 Non-Confidential

Page 219: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

レベル1 メモリシステム

命令キャッシュ読み出しでのエラー

命令キャ ッシュ読み出し時に検出されたパリティ または ECC エラーは、 すべて訂正可能です。 アボートが可能になっている場合、 正確プリ フェ ッチアボート例外が発生します。 命令 FAR によ り、 エラーを引き起こしたアドレスを検出可能です。 命令FSR は、 読み出し時のパリティエラーを示しています。 補助 FSR は、 エラーがキャ ッシュに存在するこ と と、 エラーの存在するキャ ッシュウェイを示します。

データキャッシュ読み出しでのエラー

パリティ または ECC アボートが可能になっている場合、 または訂正不能な ECC エラーが検出された場合、 正確データアボート例外が発生します。 データ FAR により、 エラーを引き起こしたアドレスを検出可能です。 データ FSR は、 正確読み出しパリティエラーを示します。 補助 FSR は、 エラーがキャ ッシュに存在するこ と と、エラーの存在するキャ ッシュウェイを示します。

データキャッシュ書き込みでのエラー

パリティ または ECC アボートが可能になっている場合、 または訂正不能な ECC エラーが検出された場合、 不正確データアボート例外が発生します。 アボートが不正確なため、 データ FAR は予測不能です。 データ FSR は、 不正確書き込みパリ テイエラーを示します。 補助 FSR は、 エラーがキャ ッシュに存在するこ と と、 エラーの存在するキャ ッシュウェイおよびインデクスを示します。

ラ イ ト スルーのキャ ッシュ領域では、 エラーを引き起こしたス ト アは、 レベル 2 メモ リ インタフェースを使用して外部メモ リへ書き込まれるため、 データは消失せず、このエラーは致命的ではあ り ません。

退出時のエラー

キャ ッシュコン ト ローラによ り、 キャ ッシュ ミ スが発生したと判定された場合、 ラインフ ィルを行う前に退出が必要となるこ とがあ り ます。 これは読み出し時、 およびその領域で書き込み割り当てが可能になっていれば書き込み時にも発生するこ とがあ り ます。 特定のキャ ッシュ保守操作でも退出が発生します。 それがデータ キャ ッシュラインで、 ダーティであれば、 退出するラインに ECC エラーが検出されるこ とがあ り ます。

• エラーが訂正可能であれば、 レベル 2 メモ リ インタフェースを使用して外部メモ リへデータが書き込まれる前に、 インラインで訂正されます。

• タグまたはダーティ RAM に訂正不能なエラーが存在する場合、 書き込みは行われず、 不正確アボートが発生します。

• データ RAM に訂正不能なエラーが存在する場合、 エラーが含まれているワードについて AXI マスタポートの WSTRBM 信号がアサート解除され、 不正確アボートが発生します。

補助制御レジスタのビッ ト [5:3] の設定によっては、 訂正可能なエラーでも不正確アボートが発生します。 「補助制御レジスタ」 (ページ 4-38) を参照して下さい。 検出されたエラーはすべて、 適切なイベン トで通知されます。

注 パリティチェ ッ クが可能なと き、 強制ライ ト スルーは常に可能です。 したがって、キャ ッシュラインがダーティ となるこ とはないため、 退出は必要あ り ません。 強制ライ ト スルーは、 ECC チェッ クについても可能にするこ とができます。

キャッシュ保守操作でのエラー

次に示すセクシ ョ ンでは、 キャ ッシュ保守操作でのエラーについて説明します。• 「すべての命令キャ ッシュの無効化」 (ページ 8-24)• 「すべてのデータキャ ッシュの無効化」 (ページ 8-24)• 「アド レスによる命令キャ ッシュの無効化」 (ページ 8-24)

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 8-23ID013111 Non-Confidential

Page 220: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

レベル1 メモリシステム

• 「アド レスによるデータキャ ッシュの無効化」• 「セッ ト / ウェイによるデータキャ ッシュの無効化」

• 「アド レスによるデータキャ ッシュのク リーニング」• 「セッ ト / ウェイによるデータキャ ッシュのク リーニング」 (ページ 8-25)• 「アド レスによるデータキャ ッシュのク リーニングと無効化」 (ページ 8-25)• 「セッ ト / ウェイによるデータキャ ッシュのク リーニングと無効化」 (ページ

8-25)

すべての命令キャッシュの無効化

この操作は、 キャ ッシュエラーをすべて無視し、 エラーイベン トにかかわらずすべての命令キャ ッシュエン ト リ を無効に設定します。 この操作では不正確アボートは生成されず、 エラーイベン トは通知されません。

すべてのデータキャッシュの無効化

この操作は、 キャ ッシュエラーをすべて無視し、 エラーにかかわらずすべてのデータ キャ ッシュエン ト リ を無効に設定します。 この操作では不正確アボートは生成されず、 エラーイベン トは通知されません。

アドレスによる命令キャッシュの無効化

この操作には、 キャ ッシュルッ クアップが必要です。 ルッ クアップされたセッ トに見つかったエラーは、 そのラインを無効化するこ とで修正され、 探しているアドレスがそのセッ トに見つかった場合は、 そのアドレスも無効化されます。

この操作では不正確アボートは生成されません。 検出されたエラーはすべて、 適切なイベン トで通知されます。

アドレスによるデータキャッシュの無効化

この操作には、 キャ ッシュルッ クアップが必要です。 ルッ クアップされたセッ トに見つかった訂正可能なエラーは修正され、 探しているアドレスがそのセッ トに見つかった場合は、 そのアドレスも無効化されます。

回復不能なエラーは、 不正確アボート を引き起こします。 補助制御レジスタで、RAM エラー時のアボートが可能になっていれば、 訂正可能なエラーについても不正確アボートが発生するこ とがあ り ます。

検出されたエラーはすべて、 適切なイベン トで通知されます。

セッ ト / ウェイによるデータキャッシュの無効化

この操作では、 キャ ッシュルッ クアップは必要あ り ません。 特定のキャ ッシュラインが参照されます。

指定されたセッ ト / ウェイのエン ト リは、 エラーにかかわらず無効にマーク されます。 この操作では不正確アボートは生成されません。 検出されたエラーはすべて、適切なイベン トで通知されます。

アドレスによるデータキャッシュのクリーニング

この操作には、 キャ ッシュルッ クアップが必要です。 ルッ クアップされたセッ トに見つかった訂正可能なエラーは修正され、 探しているアドレスがそのセッ トに見つかった場合は、 命令によって引き続きク リーニング操作が行われます。 タグのルックアップが完了する と、 ダーティ RAM がチェッ ク されます。

注 強制ライ ト スルーが可能になっている場合、 ダーティビッ トは無視されます。

タグまたはダーティ RAM に訂正不能なエラーが存在する場合、 データはメモ リに書き込まれません。

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 8-24ID013111 Non-Confidential

Page 221: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

レベル1 メモリシステム

ラ インがダーティな場合、 データは外部メモ リに書き戻されます。 データに訂正不能なエラーが存在する場合、 エラーの存在するワードについて AXI の WSTRBM 信号がアサート解除されます。 訂正可能なエラーが存在する場合、 ラインがメモ リに書き戻される前に、 インラインでエラーが訂正されます。

回復不能なエラーは、 不正確アボート を引き起こします。 補助制御レジスタで、RAM エラー時のアボートが可能になっていれば、 訂正可能なエラーについても不正確アボートが発生するこ とがあ り ます。

検出されたエラーはすべて、 適切なイベン トで通知されます。

セッ ト / ウェイによるデータキャッシュのクリーニング

この操作では、 キャ ッシュルッ クアップは必要あ り ません。 特定のキャ ッシュラインが参照されます。

キャ ッシュラインのタグおよびダーティ RAM がチェッ ク されます。

注 強制ライ ト スルーが可能になっている場合、 ダーティビッ トは無視されます。

タグまたはダーティ RAM に訂正不能なエラーが存在する場合、 データはメモ リに書き込まれません。

ラ インがダーティな場合、 データは外部メモ リに書き戻されます。 データに訂正不能なエラーが存在する場合、 エラーの存在するワードについて AXI の WSTRBM 信号がアサート解除されます。 訂正可能なエラーが存在する場合、 ラインがメモ リに書き戻される前に、 インラインでエラーが訂正されます。

回復不能なエラーは、 不正確アボート を引き起こします。 補助制御レジスタで、RAM エラー時のアボートが可能になっていれば、 訂正可能なエラーについても不正確アボートが発生するこ とがあ り ます。

検出されたエラーはすべて、 適切なイベン トで通知されます。

アドレスによるデータキャッシュのクリーニングと無効化

この操作には、 キャ ッシュルッ クアップが必要です。 ルッ クアップされたセッ トに見つかった訂正可能なエラーは修正され、 探しているアドレスがそのセッ トに見つかった場合は、 命令によって引き続きク リーニングおよび無効化操作が行われます。タグのルッ クアップが完了する と、 ダーティ RAM がチェッ ク されます。

注 強制ライ ト スルーが可能になっている場合、 ダーティビッ トは無視されます。

タグまたはダーティ RAM に訂正不能なエラーが存在する場合、 データはメモ リに書き込まれません。

ラ インがダーティな場合、 データは外部メモ リに書き戻されます。 データに訂正不能なエラーが存在する場合、 エラーの存在するワードについて AXI の WSTRBM 信号がアサート解除されます。 訂正可能なエラーが存在する場合、 ラインがメモ リに書き戻される前に、 インラインでエラーが訂正されます。

回復不能なエラーは、 不正確アボート を引き起こします。 補助制御レジスタで、RAM エラー時のアボートが可能になっていれば、 訂正可能なエラーについても不正確アボートが発生するこ とがあ り ます。

検出されたエラーはすべて、 適切なイベン トで通知されます。

セッ ト / ウェイによるデータキャッシュのクリーニングと無効化

この操作では、 キャ ッシュルッ クアップは必要あ り ません。 特定のキャ ッシュラインが参照されます。

キャ ッシュラインのタグおよびダーティ RAM がチェッ ク されます。

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 8-25ID013111 Non-Confidential

Page 222: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

レベル1 メモリシステム

注 強制ライ ト スルーが可能になっている場合、 ダーティビッ トは無視されます。

タグまたはダーティ RAM に訂正不能なエラーが存在する場合、 データはメモ リに書き込まれません。

ラ インがダーティな場合、 データは外部メモ リに書き戻されます。 データに訂正不能なエラーが存在する場合、 エラーの存在するワードについて AXI の WSTRBM 信号がアサート解除されます。 訂正可能なエラーが存在する場合、 ラインがメモ リに書き戻される前に、 インラインでエラーが訂正されます。

回復不能なエラーは、 不正確アボート を引き起こします。 補助制御レジスタで、RAM エラー時のアボートが可能になっていれば、 訂正可能なエラーについても不正確アボートが発生するこ とがあ り ます。

検出されたエラーはすべて、 適切なイベン トで通知されます。

8.5.4 キャッシュ RAM の構成

次に示すセクシ ョ ンでは、 RAM の構成について説明します。

• 「タグ RAM」

• 「ダーティ RAM」 (ページ 8-27)• 「データ RAM」 (ページ 8-27)

タグ RAM

タグ RAM は 4 つのウェイで構成され、 各ウェイは 大 512 ラ インです。 RAM の幅は、 選択されたビルドオプシ ョ ンと、 キャ ッシュのサイズによ り決定されます。 タグ RAM ビッ トについて、 以下の表に示します。

• パリティが実装されている場合のタグ RAM ビッ ト を、 表 8-4 に示します。

• ECC が実装されている場合のタグ RAM ビッ ト を、 表 8-5 に示します。

• パリティ と ECC のいずれも実装されていない場合のタグ RAM ビッ ト を、表 8-6 に示します。

表 8-4 タグ RAM ビッ トの説明、 パリテ ィ付き

タグ キャッシュラインのビッ ト 説明

ビッ ト [23] パリティビッ ト

ビッ ト [22] 有効ビッ ト

ビッ ト [21:0] タグ値

表 8-5 タグ RAM ビッ トの説明、 ECC 付き

タグ キャッシュラインのビッ ト 説明

ビッ ト [29:23] ECC コードビッ ト

ビッ ト [22] 有効ビッ ト

ビッ ト [21:0] タグ値

表 8-6 タグ RAM ビッ トの説明、 パリテ ィ / ECC なし

タグ キャッシュラインのビッ ト 説明

ビッ ト [22] 有効ビッ ト

ビッ ト [21:0] タグ値

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 8-26ID013111 Non-Confidential

Page 223: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

レベル1 メモリシステム

キャ ッシュラインは、 タグ RAM のビッ ト [22] によって有効とマーク されます。 有効な各ビッ トはキャ ッシュライン全体と関連付けられているため、 退出は常にライン全体について発生します。

パリティや ECC が使用されていない場合について、 タグ RAM キャ ッシュサイズと、関連付けられている RAM 構成との関係を、 表 8-7 に示します。 パリ ティの場合、 タグ RAM の幅を 1 ビッ ト増やす必要があ り ます。 ECC の場合、 タグ RAM の幅を 7ビッ ト増やす必要があ り ます。

ダーティ RAM

ダーティ RAM はデータキャ ッシュにのみ存在し、 次の情報を格納します。

• 退出に対するラインの外部属性、 2 ビッ ト

• ラ イン ダーティビッ ト 、 1 ビッ ト

• ECC ビルドオプシ ョ ンが可能になっている場合、 4 ビッ トの ECC コード

ダーティ RAM アレイは 1 つのバンクで構成され、 バンクには 大 512 個の 12 ビット ラ イン (4 ウェイ× 3 ビッ ト ) が含まれます。 ECC が可能になっている場合、ダーティ RAM は 28 ビッ ト幅です。 ダーティ RAM の各ラインには、 与えられたインデクスの 4 つのウェイに関するすべての情報が含まれています。

ダーティ ビッ トが書き込まれるたびに、 ラ インの外部ビッ ト と、 実装されているなら ECC コードビッ ト も書き込まれます。 ダーティ RAM はビッ ト単位で可能になります。 ダーティ RAM ラインの構成を、 表 8-8 に示します。

データ RAM

データ RAM は、 32 ビッ ト幅ラインの 8 バンク、 または命令キャ ッシュの場合は 64ビッ ト幅ラインの 4 バンク と して構成されます。 この RAM 構成によ り、 次の操作が実行可能です。

• 1 つの RAM アクセスにおいて、 すべてのバンクを同時に選択し、 キャ ッシュのルッ クアップを実行する。 これは、 非シーケンシャルな読み出し操作のために行われます。 この動作を、 図 8-3 (ページ 8-28) に示します。

表 8-7 キャッシュサイズとタグ RAM の構成

キャッシュサイズ タグ RAM の構成

4 KB 4 バンク、 23 ビッ ト 、 32 ライン

8 KB 4 バンク、 22 ビッ ト 、 64 ライン

16 KB 4 バンク、 21 ビッ ト 、 128 ライン

32 KB 4 バンク、 20 ビッ ト 、 256 ライン

64 KB 4 バンク、 19 ビッ ト 、 512 ライン

表 8-8 ダーティ RAM ラインの構成

ダーティ キャッシュラインのビッ ト 説明

ビッ ト [6:3] ECC ビッ ト (実装されている場合)

ビッ ト [2:1] 外部属性で、 AXI バスに退出が送信される と き、 AWCACHE に再

エンコード されます。

01 = WB、 WA10 = WT

11 = WB、 WA なし

00 = キャ ッシュ不可

ビッ ト [0] ダーティビッ ト

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 8-27ID013111 Non-Confidential

Page 224: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

レベル1 メモリシステム

• シーケンシャルな読み出し操作のため、 適切なバンク RAM を選択する。 この動作を、 図 8-4 に示します。

• ラインを 1 サイクルで退出バッファに書き込む (256 ビッ トの読み出しアクセス)。

• ラ インを 1 サイクルでラインフ ィルバッファからフ ィルする (256 ビッ トの書き込みアクセス)。

すべてのバンクに対して 1 回の RAM アクセスでキャ ッシュルッ クアップを実行する例を、 図 8-3 に示します。

図 8-3 非シーケンシャルな読み出し操作を 1 回の RAM アクセスで行う例

シーケンシャルな読み出し操作のため、 適切なバンク RAM を選択する例を、 図 8-4に示します。

図 8-4 シーケンシャルな読み出し操作を 1 回の RAM アクセスで行う例

データ RAM の構成は、 64 ビッ トの読み出し操作に 適化されています。 これは、同じアドレスによって、 同じウェイに存在する 2 ワードを選択可能なためです。

データ RAM のサイズは、 選択されたビルドオプシ ョ ンによって決定されます。 次に示すセクシ ョ ンを参照して下さい。

• 「パ リ テ ィ または ECC が実装されていない場合のデータ RAM のサイズ」 (ページ 8-29)

• 「パ リ テ ィが実装されている場合のデータ RAM のサイズ」 (ページ 8-29)• 「ECC が実装されている場合のデータ RAM のサイズ」 (ページ 8-30)

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 8-28ID013111 Non-Confidential

Page 225: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

レベル1 メモリシステム

パリテ ィまたは ECC が実装されていない場合のデータ RAM のサイズ

パリティ または ECC が実装されていない場合の、 命令およびデータキャ ッシュの構成を、 表 8-9 に示します。

パリテ ィが実装されている場合のデータ RAM のサイズ

パリティが実装されている場合の命令およびデータキャ ッシュの構成を、 表 8-11 に示します。 パリテ ィエラー検出のため、 バイ ト ごとに 1 ビッ トが追加されるため、RAM バンクごとに 4 ビッ トが追加されます。

表 8-9 命令キャッシュのデータ RAM のサイズ、 パリテ ィまたは ECC なし

キャッシュサイズ データ RAM

4 KB、 4 × 1 KB ウェイ 4 バンク、 64 ビッ ト 、 128 ラインまたは

8 バンク、 32 ビッ ト 、 128 ライン

8 KB、 4 × 2 KB ウェイ 4 バンク、 64 ビッ ト 、 256 ラインまたは

8 バンク、 32 ビッ ト 、 256 ライン

16 KB、 4 × 4 KB ウェイ 4 バンク、 64 ビッ ト 、 512 ラインまたは

8 バンク、 32 ビッ ト 、 512 ライン

32 KB、 4 × 8 KB ウェイ 4 バンク、 64 ビッ ト 、 1024 ラ インまたは8 バンク、 32 ビッ ト 、 1024 ラ イン

64 KB、 4 × 16 KB ウェイ 4 バンク、 64 ビッ ト 、 2048 ラ インまたは

8 バンク、 32 ビッ ト 、 2048 ラ イン

表 8-10 データキャッシュのデータ RAM のサイズ、 パリテ ィまたは ECC なし

キャッシュサイズ データ RAM

4 KB、 4 × 1 KB ウェイ 8 バンク、 32 ビッ ト 、 128 ライン

8 KB、 4 × 2 KB ウェイ 8 バンク、 32 ビッ ト 、 256 ライン

16 KB、 4 × 4 KB ウェイ 8 バンク、 32 ビッ ト 、 512 ライン

32 KB、 4 × 8 KB ウェイ 8 バンク、 32 ビッ ト 、 1024 ライン

64 KB、 4 × 16 KB ウェイ 8 バンク、 32 ビッ ト 、 2048 ライン

表 8-11 命令キャッシュのデータ RAM のサイズ、 パリテ ィ付き

キャッシュサイズ データ RAM

4 KB、 4 × 1 KB ウェイ 4 バンク、 72 ビッ ト 、 128 ラ インまたは

8 バンク、 36 ビッ ト 、 128 ラ イン

8 KB、 4 × 2 KB ウェイ 4 バンク、 72 ビッ ト 、 256 ラ インまたは8 バンク、 36 ビッ ト 、 256 ラ イン

16 KB、 4 × 4 KB ウェイ 4 バンク、 72 ビッ ト 、 512 ラ インまたは

8 バンク、 36 ビッ ト 、 512 ラ イン

32 KB、 4 × 8 KB ウェイ 4 バンク、 72 ビッ ト 、 1024 ラ インまたは8 バンク、 36 ビッ ト 、 1024 ラ イン

64 KB、 4 × 16 KB ウェイ 4 バンク、 72 ビッ ト 、 2048 ラ インまたは

8 バンク、 36 ビッ ト 、 2048 ラ イン

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 8-29ID013111 Non-Confidential

Page 226: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

レベル1 メモリシステム

パリティが実装されている場合のデータキャ ッシュ RAM ビッ トの構成を、 表 8-13に示します。

パリティ ビッ トはビッ ト [35:32] と してグループ化されているため、 データビッ ト とパリ ティ ビッ トは簡単に区別できます。 この設計では、 パリティ ビッ トは関連するデータバイ ト と一緒に選択されるため、 データが更新される と きは、 パリティ ビット も更新されます。

ECC が実装されている場合のデータ RAM のサイズ

ECC が実装されている場合の命令キャ ッシュの構成を、 表 8-14 に示します。 ECC エラー検出では、 64 ビッ ト ごとに 8 ビッ トが追加されるため、 各 RAM バンクについて 4 ビッ トが追加されます。

表 8-12 データキャッシュのデータ RAM のサイズ、 パリテ ィ付き

キャッシュサイズ データ RAM

4 KB、 4 × 1 KB ウェイ 8 バンク、 36 ビッ ト 、 128 ラ イン

8 KB、 4 × 2 KB ウェイ 8 バンク、 36 ビッ ト 、 256 ラ イン

16 KB、 4 × 4 KB ウェイ 8 バンク、 36 ビッ ト 、 512 ラ イン

32 KB、 4 × 8 KB ウェイ 8 バンク、 36 ビッ ト 、 1024 ラ イン

64 KB、 4 × 16 KB ウェイ 8 バンク、 36 ビッ ト 、 2048 ラ イン

表 8-13 データキャッシュ RAM ビッ ト、 パリテ ィ付き

RAM ビッ ト 説明

ビッ ト [35] バイ ト [31:24] のパリティビッ ト

ビッ ト [34] バイ ト [23:16] のパリティビッ ト

ビッ ト [33] バイ ト [15:8] のパリ ティビッ ト

ビッ ト [32] バイ ト [7:0] のパリティビッ ト

ビッ ト [31:0] データ [31:0]

表 8-14 命令キャッシュのデータ RAM のサイズ、 ECC 付き

キャッシュサイズ データ RAM

4 KB、 4 × 1 KB ウェイ 4 バンク、 72 ビッ ト 、 128 ラインまたは

8 バンク、 36 ビッ ト 、 128 ライン

8 KB、 4 × 2 KB ウェイ 4 バンク、 72 ビッ ト 、 256 ラインまたは8 バンク、 36 ビッ ト 、 256 ライン

16 KB、 4 × 4 KB ウェイ 4 バンク、 72 ビッ ト 、 512 ラインまたは

8 バンク、 36 ビッ ト 、 512 ライン

32 KB、 4 × 8 KB ウェイ 4 バンク、 72 ビッ ト 、 1024 ラインまたは

8 バンク、 36 ビッ ト 、 1024 ライン

64 KB、 4 × 16 KB ウェイ 4 バンク、 72 ビッ ト 、 2048 ラインまたは8 バンク、 36 ビッ ト 、 2048 ライン

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 8-30ID013111 Non-Confidential

Page 227: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

レベル1 メモリシステム

ECC が実装されている場合のデータキャ ッシュの構成を、 表 8-15 に示します。 ECCエラー検出では、 32 ビッ ト ご とに 7 ビッ トが追加されるため、 各 RAM バンクについて 7 ビッ トが追加されます。

ECC が実装されている場合のデータキャ ッシュ RAM ビッ トの構成を、 表 8-16 に示します。

8.5.5 キャッシュと メモリシステムとの相互動作

こ こでは、 キャ ッシュ RAM を稼働 / 非稼働にする方法と、 エラーチェッ クを可能 / 不可能にする方法について説明します。 命令キャ ッシュを稼働または非稼働にした後で、 パイプラインをフラ ッシュするために ISB 命令を発行する必要があ り ます。 これによって、 以後のすべての命令フェッチに、 命令キャ ッシュを稼働または非稼働にした影響が反映されるこ とが保証されます。

リセッ トの後で、 各キャ ッシュを稼働する前に無効化を行う必要があ り ます。

データキャッシュを非稼働にするときは、 ダーティデータがすべてレベル 2 メモリへフラ ッシュされるこ とを保証するため、 キャッシュ全体をク リーニングする必要があり ます。

キャ ッシュが非稼働になった後でレベル 2 メモ リが変更された可能性がある場合は、データキャ ッシュを稼働する前に、 データキャ ッシュ全体を無効化する必要があ ります。

キャ ッシュが非稼働になった後でレベル 2 メモ リが変更された可能性がある場合は、命令キャ ッシュを稼働する前に、 命令キャ ッシュ全体を無効化する必要があ り ます。

AXI スレーブインタフェースを使用してキャッシュ RAM にアクセスする方法の詳細については、 「AXI スレーブアクセスの可能 / 不可能」 (ページ 9-23) および 「AXI スレーブインタフェースを使用した RAM へのアクセス」 (ページ 9-24) を参照して下さい。

キャッシュ全体の稼働 / 非稼働

次に示すのは、 キャ ッシュを稼働するコードの例です。

MRC p15, 0, R1, c1, c0, 0 ; Read System Control Register configuration dataORR R1, R1, #0x1 <<12 ; instruction cache enableORR R1, R1, #0x1 <<2 ; data cache enableDSBMCR p15, 0, r0, c15, c5, 0 ; Invalidate entire data cacheMCR p15, 0, r0, c7, c5, 0 ; Invalidate entire instruction cacheMCR p15, 0, R1, c1, c0, 0 ; enabled cache RAMsISB

表 8-15 データキャッシュのデータ RAM のサイズ、 ECC 付き

キャッシュサイズ データ RAM

4 KB、 4 × 1 KB ウェイ 8 バンク、 39 ビッ ト 、 128 ライン

8 KB、 4 × 2 KB ウェイ 8 バンク、 39 ビッ ト 、 256 ライン

16 KB、 4 × 4 KB ウェイ 8 バンク、 39 ビッ ト 、 512 ライン

32 KB、 4 × 8 KB ウェイ 8 バンク、 39 ビッ ト 、 1024 ライン

64 KB、 4 × 16 KB ウェイ 8 バンク、 39 ビッ ト 、 2048 ライン

表 8-16 データキャッシュ RAM ビッ ト、 ECC 付き

RAM ビッ ト 説明

ビッ ト [39:32] データ [31:0] の ECC コードビッ ト

ビッ ト [31:0] データ [31:0]

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 8-31ID013111 Non-Confidential

Page 228: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

レベル1 メモリシステム

次に示すのは、 キャ ッシュを非稼働にするコードの例です。

MRC p15, 0, R1, c1, c0, 0 ; Read System Control Register configuration dataBIC R1, R1, #0x1 <<12 ; instruction cache disableBIC R1, R1, #0x1 <<2 ; data cache disableDSBMCR p15, 0, R1, c1, c0, 0 ; disabled cache RAMsISB; Clean entire data cache. This routine will depend on the data cache size. It can be omitted if it is known that the data cache has no dirty data

命令キャッシュの稼働 / 非稼働

次に示すのは、 命令キャ ッシュを稼働するコードの例です。

MRC p15, 0, R1, c1, c0, 0 ; Read System Control Register configuration dataORR R1, R1, #0x1 <<12 ; instruction cache enableMCR p15, 0, r0, c7, c5, 0 ; Invalidate entire instruction cacheMCR p15, 0, R1, c1, c0, 0 ; enabled instruction cacheISB

次に示すのは、 命令キャ ッシュを非稼働にするコードの例です。

MRC p15, 0, R1, c1, c0, 0 ; Read System Control Register configuration dataBIC R1, R1, #0x1 <<12 ; instruction cache enableMCR p15, 0, R1, c1, c0, 0 ; disabled instruction cacheISB

データキャッシュの稼働 / 非稼働

次に示すのは、 データキャ ッシュを稼働するコードの例です。

MRC p15, 0, R1, c1, c0, 0 ; Read System Control Register configuration dataORR R1, R1, #0x1 <<2DSBMCR p15, 0, r0, c15, c5, 0 ; Invalidate entire data cacheMCR p15, 0, R1, c1, c0, 0 ; enabled data cache

次に示すのは、 キャ ッシュ RAM を非稼働にするコードの例です。

MRC p15, 0, R1, c1, c0, 0 ; Read System Control Register configuration dataBIC R1, R1, #0x1 <<2DSBMCR p15, 0, R1, c1, c0, 0 ; disabled data cache; Clean entire data cache. This routine will depend on the data cache size. It can be omitted if it is known that the data cache has no dirty data.

エラーチェ ックの可能 / 不可能

ソフ ト ウェアで補助制御レジスタのエラーチェッ ク ビッ ト を変更する と きは、 十分な注意が必要です。 キャ ッシュにデータが含まれている と きにこのビッ トが変更される と、 キャ ッシュ内のパリティ または ECC ビッ トは新しい設定に対して正し くない可能性があ り、 予期しないエラーやデータ消失を招く こ とがあ り ます。 このため、補助制御レジスタのビッ トは、 両方のキャ ッシュが停止している と きにのみ変更し、変更後には必ずキャ ッシュ全体を無効化して下さい。

次に示すのは、 変更を行うための推奨シーケンスを示すコードです。

MRC p15, 0, r0, c1, c0, 0 ; Read System Control RegisterBIC r0, r0, #0x1 << 2 ; Disable data cache bitBIC r0, r0, #0x1 << 12 ; Disable instruction cache bitDSBMCR p15, 0, r0, c1, c0, 0 ; Write System Control RegisterISB ; Ensures following instructions are not executed from cache; Clean entire data cache. This routine will depend on the data cache size. It can be omitted if it is known that the data cache has no dirty data (e.g. if the cache has not been enabled yet).MRC p15, 0, r1, c1, c0, 1 ; Read Auxiliary Control Register; Change bits 5:3 as needed

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 8-32ID013111 Non-Confidential

Page 229: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

レベル1 メモリシステム

MCR p15, 0, r1, c1, c0, 1 ; Write Auxiliary Control RegisterMCR p15, 0, r0, c15, c5, 0 ; Invalidate entire data cacheMCR p15, 0, r0, c7, c5, 0 ; Invalidate entire instruction cacheMRC p15, 0, r0, c1, c0, 0 ; Read System Control RegisterORR r0, r0, #0x1 << 2 ; Enable data cache bitORR r0, r0, #0x1 << 12 ; Enable instruction cache bitDSBMCR p15, 0, r0, c1, c0, 0 ; Write System Control RegisterISB

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 8-33ID013111 Non-Confidential

Page 230: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

レベル1 メモリシステム

8.6 内部排他モニタ

プロセッサのレベル 1 メモ リ システムには、 内部排他モニタが存在します。 これは 2状態の、 オープンで排他的なステートマシンで、 排他ロード / ス ト ア (LDREXB、 LDREXH、LDREX、 LDREXD、 STREXB、 STREXH、 STREX、 STREXD) アクセスおよび排他ク リ ア (CLREX) 命令を管理します。 これらの命令はレベル 1 メモ リ システムで動作し、 これらを使用してセマフォを構築し、 各プロセス間の同期を保証できます。 外部排他モニタを追加する と、 これらの命令をレベル 2 メモ リ システムでも使用し、 プロセッサ間の同期を保証するセマフォを構築できます。 これらの命令の動作の詳細については、 『ARMアーキテクチャ リ ファレンスマニュアル』 を参照して下さい。

排他ロードアクセスが実行される と き、 内部排他モニタは排他状態に移行します。排他ス ト アアクセスまたは排他ク リ ア命令が実行される と、 オープン状態に戻り ます。 内部排他モニタで排他性状態が保持されるのは、 Cortex-R4 プロセッサのみです。 排他ロードアクセスの実行対象となったメモ リのアドレスは記録されません。オープン状態で実行される排他ス ト アアクセスは、 すべて失敗します。 排他状態では、 非共有メモ リに対してはアクセスが成功しますが、 共有メモ リに対してのアクセスは、 レベル 2 メモ リ インタフェースを使用して排他と して実行される必要があり ます。 共有の排他ス ト アアクセスが成功するか、 失敗するかは、 システム内の他のプロセッサによって行われるアクセスを追跡できる外部排他モニタの状態によって決定されます。

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 8-34ID013111 Non-Confidential

Page 231: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

レベル1 メモリシステム

8.7 メモリ タイプとレベル 1 メモリシステムの動作

レベル 1 メモリシステムの動作は、 アクセス対象のメモリのタイプ属性によって異なります。

• ノーマルの非共有メモ リのみが、 RAM にキャ ッシュ可能です。

• ス ト アバッファは、 ノーマルメモ リへの任意のス ト アを結合できます。 詳細については、 「ス ト アバッファ」 (ページ 8-18) を参照して下さい。

• ノーマルメモ リのみが再開可能と見なされます。 これは、 割り込みが発生した場合に複数ワードの転送を途中で破棄し、 割り込みの処理後に再開できる という こ とを意味します。 割り込みの動作の詳細については、 「割り込み」 (ページ 2-18) を参照して下さい。

• 非共有メモ リへの排他アクセスには、 内部排他モニタのみが使用されます。 共有メモ リへの排他アクセスは、 内部モニタを使用してチェッ ク されてから、 必要ならばレベル 2 メモ リ インタフェースを使用して、 外部モニタでもチェッ クされます。

• キャ ッシュ可能メモ リへの SWP および SWPB 命令の結果と して行われるアクセスがレベル 2 メモ リ インタフェースを使用して実行される場合、 ロ ッ ク と してマーク されません。

プロセッサのメモリ タイプと、 それぞれに対応する動作の要約を、 表 8-17 に示します。

表 8-17 メモリ タイプと対応する動作

メモリ タイプ キャッシュ可能 結合 再開可能 内部排他 スワップのロック

ノーマル 共有 いいえ はい はい 部分的 はい

非共有 はい はい はい はい いいえ

デバイス 共有 いいえ いいえ いいえ 部分的 はい

非共有 いいえ いいえ いいえ はい はい

ス ト ロング リオーダ 共有 いいえ いいえ いいえ 部分的 はい

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 8-35ID013111 Non-Confidential

Page 232: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

レベル1 メモリシステム

8.8 エラー検出イベン ト

プロセッサは、 TCM およびキャ ッシュの内部エラー検出および訂正方式に関連する多くのイベン ト を生成します。 詳細については、 表 6-1 (ページ 6-2) を参照して下さい。 こ こでは、 次の ト ピッ クについて説明します。

• 「TCM エラーイベン ト 」

• 「命令キャ ッシュのエラーイベン ト 」• 「データキャ ッシュのエラーイベン ト 」• 「イベン ト と CFLR」 (ページ 8-37)

8.8.1 TCM エラーイベン ト

TCM のパリティおよび ECC エラーイベン トは、 TCM 読み出しについてのみ通知されますが、 これには一部のス ト アについて実行される読み出し - 変更 - 書き込みシーケンスも含まれます。 内部のパリティ または ECC ロジッ クによ り検出されたほとんどのエラーは、 2 回通知されます。

• TCM を中心と したイベン トで 1 回

• プロセッサを中心と したイベン トで 1 回

TCM を中心と したイベン トは、 TCM ポート ごとに 2 つのイベン トで構成され、 そのうち 1 つは致命的な 2 ビッ ト ECC エラーまたはパリティエラーで、 も う 1 つは訂正可能な 1 ビッ ト ECC エラーです。 これらのイベン トは、 データの読み出しサイ クルから 3 ク ロ ッ クサイ クル後に生成されます。 したがって、 これらのイベン トは投機的 TCM 読み出し時、 例えば命令がプリ フェ ッチされたが、 命令シーケンスでそれ以前に存在する分岐のために実行されない場合について通知されるこ と もあ り ます。

注 TCM アクセスに対して外部エラーが通知された場合、 TCM を中心と したイベン トは依然と して、 外部エラーが通知されなかった場合と同様に、 返されたデータに基づいて適切に生成されます。

プロセッサを中心と した TCM イベン トは、 そのエラーが発生しなければプロセッサによって使用されたはずのデータについてエラーが発生した場合のみ通知されます。投機的読み出しでのエラーによ り、 これらのエラーが生成されるこ とはあ り ません。これらは致命的なイベン ト と訂正可能なイベン トで構成され、 次の要素が対象です。

• プリ フェ ッチユニッ ト。 命令フェ ッチにおけるエラーを通知します。

• ロード / ス ト アユニッ ト 。 データアクセスにおけるエラーを通知します。

• AXI スレーブインタフェース。 DMA アクセスにおけるエラーを通知します。

8.8.2 命令キャッシュのエラーイベン ト

すべてのパリ ティおよび ECC エラーは I キャ ッシュ内で訂正可能です。 このため、イベン トは 2 つだけで、 タグ RAM またはデータ RAM からの読み出し時にエラーが検出された時点を示します。 これらのイベン トは、 投機的でない命令フェッチと、特定のキャ ッシュ保守操作についてのみ通知されます。 「キャ ッシュエラーの検出と訂正」 (ページ 8-20) を参照して下さい。

8.8.3 データキャッシュのエラーイベン ト

D キャ ッシュは致命的なエラーと訂正可能なエラーを生成する可能性があるため、それぞれのタイプについて、 データ RAM のエラーと、 タグまたはダーティ RAM のエラーが存在し、 合計 4 つのイベン トが存在します。 これらのイベン トは、 投機的でないデータアクセス、 キャ ッシュラインの退出、 および特定のキャ ッシュ保守操作についてのみ通知されます。 「キャ ッシュエラーの検出と訂正」 (ページ 8-20) を参照して下さい。

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 8-36ID013111 Non-Confidential

Page 233: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

レベル1 メモリシステム

8.8.4 イベン ト と CFLR

訂正可能フォールト位置レジスタ (CFLR) は、 投機的でないアクセスについて 後に検出された、 訂正可能なエラーの位置を記録します。 詳細については、 「訂正可能フォールト位置レジスタ」 (ページ 4-70) を参照して下さい。 CFLR に記録される訂正可能なエラーはすべて、 イベン ト も生成します。 どのイベン トが CFLR に関連しているかについては、 表 6-1 (ページ 6-2) を参照して下さい。 訂正可能なキャ ッシュエラーについては、 エラーがデータ RAM と タグ / ダーティ RAM のどちらで発生したかは CLFR に記録されません。 この区別はイベン トによってのみ行われます。

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 8-37ID013111 Non-Confidential

Page 234: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

第 9 章 レベル 2 インタフェース

本章では、 『AMBA AXI プロ ト コル仕様』 に含まれていない、 レベル 2 (L2) インタフェースの機能について説明します。 本章は次のセクシ ョ ンから構成されています。

• 「レベル 2 インタフェースについて」 (ページ 9-2)

• 「AXI マスタインタフェース」 (ページ 9-3)

• 「AXI マスタインタフェースでの転送」 (ページ 9-7)

• 「AXI スレーブインタフェース」 (ページ 9-20)

• 「AXI スレーブアクセスの可能 / 不可能」 (ページ 9-23)

• 「AXI スレーブインタフェースを使用した RAM へのアクセス」 (ページ 9-24)

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 9-1ID013111 Non-Confidential

Page 235: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

レベル2 インタフェース

9.1 レベル 2 インタフェースについて

こ こでは、 プロセッサのレベル 2 インタフェースについて説明します。 レベル 2 インタフェースは、 AXI マスタおよび AXI スレーブインタフェースによ り構成されます。

プロセッサは、 アドバンス ト マイ ク ロコン ト ローラバス アーキテクチャ (AMBA) AXI プロ ト コルを使用して、 よ り大きなチップを構築するよ うに設計されています。レベル 2 インタフェースは、 プロセッサから メモ リおよびペリ フェラルデバイスへのインタフェース と して使用されます。

外部 AXI マスタおよびプロセッサは、 AXI スレーブインタフェースを使用して、 プロセッサの RAM にアクセスできます。 AXI スレーブインタフェースは、 TCM への DMAアクセスや、 TCM およびキャッシュ RAM のソフ ト ウェアテス トに使用できます。

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 9-2ID013111 Non-Confidential

Page 236: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

レベル2 インタフェース

9.2 AXI マスタインタフェース

プロセッサには単一の AXI マスタインタフェースが含まれ、 1 つのポートが存在し、次の目的に使用されます。

• I キャ ッシュのラインフ ィル

• D キャ ッシュのラインフ ィルと退出

• キャ ッシュ不可 (NC) ノーマルタイプ メモ リの命令フェッチ

• NC ノーマルタイプ メモ リのデータアクセス

• デバイスおよびス ト ロング リオーダ タイプのデータアクセス、 通常はペリ フェラルに対して

ポートは 64 ビッ ト幅で、 『AMBA AXI プロ ト コル仕様』 に記載されている AXI 仕様を満たしています。 AXI 仕様では、 マスタポートは内部メモ リ属性を示すため、AWUSERM および ARUSERM 信号を使用します。

マスタインタフェースは、 プロセッサと同じ周波数か、 よ り低い同期周波数で駆動できます。 詳細については、 「AXI インタフェースのクロ ッ ク」 (ページ 3-9) を参照して下さい。

また、 AXI マスタインタフェースは、 各 AXI チャネルについてパリティ ビッ ト を生成またはチェッ ク します。 これらの追加信号は、 AXI 仕様の一部ではあ り ません。詳細については、 『Cortex-R4 および Cortex-R4F インテグレーシ ョ ン マニュアル』 を参照して下さい。

注 このセクシ ョ ンでは、 AXI スレーブという用語は、 Cortex-R4 AXI マスタポートに接続されている外部システムの AXI スレーブを意味します。 これは、 Cortex-R4 AXI スレーブポート とは限り ません。

次に示すセクシ ョ ンでは、 AXI マスタインタフェースの属性について説明し、 生成されるバース トのタイプについて解説します。

• 「AXI バスアクセスの識別子」 (ページ 9-4)

• 「書き込み応答」 (ページ 9-4)

• 「ラ インフ ィルバッファ と AXI マスタインタフェース」 (ページ 9-4)

• 「退出バッファ」 (ページ 9-5)

• 「メモ リ属性」 (ページ 9-5)

AXI マスタインタフェースの属性を、 表 9-1 に示します。

表 9-1 AXI マスタインタフェースの属性

属性 値 コ メン ト

書き込み発行機能 4 退出、 単一の書き込み、 または書き込みバース トである、 4 つの未解決の

書き込みで構成されます。a

読み出し発行機能 7 データ側の 5 つのラインフ ィル、 データ側の 1 つの NC 読み出し、 および

命令側の 1 つの読み出し (NC またはラインフ ィル) で構成されます。

統合発行機能 11a -

書き込み ID 機能 2 -

書き込みインターリーブ機能 1 AXI マスタインタフェースは、 すべての書き込みデータを正しい順序で

提示します。

読み出し ID 機能 7 データ側の 5 つのラインフ ィル、 データ側の 1 つの NC 読み出し、 および

命令側の 1 つの読み出し (NC またはラインフ ィル) で構成されます。

a. 未解決の書き込みト ランザクシ ョ ンが 3 つ存在する場合、 4 つ目についてはデータのみが発行されます。 未解決の書

き込みアドレスは 3 つだけ発行されます。

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 9-3ID013111 Non-Confidential

Page 237: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

レベル2 インタフェース

9.2.1 AXI バスアクセスの識別子

AXI バス上のアクセスでは、 ID 値が次のよ うに使用されます。

異なる ID に対する未解決の読み出し / 書き込みアクセス

これは、 例えばキャ ッシュ不可 (NC) 読み出し と ラ インフ ィルは、 それらの ID が異なっていれば、 AXI バス上で同時に未解決となる可能性があるこ とを示しています。

同時に、 次のものも存在可能です。

• 大 7 つの未解決の読み出しで、 それぞれの ID 値が異なっており、 以下のもので構成される。

— データ側の読み出し NC アクセス、 RID0

— 命令側の読み出し NC アクセス、 または命令側のキャ ッシュ可能読み出しアクセス、 RID1

— AXI バス上の、 5 つの未解決のデータ側ラインフ ィル、 RID3~ RID7

• 大 2 つの ID を持つ未解決の書き込みで、 以下のもので構成される。

— 単一またはバース トの NC 書き込みまたはライ ト スルー (WT)書き込み、 WID0

— 退出、 WID1

同じ ID を持つ未解決の書き込みアクセス

初の書き込みのアドレスとデータの両方が AXI バスに出力されてから、アドレスまたはデータチャネルが解放されたとき、 同じ ID を持つ別の書き込み要求を送信できます。 例えば、 ターゲッ トが 初の書き込みのデータを受け付ける前に、 新しいアドレスを同じ ID で送信できます。

注 • AXI マスタは、 同じ ID を持つ 2 つの未解決の読み出しアクセスを生成しません。

• AXI マスタは、 バース トに異なる ID が含まれている場合でも、 2 つの異なるバース トに含まれる書き込みデータをインターリーブしません。

9.2.2 書き込み応答

AXI マスタは、 スレーブが書き込みのデータ とアドレスの両方を受信するまで、 スレーブが書き込み応答を返さないこ とを要求します。

9.2.3 ラインフ ィルバッファ と AXI マスタインタフェース

データ側には、 2 つのラインフ ィルバッファ (LFB)、 LFB0 と LFB1 が存在します。データキャ ッシュ コン ト ローラまたはス ト アバッファ (STB) からの各要求は、 LFB0または LFB1 に割り当てるこ とができます。

命令側には LFB が 1 つ存在します。 これは命令 LFB (ILFB) で、 命令ラインフ ィル要求と、 キャ ッシュ不可の命令読み出しが同じ方法で扱われます。

ラ インフ ィルバッファは次の動作を行います。

• ラ インフ ィル要求に対して AXI バスから返されたデータを取得する。

• キャ ッシュ不可の LDR または LDM について、 AXI バスから返されたデータを取得する。

• STB からデータを取得し、 AXI バス上でバース ト書き込みする (LFB0 およびLFB1 のみ)。

単一書き込みでは LFB は使用されません。

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 9-4ID013111 Non-Confidential

Page 238: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

レベル2 インタフェース

LFB は 256 ビッ ト幅なので、 1 サイクルでキャ ッシュライン全体をキャ ッシュ RAMに書き込むこ とができます。 LFB がレベル 2 メモ リからフ ィルされる と き、 LFB のバイ ト を STB からの書き込みデータ と結合できます。

9.2.4 退出バッファ

ラ インフ ィルが要求される と、 選択された退出キャ ッシュラインが退出バッファ(EVB) にロード されます。 EVB は、 AXI バスが使用可能であれば、 この情報を AXIバスに転送します。

EVB は、 256 ビッ トのデータ と 32 ビッ トのアドレスで構成されます。 生成されるAXI ト ランザクシ ョ ンの詳細については、 「キャ ッシュラインのライ トバッ ク (退出)」 (ページ 9-13) を参照して下さい。

プロセッサにキャ ッシュ RAM が実装されない場合は、 EVB も取り除かれます。

9.2.5 メモリ属性

Cortex-R4 AXI マスタインタフェースは、 MPU によって返される転送のメモ リ属性を示すため、 ARCACHEM、 AWCACHEM、 ARUSERM、 AWUSERM 信号を使用します。 マスタインタフェースの ARCACHEM および AWCACHEM 信号で使用されるエンコードを、 表 9-2 に示します。 これらは、 メモ リ タイプおよび外部領域の属性から生成されます。

マスタインタフェースで ARUSERM および AWUSERM 信号に使用されるエンコードを、 表 9-3 に示します。 これらは、 メモ リ タイプおよび内部領域の属性から生成されます。

表 9-2 ARCACHEM と AWCACHEM のエンコード

エンコード a

a. この表に示されていないエンコードはすべて予約されています。

意味

b0000 ス ト ロング リオーダ

b0001 デバイス

b0011 キャ ッシュ不可

b0110 キャ ッシュ可能、 ライ ト スルー、 読み出し時のみ割り当て

b0111 キャ ッシュ可能、 ライ トバッ ク、 読み出し時のみ割り当て

b1111 キャ ッシュ可能、 ライ トバッ ク、 読み出し / 書き込み時に割り当て

表 9-3 ARUSERM と AWUSERM のエンコード

エンコード a

a. この表に示されていないエンコードはすべて予約されています。

意味

b00001 ス ト ロング リオーダ

b00010 デバイス、 非共有

b00011 デバイス、 共有

b00110 キャ ッシュ不可、 非共有

b00111 キャ ッシュ不可、 共有

b01100 キャ ッシュ可能、 ライ ト スルー、 読み出し時のみ割り当て、 非共有

b01101 キャ ッシュ可能、 ライ ト スルー、 読み出し時のみ割り当て、 共有

b11110 キャ ッシュ可能、 ライ トバッ ク、 読み出し / 書き込み時に割り当て、 非共有

b11111 キャ ッシュ可能、 ライ トバッ ク、 読み出し / 書き込み時に割り当て、 共有

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 9-5ID013111 Non-Confidential

Page 239: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

レベル2 インタフェース

AXI アクセスにおけるメモリシステムの意味

アクセス対象となる メモ リの属性は、 AXI アクセスに影響を及ぼします。 レベル 1メモ リ システムは、 次のいずれかにマーク されている任意のノーマルメモ リ アドレスをキャ ッシュできます。

• キャ ッシュ可能、 ライ トバッ ク、 読み出し / 書き込み時に割り当て、 非共有

• キャ ッシュ可能、 ライ ト スルー、 読み出し時のみ割り当て、 非共有

ただし、 デバイスおよびス ト ロング リオーダ メモ リは常にキャ ッシュ不可です。 また、 デバイスまたはス ト ロング リオーダ メモ リへのアンアラインドアクセスは常にアライ メン ト フォールト を生成し、 AXI 転送は行われません。 つま り、 本章で示されているアクセス例では、 デバイスまたはス ト ロング リオーダ メモ リに対してアンアラインドアクセス となるものは存在しません。

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 9-6ID013111 Non-Confidential

Page 240: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

レベル2 インタフェース

9.3 AXI マスタインタフェースでの転送

プロセッサは AXI 仕様に準拠していますが、 仕様で許可されているすべての AXI 転送タイプを生成するわけではあ り ません。 こ こでは、 Cortex-R4 の AXI マスタによって生成されない AXI 転送タイプについて説明します。 Cortex-R4 プロセッサに対してのみ動作する AXI スレーブを設計する場合、 システム内に他の AXI マスタが存在しなければ、 これらの制限と、 前述のインタフェース属性を利用して、 スレーブを簡素化できます。

このセクシ ョ ンには、 プロセッサが生成する AXI バース ト タイプのいくつかを示す表も含まれています。 ただし、 特定のタイプのト ランザクシ ョ ンがここに示されていなくても、 プロセッサがそのタイプのト ランザクシ ョ ンを生成しないとは限り ません。

注 Cortex-R4 の AXI マスタポートに接続されている AXI スレーブデバイスは、 AXI 仕様で許可されているすべての種類のト ランザクシ ョ ンを処理する能力が必要です。ただし、 生成されないと本章で明確に言明されているものは除外されます。 本章で例と して示されている表の記載から、 それ以外の制限を想定しないで下さい。 こ こで説明されている制限は、 プロセッサの r1p0、 r1p1、 r1p2 リ ビジ ョ ンに適用されますが、 将来のリ ビジ ョ ンにも適用される とは限り ません。

キャ ッシュ不可メモ リに対してのロード / ス ト ア命令では、 データが内部のス ト アデータ バッファから取得される、 またはバッファに結合される可能性があるため、AXI 転送が行われる とは限り ません。 この規則の例外と して、 ス ト ロング リオーダまたはデバイス メモ リに対してのロード / ス ト アが挙げられます。 これらは必ず AXI転送を引き起こします。 「ス ト ロング リオーダおよびデバイスの ト ランザクシ ョ ン」 (ページ 9-8) を参照して下さい。

Cortex-R4 の AXI マスタインタフェースが生成する転送タイプについての制限を、「AXI 転送の制限」 (ページ 9-8) に示します。 AXI マスタポートは、 バッファ リ ングされた書き込み応答および読み出しデータチャネルの準備完了信号である、BREADYM および RREADYM をアサート解除するこ とはあ り ません。 AXI のハンドシェーク信号について、 これらが 『AMBA AXI プロ ト コル仕様』 に準拠している という こ とを除いて、 他のいっさいの想定を行う こ とはできません。

次に示すセクシ ョ ンでは、 AXI マスタインタフェースによって生成される転送の例を示します。

• 「ス ト ロング リオーダおよびデバイスの ト ランザクシ ョ ン」 (ページ 9-8)

• 「ラ インフ ィル」 (ページ 9-13)

• 「キャ ッシュラインのライ トバッ ク (退出)」 (ページ 9-13)

• 「キャ ッシュ不可の読み出し」 (ページ 9-13)

• 「キャ ッシュ不可またはライ ト スルーの書き込み」 (ページ 9-15)

• 「AXI ト ランザクシ ョ ンの分割」 (ページ 9-16)

• 「ノーマル書き込みの結合」 (ページ 9-17)

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 9-7ID013111 Non-Confidential

Page 241: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

レベル2 インタフェース

9.3.1 AXI 転送の制限

Cortex-R4 の AXI マスタインタフェースが生成する AXI ト ランザクシ ョ ンには、 次の制限が適用されます。

• 32 バイ ト を超えるバース ト転送は存在しません。

• バース ト長は 大 8 転送です。

• ト ランザクシ ョ ンがメモ リの 32 バイ ト境界にまたがるこ とはあ り ません。「AXI ト ランザクシ ョ ンの分割」 (ページ 9-16) を参照して下さい。

• FIXED バース トは使用されません。

• 書き込みアドレスチャネルは常に INCR タイプのバース ト を発行し、 WRAP やFIXED を発行するこ とはあ り ません。

• WRAP タイプの読み出しバース トについては、 次の規則が適用されます。 「ラインフ ィル」 (ページ 9-13) を参照して下さい。

— キャ ッシュ可能なノーマルの非共有メモ リのラインフ ィル (読み出し) にのみ使用される

— サイズは必ず 64 ビッ トで、 長さは 4 転送である。

— 開始アドレスは必ず 64 ビッ ト アラインドである。

• 転送サイズが 8 ビッ ト または 16 ビッ トの場合、 バース ト長は必ず 1 転送である

• 転送サイズは 64 ビッ ト を超えない。 これは、 AXI バスが 64 ビッ トであるためです。

• 命令フェッチ (ARPROT[2] で識別される) の転送サイズは必ず 64 ビッ トで、ロ ッ クまたは排他は使用されない。

• デバイスおよびス ト ロング リオーダメモ リへの ト ランザクシ ョ ンは常に、 転送サイズに応じてアラインしたアドレスに対して行われる。 「ス ト ロング リオーダおよびデバイスの ト ランザクシ ョ ン」 を参照して下さい。

• 排他およびロ ッ クアクセスは常に、 転送サイズに応じてアラインしたアドレスに対して行われる。

• 書き込みデータは決してインターリーブされない。

• 前述の内容に加えて、 AXI マスタインタフェースが使用する ID 値には各種の制限が存在します。 「AXI バスアクセスの識別子」 (ページ 9-4) を参照して下さい。

9.3.2 スト ロングリオーダおよびデバイスのト ランザクシ ョ ン

ス ト ロング リオーダまたはデバイス メモ リ との間でのロード / ス ト ア命令では、 命令によって示されるものと同じサイズの AXI ト ランザクシ ョ ンが必ず生成されます。ス ト ロング リオーダまたはデバイス メモ リに対して、 LDM、 STM、 LDRD、 STRD 命令を使用して行われるアクセスは、 すべて 32 ビッ トの転送と して行われます。

LDRB

ス ト ロング リオーダまたはデバイス メモ リに対して行われるキャ ッシュ不可の LDRB

について、 バイ ト 0 ~ 7 に対する ARADDRM、 ARBURSTM、 ARSIZEM、ARLENM の値を、 表 9-4 に示します。

表 9-4 キャッシュ不可の LDRB

アドレス [2:0] ARADDRM ARBURSTM ARSIZEM ARLENM

0x0 (バイ ト 0) 0x00 Incr 8 ビッ ト 1 つのデータ転送

0x1 (バイ ト 1) 0x01 Incr 8 ビッ ト 1 つのデータ転送

0x2 (バイ ト 2) 0x02 Incr 8 ビッ ト 1 つのデータ転送

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 9-8ID013111 Non-Confidential

Page 242: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

レベル2 インタフェース

LDRH

ス ト ロング リオーダまたはデバイス メモ リに対して行われるキャ ッシュ不可の LDRH

について、 ハーフワード 0 ~ 3 に対する ARADDRM、 ARBURSTM、 ARSIZEM、ARLENM の値を、 表 9-5 に示します。

注 ス ト ロング リオーダまたはデバイス メモ リのアドレス 0x1、 0x3、 0x5、 0x7 からハーフワードをロードする と、 アライ メン ト フォールトが生成されます。

1 つのレジスタを転送する LDR または LDM

ス ト ロング リオーダまたはデバイス メモ リに対する、 キャ ッシュ不可の LDR、 または1 つのレジスタを転送する LDM (LDM1) について、 ARADDRM、 ARBURSTM、ARSIZEM、 ARLENM の値を、 表 9-6 に示します。

注 ス ト ロング リオーダまたはデバイス メモ リのアドレス 0x1、 0x2、 0x3、 0x5、 0x6、 0x7 からワードをロードする と、 アライ メン ト フォールトが生成されます。

0x3 (バイ ト 3) 0x03 Incr 8 ビッ ト 1 つのデータ転送

0x4 (バイ ト 4) 0x04 Incr 8 ビッ ト 1 つのデータ転送

0x5 (バイ ト 5) 0x05 Incr 8 ビッ ト 1 つのデータ転送

0x6 (バイ ト 6) 0x06 Incr 8 ビッ ト 1 つのデータ転送

0x7 (バイ ト 7) 0x07 Incr 8 ビッ ト 1 つのデータ転送

表 9-5 ストロングリオーダまたはデバイスメモリからの LDRH

アドレス [3:0] ARADDRM ARBURSTM ARSIZEM ARLENM

0x0 (ハーフワード 0) 0x00 Incr 16 ビッ ト 1 つのデータ転送

0x2 (ハーフワード 1) 0x02 Incr 16 ビッ ト 1 つのデータ転送

0x4 (ハーフワード 2) 0x04 Incr 16 ビッ ト 1 つのデータ転送

0x6 (ハーフワード 3) 0x06 Incr 16 ビッ ト 1 つのデータ転送

表 9-6 ストロングリオーダまたはデバイスメモリからの LDR または LDM1

アドレス [2:0] ARADDRM ARBURSTM ARSIZEM ARLENM

0x0 (ワード 0) 0x00 Incr 32 ビッ ト 1 つのデータ転送

0x4 (ワード 1) 0x04 Incr 32 ビッ ト 1 つのデータ転送

表 9-4 キャッシュ不可の LDRB (続き)

アドレス [2:0] ARADDRM ARBURSTM ARSIZEM ARLENM

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 9-9ID013111 Non-Confidential

Page 243: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

レベル2 インタフェース

5 つのレジスタを転送する LDM

ス ト ロング リオーダまたはデバイス メモ リから 5 つのレジスタを転送する、 キャ ッシュ不可の LDM (LDM5) について、 ARADDRM、 ARBURSTM、 ARSIZEM、 ARLENMの値を、 表 9-7 に示します。

注 アドレス 0x1、 0x2、 0x3、 0x5、 0x6、 0x7、 0x9、 0xA、 0xB、 0xD、 0xE、 0xF からの複数ロードは、 アライ メン ト フォールト を生成します。

表 9-7 ストロングリオーダまたはデバイスメモリからの LDM5

アドレス [4:0] ARADDRM ARBURSTM ARSIZEM ARLENM

0x00 (ワード 0) 0x00 Incr 32 ビッ ト 5 つのデータ転送

0x04 (ワード 1) 0x04 Incr 32 ビッ ト 5 つのデータ転送

0x08 (ワード 2) 0x08 Incr 32 ビッ ト 5 つのデータ転送

0x0C (ワード 3) 0x0C Incr 32 ビッ ト 5 つのデータ転送

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 9-10ID013111 Non-Confidential

Page 244: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

レベル2 インタフェース

STRB

AXI マスタポート経由でのス ト ロング リオーダまたはデバイス メモリへの STRB について、 AWADDRM、 AWBURSTM、 AWSIZEM、 AWLENM の値を、 表 9-8 に示します。

STRH

AXI マスタポート経由での、 ス ト ロング リオーダまたはデバイス メモ リへの STRH について、 AWADDRM、 AWBURSTM、 AWSIZEM、 AWLENM の値を、 表 9-9 に示します。

注 ス ト ロング リオーダまたはデバイス メモ リのアドレス 0x1、 0x3、 0x5、 0x7 へハーフワードをス ト アする と、 アラ イ メン ト フォールトが生成されます。

表 9-8 ストロングリオーダまたはデバイスメモリへの STRB

アドレス [4:0] AWADDRM AWBURSTM AWSIZEM AWLENM WSTRBM

0x00 (バイ ト 0) 0x00 Incr 8 ビッ ト 1 つのデータ転送 b00000001

0x01 (バイ ト 1) 0x01 Incr 8 ビッ ト 1 つのデータ転送 b00000010

0x02 (バイ ト 2) 0x02 Incr 8 ビッ ト 1 つのデータ転送 b00000100

0x03 (バイ ト 3) 0x03 Incr 8 ビッ ト 1 つのデータ転送 b00001000

0x04 (バイ ト 4) 0x04 Incr 8 ビッ ト 1 つのデータ転送 b00010000

0x05 (バイ ト 5) 0x05 Incr 8 ビッ ト 1 つのデータ転送 b00100000

0x06 (バイ ト 6) 0x06 Incr 8 ビッ ト 1 つのデータ転送 b01000000

0x07 (バイ ト 7) 0x07 Incr 8 ビッ ト 1 つのデータ転送 b10000000

表 9-9 ストロングリオーダまたはデバイスメモリへの STRH

アドレス [2:0] AWADDRM AWBURSTM AWSIZEM AWLENM WSTRBM

0x0 (ハーフワード 0) 0x00 Incr 16 ビッ ト 1 つのデータ転送 b00000011

0x2 (ハーフワード 1) 0x02 Incr 16 ビッ ト 1 つのデータ転送 b00001100

0x4 (ハーフワード 2) 0x04 Incr 16 ビッ ト 1 つのデータ転送 b00110000

0x6 (ハーフワード 3) 0x06 Incr 16 ビッ ト 1 つのデータ転送 b11000000

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 9-11ID013111 Non-Confidential

Page 245: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

レベル2 インタフェース

1 つのレジスタの STR または STM

AXI マスタポート経由でのス ト ロング リオーダまたはデバイス メモ リへの STR、 または 1 つのレジスタを転送する STM (STM1) における、 AWADDRM、 AWBURSTM、AWSIZEM、 AWLENM の値を、 表 9-10 に示します。

注 ス ト ロング リオーダまたはデバイス メモ リのアドレス 0x1、 0x2、 0x3、 0x5、 0x6、 0x7 へワードをス ト アする と、 アラ イ メン ト フォールトが生成されます。

7 つのレジスタの STM

AXI マスタポート経由で、 ス ト ロング リオーダまたはデバイス メモ リへ 7 つのレジスタを書き込む STM (STM7) について、 AWADDRM、 AWBURSTM、 AWSIZEM、AWLENM の値を、 表 9-11 に示します。

注 アドレス 0x1、 0x2、 0x3、 0x5、 0x6、 0x7 へ複数ス ト アを行う と、 アラ イ メン ト フォールトが生成されます。

表 9-10 ストロングリオーダまたはデバイスメモリへの STR または STM1

アドレス [2:0] AWADDRM AWBURSTM AWSIZEM AWLENM WSTRBM

0x0 (ワード 0) 0x00 Incr 32 ビッ ト 1 つのデータ転送 b00001111

0x4 (ワード 1) 0x04 Incr 32 ビッ ト 1 つのデータ転送 b11110000

表 9-11 ストロングリオーダまたはデバイスメモリのワード 0 または 1 への STM7

アドレス [4:0] AWADDRM AWBURSTM AWSIZEM AWLENM 初のWSTRBM

0x00 (ワード 0) 0x00 Incr 32 ビッ ト 7 つのデータ転送 b00001111

0x04 (ワード 1) 0x04 Incr 32 ビッ ト 7 つのデータ転送 b11110000

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 9-12ID013111 Non-Confidential

Page 246: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

レベル2 インタフェース

9.3.3 ラインフ ィル

ノーマルのキャ ッシュ可能メモ リからのロードおよび命令フェッチがキャ ッシュにヒ ッ ト しない場合、 対応するキャ ッシュが稼働していれば、 キャ ッシュのラインフ ィルが生成されます。 キャ ッシュのラインフ ィルについて、 ARADDRM、ARBURSTM、 ARSIZEM、 ARLENM の値を、 表 9-12 に示します。

9.3.4 キャッシュラインのライ トバック (退出)

有効なダーティ キャ ッシュラインが D キャ ッシュから退出する と きは、 データのライ トバッ クを行う必要があ り ます。 AXI マスタインタフェース経由でキャ ッシュラインのライ トバッ クを行う と きの AWADDRM、 AWBURSTM、 AWSIZEM、AWLENM の値を、 表 9-13 に示します。

9.3.5 キャッシュ不可の読み出し

キャ ッシュ不可のノーマルメモ リにアクセスするロード命令は、 AXI バース ト を引き起こしますが、 このバース トのサイズや長さは、 命令が示すものと同じ とは限りません。 また、 読み出されるデータがス ト アバッファに含まれている場合、 命令によ り AXI 読み出し ト ランザクシ ョ ン自体が生成されないこ と もあ り ます。

このセクシ ョ ンの表では、 各種のロード命令がキャ ッシュ不可のノーマルメモ リのさまざまなアドレスにアクセスする と きに発生する可能性がある、 AXI ト ランザクシ ョ ンのタイプの例を示します。 これらの表に示すのは例であって、 AXI ト ランザクシ ョ ンの完全な説明ではあ り ません。 プロセッサの状態やアクセスのタイ ミ ングによって、 実際に生成されるバース トのサイズや長さは、 同じ命令に対してでも、こ こに示されている例とは異なる場合があ り ます。

キャッシュ不可のノーマルメモリに対しての LDRH について、 バイ ト 0 ~ 7 に対するARADDRM、 ARBURSTM、 ARSIZEM、 ARLENM の可能な値を、 表 9-14 に示します。

表 9-12 AXI インタフェースでのラインフ ィルの動作

アドレス [4:0]a

a. これらは、 ラインフ ィルを引き起こしたアクセスのアドレスの下位 5 ビッ ト 、

すなわち重要ワードのアドレスです。

ARADDRM ARBURSTM ARSIZEM ARLENM

0x00 ~ 0x07 0x00 Wrap 64 ビッ ト 4 つのデータ転送

0x08 ~ 0x0F 0x08 Wrap 64 ビッ ト 4 つのデータ転送

0x10 ~ 0x17 0x10 Wrap 64 ビッ ト 4 つのデータ転送

0x18 ~ 0x1F 0x18 Wrap 64 ビッ ト 4 つのデータ転送

表 9-13 キャッシュラインのライ トバック

AWADDRM[4:0] AWBURSTM AWSIZEM AWLENM

0x00 Incr 64 ビッ ト 4 つのデータ転送

表 9-14 キャッシュ不可のノーマルメモリからの LDRH

アドレス [2:0] ARADDRM ARBURSTM ARSIZEM ARLENM

0x0 (バイ ト 0) 0x00 Incr 16 ビッ ト 1 つのデータ転送

0x1 (バイ ト 1) 0x00 Incr 32 ビッ ト 1 つのデータ転送

0x2 (バイ ト 2) 0x00 Incr 64 ビッ ト 1 つのデータ転送

0x3 (バイ ト 3) 0x03 Incr 32 ビッ ト 2 つのデータ転送

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 9-13ID013111 Non-Confidential

Page 247: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

レベル2 インタフェース

キャッシュ不可の LDR、 または 1 つのレジスタを転送する LDM (LDM1) について、ARADDRM、 ARBURSTM、 ARSIZEM、 ARLENM の可能な値を、 表 9-15 に示します。

5 つのレジスタを転送する、 キャ ッシュ不可の LDM (LDM5) について、 ARADDRM、ARBURSTM、 ARSIZEM、 ARLENM の可能な値を、 表 9-16 に示します。

0x4 (バイ ト 4) 0x04 Incr 16 ビッ ト 1 つのデータ転送

0x5 (バイ ト 5) 0x04 Incr 32 ビッ ト 1 つのデータ転送

0x6 (バイ ト 6) 0x06 Incr 16 ビッ ト 1 つのデータ転送

0x7 (バイ ト 7) 0x07 Incr 32 ビッ ト 2 つのデータ転送

表 9-15 キャッシュ不可のノーマルメモリからの LDR または LDM1

アドレス [2:0] ARADDRM ARBURSTM ARSIZEM ARLENM

0x0 (バイ ト 0) (ワード 0) 0x00 Incr 32 ビッ ト 1 つのデータ転送

0x1 (バイ ト 1) 0x01 Incr 64 ビッ ト 1 つのデータ転送

0x2 (バイ ト 2) 0x00 Incr 64 ビッ ト 1 つのデータ転送

0x3 (バイ ト 3) 0x00 Incr 64 ビッ ト 2 つのデータ転送

0x4 (バイ ト 4) (ワード 1) 0x04 Incr 32 ビッ ト 1 つのデータ転送

0x5 (バイ ト 5) 0x05 Incr 32 ビッ ト 2 つのデータ転送

0x6 (バイ ト 6) 0x06 Incr 16 ビッ ト 1 つのデータ転送

0x08 Incr 16 ビッ ト 1 つのデータ転送

0x7 (バイ ト 7) 0x04 Incr 32 ビッ ト 2 つのデータ転送

表 9-16 キャッシュ不可のノーマルメモリまたはキャッシュが非稼働な場合の LDM5

アドレス [4:0] ARADDRM ARBURSTM ARSIZEM ARLENM

0x00 (ワード 0) 0x00 Incr 64 ビッ ト 3 つのデータ転送

0x04 (ワード 1) 0x04 Incr 64 ビッ ト 3 つのデータ転送

0x08 (ワード 2) 0x08 Incr 64 ビッ ト 3 つのデータ転送

0x0C (ワード 3) 0x0C Incr 64 ビッ ト 3 つのデータ転送

0x10 (ワード 4) 0x10 Incr 64 ビッ ト 2 つのデータ転送

0x00 Incr 32 ビッ ト 1 つのデータ転送

0x14 (ワード 5) 0x14 Incr 64 ビッ ト 2 つのデータ転送

0x00 Incr 64 ビッ ト 1 つのデータ転送

0x18 (ワード 6) 0x18 Incr 64 ビッ ト 1 つのデータ転送

0x00 Incr 64 ビッ ト 2 つのデータ転送

0x1C (ワード 7) 0x1C Incr 32 ビッ ト 1 つのデータ転送

0x00 Incr 64 ビッ ト 2 つのデータ転送

表 9-14 キャッシュ不可のノーマルメモリからの LDRH (続き)

アドレス [2:0] ARADDRM ARBURSTM ARSIZEM ARLENM

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 9-14ID013111 Non-Confidential

Page 248: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

レベル2 インタフェース

9.3.6 キャッシュ不可またはライ トスルーの書き込み

キャ ッシュ不可またはライ ト スルーのノーマルメモ リへのス ト ア命令は、 AXI バース ト を生成しますが、 このバース トのサイズや長さは、 命令が示すものと同じ とは限り ません。 AXI マスタポートは、 命令によって書き込まれたバイ トのみが更新されるこ とを保証するため、 バイ ト レーン ス ト ローブ (WSTRBM[7:0]) をアサート します。

このセクシ ョ ンの表では、 各種のス ト ア命令がキャ ッシュ不可のノーマルメモ リのさまざまなアドレスにアクセスする と きに発生する可能性がある、 AXI ト ランザクシ ョ ンのタイプの例を示します。 これらの表に示すのは例であって、 AXI ト ランザクシ ョ ンの完全な説明ではあ り ません。 プロセッサの状態やアクセスのタイ ミ ングによって、 実際に生成されるバース トのサイズや長さは、 同じ命令に対してでも、こ こに示されている例とは異なる場合があ り ます。

また、 ノーマルメモ リへの書き込み操作が結合され、 よ り複雑な AXI ト ランザクシ ョ ンが作り出されるこ と もあ り ます。 例については、 「ノーマル書き込みの結合」 (ページ 9-17) を参照して下さい。

ノーマルメモ リへの STRH について、 AWADDRM、 AWBURSTM、 AWSIZEM、AWLENM の可能な値を、 表 9-17 に示します。

表 9-17 キャッシュ可能なライ トスルー、 またはキャッシュ不可のノーマルメモリへの STRH

アドレス [2:0] AWADDRM AWBURSTM AWSIZEM AWLENM WSTRBM

0x0 (バイ ト 0) 0x00 Incr 32 ビッ ト 1 つのデータ転送 b00000011

0x1 (バイ ト 1) 0x00 Incr 32 ビッ ト 1 つのデータ転送 b00000110

0x2 (バイ ト 2) 0x02 Incr 64 ビッ ト 1 つのデータ転送 b00001100

0x3 (バイ ト 3) 0x03 Incr 32 ビッ ト 2 つのデータ転送 b00001000b00010000

0x4 (バイ ト 4) 0x04 Incr 16 ビッ ト 1 つのデータ転送 b00110000

0x5 (バイ ト 5) 0x05 Incr 32 ビッ ト 1 つのデータ転送 b01100000

0x6 (バイ ト 6) 0x06 Incr 16 ビッ ト 1 つのデータ転送 b11000000

0x7 (バイ ト 7) 0x07 Incr 8 ビッ ト 1 つのデータ転送 b10000000

0x08 Incr 8 ビッ ト 1 つのデータ転送 b00000001

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 9-15ID013111 Non-Confidential

Page 249: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

レベル2 インタフェース

AXI マスタポート経由のノーマルメモ リへの STR、 または 1 つのレジスタを転送するSTM (STM1) について、 AWADDRM、 AWBURSTM、 AWSIZEM、 AWLENM の可能な値を、 表 9-18 に示します。

9.3.7 AXI ト ランザクシ ョ ンの分割

プロセッサは、 キャ ッシュラインの境界である 32 バイ ト境界にまたがるアドレスにアクセスする と き、 AXI バース ト を分割します。 1 つまたは 2 つの 32 バイ ト境界にまたがってメモ リにアクセスする命令は、 それぞれ 2 つまたは 3 つの AXI バース トを生成します。 次に示す例は、 この動作を示すものです。 これらは例であって、 AXIト ランザクシ ョ ンの完全な説明ではあ り ません。 プロセッサの状態やアクセスのタイ ミ ングによって、 実際に生成されるバース トのサイズや長さは、 同じ命令に対してでも、 こ こに示されている例とは異なる場合があ り ます。

例えば、 LDMIA R10, {R0-R5} はメモ リから 6 ワードをロード します。 この命令によって生成される AXI ト ランザクシ ョ ンの数は、 ベースアドレスである R10 の値によって異な り ます。

• 6 ワードすべてが同じキャ ッシュラインに存在する場合、 AXI ト ランザクシ ョンは 1 つだけです。 例えば、 LDMIA R10, {R0-R5} かつ R10 = 0X1008 の場合、 表 9-19に示すよ うに、 インタフェースによって 3 つの 64 ビッ ト読み出し転送のバース トが作成されます。

表 9-18 キャッシュ可能なライ トスルー、 またはキャッシュ不可のノーマルメモリへの STR または STM1

アドレス [2:0] AWADDRM AWBURSTM AWSIZEM AWLENM WSTRBM

0x0 (バイ ト 0) (ワード 0) 0x00 Incr 32 ビッ ト 1 つのデータ転送 b00001111

0x1 (バイ ト 1) 0x01 Incr 64 ビッ ト 1 つのデータ転送 b00011110

0x2 (バイ ト 2) 0x00 Incr 64 ビッ ト 1 つのデータ転送 b00111100

0x3 (バイ ト 3) 0x03 Incr 64 ビッ ト 2 つのデータ転送 b01111000b00000000

0x4 (バイ ト 4) (ワード 1) 0x04 Incr 32 ビッ ト 1 つのデータ転送 b11110000

0x5 (バイ ト 5) 0x05 Incr 32 ビッ ト 2 つのデータ転送 b11100000b00000001

0x6 (バイ ト 6) 0x06

0x08

IncrIncr

16 ビッ ト

16 ビッ ト

1 つのデータ転送

1 つのデータ転送

b11000000b00000011

0x7 (バイ ト 7) 0x04 Incr 32 ビッ ト 2 つのデータ転送 b10000000b00000111

表 9-19 6 ワードすべてが同じキャッシュラインに含まれている場合の AXI ト ランザクシ ョ ン

の分割

ARADDRM ARBURSTM ARSIZEM ARLENM

0x1008 Incr 64 ビッ ト 3 つのデータ転送

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 9-16ID013111 Non-Confidential

Page 250: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

レベル2 インタフェース

• データが 2 つのキャッシュラインにまたがる場合、 2 つの AXI ト ランザクシ ョンが発生します。 例えば、 LDMIA R10, {R0-R5} かつ R10 = 0X1010 の場合、 表 9-20 に示すよ うに、 2 つの 64 ビッ ト読み出しで構成されるバース ト と、 単一の 64 ビット読み出しで構成されるバース トが、 インタフェースによ り生成されます。

キャ ッシュ不可のノーマルメモ リに対する LDR または LDM1 がキャ ッシュラインの境界にまたがる場合の、 ARADDRM、 ARBURSTM、 ARSIZEM、 ARLENM の可能な値を、 表 9-21 に示します。

キャ ッシュ不可のノーマルメモ リに対する STRH がキャ ッシュラインの境界にまたがる場合の、 ARADDRM、 ARBURSTM、 ARSIZEM、 ARLENM の可能な値を、表 9-22 に示します。

9.3.8 ノーマル書き込みの結合

キャ ッシュ不可またはライ ト スルーのノーマルメモ リに対するス ト ア命令では、 スト アデータが内部バッファに結合され、 AXI 転送は発生しないこ と もあ り ます。

ラ イ ト スルーキャ ッシュ可能、 またはキャ ッシュ不可のノーマルメモ リについて、同じキャ ッシャラインへの書き込み要求が複数含まれている場合、 STB によって検出されます。 つま り、 AXI ポートの効率向上のため、 複数の命令からのデータを単一の書き込みバース トに組み合わせるこ とが可能です。 AXI マスタは、 単一の連続するバース ト を構成しない複数の書き込み要求を受け取った場合、 単一のバース トと して出力でき、 この場合にはデータを含まないバイ トについて WSTRBW 信号がLOW に保たれます。

ノーマルメモ リへの書き込みアクセスについて、 アドレスの依存関係が存在しなければ、 STB はアウ トオブオーダ書き込みを実行できます。 これによって、 アクセスの結合機能を 大限に活用できます。

例 9-1 (ページ 9-18) に示す命令シーケンスは、 書き込みの結合例です。

表 9-20 データが 2 つのキャッシュラインにまたがる場合の AXI ト ランザクシ ョ ンの分割

ARADDRM ARBURSTM ARSIZEM ARLENM

0x1010 Incr 64 ビッ ト 2 つのデータ転送

0x1020 Incr 64 ビッ ト 1 つのデータ転送

表 9-21 キャッシュ不可の LDR または LDM1 がキャッシュラインの境界にまたがる場合

アドレス [4:0] ARADDRM ARBURSTM ARSIZEM ARLENM

0x1D (バイ ト 29) 0x1C Incr 32 ビッ ト 1 つのデータ転送

0x00 Incr 32 ビッ ト 1 つのデータ転送

0x1E (バイ ト 30) 0x1E Incr 16 ビッ ト 1 つのデータ転送

0x00 Incr 64 ビッ ト 1 つのデータ転送

0x1F (バイ ト 31) 0x1F Incr 8 ビッ ト 1 つのデータ転送

0x00 Incr 32 ビッ ト 1 つのデータ転送

表 9-22 キャッシュ可能ライ トスルーまたはキャッシュ不可の STRH がキャッシュラインの境界にまたがる場合

アドレス [4:0] AWADDRM AWBURSTM AWSIZEM AWLENM WSTRBM

0x1F (バイ ト 31) 0x1F Incr 8 ビッ ト 1 つのデータ転送 b10000000

0x00 Incr 16 ビッ ト 1 つのデータ転送 b00000001

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 9-17ID013111 Non-Confidential

Page 251: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

レベル2 インタフェース

例 9-1 書き込みの結合

MOV r0, #0x4000STRH r1, [r0, #0x18]; Store a halfword at 0x4018STR r2, [r0, #0xC] ; Store a word at 0x400CSTMIA r0, {r4-r7} ; Store four words at 0x4000STRB r3, [r0, #0x1D]; Store a byte at 0x401D

アドレス 0x4000 のメモリがス ト ロング リオーダまたはデバイスタイプのメモリ と してマークされている場合、 表 9-23 に示されている AXI ト ランザクシ ョ ンが生成されます。

この例で、 それぞれのス ト ア命令は、 命令によって書き込まれるデータ と同じサイズの AXI バース ト を生成します。

同じ メモ リがキャ ッシュ不可のノーマル、 またはキャ ッシュ可能ライ ト スルーと してマーク されている場合に生成される ト ランザクシ ョ ンを、 表 9-24 に示します。

この例では、 次の動作が行われます。

• ス ト アバッファによ り、 STRB と STRH の書き込みが 1 つのバッファエン ト リに結合され、 単一の AXI 転送と してバース トの 4 番目に実行されます。

• 書き込みはバッファの 3 つのエン ト リ を占め、 4 つの転送で構成される単一のAXI バース トに結合されます。

• STR 命令によ り生成される書き込みは、 STM 命令によ り上書きされるため、 実行されません。

• 書き込み転送は、 プログラム上での元の順序とは異なる順序で実行されます。

表 9-24 の ト ランザクシ ョ ンは、 この動作を示したものです。 これらは例であって、AXI ト ランザクシ ョ ンの完全な説明ではあ り ません。 プロセッサの状態やアクセスのタイ ミ ングによって、 実際に生成されるバース トのサイズや長さは、 同じ命令に対してでも、 こ こに示されている例とは異なる場合があ り ます。

表 9-23 ストロングリオーダまたはデバイスタイプのメモリへの AXI ト ランザクシ ョ ン

AWADDRM AWBURSTM AWSIZEM AWLENM WSTRBM

0x4018 Incr 16 ビッ ト 1 つのデータ転送 0b00000011

0x400C Incr 32 ビッ ト 1 つのデータ転送 0b11110000

0x4000 Incr 32 ビッ ト 4 つのデータ転送 0b000011110b111100000b000011110b11110000

0x401D Incr 8 ビッ ト 1 つのデータ転送 0b00100000

表 9-24 キャッシュ不可ノーマルまたはキャッシュ可能ライ トスルーのメモリに対しての AXIト ランザクシ ョ ン

AWADDRM AWBURSTM AWSIZEM AWLENM WSTRBM

0x4000 Incr 64 ビッ ト 4 つのデータ転送 0b111111110b111111110b000000000b00100011

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 9-18ID013111 Non-Confidential

Page 252: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

レベル2 インタフェース

同じ メモ リがライ トバッ ク キャ ッシュ可能と してマーク されており、 アドレスがキャ ッシュラインに割り当てられている場合、 そのキャ ッシュラインが退出し、 ライ トバッ ク ト ランザクシ ョ ンが実行されるまで、 AXI 書き込みト ランザクシ ョ ンは発生しません。 「キャ ッシュラインのライ トバッ ク (退出)」 (ページ 9-13) を参照して下さい。

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 9-19ID013111 Non-Confidential

Page 253: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

レベル2 インタフェース

9.4 AXI スレーブインタフェース

プロセッサには単一の AXI スレーブインタフェースが存在し、 ポートが 1 つ含まれています。 このポートは 64 ビッ ト幅で、 『AMBA AXI プロ ト コル仕様』 に記載されている AXI 仕様を満たしています。 AXI 仕様では、 スレーブポートは AWUSERS とARUSERS のそれぞれを、 4 つの独立したチップセレク ト入力信号と して使用し、 次のものへのアクセスを可能にします。

• BTCM

• ATCM

• 命令キャ ッシュ RAM

• データキャ ッシュ RAM

外部 AXI システムは、 チップセレク ト信号を生成する必要があ り ます。 スレーブインタフェースは、 要求された RAM へのアクセスをルーティングします。

また、 AXI スレーブインタフェースは、 各 AXI チャネルについてパリティ ビッ ト を生成またはチェッ ク します。 これらの追加信号は、 AXI 仕様の一部ではあ り ません。詳細については、 『Cortex-R4 および Cortex-R4F インテグレーシ ョ ン マニュアル』 を参照して下さい。

スレーブインタフェースは、 プロセッサと同じ周波数、 またはよ り低い同期周波数で駆動できます。 詳細については、 「AXI インタフェースのクロ ッ ク」 (ページ 3-9)を参照して下さい。 非同期クロ ッ クが必要な場合、 外部の非同期 AXI レジスタスライスが必要です。

AXI スレーブは、 TCM へのアクセスを提供し、 TCM へのアクセスについて LSU および PFU と競合します。 通常は、 LSU および PFU が AXI スレーブよ り も優先度が高くな り ます。

2 つの BTCM ポートが使用されている場合、 それらのポートがアドレスマップでインターリーブするよ うに構成できます。 これによって、 AXI スレーブがアクセスの初のサイクルで BTCM へのアクセスを拒否された場合、 LSU が別のポート を使用

する 2 番目のサイクルでアクセスを実行でき、 双方がシーケンシャルにデータアクセスする場合は、 LSU と ロ ッ ク - ステップでアクセスを続行できます。 ATCM へのアクセスでは、 インタフェースにポートが 1 つしかないため、 競合が発生する可能性はよ り高くな り ます。

メモリ BIST ポートは、 RAM へのアクセスのため、 AXI スレーブインタフェース ロジッ ク経由でルーティングされます。 メモリ BIST のアクセスは、 他のアクセスが行われていないときにのみ発生するこ とが想定されており、 も優先度が高くなり ます。

9.4.1 キャッシュ RAM への AXI スレーブインタフェース

AXI スレーブを使用して、 動作モードのキャッシュ RAM をソフ ト ウェアでテス トできます。 AXI スレーブが RAM にアクセス可能なとき、 プロセッサはキャッシュをキャッシュオフと見なすため、 命令およびデータ要求は AXI スレーブ要求と相互動作できません。 AXI スレーブ要求が、 キャッシュ RAM にアクセスします。 命令およびデータ要求はキャッシュ不可と見なされ、 キャッシュのルッ クアップを実行しません。

AXI スレーブインタフェースは、 それぞれのキャッシュ RAM に個別にアクセスします。

命令キャ ッシュ側では、 AXI スレーブは次の RAM にアクセスできます。

• データキャ ッシュ RAM、 データおよびパリティ または ECC コードビッ ト

• タグ RAM、 タグおよびパリ ティ または ECC コードビッ ト

データキャ ッシュ側では、 AXI スレーブは次の RAM にアクセスできます。

• データキャ ッシュ RAM、 データおよびパリティ または ECC コードビッ ト

• タグ RAM、 タグおよびパリ ティ または ECC コードビッ ト

• ダーティ RAM、 ダーティビッ ト と属性、 および ECC コードビッ ト

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 9-20ID013111 Non-Confidential

Page 254: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

レベル2 インタフェース

2 つのアドレスビッ ト と 4 つのウェイアドレス ビッ トの単純なデコードによ り、キャ ッシュ内のどのデータ、 タグ、 ダーティ RAM がアクセスされるかが決定されます。 AXI アクセスについて、 存在しないキャ ッシュ RAM が指定された場合、SLVERR エラー応答が返されます。

9.4.2 TCM のパリテ ィ と ECC のサポート

TCM は、 「TCM の内部エラーの検出と訂正」 (ページ 8-14) で説明されているよ うに、 パリ テ ィ または ECC をサポートできます。 AXI スレーブに対して書き込みト ランザクシ ョ ンが発行される と、 スレーブインタフェースは要求されたパリティ または ECC ビッ ト を計算し、 TCM に格納します。 ECC 方式では、 書き込みデータ幅がECC のチャンクサイズよ り も小さい場合、 AXI スレーブが読み出し - 変更 - 書き込みシーケンスを実行する必要があ り ます。

AXI スレーブに対して読み出し ト ランザクシ ョ ンが発行される と、 スレーブインタフェースはパリティ または ECC ビッ ト を読み出し、 該当する TCM についてエラーチェッ クが可能になっていれば、 データにエラーがないかど うかをチェッ ク します。インタフェースが訂正可能なエラーを検出する と、 インラインで訂正を行い、 正しいデータを AXI バスに戻します。 TCM のデータを訂正のため更新する動作は行われません。 インタフェースが訂正不能なエラーを検出する と、 AXI ト ランザクシ ョ ンに SLVERR エラー応答を生成します。

9.4.3 外部 TCM エラー

AXI スレーブインタフェースからの TCM アクセスについてエラー応答が返された場合、 該当する TCM ポートについて外部エラーが可能になっていれば、 AXI スレーブは AXI ト ランザクシ ョ ンへ SLVERR 応答を返します。

TCM からの遅延エラーおよび再試行応答は、 AXI スレーブによ り無視されます。

9.4.4 キャッシュのパリテ ィ と ECC のサポート

キャ ッシュがパリティ または ECC をサポート している場合、 AXI スレーブインタフェースはパリティ または ECC コードのビッ ト を直接読み書きできます。 エラーは自動的には検出されず、 書き込み時に AXI スレーブは正しいパリティ または ECCコードの値を自動的に生成しません。

注 AXI スレーブインタフェースは、 機能テス トの目的で、 キャ ッシュ RAM に対する読み出し / 書き込みアクセスを提供します。 この機能は、 キャ ッシュのプ リ ロードには適していません。

9.4.5 AXI スレーブの制御

デフォルトでは、 特権 / 非特権のどちらのアクセスも、 AXI スレーブポート経由でCortex-R4 TCM RAM に対して行う こ とができます。 非特権アクセスを不可能にするには、 スレーブポート制御レジスタのビッ ト [1] をセッ ト します。 このレジスタのビッ ト [0] をセッ トする と、 すべてのスレーブアクセスを不可能にできます。 「c11、スレーブポート制御レジスタ」 (ページ 4-59) を参照して下さい。

キャ ッシュ RAM へのアクセスは、 補助制御レジスタのビッ ト [24] がセッ ト されている場合のみ行えます。 デフォルトでは、 キャ ッシュ RAM に対しては特権アクセスのみを行えますが、 補助制御レジスタのビッ ト [23] をセッ トするこ とで非特権アクセスを可能にできます。 キャ ッシュ RAM へのアクセスが可能なと き、 両方のキャ ッシュは非稼働であるかのよ うに扱われます。 「補助制御レジスタ」 (ページ 4-38) を参照して下さい。

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 9-21ID013111 Non-Confidential

Page 255: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

レベル2 インタフェース

アクセスが許可されない場合、 AXI アクセスに対して SLVERR エラー応答が返されます。

9.4.6 AXI スレーブの特性

こ こでは、 AXI スレーブインタフェースの能力と、 AXI ポートの属性について説明します。 AXI スレーブポートの動作について、 これらが 『AMBA AXI プロ ト コル仕様』 に準拠している という こ とを除いて、 他の一切の想定を行う こ とはできません。

• AXI スレーブインタフェースは、 データの結合をサポート しています。 データ幅が 64 ビッ ト未満である AXI バース ト を処理する場合、 AXI スレーブインタフェースは、 データの読み出し / 書き込みに必要な 小回数の TCM アクセスを試みます。 ECC エラー処理方式が使用されている場合、 これによって AXI スレーブが実行する必要のある読み出し - 変更 - 書き込みシーケンスの回数が減少するこ とがあ り ます。

• AXI スレーブインタフェースは、 次の機能をサポート していません。

— セキュ リ テ ィ拡張機能。 すべてのアクセスはセキュ リ ティ保護されています。 このため、 AxPROT[1] は使用されません。

— データ と命令の ト ランザクシ ョ ン信号。 このため、 AxPROT[2] は使用されません。

— メモリ タイプとキャッシュ可能性。 このため、 AxCACHE は使用されません。

— ア ト ミ ッ クアクセス。 AXI スレーブは、 ロ ッ ク された ト ランザクシ ョ ンを受け付けますが、 ロ ッ ク情報、 すなわち AxLOCK を使用しません。

• AXI スレーブインタフェースには、 排他アクセスモニタは存在しません。 排他アクセスが存在する場合、 AXI スレーブインタフェースは OKAY 応答を返します。

• AXI スレーブポートの ID 信号の幅は 8 ビッ トです。

8 ビッ ト よ り多くの ID を必要とする AXI システムにプロセッサを組み込むことは避ける必要があ り ます。 多くの場合、 システムによって必要と される IDのビッ ト数は、 エンコードを圧縮し、 未使用の値を削除して減らすこ とができます。 AXI マスタポートでは、 可能なすべての値が使用されるわけではあ り ません。 詳細については、 「AXI バスアクセスの識別子」 (ページ 9-4) を参照して下さい。

AXI スレーブポートの属性を、 表 9-25 に示します。

表 9-25 AXI スレーブインタフェースの属性

属性 値 コ メン ト

統合受け付け機能 7 -

書き込みインターリーブ深度 1 すべての書き込みデータは、 順に AXI スレーブインタフェースへ提示する必要があ り ます。

読み出しデータ再順序付け深度 1 AXI スレーブインタフェースは、 すべての読み出しデータを、 バー

ス トの ID が異なる場合でも、 順に返します。

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 9-22ID013111 Non-Confidential

Page 256: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

レベル2 インタフェース

9.5 AXI スレーブアクセスの可能 / 不可能

こ こでは、 キャ ッシュ RAM への AXI スレーブアクセスを可能 / 不可能にする方法について説明します。 キャ ッシュが AXI スレーブインタフェースからアクセス可能なと き、 キャ ッシュはプロセッサからキャ ッシュオフされているものと して扱われます。 インタフェースをオンまたはオフにした後で、 ISB 命令を使用してパイプラインをフラ ッシュし、 以後のすべての命令フェッチで有効なデータが返されるよ うにする必要があ り ます。

次に示すのは、 キャ ッシュ RAM への AXI スレーブアクセスを可能にするコードの例です。

MRC p15, 0, R1, c1, c0, 1 ; Read Auxiliary Control RegisterORR R1, R1, #0x1 <<24DSBMCR p15, 0, R1, c1, c0, 1 ; enabled AXI slave accesses to the cache RAMsISB; Clean entire data cache. This routine will depend on the data cache size. It can be omitted if it is known that the data cache has no dirty data Fetch from uncached memoryFetch from uncached memoryFetch from uncached memoryFetch from uncached memory

次に示すのは、 キャ ッシュ RAM への AXI スレーブアクセスを不可能にするコードの例です。 キャ ッシュ RAM にアクセスした後で、 AXI スレーブインタフェースが、以前に有効であったデータをキャ ッシュに復元するこ とが想定されているため、キャ ッシュの無効化は行われません。

MRC p15, 0, R1, c1, c0, 1 ; Read Auxiliary Control RegisterBIC R1, R1, #0x1 <<24DSBMCR p15, 0, R1, c1, c0, 1 ; disabled AXI slave accesses to the cache RAMsISBFetch from cached memoryFetch from cached memoryFetch from cached memoryFetch from cached memory

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 9-23ID013111 Non-Confidential

Page 257: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

レベル2 インタフェース

9.6 AXI スレーブインタフェースを使用した RAM へのアクセス

こ こでは、 AXI スレーブインタフェースを使用して TCM およびキャ ッシュ RAM へアクセスする方法について説明します。

RAM または RAM のグループへアクセスするために使用される ARUSERS またはAWUSERS 入力のビッ ト を、 表 9-26 に示します。 各ビッ トは、 1 ビッ トのみアクティブになる 4 ビッ ト入力で、 各ビッ トは特定の RAM または RAM グループに対応しています。

キャ ッシュ と BTCM については、 要求のアドレス (読み出しでは ARADDRS、 書き込みでは AWADDRS) に応じて、 さ らにデコードが行われます。 詳細については、次に示すセクシ ョ ンを参照して下さい。

• 「TCM RAM へのアクセス」 (ページ 9-25)

• 「キャ ッシュ RAM へのアクセス」 (ページ 9-26)

注 AWUSERS および AWADDRS は ARUSERS および ARADDRS と同様に動作するため、 以下のセクシ ョ ンでは ARUSERS および ARADDRS についてのみ説明します。

表 9-26 RAM 領域のデコード

AxUSERS ビッ トアクテ ィブビッ トに対応して選択される RAM

[3] データキャ ッシュ RAM

[2] 命令キャッシュ RAM

[1] B0TCM および B1TCM

[0] ATCM

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 9-24ID013111 Non-Confidential

Page 258: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

レベル2 インタフェース

9.6.1 TCM RAM へのアクセス

TCM RAM にアクセスするための ARUSERS[3:0] 信号のデコード、 およびアドレス信号の状態を、 表 9-27 に示します。 この表には、 次に示すアドレスビッ トのどちらを使用するかを決定する、 SLBTCMSB 構成入力信号も示されています。

• ARADDRS[3] • ARADDRS[MSB]。 表 9-28 を参照して下さい。

表 9-27 で、 ARADDRS[MSB] は TCM RAM の 上位アドレスビッ ト を意味します。各種 TCM RAM サイズに対する MSB を、 表 9-28 に示します。

ARADDRS[22:3] は、 TCM 内でアクセスする対象のダブルワードのアドレスを示します。 大の 8MB よ り も小さい TCM にアクセスする場合、 ダブルワードのアドレスが TCM の物理サイズの外を指す可能性があ り ます。

TCM RAM へのアクセスで、 次の場合には SLVERR エラー応答が返されます。

• 対象の TCM RAM の物理サイズの外である、 つま り ARADDRS[22:MSB + 1] ビッ トが 0 でない。

• TCM が存在しない。 バスアドレスから ARUSERS および ARADDRS へのマッピングは、 プロセッサの統合時に決定されます。 システムで AXI スレーブインタフェースを使用するには、 このマッピングを理解する必要があ り ます。

表 9-27 TCM チップセレク トのデコード

BTCM ポート ARUSERS[3:0] ARADDRS[3] ARADDRS[MSB] SLBTCMSB 選択される RAM

無関係 0001 - - - ATCM

1 0010 - - - B0TCM

2 0010 0 - 0 B0TCM

2 0010 1 - 0 B1TCM

2 0010 - 0 1 B0TCM

2 0010 - 1 1 B1TCM

表 9-28 各種 TCM RAM サイズに対応する MSB ビッ ト

TCM サイズ ARADDRS[MSB]

4 KB [11]

8 KB [12]

16 KB [13]

32 KB [14]

64 KB [15]

128 KB [16]

256 KB [17]

512 KB [18]

1 MB [19]

2 MB [20]

4 MB [21]

8 MB [22]

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 9-25ID013111 Non-Confidential

Page 259: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

レベル2 インタフェース

9.6.2 キャッシュ RAM へのアクセス

こ こでは、 次の内容について説明します。

• 「キャ ッシュ RAM にアクセスする と きのメモ リマップ」

• 「データ RAM へのアクセス」 (ページ 9-27)

• 「タグ RAM へのアクセス」 (ページ 9-28)

• 「ダーティ RAM へのアクセス」 (ページ 9-31)

• 「キャ ッシュ RAM にアクセスする他の例」 (ページ 9-32)

キャッシュ RAM にアクセスするときのメモリマップ

データキャ ッシュ と命令キャ ッシュのメモ リマップは同じ形式です。 命令キャ ッシュにはダーティ RAM が存在しないため、 ダーティ RAM にアクセスする とSLVERR エラー応答が生成されます。

プロセッサのキャ ッシュ RAM を選択するためのチップセレク トのデコードを、表 9-29、 表 9-30、 表 9-31 (ページ 9-27) に示します。

表 9-29 キャッシュ RAM のチップセレク トのデコード

入力選択される RAM

ARUSERS[3:0] ARADDRS[22:19]

0100 0000 命令キャッシュのデータ RAM

0100 0001 命令キャッシュのタグ RAM

0100 0010 未使用。 エラーが生成されます。

0100 0011 未使用。 エラーが生成されます。

0100 ARADDRS[22:21] != 00 未使用。 エラーが生成されます。

1000 0000 データキャ ッシュのデータ RAM

1000 0001 データキャ ッシュのタグ RAM

1000 0010 データキャ ッシュのダーティ RAM

1000 0011 未使用。 エラーが生成されます。

1000 ARADDRS[22:21] != 00 未使用。 エラーが生成されます。

表 9-30 キャッシュのタグ / 有効 RAM のバンク / アドレスデコード

入力選択されるRAM バンク キャッシュウェイ

ARADDRS[18:15]

0001 バンク 0 0

0010 バンク 1 1

0100 バンク 2 2

1000 バンク 3 3

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 9-26ID013111 Non-Confidential

Page 260: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

レベル2 インタフェース

注 キャ ッシュ RAM には、 32 ビッ ト または 64 ビッ トの AXI 転送でのみアクセスできます。 8 ビッ ト または 16 ビッ トの転送サイズを使用する と、 SLVERR エラー応答が生成されます。

データ RAM へのアクセス

以下の表は、 キャ ッシュのデータ RAM にアクセスするためのデータ形式です。

• パリティ も ECC も実装されていない場合の形式を、 表 9-32 に示します。

• パリティが実装されている場合の形式を、 表 9-33 に示します。

• ECC が実装されている場合の命令キャ ッシュの形式を、 表 9-34 (ページ 9-28)に示します。

• 表 9-35 (ページ 9-28) ECC が実装されている場合のデータキャ ッシュの形式を、 に示します。

表 9-31 キャッシュのデータ RAM のバンク / アドレスデコード

入力選択されるRAM バンクARADDRS[18:15] ARADDRS[3]

0001 0 バンク 0

0001 1 バンク 1

0010 0 バンク 2

0010 1 バンク 3

0100 0 バンク 4

0100 1 バンク 5

1000 0 バンク 6

1000 1 バンク 7

表 9-32 データ形式、 命令キャッシュおよびデータキャッシュ、 パリテ ィまたは ECC なし

データビッ ト 説明

[63:48] 未使用、 RAZ

[47:32] データ値、 [31:16] または [63:48]

[31:16] 未使用、 RAZ

[15:0] データ値、 [15:0] または [47:32]

表 9-33 データ形式、 命令キャッシュおよびデータキャッシュ、 パリテ ィあり

データビッ ト 説明

[63:50] 未使用、 RAZ

[49] データ値 [31:24] または [63:56] のパリティビッ ト

[48] データ値 [23:16] または [55:48] のパリティビッ ト

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 9-27ID013111 Non-Confidential

Page 261: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

レベル2 インタフェース

タグ RAM へのアクセス

以下の表は、 タグ RAM にアクセスするためのデータ形式です。

• パリティ も ECC も実装されていない場合の読み出しアクセス用の形式を、表 9-36 (ページ 9-29) に示します。

[47:32] データ値、 [31:16] または [63:48]

[31:18] 未使用、 RAZ

[17] データ値 [15:8] または [47:40] のパリティビッ ト

[16] データ値 [7:0] または [39:32] のパリティビッ ト

[15:0] データ値、 [15:0] または [47:32]

表 9-34 データ形式、 命令キャッシュ、 ECC あり

データビッ ト 説明

[63:52] 未使用、 RAZ

[51:48] ECC 64 コードの上位半分または下位半分a

[47:32] データ値、 [31:16] または [63:48]

[31:20] 未使用、 RAZ

[19:16] ECC 64 コードの上位半分または下位半分b

[15:0] データ値、 [15:0] または [47:32]

a. データのビッ ト [31:16] にアクセスする場合、 ビッ ト [51:48] にECC コードの下位半分が保持されます。

データのビッ ト [63:48] にアクセスする場合、 ビッ ト [51:48] にECC コードの上位半分が保持されます。

b. データのビッ ト [15:0] にアクセスする場合、 ビッ ト [19:16] にECC コードの下位半分が保持されます。

データのビッ ト [47:32] にアクセスする場合、 ビッ ト [19:16] にECC コードの上位半分が保持されます。

表 9-35 データ形式、 データキャッシュ、 ECC あり

データビッ ト 説明

[63:55] 未使用、 RAZ

[54:48] ECC 32 コード a

[47:32] データ値、 [31:16] または [63:48]

[31:23] 未使用、 RAZ

[22:16] ECC 32 コード

[15:0] データ値、 [15:0] または [47:32]

a. 64 ビッ ト アクセスの場合、 ECC ビッ トはビッ ト [22:16] とビッ ト

[54:48] に複製され、 これらの 2 つのコピーは同一です。 32 ビッ ト

アクセスの場合、 16 ビッ トのデータのみがアクセスされますが、

ECC ビッ トは 32 ビッ トのデータ値全体に対応します。

表 9-33 データ形式、 命令キャッシュおよびデータキャッシュ、 パリテ ィあり (続き)

データビッ ト 説明

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 9-28ID013111 Non-Confidential

Page 262: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

レベル2 インタフェース

• パリティが実装されている場合の読み出しアクセス用の形式を、 表 9-37 に示します。

• ECC が実装されている場合の読み出しアクセス用の形式を、 表 9-38 に示します。

• パリティ も ECC も実装されていない場合の書き込みアクセス用の形式を、表 9-39 (ページ 9-30) に示します。

• パリティが実装されている場合の書き込みアクセス用の形式を、 表 9-40 (ページ 9-30) に示します。

• 表 9-41 (ページ 9-30) ECC が実装されている場合の書き込みアクセス用の形式を、 に示します。

表 9-36 読み出し用のタグレジスタ形式、 パリテ ィまたは ECC なし

データビッ ト 説明

[63:55] 未使用、 RAZ

[54] 有効、 ウェイ 2/3

[53:32] タグ値、 ウェイ 2/3

[31:23] 未使用、 RAZ

[22] 有効、 ウェイ 0/1

[21:0] タグ値、 ウェイ 0/1

表 9-37 読み出し用のタグレジスタ形式、 パリテ ィあり

データビッ ト 説明

[63:56] 未使用、 RAZ

[55] パリティ、 ウェイ 2/3

[54] 有効、 ウェイ 2/3

[53:32] タグ値、 ウェイ 2/3

[31:24] 未使用、 RAZ

[23] パリティ、 ウェイ 0/1

[22] 有効、 ウェイ 0/1

[21:0] タグ値、 ウェイ 0/1

表 9-38 読み出し用のタグレジスタ形式、 ECC あり

データビッ ト 説明

[63:62] 未使用、 RAZ

[61:55] ECC、 ウェイ 2/3

[54] 有効、 ウェイ 2/3

[53:32] タグ値、 ウェイ 2/3

[31:30] 未使用、 RAZ

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 9-29ID013111 Non-Confidential

Page 263: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

レベル2 インタフェース

注 タグ RAM の書き込みでは、 データバスのビッ ト [23:0] のみが使用されます。 2 つのタグ RAM が同時に書き込まれた場合、 どちらにも同じデータが書き込まれます。AXI スレーブを使用して 1 つのタグ RAM にのみ書き込むには、 アドレスバスのビット [18:15] で 1 つの RAM のみを選択します。

[29:23] ECC、 ウェイ 0/1

[22] 有効、 ウェイ 0/1

[21:0] タグ値、 ウェイ 0/1

表 9-39 書き込み用のタグレジスタ形式、 パリテ ィまたは ECC なし

データビッ ト 説明

[63:23] 未使用、 RAZ

[22] 有効、 すべてのウェイ

[21:0] タグ値、 すべてのウェイ

表 9-40 書き込み用のタグレジスタ形式、 パリテ ィあり

データビッ ト 説明

[63:24] 未使用、 RAZ

[23] パリティ、 すべてのウェイ

[22] 有効、 すべてのウェイ

[21:0] タグ値、 すべてのウェイ

表 9-41 書き込み用のタグレジスタ形式、 ECC あり

データビッ ト 説明

[63:30] 未使用、 RAZ

[29:23] ECC、 すべてのウェイ

[22] 有効、 すべてのウェイ

[21:0] タグ値、 すべてのウェイ

表 9-38 読み出し用のタグレジスタ形式、 ECC あり (続き)

データビッ ト 説明

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 9-30ID013111 Non-Confidential

Page 264: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

レベル2 インタフェース

ダーティ RAM へのアクセス

以下の表は、 ダーティ RAM にアクセスするためのデータ形式です。

• パリティが実装されている場合、 またはエラー処理方式が実装されていない場合の形式を、 表 9-42 に示します。

• ECC が実装されている場合の形式を、 表 9-43 に示します。

注 パリティチェ ッ クが可能になっている場合、 キャ ッシュ可能なすべてのアクセスは強制的にライ ト スルーにな り ます。 このためダーティ RAM は使用されず、 パリ ティ保護は必要あ り ません。

表 9-42 ダーティ レジスタの形式、 パリテ ィまたはエラー処理方式なし

データビッ ト 説明

[63:27] 未使用、 RAZ

[26:25] 外部属性、 ウェイ 3

[24] ダーティ値、 ウェイ 3

[23:19] 未使用、 RAZ

[18:17] 外部属性、 ウェイ 2

[16] ダーティ値、 ウェイ 2

[15:11] 未使用、 RAZ

[10:9] 外部属性、 ウェイ 1

[8] ダーティ値、 ウェイ 1

[7:3] 未使用、 RAZ

[2:1] 外部属性、 ウェイ 0

[0] ダーティ値、 ウェイ 0

表 9-43 ダーティ レジスタの形式、 ECC あり

データビッ ト 説明

[63:31] 未使用、 RAZ

[30:27] ECC、 ウェイ 3

[26:25] 外部属性、 ウェイ 3

[24] ダーティ値、 ウェイ 3

[23] 未使用、 RAZ

[22:19] ECC、 ウェイ 2

[18:17] 外部属性、 ウェイ 2

[16] ダーティ値、 ウェイ 2

[15] 未使用、 RAZ

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 9-31ID013111 Non-Confidential

Page 265: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

レベル2 インタフェース

キャッシュ RAM にアクセスする他の例

通常、 ARADDRS[18:15] は 1 ビッ トのみアクティブになるフ ィールドで、 同時に 1つの RAM にのみアクセスできます。

ただし、 2 つのタグ RAM、 例えばバンク 0 と 2 や、 バンク 1 と 3 に同時にアクセスするには、 次の設定を使用します。

• バンク 0 と 2 にアクセスするには、 ARADDRS[18:15] = 4'b0101 を使用します。

• バンク 1 と 3 にアクセスするには、 ARADDRS[18:15] = 4'b1010 を使用します。

これによって、 2 つのタグ RAM から同時にデータを読み出すこ とができ、 同じデータを 2 つのタグ RAM に同時に書き込むこ とができます。 それぞれのタグ RAM に異なるデータを書き込むには、 同時に 1 つのタグ RAM にのみアクセスする必要があ ります。

ダーティ RAM バンクについては、 任意の組み合わせに同時にアクセスできます。 例えば、 すべてのダーティ RAM バンクにアクセスするには、 次の設定を使用します。

ARADDRS[18:15] = 4'b1111

これらの規則に違反した場合、 例えばタグ RAM のバンク 0 と 1 にアクセスした場合、 SLVERR 応答は生成されず、 他の組み合わせのバンクに読み書きを試みた場合や、 他の RAM で複数のバンクに読み書きを試みた場合、 結果は予測不能です。

注 実装されているキャ ッシュ RAM の物理サイズ外に読み書きを試みた場合、 その読み出し / 書き込みアクセスの MSB は無視されます。 例えば、 キャ ッシュ RAM のアドレス 0x10000000 や 0x00000000 にアクセスする と、 実際にアクセスされる物理アドレスは同じ 0x0 です。 このよ う なアクセスはエイ リ アス と して扱われ、 エラーは生成されません。

[14:11] ECC、 ウェイ 1

[10:9] 外部属性、 ウェイ 1

[8] ダーティ値、 ウェイ 1

[7] 未使用、 RAZ

[6:3] ECC、 ウェイ 0

[2:1] 外部属性、 ウェイ 0

[0] ダーティ値、 ウェイ 0

表 9-43 ダーティ レジスタの形式、 ECC あり (続き)

データビッ ト 説明

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 9-32ID013111 Non-Confidential

Page 266: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

第 10 章 電力制御

本章では、 プロセッサの電力制御機能について説明します。 本章は次のセクシ ョ ンから構成されています。

• 「電力制御について」 (ページ 10-2)

• 「電力管理」 (ページ 10-3)

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 10-1ID013111 Non-Confidential

Page 267: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

電力制御

10.1 電力制御について

プロセッサには、 エネルギー効率向上のため、 次のよ うな機能が含まれています。

• 分岐予測と復帰予測によ り、 不正確な命令フェッチとデコード動作の回数を減らします。

• キャ ッシュがシーケンシャルアクセスの情報を使用するこ とで、 タグ RAM や、不要なデータ RAM へのアクセス回数を減らします。

プロセッサは、 ゲーテッ ド ク ロ ッ ク とゲート を多用するこ とで、 使用されない機能ブロ ッ クへの入力を非稼働にします。 演算のためにアクティブに使用されるロジックのみが、 動的な電力を消費します。

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 10-2ID013111 Non-Confidential

Page 268: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

電力制御

10.2 電力管理

プロセッサは、 4 レベルの電力管理をサポート しています。 こ こでは、 次の ト ピッ クについて説明します。

• 「実行モード」• 「スタンバイモード」• 「休眠モード」• 「シャ ッ ト ダウンモード」 (ページ 10-4)

• 「電力管理コン ト ローラ との通信」 (ページ 10-4)

10.2.1 実行モード

実行モードは通常の動作モードで、 プロセッサのすべての機能が使用できます。

10.2.2 スタンバイモード

スタンバイモードでは、 デバイスの電力はオンのままですが、 ほとんどのクロ ッ クは非稼働になり ます。 これによ り、 消費される電力を、 静的漏洩電流と、 デバイスをスタンバイ状態から起動するために必要となる少量のクロ ッ ク電力オーバヘッ ドにまで減らすこ とができます。

スタンバイモードから実行モードへの遷移は、 次の条件で発生します。

• 割り込みの到着 (マスクの有無を問わず)

• デバッグ要求 (デバッグが可能かど うかを問わず)

• リ セッ ト時

デバッグ要求は、 プロセッサの EDBGRQ ピンを使用して外部で生成されるデバッグ要求、 またはデバッグアドバンス ト ペリ フェラルバス (APB) 経由でプロセッサに対して発行されるデバッグホールト命令のいずれかによって発生します。

スタンバイモードへの移行は、 割り込み待ち (WFI) 命令の実行によって行われます。スタンバイモードへの移行がメモ リシステムに影響を与えないこ とを保証するため、WFI によってデータ同期バリ ア動作が自動的に実行されます。 これによって、 プログラム順序で WFI 命令よ り も前に発生するすべての明示的メモ リ アクセスは、 完了するこ とが保証されます。

VIC インタフェースを使用しているシステムでは、 プロセッサがこのモードで動作している と き、 プロセッサを再開するために必要な割り込みが VIC によってマスクされないこ とを保証する必要があ り ます。

プロセッサのクロ ッ クが停止している と き、 プロセッサがスタンバイモードであるこ とを示すため、 STANDBYWFI 信号がアサート されます。

プロセッサがスタンバイモードで、 AXI スレーブインタフェースが ト ランザクシ ョンを受信する と、 プロセッサのクロ ッ クが一時的に再開され、 STANDBYWFI がアサート解除されるこ とで、 ト ランザクシ ョ ンへのサービスが可能になり ますが、 実行モードには復帰しません。

10.2.3 休眠モード

休眠モードでは、 プロセッサのロジッ クのみが電力オフされ、 プロセッサの TCM やキャ ッシュ RAM の電力はオフになり ません。 プロセッサの状態は、 キャ ッシュ とTCM の状態を除き、 休眠モードへの移行前にメモ リにス ト アされ、 終了後に復元されます。 設計に休眠モードを実装して使用する方法の詳細については、 ARM にお問い合わせ下さい。

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 10-3ID013111 Non-Confidential

Page 269: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

電力制御

10.2.4 シャッ トダウンモード

シャ ッ ト ダウンモードでは、 デバイス全体の電力がオフにな り、 キャ ッシュおよびTCM の状態を含むすべての状態は外部に保存する必要があ り ます。 プロセッサは、nRESET のアサートおよびアサート解除によって実行モードに復帰します。 状態を保存する と きは、 割り込みが不可能になっているこ とを保証し、 後にデータ同期バリ ア操作を行う必要があ り ます。 プロセッサのすべての状態が保存される と、 プロセッサは WFI 命令を実行します。 プロセッサがシャ ッ ト ダウンモードに移行可能なこ とを示すため、 STANDBYWFI 信号がアサート されます。

10.2.5 電力管理コン ト ローラとの通信

電力管理コン ト ローラ (PMC) を使用して、 プロセッサの電力のオン / オフを制御できます。 プロセッサと PMC との通信機構は、 メモ リマップされたコン ト ローラで、プロセッサからはス ト ロング リオーダと してアクセスされます。

プロセッサからの STANDBYWFI 信号によ り、 使用される電力オフモードが PMC に通知されます。

また、 プロセッサで電力状態の変更準備が整ったこ とを示すためにも、STANDBYWFI 信号が使用されます。 STANDBYWFI は、 WFI 動作への応答と してアサート されます。

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 10-4ID013111 Non-Confidential

Page 270: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

第 11 章 デバッグ

本章では、 プロセッサのデバッグユニッ トについて説明します。 これらの機能は、 アプリ ケーシ ョ ンソフ ト ウェア、 オペレーティングシステム、 ハード ウェアの開発支援に使用されます。 本章は次のセクシ ョ ンから構成されています。

• 「デバッグシステム」 (ページ 11-2)

• 「デバッグユニッ トについて」 (ページ 11-3)

• 「デバッグレジスタ インタフェース」 (ページ 11-5)

• 「デバッグレジスタの説明」 (ページ 11-10)

• 「管理レジスタ」 (ページ 11-32)

• 「デバッグイベン ト 」 (ページ 11-39)

• 「デバッグ例外」 (ページ 11-41)

• 「デバッグ状態」 (ページ 11-44)

• 「キャ ッシュデバッグ」 (ページ 11-50)

• 「外部デバッグインタフェース」 (ページ 11-51)

• 「デバッグ機能の使用」 (ページ 11-54)

• 「電力管理機能を持つシステムのデバッグ」 (ページ 11-71)

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 11-1ID013111 Non-Confidential

Page 271: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

デバッグ

11.1 デバッグシステム

Cortex-R4 プロセッサは、 デバッグシステムのコンポーネン トの 1 つです。 一般的なシステムを、 図 11-1 に示します。

図 11-1 一般的なデバッグシステム

一般的なシステムは、 次のセクシ ョ ンに示す 3 つの部分から構成されます。

• 「デバッグホス ト 」• 「プロ ト コルコンバータ」• 「デバッグターゲッ ト 」

11.1.1 デバッグホスト

デバッグホス トはパーソナルコンピュータなどのコンピュータで、 RealView™ Debugger のよ うなソフ ト ウェアデバッガを実行します。 デバッグホス トによ り、 特定の場所にブレークポイン ト を設定するなどの高レベルのコマンドの発行や、 メモリ アド レスの内容の検査などを実行できます。

11.1.2 プロ ト コルコンバータ

デバッグホス トは、 Ethernet などのインタフェースを使用して、 プロセッサ開発システムに接続されます。 この接続でブロードキャス ト される メ ッセージは、 デバッグターゲッ トのインタフェース信号に変換する必要があ り ます。 この処理は、RealView ICE などのプロ ト コルコンバータによって行われます。

11.1.3 デバッグターゲッ ト

デバッグターゲッ トは、 システムの も低いレベルです。 デバッグターゲッ トの例と して、 Cortex-R4 テス トチップを持つ開発システムや、 Cortex-R4 マクロセルを含むシ リ コンパーツが挙げられます。

デバッグターゲッ トは、 アドバンス トペリ フェラル バス (APB) スレーブポート を使用してプロセッサのデバッグユニッ トにアクセスするため、 プロ ト コルコンバータ用のいくつかのシステムサポート を実装する必要があ り ます。

デバッグユニッ トでは次の操作が行えます。

• プログラムの実行を停止する。

• プロセッサの内部状態と、 メモ リ システムの状態を検査する。

• プログラムの実行を再開する。

RealView Debugger

RealView ICE

Cortex-R4

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 11-2ID013111 Non-Confidential

Page 272: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

デバッグ

11.2 デバッグユニッ トについて

プロセッサのデバッグユニッ トは、 プロセッサで実行されているソフ ト ウェアのデバッグに使用されます。 プロセッサのデバッグユニッ ト をソフ ト ウェアデバッガ プログラムと共に使用して、 次のものをデバッグできます。

• アプリ ケーシ ョ ンソフ ト ウェア

• オペレーティングシステム

• ARM プロセッサベースのハードウェアシステム

デバッグユニッ トでは次の操作が行えます。

• プログラムの実行を停止する。

• プロセッサの状態を検査し、 変更する。

• メモ リ とペリ フェラルの状態を検査し、 変更する。

• プロセッサを再始動する。

プロセッサで実行中のソフ ト ウェアは、 次の方法でデバッグできます。

• ホールト デバッグモードでのデバッグ

• モニタ デバッグモードでのデバッグ

• ト レースデバッグ (「ETM インタフェース」 (ページ 1-11) を参照)

プロセッサのデバッグユニッ トは、 ARMv7 デバッグアーキテクチャに準拠しています。詳細については、 『ARM アーキテクチャ リ ファレンスマニュアル』 を参照して下さい。

11.2.1 ホールト デバッグモードでのデバッグ

プロセッサのデバッグユニッ トがホールト デバッグモードの場合、 ブレークポイント などのデバッグイベン トが発生する とプロセッサは停止します。 プロセッサが停止している と き、 外部デバッガは APB スレーブポート を使用して、 プロセッサの状態を検査し、 変更できます。 このデバッグモードは、 プログラムの実行に対して侵襲性です。

11.2.2 モニタ デバッグモードでのデバッグ

プロセッサのデバッグユニッ トがモニタ デバッグモードの場合、 プロセッサは停止せず、 デバッグ例外を取得します。 その後で、 特別なソフ ト ウェアであるモニタターゲッ トが制御を行い、 プロセッサの状態を検査または変更できます。 モニタ デバッグモードは、 情報収集のためにプロセッサを停止できないよ うな リ アルタイム システムには不可欠です。 例えば、 エンジンコン ト ローラや、 ハード ド ライブ コント ローラのサーボ機構などのシステムでは、 コンポーネン トに物理的損傷を与えずにコードを停止するこ とはできません。

モニタ デバッグモードでデバッグを行う場合、 プロセッサは現在のプログラムの実行を停止して、 モニタターゲッ トの実行を開始します。 プロセッサの状態は、 すべてのARM 例外に共通の方法で保存されます。 モニタターゲッ トはデバッガと通信して、プロセッサおよびコプロセッサの状態と、 メモリの内容およびペリ フェラルにアクセスします。 モニタ デバッグモードでは、 デバッグ監視プログラムが、 デバッグハードウェアと ソフ ト ウェアデバッガとの間のインタフェースと して必要になり ます。

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 11-3ID013111 Non-Confidential

Page 273: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

デバッグ

11.2.3 デバッグユニッ トのプログラ ミング

プロセッサのデバッグユニッ トは、 APB スレーブインタフェースを使用してプログラムされます。 APB スレーブインタフェースを使用してアクセス可能な、 メモ リマップされたデバッグレジスタの完全な一覧については、 表 11-3 (ページ 11-6) を参照して下さい。 メモ リマップされたレジスタを使用してアクセス可能なデバッグユニッ ト機能のいくつかを、 以下に示します。

• ブレークポイン ト を ト リガするための、 命令アドレスコンパレータ。 「ブレークポイン ト値レジスタ」 (ページ 11-23) および 「ブレークポイン ト制御レジスタ」 (ページ 11-23) を参照して下さい。

• ウォ ッチポイン ト を ト リガするための、 データアドレス コンパレータ。「ウォ ッチポイン ト値レジスタ」 (ページ 11-26) および 「ウォ ッチポイン ト制御レジスタ」 (ページ 11-26) を参照して下さい。

• 双方向のデバッグ通信チャネル (DCC)。 「デバッグ通信チャネル」 (ページ 11-55) を参照して下さい。

• デバッグユニッ トに関連付けられている、 他のすべての状態情報

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 11-4ID013111 Non-Confidential

Page 274: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

デバッグ

11.3 デバッグレジスタ インタフェース

APB スレーブポート を使用して、 プロセッサのデバッグレジスタ マップにアクセスできます。 プロセッサのデバッグ機能に完全にアクセスできるのはこの方法のみです。 システムで、 プロセッサが自分のデバッグレジスタにアクセスする必要がある場合、 プロセッサが物理メモ リの適切な領域にロード / ス ト アを実行するこ とで、APB スレーブポートにアクセス可能になるよ う な、 システム相互接続構造を選択するこ とをお勧めします。

こ こでは、 次の ト ピッ クについて説明します。

• 「コプロセッサレジスタ」• 「CP14 のアクセス許可」

• 「コプロセッサレジスタの概要」• 「メモ リマップされたレジスタ」 (ページ 11-6)

• 「ブレークポイン ト と ウォ ッチポイン トのメモ リ アドレス」 (ページ 11-7)

• 「電力ド メ イン」 (ページ 11-8)

• 「 リ セッ トのデバッグレジスタへの影響」 (ページ 11-8)

• 「APB ポートのアクセス許可」 (ページ 11-8)

11.3.1 コプロセッサレジスタ

プロセッサのデバッグレジスタのほとんどは、 メモ リマップされたインタフェース経由でアクセス可能ですが、 コプロセッサインタフェース経由でアクセス可能なレジスタもいくつか存在します。 これは、 レジスタファ イルへのブート ス ト ラ ップ アクセスにおいて重要です。 これによって、 プロセッサで実行されているソフ ト ウェアから、 デバイスに実装されているデバッグアーキテクチャのバージ ョ ンを識別可能になり ます。

11.3.2 CP14 のアクセス許可

デフォルトでは、 すべての CP14 デバッグレジスタは、 非特権モードでアクセス可能です。 ただし、 DSCR のビッ ト [12] を使用して、 すべてのコプロセッサレジスタについて、 ユーザモードでのアクセスを不可能にするよ うプロセッサをプログラム可能です。 詳細については、 「CP14 c1、 デバッグステータスおよび制御レジスタ」 (ページ 11-14) を参照して下さい。 プロセッサがデバッグ状態のときは、 プロセッサのモードにかかわらず、 CP14 デバッグレジスタへのアクセスは常に許可されます。

CP14 デバッグレジスタへのアクセスを、 表 11-1 に示します。

11.3.3 コプロセッサレジスタの概要

デバッグレジスタにアクセスするための有効な CP14 命令を、 表 11-2 (ページ 11-6)に示します。 この表に記載されていない CP14 命令はすべて未定義です。

表 11-1 CP14 デバッグレジスタへのアクセス

デバッグ状態 プロセッサモード DSCR[12] CP14 デバッグアクセス

はい X X 許可

いいえ ユーザ b0 許可

いいえ ユーザ b1 禁止a

a. 命令が CP14 レジスタへのアクセスを試みる と、 プロセッサで未定義例外が

取得されます。

いいえ 特権 X 許可

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 11-5ID013111 Non-Confidential

Page 275: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

デバッグ

注 CP14 デバッグ命令は、 Opcode_1 が 0 にセッ ト されている命令と定義されます。

11.3.4 メモリマップされたレジスタ

APB スレーブインタフェースでアクセス可能な、 メモ リマップされたレジスタすべての一覧を、 表 11-3 に示します。

注 この 4KB レジスタマップのベースアドレスは、 物理メモ リの 4KB 境界に必ずアラインしている必要があ り ます。

表 11-2 CP14 デバッグレジスタの概要

命令 ニーモニック 説明

MRC p14, 0, <Rd>, c0, c0, 0 DIDR デバッグ識別レジスタ。 「CP14 c0、 デバッグ ID レジスタ」 (ページ 11-10) を参照して下さい。

MRC p14, 0, <Rd>, c1, c0, 0 DRAR デバッグ ROM アドレスレジスタ。 「CP14 c0、 デバッグ ROMアドレスレジスタ」 (ページ 11-12) を参照して下さい。

MRC p14, 0, <Rd>, c2, c0, 0 DSAR デバッグ自己アドレスレジスタ。 「CP14 c0、 デバッグ自己アドレスオフセッ ト レジスタ」 (ページ 11-12) を参照して下さい。

MRC p14, 0, <Rd>, c0, c5, 0STC p14, c5, <addressing mode>

DTRRX ホス トからターゲッ トへのデータ転送レジスタ。 「データ転送レジスタ」 (ページ 11-18) を参照して下さい。

MCR p14, 0, <Rd>, c0, c5, 0LDC p14, c5, <addressing mode>

DTRTX ターゲッ トからホス トへのデータ転送レジスタ。 「データ転送レジスタ」 (ページ 11-18) を参照して下さい。

MRC p14, 0, <Rd>, c0, c1, 0MRC p14, 0, PC, c0, c1, 0

DSCR デバッグステータスおよび制御レジスタ。 「CP14 c1、 デバッグステータスおよび制御レジスタ」 (ページ 11-14) を参照して下さい。

表 11-3 メモリマップされたデバッグレジスタ

オフセッ ト(16 進数) レジスタ番号 アクセス ニーモニック 説明

0x000 c0 R DIDR 「CP14 c0、 デバッグ ID レジスタ」 (ページ 11-10)

0x004~ 0x014 c1 ~ c5 R - RAZ

0x18 c6 RW WFAR 「ウォ ッチポイン ト フォールト アドレスレジスタ」 (ページ 11-19)

0x01C c7 RW VCR 「ベク タキャ ッチ レジスタ」 (ページ 11-19)

0x020 c8 R - RAZ

0x024 c9 RW ECR このプロセッサには実装されていません。 0 と して読み出されます。

0x028 c10 RW DSCCR 「デバッグ状態キャッシュ制御レジスタ」 (ページ 11-21)

0x02C c11 R - RAZ

0x030~ 0x07C c12 ~ c31 R - RAZ

0x080 c32 RW DTRRX 「データ転送レジスタ」 (ページ 11-18)

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 11-6ID013111 Non-Confidential

Page 276: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

デバッグ

11.3.5 ブレークポイン ト とウォッチポイン トのメモリアドレス

ベクタキャ ッチ レジスタ (VCR) は、 例外ベクタを命令アドレス と して、 ブレークポイン ト を設定します。

0x084 c33 W ITR 「命令転送レジスタ」 (ページ 11-21)

0x088 c34 RW DSCR 「CP14 c1、 デバッグステータスおよび制御レジスタ」 (ページ 11-14)

0x08C c35 RW DTRTX 「データ転送レジスタ」 (ページ 11-18)

0x090 c36 W DRCR 「デバッグ実行制御レジスタ」 (ページ 11-22)

0x094~ 0x0FC c37 ~ c63 R - RAZ

0x100~ 0x11C c64 ~ c71 RW BVR 「ブレークポイン ト値レジスタ」 (ページ 11-23)

0x120~ 0x13C c72 ~ c79 R - RAZ

0x140~ 0x15C c80 ~ c87 RW BCR 「ブレークポイン ト制御レジスタ」 (ページ 11-23)

0x160~ 0x17C c88 ~ c95 R - RAZ

0x180~ 0x19C c96 ~ c103 RW WVR 「ウォ ッチポイン ト値レジスタ」 (ページ 11-26)

0x1A0~ 0x1BC c104 ~ c111 R - RAZ

0x1C0~ 0x1DC c112 ~ c119 RW WCR 「ウォ ッチポイン ト制御レジスタ」 (ページ 11-26)

0x1E0~ 0x1FC c120 ~ c127 R - RAZ

0x200~ 0x2FC c128 ~ c191 R - RAZ

0x300 c192 R OSLAR このプロセッサには実装されていません。 0 と して読み

出されます。

0x304 c193 R OSLSR 「オペレーティングシステム ロ ッ クステータス レジスタ」 (ページ 11-28)

0x308 c194 R OSSRR このプロセッサには実装されていません。 0 と して読み出されます。

0x30C c195 R - RAZ

0x310 c196 RW PRCR 「デバイス電力オフおよびリセッ ト制御レジスタ」 (ページ 11-30)

0x314 c197 R PRSR 「デバイス電力オフおよびリセッ ト ステータス レジスタ」 (ページ 11-30)

0x318~ 0x7FC c198 ~ c511 R - RAZ

0x800~ 0x8FC c512 ~ 575 R - RAZ

0x900~ 0xCFC c576 ~ c831 R - RAZ

0xD00~ 0xDFC c832 ~ c895 R - 「プロセッサ ID レジスタ」 (ページ 11-32)

0xE00~ 0xE7C c896 ~ c927 R - RAZ

0xE80~ 0xEFC c928 ~ c959 - - 第 13 章 統合テス ト レジスタ

0xF00~ 0xFFC c960 ~ c1023 - - 「管理レジスタ」 (ページ 11-32)

表 11-3 メモリマップされたデバッグレジスタ (続き)

オフセッ ト(16 進数) レジスタ番号 アクセス ニーモニック 説明

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 11-7ID013111 Non-Confidential

Page 277: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

デバッグ

ウォ ッチポイン ト フォールト アドレス レジスタ (WFAR) から、 アドレス とオフセット を読み出せます。 オフセッ トはプロセッサの状態によって異なり、 ARM 状態では+ 8、 Thumb 状態では + 4 です。

11.3.6 電力ド メイン

プロセッサの電力ド メ インは 1 つだけです。 このため、 イベン ト キャ ッチ レジスタ、OS ロ ッ ク、 OS 保存および復元の機能はサポート されていません。

11.3.7 リセッ トのデバッグレジスタへの影響

プロセッサには 2 つのリセッ ト信号が存在し、 それぞれデバッグレジスタに次のような影響を及ぼします。

nSYSPORESET

電力をオンする と きは、 デバッグ以外のプロセッサロジッ クを既知の状態に設定するため、 この信号をアサートする必要があ り ます。

PRESETDBGn

この信号をアサートする と、 プロセッサのデバッグ以外のロジッ クの状態に影響を与えず、 デバッグロジッ ク全体を既知の状態に設定できます。

11.3.8 APB ポートのアクセス許可

APB スレーブポートへのアクセスの制限は、 次のとおりです。

メモ リ アクセスの特権

メモ リマップされたレジスタへのアクセスは、 メモ リ アクセスの特権に基づいて不可能にするよ う、 システムを構成する必要があ り ます。

電力オフ プロセッサがサポートする電力ド メ インは 1 つだけなので、 プロセッサの電力がオフになっている と きに APB インタフェースに対して行われたすべてのアクセスに対して、 エラー応答を返すよ うシステムを構成する必要があ り ます。

メモリのアクセス許可の特権

非特権ソフ ト ウェアが APB スレーブポートへのアクセスを試みたと き、 システムはアクセスを無視するか、 アクセスへのエラー応答を生成する必要があ り ます。 APBプロ ト コルには、 特権またはユーザの制御信号が存在しないため、 この制限はシステムレベルで実装する必要があ り ます。 システムでアクセスを無視するか、 エラー応答を生成するかは選択できます。

APB ポートへアクセスを許可される メモ リ ト ランザクシ ョ ンに対して、 これ以外の制限を設定するこ と もできます。 ただし、 これは非推奨です。

アクセス許可のロック

APB スレーブポート をロ ッ ク し、 一部のデバッグレジスタへのアクセスを制限できます。 ARM アーキテクチャ v7 では、 2 つのロッ クが定義されています。

ソフ ト ウェアロ ッ ク

外部デバッガは、 このロ ッ クを設定し、 ソフ ト ウェアがデバッグレジスタの設定を変更するこ とを防止できます。 また、 デバッグモニタは、 アプ リ ケーシ ョ ンに制御を戻す前にこのロ ッ クを設定し、 問題のあるコードによってデバッグ設定が変更される危険を減らすこ とができます。 このロ ッ クが設定されている場合、 外部デバッガによって生成されたもの

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 11-8ID013111 Non-Confidential

Page 278: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

デバッグ

を除き、 すべてのデバッグレジスタへの書き込みは無視されます。 外部デバッガによる書き込みは、 このロ ッ ク よ り優先されます。 詳細については、 「ロ ッ クアクセス レジスタ」 (ページ 11-34) を参照して下さい。

OS ロ ッ ク プロセッサは OS ロ ッ クをサポート していません。

注 • これらのロ ッ クは、 PRESETDBGn によって提供されるデバッグロジッ クの リ

セッ ト時にのみ、 リセッ ト時の値に設定されます。

• ソフ ト ウェアロ ッ クについて、 外部デバッグから発生するアクセスの優先機能を動作させるには、 PADDRDBG31 入力信号を 1 にセッ トする必要があ り ます。

表 11-4 外部デバッグインタフェースのアクセス許可

レジスタ

PADDRDBG31 ロック DRCR、PRCR、PRSR 他のデバッグレジスタ LAR 他のレジスタ

X Xa NPOSSb NPOSSb NPOSSb NPOSSb

1 Xa OKc OKc OKc OKc

0 1d WIe WIe OKc WIe

0 0 OKc OKc OKc OKc

a. X は、 結果がこの条件に依存しないこ とを示します。

b. 不可能。 プロセッサの電力がオフの間にデバッグレジスタへアクセスするこ とは不可能です。c. OK は、 アクセスが成功するこ とを示します。

d. LSR[1] ビッ トがセッ ト されます。

e. WI は、 書き込みが無視されるこ とを示します。

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 11-9ID013111 Non-Confidential

Page 279: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

デバッグ

11.4 デバッグレジスタの説明

レジスタの説明で使用される用語の定義を、 表 11-5 に示します。

11.4.1 デバッグレジスタへのアクセス

CP14 デバッグレジスタにアクセスするには、 Opcode_1 と Opcode_2 を 0 に設定します。 コプロセッサ命令の CRn および CRm フ ィールドには CP14 デバッグレジスタ番号がエンコード され、 {<Opcode2>, <CRm>} の CRm 部分がレジスタ番号とな り ます。 また、 CRn フ ィールドで追加レジスタが指定される場合もあ り ます。

CP14 デバッグレジスタのマップを、 表 11-6 に示します。

11.4.2 CP14 c0、 デバッグ ID レジスタ

DIDR は読み出し専用レジスタで、 デバッグアーキテクチャのバージ ョ ンを識別し、プロセッサに実装されているデバッグ リ ソースの数を指定します。

デバッグ ID レジスタには次の特徴があ り ます。

• CP14 c0 に含まれる

• 32 ビッ トの読み出し専用レジスタ

• ユーザモード と特権モードでアクセス可能

表 11-5 レジスタの説明で使用される用語

用語 説明

R 読み出し専用。 書き込まれた値は無視されます。

W 書き込み専用。 このビッ トは読み出しできません。 読み出した場合、 予測不能な値が返されます。

RW 読み出し / 書き込み可能

RAZ 読み出し値 0。 読み出した場合、 常に 0 が返されます。

RAO 読み出し値 1。 読み出した場合、 常に 1 が返されます。

SBZP 常に 0(SBZ) または保持 (P)。 値と して 0 を書き込むか、 も し くは同プロセッサ上で以前に同じフ ィールドから読み出した値を書き込んで保持する必要があ り ます。 これらのビッ トは通常、 将来の拡張のため予約されています。

UNP このビッ ト を読み出した場合、 返される値は予測不能です。

表 11-6 CP14 デバッグレジスタのマップ

CRn Op1 CRm Op2 CP14 デバッグレジスタ名 省略形 参照先

c0 0 c0 0 デバッグ ID レジスタ DIDR 「CP14 c0、 デバッグ ID レジスタ」

c1 0 c0 0 デバッグ ROM アドレスレジスタ DRAR 「CP14 c0、 デバッグ ROM アドレスレジスタ」 (ページ 11-12)

c2 0 c0 0 デバッグ自己アドレスオフセッ ト レジスタ

DSAR 「CP14 c0、 デバッグ自己アドレスオフセッ ト レジスタ」 (ページ 11-12)

c3 ~ c15 0 c0 0 予約 - -

c0 0 c1 0 デバッグステータスおよび制御レジスタ

DSCR 「CP14 c1、 デバッグステータスおよび制御レジスタ」 (ページ 11-14)

c1 ~ c15 0 c1 0 予約 - -

c0 ~ c15 0 c2 ~ c4 0 予約 - -

c0 0 c5 0 データ転送レジスタ DTR 「データ転送レジスタ」 (ページ 11-18)

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 11-10ID013111 Non-Confidential

Page 280: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

デバッグ

DIDR のビッ ト配置を、 図 11-2 に示します。

図 11-2 デバッグ ID レジスタの形式

デバッグ ID レジスタの各ビッ ト値の意味を、 表 11-7 に示します。

デバッグ ID レジスタの次のフ ィールドの値は、 CP15 c0、 メ イン ID レジスタの値と一致します。

• DIDR[3:0] は、 CP15 c0 のビッ ト [3:0] と同じです。

• DIDR[7:4] は、 CP15 c0 のビッ ト [23:20] と同じです。

CP15 c0、 メ イン ID レジスタの詳細については、 「c0、 メ イン ID レジスタ」 (ページ 4-14) を参照して下さい。

これらのフ ィールドが重複している理由は、 デバッグ ID レジスタが、 APB スレーブポート経由でもアクセス可能なためです。 これによって、 プロセッサを停止せずに、バリ アン ト番号やリ ビジ ョ ン番号を外部デバッガで判定できます。

デバッグ ID レジスタを使用するには、 次の命令で CP14 c0 を読み出します。

MRC p14, 0, <Rd>, c0, c0, 0 ; Read Debug ID Register

WRP

31 28 27 24 23 20 19 16 15 4 3 0

BRP ID

8 7

表 11-7 デバッグ ID レジスタの機能

ビッ ト フ ィールド 機能

[31:28] WRP ウォ ッチポイン ト レジスタペアの数。

b0000 = WRP は 1 つ

b0001 = WRP は 2 つ

...

b0111 = WRP は 8 つ

[27: 24] BRP ブレークポイン ト レジスタペアの数。

b0001 = BRP は 2 つ

b0010 = BRP は 3 つ

...

b0111 = BRP は 8 つ

[23:20] コンテキス ト コンテキス ト ID 比較機能を持つブレークポイン ト レジスタペアの数。

b0000 = 1 つの BRP がコンテキス ト ID 比較機能を持っている。

[19:16] デバッグアーキテクチャのバージ ョ ン

デバッグアーキテクチャのバージ ョ ン。

b0100 で、 ARMv7 デバッグを示します。

[15:8] 予約 RAZ

[7: 4] バリ アン ト 実装定義のバリ アン ト番号。 このフ ィールドの値の詳細については、 「製品のリビジ ョ ン情報」 (ページ 1-24) を参照して下さい。

[3: 0] リ ビジ ョ ン 実装定義のリ ビジ ョ ン番号。 このフ ィールドの値の詳細については、 「製品のリビジ ョ ン情報」 (ページ 1-24) を参照して下さい。

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 11-11ID013111 Non-Confidential

Page 281: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

デバッグ

11.4.3 CP14 c0、 デバッグ ROM アドレスレジスタ

デバッグ ROM アドレスレジスタは読み出し専用レジスタで、 32 ビッ トのデバッグROM アドレスレジスタ値を返します。 この値は、 デバッグモニタがメモ リ内のどこにデバッグバス ROM を配置できるかを示すアドレスで、 CoreSight™ マルチプロセッサ ト レースおよびデバッグアーキテクチャによ り指定されます。 この ROM には、 デバッグバスのすべてのコンポーネン トに関する情報が保持されます。 このレジスタから読み出されるアドレスは、 統合時に DBGROMADDR[31:12] およびDBGROMADDRV 入力を指定して構成できます。 DBGROMADDR[31:12] が有効な値に固定されている場合、 DBGROMADDRV を 1 に固定する必要があ り ます。

デバッグ ROM アドレスレジスタには次の特徴があ り ます。

• CP14 c0 のサブレジスタ c1 に含まれる

• 32 ビッ トの読み出し専用レジスタ

• ユーザモード と特権モードでアクセス可能

デバッグ ROM アドレスレジスタのビッ ト配置を、 図 11-3 に示します。

図 11-3 デバッグ ROM アドレスレジスタの形式

デバッグ ROM アドレスレジスタの各ビッ ト値の意味を、 表 11-8 に示します。

デバッグ ROM アドレスレジスタを使用するには、 次の命令で CP14 c0 を読み出します。

MRC p14, 0, <Rd>, c1, c0, 0 ; Read Debug ROM Address Register

11.4.4 CP14 c0、 デバッグ自己アドレスオフセッ ト レジスタ

デバッグ自己アドレスオフセッ ト レジスタは読み出し専用レジスタで、 デバッグROM アドレスレジスタからプロセッサのデバッグレジスタのアドレスまでのオフセッ ト を指す、 32 ビッ トの値を返します。 このレジスタから読み出されるアドレスは、 統合時に DBGSELFADDR[31:12] および DBGSELFADDRV 入力を指定して構成できます。 DBGSELFADDR[31:12] が有効な値に固定されている場合、DBGSELFADDRV を 1 に固定する必要があ り ます。

デバッグ自己アドレスオフセッ ト レジスタには次の特徴があ り ます。

• CP14 c0 のサブレジスタ c2 に含まれる

• 32 ビッ トの読み出し専用レジスタ

ROM

31 12 11 2 1 0

表 11-8 デバッグ ROM アドレスレジスタの機能

ビッ ト フ ィールド 機能

[31:12] デバッグバスROM アドレス

デバッグバス ROM アドレスのビッ ト [31:12] を示します。

[11: 2] 予約 SBZ

[1:0] 有効ビッ ト ROM アドレスが有効であるこ とを示します。

DBGROMADDRV が 1 にセッ ト されている場合は b11、 そ うでない場合は b00 が読み出されます。 DBGROMADDR[31:12] が有効な値にセッ ト されている場合、

DBGROMADDRV を 1 にセッ トする必要があ り ます。

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 11-12ID013111 Non-Confidential

Page 282: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

デバッグ

• ユーザモード と特権モードでアクセス可能

デバッグ自己アドレスオフセッ ト レジスタのビッ ト配置を、 図 11-4 に示します。

図 11-4 デバッグ自己アドレスオフセッ ト レジスタの形式

デバッグ自己アドレスオフセッ ト レジスタの各ビッ ト値の意味を、 表 11-9 に示します。

デバッグ自己アドレスオフセッ ト レジスタを使用するには、 次の命令で CP14 c0 を読み出します。

MRC p14, 0, <Rd>, c2, c0, 0 ; Read Debug Self Address Offset Register

31 12 11 2 1 0

表 11-9 デバッグ自己アドレスオフセッ ト レジスタの機能

ビッ ト フ ィールド 機能

[31:12] デバッグバス自己アドレスオフセットの値

デバッグ ROM の物理アドレスから、 デバッグレジスタがマッピングされて

いる物理アドレスへの、 2 の補数オフセッ トのビッ ト [31:12] を示します。

[11: 2] 予約 読み出し時は UNP、 書き込み時は SBZP

[1:0] 有効ビッ ト DBGSELFADDRV が 1 にセッ ト されている場合は b11、 そ うでない場合は

b00 が読み出されます。 DBGSELFADDR[31:12] が有効な値にセッ ト されて

いる場合、 DBGSELFADDRV を 1 にセッ トする必要があ り ます。

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 11-13ID013111 Non-Confidential

Page 283: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

デバッグ

11.4.5 CP14 c1、 デバッグステータスおよび制御レジスタ

DSCR には、 デバッグユニッ トのステータスおよび制御情報が含まれています。DSCR のビッ ト配置を、 図 11-5 に示します。

図 11-5 デバッグステータスおよび制御レジスタの形式

デバッグステータスおよび制御レジスタのビッ ト値の意味を、 表 11-10 に示します。

31 30 29 28 16 15 14 13 12 11 10 6 5 2 1 0

MOE

9 7826 25 24 23

PipeAdvInstrCompl

22 21 20 19 18

ARM

DbgAckIntDisComms

DTR

27

DTRTXfullDTRRXfull

表 11-10 デバッグステータスおよび制御レジスタの機能

ビッ ト フ ィールド 機能

[31] 予約 読み出し時は RAZ、 書き込み時は SBZP

[30] DTRRXfull DTRRXfull フラグ。

0 = 読み出し DTR (DTRRX) が空です。 これはリセッ ト時の値です。

1 = 読み出し DTR (DTRRX) がいっぱいです。

このフラグがセッ ト されている場合、 DTRRX で読み出しできるデータがあるこ とをプロセッサに対して示します。 このフラグは、 デバッガが DTRRX へ書き込むと自動的にセッ ト

され、 プロセッサが CP14 DTR を読み出すと ク リ アされます。 このフラグがセッ ト されてい

ない場合、 DTRRX から返される値は予測不能です。

[29] DTRTXfull DTRTXfull フラグ。

0 = 書き込み DTR (DTRTX) が空です。 これはリセッ ト時の値です。

1 = 書き込み DTR (DTRTX) がいっぱいです。

このフラグがク リ アされている場合、 DTRTX がデータを受信可能であるこ とをプロセッサ

に対して示します。 このフラグは、 デバッガが DTRTX を読み出すと自動的にク リ アされ、プロセッサが CP14 DTR へ書き込むとセッ ト されます。 このビッ トがセッ ト されている と き

にプロセッサが DTRTX に書き込みを試みた場合、 レジスタの内容は上書きされ、DTRRXfull フラグはセッ ト されたままです。

[28:26] 予約 読み出し時は RAZ、 書き込み時は SBZP

[25] PipeAdv スティ ッキーなパイプラインアドバンスの読み出し専用ビッ ト 。 このビッ トによ り、 デバッガはプロセッサがアイ ドルかど うかを検出できます。状況によっては、 これはシステムバス ポートのデッ ド ロ ッ クを示しているこ とがあ り ます。 このビッ トは、 プロセッサのパイプラインが命令を終了したと き 1 にセッ ト されます。 DRCR[3] への書き込みによ り ク リ アされ

ます。

0 = このビッ トが 後にク リ アされた後で、 命令の実行が完了していません。

1 = このビッ トが 後にク リ アされた後で、 命令の実行が完了しました。

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 11-14ID013111 Non-Confidential

Page 284: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

デバッグ

[24] InstrCompl 命令完了を示す読み出し専用ビッ ト 。 このフラグは、 APB ポート経由で発行された命令の

実行が、 プロセッサで完了したかど うかを示します。

0 = プロセッサは、 ITR レジスタからフェ ッチされた命令を実行中です。

1 = プロセッサは、 ITR レジスタからフェ ッチされた命令を現在は実行していません。

APB ポートが DSCR を読み出して、 このビッ トがク リ アされている場合、 以後の ITR レジ

スタへの書き込みは、 DSCR[21:20] が 0 でない場合を除いて無視されます。 DSCR[21:20] が0 でない場合、 プロセッサが現在の命令の実行を完了するまで、 ITR への書き込みはス トールします。 プロセッサがデバッグ状態でない場合、 このフラグから読み出される値は予測不能です。 このフラグは、 デバッグ状態への移行時に 1 にセッ ト されます。

[23:22] 予約 読み出し時は RAZ、 書き込み時は SBZP

[21:20] DTR アクセス DTR アクセスモード。 このフ ィールドは、 デバッガとプロセッサとの DTR ト ラフ ィ ッ クを

適化するために使用できます。

b00 = 非ブロッキングモード。 これはデフォルト値です。

b01 = ス トールモード

b10 = 高速モード

b11 = 予約

注 • このフ ィールドは、 APB ポート経由での DSCR、 DTR、 ITR へのアクセスの動作にの

み影響し、 CP14 デバッグ命令によるアクセスには影響しません。

• デフォルト設定は非ブロ ッキングモードです。 他のモードを不適切に使用する と、 デバッグアクセス バスのデッ ド ロ ッ クが発生する恐れがあ り ます。

詳細については、 「DTR アクセスモード」 (ページ 11-17) を参照して下さい。

[19] 不正確アボートの破棄

不正確アボートの破棄ビッ トは、 プロセッサがデバッグ状態のと きにセッ ト され、 デバッグ状態を終了する と ク リ アされます。 このビッ トがセッ ト されている と き、 プロセッサは不正確データアボート を取得しません。 ただし、 スティ ッキー不正確データアボート ビッ トは 1にセッ ト されます。

0 = 不正確データアボート を破棄しない

1 = 不正確データアボート を破棄する

[18-16] 予約 読み出し時は RAZ、 書き込み時は SBZP

[15] モニタモード モニタデバッグモード イネーブルビッ ト。

0 = モニタ デバッグモードが不可能です。 これはリセッ ト時の値です。

1 = モニタ デバッグモードが可能です。

ホールト デバッグモードがビッ ト [14] で可能になっている場合、 プロセッサはビッ ト [15] の値にかかわらずホールト デバッグモードです。 外部インタフェース入力 DBGEN が LOWの場合、 このビッ トは 0 と して読み出されます。 プログラムされた値は、 DBGEN が HIGHになるまでマスク され、 その時点で読み出し値は、 プログラムされた値に変化します。

[14] ホールトモード ホールトデバッグモード イネーブルビッ ト。

0 = ホールト デバッグモードが不可能です。 これはリセッ ト時の値です。

1 = ホールト デバッグモードが可能です。

外部インタフェース入力 DBGEN が LOW の場合、 このビッ トは 0 と して読み出されます。プログラムされた値は、 DBGEN が HIGH になるまでマスク され、 その時点で読み出し値

は、 プログラムされた値に変化します。

[13] ARM ARM 命令の実行イネーブルビッ ト。

0 = 不可能。 これはリセッ ト時の値です。

1 = 可能

このビッ トがセッ ト されている と きに ITR 書き込みが成功する と、 プロセッサは ITR から

命令をフェッチして実行します。 プロセッサがデバッグ状態でないと きにこのビッ トが 1 にセッ ト された場合、 プロセッサの動作は予測不能です。

表 11-10 デバッグステータスおよび制御レジスタの機能 (続き)

ビッ ト フ ィールド 機能

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 11-15ID013111 Non-Confidential

Page 285: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

デバッグ

[12] Comms CP14 デバッグ ユーザアクセス不可能制御ビッ ト。

0 = CP14 デバッグ ユーザアクセスが可能です。 これはリセッ ト時の値です。

1 = CP14 デバッグ ユーザアクセスが不可能です。

このビッ トがセッ ト されている と き、 ユーザモードのプロセスが CP14 デバッグレジスタのいずれかにアクセスを試みる と、 未定義命令例外が取得されます。

[11] IntDis 割り込みディセーブルビッ ト 。

0 = 割り込みが可能です。 これはリセッ ト時の値です。

1 = 割り込みが不可能です。

このビッ トがセッ ト されている場合、 IRQ と FIQ の入力信号は禁止されます。 外部デバッガは、 このビッ ト を使用して、 デバッグプロセスの一部と してコードの一部を通常の状態で実行し、 割り込みによってプログラムフローの制御が奪われるこ とを回避できます。 例えば、 デバッガはこのビッ ト を使用して OS サービスルーチンを実行し、 ディ スクから メモ リにページを読み込むこ とができます。 このルーチンの実行中に割り込みが発生するこ とは望まし くない可能性があ り ます。

[10] DbgAck DbgAck ビッ ト。 このビッ トが 1 にセッ ト されている場合、 DBGACK 出力信号は、 プロ

セッサの状態にかかわらず HIGH に固定されます。 外部デバッガは、 このビッ ト を使用し

て、 システムのデバッグプロセスの一部と してコードの一部を通常の状態で実行し、 プロセッサがデバッグ状態であるかのよ うに動作できます。 一部のシステムでは、 データアクセスがアプリ ケーシ ョ ンとデバッガのどちらから生成されたかの判定に DBGACK が必要です。 このビッ トの リセッ ト時の値は 0 です。

[9] 予約 読み出し時は RAZ、 書き込み時は SBZP

[8] スティ ッキー未定義

スティ ッキー未定義ビッ ト 。

0 = このビッ トが 後にク リ アされた後で、 デバッグ状態での未定義例外が発生していません。

1 = このビッ トが 後にク リ アされた後で、 デバッグ状態での未定義例外が発生しました。

このフラグは、 プロセッサへ ITR 経由で発行された命令によ り生成された未定義例外を検

出します。 このビッ トは、 プロセッサがデバッグ状態のと きに未定義命令例外が発生する と1 にセッ ト され、 DRCR[2] に 1 を書き込むと ク リ アされます。

[7] スティ ッキー不正確アボート

スティ ッキーな不正確データアボート ビッ ト 。

0 = このビッ トが 後にク リ アされた後で、 不正確データアボートが発生していません。

1 = このビッ トが 後にク リ アされた後で、 不正確データアボートが発生しました。

このフラグは、 プロセッサへ ITR 経由で発行された命令によ り ト リ ガされた不正確データアボート を検出します。 このビッ トは、 プロセッサがデバッグ状態のと きに不正確データアボートが発生する と 1 にセッ ト され、 DRCR[2] に 1 を書き込むと ク リ アされます。

[6] スティ ッキー正確アボート

スティ ッキー正確データアボート ビッ ト 。

0 = このビッ トが 後にク リ アされた後で、 正確データアボートが発生していません。

1 = このビッ トが 後にク リ アされた後で、 正確データアボートが発生しました。

このフラグは、 プロセッサへ ITR 経由で発行された命令によ り生成された正確データア

ボート を検出します。 このビッ トは、 プロセッサがデバッグ状態のと きに正確データアボートが発生する と 1 にセッ ト され、 DRCR[2] に書き込むと ク リ アされます。

表 11-10 デバッグステータスおよび制御レジスタの機能 (続き)

ビッ ト フ ィールド 機能

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 11-16ID013111 Non-Confidential

Page 286: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

デバッグ

デバッグステータスおよび制御レジスタを使用するには、 次の命令で CP14 c1 を読み書きします。

MRC p14, 0, <Rd>, c0, c1, 0 ; Read Debug Status and Control RegisterMCR p14, 0, <Rd>, c0, c1, 0 ; Write Debug Status and Control Register

DTR アクセスモード

DTR アクセスモード フ ィールドを使用して、 デバッガとプロセッサとの間のデータ転送を 適化できます。

DTR アクセスモードは次のいずれかです。

• 非ブロ ッキング。 これはデフォルトのモードです。

• ス トール

• 高速

非ブロ ッキングモードでは、 DTRTX からの読み出し、 および DTRRX と ITR への書き込みは、 ラ ッチされた準備完了フラグが準備完了状態でなければ無視されます。これらのラ ッチされたフラグは、 DSCR 読み出し時に更新されます。 次の規則が適用されます。

• DTRRXfull_l が b1 にセッ ト されている場合、 DTRRX への書き込みは無視されます。

• DTRTXfull_l が b0 にセッ ト されている場合、 DTRTX からの読み出しは無視され、 返される値は予測不能です。

[5:2] MOE 開始方法ビッ ト。

b0000 = DRCR[0] ホールト デバッグイベン トが発生した

b0001 = ブレークポイン トが発生した

b0100 = EDBGRQ ホールト デバッグイベン トが発生した

b0011 = BKPT 命令が実行された

b0010 = 正確ウォッチポイン トが発生した

その他 = 予約

これらのビッ トは、 次のいずれかを示すために設定されます。

• デバッグ例外の原因

• デバッグ状態に移行した原因

プリ フェッチアボート またはデータアボートのハンド ラは、 デバッグ例外が発生したかど うかを判定するために CP15 フォールト ステータス レジスタの値をチェッ ク してから、 これら

のビッ ト を使用して、 デバッグイベン ト を特定する必要があ り ます。

[1]a コアの再始動 コアの再始動ビッ ト。

0 = プロセッサはデバッグ状態を終了します。

1 = プロセッサはデバッグ状態を終了しました。 これはリセッ ト時の値です。

デバッガは、 このビッ ト をポーリ ングして、 プロセッサが要求に応じてデバッグ状態を終了した時点を判断できます。

[0]a コア停止中 コアが停止中であるこ とを示すビッ ト 。

0 = プロセッサは通常の状態です。 これはリセッ ト時の値です。

1 = プロセッサはデバッグ状態です。

デバッガは、 このビッ ト をポーリ ングして、 プロセッサがデバッグ状態に移行した時点を判定できます。

a. これらのビッ トは常にプロセッサの状態を反映しているため、 特定のリセッ ト イベン トがプロセッサに影響を及ぼす場合のみ、 リセッ ト時の値が定められています。 例えば、 PRESETDBGn イベン トではこれらのビッ トは変更されず、

nSYSPORESET などのプロセッサのリセッ ト イベン トでは DSCR[18] が 0 に、 DSCR[1:0] が 10 にセッ ト されます。

表 11-10 デバッグステータスおよび制御レジスタの機能 (続き)

ビッ ト フ ィールド 機能

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 11-17ID013111 Non-Confidential

Page 287: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

デバッグ

• InstrCompl_l が b0 にセッ ト されている場合、 ITR への書き込みは無視されます。

• DTRRX への書き込みが成功した後で、 DTRRXfull と DTRRXfull_l は b1 にセット されます。

• DTRTX からの読み出しが成功した後で、 DTRTXfull と DTRTXfull_l は b0 にクリ アされます。

• ITR への書き込みが成功した後で、 InstrCompl と InstrCompl_l は b0 にク リ アされます。

これらのレジスタにアクセスするデバッガは、 初に DSCR を読み出す必要があ ります。 これによって、 副作用と して DTRRXfull および DTRTXfull が、 DTRRXfull_lおよび DTRTXfull_l にコピーされます。 その後で、 デバッガは次に示す操作を行う必要があ り ます。

• DTRRXfull フラグが b0 (DTRRXfull_l が b0) であれば、 DTRRX へ書き込む。

• DTRTXfull フラグが b1 (DTRTXfull_l が b1) であれば、 DTRTX を読み出す。

• InstrCompl_l フラグが b1 であれば、 ITR へ書き込む。

ただし、 デバッガは両方のアクシ ョ ンを同時に発行し、 その後で DSCR の読み出し値から、 操作が成功したかど うかを判定してもかまいません。

ス トールモードでは、 APB による DTRRX、 DTRTX、 ITR へのアクセスは、 次の条件でス トールします。

• DTRRX への書き込みは、 DTRRXfull がク リ アされるまでス トールします。

• ITR への書き込みは、 InstrCompl がセッ ト されるまでス トールします。

• DTRTX からの読み出しは、 DTRTXfull がセッ ト されるまでス トールします。

高速モードはス トールモード とほぼ同じですが、 DTRRX への書き込みまたはDTRTX の読み出しが成功したと きに、 プロセッサが ITR から命令をフェッチする点が異なり ます。 ス トールモードおよび非ブロ ッキングモードでは、 ITR への書き込みが成功したと きに、 プロセッサが ITR から命令をフェ ッチします。

11.4.6 データ転送レジスタ

DTR は、 2 つの独立した物理レジスタで構成されます。

• DTRRX (読み出しデータ転送レジスタ)

• DTRTX (書き込みデータ転送レジスタ)

アクセス対象となるレジスタは、 使用される命令に応じて異なり ます。

• 書き込み (MCR および LDC 命令) では、 DTRTX がアクセスされます。

• 読み出し (MRC および STC 命令) では、 DTRRX がアクセスされます。

注 読み出し と書き込みは、 プロセッサの観点からの表現です。

これらのレジスタの使用法と、 DTRTXfull および DTRRXfull フラグの詳細については、 「デバッグ通信チャネル」 (ページ 11-55) を参照して下さい。 データ転送レジスタのビッ ト [31:0] には、 転送されるデータが含まれています。

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 11-18ID013111 Non-Confidential

Page 288: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

デバッグ

DTRRX および DTRTX レジスタの各ビッ ト値の意味を、 表 11-11 に示します。

11.4.7 ウォッチポイン ト フォールト アドレスレジスタ

ウォ ッチポイン ト フォールト アドレスレジスタ (WFAR) は読み出し / 書き込みレジスタで、 ウォ ッチポイン ト を ト リガした命令のアドレスを保持します。

ウォ ッチポイン ト フォールト アドレスレジスタのビッ ト配置を、 図 11-6 に示します。

図 11-6 ウォッチポイン ト フォールト アドレスレジスタの形式

WFAR の各ビッ ト値の意味を、 表 11-12 に示します。

11.4.8 ベクタキャ ッチ レジスタ

プロセッサは、 効率的な例外ベクタキャ ッチをサポート しています。 これは、図 11-7 (ページ 11-20) に示すよ うに、 読み出し / 書き込みベクタキャ ッチ レジスタによって制御されます。

表 11-11 データ転送レジスタの機能

ビッ ト フ ィールド 機能

[31:0] データ データ転送レジスタを読み出します。 このデータは、 CP14 インタフェースからは読み出し専用です。

注 コプロセッサインタフェース経由で DTRRX を読み出すと、 DTRTXfull フラグがク リ アされます。 ただし、 APB ポート経由で DTRRX を読み出しても、 このフラグには影響し

ません。

[31:0] データ データ転送レジスタに書き込みます。 このデータは、 CP14 インタフェースからは書き込み専用です。

注 コプロセッサインタフェース経由で DTRTX に書きこむと、 DTRRXfull フラグがセッ トされます。 ただし、 APB ポート経由で DTRTX に書き込んでも、 このフラグには影響し

ません。

31 01

表 11-12 ウォッチポイン ト フォールト アドレスレジスタの機能

ビッ ト フ ィールド 機能

[31:1] アドレス ウォッチポイン ト を引き起こした命令のアドレス。 ARM 状態でウォッチポイン トが発生

したと き、 WFAR に格納されるのは、 ウォ ッチポイン ト を引き起こした命令のアドレスにオフセッ ト 0x8 を加算した値です。 Thumb 状態でウォッチポイン トが発生したと き、 オ

フセッ トは 0x4 です。

[0] 予約 RAZ

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 11-19ID013111 Non-Confidential

Page 289: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

デバッグ

図 11-7 ベクタキャッチ レジスタの形式

このレジスタのビッ トの 1 つがセッ ト されており、 対応するベクタの命令が実行にコ ミ ッ ト された場合、 プロセッサはデバッグ状態に移行するか、 デバッグ例外を取得します。

注 • このモデルでは、 例外ベクタからのプ リ フェ ッチは、 例外の開始が原因である

ものに限らず、 すべてベクタキャ ッチを ト リガする可能性があ り ます。 例外ベクタへの明示的な分岐は、 ベクタキャ ッチ デバッグイベン ト を生成する可能性があ り ます。

• プロセッサがモニタ デバッグモードのと きにビッ トのいずれかがセッ ト されている と、 プロセッサはその設定を無視し、 ベク タキャ ッチ デバッグイベン ト を生成しません。 これによって、 プロセッサが回復不能な状態に陥るこ とが防止されます。 上位互換性を保証するため、 デバッガは、 モニタ デバッグモードが選択され可能になっている と きには、 これらのビッ ト を 0 にプログラムする必要があ り ます。

ベク タキャ ッチ レジスタの各ビッ ト値の意味を、 表 11-13 に示します。

31 8 7 6 5 4 3 2 1 0

SVC

IRQFIQ

表 11-13 ベクタキャッチ レジスタの機能

ビッ ト フ ィールドリセッ ト時の値

通常のアドレス

ハイベクタアドレス

機能 アクセス

[31:8] 予約 0 - - 書き込み時に変更しないで下さい。 読み出し時には値 0 が返されます。

RAZ またはSBZP

[7] FIQ 0 0x0000001C 0xFFFF001C ベクタキャ ッチ イネーブル RW

[6] IRQ - 0x00000018a 0xFFFF0018a ベクタキャ ッチ イネーブル -

[5] 予約 0 - - 書き込み時に変更しないで下さい。 読み出し時には値 0 が返されます。

RAZ またはSBZP

[4] データアボート 0 0x00000010 0xFFFF0010 ベクタキャ ッチ イネーブル RW

[3] プリ フェッチアボート

0 0x0000000C 0xFFFF000C ベクタキャ ッチ イネーブル RW

[2] SVC 0 0x00000008 0xFFFF0008 ベクタキャ ッチ イネーブル RW

[1] 予約 0 0x00000004 0xFFFF0004 ベクタキャ ッチ イネーブル、 未定儀命令 RW

[0] リセッ ト 0 0x00000000 0xFFFF0000 ベクタキャ ッチ イネーブル RW

a. VIC インタフェースが稼働している場合、 ハイベクタが使用されているかど うかにかかわらず、 このアドレスは VIC に

よって 後に提供された IRQ ハンド ラのアドレスです。

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 11-20ID013111 Non-Confidential

Page 290: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

デバッグ

11.4.9 デバッグ状態キャッシュ制御レジスタ

DSCCR は、 プロセッサがデバッグ状態のときに、 レベル 1 キャッシュの動作を制御します。

DSCCR のビッ ト配置を、 図 11-8 に示します。

図 11-8 デバッグ状態キャッシュ制御レジスタの形式

DSCCR レジスタの使用モデルの詳細については、 「キャ ッシュデバッグ」 (ページ 11-50) を参照して下さい。

デバッグ状態キャ ッシュ制御レジスタの各ビッ ト値の意味を、 表 11-14 に示します。

11.4.10 命令転送レジスタ

ITR は、 デバッグ状態でプロセッサが実行するための命令を、 外部デバッガがフ ィードするために使用されます。 ITR は書き込み専用レジスタです。 ITR からの読み出しで返される値は予測不能です。

命令転送レジスタのビッ ト [31:0] には、 プロセッサがデバッグ状態で実行するための ARM 命令が含まれています。 このレジスタの リセッ ト時の値は予測不能です。

注 プロセッサがデバッグ状態でないと き、 または DSCR[13] 実行命令イネーブルビッ トがク リ アされている と きに ITR へ書き込んだ場合、 結果は予測不能です。 プロセッサに対して命令が発行されたと き、 デバッグユニッ トは、 DSCR[25] 命令完了ビッ トがセッ ト されるまで、 次の命令が発行されないよ うにします。

31 2 131 03

表 11-14 デバッグ状態キャッシュ制御レジスタの機能

ビッ ト フ ィールドリセッ ト時の値

説明

[31:3] 予約 0 予約。 書き込み時に変更しないで下さい。 読み出し時には値 0 が返されます。

[2] nWT 0 ラ イ ト スルー不可能。

1 = デバッグ状態で、 ライ トバッ ク と してマーク された領域が通常に動作します。

0 = デバッグ状態で、 ライ トバッ ク と してマーク された領域が強制的にライ ト ス

ルーと して動作します。 これはリセッ ト時の値です。

[1] nIL 0 命令キャッシュのラインフ ィル。

1 = デバッグ状態で、 レベル 1 命令キャッシュが通常に動作します。

0 = デバッグ状態で、 レベル 1 命令キャッシュのラインフ ィルが不可能になり ます。

これはリセッ ト時の値です。

[0] nDL 0 データキャ ッシュのラインフ ィル。

1 = デバッグ状態で、 レベル 1 データキャ ッシュが通常に動作します。

0 = デバッグ状態で、 レベル 1 データキャ ッシュのラインフ ィルが不可能になり ま

す。 これはリセッ ト時の値です。

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 11-21ID013111 Non-Confidential

Page 291: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

デバッグ

11.4.11 デバッグ実行制御レジスタ

DRCR は、 プロセッサに対してデバッグ状態の開始または終了を要求します。 また、DSCR に存在するスティ ッキー例外ビッ ト をク リ アします。

DRCR のビッ ト配置を、 図 11-9 に示します。

図 11-9 デバッグ実行制御レジスタの形式

デバッグ実行制御レジスタの各ビッ ト値の意味を、 表 11-15 に示します。

31 05 3 2 14

表 11-15 デバッグ実行制御レジスタの機能

ビッ ト フ ィールド 機能

[31:5] 予約 RAZ

[4] メモ リ要求のキャンセル このビッ トに 1 が書き込まれる と、 プロセッサはデバッグ状態への移行が可能に

なるまで、 保留中のメモリ ト ランザクシ ョ ンをすべて破棄します。 デバッグ状態の開始は応答イベン トで、 この要求をク リ アします。 破棄された ト ランザクシ ョンは、 次の動作を行います。

• 破棄されたス ト アは、 ターゲッ ト アドレスに予測不能の値を書き込むこ とがあ り ます。

• 破棄されたロードは、 レジスタバンクに予測不能の値を返します。

破棄された ト ランザクシ ョ ンが、 例外を引き起こすこ とはあ り ません。 プロセッサがデバッグ状態に移行した後で追加の命令フェッチやデータアクセスを行った場合、 動作は予測不能です。

このビッ トによ り、 デバッガはデッ ド ロ ッ クを先に進め、 プロセッサをデバッグ状態に移行可能にするこ とができます。 デバッグ状態への移行が発生するには、このビッ トがセッ ト される前にホールト デバッグイベン トが要求される必要があり ます。 DBGEN が LOW のと きにこのビッ トに 1 を書き込んだ場合、 その書き込

みは無効です。a

[3] スティ ッキーパイプライン アドバンスのク リ ア

このビッ トに 1 を書き込むと、 DSCR[25] がク リ アされます。

[2] スティ ッキー例外のク リ ア このビッ トに 1 を書き込むと、 DSCR[8:6] がク リ アされます。

[1] 再始動要求 このビッ トに 1 を書き込むと、 プロセッサに対してデバッグ状態の終了を要求し

ます。 この要求は、 プロセッサがデバッグ状態を終了するまで保持されます。 デバッガは、 この要求を行った場合、 DSCR[1] から 1 が読み出されるまでポーリ ングを行います。 このビッ トは、 常に 0 と して読み出されます。 プロセッサがデ

バッグ状態でないと き、 書き込みは無視されます。

[0] ホールト要求 このビッ トに 1 を書き込むと、 ホールト デバッグイベン トが ト リガされます。 つ

ま り、 プロセッサに対してデバッグ状態に移行するよ う要求が行われます。 この要求は、 デバッグ状態への移行が発生するまで保持されます。 デバッガは、 この要求を行った場合、 DSCR[0] から 1 が読み出されるまでポーリ ングを行います。

このビッ トは、 常に 0 と して読み出されます。 プロセッサが既にデバッグ状態である と き、 書き込みは無視されます。

a. デバッグ状態への移行は、 回復可能である と予測されません。

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 11-22ID013111 Non-Confidential

Page 292: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

デバッグ

11.4.12 ブレークポイン ト値レジスタ

各 BVR には、 ブレークポイン ト制御レジスタ (BCR) が関連付けられています。BCRy は、 BVRy に対応する制御レジスタです。

ブレークポイン ト レジスタのペア BVRy/BCRy は、 ブレークポイン ト レジスタペア(BRP) と呼ばれます。 BVR0 ~ 7 は BCR0 ~ 7 とペアで、 BRP0 ~ 7 と呼ばれます。

このレジスタに含まれているブレークポイン ト値は、 命令のアドレス、 またはコンテキス ト ID に対応しています。 ブレークポイン トは次のものに対して設定できます。

• 命令アドレス

• コンテキス ト ID 値

• 命令アドレス と コンテキス ト ID のペア

命令アドレス と コンテキス ト ID のペアを使用する場合は、 2 つの BRP を リ ンクする必要があ り ます。 デバッグイベン トは、 命令アドレス と コンテキス ト ID のペアが同時に一致したと きに生成されます。

ブレークポイン ト値レジスタの各ビッ ト値の意味を、 表 11-16 に示します。

注 • コンテキス ト ID の比較をサポート しているのは BRPn のみです。 こ こで、 n + 1

はプロセッサに実装されているブレークポイン ト レジスタペアの数です。

• レジスタ BVR0 から BVR(n-1) まではコンテキス ト ID 比較をサポート していないため、 これらのレジスタのビッ ト [1:0] は書き込み時に変更不可、 読み出し値0 です。

• CP15 コンテキス ト ID レジスタの内容は、 BVR と一致する対象のコンテキス トID 値とな り ます。 コンテキス ト ID レジスタについては、 第 4 章 システム制御コプロセッサを参照して下さい。

11.4.13 ブレークポイン ト制御レジスタ

BCR は読み出し / 書き込みレジスタで、 次の設定に必要な制御ビッ トが含まれています。

• ブレークポイン ト

• リ ンク付きブレークポイン ト

BCR のビッ ト配置を、 図 11-10 に示します。

図 11-10 ブレークポイン ト制御レジスタの形式

表 11-16 ブレークポイン ト値レジスタの機能

ビッ ト リセッ ト時の値 説明

[31:0] 0x0 ブレークポイン ト値

M BRP B

31 29 28 24 23 22 20 19 16 15 14 13 9 8 5 4 3 2 1 0

S

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 11-23ID013111 Non-Confidential

Page 293: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

デバッグ

ブレークポイン ト制御レジスタの各ビッ ト値の意味を、 表 11-17 に示します。

表 11-17 ブレークポイン ト制御レジスタの機能

ビッ ト フ ィールド 機能

[31:29] 予約 書き込み時に変更しないで下さい。 読み出し時には値 0 が返されます。

[28:24] ブレークポイン トのアドレスマスク

このフ ィールドは、 ブレークポイン トの比較からアドレスの下位ビッ ト をマスクによ り除外し、一定範囲のアドレスにブレークポイン ト を設定します。a

b00000 = マスクなし

b00001 = 予約

b00010 = 予約

b00011 = 命令アドレス用のマスク 0x00000007

b00100 = 命令アドレス用のマスク 0x0000000F

b00101 = 命令アドレス用のマスク 0x0000001F

...

b11111 = 命令アドレス用のマスク 0x7FFFFFFF

[23] 予約 -

[22:20] M BVR の意味。

b000 = 命令アドレス一致

b001 = リ ンク付き命令アドレス一致

b010 = リ ンクなしコンテキス ト ID

b011 = リ ンク付きコンテキス ト ID

b100 = 命令アドレス不一致

b101 = リ ンク付き命令アドレス不一致

b11x = 予約

詳細については、 表 11-18 (ページ 11-25) を参照して下さい。

[19:16] リ ンク付きBRP 番号

こ こにエンコード されるバイナリ番号は、 この BRP と リ ンク される別の BRP を示しています。

注 • BRP が自分自身と リ ンク されている場合、 ブレークポイン ト デバッグイベン トが生成さ

れるかど うかは予測不能です。

• BRP が別の BRP と リ ンク されており、 その別の BRP がリ ンク付きコンテキス ト ID 一致

用に構成されていない場合、 ブレークポイン ト デバッグイベン トが生成されるかど うかは予測不能です。

[15:14] セキュア状態アクセス制御

RAZ または SBZP

[13:9] 予約 書き込み時に変更しないで下さい。 読み出し時には値 0 が返されます。

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 11-24ID013111 Non-Confidential

Page 294: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

デバッグ

[8:5] バイ ト アドレス選択

命令アドレスに一致するよ うプログラムされたブレークポイン トの場合、 デバッガはワードアラインしたアドレスを BVR に書き込む必要があ り ます。 このフ ィールドを使用して、 特定のバイ ト アドレスがアクセスされた場合のみヒ ッ トするよ うに、 ブレークポイン ト をプログラムできます。b

BRP が命令アドレス一致用にプログラムされる場合、 それぞれの値は次のよ うに動作します。

b0000 = ブレークポイン トは一切ヒ ッ ト しません。

bxxx1 = アドレス (BVR & 0xFFFFFFFC) + 0 に存在するバイ トがアクセスされる と、ブレークポイントがヒ ッ ト します。

bxx1x = アドレス (BVR & 0xFFFFFFFC) + 1 に存在するバイ トがアクセスされる と、ブレークポイントがヒ ッ ト します。

bx1xx = アドレス (BVR & 0xFFFFFFFC) + 2 に存在するバイ トがアクセスされる と、ブレークポイントがヒ ッ ト します。

b1xxx = アドレス (BVR & 0xFFFFFFFC) + 3 に存在するバイ トがアクセスされる と、ブレークポイントがヒ ッ ト します。

b1111 = アドレス (BVR & 0xFFFFFFFC) + 0 から始まる 4 バイ トのいずれかがアクセスされる と、ブレークポイン トがヒ ッ ト します。

BRP が命令アドレス不一致用にプログラムされている場合、 対応する命令アドレスブレークポイン トがヒ ッ ト しないと き、 ブレークポイン トがヒ ッ ト します。 つま り、 命令アドレス不一致ブレークポイン トでカバーされるアドレス範囲は、 対応する命令アドレスブレークポイン トの否定イ メージとな り ます。

BRP をコンテキス ト ID 比較用にプログラムする場合、 このフ ィールドを b1111 にセッ トする必要があ り ます。 それ以外の場合、 ブレークポイン トおよびウォッチポイン ト デバッグイベン トが期待したよ うに生成されない場合があ り ます。

[4:3] 予約 -

[2:1] S スーパバイザアクセス制御。 ブレークポイン ト を、 プロセッサのモードの条件付きにできます。

b00 = ユーザ、 システム、 またはスーパバイザ

b01= 特権

b10 = ユーザ

b11 = 任意

[0] B ブレークポイン ト イネーブル。

0 = ブレークポイン トが不可能です。 これはリセッ ト時の値です。

1 = ブレークポイン トが可能です。

a. BCR[28:24] が b00000 にセッ ト されていない場合、 BCR[8:5] を b1111 にセッ トする必要があ り ます。 そ うでない場合、 動作

は予測不能です。 また、 BCR[28:24] が b00000 にセッ ト されていない場合、 比較に含まれない、 対応する BVR ビッ トは 0 の

必要があ り ます。 そ うでない場合、 動作は予測不能です。 この BRP をコンテキス ト ID 比較用にプログラムする場合、 この

フ ィールドを b00000 にセッ トする必要があ り ます。 そ うでない場合、 動作は予測不能です。 32 ビッ ト全体をマスクするエ

ンコードは存在しませんが、 BCR[22] を 1 に、 BCR[8:5] を b0000 にセッ トするこ とで、 これと同じ任意の場所でブレークするブレークポイン ト を実現できます。

b. BCR[8:5] に書き込む値の BCR[8] と BCR[7] が等し くない、 または BCR[6] と BCR[5] が等し くない場合、 結果は予測不能です。

表 11-18 BVR のビッ ト [22:20] の意味

BVR[22:20] 意味

b000 対応する BVR[31:2] が命令アドレスバス と、 プロセッサの状態がこの BCR と、 それぞれ比較されます。

命令アドレス と状態の両方が一致した場合、 ブレークポイン ト デバッグイベン トが生成されます。

b001 対応する BVR[31:2] が命令アドレスバスと、 プロセッサの状態がこの BCR と、 それぞれ比較されます。 この BRP は、 BCR[19:16] リ ンク付き BRP フ ィールドで示される BRP と リ ンク されています。 命令アドレス、

コンテキス ト ID、 状態のすべてが一致した場合、 ブレークポイン ト デバッグイベン トが生成されます。

b010 対応する BVR[31:0] が CP15 コンテキス ト ID レジスタ、 c13 と、 プロセッサの状態がこの BCR と、 それ

ぞれ比較されます。 この BRP は他の BRP と リ ンク されていません。 コンテキス ト ID と状態の両方が一致した場合、 ブレークポイン ト デバッグイベン トが生成されます。 この BRP では、 BCR[8:5] を b1111 に

セッ トする必要があ り ます。 それ以外の場合、 ブレークポイン ト デバッグイベン トが生成されるかど うかは予測不能です。

表 11-17 ブレークポイン ト制御レジスタの機能 (続き)

ビッ ト フ ィールド 機能

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 11-25ID013111 Non-Confidential

Page 295: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

デバッグ

11.4.14 ウォッチポイン ト値レジスタ

各 WVR には、 ウォ ッチポイン ト制御レジスタ (WCR) が関連付けられています。WCRy は、 WVRy に対応するレジスタです。

ウォ ッチポイン ト レジスタのペア WVRy および WCRy は、 ウォ ッチポイン ト レジスタペア (WRP) と呼ばれます。 WVR0 ~ 7 は WCR0 ~ 7 とペアで、 WRP0 ~ 7 とな ります。

WVR に含まれているウォ ッチポイン ト値は常にデータアドレスに対応しており、 次のいずれかに設定できます。

• データアドレス

• データアドレス と コンテキス ト ID のペア

データアドレス と コンテキス ト ID のペアでは、 WRP よび BRP と、 コンテキス ト IDの比較機能とを リ ンクする必要があ り ます。 データアドレス と コンテキス ト ID ペアの両方が同時に一致した場合、 デバッグイベン トが生成されます。 ウォ ッチポイント値レジスタのビッ ト フ ィールドの定義を、 表 11-19 に示します。

11.4.15 ウォッチポイン ト制御レジスタ

WCR には、 次のポイン ト を設定するために必要な制御ビッ トが保持されます。

• ウォ ッチポイン ト

• リ ンク付きウォッチポイン ト

ウォッチポイン ト制御レジスタのビッ ト配置を、 図 11-11 (ページ 11-27) に示します。

b011 対応する BVR[31:0] が、 CP15 コンテキス ト ID レジスタ、 c13 と比較されます。 この BRP は、 別の BRP(BCR[21:20] = b01 タイプ) または WRP (WCR[20] = b1) と リ ンク されています。 命令アドレスまたはデー

タアドレス と、 コンテキス ト ID との両方が一致したと きに、 ブレークポイン ト またはウォッチポイン ト デバッグイベン トが生成されます。 この BRP では、 BCR[8:5] を b1111 に、 BCR[15:14] を b00 に、BCR[2:1] を b11 にセッ トする必要があ り ます。 それ以外の場合、 ブレークポイン ト デバッグイベン トが

生成されるかど うかは予測不能です。

b100 対応する BVR[31:2] および BCR[8:5] が命令アドレスバス と、 プロセッサの状態がこの BCR と、 それぞれ比較されます。 命令アドレスの不一致と、 状態の一致とが同時に発生した場合、 ブレークポイン ト デバッ

グイベン トが生成されます。

b101 対応する BVR[31:2] および BCR[8:5] が命令アドレスバス と、 プロセッサの状態がこの BCR と、 それぞれ比較されます。 この BRP は、 BCR[19:16] リ ンク付き BRP フ ィールドで示される BRP と リ ンク されてい

ます。 命令アドレスの不一致と、 状態およびコンテキス ト ID の一致とが同時に発生した場合、 ブレーク

ポイン ト デバッグイベン トが生成されます。

b11x 予約。 動作は予測不能です。

表 11-18 BVR のビッ ト [22:20] の意味 (続き)

BVR[22:20] 意味

表 11-19 ブレークポイン ト値レジスタの機能

ビッ ト 説明

[31:2] ウォ ッチポイン トのアドレス

[1:0] 予約。 書き込み時に変更しないで下さい。 読み出し時には値 0が返されます。

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 11-26ID013111 Non-Confidential

Page 296: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

デバッグ

図 11-11 ウォッチポイン ト制御レジスタの形式

ウォ ッチポイン ト制御レジスタの各ビッ ト値の意味を、 表 11-20 に示します。

BRP L/S P W

31 21 20 19 16 15 5 3 2 1

E L/S S

24 4 014 1329 28 23 12

表 11-20 ウォッチポイン ト制御レジスタの機能

ビッ ト フ ィールド 機能

[31:29] 予約 書き込み時に変更しないで下さい。 読み出し時には値 0 が返されます。

[28:24] ウォ ッチポイン トのアドレスマスク

このフ ィールドは、 ウォッチポイン ト比較から下位のアドレスビッ ト をマスク して除外するこ とで、 一定範囲のアドレスをウォッチするために使用します。

b00000 = マスクなし

b00001 = 予約

b00010 = 予約

b00011 = データアドレス用のマスク 0x00000007

b00100 = データアドレス用のマスク 0x0000000F

b00101 = データアドレス用のマスク 0x0000001F

...

b11111 = データアドレス用のマスク 0x7FFFFFFF

注 • WCR[28:24] が b00000 にセッ ト されていない場合、 WCR[12:5] を b11111111 にセッ

トする必要があ り ます。 そ うでない場合、 動作は予測不能です。

• WCR[28:24] が b00000 にセッ ト されていない場合、 比較に含まれない、 対応する

WVR ビッ トは 0 の必要があ り ます。 そ うでない場合、 動作は予測不能です。

• サイズが 8 バイ トで、 8 バイ ト アラインしているオブジェク トの任意のバイ トに対する書き込みをウォッチする場合は、 デバッガで WCR[28:24] を b00111 に、

WCR[12:5] を b11111111 にセッ トするこ とをお勧めします。 この設定は、 ARMv7デバッグに準拠した実装のうち、 バイ ト アドレス選択フ ィールドが WCR[12:5] の 8ビッ トであるものと、 WCR[8:5] の 4 ビッ トであるものの両方に互換性があ り ます。

[23:21] 予約 書き込み時に変更しないで下さい。 読み出し時には値 0 が返されます。

[20] E リ ンク イネーブル ビッ ト 。

0 = リ ンクが不可能です。

1 = リ ンクが可能です。

このビッ トがセッ ト されている場合、 このウォッチポイン トは、 リ ンク付き BRP フ ィー

ルドで選択された BRP を保持しているコンテキス ト ID にリ ンク されています。

[19:16] リ ンク付き BRP リ ンク付き BRP 番号。 こ こにエンコード されるバイナリ数値は、 この WRP と リ ンク される BRP を保持しているコンテキス ト ID を示しています。 WRP が別の BRP と リ ンク

されており、 その別の BRP がリ ンク付きコンテキス ト ID 一致用に構成されていない場合、 ウォッチポイン ト デバッグイベン トが生成されるかど うかは予測不能です。

[15:14] セキュア状態アクセス制御

RAZ または SBZP

[13] 予約 読み出し値は常に 0 です。 書き込み時に変更しないで下さい。

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 11-27ID013111 Non-Confidential

Page 297: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

デバッグ

11.4.16 オペレーティ ングシステム ロックステータス レジスタ

オペレーティングシステム ロ ッ クステータス レジスタ (OSLSR) は、 ロ ッ ク されたデバッグレジスタについてのステータス情報を格納します。

OSLSR のビッ ト配置を、 図 11-12 (ページ 11-29) に示します。

[12:5] バイ ト アドレス選択 WVR にはワードアラインしたアドレスがプログラムされます。 このフ ィールドを使用し

て、 特定のバイ ト アドレスがアクセスされた場合のみヒ ッ トするよ うに、 ウォッチポイン ト をプログラムできます。

b00000000 ウォ ッチポイン トは一切ヒ ッ ト しません。

bxxxxxxx1 アドレス (WVR[31:0] & 0xFFFFFFFC) + 0 のバイ トがアクセスされる と、

ウォ ッチポイン トがヒ ッ ト します。

bxxxxxx1x アドレス (WVR[31:0] & 0xFFFFFFFC) + 1 のバイ トがアクセスされる と、ウォ ッチポイン トがヒ ッ ト します。

bxxxxx1xx アドレス (WVR[31:0] & 0xFFFFFFFC) + 2 のバイ トがアクセスされる と、

ウォ ッチポイン トがヒ ッ ト します。

bxxxx1xxx アドレス (WVR[31:0] & 0xFFFFFFFC) + 3 のバイ トがアクセスされる と、ウォ ッチポイン トがヒ ッ ト します。

bxxx1xxxx アドレス (WVR[31:0] & 0xFFFFFFF8) + 4 のバイ トがアクセスされる と、

ウォ ッチポイン トがヒ ッ ト します。

bxx1xxxxx アドレス (WVR[31:0] & 0xFFFFFFF8) + 5 のバイ トがアクセスされる と、ウォ ッチポイン トがヒ ッ ト します。

bx1xxxxxx アドレス (WVR[31:0] & 0xFFFFFFF8) + 6 のバイ トがアクセスされる と、

ウォ ッチポイン トがヒ ッ ト します。

b1xxxxxxx アドレス (WVR[31:0] & 0xFFFFFFF8) + 7 のバイ トがアクセスされる と、ウォ ッチポイン トがヒ ッ ト します。

[4:3] L/S ロード / ス ト アアクセス。 ウォ ッチポイン ト を、 アクセスのタイプについて条件付きに

できます。

b00 = 予約

b01 = ロード、 排他ロード、 スワップ

b10 = ス ト ア、 排他ス ト ア、 スワップ

b11 = 両方

SWP または SWPB は、 ロード、 ス ト ア、 または両方でト リガされます。 排他ロード命令は、ロードまたは両方でト リガされます。 排他ス ト ア命令は、 成功するかど うかにかかわらず、 ス ト アまたは両方でト リガされます。

[2:1] S 特権アクセス制御。 ウォッチポイン ト を、 アクセスの特権について条件付きにできます。

b00 = 予約

b01 = 特権付き、 プロセッサがメモ リに特権アクセスを行った場合のみ一致します。

b10 = ユーザ、 非特権アクセスにのみ一致します。

b11 = 両方、 すべてのアクセスに一致します。

注 すべての場合について、 一致の条件となるのはアクセスの特権で、 プロセッサのモードではあ り ません。

[0] W ウォッチポイン ト イネーブル。

0 = ウォッチポイン トは不可能です。 これはリセッ ト時の値です。

1 = ウォッチポイン トが可能です。

表 11-20 ウォッチポイン ト制御レジスタの機能 (続き)

ビッ ト フ ィールド 機能

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 11-28ID013111 Non-Confidential

Page 298: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

デバッグ

図 11-12 OS ロックステータス レジスタの形式

OS ロ ッ クステータス レジスタの各ビッ ト値の意味を、 表 11-21 に示します。

11.4.17 認証ステータスレジスタ

認証ステータスレジスタは読み出し専用レジスタで、 デバッグ許可レベルを決定する構成入力の現在の値を読み出します。

認証ステータスレジスタのビッ ト配置を、 図 11-13 に示します。

図 11-13 認証ステータスレジスタの形式

認証ステータスレジスタの各ビッ ト値の意味を、 表 11-22 に示します。

31 01

表 11-21 OS ロックステータス レジスタの機能

ビッ ト フ ィールド 機能

[31:1] 予約 RAZ

[0] ロ ッ ク実装ビッ ト OS ロ ッ ク機能が実装されていないこ とを示します。 このビッ トは、 常に 0と して読み出されます。

31 0345678

表 11-22 認証ステータスレジスタのビッ トの機能

ビッ ト フ ィールド 値 機能

[31:8] 予約 - RAZ

[7] セキュア非侵襲性デバッグ機能の実装

0b1 実装されている

[6] セキュア非侵襲性デバッグ機能イネーブル

DBGEN || NIDEN 非侵襲的デバッグイネーブル フ ィールド

[5] セキュア侵襲性デバッグ機能の実装

0b1 実装されている

[4] セキュア侵襲性デバッグ機能イネーブル

DBGEN 侵襲性デバッグイネーブル フ ィールド

[3:0] 非セキュアデバッグ機能a

a. Cortex-R4 にはセキュ リティ拡張機能が実装されていないため、 すべてのデバッグ機能はセ

キュアと見なされます。

0x0 実装されていない

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 11-29ID013111 Non-Confidential

Page 299: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

デバッグ

11.4.18 デバイス電力オフおよびリセッ ト制御レジスタ

PRCR は読み出し / 書き込みレジスタで、 リセッ ト と電力オフに関連する機能を制御します。

PRCR のビッ ト配置を、 図 11-14 に示します。

図 11-14 PRCR の形式

デバイス電力オフおよびリセッ ト制御レジスタの各ビッ ト値の意味を、 表 11-23 に示します。

11.4.19 デバイス電力オフおよびリセッ トステータス レジスタ

PRSR は読み出し専用レジスタで、 プロセッサのリセッ トおよび電力オフ状態についての情報を提供します。

PRSR のビッ ト配置を、 図 11-15 (ページ 11-31) に示します。

31 03 2 1

表 11-23 PRCR の機能

ビッ ト フ ィールド 機能

[31:3] 予約 書き込み時に変更しないで下さい。 読み出し時には値 0 が返されます。

[2] 内部リセッ ト保持

内部リセッ ト保持ビッ ト。 デバッガが電力オフイベン ト を検出して、 プロセッサのデバッグレジスタの状態を復元する前に、 プロセッサが再度実行されるこ とを、 このビッ ト を使用して防止できます。 このビッ トは nSYSPORESET によってク リ アされるため、 システムの

初の電力オン時には影響しません。

0 = 電力オンまたはウォーム リセッ ト時に、 内部リセッ ト を保持しません。 これはリセッ ト

時の値です。

1 = ウォーム リセッ ト時に、 このフラグがク リ アされるまで、 プロセッサのデバッグ以外の

ロジッ クを リセッ ト状態に保持します。

[1] 強制内部リセッ ト

このビッ トに 1 が書き込まれる と、 プロセッサは 4 サイ クルの間 DBGRSTREQ 出力をア

サート します。 この出力を外部リセッ ト コン ト ローラに接続し、 それによってプロセッサをリセッ トできます。

[0] 電力オフ無効 このビッ トが 1 にセッ ト されている と き、 DBGNOPWRDWN 出力信号は HIGH になり ます。

この出力はシステムの電力コン ト ローラに接続され、 エ ミ ュレーシ ョ ンモード動作の要求と解釈されます。 このモードでは、 ソフ ト ウェアまたはハード ウェアのハンドシェークによって要求されても、 プロセッサの実際の電力オフは行われません。 このモードは、 動作中のオペレーティングシステム上でアプリ ケーシ ョ ンをデバッグする と きに便利です。

0 = DBGNOPWRDWN は LOW です。 これはリセッ ト時の値です。

1 = DBGNOPWRDWN は HIGH です。

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 11-30ID013111 Non-Confidential

Page 300: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

デバッグ

図 11-15 PRSR の形式

PRSR の各ビッ ト値の意味を、 表 11-24 に示します。

31 03 2 14

表 11-24 PRSR の機能

ビッ ト フ ィールド 機能

[31:4] 予約 書き込み時に変更しないで下さい。 読み出し時には値 0 が返されます。

[3] スティ ッキー リセッ ト ス

テータス

スティ ッキー リセッ ト ステータス ビッ ト 。 このビッ トは読み出し時にク

リ アされます。

0 = このレジスタが 後に読み出された後で、 プロセッサがリセッ ト されていません。 これはリセッ ト時の値です。

1 = このレジスタが 後に読み出された後で、 プロセッサがリセッ ト され

ました。

このスティ ッキービッ トは、 nSYSPORESET のアサート時に 1 にセッ トされます。

[2] リセッ ト ステータス リセッ ト ステータス ビッ ト 。

0 = プロセッサは現在リセッ ト状態に保持されていません。

1 = プロセッサは現在リセッ ト状態に保持されています。

nSYSPORESET のアサート時には、 このビッ トの読み出し値は 1 です。

[1] スティ ッキー電力オフステータス

予約。 常に 0。

[0] 電力オフステータス 予約。 常に 1。

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 11-31ID013111 Non-Confidential

Page 301: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

デバッグ

11.5 管理レジスタ

管理レジスタは、 すべての CoreSight コンポーネン トに実装される標準レジスタの組を定義したものです。 こ こでは、 これらのレジスタについて説明します。

プロセッサのデバッグユニッ ト用の管理レジスタの内容を、 表 11-25 に示します。

11.5.1 プロセッサ ID レジスタ

プロセッサ ID レジスタは読み出し専用レジスタで、 対応する CP15 メ イン ID レジスタおよび機能 ID レジスタ と同じ値を返します。 これらのレジスタに含まれている情報の詳細については、 第 4 章 システム制御コプロセッサを参照して下さい。

それぞれのプロセス ID レジスタに関連付けられているオフセッ ト値、 レジスタ番号、 ニーモニッ ク、 および各レジスタの説明を、 表 11-26 に示します。

表 11-25 管理レジスタ

オフセッ ト(16 進数) レジスタ番号 アクセス ニーモニック 説明

0xD00~ 0xDFC 832-895 R - プロセッサ ID レジスタ。 「プロセッサ ID レジスタ」 を参照し

て下さい。

0xF00 960 RW ITCTRL 統合モード制御レジスタ。 「統合モード制御レジスタ(ITCTRL)」 (ページ 13-9) を参照して下さい。

0xFA0 1000 CLAIMSET クレームタグ セッ ト レジスタ。 「クレームタグ セッ ト レジスタ」 (ページ 11-33) を参照して下さい。

0xFA4 1001 CLAIMCLR クレームタグ ク リ アレジスタ。 「クレームタグ ク リ アレジスタ」 (ページ 11-34) を参照して下さい。

0xFB0 1004 W LOCKACCESS ロ ッ クアクセス レジスタ。 「ロ ッ クアクセス レジスタ」 (ペー

ジ 11-34) を参照して下さい。

0xFB4 1005 R LOCKSTATUS ロ ッ クステータス レジスタ。 「ロ ッ クステータス レジスタ」 (ページ 11-34) を参照して下さい。

0xFB8 1006 R AUTHSTATUS 認証ステータスレジスタ。 「認証ステータスレジスタ」 (ページ 11-29) を参照して下さい。

0xFB8~ 0xFC4 1006-1009 R - 予約

0xFC8 1010 R DEVID デバイス ID。 予約。

0xFCC 1011 R DEVTYPE デバイスタイプ レジスタ。 「デバイスタイプ レジスタ」 (ページ 11-35) を参照して下さい。

0xFD0~ 0xFFC 1012-1023 R - 識別レジスタ。 「デバッグ識別レジスタ」 (ページ 11-35) を参照して下さい。

表 11-26 プロセッサ ID レジスタ

オフセッ ト(16 進数) レジスタ番号 ニーモニック 機能

0xD00 832 MIDR メ イン ID レジスタ

0xD04 833 CTR キャ ッシュタイプ レジスタ

0xD08 834 TCMTR TCM タイプレジスタ

0xD0C 835 - MIDR のエイ リ アス

0xD10 836 MPUIR MPU タイプレジスタ

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 11-32ID013111 Non-Confidential

Page 302: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

デバッグ

11.5.2 クレームレジスタ

クレームタグ セッ ト レジスタおよびクレームタグ ク リ アレジスタは、 外部デバッガがデバッグ リ ソースを要求するために使用されます。

クレームタグ セッ ト レジスタ

クレームタグ セッ ト レジスタのビッ ト配置を、 図 11-16 に示します。

図 11-16 クレームタグ セッ ト レジスタの形式

クレームタグ セッ ト レジスタの各ビッ ト値の意味を、 表 11-27 に示します。

特定のクレームタグのセッ ト ビッ トに b1 を書き込むと、 そのクレームタグがセッ ト されます。 クレームタグ ビッ トに b0 を書き込んでも効果はあり ません。 このレジスタの読み出し値は常に 0xFF で、 8 つのクレームタグが実装されているこ とを示します。

0xD14 837 MPIDR マルチプロセッサ類似性レジスタ

0xD18~ 0xD1C 838 ~ 839 - MIDR のエイ リ アス

0xD20 840 ID_PFR0 プロセッサ機能レジスタ 0

0xD24 841 ID_PFR1 プロセッサ機能レジスタ 1

0xD28 842 ID_DFR0 デバッグ機能レジスタ 0

0xD2C 843 ID_AFR0 補助機能レジスタ 0

0xD30 844 ID_MMFR0 プロセッサ機能レジスタ 0

0xD34 845 ID_MMFR1 プロセッサ機能レジスタ 1

0xD38 846 ID_MMFR2 プロセッサ機能レジスタ 2

0xD3C 847 ID_MMFR3 プロセッサ機能レジスタ 3

0xD40 848 ID_ISAR0 ISA 機能レジスタ 0

0xD44 849 ID_ISAR1 ISA 機能レジスタ 1

0xD48 850 ID_ISAR2 ISA 機能レジスタ 2

0xD4C 851 ID_ISAR3 ISA 機能レジスタ 3

0xD50 852 ID_ISAR4 ISA 機能レジスタ 4

0xD54 853 ID_ISAR5 ISA 機能レジスタ 5

表 11-26 プロセッサ ID レジスタ (続き)

オフセッ ト(16 進数) レジスタ番号 ニーモニック 機能

31 078

表 11-27 クレームタグ セッ ト レジスタの機能

ビッ ト フ ィールド 機能

[31:8] 予約 RAZ または SBZP

[7:0] クレームタグ セッ ト RAO。 書き込み時にクレーム タグをセッ

ト します。

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 11-33ID013111 Non-Confidential

Page 303: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

デバッグ

クレームタグ クリアレジスタ

クレームタグ ク リアレジスタのビッ ト配置を、 図 11-16 (ページ 11-33) に示します。

図 11-17 クレームタグ クリアレジスタの形式

クレームタグ ク リ アレジスタの各ビッ ト値の意味を、 表 11-28 に示します。

特定のクレームタグのク リ アビッ トに b1 を書き込むと、 そのクレームタグがク リ アされます。 b0 を書き込んでも効果はあ り ません。 このレジスタを読み出すと、 現在のクレームタグの値が返されます。

11.5.3 ロックアクセス レジスタ

ロ ッ クアクセス レジスタは書き込み専用レジスタで、 デバッグレジスタへの書き込みを制御します。 ロ ッ クアクセス レジスタの目的は、 デバッグレジスタの内容が事故によって破損する リ スクを減らすこ とです。 事故や悪意による破損をすべて防止するこ とはできません。 ロ ッ クアクセス レジスタの状態はデバッグ電力ド メ インに存在するため、 プロセッサの電力がオフになっても消失しません。

ロ ッ クアクセス レジスタのビッ ト [31:0] には、 ロ ッ ク状態を制御するキーが含まれています。 デバッグレジスタのロ ッ クを解除するには、 0xC5ACCE55 キーをこのレジスタに書き込みます。 デバッグレジスタをロ ッ クするには、 他の任意の値を書き込みます。 ロ ッ ク されているデバッグレジスタへのアクセスは無視されます。 ロ ッ クはリセッ ト時にセッ ト されます。

11.5.4 ロックステータス レジスタ

ロ ッ クステータス レジスタは読み出し専用レジスタで、 デバッグレジスタの現在のロ ッ ク状態を返します。

ロ ッ クステータス レジスタのビッ ト配置を、 図 11-18 に示します。

図 11-18 ロックステータス レジスタの形式

31 078

表 11-28 クレームタグ クリアレジスタの機能

ビッ ト フ ィールド 説明

[31:8] 予約 RAZ または SBZP

[7:0] クレームタグ ク リ ア R/W。 リセッ ト時の値は 0x00 です。

3131 0123

32

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 11-34ID013111 Non-Confidential

Page 304: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

デバッグ

ロ ッ クステータス レジスタの各ビッ ト値の意味を、 表 11-29 に示します。

11.5.5 デバイスタイプ レジスタ

デバイスタイプ レジスタは読み出し専用レジスタで、 デバッグコンポーネン トのタイプを示します。

デバイスタイプ レジスタのビッ ト配置を、 図 11-19 に示します。

図 11-19 デバイスタイプ レジスタの形式

デバイスタイプ レジスタのビッ ト値の意味を、 表 11-30 に示します。

11.5.6 デバッグ識別レジスタ

デバッグ識別レジスタは読み出し専用レジスタで、 ペリ フェラル識別レジスタ と コンポーネン ト識別レジスタに分けられます。 ペリ フェラル識別レジスタは、 すべての CoreSight コンポーネン トで要求される標準的な情報を提供します。 各レジスタのビッ ト [7:0] のみが使用されます。 他のビッ トは RAZ です。

コンポーネン ト識別レジスタは、 プロセッサを CoreSight コンポーネン ト と して識別します。 各レジスタのビッ ト [7:0] のみが使用され、 他のビッ トは RAZ です。 これらのレジスタの値は固定です。

表 11-29 ロックステータス レジスタの機能

ビッ ト フ ィールド 機能

[31:3] 予約 書き込み時に変更しないで下さい。 読み出し時には値 0 が返されます。

[2] 32 ビッ ト アクセス ロ ッ クアクセス レジスタへキーを書き込むため、 32 ビッ ト アクセスが必要

なこ とを示しています。 このビッ トは、 常に 0 と して読み出されます。

[1] ロ ッ クビッ ト ロ ッ クビッ ト 。

0 = 書き込みが許可されています。

1 = 書き込みは無視されます。 これはリセッ ト時の値です。

[0] ロ ッ ク実装ビッ ト OS ロ ッ ク機能が実装されているこ とを示します。 このビッ トは、 常に 1 と

して読み出されます。

3131 048 7 3

表 11-30 デバイスタイプ レジスタの機能

ビッ ト フ ィールド 機能

[31:8] 予約 書き込み時に変更しないで下さい。 読み出し時には値 0が返されます。

[7:4] サブタイプ 0x1 で、 デバイスのサブタイプがプロセッサコアであることを示します。

[3:0] メ インク ラス 0x5 で、 デバイスのメ インク ラスがデバッグロジッ クであるこ とを示します。

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 11-35ID013111 Non-Confidential

Page 305: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

デバッグ

それぞれのペリ フェラル識別レジスタに関連付けられているオフセッ ト値、 レジスタ番号、 および各レジスタの説明を、 表 11-31 に示します。

ペリ フェラル識別レジスタのフ ィールドを、 表 11-32 に示します。

ペリ フェラル ID レジスタ 0 の各ビッ ト値の意味を、 表 11-33 に示します。

表 11-31 ペリフェラル識別レジスタ

オフセッ ト(16 進数) レジスタ番号 機能

0xFD0 1012 ペリ フェラル識別レジスタ 4

0xFD4 1013 予約

0xFD8 1014 予約

0xFDC 1015 予約

0xFE0 1016 ペリ フェラル識別レジスタ 0

0xFE4 1017 ペリ フェラル識別レジスタ 1

0xFE8 1018 ペリ フェラル識別レジスタ 2

0xFEC 1019 ペリ フェラル識別レジスタ 3

表 11-32 ペリフェラル識別レジスタのフ ィールド

フ ィールド サイズ 説明

4KB カウン ト 4 ビッ ト デバッグデバイスによ り占有される、 4KB ブロ ッ ク数の Log2 を示します。 プロ

セッサのデバッグレジスタが占有する 4KB ブロ ッ クは 1 つだけなので、 このフ ィー

ルドは常に 0x0 です。

JEP106 ID コード 4 + 7 ビッ ト プロセッサの設計者を示します。 このフ ィールドは、 4 ビッ トの継続コード と、 7ビッ トの ID コードで構成されます。 プロセッサは ARM によって設計されたものなので、 継続コードは 0x4、 ID コードは 0x3B です。 詳細については、 『JEP106M、 標

準製造業者識別コード』 を参照して下さい。

部品番号 12 ビッ ト プロセッサの部品番号を示します。 このプロセッサの部品番号は 0xC14 です。

リ ビジ ョ ン 4 ビッ ト 製品のメジャーおよびマイナーリ ビジ ョ ンを示します。 メジャーリ ビジ ョ ンには製品の機能変更が、 マイナーリ ビジ ョ ンにはバグ修正が含まれます。 リ ビジ ョ ン番号は 初は 0x0 で、 メジャーおよびマイナーリ ビジ ョ ンの両方について 1 ずつ増やさ

れます。 このフ ィールド値の詳細については、 「製品のリ ビジ ョ ン情報」 (ページ 1-24) を参照して下さい。

RevAnd 4 ビッ ト 製造者リ ビジ ョ ン番号を示します。 この番号は 初は 0x0 で、 集積回路が修正されるごとに、 製造業者によ り増やされます。 Cortex-R4 プロセッサの場合、 初の値

は 0x0 ですが、 この値は製造業者によって変更される可能性があ り ます。

顧客による変更 4 ビッ ト デバイスに対して承認された変更を示します。 本プロセッサでは、 この値は常に0x0 です。

表 11-33 ペリフェラル ID レジスタ 0 の機能

ビッ ト 値 説明

[31:8] - 予約

[7:0] 0x14 プロセッサの部品番号のビッ ト [7:0] を示します。

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 11-36ID013111 Non-Confidential

Page 306: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

デバッグ

ペリ フェラル ID レジスタ 1 の各ビッ ト値の意味を、 表 11-34 に示します。

ペリ フェラル ID レジスタ 2 の各ビッ ト値の意味を、 表 11-35 に示します。

ペリ フェラル ID レジスタ 3 の各ビッ ト値の意味を、 表 11-36 に示します。

ペリ フェラル ID レジスタ 4 の各ビッ ト値の意味を、 表 11-37 に示します。

表 11-34 ペリフェラル ID レジスタ 1 の機能

ビッ ト 値 説明

[31:8] - 予約

[7:4] 0xB JEDEC JEP106 ID コードのビッ ト [3:0] を示します。

[3:0] 0xC プロセッサの部品番号のビッ ト [11:8] を示します。

表 11-35 ペリフェラル ID レジスタ 2 の機能

ビッ ト 値 説明

[31:8] - 予約

[7:4] - Cortex-R4 プロセッサのリ ビジ ョ ン番号を示します。 詳細については、 「製品のリ ビジ ョ ン情報」 (ページ 1-24) を参照して下さい。

[3] 0x1 このフ ィールドは常に 1 にセッ ト されます。 これは、 プロセッサが JEP 106 ID コードを使用

するこ とを示しています。

[2:0] 0x3 JEDEC JEP106 ID コードのビッ ト [6:4] を示します。

表 11-36 ペリフェラル ID レジスタ 3 の機能

ビッ ト 値 説明

[31:8] - 予約

[7:4] 0x0 製造者リ ビジ ョ ン番号を示します。 この値は、 製造業者によって集積回路に加えられた修正に基づいて変更されます。

[3:0] 0x0 顧客による変更。 表 11-32 (ページ 11-36) を参照して下さい。

表 11-37 ペリフェラル ID レジスタ 4 の機能

ビッ ト 値 説明

[31:8] - 予約

[7:4] 0x0 デバッグコンポーネン トが占有するブロ ッ ク数を示します。 このフ ィールドは常に0 にセッ ト されます。

[3:0] 0x4 JEDEC JEP106 継続コードを示します。 本プロセッサでは、 この値は 4 です。

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 11-37ID013111 Non-Confidential

Page 307: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

デバッグ

それぞれのコンポーネン ト識別レジスタに関連付けられているオフセッ ト値、 レジスタ番号、 値を、 表 11-38 に示します。

表 11-38 コンポーネン ト識別レジスタ

オフセッ ト(16 進数) レジスタ番号 値 説明

0xFF0 1020 0x0D コンポーネン ト識別レジスタ 0

0xFF4 1021 0x90 コンポーネン ト識別レジスタ 1

0xFF8 1022 0x05 コンポーネン ト識別レジスタ 2

0xFFC 1023 0xB1 コンポーネン ト識別レジスタ 3

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 11-38ID013111 Non-Confidential

Page 308: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

デバッグ

11.6 デバッグイベン ト

プロセッサは、 次のいずれかの方法でデバッグイベン トに応答します。

• デバッグイベン ト を無視する。

• デバッグ例外を取得する。

• デバッグ状態に移行する。

こ こでは、 次の ト ピッ クについて説明します。

• 「ソフ ト ウェア デバッグイベン ト 」

• 「ホールト デバッグイベン ト 」 (ページ 11-40)

• 「デバッグイベン ト時のプロセッサの動作」 (ページ 11-40)

• 「デバッグイベン トの優先度」 (ページ 11-40)

• 「ウォ ッチポイン ト デバッグイベン ト 」 (ページ 11-40)

11.6.1 ソフ トウェア デバッグイベン ト

ソフ ト ウェア デバッグイベン トは次のいずれかです。

• ウォ ッチポイン ト デバッグイベン ト 。 これは、 次の場合に発生します。

— ロード / ス ト アのデータアドレスが、 ウォッチポイン トの値と一致した。

— WCR のすべての条件が満たされている。

— ウォ ッチポイン トが可能になっている。

— リ ンク された、 コンテキス ト ID を保持している BRP (存在する場合) が可能になっており、 その値が CP15 c13 のコンテキス ト ID と一致している。 第 4 章 システム制御コプロセッサを参照して下さい。

— メモ リ アクセスを開始した命令が実行にコ ミ ッ ト されている。

ウォ ッチポイン ト デバッグイベン トは、 命令の条件コードが成功した場合にのみ生成されます。

• ブレークポイン ト デバッグイベン ト 。 これは、 次の場合に発生します。

— 命令がフェッチされ、 命令のアドレス、 または CP15 コンテキス ト ID レジスタ c13 が、 ブレークポイン トの値と一致した。

— 命令がフェッチされるのと同時に、 リ ンクなしコンテキス ト ID ブレークポイン ト生成用の BCR の条件すべてが、 I 側の制御信号と一致した。

— ブレークポイン トが可能になっている。

— 命令が実行にコ ミ ッ ト されている。 これらのデバッグイベン トは、 命令の条件コードが成功したか失敗したかにかかわらず生成されます。

• BKPT デバッグイベン ト。 これは、 BKPT 命令が実行にコ ミ ッ ト されたと きに発生します。 BKPT は無条件命令です。

• ベクタキャ ッチ デバッグイベン ト。 これは、 次の場合に発生します。

— 命令がプリ フェッチされ、 アドレスがベクタ位置アドレス と一致した。 これには、 例外への移行によるものだけでなく、 すべての種類のプリ フェ ッチが含まれます。

— 命令がフェッチされた時点で、 VCR の対応するビッ トがセッ ト されている (ベクタキャ ッチが可能になっている)。

— 命令が実行にコ ミ ッ ト されている。 これらのデバッグイベン トは、 命令の条件コードが成功したか失敗したかにかかわらず生成されます。

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 11-39ID013111 Non-Confidential

Page 309: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

デバッグ

11.6.2 ホールト デバッグイベン ト

デバッガまたはシステムは、 次のいずれかのホールト デバッグイベン ト を ト リガするこ とで、 プロセッサをデバッグ状態に移行できます。

• EDBGRQ (外部デバッグ要求) 信号のアサート

• DRCR[0] (ホールト要求制御ビッ ト ) への書き込み

DBGEN が HIGH で、 侵襲性デバッグが禁止されている と きに EDBGRQ がアサートされた場合、 この信号をアサートするデバイスは、 プロセッサがデバッグ状態に移行する、 つま り DBGACK がアサート されるまで、 アサート を保持する必要があ り ます。 これを行わない場合、 プロセッサの動作は予測不能です。 DRCR[0] ホールト デバッグイベン トの場合、 プロセッサはそのイベン ト を取得できる状態とモードになるまで、 イベン ト を内部的に記録します。

11.6.3 デバッグイベン ト時のプロセッサの動作

こ こでは、 デバッグ状態でないと きにデバッグイベン トが発生した場合のプロセッサの動作について説明します。 デバッグ状態でのプロセッサの動作については、 「デバッグ状態」 (ページ 11-44) を参照して下さい。 プロセッサがモニタ デバッグモードのと き、 プ リ フェ ッチアボートおよびデータアボートのベクタキャ ッチ デバッグイベン トは無視されます。 他のすべてのソフ ト ウェア デバッグイベン トはデバッグ例外を生成します。 ウォ ッチポイン トについてはデータアボートが、 他のイベン トについてはプリ フェ ッチアボートが生成されます。

デバッグが不可能なと き、 BKPT 命令はデバッグ例外、 プ リ フェ ッチアボート を生成します。 他のすべてのソフ ト ウェア デバッグイベン トは無視されます。

DBGEN が LOW のと き、 DSCR[15:14] の値にかかわらずデバッグは不可能です。

デバッグイベン ト時のプロセッサの動作を、 表 11-39 に示します。

11.6.4 デバッグイベン トの優先度

ブレークポイン ト 、 命令アドレスまたは CID 一致、 ベクタキャ ッチ、 ホールト デバッグイベン トの優先度は同じです。 同じ命令において、 これらのイベン トの うち複数が発生した場合、 どのイベン トが取得されるかは予測不能です。

ブレークポイン ト 、 命令アドレスまたは CID 一致、 ベクタキャ ッチは、 それが発生した命令をキャンセルするため、 このよ うな命令でウォッチポイン トが取得されるこ とはあ り ません。

11.6.5 ウォッチポイン ト デバッグイベン ト

正確ウォッチポイン ト例外の動作は、 正確データアボート例外とほぼ同じです。

• プロセッサは、 復帰先の命令のアドレスに 0x08 を足した値を R14_abt に設定します。

• プロセッサは、 ウォ ッチポイン ト対象の命令を完了しません。

ウォ ッチポイン ト対象となったアクセスが正確データアボートの対象でもある場合、正確アボートのほうが優先度の高い例外であるため、 ウォ ッチポイン ト よ り も優先されます。

表 11-39 デバッグイベン ト時のプロセッサの動作

DBGEN DSCR[15:14] デバッグモードソフ トウェア デバッグイベン トに

対するアクシ ョ ン

ホールト デバッグイベン ト

に対するアクシ ョ ン

0 bxx デバッグが不可能 無視またはプリ フェッチアボート(BKPT の場合)

無視

1 b00 なし 無視またはプリ フェッチアボート(BKPT の場合)

デバッグ状態に移行する

1 bx1 ホールト デバッグ状態に移行する デバッグ状態に移行する

1 b10 モニタ デバッグ例外 デバッグ状態に移行する

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 11-40ID013111 Non-Confidential

Page 310: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

デバッグ

11.7 デバッグ例外

プロセッサは、 モニタ デバッグモードでソフ ト ウェア デバッグイベン トが発生したと き、 デバッグ例外を取得します。 プ リ フェ ッチアボートおよびデータアボート ベクタキャ ッチ デバッグイベン トは無視されます。 デバッグソフ ト ウェアは、 プロセッサが回復不能な状態に移行するこ とを避けるため、 特定のデバッグイベン ト を注意深くプログラムする必要があ り ます。 プロセッサがブレークポイン ト (BKPT) またはベクタキャ ッチ デバッグイベン トのためにデバッグ例外を取得した場合、 プロセッサは次のアクシ ョ ンを実行します。

• ブレークポイン トが発生したこ とを示すよ うに、 DSCR[5:2] (開始方法) ビット を設定します。

• 「CP15 レジスタおよび WFAR へのデバッグ例外の影響」 (ページ 11-42) に説明されているよ うに、 CP15 IFSR および IFAR レジスタを設定します。

• プリ フェ ッチアボート例外と同様に、 次の順にアクシ ョ ンを実行します。

— SPSR_abt を、 保存された CPSR で更新する。

— CPSR をアボートモードに変更し、 TE ビッ トで示される状態を、 通常の割り込みと不正確アボートが不可能になるよ うに変更する。

— R14_abt を、 通常のプリ フェ ッチアボート例外と同様に設定する。 つまり、 キャンセルされた命令のアドレスに 0x04 を加えた値をこのレジスタに格納する。

— PC を適切なプリ フェ ッチアボート ベクタに設定する。

注 プリ フェッチアボート ハンド ラは、 IFSR をチェッ ク し、 例外の開始の原因となったのがデバッグ例外か、 他の種類のプリ フェッチアボート例外かを判定します。 原因がデバッグ例外の場合、 プリ フェッチアボート ハンド ラはデバッグモニタに分岐する必要があり ます。 R14_abt レジスタは、 再開するべき命令のアドレスを保持します。

ウォ ッチポイン ト デバッグイベン トが原因でプロセッサがデバッグ例外を取得した場合、 プロセッサは次のアクシ ョ ンを実行します。

• 正確ウォッチポイン トが発生したこ とを示すよ うに、 DSCR[5:2] (開始方法)ビッ ト を設定します。

• 「CP15 レジスタおよび WFAR へのデバッグ例外の影響」 (ページ 11-42) に示されているよ うに、 CP15 の DFSR、 DFAR、 WFAR レジスタを設定します。

• データアボート例外と同様に、 次の順にアクシ ョ ンを実行します。

— SPSR_abt を、 保存された CPSR で更新する。

— CPSR を TE ビッ トで示される状態に変更し、 通常の割り込みと不正確アボート を不可能にする。

— R14_abt を、 通常のデータアボート例外と同様に設定する。 つま り、 キャンセルされた命令のアドレスに 0x08 を加えた値をこのレジスタに格納する。

— PC を適切なデータアボート ベクタに設定する。

注 データアボート ハンド ラは、 DFSR をチェッ ク し、 例外の開始がデバッグ例外により引き起こ されたのか、 他の種類のデータアボート例外によって引き起こ されたのかを判定する必要があ り ます。 原因がデバッグ例外の場合、 データアボート ハンドラはデバッグモニタに分岐する必要があ り ます。 R14_abt レジスタは、 再開するべき命令のアドレスを保持します。

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 11-41ID013111 Non-Confidential

Page 311: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

デバッグ

例外後のリ ンクレジスタの値を、 表 11-40 に示します。

説明については、 次に示すセクシ ョ ンを参照して下さい。

• 「CP15 レジスタおよび WFAR へのデバッグ例外の影響」

• 「回復不能な状態の回避」 (ページ 11-43)

11.7.1 CP15 レジスタおよび WFAR へのデバッグ例外の影響

アボート情報を記録するために使用される CP15 レジスタは、 次の 4 つです。

1. データフォールト アドレスレジスタ (DFAR)

2. 命令フォールト アドレスレジスタ (IFAR)

3. 命令フォールト ステータスレジスタ (IFSR)

4. データフォールト ステータスレジスタ (DFSR)

これらのレジスタの詳細については、 第 4 章 システム制御コプロセッサを参照して下さい。

ウォ ッチポイン ト デバッグイベン トが原因でプロセッサがデバッグ例外を取得した場合、 プロセッサはこれらのレジスタに対して次のアクシ ョ ンを実行します。

• IFSR または IFAR は変更しません。

• DFSR を、 デバッグイベン トのエンコードで更新します。

• DFAR に、 予測不能な値を書き込みます。

• ウォ ッチポイン ト対象のアドレスにアクセスした命令のアドレスに、 プロセッサの状態に固有のオフセッ ト を加えた値で、 WFAR を更新します。

— ARM 状態では + 8

— Thumb 状態では + 4

プロセッサがブレークポイン ト (BKPT) またはベクタキャ ッチ デバッグイベン トのためにデバッグ例外を取得した場合、 プロセッサはこれらのレジスタに対して次のアクシ ョ ンを実行します。

• IFSR を、 デバッグイベン トのエンコードで更新します。

• IFAR に、 予測不能な値を書き込みます。

• DFSR、 DFAR、 WFAR は変更されません。

表 11-40 例外後のリンクレジスタの値

フォールトの原因 ARM Thumb 復帰アドレス (RAa ) の意味

a. 復帰アドレスは、 デバッグ例外からの復帰後にプロセッサが 初に実行する命令のアドレスです。 ウォッチポイン トにヒ ッ ト したアクセスのアドレスは、 WFAR にあ り ます。

ブレークポイン ト RA + 4 RA + 4 ブレークポイン トが設定された命令のアドレス

ウォッチポイン ト RA + 8 RA + 8 ウォ ッチポイン トの対象となった命令のアドレス

BKPT 命令 RA + 4 RA + 4 BKPT 命令のアドレス

ベクタキャ ッチ RA + 4 RA + 4 ベクタアドレス

プリ フェッチアボート RA + 4 RA + 4 実行を再開する命令のアドレス

データアボート RA + 8 RA + 8 実行を再開する命令のアドレス

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 11-42ID013111 Non-Confidential

Page 312: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

デバッグ

11.7.2 回復不能な状態の回避

プロセッサは、 モニタ デバッグモードでは、 プ リ フェ ッチまたはデータ アボートベクタのベクタキャ ッチ デバッグ イベン ト を無視します。 これらのイベン ト を取得する と、 プロセッサが回復不能な状態に陥るためです。

デバッガは、 同様な事態を避けるため、 次の規則に従う必要があ り ます。 これらの規則は、 プロセッサがモニタ デバッグモードのと きにのみ適用されます。

• BCR[22:20] が b010 に設定されており、 リ ンクなしコンテキス ト ID ブレークポイン トが選択されている場合、 デバッガはこのセクシ ョ ンで説明されているものと同じブレークポイン ト用に BCR[2:1] をプログラムする必要があ り ます。

• BCR[22:20] が b100 または b101 に設定されており、 命令アドレス不一致ブレークポイン トが選択されている場合、 デバッガはこのセクシ ョ ンで説明されているものと同じブレークポイン ト用に BCR[2:1] をプログラムする必要があり ます。

デバッガは、 同じブレークポイン ト用の BCR[2:1] に b00 または b10 を書き込む必要があ り ます。 これは、 それぞれ USR、 SYS、 SVC モードのみでの一致、 または USRモードのみでの一致を選択します。 デバッガで、 b01 (任意の特権モードでの一致)または b11 (任意のモードでの一致) をプログラムするこ とはできません。

デバッガに対して、 BCR[2:1] に b00 を書き込むよ う要求するのは、 アボートハンドラが、 以後のデバッグイベン トによって破壊される可能性があるコンテキス ト を保存する前に、 USR、 SYS、 SVC のいずれかのモードに切り替わらないこ とが確実な場合のみ行う必要があ り ます。 また、 プ リ フェ ッチアボート またはデータアボート ハンド ラ内にブレークポイン トや BKPT デバッグイベン ト を設定する、 またはこれらのハンド ラのいずれかがアクセスする可能性のあるデータアドレスにウォッチポイン ト デバッグイベン ト を設定するよ うに、 デバッガに対して要求する場合には、注意が必要です。

一般に、 アボートハンド ラ内にブレークポイン トや BKPT デバッグイベン ト を設定する操作は、 アボート コンテキス ト を保存した後でのみ行う よ うにする必要があ ります。 BCR[2:1] を前に説明したよ うに設定する と、 アボートハンド ラ内でのブレークポイン ト デバッグイベン ト を避けるこ とができます。

デバッグ対象のコードが特権モードで実行されていない場合、 WCR[2:1] を b10 にセッ ト し、 非特権アクセスでのみ一致するよ うに設定するこ とで、 アボートハンドラ内でのウォッチポイン ト デバッグイベン ト を回避できます。

これらのガイ ド ラ インに従わないと、 ハンド ラがアボートのコンテキス ト を保存する前に、 デバッグイベン トが発生する可能性があ り ます。 この場合、 対応するレジスタが上書きされ、 ソフ ト ウェアの予測不能な動作を引き起こします。

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 11-43ID013111 Non-Confidential

Page 313: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

デバッグ

11.8 デバッグ状態

デバッグ状態では、 外部エージェン ト (通常はデバッガ) が、 デバッグイベン トの後でプロセッサを制御できます。 デバッグ状態では、 プロセッサは次のよ うに動作します。

• DSCR[0] (コアがホールト中) ビッ トがセッ ト されます。

• DBGACK 信号がアサート されます。 「DBGACK」 (ページ 11-51) を参照して下さい。

• DSCR[5:2] (開始方法) ビッ トが、 適切な値に設定されます。

• プロセッサは停止します。 パイプラインがフラ ッシュされ、 命令がフェッチされなくな り ます。

• プロセッサの実行モードは変更されません。 CPSR は変更されません。

• 例外は、 「デバッグ状態での例外」 (ページ 11-47) で説明されているよ うに扱われます。

• 割り込みは無視されます。

• 新規デバッグイベン トは無視されます。

説明については、 次に示すセクシ ョ ンを参照して下さい。

• 「デバッグ状態への移行」• 「デバッグ状態での PC および CPSR の動作」 (ページ 11-45)• 「デバッグ状態での命令の実行」 (ページ 11-46)• 「デバッグ状態での CPSR への書き込み」 (ページ 11-46)• 「特権」 (ページ 11-46)• 「レジスタおよびメモ リへのアクセス」 (ページ 11-46)• 「コプロセッサ命令」 (ページ 11-47)• 「非侵襲性デバッグへのデバッグ状態の影響」 (ページ 11-47)• 「プロセッサのレジスタに対するデバッグイベン トの影響」 (ページ 11-47)• 「デバッグ状態での例外」 (ページ 11-47)• 「デバッグ状態の終了」 (ページ 11-48)

11.8.1 デバッグ状態への移行

プロセッサがホールト デバッグモードのと きにデバッグイベン トが発生する と、 プロセッサはデバッグ状態と呼ばれる特別な状態に切り替わり、 デバッガが制御を取得します。 ホールト デバッグモードは、 DSCR[14] の設定によ り構成できます。

ホールト デバッグイベン トが発生する と、 ホールト デバッグモードが構成されていなくても、 プロセッサはデバッグ状態に移行します。 プロセッサがデバッグ状態のと き、 命令の実行で PC はインク リ メ ン ト されません。 プロセッサがデバッグ状態に移行した後、 明示的な PC への書き込みが行われる前の時点で PC が読み出された場合、 以前の状態とデバッグイベン トの種類によ り、 表 11-41 に記載されている値が返されます。

各デバッグイベン トで、 デバッグ状態への移行後に読み出される PC の値を、表 11-41 に示します。

表 11-41 デバッグ状態への移行後に読み出される PC の値

デバッグイベン ト ARM Thumb 復帰アドレス (RAa ) の意味

ブレークポイン ト RA + 8 RA + 4 ブレークポイン トが設定された命令のアドレス

ウォッチポイン ト RA + 8 RA + 4 実行を再開する命令のアドレス。 これは、 ウォ ッチポイン トにヒ ッ ト した命令よ り も数命令後です。

BKPT 命令 RA + 8 RA + 4 BKPT 命令のアドレス

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 11-44ID013111 Non-Confidential

Page 314: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

デバッグ

11.8.2 デバッグ状態での PC および CPSR の動作

プロセッサがデバッグ状態のとき、 PC および CPSR レジスタは次のよ うに動作します。

• デバッグ状態の開始時に、 PC は固定されます。 つま り、 ARM 命令を実行してもインク リ メ ン ト されません。 ただし、 明示的に PC を変更する命令への応答と しては、 依然と してプロセッサによ り PC が更新されます。

• プロセッサがデバッグ状態に移行した後で PC が読み出された場合、 以前の状態とデバッグイベン トの種類によ り、 表 11-41 (ページ 11-44) に記載されている値が返されます。

• デバッガが PC に特定の値を書き込むシーケンスを実行してから、 その後で PCまたは CPSR に追加書き込みを行わず、 強制的にプロセッサを再起動した場合、 書き込まれた値に対応するアドレスから実行が開始されます。

• デバッガが PC への書き込みを行わず、 強制的にプロセッサを再起動した場合、再開アドレスは予測不能です。

• デバッガが CPSR に書き込みを行う と、 その後で PC から読み出される値は予測不能で、 PC への書き込みを行わずに強制的にプロセッサを再起動した場合、再開アドレスは予測不能です。 ただし、 CPSR への書き込み後に CPSR から読み出される値は、 書き込まれた値です。

• デバッガが PC へ書き込みを行う と、 その後で PC から読み出される値は予測不能です。

• デバッガが、 PC への書き込みを行う命令をプロセッサで強制的に実行し、 その命令が条件コードに失敗した場合、 PC に書き込まれる値は予測不能です。つま り、 デバッガが強制的にプロセッサを再起動した場合、 再開アドレスは予測可能です。 また、 デバッガが PC を読み出した場合、 読み出される値は予測不能です。

• プロセッサがデバッグ状態のと き、 命令によって書き込まれない限り CPSR は変化しません。 具体的には、 CPSR の IT 実行状態ビッ トは、 命令の実行によって変更されません。 CPSR IT 実行状態ビッ トは、 命令の実行に影響しません。

• プロセッサが Rd == R15 かつ S == 0 のデータ処理命令を実行する場合、alu-out[0] は CPSR T ビッ トの現在の値と等しいこ とが必要です。 そ うでない場合、 プロセッサの動作は予測不能です。

ベクタキャ ッチ RA + 8 RA + 4 ベクタアドレス

外部デバッグ要求信号の起動 RA + 8 RA + 4 実行を再開する命令のアドレス

デバッグ状態への移行要求コマンド RA + 8 RA + 4 実行を再開する命令のアドレス

OS ロ ッ ク解除イベン ト RA + 8 RA + 4 実行を再開する命令のアドレス

CTI デバッグ要求信号 RA + 8 RA + 4 実行を再開する命令のアドレス

a. 復帰アドレスは、 デバッグ例外からの復帰後にプロセッサが 初に実行する命令のアドレスです。 ウォ ッチポイン トにヒ ッ ト した命令のアドレスは、 WFAR にあ り ます。

表 11-41 デバッグ状態への移行後に読み出される PC の値 (続き)

デバッグイベン ト ARM Thumb 復帰アドレス (RAa ) の意味

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 11-45ID013111 Non-Confidential

Page 315: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

デバッグ

11.8.3 デバッグ状態での命令の実行

デバッグ状態では、 プロセッサは命令転送レジスタ (ITR) 経由で発行された命令を実行します。 デバッガが強制的にプロセッサで命令を実行するには、 DSCR[13] でこの機能を可能にする必要があ り ます。

プロセッサがデバッグ状態のと き、 CPSR の T および J ビッ トの値にかかわらず、ITR からの命令を常に ARM 命令セッ ト と してデコード します。

デバッグ状態で ITR 経由で実行される命令には、 次の制限が適用されます。

• 分岐命令、 および CPSR を変更する命令を除き、 プロセッサはすべての ARM命令を、 デバッグ状態でない場合と同様に実行します。

• 分岐命令 B、 BL、 BLX(1)、 BLX(2) は予測不能です。

• 通常は CPSR を更新する特定の命令は、 予測不能です。

• メモ リから PC に値をロードする命令は予測不能です。

11.8.4 デバッグ状態での CPSR への書き込み

デバッグ状態で CPSR を更新できる命令は、 MSR 命令のみです。 CPSR に書き込みを行う他のすべての ARMv7 命令、 つま り BX、 BXJ、 SETEND、 CPS、 RFE、 LDM(3)、 および Rd == R15 かつ S == 1 のデータ処理命令は予測不能です。

デバッグ状態では、 MSR および MRS 命令の CPSR 形式の動作は、 通常の状態と異な ります。

• デバッグ状態でないと き、 CPSR の実行状態ビッ ト を変更する MSR 命令は予測不能です。 ただし、 デバッグ状態では、 MSR 命令によって CPSR の実行状態ビッ ト を更新するこ とができます。 MSR 命令で CPSR の実行状態ビッ ト を直接変更した場合、 その後で命令同期バリ ア (ISB) シーケンスが必要です。

• デバッグ状態でないと き、 MRS 命令で CPSR の実行ビッ ト を読み出すと、 0 が読み出されます。 しかし、 デバッグ状態で MRS 命令を使用する と、 実行状態の実際の値が返されます。

デバッガは、 MSR 命令を使用して CPSR の実行状態ビッ トに書き込んだ後で、 ISB シーケンスを実行する必要があ り ます。 デバッガが、 これらのビッ トのいずれかに書き込みを行った後、 ISB シーケンスの前に、 MRS 命令を使用して CPSR を読み出した場合、 MRS によって返される値は予測不能です。 同様に、 デバッガが実行状態ビッ トにMSR で書き込みを行った後、 ISB シーケンスを実行する前に、 プロセッサで強制的にデバッグ状態を終了した場合、 プロセッサの動作は予測不能です。

11.8.5 特権

プロセッサがデバッグ状態のと き、 ITR 経由で発行された ARM 命令は、 特権操作を実行できるかど うかについて、 異なる規則に従います。 一般的な規則と して、 デバッグ状態ではすべての命令と操作が許可されます。

11.8.6 レジスタおよびメモリへのアクセス

プロセッサは通常とデバッグの両方の状態で、 CPSR のモードビッ トによ り示されるレジスタバンクおよびメモ リに常にアクセスします。 例えば、 CPSR のモードビッ トによ り、 プロセッサがユーザモードであるこ とが示されていれば、 ARM レジスタはユーザモードのバンクレジスタを読み出しまたは返し、 メモ リ アクセスは MPU に対して非特権と して提示されます。

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 11-46ID013111 Non-Confidential

Page 316: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

デバッグ

11.8.7 コプロセッサ命令

CP14 および CP15 命令は、 プロセッサのモードにかかわらず、 常にデバッグ状態で実行可能です。

11.8.8 非侵襲性デバッグへのデバッグ状態の影響

プロセッサの非侵襲性デバッグ機能は、 ETM およびパフォーマンス監視ユニッ ト(PMU) です。 これらの非侵襲性デバッグ機能はすべて、 プロセッサがデバッグ状態のと きは非稼働です。 詳細については、 第 4 章 システム制御コプロセッサおよび「ETM インタフェース」 (ページ 1-11) を参照して下さい。

プロセッサがデバッグ状態のと き、 次の規則が適用されます。

• ETM は、 すべての命令およびデータ転送を無視します。

• PMU イベン トはカウン ト されません。

• イベン トは ETM から不可視です。

• PMU のサイクルカウン ト レジスタ (CCNT) は停止します。

11.8.9 プロセッサのレジスタに対するデバッグイベン トの影響

デバッグ状態への移行時に、 プロセッサは汎用またはプログラムステータス レジスタを更新しません。 これには、 SPSR_abt および R14_abt レジスタも含まれます。 さらに、 プロセッサはコプロセッサレジスタを更新しません。 これには、 P15 IFSR、DFSR、 DFAR、 IFAR レジスタが含まれますが、 CP14 DSCR[5:2] (開始方法) ビッ トは除きます。 開始方法ビッ トは、 デバッグ状態への移行を引き起こしたデバッグイベン トの種類を示します。

注 デバッグ状態への移行時に、 プロセッサは WFAR レジスタを、 ウォッチポイン ト対象のアドレスにアクセスした命令のアドレスに、 次の値を加えたアドレスで更新します。

• ARM 状態では + 8

• Thumb 状態では + 4

11.8.10 デバッグ状態での例外

デバッグ状態では、 例外は次のよ うに処理されます。

リセッ ト この例外は、 プロセッサの通常の状態と同様に取得されます。 つま り、 システム リセッ トの結果として、 プロセッサはデバッグ状態を終了します。

プ リ フェ ッチアボート

プロセッサはデバッグ状態では命令をフェッチしないため、 この例外は決して発生しません。

デバッグ プロセッサは、 BKPT 命令を含めて、 デバッグイベン ト を無視します。

SVC プロセッサは SVC 例外を無視します。

未定義 デバッグ状態で未定義例外が発生する と、 プロセッサは次のよ うに動作します。

• PC、 CPSR、 SPSR_und、 R14_und は変更されません。

• プロセッサはデバッグ状態のままです。

• DSCR[8] (ステ ィ ッキー未定義ビッ ト ) がセッ ト されます。

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 11-47ID013111 Non-Confidential

Page 317: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

デバッグ

正確データアボート

デバッグ状態で正確データアボートが発生した場合、 プロセッサは次のよ うに動作します。

• PC、 CPSR、 SPSR_abt、 R14_abt は変更されません。

• プロセッサはデバッグ状態のままです。

• DSCR[6] (ステ ィ ッキー正確データアボート ビッ ト ) がセッ ト されます。

• DFSR と DFAR は、 アボートが通常の状態で発生した場合と同じ値に設定されます。

不正確データアボート

デバッグ状態で不正確データアボートが発生した場合、 CPSR A ビッ トの設定にかかわらず、 プロセッサは次のよ うに動作します。

• PC、 CPSR、 SPSR_abt、 R14_abt は変更されません。

• プロセッサはデバッグ状態のままです。

• DSCR[7] (ステ ィ ッキー不正確データアボート ビッ ト ) がセッ トされます。

• 不正確データアボートによ り、 プロセッサが例外開始シーケンスを実行するこ とはないため、 DFSR は変更されません。

• プロセッサは、 デバッグ状態の終了時に、 不正確データアボートに対する動作を行いません。 つま り、 不正確アボートは破棄されます。

デバッグ状態の開始および終了時の不正確データアボート

デバッグ状態の開始時に、 プロセッサはデータ同期バリ ア (DSB) シーケンスを実行し、 デバッグ動作の開始前に、 未解決の不正確データアボートが必ず検出されるようにします。

DSB 操作によって不正確データアボートが検出された場合、 プロセッサは CPSR Aビッ トがセッ ト されている場合と同様に、 そのイベン ト と種類を記録します。 このイベン ト をラ ッチするこ とで、 デバッグ状態の終了時に取得が可能になり ます。

デバッガは、 プロセッサで強制的にデバッグ状態を終了する前に、 DSB シーケンスを実行し、 デバッガによ り生成されたすべての不正確データアボートがデバッグ状態の間に検出され、 破棄されるこ とを保証する必要があ り ます。 デバッグ状態の終了後に、 プロセッサは以前に記録された不正確データアボートについて、 CPSR Aビッ トによ り許可されていれば、 対応する動作を行います。

11.8.11 デバッグ状態の終了

デバッガは、 次の方法によ り、 プロセッサで強制的にデバッグ状態を終了できます。

• DRCR[1] (再始動要求ビッ ト ) を 1 にセッ トする

• ク ロス ト リガ インタフェース (CTI) 外部再始動要求機構を使用する

いずれかの再始動要求が発生する と、 プロセッサは次の動作を行います。

1. DSCR[1] (コアの再起動) フラグをク リ アします。

2. デバッグ状態を終了します。

3. DSCR[0] (コア停止中) フラグをク リ アします。

4. DSCR[11] (DbgAck) ビッ トが 1 にセッ ト されていなければ、 DBGACK 信号をLOW に駆動します。

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 11-48ID013111 Non-Confidential

Page 318: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

デバッグ

5. CPSR の現在の値によって示されるプロセッサモードおよび状態で、 PC に 後に書き込まれたアドレスから命令の実行を開始します。 CPSR IT 実行状態ビットは再開され、 現在の値が再開の 初の命令に適用されます。

6. DSCR[1] (コアの再起動) フラグを 1 にセッ ト します。

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 11-49ID013111 Non-Confidential

Page 319: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

デバッグ

11.9 キャッシュデバッグ

こ こでは、 キャ ッシュデバッグについて説明します。 このセクシ ョ ンでは、 次に示すト ピッ クについて説明します。

• 「デバッグ状態でのキャ ッシュの汚染」• 「デバッグ状態でのキャ ッシュコ ヒーレンシ」• 「キャ ッシュ使用のプロファ イ リ ング」

11.9.1 デバッグ状態でのキャッシュの汚染

プロセッサがデバッグ状態である と きにデバッグ状態キャ ッシュ制御レジスタ(DSCCR) のビッ ト [0] が 0 にセッ ト されている と、 レベル 1 データキャ ッシュのラインフ ィルは行われません。

注 デバッグ状態では命令側のフェッチは発生しないため、 レベル 1 命令キャ ッシュの汚染を防止するための特別な機能は必要あ り ません。

11.9.2 デバッグ状態でのキャッシュコヒーレンシ

デバッガは、 デバッグ状態で、 次の目的のためメモ リ を更新できます。

• 命令を BKPT と置き換える、 または元の命令を復元する

• プロセッサがデバッグ状態を終了したと きに実行するためのコードをダウンロードする

どちらの状況でも、 デバッガは次の機能によ り、 キャ ッシュコ ヒーレンシを維持できます。

• プロセッサがデバッグ状態のと きに DSCCR のビッ ト [2] が 0 にセッ ト されている と、 プロセッサはレベル 1 データキャ ッシュにヒ ッ ト したすべてのメモ リ アクセスを、 メモ リ領域の属性にかかわらず、 ライ ト スルーと して扱います。 これによって、 デバッガが時間を必要とする、 デバイス固有のシーケンスを実行して、 キャ ッシュのク リーニング操作を行う必要なしに、 コード領域の変更がレベル 1 命令キャ ッシュから可視であるこ とが保証されます。

• コードがメモ リに書き込まれた後で、 デバッガは CP15 の命令キャ ッシュ全体の無効化操作、 または CP15 の命令キャ ッシュラインの無効化操作を実行できます。

注 通常、 プロセッサは特権モードでのみ、 CP15 の命令キャ ッシュ全体の無効化操作、または CP15 の命令キャ ッシュラインの無効化操作を実行できます。 しかし、 デバッグ状態では、 プロセッサはこれらの命令を、 特権モードで侵襲性デバッグが許可されていない場合でも、 実行できます。 この規則の例外によ り、 デバッガはコ ヒーレンシを維持できます。

11.9.3 キャッシュ使用のプロファイリング

パフォーマンス監視ユニッ ト (PMU) を使用して、 キャ ッシュ使用のプロファ イ リ ング情報を取得できます。 プロセッサは、 一定期間のキャ ッシュアクセスおよびミ スの回数をカウン トできます。 第 6 章 イベン ト とパフォーマンスモニタを参照して下さい。

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 11-50ID013111 Non-Confidential

Page 320: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

デバッグ

11.10 外部デバッグインタフェース

システムは、 プロセッサの APB スレーブポート を経由して、 メモ リマップされたデバッグレジスタにアクセスできます。 こ こでは、 APB インタフェース、 および他のデバッグ入力および出力信号について説明します。

• 「APB 信号」

• 「その他のデバッグ信号」• 「認証信号」 (ページ 11-52)

11.10.1 APB 信号

APB スレーブポートは、 AMBA アドバンス ト ペリ フェラルバス仕様 v3 に準拠しており、 デバッグアクセス ポート (DAP) に接続可能です。 この APB スレーブインタフェースは、 32 ビッ ト幅のデータ、 ス トール、 スレーブ生成のアボート、 および 10ビッ トのアドレス [11:2] による 4KB のメモ リのマッピングをサポート しています。追加の PADDRDBG31 信号によ り、 アクセスのソースがプロセッサに示されます。

外部デバッグインタフェース信号を、 表 A-12 (ページ A-17) に示します。

11.10.2 その他のデバッグ信号

こ こでは、 その他のデバッグ信号について説明します。

EDBGRQ

この信号は、 ホールト デバッグイベン ト を生成します。 つま り、 デバッグ状態に移行するよ うプロセッサに要求します。 このイベン トが発生する と、 DSCR[5:2] (デバッグ開始方法) ビッ トは b0100 にセッ ト されます。 EDBGRQ がアサート される場合、 DBGACK がアサート されるまで保持する必要があ り ます。 これを行わない場合、 プロセッサの動作は予測不能です。

DBGACK

プロセッサは、 システムがデバッグ状態に移行したこ とを示すため、 DBGACK をアサート します。 これは、 EDBGRQ 信号のハンドシェーク と して機能します。DBGACK 信号は、 デバッガによ り DSCR[10] (DbgAck) ビッ トが 1 にセッ ト されたときも、 HIGH に駆動されます。

DBGNOPWRDWN

プロセッサは、 デバイス電力オフおよびリセッ ト制御レジスタのビッ ト [0] が 1 のとき、 DBGNOPWRDWN をアサート します。 プロセッサの電力コン ト ローラは、 この信号が HIGH のと きはエミ ュレートモードで動作する必要があ り ます。

DBGROMADDR

DBGROMADDR 信号は、 デバッグ ROM の物理アドレスのビッ ト [31:12] を指定します。 これは構成入力で、 固定されているか、 プロセッサのリセッ ト時にのみ変更する必要があ り ます。 複数のデバッグ ROM を持つシステムでは、 このアドレスは ト ップレベル ROM のアドレスを指すよ うに固定する必要があ り ます。

DBGROMADDRV は、 DBGROMADDR が有効であるこ とを示す信号です。 アドレスを決定できない場合は、 DBGROMADDR は 0 に固定し、 DBGROMADDRV はLOW に固定する必要があ り ます。 これらの信号の値は、 デバッグ ROM アドレスレジスタ (DRAR) から読み出すこ とができます。

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 11-51ID013111 Non-Confidential

Page 321: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

デバッグ

DBGSELFADDR

DBGSELFADDR 信号は、 デバッグ ROM の物理アドレスから、 プロセッサの APBポートが 4KB デバッグレジスタ マップのベースにマップされている物理アドレスまでのオフセッ トの、 ビッ ト [31:12] を指定します。 これは構成入力で、 固定されているか、 プロセッサのリセッ ト時にのみ変更する必要があ り ます。

DBGSELFADDRV は、 DBGSELFADDR が有効であるこ とを示す信号です。 オフセッ ト を決定できない場合、 DBGSELFADDR は 0 に固定し、 DBGSELFADDRV はLOW に固定する必要があ り ます。 これらの信号の値は、 デバッグ自己アドレスレジスタ (DSAR) から読み出すこ とができます。

DBGRESTART

DBGRESTART 信号は、 プロセッサをデバッグホールト状態から移行させるために使用されます。 プロセッサは DBGRESTART への応答と して DBGRESTARTED をアサート してから、 DBGRESTART のアサートが解除されたと きに命令のフェッチを開始します。

DBGRESTARTED

プロセッサは、 DBGRESTART 要求への応答と して、 デバッグホールト状態を終了して通常の実行状態に戻る準備が整った時点で DBGRESTARTED をアサート します。

DBGTRIGGER

プロセッサは、 システムがデバッグ要求を受け付け、 デバッグ状態への移行を試みるこ とを示すため、 DBGTRIGGER をアサート します。 これは、 EDBGRQ 信号のハンドシェークではあ り ません。 DBGTRIGGER の後で DBGACK が HIGH に移行しない場合、 メモ リ システムは応答を停止しており、 プロセッサはデバッグ状態に移行していません。

その他のデバッグ信号を、 表 A-13 (ページ A-17) に示します。

11.10.3 認証信号

有効な認証信号と、 関連付けられているデバッグアクセス許可の一覧を、 表 11-42 に示します。 認証信号は、 プロセッサモードの特定のサブセッ トでのみ動作のデバッグやト レースを行う よ うに、 プロセッサを構成するために使用されます。

認証信号の変更

NIDEN および DBGEN 入力信号は、 特定の値に固定されるか、 何かの外部デバイスによって制御されます。

表 11-42 認証信号の制限

DBGENa

a. DBGEN が LOW のと き、 プロセッサはこの信号が LOW の

と きにホールト デバッグイベン トが無視されるこ とを除い

て、 DSCR[15:14] が b00 であるかのよ うに動作します。

NIDEN 非侵襲性デバッグが、 ユーザおよび特権モードで許可される

0 0 いいえ

X 1 はい

1 0 はい

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 11-52ID013111 Non-Confidential

Page 322: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

デバッグ

プロセッサで実行されているソフ ト ウェアが、 認証信号を駆動する外部デバイスを制御する場合、 安全なシーケンスを使用して変更を行う必要があ り ます。

1. 実装固有の命令シーケンスを実行して、 信号の値を変更します。 例えば、 特定の値をシステムペリ フェラルの制御レジスタに書き込む、 単一の STR 命令を実行します。

2. 手順 1 にメモリ操作が含まれる場合、 データ同期バリア (DSB) 命令を発行します。

3. DSCR または認証ステータスレジスタをポーリ ングし、 プロセッサがこれらの信号の値の変化を既に検出しているかど うかをチェッ ク します。 これは、 システムが信号の変化をプロセッサに発行するまで、 DSB の完了後何サイ クルかが必要な場合があるためです。

4. 命令同期バリ ア (ISB) 命令を発行します。

ソフ ト ウェアは、 この手順が完了するまで、 認証信号の新しい値に依存するデバッグまたは分析操作を実行できません。 デバッガがデバッグ状態で、 ITR 経由でプロセッサを制御する と きにも、 同じ規則が適用されます。

DBGEN および NIDEN 信号の値は、 DSCR[17:16]、 DSCR[15:14]、 または認証ステータスレジスタをポーリ ングするこ とで判定できます。

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 11-53ID013111 Non-Confidential

Page 323: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

デバッグ

11.11 デバッグ機能の使用

こ こでは、 プロセッサのデバッグ機能の使用法について、 ARM プロセッサで実行されるコードを作成するソフ ト ウェア技術者の観点と、 プロセッサ用のデバッグツールを作成する開発者の観点の両方から、 いくつかの例を紹介します。 前者向けの例は、 ARM アセンブリ言語で作成されたものです。 後者向けの例は、 使用するアルゴリズムを伝えるこ とを意図した疑似 C 言語で作成されています。 これらの例は、 デバッガ用のソースコードを意図したものではあ り ません。

デバッガの例では、 次のよ うな一組の疑似関数を使用します。

uint32 ReadDebugRegister(int reg_num){

// read the value of the debug register reg_num at address reg_num << 2}

WriteDebugRegister(int reg_num, uint32 val){

// write the value val to the debug register reg_num at address reg_num >> 2}

デバッグ状態を使用するための基本的な機能は、 ITR 経由で命令を実行するこ とです。 ARM 命令を ITR 経由で実行するためのシーケンスを、 例 11-1 に示します。

例 11-1 ITR 経由での ARM 命令の実行

ExecuteARMInstruction(uint32 instr){

// Step 1. Poll DSCR until InstrCompl is set.repeat{

dscr := ReadDebugRegister(34);}until (dscr & (1<<24));// Step 2. Write the opcode to the ITR.WriteDebugRegister(33, instr);// Step 3. Poll DSCR until InstrCompl is set.repeat{

dscr := ReadDebugRegister(34);}until (dscr & (1<<24);

}

こ こでは、 次の ト ピッ クについて説明します。

• 「デバッグ通信チャネル」 (ページ 11-55)

• 「ブレークポイン ト と ウォ ッチポイン トのプログラム」 (ページ 11-57)

• 「シングルステップ実行」 (ページ 11-60)

• 「デバッグ状態への移行」 (ページ 11-61)

• 「デバッグ状態の終了」 (ページ 11-62)

• 「デバッグ状態でのレジスタおよびメモ リへのアクセス」 (ページ 11-63)

• 「電力オフのエ ミ ュレート 」 (ページ 11-71)

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 11-54ID013111 Non-Confidential

Page 324: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

デバッグ

11.11.1 デバッグ通信チャネル

外部デバッガがプロセッサとの間でデータを送受信する方法には、 次の 2 つがあ ります。

• デバッグ通信チャネル (プロセッサがデバッグ状態でない場合)。 デバッグ通信チャネルは、 外部デバッガと、 プロセッサで実行されているソフ ト ウェアとの間の通信に使用される、 リ ソースの組と して定義されます。

• プロセッサに ARM 命令を強制的に実行させる機構 (プロセッサがデバッグ状態の場合)。 詳細については、 「デバッグ状態での命令の実行」 (ページ 11-46)を参照して下さい。

DCC にアクセスするための規則

プロセッサ側では、 デバッグ通信チャネルには次のリ ソースがあ り ます。 • CP14 デバッグレジスタ c5 (DTR)• CP14 デバッグレジスタ c1 (DSCR)

プロセッサに実装されている ARMv7 デバッグアーキテクチャは、 次のよ うに動作します。

• CP14 DSCR の読み出しで、 DTRTXfull フラグについて 1 が返された場合、 次の規則が適用されます。

— 次に CP14 DTR を読み出すと、 有効なデータが返され、 DTRTXfull がク リアされます。 これら 2 つの CP14 命令の間に、 プ リ フェ ッチフラ ッシュは必要あ り ません。

— 次に CP14 DTR に書き込んだ場合、 結果は予測不能です。

• CP14 DSCR の読み出しで、 DTRTXfull フラグについて 0 が返された場合、 次の規則が適用されます。

— 次に CP14 DTR を読み出した場合、 返される値は予測不能です。

— 次に CP14 DTR へ書き込むと、 意図した 32 ビッ ト ワードが書き込まれ、DTRRXfull が 1 にセッ ト されます。 これら 2 つの CP14 命令の間に、 プリフェ ッチフラ ッシュは必要あ り ません。

DTR アクセスについて非ブロ ッキングモードが選択されている場合、 メモ リマップされた DSCR、 メモ リマップされた DTRRX、 および DTRTX レジスタについて、 次の条件が真になり ます。

• メモ リマップされた DSCR の読み出しで、 DTRTXfull フラグについて 0 が返された場合、 次の規則が適用されます。

— メモ リマップされた DTRTX からの次の読み出しは無視されます。 例えば、DTRRXfull の内容は変更されず、 読み出しで返される値は予測不能です。

— メモ リマップされた DTRRX へ次に書き込むと、 プロセッサに有効なデータが渡され、 DTRTXfull が 1 にセッ ト されます。

• メモ リマップされた DSCR の読み出しで、 DTRTXfull フラグについて 1 が返された場合、 次の規則が適用されます。

— メモ リマップされた DTRTX を次に読み出すと、 有効なデータが返され、DTRRXfull がク リ アされます。

— メモ リマップされた DTRRX への次の書き込みは無視され、 DTRTXfull とDTRRX の内容はいずれも変更されません。

ARMv7 デバッグアーキテクチャは、 DCC リ ソースについて他の使用法をサポート していません。 具体的には、 プロセッサは次のものをサポート していません。

• メモ リマップされた DTRRX および DTRTX レジスタにアクセスするための、CP14 DSCR[30:29] フラグ

• CP14 DTR にアクセスするための、 メモ リマップされた DSCR[30:29] フラグのポーリ ング

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 11-55ID013111 Non-Confidential

Page 325: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

デバッグ

DCC へのソフ トウェアアクセス

プロセッサ上で実行されているソフ ト ウェアが、 ターゲッ トからホス トへのチャネルを経由してデバッガへデータを送信する場合、 例 11-2 に示す命令シーケンスを使用できます。

例 11-2 ターゲッ トからホストへのデータ転送 (ターゲッ ト側)

; r0 -> word to send to the debuggerWriteDCC MRC p14, 0, PC, c0, c1, 0

BEQ WriteDCCMCR p14, 0, Rd, c0, c5, 0BX lr

ホス トからターゲッ トへのチャネルを経由してデバッガへデータを送信するには、例 11-3 の命令シーケンスを使用します。

例 11-3 ホストからターゲッ トへのデータ転送 (ターゲッ ト側)

; r0 -> word sent by the debuggerReadDCC MRC p14, 0, PC, c0, c1, 0

BCC ReadDCCMRC p14, 0, Rd, c0, c5, 0BX lr

DCC へのデバッガアクセス

デバッグ状態でないと き、 デバッガは外部インタフェース経由で DCC にアクセスできます。 次に示すのは、 このよ う なアクセスを行う疑似コード操作の例です。

ターゲッ トからホス トへのデータ転送のコードを、 例 11-4 に示します。

例 11-4 ターゲッ トからホストへのデータ転送 (ホスト側)

uint32 ReadDCC(){

// Step 1. Poll DSCR until DTRTXfull is set to 1.repeat{

dscr := ReadDebugRegister(34);}until (dscr & (1<<29));// Step 2. Read the value from DTRTX.dtr_val := ReadDebugRegister(35);

return dtr_val;}

ホス トからターゲッ トへのデータ転送のコードを、 例 11-5 に示します。

例 11-5 ホストからターゲッ トへのデータ転送 (ホスト側)

WriteDCC(uint32 dtr_val)

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 11-56ID013111 Non-Confidential

Page 326: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

デバッグ

{// Step 1. Poll DSCR until DTRRXfull is clear.repeat{

dscr := ReadDebugRegister(34);}until (!(dscr & (1<<30)));// Step 2. Write the value to DTRRX.WriteDebugRegister(32, dtr_val);

}

プロセッサが実行中に、 DCC がデータチャネルと して使用される場合、 DCC を定期的にポーリ ングするのが適切な場合があ り ます。

DCC をポーリ ングするコードを、 例 11-6 に示します。

例 11-6 DCC のポーリング (ホスト側)

PollDCC{

dscr := ReadDebugRegister(34);if (dscr & (1<<29)){

// DTRTX (target -> host transfer register) fulldtr := ReadDebugRegister(35)ProcessTargetToHostWord(dtr);

}if (!(dscr & (1<<30))){

// DTRRX (host -> target transfer register) emptydtr := GetNextHostToTargetWord()WriteDebugRegister(32, dtr);

}}

11.11.2 ブレークポイン ト とウォッチポイン トのプログラム

こ こでは、 次の操作について説明します。

• 「単純なブレークポイン ト とバイ ト アドレス選択のプログラム」• 「単純なアラインド ウォ ッチポイン トの設定」 (ページ 11-58)

• 「単純なアンアラインド ウォ ッチポイン トの設定」 (ページ 11-59)

単純なブレークポイン ト とバイ トアドレス選択のプログラム

単純なブレークポイン ト をプログラムする と きは、 制御レジスタのバイ ト アドレス選択ビッ ト を適切に設定する必要があ り ます。 ARM 状態のブレークポイン トでは、この作業は単純です。 Thumb 状態では、 アドレスに基づいて値を計算する必要があり ます。

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 11-57ID013111 Non-Confidential

Page 327: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

デバッグ

単純なブレークポイン トの場合、 表 11-43 に示すよ うに、 他の制御ビッ トの設定をプログラムできます。

単純なブレークポイン ト を設定する命令シーケンスを、 例 11-7 に示します。

例 11-7 単純なブレークポイン トの設定

SetSimpleBreakpoint(int break_num, uint32 address, iset_t isa){

// Step 1. Disable the breakpoint being set.WriteDebugRegister(80 + break_num, 0x0);// Step 2. Write address to the BVR, leaving the bottom 2 bits zero.WriteDebugRegister(64 + break_num, address & 0xFFFFFFC);// Step 3. Determine the byte address select value to use.case (isa) of{// Note: The processor does not support Jazelle or ThumbEE states,// but the ARMv7 Debug architecture doeswhen JAZELLE:

byte_address_select := (1 << (address & 3));when THUMB:

byte_address_select := (3 << (address & 2));when ARM:

byte_address_select := 15;}// Step 4. Write the mask and control register to enable the breakpoint.

breakpointWriteDebugRegister(80 + break_num, 7 | (byte_address_select << 5));

}

単純なアラインドウォッチポイン トの設定

も単純で一般的な種類のウォッチポイン トは、 メモ リの特定のアドレスへの書き込みを監視するものです。 実践的には、 データオブジェク トは一定範囲のアドレスにまたがっていますが、 そのサイズに応じた境界にアラインしているため、 ブレークポイン トの場合と同様の方法でバイ ト アドレス選択ビッ ト を設定する必要があ ります。

表 11-43 単純なブレークポイン ト用に BCR に書き込む値

ビッ ト 書き込む値 説明

[31:29] 0b000 予約

[28:24] 0b00000 ブレークポイン トのアドレスマスク

[23] 0b0 予約

[22:20] 0b000 BVR の意味

[19:16] 0b0000 リ ンク付き BRP 番号

[15:9] 0b00 予約

[8:5] アドレスから派生 バイ ト アドレス選択

[4:3] 0b00 予約

[2:1] 0b11 スーパバイザアクセス制御

[0] 0b1 ブレークポイン ト イネーブル

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 11-58ID013111 Non-Confidential

Page 328: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

デバッグ

単純なウォッチポイン トの場合、 表 11-44 に示すよ うに、 他の制御ビッ トの設定をプログラムできます。

単純なアラインド ウォッチポイン ト を設定するコードを、 例 11-8 に示します。

例 11-8 単純なアラインドウォッチポイン トの設定

SetSimpleAlignedWatchpoint(int watch_num, uint32 address, int size){

// Step 1. Disable the watchpoint being set.WriteDebugRegister(112 + watch_num, 0);// (Step 2. Write address to the WVR, leaving the bottom 3 bits zero.WriteDebugRegister(96 + watch_num, address & 0xFFFFFF8);// Step 3. Determine the byte address select value to use.case (size) of{when 1:

byte_address_select := (1 << (address & 7));when 2:

byte_address_select := (3 << (address & 6));when 4:

byte_address_select := (15 << (address & 4));when 8:

byte_address_select := 255;}// Step 4. Write the mask and control register to enable the watchpoint.

breakpointWriteDebugRegister(112 + watch_num, 23 | (byte_address_select << 5));

}

単純なアンアラインドウォッチポイン トの設定

バイ ト アドレス選択ビッ ト を使用して、 ダブルワード (64 ビッ ト ) までの特定のアンアラインドオブジェク ト を、 単一のウォッチポイン トで監視できます。 ただし、これはすべての場合に対応できるわけではな く、 多くの場合には 2 番目のウォッチポイン トが必要にな り ます。

表 11-44 単純なウォッチポイン ト用に WCR に書き込む値

ビッ ト 書き込む値 説明

[31:29] 0b000 予約

[28:24] 0b00000 ウォッチポイン トのアドレスマスク

[23:21] 0b000 予約

[20] 0b0 リ ンク イネーブル

[19:16] 0b0000 リ ンク付き BRP 番号

[15:13] 0b00 予約

[12:5] アドレスから派生 バイ ト アドレス選択

[4:3] 0b10 ロード / ス ト アアクセス制御

[2:1] 0b11 特権アクセス制御

[0] 0b1 ウォッチポイン ト イネーブル

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 11-59ID013111 Non-Confidential

Page 329: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

デバッグ

いくつかの例を、 表 11-45 に示します。

単純なアンアラインド ウォ ッチポイン ト を設定するコードを、 例 11-9 に示します。

例 11-9 単純なアンアラインドウォッチポイン トの設定

bool SetSimpleWatchpoint(int watch_num, uint32 address, int size){

// Step 1. Disable the watchpoint being set.WriteDebugRegister(112 + watch_num, 0x0);// Step 2. Write addresses to the WVRs, leaving the bottom 3 bits zero.WriteDebugRegister(96 + watch_num, (address & 0xFFFFFF8));// Step 3. Determine the byte address select value to use.byte_address_select := (1 << size) - 1;byte_address_select := (byte_address_select) << (address & 7);// Step 4. Write the mask and control register to enable the breakpoint.WriteDebugRegister (112 + watch_num, 5'b23 | ((byte_address_select & 0xFF) << 5));// Step 5. Set second watchpoint if required. This is the case if the byte// address mask is more than 8 bits.if (byte_address_select >= 256){

WriteDebugRegister(112 + watch_num + 1, 0);WriteDebugRegister(96 + watch_num + 1, (address & 0xFFFFFF8) + 8);WriteDebugRegister(112 + watch_num + 1 23| ((byte_address_select & 0xFF00) >> 3));

}// Step 6. Return flag to caller indicating if second watchpoint was used.return (byte_address_select >= 256)

}

11.11.3 シングルステップ実行

ブレークポイン ト不一致ビッ ト を使用して、 プロセッサのシングルステップ実行を実装できます。 高レベルのステップ実行とは異なり、 シングルステップの実装では、命令を 1 つずつ実行する低レベルのステップ実行が実装されます。 高レベルのステップ実行では、 命令がデコード されて次の命令のアドレスが決定され、 そのアドレスにブレークポイン トが設定されます。

表 11-45 ウォッチポイン ト対象のオブジェク トに対応するバイ トアドレス マスクの例

オブジェク トのアドレス

オブジェク トのサイズ (バイ ト)

初の

アドレスの値

初のバイ トアドレス マスク

2 番目のアドレスの値

2 番目のバイ トアドレス マスク

0x00008000 1 0x00008000 0b00000001 不要 -

0x00008007 1 0x00008000 0b10000000 不要 -

0x00009000 2 0x00009000 0b00000011 不要 -

0x0000900c 2 0x00009000 0b11000000 不要 -

0x0000900d 2 0x00009000 0b10000000 0x00009008 0b00000001

0x0000A000 4 0x0000A000 0b00001111 不要 -

0x0000A003 4 0x0000A000 0b01111000 不要 -

0x0000A005 4 0x0000A000 0b11100000 0x0000A008 0b00000001

0x0000B000 8 0x0000B000 0b11111111 不要 -

0x0000B001 8 0x0000B000 0b11111110 0x0000B008 0b00000001

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 11-60ID013111 Non-Confidential

Page 330: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

デバッグ

命令をシングルステップ実行するためのコードを、 例 11-10 に示します。

例 11-10 命令のシングルステップ実行

SingleStepOff(uint32 address){

bkpt := FindUnusedBreakpointWithMismatchCapability();SetComplexBreakpoint(bkpt, address, 4 << 20);

}

注 例 11-10 で、 SetComplexBreakpoint() の 3 番目のパラ メータは、 BCR[22:20] の値を示しています。

この方法で命令のシングルステップ実行を行う と、 次に実行される命令へステップするのと結果が同じである とは限り ません。 特定の状況では、 次に実行される命令はステップ実行されたのと同じ命令の可能性があ り ます。

も単純な例は、 (B .) など自分に分岐する命令です。 この場合、 意図した動作はほとんどの場合、 自分への分岐です。 この方法は多くの場合、 割り込み待ちの方法として使用されるためです。

よ り複雑な例と しては、 関数からの復帰が同じ場所に戻る場合が挙げられます。 例えば、 単純な再帰的関数は次のよ うに終了するこ とがあ り ます。

BL ThisFunctionPOP {saved_registers, pc}

この場合、 POP 命令は関数の開始時に保存された リ ンクレジスタをロード し、 その リンクレジスタがこ こに示されている BL 命令によって作成されたものであれば、 POP 命令を指しているこ とにな り ます。 このため、 このシングルステップ コードは呼び出しスタ ッ ク全体を、 1 レベルずつ戻るのではな く、 初の呼び出し元まで巻き戻すことにな り ます。 高レベル、 低レベルのいずれのステップ実行方式を使用しても、 このよ う なコードをシングルステップ実行するのは不可能です。

11.11.4 デバッグ状態への移行

デバッグ状態へ移行する と き、 デバッガはプロセッサの、 PC やすべてのレジスタを含む状態を読み出し、 DSCR の開始方法ビッ トから、 例外の原因を判定できます。

デバッグ状態に移行するコードを、 例 11-11 に示します。

例 11-11 デバッグ状態への移行

OnEntryToDebugState(PROCESSOR_STATE *state){

// Step 1. Read the DSCR to determine the cause of debug entry.state->dscr := ReadDebugRegister(34);// Step 2. Issue a DataSynchronizationBarrier instruction if required;// this is not required by Cortex-R4 but is required for ARMv7// debug.if ((state->dscr & (1<<19)) == 0){

ExecuteARMInstruction(0xEE070F9A)// Step 3. Poll the DSCR for DSCR[19] to be set.repeat{

dscr := ReadDebugRegister(34);}

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 11-61ID013111 Non-Confidential

Page 331: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

デバッグ

until (dscr & (1<<19));}// Step 4. Read the entire processor state. The function ReadAllRegisters// reads all general-purpose registers for all processor mode, and saves// the data in “state” .ReadAllRegisters(state);// Step 5. Based on the CPSR (processor state), determine the actual restart// addressif (state->cpsr & (1<<5);{

// set the T bit to Thumb statestate->pc := state->pc - 4;

}elseif (state->cpsr & (1<<24)){

// Set the J bit to Jazelle state. Note: ARM Cortex-R4 does not support// Jazelle state but ARMv7 debug does.state->pc := state->pc - IMPLEMENTATION DEFINED

value;}else{

// ARM statestate->pc := state->pc - 8;

}// Step 6. If the method of entry was Watchpoint Occurred, read the WFAR// registermethod_of_debug_entry := ((state->dscr >> 2) & 0xF;if (method_of_debug_entry == 2 || method_of_debug_entry == 10){

state->wfar := ReadDebugRegister(6);}

}

11.11.5 デバッグ状態の終了

デバッグ状態を終了する と きは、 プログラムカウンタに必ず書き込みを行う必要があ り ます。 実行状態または CPSR を変更する必要がある と きは、 CPSR への書き込みは PC に影響を及ぼす可能性があるため、 PC よ り も前に CPSR に書き込む必要があり ます。

デバッガがプログラムの状態を復元してから、 デバッグ実行制御レジスタのビッ ト[1] に書き込むこ とで再起動を行えます。 その後で、 コアが再起動したかど うかを判定するため、 デバッグステータスおよび制御レジスタのビッ ト [1] をポーリ ングする必要があ り ます。

デバッグ状態を終了するコードを、 例 11-12 に示します。

例 11-12 デバッグ状態の終了

ExitDebugState(PROCESSOR_STATE *state){

// Step 1. Update the CPSR valueWriteCPSR(state->cpsr);// Step 2. Restore any registers corrupted by debug state. The function// WriteAllRegisters restores all general-purpose registers for all// processor modes apart from R0.WriteAllRegisters(state);// Step 3. Write the return address.WritePC(state->pc);// Step 4. Writing the PC corrupts R0 therefore, restore R0 now.WriteRegister(0, state->r0);// Step 5. Write the restart request bit in the DRCR.WriteDebugRegister(36, 1<<1);

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 11-62ID013111 Non-Confidential

Page 332: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

デバッグ

// Step 6. Poll the RESTARTED flag in the DSCR.repeat{

dscr := ReadDebugRegister(34);}until (dscr & (1<<1));

}

11.11.6 デバッグ状態でのレジスタおよびメモリへのアクセス

こ こでは、 次の操作について説明します。

• 「DCC 経由でのレジスタの読み書き」

• 「デバッグ状態での PC の読み出し」 (ページ 11-64)

• 「デバッグ状態での CPSR の読み出し」 (ページ 11-64)

• 「デバッグ状態での CPSR への書き込み」 (ページ 11-65)

• 「メモ リの読み出し」 (ページ 11-65)

• 「レジスタの高速読み出し / 書き込み」 (ページ 11-67)

• 「メモ リの高速読み出し / 書き込み」 (ページ 11-68)

• 「コプロセッサレジスタへのアクセス」 (ページ 11-69)

DCC 経由でのレジスタの読み書き

デバッガで単一のレジスタを読み出すには、 例 11-13 に示すシーケンスを使用できます。 このシーケンスは、 「ITR 経由での ARM 命令の実行」 (ページ 11-54) および「ターゲッ トからホス トへのデータ転送 (ホス ト側)」 (ページ 11-56) に示す他の 2つのシーケンスに依存します。

例 11-13 ARM レジスタの読み出し

uint32 ReadARMRegister(int Rd){

// Step 1. Execute instruction MCR p14, 0, Rd, c0, c5, 0 through the ITR.ExecuteARMInstruction(0xEE000E15 + (Rd<<12));// Step 2. Read the register value through DTRTX.reg_val := ReadDCC();return reg_val;

}

ARM レジスタに書き込む同様のシーケンスを、 例 11-14 に示します。

例 11-14 ARM レジスタへの書き込み

WriteRegister(int Rd, uint32 reg_val){

// Step 1. Write the register value to DTRRX.WriteDCC(reg_val);// Step 2. Execute instruction MRC p14, 0, Rd, c0, c5, 0 to the ITR.ExecuteARMInstruction(0xEE100E15 + (Rd<<12));

}

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 11-63ID013111 Non-Confidential

Page 333: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

デバッグ

デバッグ状態での PC の読み出し

PC を読み出すコードを、 例 11-15 に示します。

例 11-15 PC の読み出し

ReadPC(){

// Step 1. Save R0saved_r0 := ReadRegister(0);// Step 2. Execute the instruction MOV r0, pc through the ITR.ExecuteARMInstruction(0xE1A0000F);// Step 3. Read the value of R0 that now contains the PC.pc := ReadRegister(0);// Step 4. Restore the value of R0.WriteRegister(0, saved_r0);return pc;

}

注 デバッグ状態を終了する と き、 同様のシーケンスで PC に書き込み、 復帰アドレスを設定できます。

デバッグ状態での CPSR の読み出し

CPSR を読み出すコードを、 例 11-16 に示します。

例 11-16 CPSR の読み出し

ReadCPSR(){

// Step 1. Save R0.saved_r0 := ReadRegister(0);// Step 2. Execute instruction MRS R0, CPSR through the ITR.ExecuteARMInstruction(0xE10F0000);// Step 3. Read the value of R0 that now contains the CPSRcpsr_val := ReadRegister(0);// Step 4. Restore the value of R0.WriteRegister(0, saved_r0);return cpsr_val;

}

注 特権モードでは、 同様のシーケンスで SPSR を読み出すこ とができます。

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 11-64ID013111 Non-Confidential

Page 334: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

デバッグ

デバッグ状態での CPSR への書き込み

CPSR に書き込むコードを、 例 11-17 に示します。

例 11-17 CPSR への書き込み

WriteCPSR(uint32 cpsr_val){

// Step 1. Save R0.saved_r0 := ReadRegister(0);// Step 2. Write the new CPSR value to R0.WriteRegister(0, cpsr_val);// Step 3. Execute instruction MSR R0, CPSR through the ITR.ExecuteARMInstruction(0xE12FF000);// Step 4. Execute a PrefetchFlush instruction through the ITR.ExecuteARMInstruction(9xEE070F95);// Step 5. Restore the value of R0.WriteRegister(0, saved_r0);

}

メモリの読み出し

メモ リのバイ ト を読み出すコードを、 例 11-18 に示します。

例 11-18 メモリのバイ トの読み出し

uint8 ReadByte(uint32 address, bool &aborted){

// Step 1. Save the values of R0 and R1.saved_r0 := ReadRegister(0);saved_r1 := ReadRegister(1);// Step 2. Write the address to R0.WriteRegister(0, address);// Step 3. Execute the instruction LDRB R1,[R0] through the ITR.ExecuteARMInstruction(0xE5D01000);// Step 4. Read the value of R1 that contains the data at the address.datum := ReadRegister(1);// Step 5. Restore the corrupted registers R0 and R1.WriteRegister(0, saved_r0);WriteRegister(1, saved_r1);// Step 6. Check the DSCR for a sticky abort.aborted := CheckForAborts();return datum;

}

メモ リ アクセスの後でアボート をチェッ クするコードを、 例 11-19 に示します。

例 11-19 メモリアクセス後のアボートのチェ ック

bool CheckForAborts(){

// Step 1. Check the DSCR for a sticky abort.dscr := ReadDebugRegister(34);if (dscr & ((1<<6) + (1<<7)){

// Step 2. Clear the sticky flag by writing DRCR[2].WriteDebugRegister(36, 1<<2);return true;

}else

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 11-65ID013111 Non-Confidential

Page 335: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

デバッグ

{return false;

}}

注 同様のシーケンスを使用して、 ハーフワードを メモ リから読み出す、 またはメモ リへ書き込むこ とができます。

メモ リのブロ ッ クを読み書きするには、 データ命令を、 ポス ト インデクス アドレシングを使用するものに置き換えます。 次に例を示します。

LDRB R1, [R0],1

これによって、 順に並んでいるワードごとにアドレス値を再ロードする手間を省くこ とができます。

メモ リのバイ トのブロ ッ クを読み出すコードを、 例 11-20 に示します。

例 11-20 メモリのバイ トのブロックの読み出し

ReadBytes(uint32 address, bool &aborted, uint8 *data, int nbytes){

// Step 1. Save the value of R0 and R1.saved_r0 := ReadRegister(0);saved_r1 := ReadRegister(1);// Step 2. Write the address to R0WriteRegister(0, address);while (nbytes > 0){

// Step 3. Execute instruction LDRB R1,[R0],1 through the ITR.ExecuteARMInstruction(0xE4D01001);

// Step 4. Read the value of R1 that contains the data at the// address.

*data++ := ReadRegister(1);--nbytes;

}// Step 5. Restore the corrupted registers R0 and R1.WriteRegister(0, saved_r0);WriteRegister(1, saved-r1);// Step 6. Check the DSCR for a sticky abort.aborted := CheckForAborts();return datum;

}

メモ リのワードを読み出すシーケンスを、 例 11-21 に示します。

注 DCC のダイレク ト メモ リ アクセス機能を使用する と、 よ り高速にワードを読み書きできます。 「メモ リの高速読み出し / 書き込み」 (ページ 11-68) を参照して下さい。

例 11-21 メモリのワードの読み出し

uint32 ReadWord(uint32 address, bool &aborted){

// Step 1. Save the value of R0.saved_r0 := ReadRegister(0);// Step 2. Write the address to R0.

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 11-66ID013111 Non-Confidential

Page 336: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

デバッグ

WriteRegister(0, address);// Step 3. Execute instruction LDC p14, c5, [R0] through the ITR.ExecuteARMInstruction(0xED905E00);// Step 4. Read the value from the DTR directly.datum := ReadDCC();// Step 5. Restore the corrupted register R0.WriteRegister(0, saved_r0);// Step 6. Check the DSCR for a sticky abort.aborted := CheckForAborts();return datum;

}

レジスタの高速読み出し / 書き込み

複数のレジスタを連続して読み出す必要がある場合、 DCC をス トールモードにし、DCC のアクセスモード ビッ トに 1 を書き込むと、 処理を 適化できます。 詳細については、 「CP14 c1、 デバッグステータスおよび制御レジスタ」 (ページ 11-14) を参照して下さい。

DTR のアクセスモードを変更するシーケンスを、 例 11-22 に示します。

例 11-22 DTR のアクセスモードの変更

SetDTRAccessMode(int mode){

// Step 1. Write the mode value to DSCR[21:20].dscr := ReadDebugRegister(34);dscr := (dscr & ~(0x3<<20)) | (mode<<20);WriteDebugRegister(34, dscr);

}

ス トールモードでレジスタを読み出すシーケンスを、 例 11-23 に示します。

例 11-23 ストールモードでのレジスタ読み出し

ReadRegisterStallMode(int Rd){

// Step 1. Write the opcode for MCR p14, 0, Rd, c5, c0 to the ITR.// Write stalls until the ITR is ready.WriteDebugRegister(33, 0xEE000E15 + (Rd<<12));// Step 2. Read the register value through the DCC. Read stalls until // DTRTX is readyreg_val := ReadDebugRegister(32);return reg_val;

}

ス トールモードでレジスタに書き込むシーケンスを、 例 11-24 に示します。

例 11-24 ストールモードでのレジスタ書き込み

WriteRegisterInStallMode(int Rd, uint32 value){

// Step 1. Write the value to the DTRRX.// Write stalls until the DTRRX is ready.WriteDebugRegister(32, value);// Step 2. Write the opcode for MRC p14, 0, Rd, c5, c0 to the ITR.// Write stalls until the ITR is ready.

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 11-67ID013111 Non-Confidential

Page 337: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

デバッグ

WriteDebugRegister(33, 0xEE100E15 + (Rd<<12));}

注 ス トールモードでプロセッサにレジスタを転送するには、 命令が ITR に書き込まれ、DTR との間で値が読み書きされるたびに DSCR をポーリ ングする必要はあ り ません。 プロセッサは、 前の命令が完了するか、 DTR レジスタで操作の準備が完了するまで、 PREADYDBG 信号を使用してス トールします。

メモリの高速読み出し / 書き込み

こ こでは、 DTR アクセスモードを使用してメモ リ を高速に読み出すコードの例を紹介します。

メモ リのワードのブロ ッ クを読み出すシーケンスを、 例 11-25 に示します。

例 11-25 メモリのワードのブロックの読み出し

ReadWords(uint32 address, bool &aborted, uint32 *data, int nwords){

// Step 1. Write the value 0b01 to DSCR[21:20] for stall mode.SetDTRAccessMode(1);// Step 2. Save the value of R0.saved_r0 := ReadRegisterInStallMode(0);// Step 3. Write the address to read from to the DTRRX.// Write stalls until the DTRRX is ready.WriteRegisterInStallMode(0, address);// Step 4. Write the opcode for LDC p14, c5, [R0], 4 to the ITR.// Write stalls until the ITR is ready.WriteDebugRegister(33, 0xECB05E01);// Step 5. Write the value 0b10 to DSCR[21:20] for fast mode.SetDCCAccessMode(2);// Step 6. Loop reading out the data.// Each time a word is read from the DTRTX, the instruction is reissued.while (nwords > 1){

*data++ = ReadDebugRegister(35);--nwords;

}// Step 7. Write the value 0b00 to DSCR[21:20] for non-blocking mode.SetDTRAccessMode(0);// Step 8. Need to wait for the final instruction to complete. If there// was an abort, this will complete immediately.do{ dscr := ReadDebugRegister(34);

}until (dscr & (1<<24));// Step 9: Check for aborts.aborted := CheckForAborts();// Step 10: Read the final word from the DCC.if (!aborted) *data := ReadDCC();// Step 11. Restore the corrupted register r0.WriteRegister(0, saved_r0);

}

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 11-68ID013111 Non-Confidential

Page 338: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

デバッグ

メモ リにワードのブロ ッ クを書き込むシーケンスを、 例 11-26 に示します。

例 11-26 メモリへのワードのブロックの書き込み (高速ダウンロード)

WriteWords(uint32 address, bool &aborted, uint32 *data, int nwords){

// Step 1. Save the value of R0.saved_r0 := ReadRegister(0);// Step 2. Write the value 0b10 to DSCR[21:20] for fast mode.SetDTRAccessMode(2);// Step 3. Write the opcode for MRC p14, 0, R0, c5, c0 to the ITR.// Write stalls until the ITR is ready but the instruction is not issued.WriteDebugRegister(33, 0xEE100E15);// Step 4. Write the address to read from to the DTRRX// Write stalls until the ITR is ready, but the instruction is not reissued.WriteDebugRegister(32, address);// Step 5. Write the opcode for STC p14, c5, [R0], 4 to the ITR.// Write stalls until the ITR is ready but the instruction is not issued.WriteDebugRegister(33, 0xECA05E01);// Step 6. Loop writing the data.// Each time a word is written to the DTRRX, the instruction is reissued.while (nwords > 0){

WriteDebugRegister(35, *data++);--nwords;

}// Step 7. Write the value b00 to DSCR[21:20] for normal mode.SetDTRAccessMode(0);// Step 8. Restore the corrupted register R0.WriteRegister(0, saved_r0);// Step 9. Check the DSCR for a sticky abort.aborted := CheckForAborts();

}

注 これらの関数は、 転送されるデータ量が増えるにつれて、 転送するデータワード とデバッグレジスタへのアクセス回数との比率が、 1:1 の理想値に近付きます。

データを メモ リに書き込んだあとで、 メモ リ ウ ィ ンド ウが正し く更新されるこ とを保証するため、 データ同期バリ ア命令を実行する必要があ り ます。

コプロセッサレジスタへのアクセス

コプロセッサレジスタにアクセスするシーケンスは、 PC や CPSR へのものと同じです。 つま り、 そのレジスタを ARM レジスタに転送する命令を 初に実行してから、DTR 経由で値を読み戻します。

コプロセッサレジスタを読み出すシーケンスを、 例 11-27 に示します。

例 11-27 コプロセッサレジスタの読み出し

uint32 ReadCPReg(int CPnum, int opc1, int CRn, int CRm, int opc2){

// Step 1. Save R0.saved_r0 := ReadRegister(0);// Step 2. Execute instruction MCR p15, 0, R0, c0, c1, 0 through the ITR.ExecuteARMInstruction(0xEE000010 + (CPnum<<8) + (opc1<<21) + (CRn<<16) + CRm + (opc2<<5));// Step 3. Read the value of R0 that now contains the CP register.CP15c1 := ReadRegister(0);// Step 4. Restore the value of R0.

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 11-69ID013111 Non-Confidential

Page 339: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

デバッグ

WriteRegister(0, saved_r0);return CP15c1;

}

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 11-70ID013111 Non-Confidential

Page 340: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

デバッグ

11.12 電力管理機能を持つシステムのデバッグ

プロセッサには、 電力管理機能を持つシステムをデバッグするための機能が用意されています。 こ こでは、 アイ ドル状態で OS が電力削減手法を実行するシナリオについて解説します。

アイ ドル状態での消費電力を削減するために OS が実行する手法は各種存在しますが、 大き く 2 つのグループに分けられます。

スタンバイ プロセッサの状態を保持したまま消費電力を削減する手法です。

電力オフ プロセッサの状態を保持せずに消費電力を削減する手法です。 回復には、 電力レベルが復元した後でプロセッサを リセッ ト し、 プロセッサの状態を再インス トールする必要があ り ます。

スタンバイでは、 使用できな くなるのはコアだけで、 OS の電力削減状態と してはも侵襲性の低いものです。 デバッグ設定はク リ アされません。 この場合、 プロセッサは次のよ うに動作します。

• プロセッサがスタンバイ状態で、 ホールト デバッグイベン トが発生する と、 プロセッサは次の動作を行います。

— スタンバイ状態を終了する。

— 割り込み待ち (WFI) 命令を終了する。

— デバッグ状態に移行する。

• プロセッサがスタンバイ状態で、 APB ポート アクセスを検出した場合、 一時的にスタンバイ状態から移行し、 ト ランザクシ ョ ンを完了します。 プロセッサがスタンバイからウェークアップする間、 PREADYDBG 信号が LOW に保持されるこ とで、 APB アクセスは保留されます。

11.12.1 電力オフのエミ ュレート

PRCR のビッ ト [0] に書き込むこ とで、 デバッガは DBGNOPWRDWN 出力をアサート します。 この信号は、 システム電力コン ト ローラに接続し、 HIGH のと きにコン トローラがエミ ュレートモードで動作する という使用モデルを想定したものです。

プロセッサからの電力オフ要求が発生したと き、 電力コン ト ローラがエ ミ ュレートモードであれば、 プロセッサや ETM の電力をオフにせず、 通常のモード と同様に動作します。

電力オフのエミ ュレートでは、 デバッグレジスタの設定が電力オフイベン トで消失しないため、 エラーが存在しないオペレーティングシステム上で実行されるアプリケーシ ョ ンのデバッグに理想的です。 ただし、 次の点が必ず守られるよ う注意して下さい。

• プロセッサへの nIRQ および nFIQ 割り込みがエミ ュレーシ ョ ンの一部と して外部的にマスク され、 これらの割り込みによってパイプラインから WFI 命令が退出するこ とがない。

• リ セッ ト コン ト ローラは電力オン時に nSYSPORESET ではなく nRESET をアサートする。 電力オン時に nSYSPORESET をアサートする と、 プロセッサ内部のデバッグレジスタがク リ アされます。

• 電力オフと電圧の安定に必要な時間の要素は、 電力オフのエミ ュレーシ ョ ンでは考慮されません。 これは、 電圧が回復するまでの待ち時間が固定されているのではなく、 ク ローズドループ システムによってプロセッサへの供給電圧を監視して電圧の回復を制御するシステムで問題とな り ます。

• エミ ュレーシ ョ ンでは、 電力オフ時の状態の消失はモデル化されないため、 状態の保存および回復ルーチンに存在するエラーを見つけられないこ とがあり ます。

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 11-71ID013111 Non-Confidential

Page 341: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

デバッグ

• DBGNOPWRDWN 信号を 1 にセッ ト してもプロセッサの電力がオンになる とは限らないため、 終了後デバッグセッシ ョ ンにデバッガを接続するこ とはできません。 プロセッサの電力が既にオフになっている と きに DBGNOPWRDWNを 1 にセッ ト した場合の影響は実装定義で、 システム設計者によって決定されます。

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 11-72ID013111 Non-Confidential

Page 342: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

第 12 章 FPU のプログラマモデル

本章では、 浮動小数点ユニッ ト (FPU) のプログラマモデルについて説明します。Cortex-R4F プロセッサは、 オプシ ョ ンの FPU を搭載している Cortex-R4 プロセッサです。 本章では、 プロセッサという一般的な用語を使用した場合、 Cortex-R4F プロセッサのみを意味します。

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

• 「FPU のプログラマモデルについて」 (ページ 12-2)

• 「汎用レジスタ」 (ページ 12-3)

• 「システムレジスタ」 (ページ 12-4)

• 「動作モード」 (ページ 12-10)

• 「IEEE 754 規格への準拠」 (ページ 12-11)

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 12-1ID013111 Non-Confidential

Page 343: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

FPUのプログラマモデル

12.1 FPU のプログラマモデルについて

FPU には、 VFPv3-D16 アーキテクチャ と、 共通 VFP サブアーキテクチャ v2 が実装されます。 これには、 VFPv3 アーキテクチャの命令セッ ト も含まれます。 VFPv3 命令セッ トについては、 『ARM アーキテクチャ リ ファレンスマニュアル』 を参照して下さい。

12.1.1 FPU の機能

FPU は ARM ベクタ浮動小数点 v3 アーキテクチャの実装で、 16 個の倍精度レジスタが含まれます (VFPv3-D16)。 IEEE 754 規格と呼ばれる、 『ANSI/IEEE Std 754-1985, IEEE Standard for Binary Floating-Point Arithmetic』 に準拠した浮動小数点計算機能が提供されています。 FPU は、 『ARM アーキテクチャ リ ファレンスマニュアル』 に記載されている、 VFPv3 アーキテクチャのすべてのデータ処理命令とデータタイプをサポート します。

FPU は、 単精度および倍精度の加算、 減算、 乗算、 除算、 積和演算、 平方根演算を完全にサポート します。 また、 固定小数点と浮動小数点のデータ形式の相互変換、および浮動小数点定数命令も提供します。 FPU は、 ベクタでのデータ処理操作をハード ウェアではサポート しません。 ベクタに対して動作するデータ処理命令はすべて、 未定義例外を生成します。 必要なら、 その後でソフ ト ウェアによ り動作をエミ ュレートできます。

12.1.2 VFPv3-D16 アーキテクチャについて

VFPv3-D16 アーキテクチャには、 16 個の倍精度レジスタのみが含まれています。VFPv3 のデフォルトでは、 32 個の倍精度レジスタが含まれます。 命令がレジスタD16 ~ D31 のいずれかにアクセスを試みる と、 未定義例外が生成されます。

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 12-2ID013111 Non-Confidential

Page 344: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

FPUのプログラマモデル

12.2 汎用レジスタ

FPU には、 VFP レジスタバンクが実装されています。 このバンクは、 ARM レジスタバンク とは別のものです。

VFP レジスタバンクは、 2 つの明示的なエイ リ アスビューを使用して参照できます。レジスタバンクの 2 つのビューと、 ワードおよびダブルワードのレジスタのオーバラ ップ方法を、 図 12-1 に示します。

12.2.1 レジスタバンクの FPU ビュー

FPU のレジスタバンクは、 次のよ うに解釈できます。

• 64 ビッ トのダブルワードレジスタ 16 個、 D0~ D15

• 32 ビッ トのシングルワードレジスタ 32 個、 S0~ S31

• これらのビューに含まれるレジスタの組み合わせ

図 12-1 FPU のレジスタバンク

レジスタ間のマッピングは次のとおりです。

• S<2n> は、 D<n> の下位半分にマッピングされます。

• S<2n+1> は、 D<n> の上位半分にマッピングされます。

例えば、 D6 の値の下位半分にアクセスするには S12 に、 上位半分にアクセスするにはS13 にアクセスします。

...

D0

D1

D2

D3

D14

D15

S0S1S2S3S4S5S6S7

S28S29S30S31

...

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 12-3ID013111 Non-Confidential

Page 345: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

FPUのプログラマモデル

12.3 システムレジスタ

VFPv3 アーキテクチャには、 次のシステムレジスタが記載されています。

• 「浮動小数点システム ID レジスタ、 FPSID」 (ページ 12-5)

• 「浮動小数点ステータスおよび制御レジスタ、 FPSCR」 (ページ 12-6)

• 「浮動小数点例外レジスタ、 FPEXC」 (ページ 12-7)

• 「メディアおよび VFP 機能レジスタ、 MVFR0 および MVFR1」 (ページ 12-8)

Cortex-R4F FPU の VFP システムレジスタを、 表 12-1 に示します。

注 FPSID、 MVFR0、 MVFR1 レジスタは読み出し専用です。 これらのレジスタへの書き込みは無視されます。

表 12-2 に示すよ うに、 いくつかの VFP システムレジスタは、 特権モードでのみアクセス可能です。

表 12-2 に示すよ うに、 VFP システムレジスタへのアクセスには、 特権モードが必要な場合があ り ます。 特権モードが必要な場合、 非特権モードで命令がレジスタへのアクセスを試みる と、 未定義命令例外が発生します。

VFP システムレジスタがアクセス可能であるためには、 表 12-2 に示されている規則に従い、 VFP がコプロセッサアクセス レジスタに従ってアクセス可能な必要があ ります。 詳細については、 「c1、 コプロセッサアクセス レジスタ」 (ページ 4-44) を参照して下さい。

表 12-1 VFP システムレジスタ

レジスタ FMXR/FMRX <reg> フ ィールド アクセスタイプ リセッ ト時の状態

浮動小数点システム ID レジスタ、 FPSID b0000 読み出し専用 0x4102314xa

浮動小数点ステータスおよび制御レジスタ、FPSCR

b0001 読み出し / 書き込み 0x00000000

浮動小数点例外レジスタ、 FPEXC b1000 読み出し / 書き込み 0x00000000

VFP 機能レジスタ 0、 MVFR0 b0111 読み出し専用 0x10110221

VFP 機能レジスタ 1、 MVFR1 b0110 読み出し専用 0x00000011

a. FPSID のビッ ト [3:0] は、 製品のリ ビジ ョ ンによって異なり ます。 詳細については、 FPSID レジスタの説明を参照して下さい。

表 12-2 VFP システムレジスタへのアクセス

レジスタ

特権アクセス ユーザアクセス

FPEXC EN = 0 FPEXC EN = 1 FPEXC EN = 0 FPEXC EN = 1

FPSID 許可 許可 禁止 禁止

FPSCR 禁止 許可 禁止 許可

MVFR0、MVFR1

許可 許可 禁止 禁止

FPEXC 許可 許可 禁止 禁止

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 12-4ID013111 Non-Confidential

Page 346: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

FPUのプログラマモデル

注 すべてのハード ウェア ID 情報は、 特権アクセス専用です。

FPSID には特権アクセスのみ許可されます。

これは、 VFPv2 から VFPv3 への変更点です。

MVFR レジスタには特権アクセスのみ許可されます。

ユーザコードは、 システムコールを発行して、 どの機能がサポート されているかを判断する必要があ り ます。

次に示すセクシ ョ ンでは、 VFP システムレジスタについて説明します。

• 「浮動小数点システム ID レジスタ、 FPSID」

• 「浮動小数点ステータスおよび制御レジスタ、 FPSCR」 (ページ 12-6)

• 「浮動小数点例外レジスタ、 FPEXC」 (ページ 12-7)

• 「メディアおよび VFP 機能レジスタ、 MVFR0 および MVFR1」 (ページ 12-8)

12.3.1 浮動小数点システム ID レジスタ、 FPSID

FPSID レジスタは読み出し専用レジスタで、 特権モードでのみアクセス可能です。このレジスタは、 どの VFP 実装が使用されているかを示します。

FPSID レジスタのビッ ト配置を、 図 12-2 に示します。

図 12-2 浮動小数点システム ID レジスタの形式

FPSID レジスタの各ビッ ト値の意味を、 表 12-3 に示します。

HW

431 24 23 22 16 15 8 7 4 3 0

表 12-3 FPSID レジスタのビッ トの機能

ビッ ト フ ィールド 機能

[31:24] 実装者 ARM Limited。

0x41 = A

[23] ハードウェアまたはソフ ト ウェア

0 = ハードウェア実装

[22:16] サブアーキテクチャバージ ョ ン

共通 VFP サブアーキテクチャ v2a を含む、 VFP アーキテクチャ v3 またはそれ以降。

0x02

[15:8] 部品番号 0x31 = Cortex-R4F

[7:4] バリ アン ト 0x4 = Cortex-R4F

[3:0] リ ビジ ョ ン このフ ィールドの値の詳細については、 「製品のリ ビジ ョ ン情報」 (ページ 1-24)を参照して下さい。

a. 共通 VFP サブアーキテクチャの詳細については、 『ARM アーキテクチャ リ ファレンスマニュアル』 を参照して下さい。

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 12-5ID013111 Non-Confidential

Page 347: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

FPUのプログラマモデル

12.3.2 浮動小数点ステータスおよび制御レジスタ、 FPSCR

FPSCR は、 特権モード と非特権モードの両方でアクセス可能な読み出し / 書き込みレジスタです。 図 12-3 で DNM と記載されているビッ トはすべて、 将来の拡張用に予約されています。 これらのビッ トは、 0 に初期化する必要があ り ます。 これらのビッ トが変更されないこ とを保証するために、 初期化コード以外のコードでは、FPSCR に書き込むと きに読み出し - 変更 - 書き込みの手法を使用する必要があ り ます。 この規則に従わない場合、 将来のシステムで予測不能な結果が起きる可能性があ り ます。

FPSCR レジスタのビッ ト配置を、 図 12-3 に示します。

図 12-3 浮動小数点ステータスおよび制御レジスタの形式

FPSCR レジスタの各ビッ ト値の意味を、 表 12-4 に示します。

IXC

IDC

DNM

DZE

IOE

UFE

OFE

DNM

IXE

IDE

LEN

DNM

N Z C V

UFC

OFC

DZC

IOC

QC

RMODE

STRIDE

DN

FZ

DNM

31 30 29 28 27 26 25 24 23 22 21 20 19 18 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0

表 12-4 FPSCR レジスタのビッ トの機能

ビッ ト フ ィールド 機能

[31] N 比較の結果がよ り少ないの場合にセッ ト されます。 リセッ ト時の値は 0 です。

[30] Z 比較の結果が等しいの場合にセッ ト されます。 リセッ ト時の値は 0 です。

[29] C 比較の結果が等しい、 よ り大きい、 または順序付けなしの場合にセッ ト されます。リセッ ト時の値は 0 です。

[28] V 比較の結果が順序付けなしの場合にセッ ト されます。 リセッ ト時の値は 0 です。

[27] QC 変更不可 (DNM)/ 読み出し値 0(RAZ)

[26] DNM DNM

[25] DN デフォルト NaN モード イネーブルビッ ト 。

0 = デフォルト NaN モードが不可能です。 これはリセッ ト時の値です。

1 = デフォルト NaN モードが可能です。

[24] FZ Flush-to-Zero モード イネーブルビッ ト。

0 = Flush-to-Zero モードが不可能です。 これはリセッ ト時の値です。

1 = Flush-to-Zero モードが可能です。

[23:22] RMODE 丸めモード制御フ ィールド。

b00 = 近似値への丸め (RN) モード。 これはリセッ ト時の値です。

b01 = プラス無限大への丸め (RP) モード

b10 = マイナス無限大への丸め (RM) モード

b11 = 0 への丸め (RZ) モード

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 12-6ID013111 Non-Confidential

Page 348: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

FPUのプログラマモデル

12.3.3 浮動小数点例外レジスタ、 FPEXC

FPEXC レジスタは読み出し / 書き込みレジスタで、 特権モードでのみアクセス可能です。

EN ビッ ト (FPEXC[30]) は、 VFP イネーブルビッ トです。 EN をク リ アする と VFP 機能が非稼働になり、 特権付きでのシステムレジスタへのアクセスを除くすべてのVFP 命令は未定義例外を生成します。 EN ビッ トは、 リセッ ト時にク リ アされます。

FPEXC レジスタのビッ ト配置を、 図 12-4 に示します。

図 12-4 浮動小数点例外レジスタの形式

[21:20] STRIDE ベクタス ト ラ イ ドを示します。 リセッ ト時の値は 0x0 です。

[19] DNM DNM

[18:16] LEN ベクタ長を示します。 リセッ ト時の値は 0x0 です。

[15] IDE RAZ

[14:13] DNM DNM

[12] IXE RAZ

[11] UFE RAZ

[10] OFE RAZ

[9] DZE RAZ

[8] IOE RAZ

[7] IDC 非正規数入力の累積フラグ。 リセッ ト時の値は 0 です。

[6:5] DNM DNM

[4] IXC 不正確の累積フラグ。 リセッ ト時の値は 0 です。

[3] UFC アンダーフローの累積フラグ。 リセッ ト時の値は 0 です。

[2] OFC オーバフローの累積フラグ。 リセッ ト時の値は 0 です。

[1] DZC 0 による除算の累積フラグ。 リセッ ト時の値は 0 です。

[0] IOC 無効演算の累積フラグ。 リセッ ト時の値は 0 です。

表 12-4 FPSCR レジスタのビッ トの機能 (続き)

ビッ ト フ ィールド 機能

EN

31 30 29 0

DEX

28

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 12-7ID013111 Non-Confidential

Page 349: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

FPUのプログラマモデル

FPEXC レジスタの各ビッ ト値の意味を、 表 12-5 に示します。

12.3.4 メディアおよび VFP 機能レジスタ、 MVFR0 および MVFR1

VFP 機能レジスタ (MVFR0 および MVFR1) は読み出し専用レジスタで、 FPU でサポート されている機能を示します。 これらのレジスタには、 特権モードでのみアクセス可能です。

MVFR0 レジスタのビッ ト配置を、 図 12-5 に示します。

図 12-5 MVFR0 レジスタの形式

MVFR0 レジスタの各ビッ ト値の意味を、 表 12-6 に示します。

MVFR1 レジスタのビッ ト配置を、 図 12-6 (ページ 12-9) に示します。

表 12-5 浮動小数点例外レジスタのビッ トの機能

ビッ ト フ ィールド 機能

[31] 予約 RAZ

[30] EN VFP イネーブルビッ ト。 EN をセッ トする と、 VFP 機能が稼働します。 リセッ ト時には

EN ビッ トがク リ アされます。

[29] DEX プロセッサがベクタをサポート していれば実行されたはずのベクタ命令によって、 未定義例外が取得された場合にセッ ト されます。 このフ ィールドは、 他の理由で未定義例外が取得された場合にはク リ アされます。 リセッ ト時の値は 0 です。

[28:0] 予約 RAZ

RBSVRM TE SPSR D DP

31 28 27 24 23 20 19 16 15 12 11 8 7 4 3 0

表 12-6 MVFR0 レジスタのビッ トの機能

ビッ ト フ ィールド 機能

[31:28] RM すべての VFP 丸めモードがサポート されています。

0x1

[27:24] SV VFP シ ョートベクタはサポート されていません。

0x0

[23:20] SR VFP ハードウェア平方根演算がサポート されています。

0x1

[19:16] D VFP ハードウェア除算がサポート されています。

0x1

[15:12] TE ト ラ ップされない例外処理のみを選択できます。

0x0

[11:8] DP VFPv3 で倍精度がサポート されています。

0x2

[7:4] SP VFPv3 で単精度がサポート されています。

0x2

[3:0] RB 16 × 64 ビッ トのメディア レジスタバンクがサポート されています。

0x1

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 12-8ID013111 Non-Confidential

Page 350: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

FPUのプログラマモデル

図 12-6 MVFR1 レジスタの形式

MVFR1 レジスタの各ビッ ト値の意味を、 表 12-7 に示します。

FZI DNSP LS

31 20 19 16 15 12 11 8 7 4 3 0

表 12-7 MVFR1 レジスタのビッ トの機能

ビッ ト フ ィールド 機能

[31:20] - 予約

[19:16] SP VFP での単精度浮動小数点演算のサポート。

0b0000 = サポート されていません。

[15:12] I VFP での整数演算のサポート。

0b0000 = サポート されていません。

[11:8] LS VFP でのロード / ス ト ア命令のサポート。

0b0000 = サポート されていません。

[7:4] DN NaN 値の伝搬が VFP でサポート されています。

0x1

[3:0] FZ 完全非正規化算術演算が VFP でサポート されています。

0x1

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 12-9ID013111 Non-Confidential

Page 351: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

FPUのプログラマモデル

12.4 動作モード

各種のアプリ ケーシ ョ ンに対応するため、 FPU には 3 つの動作モードが存在します。

• 「完全準拠モード」• 「Flush-to-Zero モード」

• 「デフォルト NaN モード」

12.4.1 完全準拠モード

完全準拠モードでは、 FPU はすべての動作を、 IEEE 754 規格に従ってハード ウェアで処理します。

12.4.2 Flush-to-Zero モード

FZ ビッ ト (FPSCR[24]) をセッ トする と、 Flush-to-Zero モードが可能になり ます。 このモードでは、 FPU は算術 CDP 演算の非正規化入力オペランドをすべて、 0 と して演算で扱います。 0 のオペランドから発生した例外は、 適切に通知されます。 VABS、VNEG、 VMOV は算術 CDP 演算とは見なされないため、 Flush-to-Zero モードの影響を受けません。 IEEE 754 規格で定義されているよ うに、 丸め前の結果が、 デスティネーシ ョ ンの精度で表現できる 小の正規化数値よ り も絶対値が小さい場合、 その結果は小さいと見なされ、 0 で置き換えられます。 IDC フラグ (FPSCR[7]) は、 入力フラ ッシュが行なわれたこ とを示します。 UFC フラグ (FPSCR[3]) は、 結果フラ ッシュが行なわれたこ とを示します。

12.4.3 デフォルト NaN モード

DN ビッ ト (FPSCR[25]) をセッ トする と、 デフォルト NaN モードが可能にな り ます。このモードでは、 入力に NaN が含まれている、 または NaN の結果を生成するすべての操作で、 結果と してデフォルト NaN が返されます。 仮数ビッ トの伝搬は、 VABS、VNEG、 VMOV 操作でのみ維持されます。 他のすべての CDP 操作では、 入力 NaN の仮数ビッ トに含まれている情報は無視されます。

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 12-10ID013111 Non-Confidential

Page 352: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

FPUのプログラマモデル

12.5 IEEE 754 規格への準拠

デフォルト NaN (DN) および Flush-to-Zero (FZ) モードが不可能なと き、 VFP の機能はハード ウェアで IEEE 754 規格に準拠します。 この準拠を実現するためにサポートコードは必要あ り ません。

VFP アーキテクチャでの IEEE 754 規格への準拠については、 『ARM アーキテクチャ リ ファレンスマニュアル』 を参照して下さい。

12.5.1 IEEE 754 規格の完全な実装

IEEE 754 規格に含まれている次の動作は、 VFP 命令セッ トでは提供されません。

• 剰余

• 浮動小数点数の整数値浮動小数点数への丸め

• 2 進数から 10 進数への変換

• 10 進数から 2 進数への変換

• 単精度値と倍精度値との直接比較

IEEE 754 規格を完全に実装するには、 これらの動作を実装したライブラ リ関数でVFP の機能を拡張する必要があ り ます。 利用可能なライブラ リ関数については、 『アプ リ ケーシ ョ ンノート 98、 VFP サポート コード』 を参照して下さい。

12.5.2 IEEE 754 規格の実装の選択

IEEE 754 規格で許可され、 VFPv3 アーキテクチャで使用されている実装選択のいくつかは、 『ARM アーキテクチャ リ ファレンスマニュアル』 に記載されています。

NaN 処理

指数フ ィールドが 大値で、 仮数フ ィールドが 0 以外の単精度値または倍精度値はすべて、 有効な NaN です。 仮数の 上位ビッ トが 0 の場合、 シグナル NaN (SNaN)を示します。 1 の場合、 クワイエッ ト NaN (QNaN) を示します。 2 つの NaN 値は、 いずれかのビッ トが異なる場合に別の NaN と して扱われます。 単精度と倍精度のデフォルト NaN 値を、 表 12-8 に示します。

ARM 浮動小数点機能およびライブラ リによる入力 NaN の処理は、 次のよ うに定義されます。

• 完全準拠モードでは、 NaN は 『ARM アーキテクチャ リ ファレンスマニュアル』に記載されているよ うに処理されます。 ハード ウェアは、 算術 CDP 命令について NaN を直接処理します。 データ転送操作では、 NaN は無効演算例外を引き起こ さずに転送されます。 算術以外の CDP 命令である VABS、 VNEG、 VMOV の場合、NaN は無効演算例外を引き起こ さずにコピーされ、 命令によって指定されていれば符号が変更されます。

表 12-8 デフォルト NaN 値

単精度 倍精度

符号 0 0

指数 0xFF 0x7FF

仮数 ビッ ト [22] = 1、 ビッ ト [21:0] = すべて 0 ビッ ト [51] = 1、 ビッ ト [50:0] = すべて 0

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 12-11ID013111 Non-Confidential

Page 353: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

FPUのプログラマモデル

• デフォルト NaN モードでは、 NaN オペランドを含む算術 CDP 命令は、 NaN オペランドの仮数部にかかわらず、 デフォルト NaN を返します。 算術 CDP 演算にSNaN が含まれている と、 IOC フラグ (FPSCR[0]) がセッ ト されます。 データ転送および非算術 CDP 命令による NaN の処理は、 完全準拠モードでの処理と同じです。

命令実行に対する NaN オペランドの影響の要約を、 表 12-9 に示します。

比較

比較結果によ り、 FPSCR レジスタのフラグが変更されます。 VMOV r15, FPSCR 命令 (従来の FMSTAT) を使用して、 現在のフラグを FPSCR レジスタから CPSR レジスタへ転送できます。 IEEE 754 規格の命題から ARM の条件へのマッピングについては、『ARM アーキテクチャ リ ファレンスマニュアル』 を参照して下さい。 使用するフラグは、 後続の ARM 命令の条件付き実行で、 IEEE 754 規格に定義されている命題がテス トできるよ うに選択されています。

アンダーフロー

Cortex-R4F の FPU は、 アンダーフロー例外を生成するため、 IEEE 754 規格に記載されている丸め前 形式の小さ さ と、 不正確な結果 形式の精度損失 を使用します。

Flush-to-Zero モードでは、 IEEE 754 規格の記載に従って、 丸め前に結果が小さい場合は 0 にフラ ッシュされ、 UFC フラグ (FPSCR[3]) がセッ ト されます。 Flush-to-Zeroモードについては、 『ARM アーキテクチャ リ ファレンスマニュアル』 を参照して下さい。

FPU が Flush-to-Zero モードでない場合、 非正規数のオペランドに対しても演算が実行されます。 演算で小さな結果が生成されなかった場合は、 計算結果が返され、UFC フラグ (FPSCR[3]) はセッ ト されません。 演算が不正確な場合は、 IXC フラグ(FPSCR[4]) がセッ ト されます。 演算で小さな結果が生成された場合、 結果は非正規数値または 0 値になり、 結果が不正確でもある場合は UFC フラグ (FPSCR[3]) がセット されます。

表 12-9 QNaN と SNaN の処理

命令の種類デフォルトNaN モード

QNaN オペランドがある場合 SNaN オペランドがある場合

算術 CDP

オフ 『ARM アーキテクチャ リ ファレンスマニュアル』 に記載されている規則に従い、 QNaN オペランド、 複数の QNaNオペランドが存在する場合にはそのいずれかが返されます。

IOCa がセッ ト されます。 SNaN は

クワイエッ ト化され、 『ARM アーキテクチャ リ ファレンスマニュアル』

に記載されている規則に従って、結果となる NaN が決定されます。

オン デフォルト NaN が返されます。 IOCa がセッ ト されます。 デフォル

ト NaN が返されます。

非算術 CDPオフ

NaN は、 必要に応じて符号が変更され、 デスティネーシ ョ ンに渡されます。オン

FCMP(Z) - 順序付け無しの比較が行なわれます。 IOC がセッ ト されます。 順序付け無

しの比較が行なわれます。

FCMPE(Z) - IOC がセッ ト されます。 順序付け無しの比較が行なわれます。

IOC がセッ ト されます。 順序付け無しの比較が行なわれます。

ロード / ス ト アオフ

すべての NaN が転送されます。オン

a. IOC は、 無効演算例外フラグ (FPSCR[0]) の略称です。

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 12-12ID013111 Non-Confidential

Page 354: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

FPUのプログラマモデル

12.5.3 例外

FPU には VFPv3 アーキテクチャが実装されており、 各命令での必要に応じて FPSCRレジスタの累積例外ステータスフラグがセッ ト されます。 FPU はユーザモード トラ ップをサポート していません。 FPSCR の例外イネーブルビッ トは読み出し値 0 で、書き込みはできません。 また、 プロセッサには FPIXC、 FPUFC、 FPOFC、 FPDZC、FPIDC、 FPIOC の 6 つの出力ピンが存在し、 それぞれが累積例外フラグのいずれか1 つの状態を反映します。 これらの出力の説明については、 「FPU 信号」 (ページ A-23) を参照して下さい。 これらの出力は、 2 次補助制御レジスタの対応するビッ トをセッ トするこ とで、 個別にマスクできます。

詳細については、 「補助制御レジスタ」 (ページ 4-38) を参照して下さい。

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 12-13ID013111 Non-Confidential

Page 355: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

第 13 章 統合テスト レジスタ

本章では、 プロセッサの統合テス ト レジスタの使用方法について説明します。 本章は次のセクシ ョ ンから構成されています。

• 「統合テス ト レジスタについて」 (ページ 13-2)

• 「統合テス ト レジスタのプログラ ミ ングと読み出し」 (ページ 13-3)

• 「統合テス トに使用されるプロセッサレジスタの概要」 (ページ 13-4)

• 「プロセッサ統合テス ト 」 (ページ 13-5)

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 13-1ID013111 Non-Confidential

Page 356: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

統合テスト レジスタ

13.1 統合テスト レジスタについて

プロセッサには統合テス ト レジスタが内蔵されており、 設計の整合性の確認や、 デバッグツールを使用して設計のトポロジ検出を行うために使用できます。 統合テスト レジスタの使用の制御には、 本章で説明する統合モード制御レジスタ (ITCTRL) も使用されます。

統合テス ト レジスタをプログラムする場合は、 すべての変更を同時に有効にする必要があ り ます。

統合テス ト レジスタ と統合モード制御レジスタの詳細については、 『ARM アーキテクチャ リ ファレンスマニュアル』 を参照して下さい。

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 13-2ID013111 Non-Confidential

Page 357: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

統合テスト レジスタ

13.2 統合テスト レジスタのプログラ ミングと読み出し

統合テス ト レジスタは、 デバッグ APB インタフェースを使用してプログラムします。 デバッグ APB インタフェースの使用方法については、 第 11 章 デバッグを参照して下さい。

13.2.1 APB を使用したソフ トウェアアクセス

APB を使用して、 次の要素を直接プログラムできます。

• スタンドアロン マクロセル

• CoreSight システム内のマクロセル

APB は、 周辺機器のプログラム可能な制御レジスタへのアクセスを提供します。 次のよ うな特徴があ り ます。

• 非パイプラインプロ ト コルです。 つま り、 1 つ目の転送が完了しない限り、 2つ目の転送を開始できません。

• 転送ごとに 2 サイクル以上が必要です。

APB 転送の詳細については、 『AMBA 3 APB プロ ト コル v1.0 仕様』 を参照して下さい。

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 13-3ID013111 Non-Confidential

Page 358: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

統合テスト レジスタ

13.3 統合テストに使用されるプロセッサレジスタの概要

プロセッサの統合テス ト レジスタ と統合モード制御レジスタ (ITCTRL) の一覧を、表 13-1 に示します。

表 13-1 統合テスト レジスタの概要

レジスタ名ベースオフセッ ト

デフォルト値 タイプクロックド メ イン

説明

統合テス ト レジスタ

ITETMIF 0xED8 -a WO CLK 「ITETMIF レジスタ (ETM インタフェース)」 (ページ 13-7) を参照

ITMISCOUT 0xEF8 n/a WO CLK 「ITMISCOUT レジスタ (その他の出力)」 (ページ 13-8) を参照

ITMISCIN 0xEFC -a RO CLK 「ITMISCIN レジスタ (その他の入力)」 (ページ 13-8) を参照

統合モード制御レジスタ

ITCTRL 0xF00 0 R/W CLK 「統合モード制御レジスタ (ITCTRL)」 (ページ 13-9) を参照

a. この値については、 レジスタの説明を参照して下さい。

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 13-4ID013111 Non-Confidential

Page 359: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

統合テスト レジスタ

13.4 プロセッサ統合テスト

こ こでは、 プロセッサに内蔵されている統合テス ト レジスタの動作と使用法について説明します。 また、 統合テス ト レジスタの使用を制御する統合モード制御レジスタについても説明します。 ITCTRL の詳細については、 『ARM アーキテクチャ リ ファレンスマニュアル』 を参照して下さい。

これらのレジスタにアクセスする場合は、 初に、 統合モード制御レジスタのビット [0] を 1 にセッ トする必要があ り ます。

• 書き込み専用統合テス ト レジスタを使用して、 プロセッサの一部の信号の出力を設定できます。 この方法で書き込み可能な信号を、 表 13-2 に示します。

• 読み出し専用統合テス ト レジスタを使用して、 プロセッサの一部の入力の状態を読み出すこ とができます。 この方法で読み出し可能な信号を、 表 13-3 (ページ 13-6) に示します。

ETM-R4 統合と組み合わせて使用可能な統合テス ト レジスタがあ り ます。 詳細については、 『ETM-R4 テクニカルリ ファレンス マニュアル』 を参照して下さい。

表 13-2 統合テスト レジスタで制御可能な出力信号

信号 レジスタ ビッ ト レジスタの説明

DBGRESTARTED ITMISCOUT [9] 「ITMISCOUT レジスタ (その他の出力)」 (ページ 13-8) を参照

DBGTRIGGER ITMISCOUT [8]

ETMWFIPENDING ITMISCOUT [5]

nPMUIRQ ITMISCOUT [4]

COMMTX ITMISCOUT [2]

COMMRX ITMISCOUT [1]

DBGACK ITMISCOUT [0]

EVNTBUS[46] ITETMIF [14] 「ITETMIF レジスタ (ETM インタフェース)」 (ページ 13-7) を参照

EVNTBUS[28, 0] ITETMIF [13:12]

ETMCID[31, 0] ITETMIF [11:10]

ETMDA[31, 0] ITETMIF [7:6]

ETMDCTL[11, 0] ITETMIF [5:4]

ETMDD[63, 0] ITETMIF [9:8]

ETMIA[31, 1] ITETMIF [3:2]

ETMICTL[13, 0] ITETMIF [1:0]

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 13-5ID013111 Non-Confidential

Page 360: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

統合テスト レジスタ

こ こでは、 次の ト ピッ クについて説明します。

• 「統合テス ト レジスタの使用」• 「統合テス トの実行」• 「ITETMIF レジスタ (ETM インタフェース)」 (ページ 13-7)

• 「ITMISCOUT レジスタ (その他の出力)」 (ページ 13-8)

• 「ITMISCIN レジスタ (その他の入力)」 (ページ 13-8)

• 「統合モード制御レジスタ (ITCTRL)」 (ページ 13-9)

13.4.1 統合テスト レジスタの使用

統合モード制御レジスタ (ITCTRL) のビッ ト [0] が b1 にセッ ト されている場合、 次の規則が適用されます。

• 書き込み専用統合テス ト レジスタに書き込まれた値は、 指定のマクロセル出力にマップされます。 例えば、 ITMISCOUT[0] に b1 を書き込むと、 DBGACK がHIGH にアサート されます。

• 読み出し専用統合テス ト レジスタから読み出された値は、 指定のマクロセル入力の値に対応します。 例えば、 ITMISCIN[9:8] を読み出すと、ETMEXTOUT[1:0] の値が得られます。

13.4.2 統合テストの実行

統合テス ト またはトポロジ検出を実行する場合、 次の点に注意して下さい。

• 統合テス ト中に他の ETM インタフェース信号によって値が変更されないこ とを保証する必要があ り ます。

• デバッグ状態ではプロセッサをホールトするこ とを強くお勧めします。 これは、 入力ピンと出力ピンの切り替えによって、 プロセッサの動作に悪影響が及ぶ可能性があるためです。 プロセッサがホールトするまで、 ITCTRL レジスタを設定しないで下さい。

ITCTRL レジスタを設定する と、 ETM インタフェース上の ト レース出力が停止して、 関連する統合レジスタに書き込まれたデータが出力されます。

統合テス ト またはトポロジ検出の実行後、 すなわち統合モード制御レジスタの設定後に、 システムを リセッ トする必要があ り ます。 これは、 切り替えられた信号が、接続されているデバイスに悪影響を及ぼす可能性があるためです。

表 13-3 統合テスト レジスタで読み出し可能な入力信号

信号 レジスタ ビッ ト レジスタの説明

DBGRESTART ITMISCIN [11] 「ITMISCIN レジスタ (その他の入力)」 (ページ 13-8) を参照

ETMEXTOUT[1:0] ITMISCIN [9:8]

nETMWFIREADY ITMISCIN [5]

nIRQ ITMISCIN [2]

nFIQ ITMISCIN [1]

EDBGRQ ITMISCIN [0]

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 13-6ID013111 Non-Confidential

Page 361: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

統合テスト レジスタ

13.4.3 ITETMIF レジスタ (ETM インタフェース)

オフセッ ト 0xED8 にある ITETMIF レジスタは書き込み専用です。 レジスタのビッ ト割り当てを、 図 13-1 に示します。

図 13-1 ITETMIF レジスタのビッ ト割り当て

ITETMIF レジスタに書き込む場合のフ ィールドを、 表 13-4 に示します。 このレジスタに書き込むと、 該当する出力ピンに書き込んだ値が出力されます。

31 5 4 3 0

EVNTBUS[28]

614 13 12 11 10 9 8 7 2 1

EVNTBUS[0]ETMCID[31]

ETMCID[0]ETMDD[63]ETMDD[0]

ETMDA[31]ETMDA[0]

ETMICTL[0]ETMICTL[13]ETMIA[1]ETMIA[31]ETMDCTL[0]ETMDCTL[11]

15

EVNTBUS[46]

表 13-4 ITETMIF レジスタのビッ ト割り当て

ビッ ト 名前 機能

[31:15] - 予約。 書き込み値 0。

[14] EVNTBUS[46] EVNTBUS[46] 出力ピンの値を設定します。a

a. r0px リ ビジ ョ ンのプロセッサでは使用できません。

[13] EVNTBUS[28] EVNTBUS[28] 出力ピンの値を設定します。

[12] EVNTBUS[0] EVNTBUS[0] 出力ピンの値を設定します。

[11] ETMCID[31] ETMCID[31] 出力ピンの値を設定します。

[10] ETMCID[0] ETMCID[0] 出力ピンの値を設定します。

[9] ETMDD[63] ETMDD[63] 出力ピンの値を設定します。

[8] ETMDD[0] ETMDD[0] 出力ピンの値を設定します。

[7] ETMDA[31] ETMDA[31] 出力ピンの値を設定します。

[6] ETMDA[0] ETMDA[0] 出力ピンの値を設定します。

[5] ETMDCTL[11] ETMDCTL[11] 出力ピンの値を設定します。

[4] ETMDCTL[0] ETMDCTL[0] 出力ピンの値を設定します。

[3] ETMIA[31] ETMIA[31] 出力ピンの値を設定します。

[2] ETMIA[1] ETMIA[1] 出力ピンの値を設定します。

[1] ETMICTL[13] ETMICTL[13] 出力ピンの値を設定します。

[0] ETMICTL[0] ETMICTL[0] 出力ピンの値を設定します。

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 13-7ID013111 Non-Confidential

Page 362: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

統合テスト レジスタ

13.4.4 ITMISCOUT レジスタ (その他の出力)

オフセッ ト 0xEF8 にある ITMISCOUT レジスタは書き込み専用です。 レジスタのビット割り当てを、 図 13-2 に示します。

図 13-2 ITMISCOUT レジスタのビッ ト割り当て

ITMISCOUT レジスタに書き込む場合のフ ィールドを、 表 13-5 に示します。 このレジスタに書き込むと、 該当する出力ピンに書き込んだ値が出力されます。

13.4.5 ITMISCIN レジスタ (その他の入力)

オフセッ ト 0xEFC にある ITMISCIN レジスタは読み出し専用です。 レジスタのビッ ト割り当てを、 図 13-3 (ページ 13-9) に示します。

31 5 4 3 0

nPMUIRQ

DBGTRIGGER

6 2 1

COMMTX

DBGACKCOMMRX

78910

DBGRESTARTED

ETMWFIPENDING

表 13-5 ITMISCOUT レジスタのビッ ト割り当て

ビッ ト 名前 機能

[31:10] - 予約。 書き込み値 0。

[9] DBGRESTARTED DBGRESTARTED 出力ピンの値を設定します。

[8] DBGTRIGGER DBGTRIGGER 出力ピンの値を設定します。

[7:6] - 予約。 書き込み値 0。

[5] ETMWFIPENDING ETMWFIPENDING 出力ピンの値を設定します。

[4] nPMUIRQ nPMUIRQ 出力ピンの値を設定します。

[3] - 予約。 書き込み値 0。

[2] COMMTX COMMTX 出力ピンの値を設定します。

[1] COMMRX COMMRX 出力ピンの値を設定します。

[0] DBGACK DBGACK 出力ピンの値を設定します。

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 13-8ID013111 Non-Confidential

Page 363: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

統合テスト レジスタ

図 13-3 ITMISCIN レジスタのビッ ト割り当て

ITMISCIN レジスタのビッ ト割り当てを、 表 13-6 に示します。

13.4.6 統合モード制御レジスタ (ITCTRL)

ITCTRL レジスタ (オフセッ ト 0xF00 にあるレジスタ 0x3C0) は、 読み出し / 書き込みレジスタです。 レジスタのビッ ト割り当てを、 図 13-4 に示します。

図 13-4 ITCTRL レジスタのビッ ト割り当て

31 10 9 8 7 4 3 2 0

ETMEXTOUT[1:0]

6 5

nETMWFIREADY

nFIQnIRQ

EDBGRQ

DBGRESTART

1112 1

表 13-6 ITMISCIN レジスタのビッ ト割り当て

ビッ ト 名前 機能

[31:12] - 予約。 読み出し値は未定義です。

[11] DBGRESTART DBGRESTART 入力ピンの値を読み出します。

[10] - 予約。 読み出し値は未定義です。

[9:8] ETMEXTOUT ETMEXTOUT[1:0] 入力ピンの値を読み出します。

[7:6] - 予約。 読み出し値は未定義です。

[5] nETMWFIREADY nETMWFIREADY 入力ピンを読み出します。 このピンはアクティブ LOW で

すが、 このビッ トの値は信号の物理的な状態と一致します。

0 = 入力ピンが LOW (アサート されている)

1 = 入力ピンが HIGH (アサート解除されている)

[4:3] - 予約。 読み出し値は未定義です。

[2] nFIQ nFIQ 入力ピンの値を読み出します。

[1] nIRQ nIRQ 入力ピンの値を読み出します。

[0] EDBGRQ EDBGRQ 入力ピンの値を読み出します。

31 01

INTMODE

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 13-9ID013111 Non-Confidential

Page 364: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

統合テスト レジスタ

ITCTRL レジスタのフ ィールドを、 表 13-7 に示します。

ITCTRL への書き込みによ り、 プロセッサをデフォルトの機能モードにするか、 統合テス ト または トポロジ検出のためにデバイスの入力と出力を直接制御できる統合モードにするかを制御できます。 詳細については、 『ARM アーキテクチャ リ ファレンスマニュアル』 を参照して下さい。

表 13-7 ITCTRL レジスタのビッ ト割り当て

ビッ ト アクセス リセッ ト時の値 名前 機能

[31:1] RAZ/SBZP - - 予約

[0] R/W 0 INTMODE プロセッサを通常動作モード と統合モードのどちらにするかを制御します。

b0 = 通常動作

b1 = 統合モードが稼働

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 13-10ID013111 Non-Confidential

Page 365: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

第 14 章 サイクルタイ ミングとインターロック動作

本章では、 プロセッサ上の命令のサイ クルタイ ミ ングと インターロ ッ ク動作について説明します。 本章は次のセクシ ョ ンから構成されています。

• 「サイ クルタイ ミ ングと インターロ ッ ク動作について」 (ページ 14-3)

• 「レジスタインターロ ッ クの例」 (ページ 14-6)

• 「データ処理命令」 (ページ 14-7)

• 「QADD、 QDADD、 QSUB、 QDSUB 命令」 (ページ 14-9)

• 「メディアデータ処理」 (ページ 14-10)

• 「絶対差の和 (SAD)」 (ページ 14-11)

• 「乗算」 (ページ 14-12)

• 「除算」 (ページ 14-14)

• 「分岐」 (ページ 14-15)

• 「プロセッサ状態更新命令」 (ページ 14-16)

• 「単一ロード / ス ト ア命令」 (ページ 14-17)

• 「ダブルワードのロード / ス ト ア命令」 (ページ 14-20)

• 「複数ロード / ス ト ア命令」 (ページ 14-21)

• 「RFE 命令と SRS 命令」 (ページ 14-24)

• 「同期命令」 (ページ 14-25)

• 「コプロセッサ命令」 (ページ 14-26)

• 「SVC、 BKPT、 未定義、 およびプリ フェ ッチアボートが発生した命令」 (ページ 14-27)

• 「その他の命令」 (ページ 14-28)

• 「浮動小数点レジスタ転送命令」 (ページ 14-29)

• 「浮動小数点ロード / ス ト ア命令」 (ページ 14-30)

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 14-1ID013111 Non-Confidential

Page 366: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

サイクルタイ ミングとインターロック動作

• 「浮動小数点単精度データ処理命令」 (ページ 14-32)

• 「浮動小数点倍精度データ処理命令」 (ページ 14-33)

• 「デュアル発行」 (ページ 14-34)

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 14-2ID013111 Non-Confidential

Page 367: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

サイクルタイ ミングとインターロック動作

14.1 サイクルタイ ミングとインターロック動作について

命令の依存関係と メモ リ システムの相互作用が複雑なため、 すべての状況について、すべての命令の正確なサイクルタイ ミ ング動作を簡単に説明するこ とは不可能です。本章で説明するタイ ミ ングは、 ほとんどのケースについて正確です。 正確なタイ ミングが必要な場合は、 プロセッサに厳密なサイクルを持つモデルを使用する必要があ り ます。

特に明記されていない限り、 本章で説明するサイ クルカウン ト と結果レイテンシは良の条件での値です。 これは、 次の条件を前提と したものです。

• 現在の命令と以前の命令との間に、 未解決のデータ依存関係がない。

• 命令の実行によって リ ソースの競合が発生しない。

• すべてのデータアクセスが、 データキャ ッシュ内でヒ ッ ト し、 保護領域の境界をまたがない。

• すべての命令アクセスが命令キャ ッシュ内でヒ ッ トする。

こ こでは、 次の ト ピッ クについて説明します。

• 「命令実行の概要」• 「条件付き命令」 (ページ 14-4)

• 「フラグ設定命令」 (ページ 14-4)

• 「用語の定義」 (ページ 14-4)

• 「アセンブラ言語構文」 (ページ 14-5)

14.1.1 命令実行の概要

命令実行パイプラインは、 Iss、 Ex1、 Ex2、 Wr の 4 つのステージで構成されます。

Iss、 Ex1、 Ex2 ステージの終了時点への拡張フォワードによ り、 パイプラインをストールさせるこ とな く、 多数の従属命令シーケンスを実行するこ とができます。 通所のフォワードは、 Ex2 および Wr パイプラインステージの終了時点から発生します。 加えて、 乗算器には内部積和フォワードパスが組み込まれています。 アドレス生成ユニッ トにも、 内部フォワードパスが組み込まれています。

ほとんどの命令は、 Ex2 ステージまでレジスタを必要と しません。 すべての結果レイテンシは、 Ex2 ステージでレジスタが後続の命令に使用可能になるまでのサイ クル数と して計算されます。 ほとんどの ALU 操作は、 Ex2 ステージの開始時点でソースレジスタを必要と し、 結果レイテンシは 1 です。 例えば、 次のシーケンスには 2サイクルかかり ます。

ADD R1,R3,R4 ;Result latency oneADD R5,R2,R1 ;Register R1 required by ALU

PC は、 結果レイテンシの影響を受けない唯一のレジスタです。 PC を変更する命令が、 PC を読み出す後続の命令とのインターロ ッ クのために、 パイプラインのス トールを引き起こすこ とはあ り ません。

ほとんどのロードは、 Wr ステージまで結果をフォワード しないため、 結果レイテンシは 2 以上です。 例えば、 次のシーケンスには 3 サイクルかかり ます。

LDR R1, [R2] ;Result latency twoADD R3, R3, R1 ;Register R1 required by ALU

後続の命令が Iss ステージの終了時点でレジスタを必要とする場合は、 必要と されるレジスタを生成する命令の結果レイテンシに 1 サイクルを加算する必要があ り ます。これらのステージの終了時点でレジスタを必要とする命令は、 記述においてそのレジスタが Early Reg と記載されています。 Early Reg を必要とする次のシーケンスには、 4 サイクルかかり ます。

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 14-3ID013111 Non-Confidential

Page 368: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

サイクルタイ ミングとインターロック動作

LDR R1, [R2] ;Result latency twoADD R3, R3, R1 LSL#6 ;plus one because Register R1 is Early

R1 が Late Reg である次のシーケンスには、 2 サイクルかかり ます。

LDR R1, [R2] ;Result latency two minus one cyclesSTR R1, [R3] ;no penalty because R1 is a Late register

R1 が Very Early Reg である次のシーケンスには、 4 サイクルかかり ます。

ADD R3, R1, R2 ;Result latency one plus two cyclesLDR R4, [R3] ;plus two because register R3 is Very Early

14.1.2 条件付き命令

ほとんどの命令は、 条件コードに失敗した場合でも、 実行に必要なサイクルは変化しません。 例外となるのは次に示す命令です。

• 分岐など、 PC を変更する命令

• 実行サイクル数が 1 の整数除算命令

条件コードに失敗したほとんどの命令の結果レイテンシは 1 です。 例外となるのは次に示す命令です。

• 結果レイテンシの影響を受けない、 すべてのロード命令とス ト ア命令

• 結果レイテンシが 3 の整数除算命令

14.1.3 フラグ設定命令

ほとんどの命令は、 フラグを設定する場合も、 実行に必要なサイクル数は変化しません。 例外となるのは、 特定の乗算命令です。

14.1.4 用語の定義

本章で使用されているサイ クルタイ ミ ング用語の説明を、 表 14-1 に示します。

表 14-1 サイクルタイ ミング用語の定義

用語 説明

メモ リサイ クル数 命令がキャッシュへのメモ リ アクセスを送信する間のサイ クル数です。

サイクル数 命令の発行に必要な 小サイ クル数。 キャ ッシュへのメモ リ アクセスを生成する発行サイ クルが含まれるため、 サイ クル数は必ずメモ リサイ クル数以上です。

結果レイテンシ この命令の結果が、 後続の命令の Normal Reg に使用可能になるまでのサイクル数。 命令の結果レイテンシがサイ クル数よ り大き く、 後続の命令がその結果を必要とする場合、 後続の命令が (結果レイテンシ - サイクル数) に等しいサイクル数だけス トールします。

注 結果レイテンシは、 命令の 初のサイ クルからカウン ト されます。

Normal Reg 指定されているレジスタは、 Ex2 ステージの開始時点で要求されます。

Late Reg 指定されているレジスタは、 Wr ステージの開始時点まで要求されません。 このレジスタを生成する命令の結果レイテンシから 1 サイ クルを減算します。

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 14-4ID013111 Non-Confidential

Page 369: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

サイクルタイ ミングとインターロック動作

14.1.5 アセンブラ言語構文

本章を通して、 使用される構文は統一アセンブラで、 タイ ミ ングは ARM 命令とThumb 命令に適用されます。

Early Reg 指定されているレジスタは、 Ex1 ステージの開始時点で要求されます。 このレジスタを生成

する命令の結果レイテンシに 1 サイ クルを加算します。

Very Early Reg 指定されているレジスタは、 Iss ステージの開始時点で要求されます。 このレジスタを生成

する命令が LDM、 LDR、 LDRD、 LDREX、 LDRT の場合、 その結果レイテンシに 1 サイクルを加算します。 それ以外の場合は、 2 サイクルを加算します。 このレジスタが、 このレジスタを生成す

るロード命令のベースレジスタの場合、 またはロード命令が LDRB、 LDRBT、 LDRH、 LDRSB、 LDRSH

の場合、 よ り低い結果レイテンシは適用されません。

インターロ ッ ク パイプライン内の 2 つの命令の間にデータ依存関係があるため、 プロセッサがその依存関係を解消するまで Iss ステージがス トールします。

表 14-1 サイクルタイ ミング用語の定義 (続き)

用語 説明

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 14-5ID013111 Non-Confidential

Page 370: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

サイクルタイ ミングとインターロック動作

14.2 レジスタインターロックの例

LDR 命令と ADD 命令を使用するレジスタインターロ ッ クの例を、 表 14-2 に示します。

LDR 命令は実行に 1 サイ クル必要で、 結果レイテンシは 2 で、 Very Early Reg と してベースレジスタが必要です。

ADD 命令は実行に 1 サイ クル必要で、 結果レイテンシは 1 です。

表 14-2 レジスタインターロックの例

命令シーケンス 動作

LDR R1, [R2]ADD R6, R5, R4

レジスタの依存関係がないため、 2 サイ クルが必要です。

ADD R1, R2, R3ADD R9, R6, R1

ADD 命令の結果レイテンシが 1 のため、 2 サイ クルが必要です。

LDR R1, [R2]ADD R6, R5, R1

R1 の結果レイテンシのため、 3 サイ クルが必要です。

ADD R2, R5, R6LDR R1, [R2]

R2 の結果を Very Early Reg と して使用するため、 4 サイクルが必要です。

LDR R1, [R2]LDR R5, [R1]

R1 の結果レイテンシ、 R1 の結果を Very Early Reg と して使用するこ と、 および

R1 を生成するために LDR を使用するこ とから、 4 サイクルが必要です。

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 14-6ID013111 Non-Confidential

Page 371: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

サイクルタイ ミングとインターロック動作

14.3 データ処理命令

このセクシ ョ ンでは、 ADC、 ADD、 ADDW、 AND、 ASR、 BIC、 CLZ、 CMN、 CMP、 EOR、 LSL、 LSR、MOV、 MOVT、 MOVW、 MVN、 ORN、 ORR、 ROR、 RRX、 RSB、 RSC、 SBC、 SUB、 SUBW、 TEQ、 TST の各命令のサイ クルタイ ミ ング動作について説明します。

こ こでは、 次の ト ピッ クについて説明します。

• 「デスティネーシ ョ ンが PC でない場合のサイクルカウン ト 」

• 「デスティネーシ ョ ンが PC の場合のサイクルカウン ト 」

• 「インターロ ッ クの例」 (ページ 14-8)

14.3.1 デスティネーシ ョ ンが PC でない場合のサイクルカウン ト

デスティネーシ ョ ンが PC でない場合の、 データ処理命令のサイクルタイ ミ ング動作を、 表 14-3 に示します。 ADD は、 このセクシ ョ ンの冒頭で列挙したデータ処理命令のいずれにでも置き換えるこ とができます。

14.3.2 デスティネーシ ョ ンが PC の場合のサイクルカウン ト

デスティネーシ ョ ンが PC の場合の、 データ処理命令のサイクルタイ ミ ング動作を、表 14-4 に示します。 ADD は、 CLZ 以外の任意のデータ処理命令に置き換えるこ とができます。 デスティネーシ ョ ンが PC の場合の CLZ 命令は予測不能です。

条件コードに失敗したと きのサイ クルカウン トでは、 PC がデスティネーシ ョ ンでない場合のサイ クル数を使用する必要があ り ます。

表 14-3 デスティネーシ ョ ンが PC でない場合のデータ処理命令のサイクルタイ ミング動作

命令の例 サイクル数 Early Reg Late Reg 結果レイテンシ コ メン ト

ADD <Rd>, <Rn>, #<immed> 1 - - 1 通常のケース

ADD <Rd>, <Rn>, <Rm> 1 - - 1

ADD <Rd>, <Rn>, <Rm>, LSL #<immed> 1 <Rm> - 1 シフ ト付きソースレジスタが必要です。

ADD <Rd>, <Rn>, <Rm>, LSL <Rs> 1 <Rm>, <Rs> - 1 レジスタ制御シフ ト付きソースレジスタが必要です。

MOV <Rd>, <Rm> 1 - <Rm> 1 単純な MOV ケース。 フラグのセッ トや、 シフ ト付きソースレジスタの要求はできません。

表 14-4 デスティネーシ ョ ンが PC である場合のデータ処理命令のサイクルタイ ミング動作

命令の例 サイクル数 Early Reg Late Reg 結果レイテンシ コ メン ト

ADD pc, <Rn>, #<immed> 9 - - - PC への通常のケース

ADD pc, <Rn>, <Rm> 9 - - -

ADD pc, <Rn>, <Rm>, LSL #<immed> 9 <Rm> - - シフ ト付きソースレジスタが必要です。

ADD pc, <Rn>, <Rm>, LSL <Rs> 9 <Rm>, <Rs> - - レジスタ制御シフ ト付きソースレジスタが必要です。

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 14-7ID013111 Non-Confidential

Page 372: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

サイクルタイ ミングとインターロック動作

14.3.3 インターロックの例

ほとんどのデータ処理命令は、 実行に 1 サイクルが必要で、 命令と命令との間にデータ依存関係がある場合でも、 インターロ ッ クサイ クルなしで順番に実行することができます。 例外となるのは、 シフ トが使用される場合です。

シフタ

シフタに必要なレジスタは Early Reg で、 使用する前に結果を有効にするためのサイクルを追加する必要があ り ます。 例えば、 次のシーケンスはインターロ ッ クに 1 サイクルが追加され、 実行に 3 サイ クルが必要です。

ADD R1,R2,R3ADD R4,R5,R1 LSL #1

シフ トが実行されない 2 つ目のソースレジスタでは、 余分なデータ依存関係チェックが行われません。 そのため、 次のシーケンスの実行には 2 サイクルが必要です。

ADD R1,R2,R3ADD R4,R1,R9 LSL #1

レジスタ制御シフ ト

シフ ト量を保持するレジスタは Early Reg です。 例えば、 次のシーケンスの実行には3 サイクルが必要です。

ADD R1, R2, R3ADD R4, R2, R4, LSL R1

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 14-8ID013111 Non-Confidential

Page 373: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

サイクルタイ ミングとインターロック動作

14.4 QADD、 QDADD、 QSUB、 QDSUB 命令

このセクシ ョ ンでは、 QADD、 QDADD、 QSUB、 QDSUB 命令のサイ クルタイ ミ ング動作について説明します。

これらの命令は、 飽和算術演算を実行します。 結果レイテンシは 2 です。 QDADD 命令と QDSUB 命令は、 加算前にレジスタ <Rn> を 2 倍にして飽和させる必要があ り ます。このレジスタは Early Reg です。

QADD、 QDADD、 QSUB、 QDSUB 命令のサイクルタイ ミ ング動作を、 表 14-5 に示します。

表 14-5 QADD、 QDADD、 QSUB、 QDSUB 命令のサイクルタイ ミング動作

命令 サイクル数 Early Reg 結果レイテンシ

QADD、 QSUB 1 - 2

QDADD、 QDSUB 1 <Rn> 2

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 14-9ID013111 Non-Confidential

Page 374: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

サイクルタイ ミングとインターロック動作

14.5 メディアデータ処理

メディアデータ処理命令と、 そのサイ クルタイ ミ ング動作を、 表 14-6 に示します。

すべてのメディアデータ処理命令は、 1 サイクル発行命令です。 これらの命令の結果レイテンシは 1 または 2 サイクルです。 一部の命令は、 使用前に入力レジスタをシフ トするか、 他の方法で操作する必要があるため、 Early Reg が必要と してマーク されます。

表 14-6 メディアデータ処理命令のサイクルタイ ミング動作

命令 サイクル数 Early Reg 結果レイテンシ

SADD16, SSUB16, SADD8, SSUB8 1 - 1

UADD16, USUB16, UADD8, USUB8 1 - 1

SEL 1 - 1

QADD16, QSUB16, QADD8, QSUB8 1 - 2

SHADD16, SHSUB16, SHADD8, SHSUB8 1 - 1

UQADD16, UQSUB16, UQADD8, UQSUB8 1 - 2

UHADD16, UHSUB16, UHADD8, UHSUB8 1 - 1

SSAT16, USAT16 1 <Rn> 1

SASX, SSAX 1 - 1

UASX, USAX 1 - 1

SXTAB, SXTAB16, SXTAH 1 <Rm> 1

SXTB, SXTB16, SXTH 1 <Rm>a

a. シフ トが 0 の場合、 これらの命令の <Rm> は Normal Reg です。

1

UXTB, UXTB16, UXTH 1 <Rm>a 1

UXTAB, UXTAB16, UXTAH 1 <Rm> 1

REV, REV16, REVSH, RBIT 1 <Rm> 1

PKHBT, PKHTB 1 <Rm> 1

SSAT, USAT 1 <Rm> 1

QASX, QSAX 1 - 2

SHASX, SHSAX 1 - 1

UQASX, UQSAX 1 - 2

UHASX, UHSAX 1 - 1

BFC 1 <Rd> 1

SBFX, UBFX 1 <Rn> 1

BFI 1 <Rd>, <Rn> 1

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 14-10ID013111 Non-Confidential

Page 375: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

サイクルタイ ミングとインターロック動作

14.6 絶対差の和 (SAD)

SAD 命令とそのサイ クルタイ ミ ング動作を、 表 14-7 に示します。

14.6.1 インターロックの例

USAD8 命令と USADA8 命令を使用するインターロ ッ クの例を、 表 14-8 に示します。

表 14-7 絶対差の和命令のタイ ミング動作

命令 サイクル数 Early Reg 結果レイテンシ

USAD8 1 <Rn>, <Rm> 2a

a. デスティネーシ ョ ンが後続の USADA8 の累算である場合、 結果レイテンシが 1 サイクル少なくな り ます。

USADA8 1 <Rn>, <Rm> 2a

表 14-8 インターロックの例

命令シーケンス 動作

USAD8 R1,R2,R3ADD R5,R6,R1

USAD8 の結果レイテンシが 2 で、 ADD は USAD8 命令の結果を要求するた

め、 3 サイ クルが必要です。

USAD8 R1,R2,R3MOV R9,R9ADD R5,R6,R1

3 サイ クルが必要です。 MOV 命令が、 USAD8 命令の結果レイテンシの間

にスケジュールされています。

USAD8 R1,R2,R3USADA8 R1,R4,R5,R1

2 サイ クルが必要です。 結果が後続の USADA8 命令の累算と して使用されるため、 結果レイテンシが 1 サイクル少なくな り ます。

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 14-11ID013111 Non-Confidential

Page 376: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

サイクルタイ ミングとインターロック動作

14.7 乗算

後続の乗算の累積値を除いて、 ほとんどの乗算演算は結果を早期にフォワードできません。 後続の積和演算では、 その結果を他のどの用途よ り も 1 サイ クル早く使用できます。

特定の乗算では、 次の要素が必要です。

• 複数の実行サイクル

• 結果を生成するための複数のパイプライン発行

Iss ステージの終了時点で被乗数と乗数の両方が必要なため、 これらは Early Reg と して要求されます。

フラグを設定する乗算の次が条件付き命令の場合、 条件付き命令は 1 サイクル (その命令が条件付き乗算の場合は 2 サイクル) インターロ ッ ク されます。 フラグを設定する乗算の次がフラグを設定する命令の場合、 フラグを設定する命令は、 それがフラグを設定する乗算である場合のみインターロ ッ クが行われず、 それ以外の場合は 1 サイクルインターロ ッ ク されます。

乗算命令のサイクルタイ ミ ング動作の例を、 表 14-9 に示します。

表 14-9 乗算命令のサイクルタイ ミング動作の例

命令の例 サイクル数 Early Reg Late Reg 結果レイテンシ

MUL(S) 2 <Rn>, <Rm> - 3

MLA(S), MLS 2 <Rn>, <Rm> <Ra> 3

SMULL(S) 2 <Rn>, <Rm> - 3, 3

UMULL(S) 2 <Rn>, <Rm> - 3, 3

SMLAL(S) 2 <Rn>, <Rm> <RdLo>, <RdHi> 3, 3

UMLAL(S) 2 <Rn>, <Rm> <RdLo>, <RdHi> 3, 3

SMULxy 1 <Rn>, <Rm> - 2

SMLAxy 1 <Rn>, <Rm> - 2

SMULWy 1 <Rn>, <Rm> - 2

SMLAWy 1 <Rn>, <Rm> - 2

SMLALxy 2 <Rn>, <Rm> <RdLo>, <RdHi> 3, 3

SMUAD, SMUADX 1 <Rn>, <Rm> - 2

SMLAD, SMLADX 1 <Rn>, <Rm> - 2

SMUSD, SMUSDX 1 <Rn>, <Rm> - 2

SMLSD, SMLSDX 1 <Rn>, <Rm> - 2

SMMUL, SMMULR 2 <Rn>, <Rm> - 3

SMMLA, SMMLAR 2 <Rn>, <Rm> <Ra> 3

SMMLS, SMMLSR 2 <Rn>, <Rm> <Ra> 3

SMLALD, SMLALDX 1 <Rn>, <Rm> - 2, 2

SMLSLD, SMLSLDX 1 <Rn>, <Rm> - 2, 2

UMAAL 2 <Rn>, <Rm> <RdLo>, <RdHi> 3, 3

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 14-12ID013111 Non-Confidential

Page 377: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

サイクルタイ ミングとインターロック動作

注 結果が後続の積和演算の累算値と して使用される場合、 結果レイテンシは 1 サイクル少なくな り ます。 これは、 結果が累積値と同じ幅、 つま り 32 ビッ ト または 64ビッ トの場合にのみ適用されます。

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 14-13ID013111 Non-Confidential

Page 378: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

サイクルタイ ミングとインターロック動作

14.8 除算

こ こでは、 UDIV 命令と SDIV 命令のサイクルタイ ミ ング動作について説明します。

ディバイダユニッ トは、 メ インの実行パイプラインと独立しているため、 UDIV 命令とSDIV 命令の発行に 1 サイクルを要します。 これらの命令は、 パイプラインの他の部分に対してアウ トオブオーダに実行され、 結果をデスティネーシ ョ ンレジスタに書き込むため、 除算演算の終了時点で追加の発行サイクルが必要です。 除算命令が条件コードに失敗した場合、 この追加のサイクルは必要あ り ません。

A を B で除算する UDIV 命令の結果レイテンシは、 次の式で計算されます。

A を B で除算する SDIV 命令の結果レイテンシは、 次の式で計算されます。

注 • 条件コードに失敗したか、 0 での除算を試みた除算命令の結果レイテンシは 3

です。

• これらの等式の (clz(B) - clz(A) + 1)/2 部分の値は、 端数を切り捨てる必要があ ります。

• clz(x) 関数は、 32 ビッ ト値 x 内の先行 0 の数をカウン ト します。 x が負の場合、このカウン トが行われる前に否定されます。

2clz(B) - clz(A) + 1

,0= 3 + ( ) )(

2clz(B) - clz(A) + 1

,0= 4 + ( ) )(

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 14-14ID013111 Non-Confidential

Page 379: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

サイクルタイ ミングとインターロック動作

14.9 分岐

こ こでは、 B、 BL、 BLX、 BX、 BXJ、 CBNZ、 CBZ、 TBB、 TBH 命令のサイクルタイ ミ ング動作について説明します。 分岐は、 動的予測と リ ターンスタ ッ ク予測の影響を受けます。分岐命令の例と、 そのサイ クルタイ ミ ング動作を、 表 14-10 に示します。

表 14-10 分岐命令のサイクルタイ ミング動作

命令の例 サイクル数メモリサイクル数

コ メン ト

B<label>, BL<label>a,

BLX<label>a1 - 動的予測に成功した場合

8 - 動的予測に失敗した場合

BX <Rm>b 1 - リ ターンスタ ッ ク予測に成功した場合

9 - リ ターンスタ ッ ク予測に失敗した場合

BX <cond> <Rm>b 1 - 条件予測に成功し、 リ ターンスタ ッ ク予測に成功した場合

8 - 条件予測に失敗した場合

9 - 条件予測に成功し、 リ ターンスタ ッ ク予測に失敗した場合

BXJ <cond> <Rm> 1 - 条件コードに失敗した場合

9 - 条件コードに成功した場合

BLX <Rm> 9 - -

BLX <cond> <Rm> 1 - 条件コードに失敗した場合

9 - 条件コードに成功した場合

CBZ <Rn>, <label>, CBNZ <Rn>, <label>

1 - 条件予測に成功した場合

8 - 予測に失敗した場合

TBB [<Rn>, <Rm>]c 9 1 条件コードに失敗した場合

9 1 条件コードに成功した場合

TBH [<Rn>, <Rm>, LSL#1]c 9 1 条件コードに失敗した場合

9 1 条件コードに成功した場合

a. リ ターンスタ ッ ク プッシュ

b. リ ターンスタ ッ ク ポップ、 条件が満たされた場合

c. <Rn> と <Rm> は Very Early Reg です。

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 14-15ID013111 Non-Confidential

Page 380: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

サイクルタイ ミングとインターロック動作

14.10 プロセッサ状態更新命令

こ こでは、 MSR、 MRS、 CPS、 SETEND 命令のサイクルタイ ミ ング動作について説明します。プロセッサ状態更新命令と、 そのサイクルタイ ミ ング動作を、 表 14-11 に示します。

表 14-11 プロセッサ状態更新命令のサイクルタイ ミング動作

命令 サイクル数 コメン ト

MRS 1 すべての MRS 命令

MSR 5 CPSR に対する他のすべての MSR 命令

MSR SPSR 1 SPSR に対するすべての MSR 命令

CPS <effect> <iflags> 1 割り込みマスクのみ

CPS <effect> <iflags>, #<mode> 1 モード変更

SETEND 1 -

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 14-16ID013111 Non-Confidential

Page 381: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

サイクルタイ ミングとインターロック動作

14.11 単一ロード / ストア命令

こ こでは、 LDR、 LDRHT、 LDRSBT、 LDRSHT、 LDRT、 LDRB、 LDRBT、 LDRSB、 LDRH、 LDRSH、 STR、STRT、 STRB、 STRBT、 STRH、 PLD 命令のサイクルタイ ミ ング動作について説明します。

PC へのロードを除く ロード / ス ト アのサイ クルタイ ミ ング動作を、 表 14-12 に示します。 LDR は、 これらの単一ロード / ス ト ア命令のいずれかに置き換えるこ とができます。 次の規則が適用されます。

• これらの命令は一般に、 1 サイクル発行です。 ベースレジスタ と任意のオフセッ ト レジスタの両方が Very Early Reg です。

• 負のレジスタオフセッ ト 、 または LSL #1、 2、 3 以外のシフ ト を伴う、 プ リ インク リ メ ン ト アドレシングが使用されている場合は、 3 サイクル発行です。ベースレジスタ と任意のオフセッ ト レジスタの両方が Very Early Reg です。

• アンアラインドサポートが可能な場合、 64 ビッ ト アラ インド境界にまたがる、アクセスサイズにアラインされていないアドレスへのアクセスを行う と、 2 つのメモ リ アクセスが生成され、 追加の発行サイクルが必要になり ます。 後のアドレスがアンアラインドの可能性がある場合、 結果的に 後のアドレスがアラインドであったと しても この追加サイクルが必要になり ます。

• PLD (データ プリ ロード ヒ ン ト命令) のサイ クルタイ ミ ング動作は、 ロード命令と同様です。 これらの命令にはデスティネーシ ョ ンレジスタがないため、 結果レイテンシは適用されません。

• ス ト ア命令の場合、 <Rt> は常に Late Reg です。

PC へのロードのサイ クルタイ ミ ング動作を、 表 14-13 に示します。

表 14-12 PC へのロードを除く ロード / ストアのサイクルタイ ミング動作

命令の例 サイクル数メモリサイクル数

結果レイテンシ(LDR)

結果レイテンシ(ベースレジスタ)

コ メン ト

LDR <Rt>, <addr_md_1cycle>a 1 1 2 1 アラインドアクセス

LDR <Rt>, <addr_md_3cycle>a 3 1 4 3 アラインドアクセス

LDR <Rt>, <addr_md_1cycle>a 2 2 3 2 アンアラインドアクセスの可能性あ り

LDR <Rt>, <addr_md_3cycle>a 4 2 5 4 アンアラインドアクセスの可能性あ り

a. <addr_md_1cycle> と <addr_md_3cycle> の説明については、 表 14-14 (ページ 14-18) を参照して下さい。

表 14-13 PC へのロードのサイクルタイ ミング動作

命令の例 サイクル数メモリサイクル数

結果レイテンシ

コ メン ト

LDR pc, [sp, #<imm>] (!) 1 1 - リ ターンスタ ッ ク予測に成功した場合、 または条件予測に成功した場合

LDR pc, [sp], #<imm> 1 1 -

LDR pc, [sp, #<imm>] (!) 9 1 - リ ターンスタ ッ ク予測に失敗し、 条件予測に成功した場合

LDR pc, [sp], #<imm> 9 1 -

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 14-17ID013111 Non-Confidential

Page 382: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

サイクルタイ ミングとインターロック動作

PC へのアンアラインドアクセスはサポート されていないため、 アラインドアクセスのサイ クル数のみを示します。

プロセッサには、 プロシージャからの復帰を予測可能な 4 エン ト リの リ ターンスタ ッ クがあ り ます。 イ ミディエート ポス ト インデクスオフセッ トで + 4 が使用される、 またはベースレジスタ と してスタ ッ クポインタ R13 が使用される PC への LDR命令は、 すべてプロシージャからの復帰と見なされます。

表 14-12 (ページ 14-17) と表 14-13 (ページ 14-17) で使用される <addr_md_1cycle>

と <addr_md_3cycle> の説明を、 表 14-14 に示します。

14.11.1 ベースレジスタの更新

ロード / ス ト ア命令によるベースレジスタの更新は、 ALU パイプライン内で行われます。 連続するロード / ス ト ア命令が同じベースレジスタを再利用する場合のインターロ ッ クを避けるために、 アドレスジェネレータの周辺で更新されたベースレジスタを再利用するためのローカル フォワードパスがあ り ます。 これは、 ベース ラ イトバッ クを伴う ロード / ス ト ア命令がプリ インク リ メ ン ト アドレシングを使用し、かつその命令が単一ロード / ス ト ア命令で、 ダブルワード ロード / ス ト アや複数ロード / ス ト アではない場合にのみ適用されます。

例えば、 R2 がアラインドである場合、 次の命令シーケンスの実行には 3 サイクルが必要です。

LDR <cond> pc, [sp, #<imm>] (!) 8 1 - 条件予測に失敗したが、 リ ターンスタ ッ ク予測に成功した場合

LDR <cond> pc, [sp], #cns 8 1 -

LDR pc, <addr_md_1cycle>a 9 1 - -

LDR pc, <addr_md_3cycle>a 11 1 - -

a. <addr_md_1cycle> と <addr_md_3cycle> の説明については、 表 14-14 を参照して下さい。 条件コードに失敗したと きのサイ

クルカウン トでは、 PC がデスティネーシ ョ ンでない場合のサイ クル数を使用する必要があ り ます。

表 14-13 PC へのロードのサイクルタイ ミング動作 (続き)

命令の例 サイクル数メモリサイクル数

結果レイテンシ

コ メン ト

表 14-14 LDR 命令で使用される <addr_md_1cycle> と <addr_md_3cycle> の例

命令の例 Very Early Reg コ メン ト

<addr_md_1cycle>

LDR <Rt>, [<Rn>, #<imm>] (!) <Rn> イ ミディエートオフセッ ト を使用するポス ト インクリ メン ト アドレシングまたはプリ インク リ メン ト アドレシング、 またはシフ ト を使用しないか、 LSL #1、2、 3 のシフ ト を使用する正のレジスタオフセッ トの

場合は、 1 発行サイクル

LDR <Rt>, [<Rn>, <Rm>] (!) <Rn>, <Rm>

LDR <Rt>, [<Rn>, <Rm>, LSL #1, 2 or 3] (!) <Rn>, <Rm>

LDR <Rt>, [<Rn>], #<imm> <Rn>

LDR <Rt>, [<Rn>], +/-<Rm> <Rn>, <Rm>

LDR <Rt>, [<Rn>], +/-<Rm> <shift> <cns> <Rn>, <Rm>

<addr_md_3cycle>

LDR <Rt>, [<Rn>, -<Rm>] (!) <Rn>, <Rm> 負のレジスタオフセッ ト を使用する、 または LSL #1、 2、 3 以外のシフ ト を使用するプリ インク リ メント アドレシングの場合は、 3 発行サイクル

LDR <Rt>, [Rn, +/-<Rm> <shift> <cns>] (!) <Rn>, <Rm>

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 14-18ID013111 Non-Confidential

Page 383: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

サイクルタイ ミングとインターロック動作

LDR R5, [R2, #4]!LDR R6, [R2, #0X10]!LDR R7, [R2, #0X20]!

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 14-19ID013111 Non-Confidential

Page 384: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

サイクルタイ ミングとインターロック動作

14.12 ダブルワードのロード / ストア命令

こ こでは、 LDRD 命令と STRD 命令のサイクルタイ ミ ング動作について説明します。

LDRD 命令と STRD 命令には次の条件が適用されます。

• 通常は 1 サイ クル発行です。 ベースレジスタ と任意のオフセッ ト レジスタの両方が Very Early Reg です。

• オフセッ ト 、 または負のレジスタオフセッ ト を持つプリ インク リ メ ン ト アドレシングが使用されている場合は、 3 サイクル発行です。 ベースレジスタ と任意のオフセッ ト レジスタの両方が Very Early Reg です。

• アドレスがダブルワードアラインドの場合は、 1 メモリサイクルで実行されます。

• アドレスがダブルワードアラインドでない場合は、 2 メモリサイクルが必要です。

LDRD 命令と STRD 命令のサイクルタイ ミ ング動作を、 表 14-15 に示します。

表 14-15 で使用されている <addr_md_1cycle> と <addr_md_3cycle> の説明を、 表 14-16 に示します。

表 14-15 ダブルワードロード / ストア命令のサイクルタイ ミング動作

命令の例 サイクル数ベースライ トバックによるサイクル数

メモリサイクル数

結果レイテンシ(LDRD)

結果レイテンシ(ベースレジスタ)

アドレスがダブルワードアラインドの場合

LDRD R0, R1, <addr_md_1cycle>a 1 2 1 2, 2 2

LDRD R0, R1, <addr_md_3cycle>a 3 4 1 4, 4 4

アドレスがダブルワードアラインドでない場合

LDRD R0, R1, <addr_md_1cycle>a 2 2 2 2, 3 2

LDRD R0, R1, <addr_md_3cycle>a 4 4 2 4, 5 4

a. <addr_md_1cycle> と <addr_md_3cycle> の説明については、 表 14-16 を参照して下さい。

表 14-16 LDRD 命令で使用される <addr_md_1cycle> と <addr_md_3cycle> の例

命令の例 Very Early Reg コ メン ト

<addr_md_1cycle>

LDRD <Rt>, <Rt2>, [<Rn>, #<imm>] (!) <Rn> ポス ト インク リ メン ト アドレシング、 または

プリ インク リ メン ト アドレシングでオフセッ

トがイ ミディエートオフセッ ト または正のレジスタオフセッ トの場合、 1 発行サイクル

LDRD <Rt>, <Rt2>, [<Rn>, <Rm>] (!) <Rn>, <Rm>

LDRD <Rt>, <Rt2>, [<Rn>], #<imm> <Rn>

LDRD <Rt>, <Rt2>, [<Rn>], +/-<Rm> <Rn>, <Rm>

<addr_md_3cycle>

LDRD <Rt>, <Rt2>, [<Rn>, -<Rm>] (!) <Rn>, <Rm> 負のレジスタオフセッ ト を持つプリ インク リメン ト アドレシングの場合、 3 発行サイクル

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 14-20ID013111 Non-Confidential

Page 385: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

サイクルタイ ミングとインターロック動作

14.13 複数ロード / ストア命令

こ こでは、 LDM、 STM、 PUSH、 POP 命令のサイ クルタイ ミ ング動作について説明します。これらの命令は、 発行に複数サイクルが必要で、 すべてのレジスタをロード / ス ト アするためにも複数のメモ リサイ クルが必要です。 メモ リのデータパスは 64 ビッ ト幅なので、 1 サイ クルで 2 つのレジスタをロード / ス ト アできます。

こ こでは、 次の ト ピッ クについて説明します。

• 「PC を含む複数ロード以外の、 複数ロード / ス ト ア」

• 「PC がレジスタ リ ス トに含まれている場合の複数ロード」 (ページ 14-22)

• 「インターロ ッ クの例」 (ページ 14-22)

14.13.1 PC を含む複数ロード以外の、 複数ロード / ストア

すべてのケースで、 ベースレジスタの <Rn> は Very Early Reg です。

PC を含む複数ロード / ス ト アのサイ クルタイ ミ ング動作を、 表 14-17 に示します。

注 表 14-17 に示すサイクルタイ ミ ング動作は、 ベースレジスタ ラ イ トバッ クを行う複数ロード / ス ト ア命令と同様に動作する、 PUSH 命令と POP 命令にも適用されます。

表 14-17 PC を含む複数ロード以外の、 複数ロード / ストアのサイクルタイ ミング動作

命令の例サイクル数

ベースレジスタ ライ

トバック付きの場合のサイクル数

メモリサイクル数

結果レイテンシ (LDM)

結果レイテンシ(ベースレジスタ)

先頭アドレスが 64 ビッ ト アラ インドの場合

LDMIA <Rn>,{R1} 1 1 1 2 1

LDMIA <Rn>,{R1,R2} 1 2 1 2,2 2

LDMIA <Rn>,{R1,R2,R3} 2 2 2 2,2,3 2

LDMIA <Rn>,{R1,R2,R3,R4} 2 3 2 2,2,3,3 3

LDMIA <Rn>,{R1,R2,R3,R4,R5} 3 3 3 2,2,3,3,4 3

LDMIA <Rn>,{R1,R2,R3,R4,R5,R6} 3 4 3 2,2,3,3,4,4 4

LDMIA <Rn>,{R1,R2,R3,R4,R5,R6,R7} 4 4 4 2,2,3,3,4,4,5 4

先頭アドレスが 64 ビッ ト アラ インドでない場合

LDMIA <Rn>,{R1} 1 2 1 2 2

LDMIA <Rn>,{R1,R2} 2 2 2 2,3 2

LDMIA <Rn>,{R1,R2,R3} 2 3 2 2,3,3 3

LDMIA <Rn>,{R1,R2,R3,R4} 3 3 3 2,3,3,4 3

LDMIA <Rn>,{R1,R2,R3,R4,R5} 3 4 3 2,3,3,4,4 4

LDMIA <Rn>,{R1,R2,R3,R4,R5,R6} 4 4 4 2,3,3,4,4,5 4

LDMIA <Rn>,{R1,R2,R3,R4,R5,R6,R7} 4 5 4 2,3,3,4,4,5,5 5

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 14-21ID013111 Non-Confidential

Page 386: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

サイクルタイ ミングとインターロック動作

14.13.2 PC がレジスタ リス トに含まれている場合の複数ロード

プロセッサには、 プロシージャからの復帰を予測可能な 4 エン ト リの リ ターンスタ ッ クがあ り ます。 PC への LDM は、 SPSR を CPSR に復元しない場合はすべて、 プロシージャからの復帰と して予測されます。

すべてのケースで、 ベースレジスタの <Rn> は Very Early Reg です。

PC がレジスタ リ ス トに含まれている場合の、 複数ロードのサイ クルタイ ミ ング動作を、 表 14-18 に示します。

注 表 14-18 に示すサイクルタイ ミ ング動作は、 ベースレジスタ ラ イ トバッ クを行う複数ロード / ス ト ア命令と同様に動作する、 PUSH 命令と POP 命令にも適用されます。

14.13.3 インターロックの例

LDM 命令を使用する次のシーケンスは、 R7 の結果レイテンシが 5 サイクルのため、実行に 6 サイ クルが必要です。

LDMIA R0, {R1-R7}ADD R10, R10, R7

STM 命令を使用する次のシーケンスは、 実行に 5 サイクルが必要です。

STMIA R0, {R1-R7}ADD R7, R10, R11

次のシーケンスでは、 結果レイテンシが発行サイ クルによって隠されます。 実行に 5サイクルが必要です。

LDMIA R0, {R1-R7}ADD R10, R10, R3

POP 命令を使用する次のシーケンスは、 R9 の結果レイテンシが 6 サイクルのため、 実行に 7 サイクルが必要です。

POP {R1-R9}ADD R10, R10, R9

PUSH 命令を使用する次のシーケンスは、 実行に 5 サイクルが必要です。

PUSH {R1-R7}ADD R10,R10,R7

表 14-18 PC がレジスタ リス トに含まれている場合の、 複数ロードのサイクルタイ ミング動作 (64 ビッ トアラインド)

命令の例 サイクル数メモリサイクル数

結果レイテンシ

コ メン ト

LDMIA <Rn>,{...,pc} ma nb 2,… リ ターンスタ ッ ク予測に成功した場合

LDMIA <Rn>,{...,pc} ma + 8 nb 2,… リ ターンスタ ッ ク予測に失敗した場合

LDMIA <cond> <Rn>,{...,pc} ma nb 2,… 条件予測に成功し、 リ ターンスタ ッ ク予測に成功した場合

LDMIA <cond> <Rn>,{...,pc} ma + 7 nb 2,… 条件予測に失敗した場合

LDMIA <cond> <Rn>,{...,pc} ma + 8 nb 2,… 条件予測に成功し、 リ ターンスタ ッ ク予測に失敗した場合

a. m は、 PC が Normal Reg と して扱われた場合の、 この命令のサイクル数です。

b. n は、 PC が Normal Reg と して扱われた場合の、 この命令のメモ リサイ クル数です。

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 14-22ID013111 Non-Confidential

Page 387: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

サイクルタイ ミングとインターロック動作

注 例では、 R0 と sp が 64 ビッ ト アラ インド アドレスです。 PUSH 命令と POP 命令は、 常に sp レジスタをベースアドレスに使用します。

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 14-23ID013111 Non-Confidential

Page 388: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

サイクルタイ ミングとインターロック動作

14.14 RFE 命令と SRS 命令

こ こでは、 RFE 命令と SRS 命令のサイ クルタイ ミ ングについて説明します。

これらの命令は次のよ うに動作します。

• それぞれ、 例外からの復帰と、 例外復帰状態の保存を行います。

• 初のアドレス位置がダブルワードアラインドかど うかによって、 1 または 2メモ リサイ クルが必要です。

すべてのケースで、 ベースレジスタは Very Early Reg です。

RFE 命令と SRS 命令のサイ クルタイ ミ ング動作を、 表 14-19 に示します。

表 14-19 RFE 命令と SRS 命令のサイクルタイ ミング動作

命令の例 サイクル数 メモリサイクル数

アドレスがダブルワードアラインドの場合

RFEIA <Rn> 10 1

SRSIA #<mode> 1 1

アドレスがダブルワードアラインドでない場合

RFEIA <Rn> 11 2

SRSIA #<mode> 2 2

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 14-24ID013111 Non-Confidential

Page 389: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

サイクルタイ ミングとインターロック動作

14.15 同期命令

こ こでは、 CLREX、 DMB、 DSB、 ISB、 LDREX、 LDREXB、 LDREXD、 LDREXH、 STREX、 STREXB、 STREXD、STREXH、 SWP、 SWPB 命令のサイクルタイ ミ ング動作について説明します。

すべてのケースで、 ベースレジスタ Rn は Very Early Reg です。 同期命令のサイクルタイ ミ ング動作を、 表 14-20 に示します。

同期命令の DMB、 DSB、 ISB は、 メモ リ システムの現在の状態に応じて、 パイプラインがス トールするサイ クル数が異なり ます。

表 14-20 同期命令のサイクルタイ ミング動作

命令 サイクル数 メモリサイクル数 結果レイテンシ

CLREX 1 - -

LDREX <Rt>, [Rn] 1 1 2

LDREXB <Rt>, [Rn] 1 1 2

LDREXH <Rt>, [Rn] 1 1 2

LDREXD <Rt>, [Rn]a

a. アドレスは 64 ビッ ト アラインドの必要があ り ます。

1 1 2

STREX <Rd>, <Rt>, [Rn] 1 1 2

STREXB <Rd>, <Rt>, [Rn] 1 1 2

STREXH <Rd>, <Rt>, [Rn] 1 1 2

STREXD <Rd>, <Rt>, <Rt2>, [Rn]a 1 1 2

SWP <Rt>, <Rt2>, [Rn] 2 2 3

SWPB <Rt>, <Rt2>, [Rn] 2 2 3

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 14-25ID013111 Non-Confidential

Page 390: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

サイクルタイ ミングとインターロック動作

14.16 コプロセッサ命令

こ こでは、 CP14 (デバッグコプロセッサ) または CP15 (システム制御コプロセッサ) に対する MCR 命令と MRC 命令のサイ クルタイ ミ ング動作について説明します。

コプロセッサ命令の正確なタイ ミ ングは、 関連するコプロセッサの動作と密接に関係しています。 コプロセッサ命令のサイクルタイ ミ ング動作を、 表 14-21 に示します。 表 14-21 に示されているのは、 良のケースの数値です。

注 キャ ッシュ操作など一部の命令には、 さ らに多くのサイ クルが必要です。

表 14-21 コプロセッサ命令のサイクルタイ ミング動作

命令 サイクル数 結果レイテンシ コ メン ト

MCR 6 - -

MCR <cond> 6 - 条件コードが成功した場合

4 - 条件コードが失敗した場合

MRC 6 6 -

MRC <cond> 6 6 条件コードが成功した場合

4 4 条件コードが失敗した場合

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 14-26ID013111 Non-Confidential

Page 391: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

サイクルタイ ミングとインターロック動作

14.17 SVC、 BKPT、 未定義、 およびプリフェ ッチアボートが発生した命令

こ こでは、 SVC 命令、 未定義命令、 BKPT 命令、 およびプリ フェ ッチアボートが発生した命令のサイ クルタイ ミ ング動作について説明します。

すべてのケースで、 例外はパイプラインの Wr ステージで取得されます。 SVC 命令と、ほとんどの未定義命令は、 条件コードが失敗した場合、 1 サイクルで完了します。 いくつかの未定義命令は、 条件コードが失敗した場合に 2 サイクルを要します。 SVC 命令、 BKPT 命令、 未定義命令、 およびプリ フェ ッチアボートが発生した命令のサイ クルタイ ミ ング動作を、 表 14-22 に示します。

表 14-22 SVC 命令、 BKPT 命令、 未定義命令、 およびプリフェ ッチアボートが発生した命令のサイクルタイ ミング動作

命令 サイクル数

SVC (以前の SWI) 9

BKPT 9

プリ フェ ッチアボート 9

未定義命令 9

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 14-27ID013111 Non-Confidential

Page 392: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

サイクルタイ ミングとインターロック動作

14.18 その他の命令

If-Then(IT) 命令と無操作 (NOP) 命令のサイクルタイ ミ ング動作を、 表 14-23 に示します。

DBG、 PLI、 SEV、 WFE、 YIELD の各命令はすべて、 NOP と同様に扱われるため、 サイ クルタイ ミ ング動作も同じです。

WFI 命令は、 メモ リ システムの現在の状態に応じて、 パイプラインがス トールするサイ クル数が異なり ます。

表 14-23 IT 命令と NOP 命令のサイクルタイ ミング動作

命令の例 サイクル数 Early Reg Late Reg 結果レイテンシ コ メン ト

IT{<v>{<w>{<z>}}} <cond> 1 - - - -

NOP 1 - - - -

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 14-28ID013111 Non-Confidential

Page 393: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

サイクルタイ ミングとインターロック動作

14.19 浮動小数点レジスタ転送命令

こ こでは、 VFP レジスタファ イルと、 整数レジスタファ イルとの間 (システムレジスタも含む) でデータを転送する、 各種の VFP 命令のサイ クルタイ ミ ング動作について説明します。

すべてのソースオペランドは Normal Reg で、 非システムレジスタ転送の結果レイテンシは常に 1 サイクルです。

整数レジスタファ イルから VFP システムレジスタ (FMXR) にデータを書き込む命令はブロ ッ ク されます。 つま り、 FMXR の実行が完了するまで、 後続の命令の実行を開始するこ とはできません。 したがって、 FMXR 命令の実行には 6 サイクルが必要です。

VFP システムレジスタ との転送も、 すべて直列化されます。 これは、 未解決のアウトオブオーダ完了 VFP 命令が存在する場合、 これらの命令が完了するまで、 システムレジスタ転送命令が Iss ステージでス トールするこ とを意味します。

アウ トオブオーダで完了する VFP 命令は、 VMLA.F32、 VMLS.F32、 VNMLS.F32、 VNMLA.F32、VDIV.F32、 VSQRT.F32、 VCVT.F64.F32、 および倍精度の算術命令と変換命令です。

浮動小数点レジスタ転送命令のサイクルタイ ミ ング動作を、 表 14-24 に示します。

表 14-24 浮動小数点レジスタ転送命令のサイクルタイ ミング動作

命令の例 サイクル数 結果レイテンシ コ メン ト

VMOV <Sn>, <Rt> 1 1 -

VMOV <Rt>, <Sn> 1 2 -

VMOV <Dn[x]>, <Rt> 1 1 -

VMOV.<dt> <Rt>, <Dn[x]> 1 2 -

VMOV <Sm>, <Sm1>, <Rt>, <Rt2> 1 1 -

VMOV <Rt>, <Rt2>, <Sm>, <Sm1> 1 2 -

VMOV <Dm>, <Rt>, <Rt2> 1 1 -

VMOV <Rt>, <Rt2>, <Dm> 1 2 -

VMSR <spec_reg>, <Rt> 6 - ブロッ ク と直列化

VMRS <Rt>, <spec_reg> 1 2 直列化

VMRS APSR_nzcv, FPSCR 1 - 直列化

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 14-29ID013111 Non-Confidential

Page 394: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

サイクルタイ ミングとインターロック動作

14.20 浮動小数点ロード / ストア命令

こ こでは、 VFP レジスタファ イルを操作するすべてのロード / ス ト ア命令のサイ クルタイ ミ ング動作について説明します。

• ベースアドレス レジスタ とすべてのオフセッ ト レジスタは、 ロード と ス ト ア両方について Very Early Reg です。

• ス ト ア命令の場合、 データレジスタ (Sd または Dd) は常に Late Reg です。

• ロード / ス ト ア命令のサイ クルタイ ミ ングは、 転送の開始アドレスの影響を受けます。

注 開始アドレスは必ずしもベースアドレス と同じではあ り ません。

• 複数ロード / ス ト ア命令のサイクルタイ ミ ングは、 ベースアドレス レジスタが命令によって更新されたるど うか、 つま りベースレジスタ ラ イ トバッ クが発生するかど うかの影響も受けます。

単一ロード / ス ト ア命令および複数ロード命令のサイクル数と結果レイテンシを、表 14-25 に示します。 値は、 命令ごとに、 ベースレジスタ ラ イ トバッ クを伴う場合と伴わない場合について、 さ らに各種の開始アドレスアライ メン トについて示されています。 複数ス ト ア命令のサイクルカウン ト とベースレジスタ結果レイテンシは、対応する複数ロード命令と同じです。

表 14-25 浮動小数点ロード / ストア命令のサイクルタイ ミング動作

命令の例サイクル数 /メモリサイクル数

ライ トバックを行う場合のサイクル数 (!)

結果レイテンシ(ロード)

結果レイテンシ(ベースレジスタ、<Rn>)

コ メン ト

VLDR.32 <Sd>, [<Rn>{, #+/-<imm>}] 1 - 1 - -

VLDR.64 <Dd>, [<Rn>{, #+/-<imm>}] 1 - 1 - 64 ビッ ト アラインドのアドレス

VLDR.64 <Dd>, [<Rn>{, #+/-<imm>}] 2 - 2 - 非アラインド

VSTR.32 <Sd>, [<Rn>{, #+/-<imm>}] 1 - - - -

VSTR.64 <Dd>, [<Rn>{, #+/-<imm>}] 1 - - - 64 ビッ ト アライン

ドのアドレス

VSTR.64 <Dd>, [<Rn>{, #+/-<imm>}] 2 - - - 非アラインド

先頭アドレスが 64 ビッ ト アラインドの場合

VLDM{mode}.32 <Rn>{!}, {s1} 1 1 1 1 -

VLDM{mode}.32 <Rn>{!}, {s1,s2} 1 2 1,1 2 -

VLDM{mode}.32 <Rn>{!}, {s1-s3} 2 2 1,1,2 2 -

VLDM{mode}.32 <Rn>{!}, {s1-s4} 2 3 1,1,2,2 3 -

VLDM{mode}.64 <Rn>{!}, {d1} 1 2 1 2 -

VLDM{mode}.64 <Rn>{!}, {d1,d2} 2 3 1,2 3 -

VLDM{mode}.64 <Rn>{!}, {d1-d3} 3 4 1,2,3 4 -

VLDM{mode}.64 <Rn>{!}, {d1-d4} 4 5 1,2,3,4 5 -

先頭アドレスが 64 ビッ ト アラインドでない場合

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 14-30ID013111 Non-Confidential

Page 395: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

サイクルタイ ミングとインターロック動作

VLDM{mode}.32 <Rn>{!}, {s1} 1 1 1 1 -

VLDM{mode}.32 <Rn>{!}, {s1,s2} 2 2 1,2 2 -

VLDM{mode}.32 <Rn>{!}, {s1-s3} 2 3 1,2,2 3 -

VLDM{mode}.32 <Rn>{!}, {s1-s4} 3 3 1,2,2,3 3 -

VLDM{mode}.64 <Rn>{!}, {d1} 2 2 2 2 -

VLDM{mode}.64 <Rn>{!}, {d1,d2} 3 3 2,3 3 -

VLDM{mode}.64 <Rn>{!}, {d1-d3} 4 4 2,3,4 4 -

VLDM{mode}.64 <Rn>{!}, {d1-d4} 5 5 2,3,4,5 5 -

表 14-25 浮動小数点ロード / ストア命令のサイクルタイ ミング動作 (続き)

命令の例サイクル数 /メモリサイクル数

ライ トバックを行う場合のサイクル数 (!)

結果レイテンシ(ロード)

結果レイテンシ(ベースレジスタ、<Rn>)

コ メン ト

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 14-31ID013111 Non-Confidential

Page 396: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

サイクルタイ ミングとインターロック動作

14.21 浮動小数点単精度データ処理命令

こ こでは、 すべての単精度 VFP CDP 命令のサイ クルタイ ミ ング動作について説明します。 これには、 VMUL.F32 などの算術演算命令、 “VMOV.F32 <Sd>, #<imm>”、 VABS.F32、VNEG.F32、 “VMOV <Sd>, <Sm>” などのデータおよびイ ミディエート移動命令、 および比較命令と変換命令が含まれます。

浮動小数点単精度データ処理命令のサイクルタイ ミ ング動作を、 表 14-26 に示します。

表 14-26 浮動小数点単精度データ処理命令のサイクルタイ ミング動作

命令の例 サイクル数 Early Reg 結果レイテンシ

VMLA.F32 <Sd>, <Sn>, <Sm>a

a. VMLS.F32、 VNMLS.F32、 VNMLA.F32 も同様です。

1b

b. VMLA.F32 は、 アウ トオブオーダで完了します。 また、 この命令の完了時に、 加算命令 (VADD) または特定のデュアル発行命令のペアが Iss ステージに存在する

場合、 追加のサイクル (合計 2 サイクル) が発生する可能性があ り ます。

<Sn>, <Sm> 5c

c. 結果の <Sd> に依存する命令が別の VMLA.F32 命令の場合、 および依存するオペランドが累算オペランド <Sd> の場合を除きます。 この場合、 結果レイテンシが 3サイクル少なくな り ます。

VADD.F32 <Sd>, <Sn>, <Sm>d

d. VSUB.F32、 VMUL.F32、 VNMUL.F32 も同様です。

1 <Sn>, <Sm> 2

VDIV.F32 <Sd>, <Sn>, <Sm> 2 <Sn>, <Sm> 16

VSQRT.F32 <Sd>, <Sm> 2 <Sm> 16

VMOV.F32 <Sd>, #<imm> 1 - 1

VMOV.F32 <Sd>, <Sm>e

e. VABS.F32 と VNEG.F32 も同様です。

1 - 1

VCMP.F32 <Sd>, <Sm>f

f. VCMPE.F32 も同様です。

1 <Sd>, <Sm> -

VCMPE.F32 <Sd>, #0.0f 1 <Sd> -

VCVT.F32.U32 <Sd>, <Sm>g

g. VCVT.F32.S32 も同様です。

1 <Sm> 2

VCVT.F32.U32 <Sd>, <Sd>, #<fbits>h

h. VCVT.F32.U16、 VCVT.F32.S32、 VCVT.F32.S16 も同様です。

1 <Sd> 2

VCVTR.U32.F32 <Sd>, <Sm>i

i. VCVT.U32.F32、 VCVTR.S32.F32、 VCVT.S32.F32 も同様です。

1 <Sm> 2

VCVT.U32.F32 <Sd>, <Sd>, #<fbits>j

j. VCVT.U16.F32、 VCVT.S32.F32、 VCVT.S16.F32 も同様です。

1 <Sd> 2

VCVT.F64.F32 <Dd>, <Sn> 3 <Sm> 5

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 14-32ID013111 Non-Confidential

Page 397: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

サイクルタイ ミングとインターロック動作

14.22 浮動小数点倍精度データ処理命令

こ こでは、 すべての倍精度 VFP CDP 命令のサイ クルタイ ミ ング動作について説明します。 これには、 VMUL.F64 などの算術演算命令、 “VMOV.F64 <Dd>, #<imm>”、 VABS.F64、VNEG.F64、 “VMOV <Dd>, <Dm>” などのデータおよびイ ミディエート移動命令、 および比較命令と変換命令が含まれます。

浮動小数点倍精度データ処理命令のサイクルタイ ミ ング動作を、 表 14-27 に示します。

表 14-27 浮動小数点倍精度データ処理命令のサイクルタイ ミング動作

命令の例 サイクル数 Early Reg 結果レイテンシ

VMLA.F64 <Dd>, <Dn>, <Dm>a

a. VMLS.F64、 VNMLS.F64、 VNMLA.F64 も同様です。

13 <Dn>, <Dm> 19

VADD.F64 <Dd>, <Dn>, <Dm>b

b. VSUB.F64、 VMUL.F64、 VNMUL.F64 も同様です。

3 <Dn>, <Dm> 9

VDIV.F64 <Dd>, <Dn>, <Dm> 3 <Dn>, <Dm> 96

VSQRT.F64 <Dd>, <Dm> 3 <Dm> 96

VMOV.F64 <Dd>, #<imm> 1 - 1

VMOV.F64 <Dd>, <Dm>c

c. VABS.F64 と VNEG.F64 も同様です。

1 - 1

VCMP.F64 <Dd>, <Dm>d

d. VCMPE.F64 も同様です。

2 <Dd>, <Dm> -

VCMPE.F64 <Dd>, #0.0d 2 <Dm> -

VCVT.F64.U32 <Dd>, <Sm>e

e. VCVT.F64.S32 も同様です。

3 <Dm> 7

VCVT.F64.U32 <Dd>, <Dd>, #<fbits>f

f. VCVT.F64.U16、 VCVT.F64.S32、 VCVT.F64.S16 も同様です。

3 <Dd> 7

VCVTR.U32.F64 <Sd>, <Dm>g

g. VCVT.U32.F64、 VCVTR.S32.F64、 VCVT.S32.F64 も同様です。

3 <Dm> 7

VCVT.U32.F64 <Dd>, <Dd>, #<fbits>h

h. VCVT.U16.F64、 VCVT.S32.F64、 VCVT.S16.F64 も同様です。

3 <Dd> 7

VCVT.F32.F64 <Sd>, <Dn> 3 <Dm> 7

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 14-33ID013111 Non-Confidential

Page 398: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

サイクルタイ ミングとインターロック動作

14.23 デュアル発行

命令のスループッ ト を向上させるために、 プロセッサは特定の命令のペアを同時に発行するこ とができます。 これをデュアル発行と呼びます。 これが実行された場合、ペアのうちでサイ クルカウン トの少ないほうの命令が、 0 サイクルで実行されたよ うに見えます。 命令のペアをデュアル発行できる場合は、 デュアル発行が不可能になっていない限り、 常にデュアル発行されます (「補助制御レジスタ」 (ページ 4-38)を参照)。 命令ペアのどちらかがインターロ ッ ク されている場合、 両方がインターロ ッ ク されます。

こ こでは、 次の ト ピッ クについて説明します。

• 「デュアル発行の規則」• 「許可される組み合わせ」 (ページ 14-35)

14.23.1 デュアル発行の規則

デュアル発行される命令には、 次の規則が適用されます。

• 両方の命令は、 同時に発行ステージで使用可能な必要があ り ます。 多くの分岐が存在する場合、 この条件が満たされる可能性は低くな り ます。

• 2 つ目の命令が B #immed でない場合、 ソースレジスタ と して PC を使用できません。

• 1 つ目の命令で、 デスティネーシ ョ ンレジスタ と して PC を使用するこ とはできません。

• 両方の命令は、 同じ命令セッ ト (ARM または Thumb) に属している必要があり ます。

• 2 つの命令の間に、 データ依存関係が存在しないこ とが必要です。 つま り、 1つ目の命令のデスティネーシ ョ ンレジスタを、 2 つ目の命令のソースレジスタとするこ とはできません。

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 14-34ID013111 Non-Confidential

Page 399: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

サイクルタイ ミングとインターロック動作

14.23.2 許可される組み合わせ

許可される命令の組み合わせを、 表 14-28 に示します。 特に記載がなければ、 条件付き命令またはフラグを設定する命令を使用できます。 表 14-28 に記載されている命令の組み合わせのみを、 それらの命令の組み合わせが 「デュアル発行の規則」 (ページ 14-34) に指定されている規則に従っているこ とが保証される場合のみ、 デュアル発行できます。

表 14-28 許可される命令の組み合わせ

デュアル発行ケース

1 つ目の命令 2 つ目の命令

ケース A 複数ロード / ス ト ア、 ダブルワード ロード / ス ト ア、

フラグを設定する乗算、 非 VFP コプロセッサ操作、 そ

の他のプロセッサ制御命令a、 およびプロセッサに浮動小数点ロジッ クが内蔵されていない場合の浮動小数点命令を除く、 任意の命令

B #immed

IT

NOP

ケース A-Fb 複数ロード / ス ト ア、 倍精度 CDP 命令、 VCVT.F64.F32、

および VMRS と VMSR を除く、 任意の浮動小数点命令

ケース B1 LDR <Rt>, [<Rn>, #<imm>]c

LDR <Rt>, [<Rn>, <Rm>]c

LDR <Rt>, [<Rn>, <Rm>, LSL #1, 2 or 3]c

レジスタ値でシフ トする必要がない、 任意のデータ処理命令d

任意のビッ ト フ ィールド命令、 飽和命令、 ビットパッキング命令e

任意の符号付きまたは符号なし拡張命令f

任意の SIMD 加算または減算命令g

その他の命令h

ケース B1-Fb "VMOV.F32 <Sd>, #<imm>"、 VNEG.F32、 VABS.F32、VCVT.F64.F32、 VDIV.F32、 VSQRT.F32 を除く、 任意の単精度 CDPi

浮動小数点レジスタファ イルとの 32 ビッ ト転

送 l

ケース B2 STR <Rt>, [<Rn>, #<imm>]c ケース B1 と同様

ケース B2-Fb ケース B1-F と同様

ケース C MOV <Rd>, #immedjk

MOVW <Rd>, #immedj

MOV <Rd>, <Rm>j

任意のデータ処理命令 d

任意のビッ ト フ ィールド命令、 飽和命令、 ビットパッキング命令 e

任意の符号付きまたは符号なし拡張命令 f

任意の SIMD 加算または減算命令 g

その他の命令 h

ケース C-Fb 浮動小数点レジスタファ イルとの 32 ビッ ト転送l

ケース F1b、m "VMOV.S32 <Sd>, #<imm>"、 VCVT.F64.F32、 VABS.F32、 VNEG.F32

を除く、 任意の単精度 CDPiケース C またはケース C-F と同様

ケース F2_ldb VLDR.F32n ケース B1 またはケース B1-F と同様

ケース F2_stb VSTR.F32n ケース B1 と同様

積和命令を除く、 任意の単精度 CDPio

浮動小数点レジスタファ イルとの 32 ビッ ト転送 l

ケース F2Db VLDR.F64n ケース B1 と同様

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 14-35ID013111 Non-Confidential

Page 400: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

サイクルタイ ミングとインターロック動作

ケース F3b 浮動小数点レジスタファ イルとの 32 ビッ ト転送 l

"VMOV.F32 <Sd>, <Sd>, <Sm>"、 VABS.F32、 VNEG.F32

ケース F2_st と同様

ケース F4b 複数ロード / ス ト ア、 ダブルワード ロード / ス ト ア、

非 VFP コプロセッサ操作、 マルチサイクル乗算命令p、倍精度浮動小数点 CDP 命令、 VCVT.F64.F32、 その他のプロセッサ制御命令を除く、 フラグをセッ ト しない任意の命令 a

"VMOV.F32 <Sd>, #<imm>"、 VNEG.F32、 VABS.F32、VCVT.F64.F32、 VDIV.F32、 VSQRT.F32 を除く、 任意の単精度 CDPi

浮動小数点レジスタファ イルとの 32 ビッ ト転

送 l

ケース F6b VMRS r15, FPSCR ケース A と同様

a. これらは、 プロセッサ状態を更新する命令、 同期命令、 SVC 命令、 BKPT 命令、 プリ フェ ッチアボート を生成した命令、 未定義命令です。

b. このケースは、 浮動小数点機能が Cortex-R4F プロセッサ用に構成されている場合にのみ発生する可能性があ り ます (「構成可能なオプシ ョ ン」 (ページ 1-13) を参照)。

c. LDR の代わりに、 LDRB、 LDRH、 LDRSB、 または LDRSH を使用するこ とができます。 STR の代わりに、 STRB または STRH を使用すること もできます。

d. データ処理命令は、 ADC、 ADD、 ADDW、 AND、 ASR、 BIC、 CLZ、 CMN、 CMP、 EOR、 LSL、 LSR、 MOV、 MOVT、 MOVW、 MVN、 ORN、 ORR、 ROR、 RRX、 RSB、SBC、 SUB、 SUBW、 TEQ、 TST です。

e. ビッ ト フ ィールド命令、 飽和命令、 およびビッ トパッキング命令は、 BFC、 BFI、 PKHBT、 PKHTB、 QADD、 QDADD、 QDSUB、 QSUB、 SBFX、SSAT、 SSAT16、 UBFX、 USAT、 USAT16 です。

f. 符号付きまたは符号なし拡張命令は、 SXTAB、 SXTAB16、 SXTAH、 SXTB、 SXTB16、 SXTH、 UXTAB、 UXTAB16、 UXTAH、 UXTB、 UXTB16、 UXTH です。

g. SIMD 加算および減算命令は、 QADD16、 QADD8、 QASX、 SQUB16、 QSUB8、 QSAX、 SADD16、 SADD8、 SASX、 SHADD16、 SHADD8、 SHASX、 SHSUB16、SHSUB8、 SHSAX、 SSUB16、 SSUB8、 SSAX、 UADD16、 UADD8、 UASX、 UHADD16、 UHADD8、 UHASX、 UHSUB16、 UHSUB8、 UHSAX、 UQADD16、 UQADD8、 UQASX、UQSUB16、 UQSUB8、 UQSAX、 USUB16、 USUB8、 USAX です。

h. その他の命令は、 RBIT、 REV、 REV16、 REVSH、 SEL です。i. 単精度 CDP は、 VABS.F32、 VNEG.F32、 "VMOV.F32 <Sd>, #<imm>"、 VMLA.F32、 VMLS.F32、 VNMLS.F32、 VNMLA.F32、 VMUL.F32、 VNMUL.F32、

VADD.F32、 VSUB.F32、 VDIV.F32、 VSQRT.F32、 VCMP.F32、 VCMPE.F32、 VCVT.F64.F32、 VCVT.F32.U32、 VCVT.F32.S32、 VCVT.F32.U16、VCVT.F32.S16、 VCVTR.U32.F32、 VCVT.U32.F32、 VCVTR.S32.F32、 VCVT.S32.F32、 VCVT.U16.F32、 VCVT.S16.F32 です。

j. フラグを設定するこ とはできません。k. イ ミディエート値のシフ トはできません。l. 浮動小数点レジスタファイルとの 32 ビッ ト転送には、 "VMOV <Sn>, <Rt>"、 "VMOV <Dn[x]>, <Rt>"、 "VMOV <Rt>, <Dn[x]>"、 および

"VMOV <Rt>, <Sn>" を含み、 VMRS と VMSR を除く、 シングルまたはハーフダブル浮動小数点レジスタ転送が含まれます。m. 1 つ目の命令が浮動小数点積和で、 2 つ目の命令が浮動小数点レジスタファイルへの 32 ビッ ト転送の場合、 2 つの命令のデ

スティネーシ ョ ンレジスタが異なる合にのみケース F1 が発生します。

n. 任意のアドレシングモードo. 単精度浮動小数点積和命令は、 VMLA.F32、 VMLS.F32、 VNMLS.F32、 VNMLA.F32 です。p. マルチサイクル乗算命令は、 SMMUL、 SMMLA、 SMMLS、 MUL、 MLA、 MLS、 SMULL、 SMLAL、 UMAAL、 UMULL、 UMLAL です。

表 14-28 許可される命令の組み合わせ (続き)

デュアル発行ケース

1 つ目の命令 2 つ目の命令

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 14-36ID013111 Non-Confidential

Page 401: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

第 15 章 AC 特性

本章では、 プロセッサのタイ ミ ングパラ メータについて説明します。 本章は次のセクシ ョ ンから構成されています。

• 「プロセッサのタイ ミ ング」 (ページ 15-2)

• 「プロセッサのタイ ミ ングパラ メータ」 (ページ 15-3)

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 15-1ID013111 Non-Confidential

Page 402: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

AC特性

15.1 プロセッサのタイ ミング

プロセッサの AXI バスインタフェースは、 『AMBA AXI 仕様』 に準拠しています。AXI の書き込み / 読み出し転送のタイ ミ ングと、 エラー応答については、 『AMBA AXIプロ ト コル v1.0 仕様』 を参照して下さい。

プロセッサの APB デバッグインタフェースは、 『AMBA 3 APB プロ ト コル v1.0 仕様』に準拠しています。 APB の書き込み / 読み出し転送のタイ ミ ングと、 エラー応答については、 『AMBA 3 APB プロ ト コル v1.0 仕様』 を参照して下さい。

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 15-2ID013111 Non-Confidential

Page 403: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

AC特性

15.2 プロセッサのタイ ミングパラメータ

こ こでは、 プロセッサの入出力ポートのタイ ミ ングパラ メータについて説明します。

SoC に適用される各プロセッサ信号の、 タイ ミ ングパラ メータまたは制約条件による遅延の 大値を、 表 15-1 から表 15-17 (ページ 15-11) までに、 パーセンテージで示します。 入力遅延と出力遅延の列は、 大時間と 小時間を、 その信号についてSoC に入力されるプロセッサ ク ロ ッ クサイ クルの割合で示しています。

こ こでは、 次の ト ピッ クについて説明します。

• 「入力ポートのタイ ミ ングパラ メータ」• 「出力ポートのタイ ミ ングパラ メータ」 (ページ 15-8)

15.2.1 入力ポートのタイ ミングパラ メータ

その他の入力ポートのタイ ミ ングパラ メータを、 表 15-1 に示します。

構成入力ポートのタイ ミ ングパラ メータを、 表 15-2 に示します。

表 15-1 その他の入力ポートのタイ ミングパラメータ

小入力遅延 大入力遅延 信号名

ク ロ ッ クの不確定分 10% nRESET

ク ロ ッ クの不確定分 10% nSYSPORESET

ク ロ ッ クの不確定分 10% PRESETDBGn

ク ロ ッ クの不確定分 50% nCPUHALT

ク ロ ッ クの不確定分 20% DBGNOCLKSTOP

表 15-2 構成入力ポートのタイ ミングパラメータ

小入力遅延 大入力遅延 信号名

ク ロ ッ クの不確定分 20% VINITHI

ク ロ ッ クの不確定分 20% CFGEE

ク ロ ッ クの不確定分 20% CFGIE

ク ロ ッ クの不確定分 20% INITRAMA

ク ロ ッ クの不確定分 20% INITRAMB

ク ロ ッ クの不確定分 20% LOCZRAMA

ク ロ ッ クの不確定分 20% TEINIT

ク ロ ッ クの不確定分 20% CFGNMFI

ク ロ ッ クの不確定分 20% CFGATCMSZ[3:0]

ク ロ ッ クの不確定分 20% CFGBTCMSZ[3:0]

ク ロ ッ クの不確定分 20% PARECCENRAM[2:0]

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 15-3ID013111 Non-Confidential

Page 404: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

AC特性

割り込み入力ポートのタイ ミ ングパラ メータを、 表 15-3 に示します。

AXI マスタポートの入力タイ ミ ングパラ メータを、 表 15-4 に示します。

クロ ッ クの不確定分 20% ERRENRAM[2:0]

ク ロ ッ クの不確定分 20% PARLVRAM

ク ロ ッ クの不確定分 20% ENTCM1IF

ク ロ ッ クの不確定分 20% SLBTCMSB

ク ロ ッ クの不確定分 20% RMWENRAM[1:0]

表 15-3 割り込み入力ポートのタイ ミングパラメータ

小入力遅延 大入力遅延 信号名

ク ロ ッ クの不確定分 60% nFIQ

ク ロ ッ クの不確定分 60% nIRQ

ク ロ ッ クの不確定分 10% INTSYNCEN

ク ロ ッ クの不確定分 60% IRQADDRV

ク ロ ッ クの不確定分 60% IRQADDRVSYNCEN

ク ロ ッ クの不確定分 60% IRQADDR[31:2]

表 15-4 AXI マスタ入力ポートのタイ ミングパラメータ

小入力遅延 大入力遅延 信号名

ク ロ ッ クの不確定分 50% ACLKENM

ク ロ ッ クの不確定分 60% AWREADYM

ク ロ ッ クの不確定分 60% WREADYM

ク ロ ッ クの不確定分 60% BIDM[3:0]

ク ロ ッ クの不確定分 60% BRESPM[1:0]

ク ロ ッ クの不確定分 60% BVALIDM

ク ロ ッ クの不確定分 60% ARREADYM

ク ロ ッ クの不確定分 60% RIDM[3:0]

ク ロ ッ クの不確定分 60% RDATAM[63:0]

ク ロ ッ クの不確定分 60% RRESPM[1:0]

ク ロ ッ クの不確定分 60% RLASTM

表 15-2 構成入力ポートのタイ ミングパラメータ (続き)

小入力遅延 大入力遅延 信号名

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 15-4ID013111 Non-Confidential

Page 405: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

AC特性

AXI スレーブポートの入力タイ ミ ングパラ メータを、 表 15-5 に示します。

ク ロ ッ クの不確定分 60% RVALIDM

ク ロ ッ クの不確定分 60% BPARITYM

ク ロ ッ クの不確定分 60% RPARITYM

表 15-5 AXI スレーブ入力ポートのタイ ミングパラメータ

小入力遅延 大入力遅延 信号名

ク ロ ッ クの不確定分 50% ACLKENS

ク ロ ッ クの不確定分 60% AWIDS[7:0]

ク ロ ッ クの不確定分 60% AWADDRS[22:0]

ク ロ ッ クの不確定分 60% AWLENS[3:0]

ク ロ ッ クの不確定分 60% AWSIZES[2:0]

ク ロ ッ クの不確定分 60% AWBURSTS[1:0]

ク ロ ッ クの不確定分 60% AWPROTS

ク ロ ッ クの不確定分 60% AWUSERS[3:0]

ク ロ ッ クの不確定分 60% AWVALIDS

ク ロ ッ クの不確定分 60% WDATAS[63:0]

ク ロ ッ クの不確定分 60% WSTRBS[7:0]

ク ロ ッ クの不確定分 60% WLASTS

ク ロ ッ クの不確定分 60% WVALIDS

ク ロ ッ クの不確定分 60% BREADYS

ク ロ ッ クの不確定分 60% ARIDS[7:0]

ク ロ ッ クの不確定分 60% ARADDRS[22:0]

ク ロ ッ クの不確定分 60% ARLENS[3:0]

ク ロ ッ クの不確定分 60% ARSIZES[2:0]

ク ロ ッ クの不確定分 60% ARBURSTS[1:0]

ク ロ ッ クの不確定分 60% ARPROTS

ク ロ ッ クの不確定分 60% ARUSERS[3:0]

ク ロ ッ クの不確定分 60% ARVALIDS

ク ロ ッ クの不確定分 60% RREADYS

表 15-4 AXI マスタ入力ポートのタイ ミングパラメータ (続き)

小入力遅延 大入力遅延 信号名

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 15-5ID013111 Non-Confidential

Page 406: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

AC特性

デバッグ入力ポートの入力タイ ミ ングパラ メータを、 表 15-6 に示します。

ETM 入力ポートの入力タイ ミ ングパラ メータを、 表 15-7 に示します。

ク ロ ッ クの不確定分 60% AWPARITYS

ク ロ ッ クの不確定分 60% WPARITYS

ク ロ ッ クの不確定分 60% ARPARITYS

表 15-6 デバッグ入力ポートのタイ ミングパラメータ

小入力遅延 大入力遅延 信号名

ク ロ ッ クの不確定分 50% DBGEN

ク ロ ッ クの不確定分 50% NIDEN

ク ロ ッ クの不確定分 50% EDBGRQ

ク ロ ッ クの不確定分 50% PCLKENDBG

ク ロ ッ クの不確定分 50% PSELDBG

ク ロ ッ クの不確定分 50% PADDRDBG[11:2]

ク ロ ッ クの不確定分 50% PADDRDBG31

ク ロ ッ クの不確定分 50% PWDATADBG[31:0]

ク ロ ッ クの不確定分 50% PENABLEDBG

ク ロ ッ クの不確定分 50% PWRITEDBG

ク ロ ッ クの不確定分 10% DBGROMADDR[31:12]

ク ロ ッ クの不確定分 10% DBGROMADDRV

ク ロ ッ クの不確定分 10% DBGSELFADDR[31:12]

ク ロ ッ クの不確定分 10% DBGSELFADDRV

ク ロ ッ クの不確定分 50% DBGRESTART

表 15-7 ETM 入力ポートのタイ ミングパラメータ

小入力遅延 大入力遅延 信号名

ク ロ ッ クの不確定分 50% ETMPWRUP

ク ロ ッ クの不確定分 50% nETMWFIREADY

ク ロ ッ クの不確定分 50% ETMEXTOUT[1:0]

表 15-5 AXI スレーブ入力ポートのタイ ミングパラメータ (続き)

小入力遅延 大入力遅延 信号名

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 15-6ID013111 Non-Confidential

Page 407: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

AC特性

テス ト入力ポートのタイ ミ ングパラ メータを、 表 15-8 に示します。

TCM インタフェース入力ポートのタイ ミ ングパラ メータを、 表 15-9 に示します。

表 15-8 テスト入力ポートのタイ ミングパラメータ

小入力遅延 大入力遅延 信号名

ク ロ ッ クの不確定分 10% SE

ク ロ ッ クの不確定分 10% RSTBYPASS

ク ロ ッ クの不確定分 50% MBTESTON

ク ロ ッ クの不確定分 50% MBISTDIN[71:0]

ク ロ ッ クの不確定分 50% MBISTADDR[19:0]

ク ロ ッ クの不確定分 50% MBISTCE

ク ロ ッ クの不確定分 50% MBISTSEL[4:0]

ク ロ ッ クの不確定分 50% MBISTWE[7:0]

表 15-9 TCM インタフェース入力ポートのタイ ミングパラメータ

小入力遅延 大入力遅延 信号名

ク ロ ッ クの不確定分 65% ATCDATAIN[63:0]

ク ロ ッ クの不確定分 65% ATCPARITYIN[13:0]

ク ロ ッ クの不確定分 65% ATCERROR

ク ロ ッ クの不確定分 50% ATCWAIT

ク ロ ッ クの不確定分 40% ATCLATEERROR

ク ロ ッ クの不確定分 50% ATCRETRY

ク ロ ッ クの不確定分 65% B0TCDATAIN[63:0]

ク ロ ッ クの不確定分 65% B0TCPARITYIN[13:0]

ク ロ ッ クの不確定分 65% B0TCERROR

ク ロ ッ クの不確定分 50% B0TCWAIT

ク ロ ッ クの不確定分 40% B0TCLATEERROR

ク ロ ッ クの不確定分 50% B0TCRETRY

ク ロ ッ クの不確定分 65% B1TCDATAIN[63:0]

ク ロ ッ クの不確定分 65% B1TCPARITYIN[13:0]

ク ロ ッ クの不確定分 65% B1TCERROR

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 15-7ID013111 Non-Confidential

Page 408: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

AC特性

デュアル冗長コア比較ロジッ ク入力制御バスの DCCMINP[7:0] と DCCMINP2[7:0] のタイ ミ ングパラ メータは、 実装定義です。 マクロセルの実装者にお問い合わせ下さい。

15.2.2 出力ポートのタイ ミングパラ メータ

ほとんどの出力ポートの 大出力遅延は 60% です。 つま り、 ク ロ ッ クサイ クルの60% を SoC が使用できます。

その他の出力ポートのタイ ミ ングパラ メータを、 表 15-10 に示します。

割り込み出力ポートのタイ ミ ングパラ メータを、 表 15-11 に示します。

AXI マスタ出力ポートのタイ ミ ングパラ メータを、 表 15-12 に示します。

ク ロ ッ クの不確定分 50% B1TCWAIT

ク ロ ッ クの不確定分 40% B1TCLATEERROR

ク ロ ッ クの不確定分 50% B1TCRETRY

表 15-9 TCM インタフェース入力ポートのタイ ミングパラメータ (続き)

小入力遅延 大入力遅延 信号名

表 15-10 その他の出力ポートのタイ ミングパラメータ

小出力遅延 大出力遅延 信号名

ク ロ ッ クの不確定分 10% STANDBYWFI

表 15-11 割り込み出力ポートのタイ ミングパラメータ

小出力遅延 大出力遅延 信号名

ク ロ ッ クの不確定分 60% IRQACK

ク ロ ッ クの不確定分 60% nPMUIRQ

表 15-12 AXI マスタ出力ポートのタイ ミングパラメータ

小出力遅延 大出力遅延 信号名

ク ロ ッ クの不確定分 60% AWIDM[3:0]

ク ロ ッ クの不確定分 60% AWADDRM[31:0]

ク ロ ッ クの不確定分 60% AWLENM[3:0]

ク ロ ッ クの不確定分 60% AWSIZEM[2:0]

ク ロ ッ クの不確定分 60% AWBURSTM[1:0]

ク ロ ッ クの不確定分 60% AWLOCKM[1:0]

ク ロ ッ クの不確定分 60% AWCACHEM[3:0]

ク ロ ッ クの不確定分 60% AWPROTM[2:0]

ク ロ ッ クの不確定分 60% AWUSERM[4:0]

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 15-8ID013111 Non-Confidential

Page 409: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

AC特性

ク ロ ッ クの不確定分 60% AWVALIDM

ク ロ ッ クの不確定分 60% WIDM[3:0]

ク ロ ッ クの不確定分 60% WDATAM[63:0]

ク ロ ッ クの不確定分 60% WSTRBM[7:0]

ク ロ ッ クの不確定分 60% WLASTM

ク ロ ッ クの不確定分 60% WVALIDM

書き込み応答チャネル

クロ ッ クの不確定分 60% BREADYM

ク ロ ッ クの不確定分 60% ARIDM[3:0]

ク ロ ッ クの不確定分 60% ARADDRM[31:0]

ク ロ ッ クの不確定分 60% ARLENM[3:0]

ク ロ ッ クの不確定分 60% ARSIZEM[2:0]

ク ロ ッ クの不確定分 60% ARBURSTM[1:0]

ク ロ ッ クの不確定分 60% ARLOCKM[1:0]

ク ロ ッ クの不確定分 60% ARCACHEM[3:0]

ク ロ ッ クの不確定分 60% ARPROTM[2:0]

ク ロ ッ クの不確定分 60% ARUSERM[4:0]

ク ロ ッ クの不確定分 60% ARVALIDM

ク ロ ッ クの不確定分 60% RREADYM

ク ロ ッ クの不確定分 60% AWPARITYM

ク ロ ッ クの不確定分 60% WPARITYM

ク ロ ッ クの不確定分 60% ARPARITYM

ク ロ ッ クの不確定分 50% AXIMPARERR[1:0]

表 15-12 AXI マスタ出力ポートのタイ ミングパラメータ (続き)

小出力遅延 大出力遅延 信号名

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 15-9ID013111 Non-Confidential

Page 410: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

AC特性

AXI スレーブ出力ポートのタイ ミ ングパラ メータを、 表 15-13 に示します。

デバッグインタフェース出力ポートのタイ ミ ングパラ メータを、 表 15-14 に示します。

表 15-13 AXI スレーブ出力ポートのタイ ミングパラメータ

小出力遅延 大出力遅延 信号名

ク ロ ッ クの不確定分 60% AWREADYS

ク ロ ッ クの不確定分 60% WREADYS

ク ロ ッ クの不確定分 60% BIDS[7:0]

ク ロ ッ クの不確定分 60% BRESPS[1:0]

ク ロ ッ クの不確定分 60% BVALIDS

ク ロ ッ クの不確定分 60% ARREADYS

ク ロ ッ クの不確定分 60% RIDS[7:0]

ク ロ ッ クの不確定分 60% RDATAS[63:0]

ク ロ ッ クの不確定分 60% RRESPS[1:0]

ク ロ ッ クの不確定分 60% RLASTS

ク ロ ッ クの不確定分 60% RVALIDS

ク ロ ッ クの不確定分 60% BPARITYS

ク ロ ッ クの不確定分 60% RPARITYS

ク ロ ッ クの不確定分 50% AXISPARERR[2:0]

表 15-14 デバッグインタフェース出力ポートのタイ ミングパラメータ

小出力遅延 大出力遅延 信号名

ク ロ ッ クの不確定分 50% PRDATADBG[31:0]

ク ロ ッ クの不確定分 50% PREADYDBG

ク ロ ッ クの不確定分 50% PSLVERRDBG

ク ロ ッ クの不確定分 50% DBGNOPWRDWN

ク ロ ッ クの不確定分 50% DBGACK

ク ロ ッ クの不確定分 50% DBGTRIGGER

ク ロ ッ クの不確定分 50% DBGRESTARTED

ク ロ ッ クの不確定分 50% DBGRSTREQ

ク ロ ッ クの不確定分 50% COMMTX

ク ロ ッ クの不確定分 50% COMMRX

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 15-10ID013111 Non-Confidential

Page 411: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

AC特性

ETM インタフェース出力ポートのタイ ミ ングパラ メータを、 表 15-15 に示します。

テス ト出力ポートのタイ ミ ングパラ メータを、 表 15-16 に示します。

TCM インタフェース出力ポートのタイ ミ ングパラ メータを、 表 15-17 に示します。

表 15-15 ETM インタフェース出力ポートのタイ ミングパラメータ

小出力遅延 大出力遅延 信号名

ク ロ ッ クの不確定分 50% ETMICTL[13:0]

ク ロ ッ クの不確定分 50% ETMIA[31:1]

ク ロ ッ クの不確定分 50% ETMDCTL[11:0]

ク ロ ッ クの不確定分 50% ETMDA[31:0]

ク ロ ッ クの不確定分 50% ETMDD[63:0]

ク ロ ッ クの不確定分 50% ETMCID[31:0]

ク ロ ッ クの不確定分 50% ETMWFIPENDING

ク ロ ッ クの不確定分 50% EVNTBUS[46:0]

表 15-16 テスト出力ポートのタイ ミングパラメータ

小出力遅延 大出力遅延 信号名

ク ロ ッ クの不確定分 50% MBISTDOUT[71:0]

ク ロ ッ クの不確定分 50% nVALIRQ

ク ロ ッ クの不確定分 50% nVALFIQ

ク ロ ッ クの不確定分 50% nVALRESET

ク ロ ッ クの不確定分 50% VALEDBGRQ

表 15-17 TCM インタフェース出力ポートのタイ ミングパラメータ

小出力遅延 大出力遅延 信号名

ク ロ ッ クの不確定分 45% ATCEN0

ク ロ ッ クの不確定分 45% ATCEN1

ク ロ ッ クの不確定分 45% ATCADDR[22:3]

ク ロ ッ クの不確定分 45% ATCBYTEWR[7:0]

ク ロ ッ クの不確定分 45% ATCSEQ

ク ロ ッ クの不確定分 45% ATCDATAOUT[63:0]

ク ロ ッ クの不確定分 45% ATCPARITYOUT[13:0]

ク ロ ッ クの不確定分 45% ATCACCTYPE[2:0]

ク ロ ッ クの不確定分 45% ATCWE

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 15-11ID013111 Non-Confidential

Page 412: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

AC特性

FPU 出力信号のタイ ミ ングパラ メータを、 表 15-18 に示します。

クロ ッ クの不確定分 45% ATCADDRPTY

ク ロ ッ クの不確定分 45% B0TCEN0

ク ロ ッ クの不確定分 45% B0TCEN1

ク ロ ッ クの不確定分 45% B0TCADDR[22:3]

ク ロ ッ クの不確定分 45% B0TCBYTEWR[7:0]

ク ロ ッ クの不確定分 45% B0TCSEQ

ク ロ ッ クの不確定分 45% B0TCDATAOUT[63:0]

ク ロ ッ クの不確定分 45% B0TCPARITYOUT[13:0]

ク ロ ッ クの不確定分 45% B0TCACCTYPE[2:0]

ク ロ ッ クの不確定分 45% B0TCWE

ク ロ ッ クの不確定分 45% B0TCADDRPTY

ク ロ ッ クの不確定分 45% B1TCEN0

ク ロ ッ クの不確定分 45% B1TCEN1

ク ロ ッ クの不確定分 45% B1TCADDR[23:0]

ク ロ ッ クの不確定分 45% B1TCBYTEWR[7:0]

ク ロ ッ クの不確定分 45% B1TCSEQ

ク ロ ッ クの不確定分 45% B1TCDATAOUT[63:0]

ク ロ ッ クの不確定分 45% B1TCPARITYOUT[13:0]

ク ロ ッ クの不確定分 45% B1TCACCTYPE[2:0]

ク ロ ッ クの不確定分 45% B1TCWE

ク ロ ッ クの不確定分 45% B1TCADDRPTY

表 15-18 FPU 出力ポートのタイ ミングパラメータ

小出力遅延 大出力遅延 信号名

ク ロ ッ クの不確定分 60% FPIXC

ク ロ ッ クの不確定分 60% FPOFC

ク ロ ッ クの不確定分 60% FPUFC

ク ロ ッ クの不確定分 60% FPIOC

ク ロ ッ クの不確定分 60% FPDZC

ク ロ ッ クの不確定分 60% FPIDC

表 15-17 TCM インタフェース出力ポートのタイ ミングパラメータ (続き)

小出力遅延 大出力遅延 信号名

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 15-12ID013111 Non-Confidential

Page 413: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

AC特性

デュアル冗長コア比較ロジッ ク出力バスの DCCMOUT[7:0] と DCCMOUT2[7:0] のタイ ミ ングパラ メータは、 実装定義です。 マクロセルの実装者にお問い合わせ下さい。

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. 15-13ID013111 Non-Confidential

Page 414: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

付録 A プロセッサ信号の説明

この付録では、 プロセッサ信号について説明します。 本章は次のセクシ ョ ンから構成されています。

• 「プロセッサ信号の説明について」 (ページ A-2)

• 「グローバル信号」 (ページ A-3)

• 「構成信号」 (ページ A-4)

• 「VIC インタフェース信号を含む割り込み信号」 (ページ A-7)

• 「レベル 2 インタフェース信号」 (ページ A-8)

• 「TCM インタフェース信号」 (ページ A-13)

• 「デュアルコア インタフェース信号」 (ページ A-16)

• 「デバッグインタフェース信号」 (ページ A-17)

• 「ETM インタフェース信号」 (ページ A-19)

• 「テス ト信号」 (ページ A-20)

• 「MBIST 信号」 (ページ A-21)

• 「検証信号」 (ページ A-22)

• 「FPU 信号」 (ページ A-23)

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. A-1ID013111 Non-Confidential

Page 415: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

プロセッサ信号の説明

A.1 プロセッサ信号の説明について

この付録の表には、 プロセッサ信号の一覧と、 各信号の大きさ と方向、 入力と出力のどちらであるか、 および高水準の説明が示されています。 各表には、 どのクロ ックで信号がサンプリ ングまたは駆動されるかを示すクロ ッ ク列も含まれています。すべての信号は、 ク ロ ッ クの立ち上がりエッジでサンプ リ ングまたは駆動されます。ク ロ ッ ク列には次の情報も含まれています。

任意 入力がプロセッサ内部で同期化されるため、 任意のクロ ッ クで駆動できるこ とを意味します。

固定 入力を特定の値に固定する必要があるこ とを意味します。

リセッ ト リ セッ ト時以外は入力を変更できないこ とを意味します。

すべての出力についてクロ ッ クが記載されていますが、 出力によっては使用前に別のクロ ッ クに同期化される場合があ り ます。

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. A-2ID013111 Non-Confidential

Page 416: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

プロセッサ信号の説明

A.2 グローバル信号

プロセッサのグローバル信号を、 表 A-1 に示します。

フ リークロ ッ クは、 ク ロ ッ クゲート回路にクロ ッ クを供給しているため、 挿入遅延が 小限に抑えられ、 ゲート処理されません。 したがって、 入力クロ ッ ク とフ リークロ ッ ク とのバランスが取れているこ とを保証する必要があ り ます。

表 A-1 グローバル信号

信号 方向 クロック 説明

FREECLKIN 入力 - コアクロ ッ クのフ リーバージ ョ ン

CLKIN 入力 - コアクロ ッ ク

CLKIN2 入力 - デュアル冗長コアを使用した構成用で、 DUALCKLIN と

同相のコアクロ ッ ク a

nRESET 入力 任意 コア リセッ ト

nSYSPORESET 入力 任意 システムパワーオン リセッ ト

nCPUHALT 入力 任意 リセッ ト後のプロセッサホールト

DBGNOCLKSTOP 入力 任意 プロセッサは、 WFI 状態に入る と きにクロ ッ クを停止し

ません。 a

DUALCLKIN 入力 - 2 つ目の冗長コア用のクロ ッ ク a

DUALCLKIN2 入力 - 2 つ目の冗長コア用で、 CLKIN と同相のクロ ッ ク a

STANDBYWFI 出力 FREECLKIN プロセッサがスタンバイモードに入っており、 プロセッサクロ ッ クが停止しているこ とを示します。 この信号はTCM RAM ク ロ ッ クのゲート処理に使用できます。

a. r0px リ ビジ ョ ンのプロセッサでは使用できません。

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. A-3ID013111 Non-Confidential

Page 417: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

プロセッサ信号の説明

A.3 構成信号

プロセッサの構成信号を、 表 A-2 に示します。

表 A-2 構成信号

信号 方向 クロック 説明

VINITHI 入力 固定、リセッ ト

リセッ ト時の V ビッ トの値。 HIGH の場合は、 リセッ ト時に HIVECS モードが選択されます。 詳細については、 「c1、システム制御レジスタ」 (ページ 4-35) を参照して下さい。

CFGEE 入力 固定、リセッ ト

リセッ ト時の EE ビッ トの値。 HIGH の場合、 実装でリセッ ト時に例外用の BE-8 モードが使用されるこ とを示し

ます。 詳細については、 「c1、 システム制御レジスタ」 (ページ 4-35) を参照して下さい。

CFGIE 入力 固定、 リセッ ト

IE ビッ トに反映される、 命令側のエンディアン形式。

HIGH の場合、 ビッグエンディアンの命令フェッチが使用されるこ とを示します。 詳細については、 「c1、 システム制御レジスタ」 (ページ 4-35) を参照して下さい。

INITRAMA 入力 固定、リセッ ト

ATCM イネーブルビッ トの リセッ ト時の値。 HIGH の場合、

密結合メモ リ A (ATCM) がリセッ ト時に稼働状態になるこ

とを示します。 詳細については、 「c9、 ATCM 領域レジスタ」 (ページ 4-58) を参照して下さい。

INITRAMB 入力 固定、リセッ ト

リセッ ト時の BTCM ビッ トの値。 HIGH の場合、 密結合メモ リ B (BTCM) がリセッ ト時に稼働状態になるこ とを示し

ます。 詳細については、 「c9、 BTCM 領域レジスタ」 (ペー

ジ 4-57) を参照して下さい。

LOCZRAMA 入力 固定、リセッ ト

HIGH の場合、 ATCM の初期ベースアドレスが 0 で、

BTCM のベースアドレスが実装定義であるこ とを示します。

LOW の場合、 BTCM の初期ベースアドレスが 0 で、 ATCMのベースアドレスが実装定義であるこ とを示します。

TEINIT 入力 固定、リセッ ト

リセッ ト時の TE ビッ トの値。 リセッ ト時の例外処理状態を決定します。 次のよ うに設定されます。0 = ARM1 = Thumb

詳細については、 「c1、 システム制御レジスタ」 (ページ 4-35) を参照して下さい。

CFGATCMSZ[3:0] 入力 固定 ATCM サイズを選択します。 TCM サイズのエンコードは

次のとおりです。b0000 = 0 KBb0011 = 4 KBb0100 = 8 KBb0101 = 16 KBb0110 = 32 KBb0111 = 64 KBb1000 = 128 KBb1001 = 256 KBb1010 = 512 KBb1011 = 1 MBb1100 = 2 MBb1101 = 4 MBb1110 = 8 MB

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. A-4ID013111 Non-Confidential

Page 418: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

プロセッサ信号の説明

CFGBTCMSZ[3:0] 入力 固定 BTCM のサイズを選択します。 TCM サイズのエンコード

は次のとおりです。b0000 = 0 KBb0011 = 4 KBb0100 = 8 KBb0101 = 16 KBb0110 = 32 KBb0111 = 64 KBb1000 = 128 KBb1001 = 256 KBb1010 = 512 KBb1011 = 1 MBb1100 = 2 MBb1101 = 4 MBb1110 = 8 MB

CFGNMFI 入力 固定、リセッ ト

HIGH の場合、 マスク不能高速割り込みが可能になり ます。

NMFI ビッ トに反映されます。 詳細については、 「c1、 システム制御レジスタ」 (ページ 4-35) を参照して下さい。

ENTCM1IF 入力 固定 B1TCM インタフェースを稼働状態にします。

B0TCM を使用する場合は、 この信号を HIGH に固定しな

いで下さい。

PARECCENRAM[2:0] 入力 固定、リセッ ト

TCM パリティ または ECC チェッ クのイネーブル。 該当す

るビッ ト を HIGH に固定する と、 リセッ ト時に TCM のパリティ または ECC チェッ クが可能になり ます。 次の値を

使用して下さい。

2: B1TCMa

1: B0TCMa

0: ATCM

詳細については、 「補助制御レジスタ」 (ページ 4-38) を参

照して下さい。

PARLVRAM 入力 固定、 リセッ ト

キャ ッシュ、 TCM、 バスについて、 奇数パリティ と偶数パ

リティのいずれかを選択します。 第 8 章 レベル 1 メモ リ システムを参照して下さい。

偶数パリティの場合は LOW に固定

奇数パリティの場合は HIGH に固定

表 A-2 構成信号 (続き)

信号 方向 クロック 説明

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. A-5ID013111 Non-Confidential

Page 419: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

プロセッサ信号の説明

ERRENRAM[2:0] 入力 固定、 リセッ ト

TCM 外部エラーのイネーブル。 該当するビッ ト を HIGH に

固定する と、 リセッ ト時に TCM の外部エラー信号が稼働状態になり ます。 次の値を使用して下さい。2: B1TCM1: B0TCM0: ATCM

詳細については、 「補助制御レジスタ」 (ページ 4-38) を参

照して下さい。

RMWENRAM[1:0]b 入力 固定、 リセッ ト

RMW イネーブルビッ トの リセッ ト時の値。 該当するビッ

ト を HIGH に固定する と、 リセッ ト時に TCM インタ

フェースの読み出し-変更-書き込みが可能になり ます。c

次の値を使用して下さい。1: BTCM0: ATCM

詳細については、 「補助制御レジスタ」 (ページ 4-38) を参

照して下さい。

SLBTCMSB 入力 固定 この信号が HIGH の場合、 BTCM アドレスの 上位ビッ ト

を使用して B1TCM を選択します。

この信号が LOW の場合、 BTCM アドレスのビッ ト [3] を使用します。

a. BTCM が ECC 付きで構成されている場合は、 ビッ ト [2] とビッ ト [1] を同じ値にする必要があ り ます。

b. 32 ビッ ト ECC が実装されている場合は使用されません。

c. r0px リ ビジ ョ ンのプロセッサでは使用できません。

表 A-2 構成信号 (続き)

信号 方向 クロック 説明

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. A-6ID013111 Non-Confidential

Page 420: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

プロセッサ信号の説明

A.4 VIC インタフェース信号を含む割り込み信号

VIC インタフェースで使用される信号を含む割り込み信号を、 表 A-3 に示します。

表 A-3 割り込み信号

信号 方向 クロック 説明

nFIQ 入力 CLKINa

任意b高速割り込みc

nIRQ 入力 CLKINa

任意 b通常割り込み c

INTSYNCEN 入力 固定 割り込み入力が CLKIN に同期していない場合は HIGHに固定

割り込み入力が CLKIN に同期している場合は LOW に

固定

IRQADDRV 入力 CLKINd

任意eIRQADDR が有効であるこ とを示します。

IRQADDRVSYNCEN 入力 固定 VIC からの IRQADDRV 入力が CLKIN と同期していない場合は HIGH に固定

VIC からの IRQADDRV 入力が CLKIN と同期している

場合は LOW に固定

IRQADDR [31:2] 入力 - IRQ のアドレス。 この信号は、 IRQADDRV がアサート

された時点で安定している必要があ り ます。

IRQACK 出力 CLKIN 割り込みに応答します。

nPMUIRQ 出力 CLKIN パフォーマンスモニタ ユニッ ト (PMU) による割り込み

要求

a. INTSYNCEN が LOW に固定されている場合

b. INTSYNCEN が HIGH に固定されている場合

c. この信号はレベル感知型のため、 適切な割り込み応答がプロセッサから返されるまで、 LOW に保持する必

要があ り ます。d. IRQADDRVSYNCEN が LOW に固定されている場合

e. IRQADDRVSYCNEN が HIGH に固定されている場合

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. A-7ID013111 Non-Confidential

Page 421: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

プロセッサ信号の説明

A.5 レベル 2 インタフェース信号

こ こでは、 プロセッサのレベル 2 インタフェース AXI 信号について説明します。 アドバンス ト マイ クロコン ト ローラバス アーキテクチャ (AMBA) AXI 信号の詳細については、 『AMBA AXI プロ ト コル仕様』 を参照して下さい。

注 このセクシ ョ ンに記載されているすべての出力には、 スタンバイ中のリセッ ト時の値が含まれています。

A.5.1 AXI マスタポート

レベル 2 インタフェースの AXI マスタポート信号を、 表 A-4 に示します。ACLKENM 以外のすべての信号は、 ACLKENM がアサート されたと きに CLKINエッジでのみサンプリ ングまたは駆動されます。 詳細については、 「AXI インタフェースのクロ ッ ク」 (ページ 3-9) を参照して下さい。

表 A-4 レベル 2 インタフェースの AXI マスタポート信号

信号 方向 クロック 説明

ACLKENM 入力 CLKIN AXI マスタポートのクロ ッ ク イネーブル

書き込みアドレスチャネル

AWADDRM[31:0] 出力 CLKIN 転送開始アドレス

AWBURSTM[1:0] 出力 CLKIN 書き込みバース ト タイプ

AWCACHEM[3:0] 出力 CLKIN 外部属性に関するデコード情報を提供します。

b0000 = ス ト ロング リオーダ

b0001 = デバイス

b0011 = ノーマル、 キャ ッシュ不可

b0110 = ノーマル、 キャ ッシュ可能、 ライ ト スルー

b1111 = ノーマル、 キャ ッシュ可能、 ライ トバッ ク、 書き込み

割り当て

b0111 = ノーマル、 キャ ッシュ可能、 ライ トバッ ク、 書き込み

割り当てなし

注 AXI 仕様では、 キャッシュ可能 - バッファ可能など、 ARMv6以前の用語を使用して、 これらのエンコードが説明されています。 これらの用語は、 本書で使用されている ノーマル、 キャッシュ不可などの ARMv6 メモリ タイプの説明と等価です。

AWIDM[3:0] 出力 CLKIN 信号の書き込みアドレスグループの ID タグ

AWLENM[3:0] 出力 CLKIN 書き込み転送のバース ト長。 転送のバース ト長の範囲は 1 ~

16 です。 転送のバース ト長は、 4 ビッ トのバイナリ値 - 1 で決定されます。

AWLOCKM[1:0] 出力 CLKIN ロ ッ ク信号

AWPROTM[2:0] 出力 CLKIN 保護タイプ。 3 ビッ トの AXI バスのうち、 ビッ ト [0] のみが使用されます。

AWREADYM 入力 CLKIN アドレス準備完了。 スレーブはこの信号を使用して、 アドレスを受け付け可能なこ とを示します。

AWSIZEM[2:0] 出力 CLKIN 転送のサイズを示します。

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. A-8ID013111 Non-Confidential

Page 422: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

プロセッサ信号の説明

AWUSERM[4:0] 出力 CLKIN 書き込みアドレスチャネルに関するデコード情報を提供します。 この信号のエンコードの詳細については、 表 9-3 (ページ 9-5) を参照して下さい。

AWVALIDM 出力 CLKIN アドレス と制御が有効であるこ とを示します。

書き込みデータチャネル

WDATAM[63:0] 出力 CLKIN 書き込みデータ

WIDM[3:0] 出力 CLKIN 信号の書き込みデータグループの ID タグ

WLASTM 出力 CLKIN バース トの 後のデータ転送を示します。

WREADYM 入力 CLKIN スレーブが書き込みデータを受け付ける準備ができていることを示します。

WSTRBM[7:0] 出力 CLKIN どのバイ ト レーンを更新する必要があるかを示すために使用される書き込みス ト ローブ

WVALIDM 出力 CLKIN アドレス と制御が有効であるこ とを示します。

書き込み応答チャネル

BIDM[3:0] 入力 CLKIN 書き込み応答信号の ID タグ

BREADYM 出力 CLKIN コアが書き込み応答を受け付ける準備ができているこ とを示します。

BRESPM[1:0] 入力 CLKIN 書き込み応答

BVALIDM 入力 CLKIN 有効な書き込み応答が使用可能なこ とを示します。

読み出しアドレスチャネル

ARADDRM[31:0] 出力 CLKIN 命令フェッチバース トの開始アドレス

ARBURSTM[1:0] 出力 CLKIN バース ト タイプ

ARCACHEM[3:0] 出力 CLKIN 外部属性に関するデコード情報を提供します。

b0000 = ス ト ロング リオーダ

b0001 = デバイス

b0011 = ノーマル、 キャ ッシュ不可

b0110 = ノーマル、 キャ ッシュ可能、 ライ ト スルー

b1111 = ノーマル、 キャ ッシュ可能、 ライ トバッ ク、 書き込み

割り当て

b0111 = ノーマル、 キャ ッシュ可能、 ライ トバッ ク、 書き込み

割り当てなし

注 AXI 仕様では、 キャッシュ可能 - バッファ可能など、 ARMv6以前の用語を使用して、 これらのエンコードが説明されています。 これらの用語は、 本書で使用されている ノーマル、 キャッシュ不可などの ARMv6 メモリ タイプの説明と等価です。

ARIDM[3:0] 出力 CLKIN 信号の読み出しアドレスグループの ID タグ

ARLENM[3:0] 出力 CLKIN 命令フェッチのバース ト長

ARLOCKM[1:0] 出力 CLKIN ロ ッ ク信号

ARPROTM[2:0] 出力 CLKIN 保護信号で、 バスアクセスに関する追加情報を提供します。

ARREADYM 入力 CLKIN アドレス準備完了。 スレーブはこの信号を使用して、 アドレスを受け付け可能なこ とを示します。

表 A-4 レベル 2 インタフェースの AXI マスタポート信号 (続き)

信号 方向 クロック 説明

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. A-9ID013111 Non-Confidential

Page 423: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

プロセッサ信号の説明

A.5.2 AXI マスタポートのエラー検出信号

AXI マスタポートのエラー検出信号を、 表 A-5 に示します。 これらの信号は、 プロセッサが AXI バスパリティ を含むよ うに構成されている場合のみ生成されます。 詳細については、 「構成可能なオプシ ョ ン」 (ページ 1-13) を参照して下さい。

A.5.3 AXI スレーブポート

レベル 2 インタフェースの AXI スレーブポート信号を、 表 A-6 に示します。ACLKENS 以外のすべての信号は、 ACLKENS がアサート されたと きに CLKIN エッジでのみサンプリ ングまたは駆動されます。 詳細については、 「AXI インタフェースのク ロ ッ ク」 (ページ 3-9) を参照して下さい。

ARSIZEM[2:0] 出力 CLKIN 転送のサイズを示します。

ARUSERM[4:0] 出力 CLKIN 読み出しアドレスチャネルに関するデコード情報を提供します。 この信号のエンコードの詳細については、 表 9-3 (ペー

ジ 9-5) を参照して下さい。

ARVALIDM 出力 CLKIN アドレス と制御が有効であるこ とを示します。

読み出しデータチャネル

RDATAM[63:0] 入力 CLKIN 読み出しデータ

RIDM[3:0] 入力 CLKIN 信号の読み出しデータグループの ID タグ

RLASTM 入力 CLKIN 読み出しバース トの 後の転送を示します。

RREADYM 出力 CLKIN 読み出し準備完了信号で、 バスマスタが読み出しデータ と応答情報を受け付け可能なこ とを示します。

RRESPM[1:0] 入力 CLKIN 読み出し応答

RVALIDM 入力 CLKIN 読み出しデータが使用可能なこ とを示します。

表 A-4 レベル 2 インタフェースの AXI マスタポート信号 (続き)

信号 方向 クロック 説明

表 A-5 AXI マスタポートのエラー検出信号

信号 方向 クロック 説明

AWPARITYM 出力 CLKIN 書き込みアドレスチャネルのパリティ ビッ ト

WPARITYM 出力 CLKIN 書き込みデータチャネルのパリティ ビッ ト

BPARITYM 入力 CLKIN 書き込み応答チャネルのパリティ ビッ ト

ARPARITYM 出力 CLKIN 読み出しアドレスチャネルのパリティ ビッ ト

RPARITYM 入力 CLKIN 読み出しデータチャネルのパリティ ビッ ト

AXIMPARERR[1:0] 出力 CLKIN 読み出しデータ (ビッ ト [1]) チャネルと書き込み応答 (ビッ

ト [0]) チャネルのパリティエラーを示します。

表 A-6 レベル 2 インタフェースの AXI スレーブポート信号

信号 方向 クロック 説明

ACLKENS 入力 CLKIN AXI スレーブポートのクロ ッ ク イネーブル

書き込みアドレスチャネル

AWADDRS[22:0] 入力 CLKIN 転送開始アドレス

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. A-10ID013111 Non-Confidential

Page 424: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

プロセッサ信号の説明

AWBURSTS[1:0] 入力 CLKIN 書き込みバース ト タイプ

AWIDS[7:0] 入力 CLKIN 信号の書き込みアドレスグループの ID タグ

AWLENS[3:0] 入力 CLKIN 書き込み転送のバース ト長。 転送のバース ト長の範囲は 1~ 16 です。 転送のバース ト長は、 4 ビッ トのバイナリ値 - 1で決定されます。

AWPROTS 入力 CLKIN 保護情報、 特権 / 通常アクセス。 AXI 仕様では AWPROT[0]。

AWREADYS 出力 CLKIN アドレス準備完了。 スレーブはこの信号を使用して、 アドレスを受け付け可能なこ とを示します。

AWSIZES[2:0] 入力 CLKIN 転送のサイズを示します。

AWUSERS[3:0] 入力 CLKIN データキャ ッシュ、 命令キャッシュ、 BTCM、 ATCM のうち

いずれかのメモ リ タイプを選択します。 これらのビッ トは、1 ビッ トのみがオンになり ます。 AWUSERS[3:0] 信号は、 標準の AXI 仕様に含まれていません。

AWVALIDS 入力 CLKIN アドレス と制御が有効であるこ とを示します。

書き込みデータチャネル

WDATAS[63:0] 入力 CLKIN 書き込みデータ

WLASTS 入力 CLKIN バース トの 後のデータ転送を示します。

WREADYS 出力 CLKIN スレーブが書き込みデータを受け付ける準備ができているこ とを示します。

WSTRBS[7:0] 入力 CLKIN どのバイ ト レーンを更新する必要があるかを示すために使用される書き込みス ト ローブ

WVALIDS 入力 CLKIN アドレス と制御が有効であるこ とを示します。

書き込み応答チャネル

BIDS[7:0] 出力 CLKIN 書き込み応答信号の ID タグ

BREADYS 入力 CLKIN コアが書き込み応答を受け付ける準備ができているこ とを示します。

BRESPS[1:0] 出力 CLKIN 書き込み応答

BVALIDS 出力 CLKIN 有効な書き込み応答が使用可能なこ とを示します。

読み出しアドレスチャネル

ARADDRS[22:0] 入力 CLKIN 命令フェッチバース トの開始アドレス

ARBURSTS[1:0] 入力 CLKIN バース ト タイプ

ARIDS[7:0] 入力 CLKIN 信号の読み出しアドレスグループの ID タグ

ARLENS[3:0] 入力 CLKIN 命令フェッチのバース ト長

ARPROTS 入力 CLKIN 保護情報、 特権 / 通常アクセス。 AXI 仕様では ARPROT[0]。

ARREADYS 出力 CLKIN アドレス準備完了。 スレーブはこの信号を使用して、 アドレスを受け付け可能なこ とを示します。

ARSIZES[2:0] 入力 CLKIN 転送のサイズを示します。

ARUSERS[3:0] 入力 CLKIN データキャ ッシュ、 命令キャッシュ、 BTCM、 ATCM のうち

いずれかのメモ リ タイプを選択します。 これらのビッ トは、1 ビッ トのみがオンになり ます。 AWUSERS[3:0] 信号は、 標準の AXI 仕様に含まれていません。

ARVALIDS 入力 CLKIN アドレス と制御が有効であるこ とを示します。

表 A-6 レベル 2 インタフェースの AXI スレーブポート信号 (続き)

信号 方向 クロック 説明

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. A-11ID013111 Non-Confidential

Page 425: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

プロセッサ信号の説明

A.5.4 AXI スレーブポートのエラー検出信号

AXI スレーブポートのエラー検出信号を、 表 A-7 に示します。 これらの信号は、 プロセッサが AXI バスパリティ を含むよ うに構成されている場合のみ生成されます。詳細については、 「構成可能なオプシ ョ ン」 (ページ 1-13) を参照して下さい。

読み出しデータチャネル

RDATAS[63:0] 出力 CLKIN 読み出しデータ

RIDS[7:0] 出力 CLKIN 信号の読み出しデータグループの ID タグ

RLASTS 出力 CLKIN 読み出しバース トの 後の転送を示します。

RREADYS 入力 CLKIN 読み出し準備完了信号で、 バスマスタが読み出しデータ と応答情報を受け付け可能なこ とを示します。

RRESPS[1:0] 出力 CLKIN 読み出し応答

RVALIDS 出力 CLKIN アドレス と制御が有効であるこ とを示します。

表 A-6 レベル 2 インタフェースの AXI スレーブポート信号 (続き)

信号 方向 クロック 説明

表 A-7 AXI スレーブポートのエラー検出信号

信号 方向 クロック 説明

AWPARITYS 入力 CLKIN 書き込みアドレスチャネルのパリティビッ ト

WPARITYS 入力 CLKIN 書き込みデータチャネルのパリティビッ ト

BPARITYS 出力 CLKIN 書き込み応答チャネルのパリティビッ ト

ARPARITYS 入力 CLKIN 読み出しアドレスチャネルのパリティビッ ト

RPARITYS 出力 CLKIN 読み出しデータチャネルのパリティビッ ト

AXISPARERR[2:0] 出力 CLKIN 読み出しアドレス (ビッ ト [2]) チャネル、 書き込みデータ

(ビッ ト [1]) チャネル、 および書き込みアドレス (ビッ ト

[0]) チャネルのパリティエラーを示します。

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. A-12ID013111 Non-Confidential

Page 426: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

プロセッサ信号の説明

A.6 TCM インタフェース信号

ATCM ポート信号を、 表 A-8 に示します。

B0TCM ポート信号を、 表 A-9 に示します。

表 A-8 ATCM ポート信号

名前 方向 クロック 説明

ATCDATAIN[63:0] 入力 CLKIN ATCM からのデータ

ATCPARITYIN[13:0] 入力 CLKIN ATCM からのパリティ または ECC コード

ATCERROR 入力 CLKIN ATCM によって検出されたエラーa

ATCWAIT 入力 CLKIN ATCM からのウェイ ト

ATCLATEERROR 入力 CLKIN ATCM からの遅延エラー a

ATCRETRY 入力 CLKIN ATCM へのアクセスを再試行する必要があ り ます。 a

ATCADDRPTY 出力 CLKIN ATCM アドレス出力から生成されたパリティ b

ATCEN0 出力 CLKIN ATCM 下位ワードのイネーブル、 ビッ ト範囲 [31:0]

ATCEN1 出力 CLKIN ATCM 上位ワードのイネーブル、 ビッ ト範囲 [64:32]

ATCWE 出力 CLKIN ATCM の書き込みイネーブル

ATCADDR[22:3] 出力 CLKIN ATCM データ RAM のアドレス

ATCBYTEWR[7:0] 出力 CLKIN 直接書き込み用のバイ ト ス ト ローブ

ATCSEQ 出力 CLKIN ATCM RAM アクセスはシーケンシャルです。

ATCDATAOUT[63:0] 出力 CLKIN ATCM データ RAM の書き込みデータ

ATCPARITYOUT[13:0] 出力 CLKIN ATCM の書き込みパリティ または ECC コード

ATCACCTYPE[2:0] 出力 CLKIN アクセスタイプを示します。

b001 = ロード / ス ト ア

b010 = フェッチ

b100 = DMA

b100 = MBISTc

a. 補助制御レジスタのビッ ト [0] が 0 にセッ ト されている場合、 この信号は無視されます (「c1、 補助制御レジスタ」 (ページ 4-38) を参照)。

b. プロセッサが TCM アドレスバス パリティを含むよ うに構成されている場合のみ生成されます。

c. MBIST インタフェースにはウェイ ト を通知する手段があ り ません。 TCM にアクセスし、 TCM からウェイ トが

通知された場合は、 AXI スレーブパイプラインがス トールして、 データが遅れて到着します。 ただし、 このこ

とを示すための信号は MBIST コン ト ローラに送信されません。

表 A-9 B0TCM ポート信号

名前 方向 クロック 説明

B0TCDATAIN[63:0] 入力 CLKIN B0TCM からのデータ

B0TCPARITYIN[13:0] 入力 CLKIN B0TCM からのパリティ または ECC コード

B0TCERROR 入力 CLKIN B0TCM によって検出されたエラーa

B0TCWAIT 入力 CLKIN B0TCM からのウェイ ト

B0TCLATEERROR 入力 CLKIN B0TCM からの遅延エラー a

B0TCRETRY 入力 CLKIN B1TCM へのアクセスを再試行する必要があ り ます。 a

B0TCADDRPTY 出力 CLKIN B0TCM アドレス出力から生成されたパリティ b

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. A-13ID013111 Non-Confidential

Page 427: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

プロセッサ信号の説明

B1TCM ポート信号を、 表 A-10 に示します。

B0TCWE 出力 CLKIN B0TCM の書き込みイネーブル

B0TCEN0 出力 CLKIN B0TCM の下位ワードのイネーブル、 ビッ ト範囲 [31:0]

B0TCEN1 出力 CLKIN B0TCM の上位ワードのイネーブル、 ビッ ト範囲 [64:32]

B0TCADDR[22:3] 出力 CLKIN B0TCM データ RAM のアドレス

B0TCBYTEWR[7:0] 出力 CLKIN 直接書き込み用のバイ ト ス ト ローブ

B0TCSEQ 出力 CLKIN B0TCM RAM アクセスはシーケンシャルです。

B0TCDATAOUT[63:0] 出力 CLKIN B0TCM データ RAM の書き込みデータ

B0TCPARITYOUT[13:0] 出力 CLKIN B0TCM の書き込みパリティ または ECC コード

B0TCACCTYPE[2:0] 出力 CLKIN アクセスタイプを示します。

b001 = ロード / ス ト ア

b010 = フェッチ

b100 = DMA

b100 = MBISTc

a. 補助制御レジスタのビッ ト [1] が 0 にセッ ト されている場合、 この信号は無視されます (「c1、 補助制御レジスタ」 (ページ 4-38) を参照)。

b. プロセッサが TCM アドレスバス パリティを含むよ うに構成されている場合のみ生成されます。

c. MBIST インタフェースにはウェイ ト を通知する手段があ り ません。 TCM にアクセスし、 TCM からウェイ トが

通知された場合は、 AXI スレーブパイプラインがス トールして、 データが遅れて到着します。 ただし、 このこ

とを示すための信号は MBIST コン ト ローラに送信されません。

表 A-9 B0TCM ポート信号 (続き)

名前 方向 クロック 説明

表 A-10 B1TCM ポート信号

名前 方向 クロック 説明

B1TCDATAIN[63:0] 入力 CLKIN B1TCM からのデータ

B1TCPARITYIN[13:0] 入力 CLKIN B1TCM からのパリティ または ECC コード

B1TCERROR 入力 CLKIN B1TCM によって検出されたエラーa

B1TCRETRY 入力 CLKIN B1TCM へのアクセスを再試行する必要があ り ます。 a

B1TCLATEERROR 入力 CLKIN B1TCM からの遅延エラー a

B1TCWAIT 入力 CLKIN B1TCM からのウェイ ト

B1TCADDRPTY 出力 CLKIN B1TCM アドレス出力から生成されたパリティ b

B1TCWE 出力 CLKIN B1TCM の書き込みイネーブル

B1TCEN0 出力 CLKIN B1TCM の下位ワードのイネーブル、 ビッ ト範囲 [31:0]

B1TCEN1 出力 CLKIN B1TCM の上位ワードのイネーブル、 ビッ ト範囲 [64:32]

B1TCADDR[22:3] 出力 CLKIN B1TCM データ RAM のアドレス

B1TCBYTEWR[7:0] 出力 CLKIN 直接書き込み用のバイ ト ス ト ローブ

B1TCSEQ 出力 CLKIN B1TCM RAM アクセスはシーケンシャルです。

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. A-14ID013111 Non-Confidential

Page 428: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

プロセッサ信号の説明

B1TCDATAOUT[63:0] 出力 CLKIN B1TCM データ RAM の書き込みデータ

B1TCPARITYOUT[13:0] 出力 CLKIN B1TCM の書き込みパリティ または ECC コード

B1TCACCTYPE[2:0] 出力 CLKIN アクセスタイプを示します。

b001 = ロード / ス ト ア

b010 = フェッチ

b100 = DMA

b100 = MBISTc

a. 補助制御レジスタのビッ ト [2] が 0 にセッ ト されている場合、 この信号は無視されます (「c1、 補助制御レジスタ」 (ページ 4-38) を参照)。

b. プロセッサが TCM アドレスバス パリティを含むよ うに構成されている場合のみ生成されます。

c. MBIST インタフェースにはウェイ ト を通知する手段があ り ません。 TCM にアクセスし、 TCM からウェイ トが通

知された場合は、 AXI スレーブパイプラインがス トールして、 データが遅れて到着します。 ただし、 このこ とを

示すための信号は MBIST コン ト ローラに送信されません。

表 A-10 B1TCM ポート信号 (続き)

名前 方向 クロック 説明

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. A-15ID013111 Non-Confidential

Page 429: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

プロセッサ信号の説明

A.7 デュアルコア インタフェース信号

デュアル冗長コア インタフェース信号を、 表 A-11 に示します。

表 A-11 デュアルコア インタフェース信号

信号 方向 クロック 説明

DCCMINP[7:0] 入力 -a デュアルコア比較ロジッ ク入力制御バス

DCCMOUT[7:0] 出力 -a デュアルコア比較ロジッ ク出力制御バス

DCCMINP2[7:0] 入力 -a デュアルコア比較ロジッ ク追加入力制御バスb

DCCMOUT2[7:0] 出力 -a デュアルコア比較ロジッ ク追加出力制御バス b

a. 実装定義b. r0px リ ビジ ョ ンのプロセッサでは使用できません。

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. A-16ID013111 Non-Confidential

Page 430: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

プロセッサ信号の説明

A.8 デバッグインタフェース信号

デバッグインタフェース信号を、 表 A-12 に示します。 PCLKDBG、 PCLKENDBG、PRESETDBGn を除くすべての信号は、 PCLKENDBG がアサート されたと きにPCLKDBG エッジでのみサンプリ ングまたは駆動されます。

その他のデバッグ信号を、 表 A-13 に示します。

表 A-12 デバッグインタフェース信号

信号 方向 クロック 説明

PCLKDBG 入力 - デバッグクロ ッ ク

PCLKENDBG 入力 PCLKDBG PCLKDBG のクロ ッ ク イネーブル

PSELDBG 入力 PCLKDBG 外部デバッグインタフェースを選択します。

PADDRDBG[11:2] 入力 PCLKDBG プログラ ミ ングアドレス

PADDRDBG31 入力 PCLKDBG プログラ ミ ングアドレス

PRDATADBG[31:0] 出力 PCLKDBG 読み出しデータバス

PWDATADBG[31:0] 入力 PCLKDBG 書き込みデータバス

PENABLEDBG 入力 PCLKDBG 2 つ目以後の転送サイクルを示します。

PREADYDBG 出力 PCLKDBG ウェイ ト状態を挿入し、 APB 転送を延長します。

PSLVERRDBG 出力 PCLKDBG スレーブ生成のエラー応答

PWRITEDBG 入力 PCLKDBG アクセスが書き込み転送であるこ とを示します。

読み出し (LOW) と書き込み (HIGH) を区別します。

PRESETDBGn 入力 任意 デバッグロジッ クを リセッ ト します。

表 A-13 その他のデバッグ信号

名前 方向 クロック 説明

DBGEN 入力 任意 デバッグイネーブル

NIDEN 入力 任意 非侵襲性デバッグイネーブル

EDBGRQ 入力 任意 外部デバッグ要求

DBGACK 出力 CLKIN デバッグ応答

DBGRSTREQa 出力 PCLKDBG デバッグロジッ クからの リセッ ト要求

DBGTRIGGER 出力 CLKIN 外部デバッグ要求の取得

COMMRX 出力 CLKIN 書き込み DTR フル

COMMTX 出力 CLKIN 読み出し DTR が空

DBGRESTART 入力 外部再起動要求

DBGRESTARTED 出力 CLKIN DBGRESTART のハンドシェーク

DBGNOPWRDWN 出力 PCLKDBG 電力オフ要求なし

DBGROMADDR[31:12] 入力 固定 デバッグ ROM の物理アドレス

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. A-17ID013111 Non-Confidential

Page 431: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

プロセッサ信号の説明

DBGROMADDRV 入力 固定 デバッグ ROM の物理アドレスが有効

DBGSELFADDR[31:12] 入力 固定 デバッグの自己アドレスオフセッ ト

DBGSELFADDRV 入力 固定 デバッグの自己アドレスオフセッ トが有効

a. r0px リ ビジ ョ ンのプロセッサでは使用できません。

表 A-13 その他のデバッグ信号 (続き)

名前 方向 クロック 説明

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. A-18ID013111 Non-Confidential

Page 432: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

プロセッサ信号の説明

A.9 ETM インタフェース信号

ETM インタフェース信号を、 表 A-14 に示します。

表 A-14 ETM インタフェース信号

信号 方向 クロック 説明

ETMICTL[13:0] 出力 CLKIN ETM 命令制御バス

ETMIA[31:1] 出力 CLKIN ETM 命令アドレス

ETMDCTL[11:0] 出力 CLKIN ETM データ制御バス

ETMDA[31:0] 出力 CLKIN ETM データアドレス

ETMDD[63:0] 出力 CLKIN ETM データ - データ

ETMCID[31:0] 出力 CLKIN プロセッサの CID レジスタの現在値

ETMWFIPENDING 出力 CLKIN コアが WFI 状態に入ろ う と しています。

EVNTBUS[46:0] 出力 CLKIN パフォーマンスモニタ ユニッ トの出力

ETMPWRUP 入力 CLKIN ETM インタフェースの電力オン

nETMWFIREADY 入力 CLKIN ETM FIFO が空です。 コアは WFI 状態に移行できます。

ETMEXTOUT[1:0] 入力 CLKIN ETM 検出イベン ト

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. A-19ID013111 Non-Confidential

Page 433: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

プロセッサ信号の説明

A.10 テスト信号

テス ト信号を、 表 A-15 に示します。

表 A-15 テスト信号

信号 方向 クロック 説明

SE 入力 -a

a. テス ト専用の設計

スキャンイネーブル

RSTBYPASS 入力 -a パイプライン リセッ トのバイパス

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. A-20ID013111 Non-Confidential

Page 434: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

プロセッサ信号の説明

A.11 MBIST 信号

MBIST 信号を、 表 A-16 に示します。

表 A-16 MBIST 信号

信号 方向 クロック 説明

MBTESTON 入力 CLKIN MBIST テス トが可能です。

MBISTDIN[77:0] 入力 CLKIN MBIST データ入力

MBISTADDR[19:0] 入力 CLKIN MBIST アドレス

MBISTCE 入力 CLKIN MBIST チップイネーブル

MBISTSEL[4:0] 入力 CLKIN MBIST チップ選択

MBISTWE[7:0] 入力 CLKIN MBIST 書き込みイネーブル

MBISTDOUT[77:0] 出力 CLKIN MBIST データ出力

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. A-21ID013111 Non-Confidential

Page 435: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

プロセッサ信号の説明

A.12 検証信号

検証信号を、 表 A-17 に示します。

表 A-17 検証信号

信号 方向 クロック 説明

VALEDBGRQ 出力 CLKIN デバッグ要求

nVALIRQ 出力 CLKIN 割り込み要求

nVALFIQ 出力 CLKIN 高速割り込み要求

nVALRESET 出力 CLKIN リセッ ト要求

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. A-22ID013111 Non-Confidential

Page 436: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

プロセッサ信号の説明

A.13 FPU 信号

FPU 信号を、 表 A-18 に示します。 これらの信号は、 プロセッサが浮動小数点ロジックを含むよ うに構成されている場合のみ駆動されます。

表 A-18 FPU 信号

信号 方向 クロック 説明

FPIXC 出力 CLKIN マスク された浮動小数点不正確例外

FPOFC 出力 CLKIN マスク された浮動小数点オーバフロー例外

FPUFC 出力 CLKIN マスク された浮動小数点アンダーフロー例外

FPIOC 出力 CLKIN マスク された浮動小数点無効演算例外

FPDZC 出力 CLKIN マスク された浮動小数点 0 による除算例外

FPIDC 出力 CLKIN マスク された浮動小数点入力非正規化例外

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. A-23ID013111 Non-Confidential

Page 437: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

付録 B ECC 方式

この付録では、 TCM の各種のエラーチェッ クおよび訂正 (ECC) 方式の利点と欠点のいくつかについて説明します。 本章は次のセクシ ョ ンから構成されています。

• 「ECC 方式選択のガイ ド ラ イン」 (ページ B-2)

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. B-1ID013111 Non-Confidential

Page 438: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

ECC方式

B.1 ECC 方式選択のガイド ライン

Cortex-R4 プロセッサの 1 つまたは両方の TCM インタフェースに ECC 方式を実装する と きは、 32 ビッ ト ECC と 64 ビッ ト ECC のどちらを使用するかについて十分に考慮して下さい。 データの ECC コードを計算またはチェッ クするには、 この方式で保護されているデータチャンクのすべてのバイ トの値をプロセッサが調べる必要があり ます。 このため、 これらの方式を使用する と きは、 データ と と もに格納されている ECC コードの計算とチェッ クを行うため、 プロセッサが余分な読み出しアクセスを実行する必要があ り ます。

例えば、 ATCM に 32 ビッ ト ECC が実装されており、 プログラムがメモ リに対してアラインドな STR を実行する場合、 プロセッサはプログラムに格納されているデータのみからエラー訂正コードを計算できます。

同じ メモ リに 64 ビッ ト ECC が実装されている場合、 プロセッサは、 プログラムに格納されているデータのみを使用して、 書き込まれるダブルワード メモ リチャンクの ECC コードを計算するこ とができません。 ECC コードを計算してデータを格納するため、 プロセッサはそのメモ リチャンクに含まれている他のワードを読み出す必要があ り ます。 これによって、 プログラムの実行に必要なメモ リ アクセスの回数が増加します。 結果と して消費電力が増大し、 パフォーマンスも低下する可能性があり ます。

使用する方式を決定するには、 次のガイ ド ラインを使用して下さい。 疑問がある場合は、 一般的なソフ ト ウェアをシステムで実行してベンチマークを行い、 アプリ ケーシ ョ ンに 適な実装面積、 電力、 パフォーマンスの組み合わせを決定して下さい。

• 命令がほとんどである TCM インタフェースでは、 64 ビッ ト ECC を使用します。 プ リ フェ ッチユニッ トによ り要求される読み出しのほとんどはダブルワードです。

• TCM に含まれているデータに次の方法でアクセスする場合、 64 ビッ ト ECC を使用します。

— 開始アドレスがダブルワードアラインドの LDRD または STRD 命令

— 開始アドレスがダブルワードアラインドで、 レジスタ リ ス トに含まれているレジスタの数が偶数の LDM または STM 命令

このよ うな場合、 64 ビッ ト ECC のほうが 32 ビッ ト ECC と比較して必要な RAM面積が少なくなり、 パフォーマンス低下や消費電力の増大は発生しません。

• LDM または STM 命令を使用して多くのレジスタにアクセスする場合、 ほとんどのTCM アクセスでは、 64 ビッ ト ECC での追加読み出しが必要あ り ません。

• 次のよ うなプログラムでは、 32 ビッ ト ECC のほうが 64 ビッ ト ECC と比較して消費電力が減少し、 一般にパフォーマンスでも優れています。

— TCM 内のデータに対して、 多くのアンアラインドアクセスを実行するプログラム

— TCM 内のデータに対して、 多くのバイ ト 、 ハーフワード、 ワードアクセスを実行するプログラム

TCM インタフェースごとに異なるエラー検出方式を使用し、 こ こに示したガイ ド ラインに基づいてそれぞれのインタフェースに命令とデータを割り振る と、 適な結果を得るこ とができます。

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. B-2ID013111 Non-Confidential

Page 439: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

付録 C リビジ ョ ン

この付録では、 本書の各版の技術的な相違点について説明します。

表 C-1 B 版と C 版の相違点

変更内容 場所

休眠モードの説明の追加 「電力管理」 (ページ 1-12)

Thumb-2 技術と Thumb 命令の説明の明確化 • 「プログラマモデルについて」 (ページ 2-2)

• 「アボート例外」 (ページ 8-9)

バイ ト不変ビッグエンディアン形式の明確化 「バイ ト不変ビッグエンディアン形式」 (ページ 2-6)

リ トルエンディアン形式の明確化 「リ トルエンディアン形式」 (ページ 2-6)

タ イ ミ ング図から nCPUHALT を削除 図 3-1 (ページ 3-7)

セクシ ョ ンの追加 • 「AXI インタフェースのクロ ッ ク」 (ページ 3-9)

• 「ク ロ ッ クゲート 」 (ページ 3-9)

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. C-1ID013111 Non-Confidential

Page 440: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

リビジ ョ ン

次の項目に関する リセッ ト時の値に関する情報の更新

• キャ ッシュタイプ レジスタ

• MPU タイプレジスタ

• 命令セッ ト属性レジスタ 1

• 命令セッ ト属性レジスタ 4

• カレン ト キャ ッシュサイズ識別レジスタ

• カレン ト キャ ッシュレベル ID レジスタ

• MPU 領域ベースアドレス レジスタ

• MPU 領域サイズおよびイネーブルレジスタ

• MPU 領域アクセス制御レジスタ

• MPU メモ リ領域番号

• ATCM 領域レジスタ

• BTCM 領域レジスタ

• TCM 選択レジスタ

• パフォーマンスモニタ制御レジスタ

• ソフ ト ウェアインク リ メン ト レジスタ

• ユーザ読み出し / 書き込み可能なスレッ ドおよびプロセスID レジスタ

• ユーザ読み出し専用のスレッ ドおよびプロセス ID レジスタ

• 特権専用スレッ ドおよびプロセス ID レジスタ

• 2 次補助制御レジスタ

• ビルドオプシ ョ ン 1 レジスタ

• ビルドオプシ ョ ン 2 レジスタ

• 訂正可能フォールト位置レジスタ

表 4-2 (ページ 4-9)

コプロセッサアクセス レジスタに関するタイプ情報を更新 表 4-2 (ページ 4-9)

命令セッ ト属性レジスタ 3 の説明の明確化 • 図 4-22 (ページ 4-30)

• 表 4-17 (ページ 4-30)

ビッ ト [31]、 [30]、 [29]、 [28] の機能の明確化 表 4-24 (ページ 4-38)

ビッ ト [20]、 [19]、 [18]、 [17]、 [16]、 [3]、 [2] の機能の明確化 表 4-25 (ページ 4-42)

PFU がプロシージャコールおよびプロシージャからの復帰と して

認識する命令の明確化

「リ ターンスタ ッ ク」 (ページ 5-5)

アプ リ ケーシ ョ ンノート 204 への参照の追加 「メモ リ タイプ」 (ページ 7-7)

セクシ ョ ンの追加 「メモ リ タイプの使用」 (ページ 7-7)

領域属性の説明の明確化 「領域属性」 (ページ 7-9)

ス ト アバッファ ド レインの説明の明確化 「ス ト アバッファのドレイン」 (ページ 8-19)

一部の信号のエンコードの明確化 「AXI マスタインタフェース」 (ページ 9-3)

AXI バスアクセスに使用される識別子の番号の明確化 「AXI バスアクセスの識別子」 (ページ 9-4)

TCM 外部フォールトの処理の説明の明確化 「外部 TCM エラー」 (ページ 9-21)

セクシ ョ ンの追加 「休眠モード」 (ページ 10-3)

許可される命令の組み合わせの更新 表 14-28 (ページ 14-35)

COMMRX 信号と COMMTX 信号の説明の更新 表 A-13 (ページ A-17)

表 C-1 B 版と C 版の相違点 (続き)

変更内容 場所

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. C-2ID013111 Non-Confidential

Page 441: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

リビジ ョ ン

表 C-2 C 版と D 版の相違点

変更内容 場所

技術的変更なし。 アクセス制限のみを削除。 -

表 C-3 D 版と E 版の相違点

変更内容 場所

アボートハンド ラの説明の明確化 「アボートハンド ラ」 (ページ 2-24)

キャ ッシュタイプ レジスタのリセッ ト時の値の更新 表 4-2 (ページ 4-9)

キャ ッシュタイプ レジスタのビッ ト [14] の更新 図 4-8 (ページ 4-15)

キャ ッシュタイプ レジスタのビッ ト [15:14] の説明の更新 表 4-4 (ページ 4-16)

システム制御レジスタのビッ ト [21] の更新 図 4-27 (ページ 4-36)

補助制御レジスタのビッ ト [12] に関する注と、 ビッ ト [27:26] の説明

の明確化

表 4-24 (ページ 4-38)

2 次補助制御レジスタのビッ ト [21] に関する注の明確化 表 4-25 (ページ 4-42)

MPU 領域アクセス制御レジスタのビッ ト [1:0] の機能説明の明確化 表 4-33 (ページ 4-52)

使用されているエラー訂正手法を明確化するためのパラグラフの追加 「エラー訂正」 (ページ 8-6)

セマフォの使用方法の説明の明確化 • 「TCM の AXI スレーブインタフェース」 (ページ 8-17)

• 「内部排他モニタ」 (ページ 8-34)

AXI マスタインタフェースの統合発行機能の値の更新 表 9-1 (ページ 9-3)

ARADDRS[22:3] の説明の明確化 「TCM RAM へのアクセス」 (ページ 9-25)

ReadDCC() コードの更新 例 11-4 (ページ 11-56)

PollDCC() コードの更新 例 11-6 (ページ 11-57)

MVFR1 のリセッ ト時の値の更新 表 12-1 (ページ 12-4)

『ARM アーキテクチャ リ ファレンスマニュアル (ARMv7-A およびARMv7-R エディシ ョ ン)』 に準拠するため、 命令の説明を更新

第 14 章 サイクルタイ ミ ングと インターロ ッ ク動作

構成信号の説明を明確化し、 必要に応じて参照を追加 表 A-2 (ページ A-4)

MBIST アクセスに関する ATCACCTYPE[2:0]、 B1TCACCTYPE[2:0]、B0TCACCTYPE[2:0] 信号の値を修正し、 MBIST TCM のアクセス動作

を明確化するために脚注を追加

• 表 A-8 (ページ A-13)

• 表 A-9 (ページ A-13)

• 表 A-10 (ページ A-14)

表 C-4 E 版と F 版の相違点

変更内容 場所

D 版と E 版の技術的相違点に関する概要を追加 表 C-3

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. C-3ID013111 Non-Confidential

Page 442: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

用語集

この用語集では、 本書で使用されている用語や略語について説明します。 複数の意味を持つ用語については、 本書では用語集に示す意味で使用されています。

AHB アドバンス ト ハイパフォーマンスバス参照。

AMBA アドバンス ト マイ ク ロコン ト ローラバス アーキテクチャ参照。

APB アドバンス ト ペリ フェラルバス参照。

ARM 状態 ARM (32 ビッ ト ) ワードアラインド命令を実行しているプロセッサは、 ARM 状態で動作しています。

ARM 命令 ARM プロセッサが実行する操作を示すワード。 ARM 命令はワードアラインしている必要があ り ます。

ASIC 特定用途向け集積回路参照。

AXI アドバンス ト エクステンシブルインタフェース参照。

AXI のチャネル順序とインタフェース

このブロ ッ ク図は、 次のこ とを示しています。

• AXI チャネル信号が記述される順序

• AXI コンポーネン トのマスタ / スレーブインタフェース表記規則

AXI

(AW)(W)(B)(AR)(R)

(AW)(W)(B)(AR)(R)

AXI AXI

AXI AXI

AXI AXI

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. Glossary-1ID013111 Non-Confidential

Page 443: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

用語集

AXI 用語 次の AXI 用語が一般的に使用されています。 これらは、 マスタ と スレーブの両方に適用されます。

アクティブな書き込みト ランザクシ ョ ン 書き込みアドレスまたは 初の書き込みデータは転送されたが、 書き込み応答がまだ転送されていない状態の ト ランザクシ ョ ン。

アクティブな転送 xVALID1 ハンドシェークはアサート されたが、 xREADY がまだアサート されていない状態の転送。

アクティブな読み出し ト ランザクシ ョ ン 読み出しアドレスは転送されたが、 後の読み出しデータがまだ転送されていない状態の ト ランザクシ ョ ン。

完了した転送 xVALID/xREADY ハンドシェークが完了した状態の転送。

送信 ペイロードを駆動し、 関連する xVALID 信号をアサートする動作。

転送 単一の情報交換。 つま り、 1 回の xVALID/xREADY ハンドシェークによる処理。

ト ランザクシ ョ ン 転送のバース ト全体で、 アドレス、 1 つまたは複数のデータ転送、 応答転送 (書き込みのみ) で構成されます。

ペイロード 転送に含まれる、 ハンドシェーク以外の信号。

次の AXI 用語は、 マスタインタフェース属性です。 高のパフォーマンスを引き出すには、 AXI マスタインタフェースを持つすべてのコンポーネン トに対して、 これらを指定する必要があ り ます。

書き込み ID 機能 マスタインタフェースで、 アクティブなすべての書き込みト ランザクシ ョ ンに対して同時に生成可能な、 異なる AWID 値の 大数。

書き込み ID 幅 AWID バスと WID バスのビッ ト数。

書き込みインターリーブ機能 マスタインタフェースでデータ送信が可能な、 アクティブ書き込みト ランザクシ ョ ンの数。 この数は、 初の ト ランザクシ ョ ンからカウン ト されます。

書き込み発行機能 マスタインタフェースで生成可能な、 アクティブな書き込みト ランザクシ ョ ンの 大数。

統合発行機能 マスタインタフェースで生成可能なアクティブ ト ランザクシ ョ ンの 大数。 これは、 アクティブな書き込みト ランザクシ ョ ンと読み出し ト ランザクシ ョ ン用に同じ記憶域を使用するマスタインタフェースに対して、書き込み発行機能、 または読み出し発行機能の代わりに指定されます。

読み出し ID 機能 マスタインタフェースが、 アクティブなすべての読み出し ト ランザクシ ョ ンに対して同時に生成可能な、 異なる ARID 値の 大数。

1. 信号名に x が含まれている場合、 次の AXI チャネルを意味します。

AW 書き込みアドレスチャネル

W 書き込みデータチャネル

B 書き込み応答チャネル

AR 読み出しアドレスチャネル

R 読み出しデータチャネル

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. Glossary-2ID013111 Non-Confidential

Page 444: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

用語集

読み出し ID 幅 ARID バスのビッ ト数。

読み出し発行機能 マスタインタフェースで生成可能な、 アクティブな読み出し ト ランザクシ ョ ンの 大数。

次に示す AXI 用語は、 スレーブインタフェース属性です。 高のパフォーマンスを引き出すには、 AXI スレーブインタフェースを持つすべてのコンポーネン トに対して、 これらを指定する必要があ り ます。

書き込みインターリーブ深度 スレーブインタフェースでデータ受信可能な、 アクティブな書き込みトランザクシ ョ ンの数。 この数は、 初の ト ランザクシ ョ ンからカウン トされます。

書き込み受け付け機能 スレーブインタフェースで受け付け可能な、 アクティブな書き込みト ランザクシ ョ ンの 大数。

統合受け付け機能 スレーブインタフェースで受け付け可能な、 アクティブ ト ランザクシ ョンの 大数。 これは、 アクティブな書き込みト ランザクシ ョ ンと読み出し ト ランザクシ ョ ンの両方に同じ記憶域を使用するスレーブインタフェースについて、 書き込み受け付け機能、 または読み出し受け付け機能の代わりに指定されます。

読み出し受け付け機能 スレーブインタフェースで受け付け可能な、 アクティブな読み出し ト ランザクシ ョ ンの 大数。

読み出しデータ再順序付け深度 スレーブインタフェースでデータ送信可能な、 アクティブな読み出し トランザクシ ョ ンの数。 この数は、 初の ト ランザクシ ョ ンからカウン トされます。

BE-32 ワード不変システムでの、 ビッグエンディアン形式のメモ リ ビュー。

BE-8、 LE、 バイ ト不変、 ワード不変も参照。

BE-8 バイ ト不変システムでの、 ビッグエンディアン形式のメモ リ ビュー。

BE-32、 LE、 バイ ト不変、 ワード不変も参照。

CoreSight 完全なシステム オンチップ (SoC) のモニタ、 ト レース、 デバッグを行うためのインフラス ト ラ クチャ。

CPI 命令あたりのサイ クル数参照。

CPSR カレン トプログラムステータス レジスタ参照。

DNM 変更不可参照。

EmbeddedICE-RT デバッグ可能な ARM プロセッサで リ アルタイム デバッグのために使用される、JTAG ベースのハードウェア。

ETM エンベデッ ド ト レース マクロセル参照。

HUM ヒ ッ ト アンダーミ ス参照。

IEEE 754 規格 IEEE Standard for Binary Floating-Point Arithmetic, ANSI/IEEE Std. 754-1985。 浮動小数点システムに関するデータ型、 正常な動作、 例外のタイプと処理、 エラーバウンドを規定している規格です。 ほとんどのプロセッサが、 ハード ウェア単体またはハードウェアと ソフ ト ウェアとの組み合わせによって、 この規格に準拠するよ うに構築されています。

ISB 命令同期バリ ア参照。

LE バイ ト不変と ワード不変の両方のシステムにおける、 リ トルエンディアン形式のメモ リ ビュー。 バイ ト不変と ワード不変も参照。

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. Glossary-3ID013111 Non-Confidential

Page 445: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

用語集

LSU ロード ス ト ア ユニッ ト参照。

MPU メモ リ保護ユニッ ト参照。

NaN 非数。 大の指数フ ィールド と、 0 以外の仮数とを含む浮動小数点形式でエンコードされた記号エンティティ。 SNaN は仮数の 上位ビッ トが 0 で、 オペランド と して使用された場合に無効オペランド例外を引き起こします。 QNaN は仮数の 上位ビットが 1 で、 ほとんどすべての算術演算で例外を発生せずに伝播されます。

SBO 常に 1 参照。

SBZ 常に 0 参照。

SPSR 保存プログラムステータス レジスタ参照。

TAP デバッグテス ト アクセスポート参照。

Thumb 状態 Thumb (16 ビッ トおよび 32 ビッ ト ) 命令を実行しているプロセッサは、 Thumb 状態で動作しています。

UNP 予測不能参照。

WB ラ イ トバッ ク参照。

WT ラ イ ト スルー参照。

アーキテクチャ プロセッサとその付属コンポーネン ト を特徴付け、 同様の特徴を持つデバイスを、ハーバードアーキテクチャ、 命令セッ ト アーキテクチャ、 ARMv6 アーキテクチャなどのよ うに、 その動作を記述する と きにグループ化するこ とを可能にするハードウェアおよびソフ ト ウェアの編成。

アドバンスト エクステンシブルインタフェース (AXI)独立したアドレス / 制御フェーズとデータフェーズ、 バイ ト ス ト ローブによるアンアラインドデータ転送、 開始アドレスのみの発行によるバース トベースの ト ランザクシ ョ ン、 低コス ト DMA を可能にする独立した読み出しおよび書き込みデータチャネル、 複数の未解決アドレスの発行機能、 アウ トオブオーダ ト ランザクシ ョ ンの実行、レジスタステージの追加が容易なこ とによるタイ ミ ングクロージャの提供をサポートするバスプロ ト コル。 AXI プロ ト コルには、 低消費電力動作の信号処理をカバーするオプシ ョ ンの拡張機能も含まれます。

AXI は、 パフォーマンスが高く、 ク ロ ッ ク周波数が高いシステムの設計を目的と しており、 高速のサブミ ク ロン相互接続に 適な多くの機能が含まれています。

アドバンスト ハイパフォーマンスバス (AHB)AMBA アドバンス ト ハイパフォーマンスバス システムは、 ARM コアなどの組み込みプロセッサを、 ハイパフォーマンス ペリ フェラル、 DMA コン ト ローラ、 オンチップ メモ リ、 インタフェースに接続します。 高速で帯域幅の広いバスであ り、 複数のマスタを持つバスを管理できるため、 高のシステムパフォーマンスを実現できます。

アドバンス ト マイ クロコン ト ローラバス アーキテクチャも参照。

アドバンスト ペリフェラルバス (APB)AMBA アドバンス ト ペリ フェラルバスは、 AHB よ り も単純なバスプロ ト コルです。タイマ、 割り込みコン ト ローラ、 UART、 I/O ポート などの補助的な、 または汎用のペリ フェラルで使用するために設計されています。 メ インのシステムバスへの接続は、 システムとペリ フェラルとの間のバスブ リ ッジを経由して行われるため、 システムの消費電力を抑えられます。

アドバンス ト ハイパフォーマンスバスも参照。

アドバンスト マイクロコン ト ローラバス アーキテクチャ (AMBA)AMBA は、 複数のマスタを持つオンチップ バスを作成するための ARM のオープンな規格で、 複数のマスタ と スレーブを実行できます。 システムオンチップ (SoC) を構築する機能ブロ ッ クの相互接続と管理のための方針が詳し く記載された、 オンチップバスの仕様です。 1 つまたは複数の CPU や信号プロセッサ、 および複数のペ

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. Glossary-4ID013111 Non-Confidential

Page 446: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

用語集

リ フェラルを含む組み込みプロセッサの開発に役立ちます。 AMBA は、 SoC モジュール用の共通バッ クボーンを定義するこ とによって、 再利用可能な設計手法をよ り完全なものにします。 AHB、 APB、 AXI はこの規格に準拠しています。

アドレシングモード 命令で使用する値を生成するために、 多くの命令で共有される機構。 ARM アドレシングモードのうち 4 つでは、 値と してメモ リ アドレスが生成されます。 これは、 アドレシングモードの伝統的な使用法です。 5 番目のアドレシングモードでは、 データ処理命令のオペランド と して使用される値が生成されます。

アボート メモ リ アクセスに関連する値が無効であるこ とをプロセッサに通知する機構。 アボートは、 無効な命令またはデータ メモリへのアクセスを実行した結果と して、 外部メモリ または内部のメモリシステムで発生する可能性があ り ます。 アボートは、 プリフェッチアボート とデータアボート、 内部アボート と外部アボートに分類されます。

データアボート、 外部アボート、 プ リ フェ ッチアボート も参照。

アボートモデル アボートモデルは、 データアボート例外に対する ARM プロセッサの応答と して定義された動作です。 アボートモデルによって、 ベースレジスタのライ トバッ クを指定するロード / ス ト ア命令に関する動作が異なり ます。

アラインド データサイズを定義しているバイ ト数で割り切れるアドレスに格納されているデータ項目を、 アラインド、 またはアラインしている と呼びます。 アラインしているワード とハーフワードのアドレスは、 それぞれ 4 と 2 で割り切れます。 したがって、ワードアラインド とハーフワードアラインド という用語は、 それぞれ 4 と 2 で割り切れるアドレスを意味します。

アンアラインド データサイズを定義するバイ ト数で割り切れないアドレスに保存されているデータ項目を、 アンアラインド と呼びます。 例えば、 4 で割り切れないアドレスに保存されているワードはアンアラインドです。

イベン ト 1. (単純) ト レースの要素を制御するため、 ETM が使用する観測条件。

2. (複雑) ト レースの要素を制御するため、 ETM が使用する、 単純なイベン トの論理式による組み合わせ。

ヴィ クテ ィム キャ ッシュ ミ スのためにキャ ッシュラインの置き換えが必要となった場合、 必要な領域を確保するために破棄されるキャ ッシュライン。 退出するヴィ クティムを選択する方法は、 プロセッサによって異な り ます。 ヴ ィ クティムはキャス ト アウ ト と呼ばれるこ と もあ り ます。

ウェイ キャ ッシュウェイ参照。

ウォームリセッ ト コア リセッ ト と呼ばれるこ と もあ り ます。 デバッグコン ト ローラ とデバッグロジックを除く、 プロセッサの大部分を初期化します。 この種類のリセッ トは、 プロセッサのデバッグ機能を使用している場合に便利です。

ウォッチポイン ト ウォ ッチポイン トは、 デバッガで提供されている機構で、 特定のメモ リ アドレスに保存されているデータが変更されたと きにプログラムの実行を停止します。 プログラマは、 ウォ ッチポイン ト を挿入するこ とによって、 メモ リが書き込まれたと きのレジスタの内容、 メモ リの位置、 変数の値を検査して、 プログラムが正常に動作しているかど うかをテス トできます。 プログラムのテス トが完了した後で、 ウォ ッチポイン トは削除されます。 ブレークポイン ト も参照。

エンディアン形式 バイ トの順序。 データワードの連続するバイ トがメモ リに格納される順序を決定する方式。 システムのメモ リマッピングの見え方。

リ トルエンディアンとビッグエンディアンも参照。

エンべデッ ド ト レース マクロセル (ETM)ハード ウェアマク ロセルで、 プロセッサコアに接続されたと きに、 ト レースポートに命令およびデータの ト レース情報を出力します。 ETM は、 ATB プロ ト コルに準拠した ト レースポートによ り、 プロセッサ駆動の ト レースを可能にします。

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. Glossary-5ID013111 Non-Confidential

Page 447: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

用語集

外部アボート 外部メモ リシステムからコアへの通知で、 メモ リ アクセスに関連付けられている値が無効であるこ とを示します。 外部アボートは、 無効なメモ リへのアクセスを試みた結果と して、 外部メモ リシステムによって引き起こ されます。

アボート、 データアボート、 プ リ フェ ッチアボート も参照。

書き込み 書き込みは、 ス ト アの意味を持つ操作と して定義されます。 これには、 ARM 命令のSRS、 STM、 STRD、 STC、 STRT、 STRH、 STRB、 STRBT、 STREX、 SWP、 SWPB、 および Thumb 命令のSTM、 STR、 STRH、 STRB、 PUSH が該当します。

書き込み完了 メモ リ システムは、 書き込みの効果がシステム内のすべてのプロセッサに可視になったこ とを保証できる ト ランザクシ ョ ン内のポイン トで、 書き込みが完了したことをプロセッサに通知します。 書き込みが、 メモ リ同期化基本命令に関連している場合や、 デバイス領域またはス ト ロング リオーダ領域を対象と している場合、 これには該当しません。 このよ うな場合、 書き込みの効果が可視なこ と と、 ターゲッ トの状態が更新されたこ と との区別が不可能である場合を除いて、 メモ リ システムは、アクセスによってターゲッ トの状態が変更されたと きだけ、 書き込みの完了を通知できます。 一部の種類のメモ リに対するこの厳格な要件によって、 メモ リ アクセスの副作用がすべて発生したこ とをプロセッサで保証できます。 この機能を使用すると、 副作用が可視になるまで、 プログラムの順序でその後に行われる動作の開始を保留するこ とができます。

仮数 暗黙の 2 進小数点の左側にある明示的または暗黙的な先頭ビッ ト と、 右側にある小数フ ィールド とで構成される、 2 進浮動小数点数の構成要素。

カレン トプログラムステータス レジスタ (CPSR)現在動作中のプロセッサの状態を保持しているレジスタ。

キャストアウト ヴ ィ クティム参照。

キャッシュ プロセッサと メ イン メモ リの間に配置され、 使用頻度の高い命令やデータのコピーを格納および取得するために使用される、 オンチップまたはオフチップの高速アクセス メモ リ位置のブロッ ク。 これによって、 メモ リ アクセスの平均速度が大幅に向上するため、 プロセッサのパフォーマンスも向上します。

この用語集の 後のページにあるキャ ッシュ用語の図も参照。

キャッシュウェイ キャ ッシュラインまたはブロ ッ クのグループ。 キャ ッシュウェイのサイズは、 2 の(インデクスのビッ ト数) 乗です。

この用語集の 後のページにあるキャ ッシュ用語の図も参照。

キャッシュセッ ト キャ ッシュセッ トは、 キャ ッシュラインまたはブロ ッ クのグループです。 キャ ッシュセッ トには、 同じインデクスでアドレス指定が可能なすべてのウェイが含まれます。 キャ ッシュセッ トの数は、 必ず 2 のべき乗です。 すべてのセッ トは、 キャ ッシュのルッ クアップ時に並列にアクセスされます。

この用語集の 後のページにあるキャ ッシュ用語の図も参照。

キャッシュセッ ト アソシエティ ビテ ィ

キャ ッシュセッ トに保持できるキャ ッシュラインの 大数。

セッ ト アソシエイティブキャ ッシュ、 およびこの用語集の 後のページにあるキャ ッシュ用語の図も参照。

キャッシュの競合 特定のキャ ッシュセッ ト を使用する、 使用頻度の高いメモ リ キャ ッシュラインの数が、 キャ ッシュのセッ ト アソシエティビティを超えたと き。 この場合、 メ イン メモリの動作が増大して、 パフォーマンスが低下します。

キャッシュヒ ッ ト 命令または命令がアクセスするデータが既にキャ ッシュに保持されているために、高速で処理可能なメモ リ アクセス。

キャッシュ ミス 命令または命令がアクセスするデータがキャ ッシュに存在しないために、 メ イン メモ リへのアクセスが必要になり、 高速で処理できないメモ リ アクセス。

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. Glossary-6ID013111 Non-Confidential

Page 448: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

用語集

キャッシュライン キャ ッシュ内の記憶域の基本単位。 キャ ッシュラインは、 サイズが常に 2 のべき乗ワード (通常は 4 または 8 ワード) で、 適切なメモ リ境界にアラインしている必要があ り ます。

この用語集の 後のページにあるキャ ッシュ用語の図も参照。

キャッシュライン インデクス

キャ ッシュセッ トの各キャ ッシュラインに関連付けられた番号。 各キャ ッシュセットのキャ ッシュラインには、 0 から (セッ ト アソシエティ ビティ) - 1 までの番号が付けられます。

この用語集の 後のページにあるキャ ッシュ用語の図も参照。

キャッシュ用語の図 下の図は、 次に示すキャ ッシュ用語の説明です。

• ブロ ッ クアドレス

• キャ ッシュライン

• キャ ッシュセッ ト

• キャ ッシュウェイ

• インデクス

• タグ

=

31

0

0

21

34567

n

m 12 0

2

RAM RAM

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. Glossary-7ID013111 Non-Confidential

Page 449: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

用語集

クリーニング キャ ッシュ内で変更されていないキャ ッシュラインを、 ク リーンなキャ ッシュラインと呼びます。 キャ ッシュをク リーニングする とは、 ダーティなキャ ッシュエン トリ を メ イン メモ リに書き込むこ とです。 キャ ッシュラインがク リーンな場合は、 次のレベルのメモ リにキャ ッシュ と同じデータが保持されているため、 キャ ッシュ ミスが発生したと きにキャ ッシュラインが書き込まれるこ とはあ り ません。

ダーティ も参照。

クロックゲート 制御信号 (PWRDOWN など) でマク ロセルのクロ ッ ク信号をゲート し、 変更されたクロ ッ クを使用して、 マク ロセルの動作状態を制御するこ と。

コアモジュール ARM インテグレータの文脈では、 コアモジュールは、 ARM プロセッサと ローカルメモ リ を含むアドオン開発ボードを意味します。 コアモジュールは、 スタンドアロンで動作するこ と も、 インテグレータのマザーボードに搭載するこ と もできます。

コアリセッ ト ウォーム リセッ ト参照。

コールド リセッ ト パワーオン リ セッ ト と呼ばれるこ と もあ り ます。 電源をオンにするこ とでプロセッサが開始します。 電源をオフにしてから再度オンにする と、 メ イン メモ リ と多くの内部設定がク リ アされます。 プログラムの障害によってはプロセッサがロ ッ ク し、システムを再度使用可能にするためにコールド リセッ トが必要な場合があ り ます。それ以外の場合は、 ウォーム リセッ トのみが必要です。

ウォーム リセッ ト も参照。

コピーバック ラ イ トバッ ク参照。

コヒーレンシ メモ リ コ ヒーレンシ参照。

コプロセッサ メ インプロセッサを補完するプロセッサ。 メ インプロセッサが実行できない付加機能を実行します。 通常は、 浮動小数点算術演算、 信号処理、 メモ リ管理などに使用されます。

コンテキスト マルチタスクのオペレーティングシステム上で各プロセスが動作する環境。 ARM プロセッサでは、 メモ リ内でアクセス可能な物理アドレス範囲と、 それに関連付けられたメモ リ アクセス許可の意味に限定されます。

高速コンテキス ト スイ ッチも参照。

サポート コード ハード ウェアを補完し、 IEEE 754 規格との互換性を提供するために使用する必要があるソフ ト ウェア。 サポート コードには、 サポート されている機能、 例えば未サポート入力による除算、 例外を生成する可能性のある入力、 ハード ウェアの範囲を越えた動作などを実行するルーチンのライブラ リが含まれています。 また、 サポート コードには、 IEEE 754 規格に従って例外状態を処理する例外ハンド ラのセッ トが含まれています。

指数 浮動小数点数の構成要素で、 表現される数値の値を決定するために使用され、 通常は 2 の整数乗を示します。

実装固有 動作がアーキテクチャで定義されていないが、 実装ごとに文書化する必要がないことを意味します。 使用可能な実装オプシ ョ ンが多数あ り、 選択したオプシ ョ ンによってソフ ト ウェアの互換性に影響がない場合に使用されます。

実装定義 動作がアーキテクチャで定義されていないために、 実装ごとに定義して文書化する必要があるこ とを意味します。

条件付き実行 条件コードフラグが、 命令の実行開始時に該当する条件が真であるこ とを示している場合は、 命令が正常に実行されます。 それ以外の場合、 命令は何も実行しません。

条件フ ィールド 命令が実行可能な条件を指定する、 命令内の 4 ビッ トのフ ィールド。

シ ョートベクタ演算 複数のデスティネーシ ョ ンレジスタを使用し、 多くの場合は各デスティネーシ ョ ンの結果の生成にも複数のソースレジスタを使用する演算。

スキャンチェイン バウンダ リ スキャン チェイン参照。

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. Glossary-8ID013111 Non-Confidential

Page 450: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

用語集

スト ライ ド STRIDE フ ィールド (FPSCR[21:20]) は、 シ ョートベク タ演算でレジスタアドレスに適用される増分を指定します。 ス ト ラ イ ドが 00 であれば、 指定される増分は + 1 で、シ ョートベクタ動作の繰り返しごとに各ベクタレジスタが 1 ずつインク リ メ ン ト されます。 ス ト ラ イ ドが 11 であれば、 + 2 のインク リ メ ン ト を意味します。

制御ビッ ト プログラムステータス レジスタ (PSR) の 下位 8 ビッ ト 。 制御ビッ トは、 例外が発生したと きに変化します。 プロセッサが特権モードの場合にのみ、 ソフ ト ウェアから変更するこ とができます。

セッ ト キャ ッシュセッ ト参照。

セッ トアソシエイテ ィブ キャッシュ

セッ ト アソシエイティブ キャ ッシュでは、 メモ リ アドレスをセッ ト数で割った剰余に対応するキャ ッシュ内の位置にのみ、 ラインを配置するこ とができます。 キャ ッシュ内に n 個のウェイがある場合、 そのキャ ッシュは n ウェイ セッ ト アソシエイティブと呼ばれます。 セッ ト アソシエティ ビティには、 1 以上の任意の値を使用するこ とができ、 必ずしも 2 のべき乗にする必要はあ り ません。

ダーティ ライ トバッ ク キャッシュ内で、 変更されたキャッシュラインを、 ダーティなキャ ッシュラインと呼びます。 キャ ッシュラインは、 ダーティビッ ト をセッ トするこ とによって、 ダーティ と してマーク されます。 キャ ッシュラインがダーティな場合は、 次のレベルのメモリに更新されていないデータが保持されているため、 キャ ッシュ ミ スが発生したと きにキャッシュラインを メモリに書き込む必要があ り ます。 ダーティデータをメ イン メモリに書き込む処理を、 キャ ッシュのク リーニングと呼びます。

ク リーニングも参照。

タグ キャ ッシュ内のキャ ッシュラインの識別に使用されるブロ ッ クアドレスの上位部分。CPU からのブロ ッ クアドレスは、 セッ ト内の各タグと並列に比較され、 対応するラインがキャ ッシュ内に存在するかど うかが判断されます。 存在する場合はキャ ッシュ ヒ ッ ト とな り、 そのラインをキャ ッシュからフェ ッチするこ とができます。 ブロ ッ クアドレスがどのタグにも対応しない場合はキャ ッシュ ミ ス とな り、 そのラインは次のレベルのメモ リからフェ ッチされる必要があ り ます。

この用語集の 後のページにあるキャ ッシュ用語の図も参照。

ダブルワード 64 ビッ トのデータ項目。 特に指定のない限り、 その内容は符号なし整数とみなされます。

小さな デスティネーシ ョ ンの精度で、 正の 小正規化値と負の 小正規化値との間にある、0 以外の結果または値。

中間結果 丸め前の計算結果を格納するために使用される内部形式。 この形式の指数フ ィールド と仮数フ ィールドは、 デスティネーシ ョ ン形式のものよ り も大き くするこ とができます。

通常と異なる値 0 を除く、 範囲 (– 2Emin < x < 2Emin) の値。 IEEE 754 規格での単精度および倍精度オペランドの形式では、 通常と異なる値は指数が 0 で、 仮数フ ィールドが 0 以外です。IEEE 754 規格では、 通常と異なるオペランドの生成と操作は、 通常のオペランド と同じ精度で行う必要があ り ます。

通信チャネル ARM プロセッサで実行されているソフ ト ウェアは、 デバッグインタフェース経由で外部ホス ト と通信するためにこのチャネルを使用します。 デバッグ通信チャネルと呼ばれるこ と もあ り ます。 これは、 アーキテクチャ定義です。 『ARM アーキテクチャ リ ファレンスマニュアル』 と、 製品固有の情報については製品のテクニカルリ ファレンス マニュアルを参照して下さい。

常に 0 (SBZ) ソフ ト ウェアで 0 (ビ ッ ト フ ィールドの場合はすべてのビッ トに 0) を書き込む必要があ り ます。 1 を書き込んだ場合、 結果は予測不能です。

常に 0 または保持 (SBZP)ソフ ト ウェアで 0 (ビ ッ ト フ ィールドの場合はすべてのビッ トに 0) を書き込むか、同じプロセッサの同じフ ィールドから以前読み出した値をそのまま書き戻して保持する必要があ り ます。

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. Glossary-9ID013111 Non-Confidential

Page 451: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

用語集

常に 1 (SBO) ソフ ト ウェアで 1 (ビ ッ ト フ ィールドの場合はすべてのビッ トに 1) を書き込む必要があ り ます。 0 を書き込んだ場合、 結果は予測不能です。

データアボート データ メモ リの不正な位置にアクセスが試みられたこ とを、 メモ リ システムからプロセッサへ通知する方法。 プロセッサがアボート を引き起こしたデータを使用しよう と した場合、 例外を引き起こす必要があ り ます。

アボート、 外部アボート、 プ リ フェ ッチアボート も参照。

データキャッシュ プロセッサと メ イン メモ リ との間に配置され、 使用頻度の高いデータのコピーを格納および取得するために使用される、 オンチップの高速アクセス メモ リ位置のブロ ッ ク。 これによって、 メモ リ アクセスの平均速度が大幅に向上するため、 プロセッサのパフォーマンスも向上します。

デバッガ ソフ ト ウェアの障害を検出し、 場所を特定し、 修正するために使用されるプログラムと、 ソフ ト ウェアのデバッグをサポートするカスタムハード ウェアとを組み合わせたデバッグシステム。

デフォルト NaN モード NaN 結果の原因に関係なく、 結果が NaN になるすべての演算で、 デフォルト NaNが返されるモード。 このモードは、 IEEE 754 規格に準拠していますが、 演算への入力 NaN に含まれていたすべての情報が失われるこ とを意味します。

同期化基本命令 メモ リ同期化基本命令は、 メモ リの同期を保証するために使用される命令です。 これには、 LDREX、 STREX、 SWP、 SWPB 命令が該当します。

特定用途向け集積回路 (ASIC)特定用途の機能を発揮するために設計された集積回路。 特注または量産が可能です。

ト ラ ップ FPSCR レジスタで、 対応する例外イネーブルビッ トがセッ ト されている例外条件。ユーザ ト ラ ップ ハンド ラが実行されます。

ト レースポート ト レース情報を出力するために使用される、 プロセッサや ASIC などのデバイス上のポート。

入力例外 指定された動作について、 1 つまたは複数のオペランドがハード ウェアでサポート されていない場合の例外条件。 この動作は、 サポート コードにバウンスされて処理されます。

バースト 連続アドレスに対する一連の転送。 アドレスが連続しているため、 2 回目以降の転送ではアドレスを指定する必要があ り ません。 この方法によって、 一連の転送の実行速度が向上します。 AHB または AXI バス上のバース トは、 xBURST 信号を使用して制御されます。 この信号によって、 バース ト転送が 1 ビート、 4 ビート、 8 ビート、16 ビートのどれであるか、 アドレスがどのよ うにインク リ メ ン ト されるかが指定されます。

ビート も参照。

ハーフワード 16 ビッ トのデータ項目。

倍精度数値 2 つの 32 ビッ ト ワードで構成されます。 これら 2 つのワードはメモ リ上で連続していて、 いずれもワードアラインしている必要があ り、 IEEE 754-1985 規格に従って、基本倍精度浮動小数点数と して解釈されます。

バイ ト 8 ビッ トのデータ項目。

バイ ト レーン ストローブ

転送においてアクティブな状態のバイ ト レーンを決定するために、 アンアラインドまたはエンディアン混在のデータアクセスで使用される AXI 信号 (WSTRB)。WSTRB の 1 ビッ トは、 データバスの 8 ビッ トに相当します。

バイ ト反転 ワード内のバイ トの順序反転。

バイ ト不変 バイ ト不変のシステムでは、 リ トルエンディアンとビッグエンディアンの動作が切り替えられても、 メモ リの各バイ トのアドレスは変更されません。 1 バイ ト を超えるデータ項目を メモ リからロード、 またはメモ リにス ト アする と き、 そのデータ項目を構成するバイ トが、 メモ リ アクセスのエンディアン形式に応じて正しい順序に配

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. Glossary-10ID013111 Non-Confidential

Page 452: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

用語集

列されます。 ARM アーキテクチャでは、 ARMv6 およびそれ以降のバージ ョ ンでバイ ト不変システムがサポート されています。 バイ ト不変のサポートが選択されている場合は、 アンアラインドのハーフワード と ワードでのメモ リ アクセスもサポートされます。 複数ワードアクセスは、 ワードアラインしている必要があ り ます。

ワード不変も参照。

ハイベクタ 例外ベクタの代替位置。 ハイベクタのアドレス範囲は、 アドレス空間の 下位ではなく、 上位付近にあ り ます。

パワーオン リセッ ト コールド リセッ ト参照。

バンクレジスタ 現在のプロセッサモードによって用途が定義される物理レジスタ。 バンクレジスタは、 R8 ~ R14 です。

ビート バース ト内の個別の転送を意味する別の用語。 例えば、 INCR4 バース トは 4 ビートで構成されます。

バース ト も参照。

非正規化値 通常と異なる値参照。

ビッグエンディアン データワード内の 上位バイ トから 下位バイ ト までが、 メモ リ内のアドレスの昇順に保存されるバイ ト配列方式。

リ トルエンディアンとエンディアン形式も参照。

ビッグエンディアン メモリ

ワードアラインしたアドレスに存在するバイ ト またはハーフワードが、 そのアドレスに存在するワードの 上位バイ ト またはハーフワードであ り、 同時に、 ハーフワードアラインしたアドレスに存在するバイ トが、 そのアドレスに存在するハーフワードの 上位バイ トであるよ う なメモ リ。

リ トルエンディアン メモ リ も参照。

ヒ ッ ト アンダーミス (HUM)キャ ッシュ内でデータ ミ スが発生した場合でも、 プログラムの実行を継続可能にするバッファ。

不正命令 アーキテクチャで未定義の命令。

プリフェ ッチ パイプライン処理のプロセッサで、 先行する命令の実行が完了する前に、 その後の命令を メモ リからフェッチしてパイプラインに送り込む処理。 プ リ フェ ッチされた命令は、 必ず実行される とは限り ません。

プリフェ ッチアボート メモ リの不正な位置から命令がフェッチされたこ とを、 メモ リ システムからプロセッサへ通知する方法。 プロセッサがその命令を実行しよ う と した場合、 例外を引き起こす必要があ り ます。 プ リ フェ ッチアボートは、 無効な命令メモ リへのアクセスを試みた結果と して、 外部または内部のメモ リ システムが引き起こす可能性があり ます。

データアボート、 外部アボート、 アボート も参照。

ブレークポイン ト プログラムの実行を停止させよ う とする位置にある命令を識別するために、 デバッガによって提供される機構。 プログラマは、 ブレークポイン ト を挿入するこ とによって、 プログラムの実行中の決まった位置で、 レジスタの内容、 メモリの位置、 変数の値を検査して、 プログラムが正常に動作しているかど うかをテス トするこ とができます。 プログラムのテス トが完了した後で、 ブレークポイン トは削除されます。

ウォ ッチポイン ト も参照。

プロセッサ マイ クロプロセッサの短縮形。 プロセッサには、 CPU またはコアと、 メモ リやインタフェースなどの追加コンポーネン トが含まれます。 これらを組み合わせて単一のマクロセルと し、 集積回路上に構築が可能です。

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. Glossary-11ID013111 Non-Confidential

Page 453: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

用語集

ブロックアドレス タグ、 インデクス、 ワードフ ィールドで構成されるアドレス。 タグビッ トによって、キャ ッシュ ヒ ッ ト時に照合するキャ ッシュエン ト リ を保持するウェイが識別されます。 インデクスビッ トによって、 アドレス指定されたセッ トが識別されます。 ワードフ ィールドには、 キャ ッシュエン ト リ内の特定のワード、 ハーフワード、 またはバイ トの識別に使用可能なワードアドレスが格納されます。

この用語集の 後のページにあるキャ ッシュ用語の図も参照。

分岐予測 パイプライン化されたプロセッサ内で、 条件付き分岐が行なわれるかど うかを予測する処理。 分岐の発生を正確に予測するこ とによって、 プロセッサは、 完全に条件が解決される前に、 分岐に続く命令をプリ フェ ッチするこ とができます。 分岐予測は、 ソフ ト ウェアで、 またはカスタムハード ウェアを使用して実行できます。 分岐予測手法は、 予測の決定がランタイム前に行われる場合は静的と して、 予測決定がプログラムの実行中に変更できる場合は動的と して分類されます。

ベースレジスタ 命令のアドレス計算の基準値を保持するため、 ロード / ス ト ア命令で指定されるレジスタ。 命令とそのアドレシングモードによっては、 メモ リに送られる仮想アドレスを形成するために、 ベースレジスタの値にオフセッ ト を加算または減算するこ とができます。

ベースレジスタ ライ トバック

アドレスが連続したメモ リ内の次の上位または下位アドレスを指し示すよ うに、 命令のターゲッ ト アド レスの計算に使用するベースレジスタの内容を更新するこ と。これによって、 命令で連続した転送を行う と き、 そのたびにターゲッ ト アドレスをフェ ッチする必要がなく、 連続する メモ リに対してよ り高速なバース ト アクセスが可能になり ます。

ペナルティ 命令フローが仮定または予想と異なるため、 実行ステージの有効なパイプライン動作が発生しないサイ クル数。

変更不可 (DNM) 変更不可フ ィールドの値は、 ソフ ト ウェアで変更しないよ うにする必要があ り ます。DNM フ ィールドは、 予測不能な値と して読み出され、 同じプロセッサの同じフ ィールドから読み出された同じ値のみを書き込む必要があ り ます。 DNM フ ィールドについての記載では、 括弧付きの RAZ または RAO が続いて、 将来の互換性のためにビッ ト を読み出す方法を示している場合があ り ますが、 プログラマはこの動作を前提とすべきではあ り ません。

ホールトモード 互いに排他な 2 つのデバッグモードのうちの 1 つ。 ホールトモードでは、 ブレークポイン ト またはウォッチポイン トに遭遇したと きに、 プロセッサの実行がすべて停止します。 すべてのプロセッサの状態、 コプロセッサの状態、 メモ リ と I/O の位置を、 JTAG インタフェースから検査および変更できます。

モニタモード も参照。

ホスト データや他のサービスを別のコンピュータに提供するコンピュータ。 特に、 デバッグ対象のターゲッ トにデバッグサービスを提供しているコンピュータ。

保存プログラムステータス レジスタ (SPSR)現在のモードへの切り替えを引き起こした例外が発生する直前の、 タスクの CPSRを保持しているレジスタ。

マイクロプロセッサ プロセッサ参照。

マクロセル インタフェース と動作が定義された複合論理ブロ ッ ク。 一般的な VLSI システムは、複数のマクロセル (プロセッサ、 ETM、 メモ リブロ ッ クなど) と、 特定用途の論理回路で構成されます。

丸めモード IEEE 754 規格では、 すべての計算を、 精度が無限であるかのよ うに実行する必要があ り ます。 例えば、 2 つの単精度値の乗算では、 仮数のビッ ト数の 2 倍まで、 正確に仮数を計算する必要があ り ます。 この値をデスティネーシ ョ ンの精度で表すために、仮数の丸めを頻繁に実行する必要があ り ます。 IEEE 754 規格では、 4 つの丸めモードが指定されています。

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. Glossary-12ID013111 Non-Confidential

Page 454: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

用語集

近似値への丸めモードでは、 仮数の 下位ビッ ト よ り も下の値を、 よ り近い側に丸め、 値が中間である場合は 下位ビッ ト をク リ アして偶数に切り上げを行う こ とによって、 結果が丸められます。 0 への丸めモードでは、 仮数の右側のすべてのビッ トが必ず切り捨てられます。 このモードは、 C 言語、 C++ 言語、 Java 言語の整数変換で使用されます。 正の無限大への丸めモード と負の無限大への丸めモードは、 区間演算で使用されます。

未サポート値 ハード ウェアでは処理されず、 サポート コードにバウンスされて完了される特定のデータ値。 このよ う なデータには、 無限大、 NaN、 通常と異なる値、 0 が含まれます。 これらの値をハード ウェアで完全にまたは部分的にサポートするか、 サポートコードにその処理の完了をゆだねるかは、 実装で選択できます。 未サポートデータの処理から生じたすべての例外は、 対応する例外イネーブルビッ トがセッ ト されている場合に、 ユーザコードに ト ラ ップされます。

ミス キャ ッシュ ミ ス参照。

密結合メモリ (TCM) パフォーマンスを予測可能な必要がある場合に使用される、 命令実行やデータロードのタイ ミ ングが予測可能な、 低レイテンシのメモ リ領域。 TCM は次のものを保持するために適しています。

• 重要なルーチン (割り込み処理など)

• スク ラ ッチパッ ドデータ

• 局所性の関係でキャ ッシュに適さない種類のデータ

• 重要なデータ構造 (割り込みスタ ッ クなど)

未定義 未定義命令ト ラ ップを生成する命令を指します。 ARM 例外の詳細については、『ARM アーキテクチャ リ ファレンスマニュアル』 を参照して下さい。

無限大 無限大を表す IEEE 754 規格の形式では、 指数はその精度での 大値であ り、 仮数はすべて 0 です。

無効化 有効ビッ ト をク リ アし、 キャ ッシュラインを無効と してマークするこ と。 この処理は、 キャ ッシュラインに有効なキャ ッシュエン ト リが含まれていない場合に必ず実行する必要があ り ます。 例えば、 キャ ッシュのフラ ッシュ後は、 すべてのラインが無効になり ます。

命令あたりのクロック数 (CPI)命令あたりのサイ クル数 (CPI) 参照。

命令あたりのサイクル数 (CPI)命令あたりのサイ クル数 (または命令あたりのクロ ッ ク数) は、 1 ク ロ ッ クサイ クルで実行可能なコンピュータ命令の数の指標です。 この性能指標は、 同じ命令セッ トを実装した異なる CPU のパフォーマンスを比較するために使用できます。 値が低いほど、 パフォーマンスが高いこ とを意味します。

命令キャッシュ プロセッサと メ イン メモ リ との間に配置され、 使用頻度の高い命令のコピーを格納および取得するために使用される、 オンチップの高速アクセス メモ リ位置のブロ ック。 これによって、 メモ リ アクセスの平均速度が大幅に向上するため、 プロセッサのパフォーマンスも向上します。

命令同期バリア (ISB) すべての古い命令のプリ フェ ッチバッファがフラ ッシュされるこ とを保証するための操作。

メモリコヒーレンシ メモ リは、 データ読み出しまたは命令フェッチによって読み出された値が、 後にその位置に書き込まれた値と一致していれば、 コ ヒーレン トです。 メモ リ コ ヒーレンシは、 メ イン メモ リ、 ラ イ トバッファ、 キャ ッシュを搭載したシステムなど、 使用可能な物理位置が複数存在する場合には、 実現が難し くな り ます。

メモリ保護ユニッ ト (MPU)メモ リブロ ッ クに対するアクセス許可を制御するハード ウェア。 MMU とは異な り、MPU は仮想アドレスから物理アドレスへの変換は行ないません。

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. Glossary-13ID013111 Non-Confidential

Page 455: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

用語集

モニタ デバッグモード 互いに排他な 2 つのデバッグモードのうちの 1 つ。 モニタ デバッグモードでは、 プロセッサは、 デバッグモニタまたはオペレーティングシステムのデバッグタスクで提供されるソフ ト ウェア アボートハンド ラを稼働します。 これによって、 ブレークポイン ト またはウォッチポイン トに遭遇して、 通常のプログラム実行が中断している間であっても、 重要なシステム割り込み処理を継続するこ とができます。

ホールトモード も参照。

予測不能 命令の結果や制御レジスタのフ ィールドの値が、 特定の値である と想定できないことを意味します。 予測不能な命令や結果がセキュ リ ティホールとならないこ と、 およびプロセッサの停止やハング、 またはシステムの他の部分の停止やハングを引き起こ さないこ とを保証する必要があ り ます。

読み出し 読み出しは、 ロードの意味を持つメモリ操作と して定義されます。 これには、 ARM命令の LDM、 LDRD、 LDC、 LDR、 LDRT、 LDRSH、 LDRH、 LDRSB、 LDRB、 LDRBT、 LDREX、 RFE、 STREX、SWP、 SWPB、 および Thumb 命令の LDM、 LDR、 LDRSH、 LDRH、 LDRSB、 LDRB、 POP が該当します。

予約 制御レジスタまたは命令の形式に含まれているフ ィールドが実装で定義される、 または 0 ではない場合に予測不能な結果が引き起こ される場合、 そのフ ィールドは予約と記載されています。 これらのフ ィールドは、 アーキテクチャの将来の拡張に備えて予約されている場合と、 実装固有の場合があ り ます。 実装で使用されないすべての予約ビッ トは、 0 と して読み書きする必要があ り ます。

ライ トスルー (WT) ラ イ ト スルー キャ ッシュでは、 キャ ッシュが更新される と同時にデータがメ イン メモ リに書き込まれます。

ライ トバック (WB) ラ イ トバッ ク キャ ッシュでは、 キャ ッシュ ミ スに続く ラ インの置き換えでキャ ッシュから追い出されたデータのみが、 メ イン メモ リに書き込まれます。 それ以外の場合、 プロセッサによる書き込みでは、 キャ ッシュのみが更新されます。 コピーバッ ク と呼ばれるこ と もあ り ます。

ライ トバッファ データキャ ッシュ と メ イン メモ リ との間に FIFO バッファ と して配置されている高速メモ リブロ ッ ク。 メ イン メモ リへのス ト アを 適化するために使用されます。

ライン キャ ッシュライン参照。

リ トルエンディアン データワード内の 下位バイ トから 上位バイ ト までが、 メモ リ内のアドレスの昇順に保存されるバイ ト配列方式。

ビッグエンディアンとエンディアン形式も参照。

リ トルエンディアン メモリ

次のよ うなメモ リ を指します。

• ワードアラインされたアドレスのバイ ト またはハーフワードが、 そのアドレスにあるワード内の 下位のバイ ト またはハーフワードである。

• ハーフワードアラインされたアドレスのバイ トが、 そのアドレスにあるハーフワード内の 下位バイ トである。

ビッグエンディアン メモ リ も参照。

領域 命令またはデータ メモ リ空間の一部分。

例外 プログラムの実行に割り込む必要があるほど重大である と判断された、 フォールトまたはエラーイベン ト。 例と して、 無効なメモ リ アクセス、 外部割り込み、 未定義命令の実行などが挙げられます。 例外が発生する と、 通常のプログラムフローが中断され、 対応する例外ベクタで実行が再開されます。 例外ベクタには、 例外を処理する割り込みハンド ラの 初の命令が含まれています。

例外が可能な場合 FPSCR の例外イネーブルビッ トがセッ ト される と、 対応する例外が可能になり ます。可能である例外が発生する と、 ユーザハンド ラへの ト ラ ップが取得されます。 例外状態を引き起こした動作は、 IEEE 754 規格で定義されている結果を生成するために、サポート コードにバウンスするこ とができます。 その後で、 ユーザ ト ラ ップ ハンドラに例外が報告されます。

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. Glossary-14ID013111 Non-Confidential

Page 456: Cortex -R4 およびCortex-R4F - ARM architectureinfocenter.arm.com/help/topic/com.arm.doc.ddi0363fj/DDI...ARM DDI 0363FJ Copyright © 2010 ARM Limited. ID013111 Non-Confidential

用語集

例外が不可能な場合 FPSCR の例外イネーブルビッ トがク リ アされている場合、 そのビッ トに対応する例外は不可能とな り ます。 このよ う な例外に対しては、 返される結果が IEEE 754 規格で定義されています。 例外状態を引き起こした動作は、 IEEE 754 規格で定義されている結果を生成するために、 サポート コードにバウンスするこ とができます。 例外は、 ユーザ ト ラ ップハンド ラに報告されません。

例外処理ルーチン 割り込みハンド ラ参照。

例外ベクタ 割り込みベクタ参照。

ロード / ストアアーキテクチャ

データ処理操作が、 メモ リの内容に対して直接ではなく、 レジスタの内容に対してのみ行われるプロセッサアーキテクチャ。

ロードストア ユニッ ト (LSU)プロセッサで、 ロード / ス ト ア転送を処理する部分。

ワード 32 ビッ トのデータ項目。

ワード不変 ワード不変システムでは、 リ トルエンディアン動作とビッグエンディアン動作との切り替え時に、 各メモ リバイ トのアドレスが変更されます。 これによって、 一方のエンディアン形式でアドレス A が割り当てられたバイ トは、 他方のエンディアン形式ではアドレス A EOR 3 が割り当てられます。 このため、 メモ リのアラインされたワードは、 エンディアン形式に関係なく、 常にメモ リ上の同じ 4 バイ トに同じ順序で構成されます。 エンディアン形式の変更は、 バイ ト配列が変わるためではなく、バイ ト アドレスが変更されるために発生します。 ARM アーキテクチャでは、 ARMv3およびそれ以降のバージ ョ ンでワード不変システムがサポート されています。 ワード不変のサポートが選択されている場合、 アンアラインドアドレスが指定されたロード / ス ト ア命令の動作は命令によって異な り、 通常は、 アンアラインドアクセスに対して予測される動作にはな り ません。

バイ ト不変も参照。

割り込みハンドラ 割り込みが発生したと きに、 プロセッサの制御が渡されるプログラム。

割り込みベクタ 下位メモ リ、 またはハイベクタが構成されている場合は上位メモ リの複数の固定アドレスの 1 つで、 対応する割り込みハンド ラの 初の命令が格納されています。

ARM DDI 0363FJ Copyright © 2010 ARM Limited. All rights reserved. Glossary-15ID013111 Non-Confidential