24531904_j

24531904_j 24531904_j

16.02.2013 Aufrufe

sync ─ メモリ同期化 (Memory Synchronization) 書式 : (qp) sync.i M24 説明 : sync.i 命令に よ っ て、 ロ ー カ ル ・ プ ロ セ ッ サか ら 以前に発行さ れたキ ャ ッ シ ュ のフ ラ ッ シュ (fc、 fci) 操作がロ ー カル ・ デー タ ・ メ モ リ の参照で検出可能にな っ た時点に、 先行 の fc 操作がロ ー カル ・ プ ロセ ッ サの命令フ ェ ッ チ ・ ス ト リ ー ムか ら も 検出される こ と が 保証 される。 さ ら に、 fc、 fci 操作が事前に起動 されている と 、 それら の操作が リ モー ト・プロセッサ上のデータ・メモリの参照で検出されるようになった時点に、 リモート・ プ ロセ ッ サ上の命令メモ リ 参照で も 検出 される こ と が保証 される。 sync.i は、 別のプロ セッサから観察される よ う に、 すべてのキャ ッ シュ ・ フラ ッ シュ操作に対して順序付け される。 sync.i とそれに先行する fc は、 別々の命令グループになければならない。 セ マンテ ィ ッ クス上の必要がある場合、 sync.i により fc、 fci が他のプロセ ッ サ上のデー タ ・ ス ト リ ー ムか ら検出で き る よ う に適切に強制す るためには、 プ ラ グ ラ マは明示的に 順序づけ されたデー タ参照 (acquire ( 取得 )、 release ( 解放 )、 fence ( フェンス) のいずれか のタイプ ) を挿入しなければならない。 sync.i は、 ロー カル ・ プロセ ッサおよび リ モー ト ・ プロセッサ上の命令キ ャ ッ シ ュ と デ ー タ ・ キ ャ ッ シ ュ と の間の順序付け関係を維持する場合に使用 さ れる。 命令を シ リ ア ル化す る操作を使用して、 ロ ー カ ル ・ プ ロ セ ッ サで sync.i に よ っ て起動された同期化 操作がプ ロ グ ラ ム実行中の特定の時点で観察 さ れていた こ と を確認で き る。 自己修正コ ー ド ( ローカル・プロセッサ) の例 : 3:232 第 3 巻 : 命令リファレンス sync st [L1] = data //store into local instruction stream fc L1 //flush stale datum from instruction/data cache ;; //require instruction boundary between fc and sync.i sync.i //ensure local and remote data/inst caches //are synchronized ;; srlz.i //ensure sync has been observed by the local processor, ;; //ensure subsequent instructions observe //modified memory L1: target //instruction modified 操作 : if (PR[qp]) { instruction_synchronize(); } 割り込み : なし

tak tak ─ トランスレーション・アクセス・キー (Translation Access Key) 書式 : (qp) takr 1 = r 3 M46 説明 : こ の命令は、 指定 さ れた仮想ア ド レ スの保護キ ー を取得し、 GR r1 に格納する。 PSR.dt が 1 の場合は、 DTLB および VHPT 内で、 GR r3 に指定される仮想ア ド レス と、 GR r3 のビ ッ ト {63:61} でインデッ クスが付けられたリ ージ ョ ン ・ レジスタが検索され る。 一致する現在の変換エン ト リ が見つか った場合は、 その変換エン ト リ の保護キーが GR r1 に格納される。 一致する現在の変換エン ト リ が見つか ら ない場合や、 実装されて いない仮想アド レスが GR r3 で指定された場合は、 1 の値が返される。 PSR.dt が 0 の場合は、 VHPT ウォーカがディスエーブルにされるため、 DTLB だけが検 索される。 DTLB 内で一致する現在の変換エン ト リ が見つか ら ない場合は、 1 の値が返 される。 NaTPage 属性を持つ変換エン ト リ も 同じ よ う に扱われ、 そのエン ト リ のキ ー ・ フ ィ ー ル ドが返される。 こ の命令は、 最高の特権レ ベル以外では実行で き ない。 操作 : if (PR[qp]) { itype = NON_ACCESS|TAK; check_target_register(r 1 ); } if (PSR.cpl != 0) privileged_operation_fault(itype); if (GR[r 3].nat) register_nat_consumption_fault(itype); GR[r1] = tlb_access_key(GR[r3], itype); GR[r 1 ].nat = 0; 割り込み : 無効操作フ ォ ル ト レ ジ ス タ NaT 参照フ ォ ル ト 特権操作フ ォ ル ト 第 3 巻 : 命令リファレンス 3:233

tak<br />

tak ─ トランスレーション・アクセス・キー (Translation Access Key)<br />

書式 : (qp) takr 1 = r 3 M46<br />

説明 : こ の命令は、 指定 さ れた仮想ア ド レ スの保護キ ー を取得し、 GR r1 に格納する。<br />

PSR.dt が 1 の場合は、 DTLB および VHPT 内で、 GR r3 に指定される仮想ア ド レス と、<br />

GR r3 のビ ッ ト {63:61} でインデッ クスが付けられたリ ージ ョ ン ・ レジスタが検索され<br />

る。 一致する現在の変換エン ト リ が見つか った場合は、 その変換エン ト リ の保護キーが<br />

GR r1 に格納される。 一致する現在の変換エン ト リ が見つか ら ない場合や、 実装されて<br />

いない仮想アド レスが GR r3 で指定された場合は、 1 の値が返される。<br />

PSR.dt が 0 の場合は、 VHPT ウォーカがディスエーブルにされるため、 DTLB だけが検<br />

索される。 DTLB 内で一致する現在の変換エン ト リ が見つか ら ない場合は、 1 の値が返<br />

される。<br />

NaTPage 属性を持つ変換エン ト リ も 同じ よ う に扱われ、 そのエン ト リ のキ ー ・ フ ィ ー ル<br />

ドが返される。<br />

こ の命令は、 最高の特権レ ベル以外では実行で き ない。<br />

操作 : if (PR[qp]) {<br />

itype = NON_ACCESS|TAK;<br />

check_target_register(r 1 );<br />

}<br />

if (PSR.cpl != 0)<br />

privileged_operation_fault(itype);<br />

if (GR[r 3].nat)<br />

register_nat_consumption_fault(itype);<br />

GR[r1] = tlb_access_key(GR[r3], itype);<br />

GR[r 1 ].nat = 0;<br />

割り込み : 無効操作フ ォ ル ト レ ジ ス タ NaT 参照フ ォ ル ト<br />

特権操作フ ォ ル ト<br />

第 3 巻 : 命令リファレンス 3:233

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!