24531904_j
24531904_j 24531904_j
表 2-50. ストアのヒント 操作 : if (PR[qp]) { size = spill_form ? 8 : (sixteen_byte_form ? 16 : sz); itype = WRITE; if (size == 16) itype |= UNCACHE_OPT; otype = (sttype == ‘rel’) ? RELEASE : UNORDERED; } sthint コンプリータ 意味 none 時間的局所性、レベル 1 nta 非時間的局所性、全レベル if (imm_base_update_form) check_target_register(r 3); if (GR[r 3 ].nat || ((sixteen_byte_form || normal_form) && GR[r 2 ].nat)) register_nat_consumption_fault(WRITE); paddr = tlb_translate(GR[r 3 ], size, itype, PSR.cpl, &mattr, &tmp_unused); if (spill_form && GR[r 2].nat) { natd_gr_write(GR[r 2 ], paddr, size, UM.be, mattr, otype, sthint); } else { if (sixteen_byte_form) mem_write16(GR[r 2 ], AR[CSD], paddr, UM.be, mattr, otype, sthint); else mem_write(GR[r 2 ], paddr, size, UM.be, mattr, otype, sthint); } if (spill_form) { bit_pos = GR[r 3 ]{8:3}; AR[UNAT]{bit_pos} = GR[r 2 ].nat; } alat_inval_multiple_entries(paddr, size); if (imm_base_update_form) { GR[r 3 ] = GR[r 3 ] + sign_ext(imm 9 , 9); GR[r 3 ].nat = 0; mem_implicit_prefetch(GR[r 3 ], sthint, WRITE); } 割り込み : 無効操作フ ォ ル ト デー タ ・ キ ー ・ ミ ス ・ フ ォ ル ト レジスタ NaT 参照フ ォ ル ト デー タ ・ キ ー許可フ ォ ル ト 実装 さ れていないデ ー タ ・ ア ド レ ス ・ フ ォ ル ト デー タ ・ ア ク セス権フ ォ ル ト データがネス ト された TLB フォルト データ・ダーティ・ビット ・フォルト 別のデー タ TLB フォルト データ・アクセス・ビット ・フォルト VHPT データ ・ フォル ト データ ・ デバッグ ・ フォル ト データ TLB フ ォル ト アライ メン ト の合っていないデー タ参照 データ ・ページ不在フォルト フォルト データ Nat ページ参照フ ォル ト サポー ト されていないデー タ参照 フォルト 3:226 第 3 巻 : 命令リファレンス st
stf stf ─ 浮動小数点ストア (Floating-point Store) 書式 : (qp) stffsz.sthint [r 3 ] = f 2 normal_form, no_base_update_form M9 (qp) stffsz.sthint [r 3 ] = f 2 , imm 9 normal_form, imm_base_update_form M10 (qp) stf8.sthint [r 3 ] = f 2 integer_form, no_base_update_form M9 (qp) stf8.sthint [r 3 ] = f 2 , imm 9 integer_form, imm_base_update_form M10 (qp) stf.spill.sthint [r 3 ] = f 2 spill_form, no_base_update_form M9 (qp) stf.spill.sthint [r 3 ] = f 2 , imm 9 spill_form, imm_base_update_form M10 説明 : FR f2 から fsz バイ ト の値が取り出され、 GR r3 の値で指定されるアド レスから始まるメモ リ位置に書き込まれる。 normal_form では、 FR f2 の値が メ モ り 形式に変換 さ れてか ら ス トアされる。 integer_form では、 FR f2 の仮数がス ト アされる。 fsz コンプリータの値は 3:139 ページの表 2-35 に示している。 normal_form または integer_from では、 GR r3 に対 応する NaT ビットが1 か、 あるいは FR f2 の内容が NaTVal である場合は、 レジスタ NaT 参照 (Register NaT Consumption) フ ォ ル ト が発生する。 浮動小数点レジス タ形式か らの変 換の詳細は、 第 1 巻、 第 1 部の 5.1 節 「データ型および形式」 を参照のこ と。 spill_form では、 FR f2 から 16 バイ ト の値が取り出されて、 変換されないでストアされ る。 こ の命令は レ ジ ス タ を ス ピルす る場合に使用 さ れる。 詳細は、 第 1 巻、 第 1 部の 4.4.4 項 「コン ト ロール ・ スペキュレーシ ョ ン」 を参照のこ と。 imm_base_update 形式では、 GR r3 の値が符号付き即値 (imm9 ) に加算 さ れ、 結果が GR r3 に戻される。 こ のベース ・ レ ジス タの更新はス ト アの後で行われ、 ス ト ア ・ ア ド レスに は影響しない。 物理メ モ リ ・ ア ド レ ス と ア ク セス ・ サイ ズを使用して ALAT が照会され、 すべてのオ ー バラ ップ ・ エン ト リが無効にされる。 sthint コ ン プ リ ー タ の値で メ モ リ ・ ア ク セスの局所性を指定す る。 stint コンプリータの値 は、 3:226 ページの表 2-50 に示している。 base_update 形式には、 プ リ フ ェ ッ チ ・ ヒ ン ト が暗黙的に含まれている。 ベー スの更新後の GR r3 の値に よ っ て指定されるア ド レスが、 指定 さ れたキ ャ ッ シ ュ ・ ラ イ ン をプ リ フ ェ ッ チす る よ う に指示する ヒ ン ト と して機能す る。 このプ リ フ ェ ッチは、 sthint で指定される局所性ヒン ト を使用する。 第 1 巻、 第 1 部 の 4.4.6 項 「メ モ リ 階層の制御 と 整合性」 を参照のこ と。 ライ トバック ・ ポリシーを持つキャッシュ可能ページでも NaTPage でもないページを参 照する stfe(10 バイ ト ) 命令が、 ハー ド ウ ェ ア上でサポ ー ト さ れる か ど う かは、 プ ロ セッサによって異なる。 このようなstfe アクセスをサポー トしないプロセッサ・モデ ル上で、 サポ ー ト さ れていない参照を行 う と 、 サポ ー ト さ れないデ ー タ参照フ ォ ル ト が 発生す る。 操作 : if (PR[qp]) { if (imm_base_update_form) check_target_register(r 3); if (tmp_isrcode = fp_reg_disabled(f 2 , 0, 0, 0)) disabled_fp_register_fault(tmp_isrcode, WRITE); if (GR[r 3 ].nat || (!spill_form && (FR[f 2 ] == NATVAL))) register_nat_consumption_fault(WRITE); size = spill_form ? 16 : (integer_form ? 8 : fsz); itype = WRITE; if (size == 10) itype |= UNCACHE_OPT; paddr = tlb_translate(GR[r 3 ], size, itype, PSR.cpl, &mattr, &tmp_unused); val = fp_fr_to_mem_format(FR[f 2], size, integer_form); mem_write(val, paddr, size, UM.be, mattr, UNORDERED, sthint); 第 3 巻 : 命令リファレンス 3:227
- Seite 187 und 188: pack pack ─ パック (Pack) 書
- Seite 189 und 190: padd padd ─ 並列加算 (Paralle
- Seite 191 und 192: padd } 割り込み : 無効操作
- Seite 193 und 194: pavg 図 2-31. 並列平均での
- Seite 195 und 196: pavgsub pavgsub ─ 並列平均減
- Seite 197 und 198: pcmp pcmp ─ 並列比較 (Paralle
- Seite 199 und 200: pmax pmax ─ 並列最大値 (Para
- Seite 201 und 202: pmpy pmpy ─ 並列乗算 (Paralle
- Seite 203 und 204: pmpyshr 操作 : if (PR[qp]) { chec
- Seite 205 und 206: probe probe ─ アクセスのプ
- Seite 207 und 208: psad psad ─ 並列絶対差累計
- Seite 209 und 210: pshladd pshladd ─ 並列左シフ
- Seite 211 und 212: pshr } 割り込み : 無効操作
- Seite 213 und 214: psub psub ─ 並列減算 (Paralle
- Seite 215 und 216: psub } 割り込み : 無効操作
- Seite 217 und 218: ptc.g, ptc.ga ptc.g, ptc.ga ─ グ
- Seite 219 und 220: ptc.l ptc.l ─ ローカル・ト
- Seite 221 und 222: ptr 割り込み : 特権操作フ
- Seite 223 und 224: fi この命令を発行する前
- Seite 225 und 226: sm rsm ─ システム・マスク
- Seite 227 und 228: um rum ─ ユーザ・マスクの
- Seite 229 und 230: setf 操作 : if (PR[qp]) { fp_chec
- Seite 231 und 232: shladd shladd ─ 左シフトお
- Seite 233 und 234: shr shr ─ 右シフト (Shift Rig
- Seite 235 und 236: srlz srlz ─ シリアル化 (Seri
- Seite 237: st st ─ ストア (Store) 書式
- Seite 241 und 242: sub sub ─ 減算 (Subtract) 書
- Seite 243 und 244: sxt sxt ─ 符号拡張 (Sign Exte
- Seite 245 und 246: tak tak ─ トランスレーシ
- Seite 247 und 248: tbit PR[p2 ] = 0; } break; case ‘
- Seite 249 und 250: tnat tnat ─ Test Nat テスト (T
- Seite 251 und 252: tpa tpa ─ 物理アドレスへ
- Seite 253 und 254: unpack unpack ─ アンパック (
- Seite 255 und 256: xchg xchg ─ 交換 (Exchange) 書
- Seite 257 und 258: xma xma ─ 固定小数点積和 (
- Seite 259 und 260: xmpy xmpy ─ 固定小数点乗算
- Seite 261 und 262: zxt zxt ─ ゼロ拡張 (Zero Exte
- Seite 263 und 264: 擬似コード関数 3 この章
- Seite 265 und 266: 表 3-1. 擬似コード関数 (
- Seite 267 und 268: 表 3-1. 擬似コード関数 (
- Seite 269 und 270: 表 3-1. 擬似コード関数 (
- Seite 271 und 272: 表 3-1. 擬似コード関数 (
- Seite 273 und 274: 表 3-1. 擬似コード関数 (
- Seite 275 und 276: 命令形式 4 個々の Itanium ®
- Seite 277 und 278: 使用 さ れていないメ ジ
- Seite 279 und 280: 表 4-4. 命令形式の要約 (
- Seite 281 und 282: 表 4-6. 命令フィールド名 (
- Seite 283 und 284: 4.2 A ユニット命令エンコ
- Seite 285 und 286: 4.2.1.4 Add Immediate 14 A4 4.2.1.5
- Seite 287 und 288: 4.2.2.2 Integer Compare to Zero ─
stf<br />
stf ─ 浮動小数点ストア (Floating-point Store)<br />
書式 : (qp) stffsz.sthint [r 3 ] = f 2 normal_form, no_base_update_form M9<br />
(qp) stffsz.sthint [r 3 ] = f 2 , imm 9 normal_form, imm_base_update_form M10<br />
(qp) stf8.sthint [r 3 ] = f 2 integer_form, no_base_update_form M9<br />
(qp) stf8.sthint [r 3 ] = f 2 , imm 9 integer_form, imm_base_update_form M10<br />
(qp) stf.spill.sthint [r 3 ] = f 2 spill_form, no_base_update_form M9<br />
(qp) stf.spill.sthint [r 3 ] = f 2 , imm 9 spill_form, imm_base_update_form M10<br />
説明 : FR f2 から fsz バイ ト の値が取り出され、 GR r3 の値で指定されるアド レスから始まるメモ<br />
リ位置に書き込まれる。 normal_form では、 FR f2 の値が メ モ り 形式に変換 さ れてか ら ス<br />
トアされる。 integer_form では、 FR f2 の仮数がス ト アされる。 fsz コンプリータの値は<br />
3:139 ページの表 2-35 に示している。 normal_form または integer_from では、 GR r3 に対<br />
応する NaT ビットが1 か、 あるいは FR f2 の内容が NaTVal である場合は、 レジスタ NaT<br />
参照 (Register NaT Consumption) フ ォ ル ト が発生する。 浮動小数点レジス タ形式か らの変<br />
換の詳細は、 第 1 巻、 第 1 部の 5.1 節 「データ型および形式」 を参照のこ と。<br />
spill_form では、 FR f2 から 16 バイ ト の値が取り出されて、 変換されないでストアされ る。 こ の命令は レ ジ ス タ を ス ピルす る場合に使用 さ れる。 詳細は、 第 1 巻、 第 1 部の<br />
4.4.4 項 「コン ト ロール ・ スペキュレーシ ョ ン」 を参照のこ と。<br />
imm_base_update 形式では、 GR r3 の値が符号付き即値 (imm9 ) に加算 さ れ、 結果が GR r3 に戻される。 こ のベース ・ レ ジス タの更新はス ト アの後で行われ、 ス ト ア ・ ア ド レスに<br />
は影響しない。<br />
物理メ モ リ ・ ア ド レ ス と ア ク セス ・ サイ ズを使用して ALAT が照会され、 すべてのオ ー<br />
バラ ップ ・ エン ト リが無効にされる。<br />
sthint コ ン プ リ ー タ の値で メ モ リ ・ ア ク セスの局所性を指定す る。 stint コンプリータの値<br />
は、 3:226 ページの表 2-50 に示している。 base_update 形式には、 プ リ フ ェ ッ チ ・ ヒ ン ト<br />
が暗黙的に含まれている。 ベー スの更新後の GR r3 の値に よ っ て指定されるア ド レスが、<br />
指定 さ れたキ ャ ッ シ ュ ・ ラ イ ン をプ リ フ ェ ッ チす る よ う に指示する ヒ ン ト と して機能す<br />
る。 このプ リ フ ェ ッチは、 sthint で指定される局所性ヒン ト を使用する。 第 1 巻、 第 1 部<br />
の 4.4.6 項 「メ モ リ 階層の制御 と 整合性」 を参照のこ と。<br />
ライ トバック ・ ポリシーを持つキャッシュ可能ページでも NaTPage でもないページを参<br />
照する stfe(10 バイ ト ) 命令が、 ハー ド ウ ェ ア上でサポ ー ト さ れる か ど う かは、 プ ロ<br />
セッサによって異なる。 このようなstfe アクセスをサポー トしないプロセッサ・モデ<br />
ル上で、 サポ ー ト さ れていない参照を行 う と 、 サポ ー ト さ れないデ ー タ参照フ ォ ル ト が<br />
発生す る。<br />
操作 : if (PR[qp]) {<br />
if (imm_base_update_form)<br />
check_target_register(r 3);<br />
if (tmp_isrcode = fp_reg_disabled(f 2 , 0, 0, 0))<br />
disabled_fp_register_fault(tmp_isrcode, WRITE);<br />
if (GR[r 3 ].nat || (!spill_form && (FR[f 2 ] == NATVAL)))<br />
register_nat_consumption_fault(WRITE);<br />
size = spill_form ? 16 : (integer_form ? 8 : fsz);<br />
itype = WRITE;<br />
if (size == 10) itype |= UNCACHE_OPT;<br />
paddr = tlb_translate(GR[r 3 ], size, itype, PSR.cpl, &mattr, &tmp_unused);<br />
val = fp_fr_to_mem_format(FR[f 2], size, integer_form);<br />
mem_write(val, paddr, size, UM.be, mattr, UNORDERED, sthint);<br />
第 3 巻 : 命令リファレンス 3:227