セクション 4. プリフェッチ キャッシュ - Microchip...
Transcript of セクション 4. プリフェッチ キャッシュ - Microchip...
注意 : この日本語版文書は参考資料としてご利用ください。最新情報は必ずオリジ
ナルの英語版をご参照願います。
セクション 4. プリフェッチ キャッシュ
プリフェッチ
キャッシュ
4
ハイライト
本セクションには下記の主要項目を記載しています。
4.1 はじめに ........................................................................................................................ 4-24.2 キャッシュの概要 ......................................................................................................... 4-34.3 制御レジスタ ................................................................................................................ 4-74.4 キャッシュの動作 ....................................................................................................... 4-234.5 キャッシュの構成 ....................................................................................................... 4-234.6 コヒーレンシのサポート ............................................................................................ 4-254.7 リセットの影響 ........................................................................................................... 4-264.8 省電力モード時の動作 ................................................................................................ 4-264.9 設計のヒント .............................................................................................................. 4-264.10 関連アプリケーション ノート .................................................................................... 4-274.11 改訂履歴 ...................................................................................................................... 4-28
© 2012 Microchip Technology Inc. DS61119E_JP - p. 4-1
PIC32 ファミリ リファレンス マニュアル
4.1 はじめに
本書では、PIC32 デバイスファミリのプリフェッチ キャッシュ モジュールの機能と動作につ
いて説明します。プリフェッチ キャッシュ機能により、ほとんどのアプリケーションのシステ
ム性能が向上します。
プログラム フラッシュメモリ (PFM) キャッシュおよびプリフェッチ キャッシュ モジュール
は、下記の機能を実装する事により、キャッシュ可能な PFM 領域から実行されるアプリケー
ションの性能を改善します。
• 命令キャッシュ
完全連想方式でロック可能な 16 ライン x 16 バイトのキャッシュラインは、毎クロック 1 命 令を最大 256 バイト長のループで供給します。
• データキャッシュ
プリフェッチ キャッシュでは、データ保存用に最大 4 ラインを割り当てる事ができます。 これにより、PFM に格納した定数データへのアクセスを改善できます。
• 予測プリフェッチ コードが連続している場合、プリフェッチ キャッシュ モジュールは、現在のプログラム カウンタよりも先読みしてキャッシュしなくても、毎クロック 1 命令を供給でき、PFM のアクセス時間を隠蔽できます。
4.1.1 プリフェッチ キャッシュ モジュールのその他の機能
プリフェッチ キャッシュ モジュールは、下記の機能も備えています。
• 最大 4 つのキャッシュラインを使ったデータのキャッシュ
• アドレスマスク付きの 2 つのキャッシュラインを使った繰り返し命令の保持
• 擬似 LRU ( 最長時間不使用 ) 置換方式
• 全てのキャッシュラインはソフトウェア書き込み可能
• 16 バイトのパラレル メモリフェッチ
• 予測命令プリフェッチ キャッシュ
Note: ファミリ リファレンス マニュアルの本セクションは、デバイス データシートの内 容の補足を目的としています。本セクションの内容は PIC32 ファミリの一部のデバイスには対応していません。
本書の内容が特定デバイスに対応しているかどうかは、最新デバイス データシー ト内の「プリフェッチ キャッシュ」の冒頭に記載されている注意書きでご確認く ださい。
デバイス データシートとファミリ リファレンス マニュアルの各セクションは、マ イクロチップ社のウェブサイト http://www.microchip.com でご覧になれます。
DS61119E_JP - p. 4-2 © 2012 Microchip Technology Inc.
セクション 4. プリフェッチ キャッシュ プリフェッチ
キャッシュ
4
4.2 キャッシュの概要プリフェッチ キャッシュ モジュールは、PIC32 ファミリの一部のデバイスだけが実装してい
る性能強化モジュールです。デバイスが高速なクロックで動作している場合、PFM のアクセス
時間を確保するために、PFM 読み出しトランザクションに待機ステートを挿入する必要があり
ます。CPU から高速にアクセスできる一時的な保持領域に、プリフェッチした命令を格納する
事により、CPU は待機ステートを意識する事なくアクセスできます。CPU へのデータパスは
32 ビット幅ですが、PFM へのデータパスは 128 ビット幅あります。ビット幅の広い 128 ビッ
トパスでは、4 倍のレートで動作する 32 ビットパスと同じ帯域幅が得られます。
プリフェッチ キャッシュ モジュールの主な機能は 2 つあります。1 つは命令にアクセスする時
に命令を「キャッシュ」する事、もう 1 つは命令の実行に先行して PFM から命令を「プリ
フェッチ」する事です。
「キャッシュ」は、キャッシュ可能メモリのサブセットを一時的な保持空間 ( キャッシュライン
と呼ぶ ) を使って保持します。各キャッシュラインは、現在保持している内容のタイプとその
アドレスを記述した「タグ」を備えます。通常の場合、キャッシュラインは、メモリの現在の内容のコピーを単純に保持する事により、CPU が待機ステートを要さずにデータを利用できる
ようにします。 CPU が必要とするデータがキャッシュ内に存在する場合もあれば、存在しない場合もありま
す。CPU が必要とするデータがキャッシュ可能であるにもかかわらずキャッシュに含まれてい
ない場合を「キャッシュミス」と呼びます。この場合、PFM 内の適切なアドレスに対して読み
出しを実行し、そのデータをキャッシュと CPU に供給します。一方、CPU が必要とするデー
タがキャッシュ内に存在する場合を「キャッシュヒット」と呼びます。この場合、データは待機ステートなしで CPU に供給されます。
プリフェッチ キャッシュ モジュールのもう 1 つの機能は、命令を先読みキャッシュする事で
す。モジュールは、次のキャッシュラインのアドレスを計算し、PFM から次の 16 バイトの
キャッシュラインを読み込みます。そして、コードは順番通り連続的に実行されるとの予測の下に、このラインを 16 バイト幅のプリフェッチ キャッシュバッファに格納します。
図 4-1 に、プリフェッチ キャッシュ モジュールのブロック図を示します。当然ですが、プリ
フェッチ キャッシュ モジュールはバスマトリクス(BMX)モジュールとPFMの間に位置します。
図 4-1: プリフェッチ キャッシュのブロック図
Prefetch
Program Flash Memory (PFM)
PrefetchTag
Hit Logic
Tag Logic
CTRL
FSM
Bus
Cache
Prefetch
Hit LRU
Miss LRU
Cache Line
RDATA
CacheLine
AddressEncode
BM
X/C
PU
RD
ATA
CTR
L
BM
X/C
PU
Control
Control
Control
© 2012 Microchip Technology Inc. DS61119E_JP - p. 4-3
PIC32 ファミリ リファレンス マニュアル
プリフェッチ キャッシュの基本的動作を説明するために、例として、CPU が物理アドレス
0x1FC01234 からのデータを必要としている状態を図 4-2 に示します。プリフェッチ キャッ
シュは、このアドレスを、タグ内で「有効」(valid) になっている全てのアドレスと一斉に比較
します。下方の網掛けしたエントリがこのアドレスを持ち、かつ「有効」であるため、キャッシュはヒットした事になります。この場合、そのデータ配列から適切なデータワードが、1 ク
ロック周期で CPU に供給されます。
図 4-2: キャッシュ ルックアップの例 (1)
⎫ ⎪ ⎪ ⎪ ⎪ ⎪ ⎪ ⎪ ⎪ ⎬ ⎪ ⎪ ⎪ ⎪ ⎪ ⎪ ⎪ ⎪ ⎭
2340x00001000 WORD 3 WORD 0WORD 1WORD 2
WORD 3 WORD 0WORD 1WORD 2WORD 3 WORD 0WORD 1WORD 2WORD 3 WORD 0WORD 1WORD 2WORD 3 WORD 0WORD 1WORD 2WORD 3 WORD 0WORD 1WORD 2WORD 3 WORD 0WORD 1WORD 2WORD 3 WORD 0WORD 1WORD 2WORD 3 WORD 0WORD 1WORD 2WORD 3 WORD 0WORD 1WORD 2WORD 3 WORD 0WORD 1WORD 2WORD 3 WORD 0WORD 1WORD 2WORD 3 WORD 0WORD 1WORD 2WORD 3 WORD 0WORD 1WORD 2WORD 3 WORD 0WORD 1WORD 2WORD 3 WORD 0WORD 1WORD 2
0x000013000x000022000x0000a0300x800012300x000022100x000022300x000022200x000012000x000012300x000012300x000013200x000013300x000013100x000013400x00001350
1 0 11 0 11 0 11 0 11 0 11 0 11 0 11 0 11 0 10 0 11 0 11 0 11 0 01 0 01 0 01 0 0
Cache Data
LVAL
IDLL
OC
KLT
YP
E
⎫ ⎪ ⎪ ⎬ ⎪ ⎪ ⎭
Cache Tags(2)
マスクビットは「0」であると仮定し、図には示していません。
キャッシュタグ レジスタが格納するアドレスの bit 3-0 は、常時暗黙的に「0」とされます。
DS61119E_JP - p. 4-4 © 2012 Microchip Technology Inc.
セクション 4. プリフェッチ キャッシュ プリフェッチ
キャッシュ
4
4.2.1 キャッシュの構成
キャッシュは常にキャッシュ データとキャッシュ タグで構成されます。データ配列は、プロ
グラム命令またはプログラムデータを格納します。キャッシュは物理的にタグ付けされ、アドレス一致は物理アドレスに基づきます ( 仮想アドレスではありません )。 タグ配列内の各行は、下記の情報を格納します。
• マスク – アドレスマスク値
• タグ – タグアドレス ( アドレス一致の比較対象 )•「有効」ビット
•「ロック」ビット
•「タイプ」ビット – 「命令」または「データ」のどちらかを指定するタイプ識別ビット
データ配列の各行は、16 バイトのプログラム命令またはプログラムデータを格納します。どち
らを格納しているかは、「タイプ」ビットによって決まります。
図 4-3、図 4-4、図 4-5 に、1 つのキャッシュラインの構成を示します。LMASK<10:0> ビット
(CHEMSK<15:5>) と LTYPE ビット (CHETAG<1>) を設定できるのは、一部のキャッシュライ
ンだけに限定される事に注意してください。LTAG<20:0> ビット (CHETAG<23:4>) は、PFMの実装容量に対して完全な割り当てを行うために必要なビット数だけを実装しています。例えば、PFM の実装容量が 512 K バイトである場合、LTAG<20:0> ビット (CHETAG<23:4>) の中
の bit 15-0 (CHETAG<18:4>) だけが実装されます。
図 4-3: 1 キャッシュラインのマスク部
図 4-4: 1 キャッシュラインのタグ部
図 4-5: 1 キャッシュラインのデータ部
31 16 15 5 4 0
U-0 LMASK<10:0> U-0
31 24 23 4 3 2 1 0
LTAG
BO
OT U-0 LTAG<20:0>
LVA
LID
LLO
CK
LTY
PEU
-0
31 0
WORD 3
31 0
WORD 2
31 0
WORD 1
31 0
WORD 0
© 2012 Microchip Technology Inc. DS61119E_JP - p. 4-5
PIC32 ファミリ リファレンス マニュアル
キャッシュ配列を表 4-1 に示します。各キャッシュラインのタグ部とデータ部は、ソフトウェ
アで変更できます。変更する場合、CHEIDX<3:0> ビット (CHEACC<3:0>) で変更するキャッ
シュラインを選択します。選択したキャッシュラインは CHETAG、CHEMSK、CHEW0、CHEW1、CHEW2、CHEW3 レジスタを介して変更できます。
キャッシュラインの変更は、キャッシュ不可アドレスからコードを実行している時に実行する事を推奨します。なぜならば、キャッシュ可能アドレスから実行している間は、キャッシュ コ
ントローラによるキャッシュ変更の保護機能が無効になるためです。
一部のビットは書き込み禁止です。キャッシュライン A および B のみ、LMASK<10:0> ビット
(CHEMSK<15:5>)に書き込み可能です。キャッシュライン0~BのLTYPEビット(CHETAG<1>)は変更できません ( タイプは「命令」に固定 )。 ロックを有効にしたキャッシュラインとタイプを「データ」に設定したキャッシュラインは、キャッシュミス時に置換するキャッシュラインの選択から除外されます ( キャッシュミス時に
置換されません )。しかし、それらの設定は、キャッシュラインの擬似 LRU 値 ( 不使用時間の
順位 ) には影響しません。
表 4-1: キャッシュ配列
ラインタグ配列
データ配列 (2)
マスク フラグ
0 0x000(1) LTAG LVALID LLOCK LTYPE(3) Word 3 Word 2 Word 1 Word 0
1 0x000(1) LTAG LVALID LLOCK LTYPE(3) Word 3 Word 2 Word 1 Word 0
2 0x000(1) LTAG LVALID LLOCK LTYPE(3) Word 3 Word 2 Word 1 Word 0
3 0x000(1) LTAG LVALID LLOCK LTYPE(3) Word 3 Word 2 Word 1 Word 0
4 0x000(1) LTAG LVALID LLOCK LTYPE(3) Word 3 Word 2 Word 1 Word 0
5 0x000(1) LTAG LVALID LLOCK LTYPE(3) Word 3 Word 2 Word 1 Word 0
6 0x000(1) LTAG LVALID LLOCK LTYPE(3) Word 3 Word 2 Word 1 Word 0
7 0x000(1) LTAG LVALID LLOCK LTYPE(3) Word 3 Word 2 Word 1 Word 0
8 0x000(1) LTAG LVALID LLOCK LTYPE(3) Word 3 Word 2 Word 1 Word 0
9 0x000(1) LTAG LVALID LLOCK LTYPE(3) Word 3 Word 2 Word 1 Word 0
A LMASK LTAG LVALID LLOCK LTYPE(3) Word 3 Word 2 Word 1 Word 0
B LMASK LTAG LVALID LLOCK LTYPE(3) Word 3 Word 2 Word 1 Word 0
C 0x000(1) LTAG LVALID LLOCK LTYPE Word 3 Word 2 Word 1 Word 0
D 0x000(1) LTAG LVALID LLOCK LTYPE Word 3 Word 2 Word 1 Word 0
E 0x000(1) LTAG LVALID LLOCK LTYPE Word 3 Word 2 Word 1 Word 0
F 0x000(1) LTAG LVALID LLOCK LTYPE Word 3 Word 2 Word 1 Word 0
Note 1: 読み出し専用ビット
2: デバイスがコード保護されている場合、読み出しは「0」を返し、それ以外の場合は読み書き可能
3: タイプは「命令」に固定
DS61119E_JP - p. 4-6 © 2012 Microchip Technology Inc.
セクション 4. プリフェッチ キャッシュ プリフェッチ
キャッシュ
4
4.3 制御レジスタ
プリフェッチ キャッシュ モジュールは、下記の特殊機能レジスタ (SFR) を備えています。
• CHECON: キャッシュ制御レジスタ (1,2,3)
このレジスタは、プリフェッチ キャッシュの構成を管理し、待機ステートを制御します。
• CHEACC: キャッシュ アクセス レジスタ (1,2,3)
このレジスタは 16 キャッシュラインの中から 1 ラインを指定し、そのラインに対するCHETAG、CHEMSK、CHEW0、CHEW1、CHEW2、CHEW3 レジスタを使ったアクセスを有効にします。
• CHETAG: キャッシュ タグレジスタ (1,2,3,4)
このレジスタは、キャッシュラインが格納している情報のアドレスとタイプを格納します。
• CHEMSK: キャッシュ タグマスク レジスタ (1,2,3,4)
このレジスタは、CHETAG レジスタ内の TAG ビットを無視 ( マスク ) するために使います。
• CHEW0: キャッシュワード 0 ~ CHEW3: キャッシュワード 3(1)
これらの 4 個のレジスタは、プリフェッチ キャッシュデータ配列にアクセスするために使い ます。
• CHELRU: キャッシュ LRU レジスタ
このレジスタは、キャッシュの擬似 LRU の状態を示します。
• CHEHIT: キャッシュヒット統計値レジスタ
このレジスタは、キャッシュヒットの回数を格納します。
• CHEMIS: キャッシュミス統計値レジスタ
このレジスタは、キャッシュミスの回数を格納します。
• CHEPFABT: プリフェッチ キャッシュ中止統計値レジスタ
このレジスタは、中止されたプリフェッチ キャッシュ動作の回数を格納します。
表 4-2 に、プリフェッチ キャッシュに関連するレジスタの要約を示します。表内の各レジスタ
の詳細な説明は、この表の後に記載しています。
Note: PIC32 ファミリの一部デバイスはプリフェッチ キャッシュ モジュールを内蔵し ていません。そのようなデバイスでは、以下に記載したプリフェッチ キャッシュ レジスタのアドレスは全て未実装であるため、アクセスしないでください。プリフェッチ キャッシュ モジュールを内蔵しているかどうかは、各デバイスのデー タシートを参照してください。
© 2012 Microchip Technology Inc. DS61119E_JP - p. 4-7
PIC32 ファミリ リファレンス マニュアル
表 4-2: プリフェッチ キャッシュ関連 SFR の概要
レジスタ名ビット
31/23/15/7ビット
30/22/14/6ビット
29/21/13/5ビット
28/20/12/4ビット
27/19/11/3ビット
26/18/10/2ビット
25/17/9/1ビット
24/16/8/0
CHECON(1,2,3) 31:24 — — — — — — — —
23:16 — — — — — — — CHECOH
15:8 — — — — — — DCSZ<1:0>
7:0 — — PREFEN<1:0> — PFMWS<2:0>
CHEACC(1,2,3) 31:24 CHEWEN — — — — — — —
23:16 — — — — — — — —
15:8 — — — — — — — —
7:0 — — — — CHEIDX<3:0>
CHETAG(1,2,3) 31:24 LTAGBOOT — — — — — — —
23:16 LTAG<19:12>
15:8 LTAG<11:4>
7:0 LTAG<3:0> LVALID LLOCK LTYPE —
CHEMSK(1,2,3) 31:24 — — — — — — — —
23:16 — — — — — — — —
15:8 LMASK<10:3>
7:0 LMASK<2:0> — — — — —
CHEW0 31:24 CHEW0<31:24>
23:16 CHEW0<23:16>
15:8 CHEW0<15:8>
7:0 CHEW0<7:0>
CHEW1 31:24 CHEW1<31:24>
23:16 CHEW1<23:16>
15:8 CHEW1<15:8>
7:0 CHEW1<7:0>
CHEW2 31:24 CHEW2<31:24>
23:16 CHEW2<23:16>
15:8 CHEW2<15:8>
7:0 CHEW2<7:0>
CHEW3 31:24 CHEW3<31:24>
23:16 CHEW3<23:16>
15:8 CHEW3<15:8>
7:0 CHEW3<7:0>
凡例 : — = 未実装、「0」として読み出し
Note 1: このレジスタに対応するクリアレジスタのアドレスは 0x4 バイト オフセットしています。クリアレジスタは、対応す
るレジスタの名前の後に「CLR」を追加した名前を持ちます ( 例 : CHECONCLR)。クリアレジスタの任意のビットに
「1」を書き込むと、対応するレジスタの対応するビットがクリアされます。クリアレジスタからの読み出しは無視され
ます。
2: このレジスタに対応するセットレジスタのアドレスは 0x8 バイト オフセットしています。セットレジスタは、対応す
るレジスタの名前の後に「SET」を追加した名前を持ちます ( 例 : CHECONSET)。セットレジスタの任意のビットに
「1」を書き込むと、対応するレジスタの対応するビットがセットされます。セットレジスタからの読み出しは無視され
ます。
3: このレジスタに対応する反転レジスタのアドレスは 0xC バイト オフセットしています。反転レジスタは、対応するレ
ジスタの名前の後に「INV」を追加した名前を持ちます ( 例 :CHECONINV)。反転レジスタの任意のビットに「1」を書
き込むと、対応するレジスタの対応するビットが反転します。反転レジスタからの読み出しは無視されます。
DS61119E_JP - p. 4-8 © 2012 Microchip Technology Inc.
セクション 4. プリフェッチ キャッシュ プリフェッチ
キャッシュ
4
CHELRU 31:24 CHELRU<24>
23:16 CHELRU<23:16>
15:8 CHELRU<15:8>
7:0 CHELRU<7:0>>
CHEHIT 31:24 CHEHIT<31:24>
23:16 CHEHIT<23:16>
15:8 CHEHIT<15:8>
7:0 CHEHIT<7:0>
CHEMIS 31:24 CHEMIS<31:24>
23:16 CHEMIS<23:16>
15:8 CHEMIS<15:8>
7:0 CHEMIS<7:0>
CHEPFABT 31:24 CHEPFABT<31:24>
23:16 CHEPFABT<23:16>
15:8 CHEPFABT<15:8>
7:0 CHEPFABT<7:0>
表 4-2: プリフェッチ キャッシュ関連 SFR の概要 ( 続き )
レジスタ名ビット
31/23/15/7ビット
30/22/14/6ビット
29/21/13/5ビット
28/20/12/4ビット
27/19/11/3ビット
26/18/10/2ビット
25/17/9/1ビット
24/16/8/0
凡例 : — = 未実装、「0」として読み出し
Note 1: このレジスタに対応するクリアレジスタのアドレスは 0x4 バイト オフセットしています。クリアレジスタは、対応す
るレジスタの名前の後に「CLR」を追加した名前を持ちます ( 例 : CHECONCLR)。クリアレジスタの任意のビットに
「1」を書き込むと、対応するレジスタの対応するビットがクリアされます。クリアレジスタからの読み出しは無視され
ます。
2: このレジスタに対応するセットレジスタのアドレスは 0x8 バイト オフセットしています。セットレジスタは、対応す
るレジスタの名前の後に「SET」を追加した名前を持ちます ( 例 : CHECONSET)。セットレジスタの任意のビットに
「1」を書き込むと、対応するレジスタの対応するビットがセットされます。セットレジスタからの読み出しは無視され
ます。
3: このレジスタに対応する反転レジスタのアドレスは 0xC バイト オフセットしています。反転レジスタは、対応するレ
ジスタの名前の後に「INV」を追加した名前を持ちます ( 例 :CHECONINV)。反転レジスタの任意のビットに「1」を書
き込むと、対応するレジスタの対応するビットが反転します。反転レジスタからの読み出しは無視されます。
© 2012 Microchip Technology Inc. DS61119E_JP - p. 4-9
PIC32 ファミリ リファレンス マニュアル
レジスタ 4-1: CHECON: キャッシュ制御レジスタ (1,2,3)
ビットレンジ
ビット31/23/15/7
ビット30/22/14/6
ビット29/21/13/5
ビット28/20/12/4
ビット27/19/11/3
ビット26/18/10/2
ビット25/17/9/1
ビット24/16/8/0
31:24U-0 U-0 U-0 U-0 U-0 U-0 U-0 U-0
— — — — — — — —
23:16U-0 U-0 U-0 U-0 U-0 U-0 U-0 R/W-0
— — — — — — — CHECOH
15:8U-0 U-0 U-0 U-0 U-0 U-0 R/W-0 R/W-0
— — — — — — DCSZ<1:0>
7:0U-0 U-0 R/W-0 R/W-0 U-0 R/W-1 R/W-1 R/W-1
— — PREFEN<1:0> — PFMWS<2:0>
凡例 :
R = 読み出し可能ビット W = 書き込み可能ビット P = プログラミング可能ビット
U = 未実装ビット -n = POR 時のビット値 : (「0」、「1」、x = ビットは未知 )
bit 31-17 未実装 :「0」を書き込み、読み出しは無視
bit 16 CHECOH: PFM プログラミング サイクル時キャッシュ コヒーレンシ設定ビット
1 = 全てのデータおよび命令キャッシュラインを無効にする0 = ロックされていないデータおよび命令キャッシュラインを無効にする
bit 15-10 未実装 :「0」を書き込み、読み出しは無視
bit 9-8 DCSZ<1:0>: データキャッシュライン数ビット
11 = 4 ラインをデータキャッシュ用に使う10 = 2 ラインをデータキャッシュ用に使う 01 = 1 ラインをデータキャッシュ用に使う00 = データキャッシュを無効にするこれらのビットを変更すると、全てのキャッシュラインが「無効」(invalid) 状態に再初期化されます。
bit 7-6 未実装 :「0」を書き込み、読み出しは無視
bit 5-4 PREFEN<1:0>: 予測プリフェッチ イネーブルビット
11 = キャッシュ可能領域とキャッシュ不可領域の両方に対して予測プリフェッチを有効にする10 = キャッシュ不可領域に対してのみ予測プリフェッチを有効にする01 = キャッシュ可能領域に対してのみ予測プリフェッチを有効にする00 = 予測プリフェッチを無効にする
bit 3 未実装 :「0」を書き込み、読み出しは無視
Note 1: このレジスタに対応するクリアレジスタ (CHECONCLR) のアドレスは 0x4 バイト オフセットしていま す。クリアレジスタの任意のビットに「1」を書き込むと、対応するレジスタの対応するビットがクリアされます。クリアレジスタからの読み出しは無視されます。
2: このレジスタに対応するセットレジスタ (CHECONSET) のアドレスは 0x8 バイト オフセットしていま す。セットレジスタの任意のビットに「1」を書き込むと、対応するレジスタの対応するビットがセットされます。セットレジスタからの読み出しは無視されます。
3: このレジスタに対応する反転レジスタ ((CHECONINV) )のアドレスは0xCバイト オフセットしています。 反転レジスタの任意のビットに「1」を書き込むと、対応するレジスタの対応するビットが反転します。反転レジスタからの読み出しは無視されます。
DS61119E_JP - p. 4-10 © 2012 Microchip Technology Inc.
セクション 4. プリフェッチ キャッシュ プリフェッチ
キャッシュ
4
bit 2-0 PFMWS<2:0>: PFM アクセス時間 (SYSLK 待機ステート数 ) ビット
111 = 7 待機ステート110 = 6 待機ステート 101 = 5 待機ステート100 = 4 待機ステート011 = 3 待機ステート010 = 2 待機ステート 001 = 1 待機ステート000 = 待機ステートなし
レジスタ 4-1: CHECON: キャッシュ制御レジスタ (1,2,3) ( 続き )
Note 1: このレジスタに対応するクリアレジスタ (CHECONCLR) のアドレスは 0x4 バイト オフセットしていま す。クリアレジスタの任意のビットに「1」を書き込むと、対応するレジスタの対応するビットがクリアされます。クリアレジスタからの読み出しは無視されます。
2: このレジスタに対応するセットレジスタ (CHECONSET) のアドレスは 0x8 バイト オフセットしていま す。セットレジスタの任意のビットに「1」を書き込むと、対応するレジスタの対応するビットがセットされます。セットレジスタからの読み出しは無視されます。
3: このレジスタに対応する反転レジスタ ((CHECONINV) )のアドレスは0xCバイト オフセットしています。 反転レジスタの任意のビットに「1」を書き込むと、対応するレジスタの対応するビットが反転します。反転レジスタからの読み出しは無視されます。
© 2012 Microchip Technology Inc. DS61119E_JP - p. 4-11
PIC32 ファミリ リファレンス マニュアル
レジスタ 4-2: CHEACC: キャッシュ アクセス レジスタ (1,2,3)
ビットレンジ
ビット31/23/15/7
ビット30/22/14/6
ビット29/21/13/5
ビット28/20/12/4
ビット27/19/11/3
ビット26/18/10/2
ビット25/17/9/1
ビット24/16/8/0
31:24R/W-0 U-0 U-0 U-0 U-0 U-0 U-0 U-0
CHEWEN — — — — — — —
23:16U-0 U-0 U-0 U-0 U-0 U-0 U-0 U-0
— — — — — — — —
15:8U-0 U-0 U-0 U-0 U-0 U-0 U-0 U-0
— — — — — — — —
7:0U-0 U-0 U-0 U-0 R/W-0 R/W-0 R/W-0 R/W-0
— — — — CHEIDX<3:0>
凡例 :
R = 読み出し可能ビット W = 書き込み可能ビット P = プログラミング可能ビット
U = 未実装ビット -n = POR 時のビット値 :(「0」、「1」、x = ビットは未知 )
bit 31 CHEWEN: CHETAG、CHEMSK、CHEW0、CHEW1、CHEW2、CHEW3 レジスタによるキャッシュ アクセス イネーブルビット
1 = CHEIDX<3:0> で選択したキャッシュラインに対する書き込みを許可する0 = CHEIDX<3:0> で選択したキャッシュラインに対する書き込みを禁止する
bit 30-4 未実装 :「0」を書き込み、読み出しは無視
bit 3-0 CHEIDX<3:0>: キャッシュライン ID ビット
この値により、読み出しまたは書き込みを行うキャッシュラインを選択します。
Note 1: このレジスタに対応するクリアレジスタ (CHEACCCLR)のアドレスは0x4バイト オフセットしています。 クリアレジスタの任意のビットに「1」を書き込むと、対応するレジスタの対応するビットがクリアされます。クリアレジスタからの読み出しは無視されます。
2: このレジスタに対応するセットレジスタ (CHEACCSET)のアドレスは0x8バイト オフセットしています。 セットレジスタの任意のビットに「1」を書き込むと、対応するレジスタの対応するビットがセットされます。セットレジスタからの読み出しは無視されます。
3: このレジスタに対応する反転レジスタ (CHEACCINV) のアドレスは 0xC バイト オフセットしています。 反転レジスタの任意のビットに「1」を書き込むと、対応するレジスタの対応するビットが反転します。反転レジスタからの読み出しは無視されます。
DS61119E_JP - p. 4-12 © 2012 Microchip Technology Inc.
セクション 4. プリフェッチ キャッシュ プリフェッチ
キャッシュ
4
レジスタ 4-3: CHETAG: キャッシュ タグレジスタ (1,2,3,4)
ビットレンジ
ビット31/23/15/7
ビット30/22/14/6
ビット29/21/13/5
ビット28/20/12/4
ビット27/19/11/3
ビット26/18/10/2
ビット25/17/9/1
ビット24/16/8/0
31:24R/W-0 U-0 U-0 U-0 U-0 U-0 U-0 U-0
LTAGBOOT — — — — — — —
23:16R/W-x R/W-x R/W-x R/W-x R/W-x R/W-x R/W-x R/W-x
LTAG<19:12>
15:8R/W-x R/W-x R/W-x R/W-x R/W-x R/W-x R/W-x R/W-x
LTAG<11:4>
7:0R/W-x R/W-x R/W-x R/W-x R/W-0 R/W-0 R/W-1 U-0
LTAG<3:0> LVALID LLOCK LTYPE —
凡例 :R = 読み出し可能ビット W = 書き込み可能ビット P = プログラミング可能ビット
U = 未実装ビット -n = POR 時のビット値 :(「0」、「1」、x = ビットは未知 )
bit 31 LTAGBOOT: キャッシュライン タグアドレス ブートビット
1 = このキャッシュラインは、メモリの物理アドレス 0x1D000000 領域内にある0 = このキャッシュラインは、メモリの物理アドレス 0x1FC00000 領域内にある
bit 30-24 未実装 :「0」を書き込み、読み出しは無視
bit 23-4 LTAG<19:0>: キャッシュライン タグアドレスビット
LTAG<19:0> ビットは、キャッシュのヒットを判定するために、物理アドレスと比較されます。そのアドレスレンジとカーネルおよびユーザ空間内の PFM の位置のため、LTAG PFM アドレスは仮想ア ドレス、( システム ) 物理アドレス、PFM 物理アドレスのいずれでも同じです。
bit 3 LVALID: キャッシュライン有効ビット
1 = キャッシュラインは有効、キャッシュヒットの判定時に物理アドレスと比較する0 = キャッシュラインは無効、キャッシュヒットの判定時に物理アドレスと比較しない
bit 2 LLOCK: キャッシュライン ロックビット
1 = キャッシュラインをロックする ( 置換を禁止する )0 = キャッシュラインをロックしない ( 置換を許可する )
bit 1 LTYPE: キャッシュライン タイプビット
1 = キャッシュラインは命令ワードをキャッシュする0 = キャッシュラインはデータワードをキャッシュする
bit 0 未実装 :「0」を書き込み、読み出しは無視
Note 1: このレジスタに対応するクリアレジスタ(CHETAGCLR)のアドレスは0x4バイト オフセットしています。 クリアレジスタの任意のビットに「1」を書き込むと、対応するレジスタの対応するビットがクリアされます。クリアレジスタからの読み出しは無視されます。
2: このレジスタに対応するセットレジスタ (CHETAGSET)のアドレスは0x8バイト オフセットしています。 セットレジスタの任意のビットに「1」を書き込むと、対応するレジスタの対応するビットがセットされます。セットレジスタからの読み出しは無視されます。
3: このレジスタに対応する反転レジスタ (CHETAGINV) のアドレスは 0xC バイト オフセットしています。 反転レジスタの任意のビットに「1」を書き込むと、対応するレジスタの対応するビットが反転します。反転レジスタからの読み出しは無視されます。
4: CHEIDX<3:0> ビット (CHEACC<3:0>) が指定するキャッシュラインの TAG とステータス
© 2012 Microchip Technology Inc. DS61119E_JP - p. 4-13
PIC32 ファミリ リファレンス マニュアル
レジスタ 4-4: CHEMSK: キャッシュ タグマスク レジスタ (1,2,3,4)
ビットレンジ
ビット31/23/15/7
ビット30/22/14/6
ビット29/21/13/5
ビット28/20/12/4
ビット27/19/11/3
ビット26/18/10/2
ビット25/17/9/1
ビット24/16/8/0
31:24U-0 U-0 U-0 U-0 U-0 U-0 U-0 U-0
— — — — — — — —
23:16U-0 U-0 U-0 U-0 U-0 U-0 U-0 U-0
— — — — — — — —
15:8R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0
LMASK<10:3>
7:0R/W-0 R/W-0 R/W-0 U-0 U-0 U-0 U-0 U-0
LMASK<2:0> — — — —
凡例 :
R = 読み出し可能ビット W = 書き込み可能ビット P = プログラミング可能ビット
U = 未実装ビット -n = POR 時のビット値 :(「0」、「1」、x = ビットは未知 )
bit 31-16 未実装 :「0」を書き込み、読み出しは無視
bit 15-5 LMASK<10:0>: キャッシュライン マスクビット
このビットは、CHEIDX<3:0> ビット (CHEACC<3:0>) の値が 0x0A または 0x0B の場合にのみ書き込み可能すで。1 = マスクロジックを有効にする(LTAG<19:0>ビット(CHETAG<23:4>)と物理アドレスの一致を判定
する際に、このビット位値は常に一致したと判定される )0 = マスクロジックを無効にする
bit 4-0 未実装 :「0」を書き込み、読み出しは無視
Note 1: このレジスタに対応するクリアレジスタ (CHEMSKCLR) のアドレスは 0x4 バイト オフセットしていま す。クリアレジスタの任意のビットに「1」を書き込むと、対応するレジスタの対応するビットがクリアされます。クリアレジスタからの読み出しは無視されます。
2: このレジスタに対応するセットレジスタ (CHEMSKSET) のアドレスは 0x8 バイト オフセットしていま す。セットレジスタの任意のビットに「1」を書き込むと、対応するレジスタの対応するビットがセットされます。セットレジスタからの読み出しは無視されます。
3: このレジスタに対応する反転レジスタ (CHEMSKINV) のアドレスは 0xC バイト オフセットしています。 反転レジスタの任意のビットに「1」を書き込むと、対応するレジスタの対応するビットが反転します。反転レジスタからの読み出しは無視されます。
4: CHEIDX<3:0> ビット (CHEACC<3:0>) が指定するキャッシュラインのタグマスク
DS61119E_JP - p. 4-14 © 2012 Microchip Technology Inc.
セクション 4. プリフェッチ キャッシュ プリフェッチ
キャッシュ
4
レジスタ 4-5: CHEW0: キャッシュワード 0ビットレンジ
ビット31/23/15/7
ビット30/22/14/6
ビット29/21/13/5
ビット28/20/12/4
ビット27/19/11/3
ビット26/18/10/2
ビット25/17/9/1
ビット24/16/8/0
31:24R/W-x R/W-x R/W-x R/W-x R/W-x R/W-x R/W-x R/W-x
CHEW0<31:24>
23:16R/W-x R/W-x R/W-x R/W-x R/W-x R/W-x R/W-x R/W-x
CHEW0<23:16>
15:8R/W-x R/W-x R/W-x R/W-x R/W-x R/W-x R/W-x R/W-x
CHEW0<15:8>
7:0R/W-x R/W-x R/W-x R/W-x R/W-x R/W-x R/W-x R/W-x
CHEW0<7:0>
凡例 :
R = 読み出し可能ビット W = 書き込み可能ビット P = プログラミング可能ビット
U = 未実装ビット -n = POR 時のビット値 :(「0」、「1」、x = ビットは未知 )
bit 31-0 CHEW0<31:0>: CHEIDX<3:0> ビット (CHEACC<3:0>) が指定するキャッシュラインのワード 0デバイスがコード保護されていない場合にのみ読み出し可能です。
© 2012 Microchip Technology Inc. DS61119E_JP - p. 4-15
PIC32 ファミリ リファレンス マニュアル
レジスタ 4-6: CHEW1: キャッシュワード 1ビットレンジ
ビット31/23/15/7
ビット30/22/14/6
ビット29/21/13/5
ビット28/20/12/4
ビット27/19/11/3
ビット26/18/10/2
ビット25/17/9/1
ビット24/16/8/0
31:24R/W-x R/W-x R/W-x R/W-x R/W-x R/W-x R/W-x R/W-x
CHEW1<31:24>
23:16R/W-x R/W-x R/W-x R/W-x R/W-x R/W-x R/W-x R/W-x
CHEW1<23:16>
15:8R/W-x R/W-x R/W-x R/W-x R/W-x R/W-x R/W-x R/W-x
CHEW1<15:8>
7:0R/W-x R/W-x R/W-x R/W-x R/W-x R/W-x R/W-x R/W-x
CHEW1<7:0>
凡例 :
R = 読み出し可能ビット W = 書き込み可能ビット P = プログラミング可能ビット
U = 未実装ビット -n = POR 時のビット値 :(「0」、「1」、x = ビットは未知 )
bit 31-0 CHEW1<31:0>: CHEIDX<3:1> ビット (CHEACC<3:0>) が指定するキャッシュラインのワード 1デバイスがコード保護されていない場合にのみ読み出し可能です。
DS61119E_JP - p. 4-16 © 2012 Microchip Technology Inc.
セクション 4. プリフェッチ キャッシュ プリフェッチ
キャッシュ
4
レジスタ 4-7: CHEW2: キャッシュワード 2ビットレンジ
ビット31/23/15/7
ビット30/22/14/6
ビット29/21/13/5
ビット28/20/12/4
ビット27/19/11/3
ビット26/18/10/2
ビット25/17/9/1
ビット24/16/8/0
31:24R/W-x R/W-x R/W-x R/W-x R/W-x R/W-x R/W-x R/W-x
CHEW2<31:24>
23:16R/W-x R/W-x R/W-x R/W-x R/W-x R/W-x R/W-x R/W-x
CHEW2<23:16>
15:8R/W-x R/W-x R/W-x R/W-x R/W-x R/W-x R/W-x R/W-x
CHEW2<15:8>
7:0R/W-x R/W-x R/W-x R/W-x R/W-x R/W-x R/W-x R/W-x
CHEW2<7:0>
凡例 :
R = 読み出し可能ビット W = 書き込み可能ビット P = プログラミング可能ビット
U = 未実装ビット -n = POR 時のビット値 :(「0」、「1」、x = ビットは未知 )
bit 31-0 CHEW2<31:0>: CHEIDX<3:2> ビット (CHEACC<3:0>) が指定するキャッシュラインのワード 2デバイスがコード保護されていない場合にのみ読み出し可能です。
© 2012 Microchip Technology Inc. DS61119E_JP - p. 4-17
PIC32 ファミリ リファレンス マニュアル
レジスタ 4-8: CHEW3: キャッシュワード 3(1)
ビットレンジ
ビット31/23/15/7
ビット30/22/14/6
ビット29/21/13/5
ビット28/20/12/4
ビット27/19/11/3
ビット26/18/10/2
ビット25/17/9/1
ビット24/16/8/0
31:24R/W-x R/W-x R/W-x R/W-x R/W-x R/W-x R/W-x R/W-x
CHEW3<31:24>
23:16R/W-x R/W-x R/W-x R/W-x R/W-x R/W-x R/W-x R/W-x
CHEW3<23:16>
15:8R/W-x R/W-x R/W-x R/W-x R/W-x R/W-x R/W-x R/W-x
CHEW3<15:8>
7:0R/W-x R/W-x R/W-x R/W-x R/W-x R/W-x R/W-x R/W-x
CHEW3<7:0>
凡例 :
R = 読み出し可能ビット W = 書き込み可能ビット P = プログラミング可能ビット
U = 未実装ビット -n = POR 時のビット値 :(「0」、「1」、x = ビットは未知 )
bit 31-0 CHEW3<31:0>: CHEIDX<3:3> ビット (CHEACC<3:0>) が指定するキャッシュラインのワード 3デバイスがコード保護されていない場合にのみ読み出し可能です。
Note 1: このレジスタは、キャッシュデータ配列へのウィンドウであり、デバイスがコード保護されていない場合にのみ読み出し可能です。
DS61119E_JP - p. 4-18 © 2012 Microchip Technology Inc.
セクション 4. プリフェッチ キャッシュ プリフェッチ
キャッシュ
4
レジスタ 4-9: CHELRU: キャッシュ LRU レジスタ
ビットレンジ
ビット31/23/15/7
ビット30/22/14/6
ビット29/21/13/5
ビット28/20/12/4
ビット27/19/11/3
ビット26/18/10/2
ビット25/17/9/1
ビット24/16/8/0
31:24U-0 U-0 U-0 U-0 U-0 U-0 U-0 R-0
— — — — — — — CHELRU<24>
23:16R-0 R-0 R-0 R-0 R-0 R-0 R-0 R-0
CHELRU<23:16>
15:8R-0 R-0 R-0 R-0 R-0 R-0 R-0 R-0
CHELRU<15:8>
7:0R-0 R-0 R-0 R-0 R-0 R-0 R-0 R-0
CHELRU<7:0>
凡例 :
R = 読み出し可能ビット W = 書き込み可能ビット P = プログラミング可能ビット
U = 未実装ビット -n = POR 時のビット値 :(「0」、「1」、x = ビットは未知 )
bit 31-25 未実装 :「0」を書き込み、読み出しは無視
bit 24-0 CHELRU<24:0>: キャッシュ LRU ( 最長時間不使用 ) 状態エンコードビット
このレジスタは、キャッシュの擬似 LRU の状態を示します。
© 2012 Microchip Technology Inc. DS61119E_JP - p. 4-19
PIC32 ファミリ リファレンス マニュアル
レジスタ 4-10:CHEHIT: キャッシュヒット統計値レジスタ
ビットレンジ
Bit31/23/15/7
Bit30/22/14/6
Bit29/21/13/5
Bit28/20/12/4
Bit27/19/11/3
Bit26/18/10/2
Bit25/17/9/1
Bit24/16/8/0
31:24R/W-x R/W-x R/W-x R/W-x R/W-x R/W-x R/W-x R/W-x
CHEHIT<31:24>
23:16R/W-x R/W-x R/W-x R/W-x R/W-x R/W-x R/W-x R/W-x
CHEHIT<23:16>
15:8R/W-x R/W-x R/W-x R/W-x R/W-x R/W-x R/W-x R/W-x
CHEHIT<15:8>
7:0R/W-x R/W-x R/W-x R/W-x R/W-x R/W-x R/W-x R/W-x
CHEHIT<7:0>
凡例 :
R = 読み出し可能ビット W = 書き込み可能ビット P = プログラミング可能ビット
U = 未実装ビット -n = POR 時のビット値 :(「0」、「1」、x = ビットは未知 )
bit 31-0 CHEHIT<31:0>: キャッシュヒット回数ビット
プロセッサがキャッシュ可能領域からの命令フェッチまたはロードを発行し、それがプリフェッチキャッシュにヒットするたびに、この値がインクリメントします。キャッシュ不可アクセスは、この値を変更しません。
DS61119E_JP - p. 4-20 © 2012 Microchip Technology Inc.
セクション 4. プリフェッチ キャッシュ プリフェッチ
キャッシュ
4
レジスタ 4-11: CHEMIS: キャッシュミス統計値レジスタ
ビットレンジ
ビット31/23/15/7
ビット30/22/14/6
ビット29/21/13/5
ビット28/20/12/4
ビット27/19/11/3
ビット26/18/10/2
ビット25/17/9/1
ビット24/16/8/0
31:24R/W-x R/W-x R/W-x R/W-x R/W-x R/W-x R/W-x R/W-x
CHEMIS<31:24>
23:16R/W-x R/W-x R/W-x R/W-x R/W-x R/W-x R/W-x R/W-x
CHEMIS<23:16>
15:8R/W-x R/W-x R/W-x R/W-x R/W-x R/W-x R/W-x R/W-x
CHEMIS<15:8>
7:0R/W-x R/W-x R/W-x R/W-x R/W-x R/W-x R/W-x R/W-x
CHEMIS<7:0>
凡例 :
R = 読み出し可能ビット W = 書き込み可能ビット P = プログラミング可能ビット
U = 未実装ビット -n = POR 時のビット値 :(「0」、「1」、x = ビットは未知 )
bit 31-0 CHEMIS<31:0>: キャッシュミス回数ビット
プロセッサがキャッシュ可能領域からの命令フェッチを発行し、それがプリフェッチ キャッシュにミ スヒットするたびに、この値がインクリメントします。キャッシュ不可アクセスは、この値を変更しません。
© 2012 Microchip Technology Inc. DS61119E_JP - p. 4-21
PIC32 ファミリ リファレンス マニュアル
レジスタ 4-12:CHEPFABT: プリフェッチ キャッシュ中止統計値レジスタ
ビットレンジ
ビット31/23/15/7
ビット30/22/14/6
ビット29/21/13/5
ビット28/20/12/4
ビット27/19/11/3
ビット26/18/10/2
ビット25/17/9/1
ビット24/16/8/0
31:24R/W-x R/W-x R/W-x R/W-x R/W-x R/W-x R/W-x R/W-x
CHEPFABT<31:24>
23:16R/W-x R/W-x R/W-x R/W-x R/W-x R/W-x R/W-x R/W-x
CHEPFABT<23:16>
15:8R/W-x R/W-x R/W-x R/W-x R/W-x R/W-x R/W-x R/W-x
CHEPFABT<15:8>
7:0R/W-x R/W-x R/W-x R/W-x R/W-x R/W-x R/W-x R/W-x
CHEPFABT<7:0>
凡例 :
R = 読み出し可能ビット W = 書き込み可能ビット P = プログラミング可能ビット
U = 未実装ビット -n = POR 時のビット値 :(「0」、「1」、x = ビットは未知 )
bit 31-0 CHEPFABT<31:0>: プリフェッチ中止回数ビット
不連続な命令のフェッチ、ロード、ストアによって自動的なプリフェッチ キャッシュが中止されるた びに、この値がインクリメントします。
DS61119E_JP - p. 4-22 © 2012 Microchip Technology Inc.
セクション 4. プリフェッチ キャッシュ プリフェッチ
キャッシュ
4
4.4 キャッシュの動作
PFM キャッシュおよびプリフェッチ キャッシュ モジュールは、16 ラインの完全連想キャッシュ
を実装します。各キャッシュラインは 128 ビット (16 バイト ) により構成されます。PFM キャッ
シュおよびプリフェッチ キャッシュ モジュールは、PFM から 16 バイト単位でアライメントさ
れた命令データだけを要求します。CPUが 16 バイト境界に一致しないアドレスを要求した場合、
モジュールはアドレスの bit 3-0 を切り捨てる事によりアドレスを整合させます。単純なキャッ
シュとして構成した場合、キャッシュミスが発生すると、モジュールは複数の命令を 1 キャッ
シュラインに書き込みます。モジュールは、擬似 LRU アルゴリズムを使って、これらの新しい
命令を書き込むキャッシュラインを選択します。キャッシュ コントローラは、キャッシュミスを
検出した時に、PFMWS<2:0> ビット (CHECON<2:0>) の待機ステート値を使って、PFM アクセ
スに対する待機時間を決定します。ヒットした場合、キャッシュは待機ステートなしでデータを返します。コードが完全に連続している場合、キャッシュだけのモードでは、キャッシュラインの先頭命令を CPU に返す時にだけ待機ステートが必要です。連続する 32 ビットコードの場合、
待機ステートは 4 命令毎に 1 回発生します。連続する 16 ビットコードの場合、待機ステートは
8 命令毎に 1 回だけ発生します。
4.5 キャッシュの構成
PFM の命令キャッシュおよびデータキャッシュに利用可能なキャッシュの構成は、CHECONレジスタで制御します。各キャッシュラインに割り当てる機能は、2 つのパラメータを使って
制御します。 DCSZ<1:0> ビット (CHECON<9:8>) は、プログラムデータのキャッシュに割り当てるキャッ
シュラインの数を制御します。表 4-3 に、DCSZ<1:0> ビット (CHECON<9:8>) の値とデータ
用キャッシュライン数の関係を示します。データキャッシュは、変更されない読み出し専用データ ( 例 : 定数、パラメータ、テーブルデータ等 ) をキャッシュできます。
PREFEN<1:0> ビット (CHECON<5:4>) は、予測プリフェッチを制御します。予測プリフェッ
チを有効にすると、キャッシュ コントローラは後続の 16 バイト分の命令セットを投機的に
フェッチします。
4.5.1 キャッシュラインのロック
各キャッシュラインは、内容を保持するためにロックできます。キャッシュラインをロックするには、LVALID ビット (CHETAG<3>) と LLOCK ビット (CHETAG<2>) の両方を「1」にセッ
トする必要があります。LVALID = 0 かつ LLOCK = 1 の場合、キャッシュ コントローラはプリ
ロード要求を発行します (4.5.3「プリロードの挙動」参照 )。キャッシュラインをロックする
と、一般的にはプログラムフローの性能が低下します。しかし、特定の 1 つか 2 つの関数コー
ルが処理全体の極端に大きな部分を占める場合、それらのアドレスをロックする事により性能を改善できます。
ロックするキャッシュラインの数に制限はありませんが、1 または 4 つのキャッシュラインを
ロックした時にキャッシュの動作効率が高くなります。4 ラインをロックする場合、ライン番
号を 4 で割り算した時に商が同じになるキャッシュラインをロックしてください。これにより、
1 つの LRU グループだけが完全にロックされるため、LRU アルゴリズムにとって有利となり
ます。例えば、キャッシュライン 8、9、A、B を選択すれば、それらの番号を 4 で割り算した
時の商は全て 2 となります。
表 4-3: プログラムデータ キャッシュ
DCSZ<1:0> (CHECON<9:8>) プログラムデータのキャッシュに割り当てるキャッシュライン
11 番号 12 ~ 15 のキャッシュライン (4 ライン )10 番号 14 と 15 のキャッシュライン (2 ライン )01 番号 15 のキャッシュラインのみ (1 ライン )00 なし
© 2012 Microchip Technology Inc. DS61119E_JP - p. 4-23
PIC32 ファミリ リファレンス マニュアル
4.5.2 アドレスマスク
キャッシュライン 10 と 11 では、CPU アドレスとタグアドレスの比較をマスキングできます
( 特定のビットをキャッシュヒットの判定から除外できます )。LMASK<10:0> ビット
(CHEMSK<15:5>)は、CPU内の割り込みベクタ間隔フィールドを補完するために設定します。
この機能により、ブートコードはキャッシュ内のベクタの先頭の 4 命令をロックできます。全
てのベクタが、先頭の 4 つのアドレスに同じ命令を格納している場合、LMASK<10:0> ビット
(CHEMSK<15:5>) をベクタ間隔に一致するように設定し、かつ LTAG<19:0> ビット
(CHETAG<23:4>) をベクタ ベースアドレスに一致するように設定すると、全てのベクタアド
レスはキャッシュにヒットします。プリフェッチ キャッシュを有効にした場合、キャッシュ
は待機ステートなしで応答し、要求中のベクタ用に後続の4命令のフェッチを即座に始めます。 LMASK<10:0> ビット (CHEMSK<15:5>) は、アライメントされたアドレス領域に限定されま
す。そのサイズの最大レンジは 32K バイト、最小間隔は 32 バイトです。2 つのキャッシュラ
インを組み合わせて使う事により、異なるレンジと異なる間隔に対応できます。
1 つのアドレスに対して複数のキャッシュラインがヒットするようにアドレスマスクを設定し
た場合、結果は未確定です。従って、キャッシュ可能コードに移行する前にマスキングを設定しておく事を強く推奨します。
4.5.3 プリロードの挙動
アプリケーション コードを使ってキャッシュ コントローラにキャッシュラインのプリロード
を実行させる事により、キャッシュラインに PFM から命令またはデータを読み込んだ状態で
ロックできます。プリロード機能では、CHEIDX<3:0> ビット (CHEACC<3:0>) を使ってプリ
ロード先のキャッシュラインを選択します。 CHETAGレジスタへの書き込みを有効にするため
に、CHEWEN ビット (CHEACC<31>) を「1」にセットする必要があります。
LVALID ビット (CHETAG<3>) に「0」を書き込み、LLOCK ビット (CHETAG<2>) に「1」を書
き込む事により、キャッシュ コントローラに対するプリロード要求を発行します。この書き込
み後のサイクルで、コントローラは要求に対する肯定応答を返し、可能であれば、未完了のPFM アクセスを停止し、キャッシュまたは PFM からの全ての CPU ロードをストールします。 コントローラは、以前のトランザクションを終了またはストールした後に、PFM 読み出しを開
始し、LTAG<19:0> ビット (CHETAG<23:4>) 内のアドレスを使って要求された命令またはデー
タをフェッチします。PFMWS<2:0> ビット (CHECON<2:0>) で定義されている数の待機ステー
トの後に、コントローラは PFM から読み出した値を使ってデータ配列を更新します。更新す
る際に、コントローラは LVALID ビット (CHETAG<3>) を「1」にセットします。キャッシュラ
インの LRU の状態は影響を受けません。
コントローラがキャッシュを更新し終えた後に、CPU からの要求が完了可能となります。この
要求がキャッシュにヒットしない場合、コントローラは PFM 読み出しを開始しますが、これ
には完全な PFM アクセス時間を要します。
4.5.4 バイパスの挙動
キャッシュ コヒーレンシ属性がキャッシュ不可アドレスを示すプロセッサ アクセスはキャッ
シュをバイパスします。バイパスでは、モジュールは命令毎に PFM にアクセスし、これには
PFMWS<2:0> ビット (CHECON<2:0>) で定義されている PFM アクセス時間を必要とします。
DS61119E_JP - p. 4-24 © 2012 Microchip Technology Inc.
セクション 4. プリフェッチ キャッシュ プリフェッチ
キャッシュ
4
4.5.5 予測プリフェッチ キャッシュの挙動
キャッシュを、キャッシュ可能アドレスに対する予測プリフェッチ キャッシュ向けに構成した
場合、プリフェッチ キャッシュ モジュールは次のラインアドレスを予測し、これをキャッシュ
の擬似 LRU ラインに返します。プリフェッチ キャッシュ機能を有効にした場合、最初の CPU 命令フェッチに基づいて予測が始まります。最初のラインをキャッシュに格納した時、モジュールは単純に次の 16 バイト境界アドレスへインクリメントし、PFM アクセスを開始します。連
続したコード ( ジャンプのないコード ) を実行している場合、PFM は、前のラインから全ての
命令を実行できるタイミングで、またはそれ以前に、次の命令セットをプリフェッチ キャッ
シュ バッファに返します。
予測PFMアクセス中の任意の時点で新しいCPU アドレスが予測したアドレスに一致しなかっ
た場合、PFM アクセスは正しいアドレスへ変更されます。このような挙動が発生しても、CPUアクセス時間が予測なしの場合よりも長くなる事はありません。 アクセスがプリフェッチ キャッシュ バッファにキャッシュヒットしなかった場合、その命令
はアドレスタグと一緒に擬似 LRU ラインに格納されます。このラインの擬似 LRU 値は「最短
時間不使用」に設定され、他のラインの値はこれに準じて更新されます。アクセスがキャッシュにもプリフェッチ キャッシュ バッファにもヒットしなかった場合、そのアクセスは PFM に対
して行われ、返された命令は擬似 LRU ラインに格納されます。 キャッシュを、キャッシュ不可アドレスに対する予測プリフェッチ キャッシュ向けに構成した
場合、コントローラはプリフェッチ キャッシュ バッファだけを使います。LRU キャッシュラ
インはヒットしてもしなくても更新されないため、キャッシュはそのまま保持されます。コードが連続している場合に、予測プリフェッチ キャッシュをキャッシュ不可アドレスに対して有
効にすると、CPU は待機ステートなしで命令をフェッチできます。
PFM に対するアクセスが「待機ステートなし」に設定されている場合、キャッシュ不可アドレ
スに予測プリフェッチを適用しても効果はありません。コントローラは、PFM の出力でプリ
フェッチした命令を最大 3 クロックサイクル (CPU がバッファからフェッチしている間 ) 保持
します。このため、「待機ステートなし」の PFM アクセスに比べて何の利点も得られないばか
りか、消費電力が増えてしまいます。
データの予測プリフェッチはサポートしていません。しかし、予測命令フェッチの実行中にデータアクセスが発生すると、キャッシュ コントローラは命令フェッチのための PFM アクセスを
停止し、PFM からデータロードを開始します。停止した予測プリフェッチ キャッシュは再開
しませんが、次の命令フェッチを待機します。これが発生した時、ヒットしなければバッファに書き込まれ、ヒットした場合はプリフェッチ キャッシュが始まります。
4.5.6 キャッシュ置換の優先度
キャッシュ コントローラは、キャッシュミスによって発生するキャッシュラインの書き込み
に、擬似 LRU 置換アルゴリズムを使います。このアルゴリズムは、不使用時間の長い側の 1/4のキャッシュラインの置換を許可します。キャッシュラインのロックを有効にした場合、およびタイプを「データ」に設定した場合、そのキャッシュラインは置換から除外されますが、擬似 LRU の値には影響しません。
4.6 コヒーレンシのサポート
PFM のプログラミング中にキャッシュから実行する事はできません。プログラミング シーケ
ンス中に、PFM コントローラはキャッシュをストールします。このため、プログラミング シー
ケンスを開始するユーザコードをキャッシュ可能アドレス領域に格納すべきではありません。
プログラミング動作中に、キャッシュラインの全てまたは一部を無効にする事により、プリフェッチ キャッシュがフラッシュされます。
CHECOH ビット (CHECON<16>) がセットされている合、PFM 書き込み動作中に、全ての
キャッシュラインは無効にされロックは解除されます。全てのキャッシュラインのキャッシュタグとマスクもクリアされます。
CHECOH ビットがセットされていない場合、ロックされていないキャッシュラインだけが無
効にされます。ロックされているキャッシュラインは保持されます。
Note: キャッシュラインを無効にする前に、ユーザ アプリケーションはキャッシュ不可 領域へ切り換える必要があります。
© 2012 Microchip Technology Inc. DS61119E_JP - p. 4-25
PIC32 ファミリ リファレンス マニュアル
4.7 リセットの影響
4.7.1 リセット時 • 全てのキャッシュラインは無効になる
• 全てのキャッシュラインは命令タイプに戻る
• 全てのキャッシュラインのロックは解除される
• LRU 順位はライン 0 を最長時間不使用としてライン番号順に設定される
• 全てのマスクビットはクリアされる
• 全てのレジスタはリセット状態に戻る
4.7.2 リセット後 • モジュールは CHECON レジスタの値に従って動作する
• キャッシュはコアのキャッシュ コヒーレンシ属性に従う
4.8 省電力モード時の動作
4.8.1 スリープモード
デバイスがスリープモードに移行すると、プリフェッチ キャッシュは無効になり、低消費電力
状態に置かれます。この状態では、プリフェッチ キャッシュ モジュール内のクロック動作は
完全に停止します。
4.8.2 アイドルモード
デバイスがアイドルモードに移行すると、CPU はコード実行を停止しますが、プリフェッチ
キャッシュ クロック源は動作を続けます。プリフェッチ キャッシュ モジュールは、未完了の
プリフェッチ キャッシュを全て完了した後に、自動クロックゲートを介してモジュールのク
ロックを停止します。
4.8.3 デバッグモード
プリフェッチ キャッシュの挙動は、デバッグモードでも変わりません。ソフトウェア ブレー
クポイントを使う場合、デバッグモードで実行中にキャッシュがコヒーレントであり続けるように配慮する必要があります。デバッガがソフトウェア ブレーク命令をキャッシュに格納した
場合、制御をアプリケーションに戻す前に、そのキャッシュラインをロックする必要があります。ロックしたソフトウェア ブレークポイントを削除する場合、その命令を実行する際に PFM からリロードさせるために、そのキャッシュラインのロックを解除してから無効にしておく必要があります。
4.9 設計のヒント
待機ステートを必要としない低速のクロック周波数で動作している場合でも、キャッシュ機能は省電力化に有効です。なぜならば、PFM にアクセスするよりも、キャッシュにアクセスした
方が少ない消費電力で済むからです。
DS61119E_JP - p. 4-26 © 2012 Microchip Technology Inc.
セクション 4. プリフェッチ キャッシュ プリフェッチ
キャッシュ
4
4.10 関連アプリケーション ノート
本セクションに関連するアプリケーション ノートの一覧を下に記載します。これらのアプリ
ケーション ノートは PIC32 デバイスファミリ向けではありません。ただし概念は共通してお
り、変更が必要であったり制限事項が存在するものの利用が可能です。プリフェッチ キャッ
シュ モジュールに関連する最新のアプリケーション ノートは以下の通りです。
タイトル アプリケーション ノート番号
現在、関連するアプリケーション ノートはありません。 N/A
Note: PIC32 ファミリ関連のアプリケーション ノートとサンプルコードはマイクロチッ プ社のウェブサイト (www.microchip.com) でご覧頂けます。
© 2012 Microchip Technology Inc. DS61119E_JP - p. 4-27
PIC32 ファミリ リファレンス マニュアル
4.11 改訂履歴
リビジョン A (2007 年 10 月 )本書の初版
リビジョン B (2007 年 10 月 )機密扱いのステータスを解除して内容を更新
リビジョン C (2008 年 4 月 )ステータスを「Preliminary」に変更、「U-0」を「r-x」に変更
リビジョン D (2008 年 6 月 )予約済みビットの「Maintain as」を「Write」に変更
リビジョン E (2011 年 2 月 )このリビジョンでの変更内容は以下の通りです。
• 本書のヘッダを「PIC32MX ファミリ リファレンス マニュアル」から「PIC32 ファミリ リ ファレンス マニュアル」に変更
• 本書の表題を「プリフェッチ キャッシュ モジュール」から「プリフェッチ キャッシュ」に変更
•「PIC32MX」を全て「PIC32」に変更
• 4.3「制御レジスタ」内の、プリフェッチ キャッシュ モジュールの実装の有無に関する Note を更新
• キャッシュ配列表 ( 表 4-1 参照 ) を更新
• レジスタ 4-1 内の、PREFEN<1:0> ビットの名称を「予測プリフェッチ キャッシュ イネーブ ルビット」から「予測プリフェッチ イネーブルビット」に変更
• レジスタ 4-12 内の、ビット名「PFABT」を「CHEPFABT」に変更
• 下記のクリア、セット、反転レジスタに関する説明を削除 :- CHECONCLR: CHECON クリアレジスタ
- CHECONSET: CHECON セットレジスタ
- CHECONINV: CHECON 反転レジスタ
- CHEACCCLR: CHEACC クリアレジスタ
- CHEACCSET: CHEACC セットレジスタ
- CHEACCINV: CHEACC 反転レジスタ
- CHETAGCLR: CHETAG クリアレジスタ
- CHETAGSET: CHETAG セットレジスタ
- CHETAGINV: CHETAG 反転レジスタ
- CHEMSKCLR: CHEMSK クリアレジスタ
- CHEMSKSET: CHEMSK セットレジスタ
- CHEMSKINV: CHEMSK 反転レジスタ
• レジスタ 4-1 ~レジスタ 4-4 にセット、クリア、反転レジスタに関する説明を追加
•「r-0」と「r-x」を全て「U-0」に変更し、対応するビットの説明を更新
• 4.6「コヒーレンシのサポート」に Note を追加
• 4.8「省電力モード時の動作」から、特定モジュールの省電力モードとデバイスの省電力モードの違いについて記載した Note を削除
• 文章および体裁の変更等、本書全体の細部を修正
DS61119E_JP - p. 4-28 © 2012 Microchip Technology Inc.
© 2012 Microchip Technology Inc. DS61119E_JP - p. 4-29
本書に記載されているデバイス アプリケーション等に関する
情報は、ユーザの便宜のためにのみ提供されているものであ
り、更新によって無効とされる事があります。お客様のアプ
リケーションが仕様を満たす事を保証する責任は、お客様に
あります。マイクロチップ社は、明示的、暗黙的、書面、口
頭、法定のいずれであるかを問わず、本書に記載されている
情報に関して、状態、品質、性能、商品性、特定目的への適
合性をはじめとする、いかなる類の表明も保証も行いません。
マイクロチップ社は、本書の情報およびその使用に起因する
一切の責任を否認します。マイクロチップ社の明示的な書面
による承認なしに、生命維持装置あるいは生命安全用途にマ
イクロチップ社の製品を使用する事は全て購入者のリスクと
し、また購入者はこれによって発生したあらゆる損害、クレー
ム、訴訟、費用に関して、マイクロチップ社は擁護され、免
責され、損害をうけない事に同意するものとします。暗黙的
あるいは明示的を問わず、マイクロチップ社が知的財産権を
保有しているライセンスは一切譲渡されません。
商標
マイクロチップ社の名称と Microchip ロゴ、dsPIC、KEELOQ、KEELOQ ロゴ、MPLAB、PIC、PICmicro、PICSTART、rfPIC、
UNI/O は、米国およびその他の国におけるマイクロチップ・
テクノロジー社の登録商標です。
FilterLab、Hampshire、HI-TECH C、Linear Active Thermistor、MXDEV、MXLAB、SEEVAL、Embedded Control SolutionsCompany は、米国におけるマイクロチップ・テクノロジー
社の登録商標です。
Analog-for-the-Digital Age,Application Maestro、BodyCom、
chipKIT、chipKIT logo、CodeGuard、dsPICDEM、
dsP ICD EM. ne t、d s P IC wo rk s、dsSPE AK、E CAN、
ECONOMONITOR、FanSense、HI-TIDE、In-Circuit SerialProgramming、ICSP、Mindi、MiWi、MPASM、MPLAB Certifiedrロゴ、MPLIB、MPLINK、mTouch、Omniscient CodeGeneration、PICC、PICC-18、PICDEM、PICDEM.net、PICkit、PICtail、REAL ICE、rfLAB、Select Mode、Total Endurance、TSHARC、UniWinDriver、WiperLock、ZENA は、米国およ
びその他の国におけるマイクロチップ・テクノロジー社の登
録商標です。
SQTP は、米国におけるマイクロチップ・テクノロジー社の
サービスマークです。
その他、本書に記載されている商標は各社に帰属します。
©2012, Microchip Technology Incorporated, Printed in theU.S.A., All Rights Reserved.
ISBN: 978-1-62076-176-2
マイクロチップ社製デバイスのコード保護機能に関して次の点にご注意ください。
• マイクロチップ社製品は、該当するマイクロチップ社データシートに記載の仕様を満たしています。
• マイクロチップ社では、通常の条件ならびに仕様に従って使用した場合、マイクロチップ社製品のセキュリティ レベルは、現
在市場に流通している同種製品の中でも最も高度であると考えています。
• しかし、コード保護機能を解除するための不正かつ違法な方法が存在する事もまた事実です。弊社の理解ではこうした手法は、
マイクロチップ社データシートにある動作仕様書以外の方法でマイクロチップ社製品を使用する事になります。このような行
為は知的所有権の侵害に該当する可能性が非常に高いと言えます。
• マイクロチップ社は、コードの保全性に懸念を抱くお客様と連携し、対応策に取り組んでいきます。
• マイクロチップ社を含む全ての半導体メーカーで、自社のコードのセキュリティを完全に保証できる企業はありません。コー
ド保護機能とは、マイクロチップ社が製品を「解読不能」として保証するものではありません。
コード保護機能は常に進歩しています。マイクロチップ社では、常に製品のコード保護機能の改善に取り組んでいます。マイクロ
チップ社のコード保護機能の侵害は、デジタル ミレニアム著作権法に違反します。そのような行為によってソフトウェアまたはそ
の他の著作物に不正なアクセスを受けた場合は、デジタル ミレニアム著作権法の定めるところにより損害賠償訴訟を起こす権利が
あります。
マイクロチップ社では、Chandler および Tempe ( アリゾナ州 )、Gresham ( オレゴン州 ) の本部、設計部およびウェハー製造工場そしてカリフォルニア州とインドのデザインセンターが ISO/TS-16949:2009 認証を取得しています。マイクロチップ社の品質システム プロセスおよび手順は、PIC® MCU および dsPIC® DSC、KEELOQ®
コード ホッピング デバイス、シリアル EEPROM、マイクロペリフェラル、不揮発性メモリ、アナログ製品に採用されています。さらに、開発システムの設計と製造に関するマイクロチップ社の品質システムは ISO 9001:2000 認証を取得しています。
QUALITY MANAGEMENT SYSTEM CERTIFIED BY DNV
== ISO/TS 16949 ==
DS61119E_JP - p. 4-30 © 2012 Microchip Technology Inc.
北米本社2355 West Chandler Blvd.Chandler, AZ 85224-6199Tel:480-792-7200 Fax:480-792-7277技術サポート : http://www.microchip.com/supportURL: www.microchip.com
アトランタDuluth, GA Tel:678-957-9614 Fax:678-957-1455
ボストンWestborough, MA Tel:774-760-0087 Fax:774-760-0088
シカゴItasca, IL Tel:630-285-0071 Fax:630-285-0075
クリーブランドIndependence, OH Tel:216-447-0464 Fax:216-447-0643ダラスAddison, TX Tel:972-818-7423 Fax:972-818-2924
デトロイトFarmington Hills, MI Tel:248-538-2250Fax:248-538-2260
インディアナポリスNoblesville, IN Tel:317-773-8323Fax:317-773-5453
ロサンゼルスMission Viejo, CA Tel:949-462-9523 Fax:949-462-9608
サンタクララSanta Clara, CA Tel:408-961-6444Fax:408-961-6445
トロントMississauga, Ontario, CanadaTel:905-673-0699 Fax:905-673-6509
アジア / 太平洋アジア太平洋支社Suites 3707-14, 37th FloorTower 6, The GatewayHarbour City, KowloonHong KongTel:852-2401-1200Fax:852-2401-3431オーストラリア - シドニーTel:61-2-9868-6733Fax:61-2-9868-6755
中国 - 北京Tel:86-10-8569-7000 Fax:86-10-8528-2104
中国 - 成都Tel:86-28-8665-5511Fax:86-28-8665-7889
中国 - 重慶Tel:86-23-8980-9588Fax:86-23-8980-9500
中国 - 杭州Tel:86-571-2819-3187 Fax:86-571-2819-3189
中国 - 香港 SARTel:852-2401-1200 Fax:852-2401-3431
中国 - 南京Tel:86-25-8473-2460Fax:86-25-8473-2470
中国 - 青島Tel:86-532-8502-7355Fax:86-532-8502-7205
中国 - 上海Tel:86-21-5407-5533 Fax:86-21-5407-5066
中国 - 瀋陽Tel:86-24-2334-2829Fax:86-24-2334-2393
中国 - 深圳Tel:86-755-8203-2660 Fax:86-755-8203-1760
中国 - 武漢Tel:86-27-5980-5300Fax:86-27-5980-5118
中国 - 西安Tel:86-29-8833-7252Fax:86-29-8833-7256
中国 - 厦門Tel:86-592-2388138 Fax:86-592-2388130
中国 - 珠海Tel:86-756-3210040 Fax:86-756-3210049
アジア / 太平洋
インド - バンガロールTel:91-80-3090-4444 Fax:91-80-3090-4123
インド - ニューデリーTel:91-11-4160-8631Fax:91-11-4160-8632
インド - プネTel:91-20-2566-1512Fax:91-20-2566-1513
日本 - 大阪Tel:81-66-152-7160 Fax:81-66-152-9310
日本 - 横浜Tel:81-45-471- 6166 Fax:81-45-471-6122
韓国 - 大邱Tel:82-53-744-4301Fax:82-53-744-4302
韓国 - ソウルTel:82-2-554-7200Fax:82-2-558-5932 または 82-2-558-5934
マレーシア - クアラルンプールTel:60-3-6201-9857Fax:60-3-6201-9859
マレーシア - ペナンTel:60-4-227-8870Fax:60-4-227-4068
フィリピン - マニラTel:63-2-634-9065Fax:63-2-634-9069
シンガポールTel:65-6334-8870Fax:65-6334-8850
台湾 - 新竹Tel:886-3-5778-366Fax:886-3-5770-955
台湾 - 高雄Tel:886-7-536-4818Fax:886-7-330-9305
台湾 - 台北Tel:886-2-2500-6610 Fax:886-2-2508-0102
タイ - バンコクTel:66-2-694-1351Fax:66-2-694-1350
ヨーロッパ
オーストリア - ヴェルスTel:43-7242-2244-39Fax:43-7242-2244-393デンマーク - コペンハーゲンTel:45-4450-2828 Fax:45-4485-2829
フランス - パリTel:33-1-69-53-63-20 Fax:33-1-69-30-90-79
ドイツ - ミュンヘンTel:49-89-627-144-0 Fax:49-89-627-144-44
イタリア - ミラノ Tel:39-0331-742611 Fax:39-0331-466781
オランダ - ドリューネンTel:31-416-690399 Fax:31-416-690340
スペイン - マドリッドTel:34-91-708-08-90Fax:34-91-708-08-91
イギリス - ウォーキンガムTel:44-118-921-5869Fax:44-118-921-5820
各国の営業所とサービス
11/29/11