24531904_j
24531904_j 24531904_j
ttag ─ トランスレーション・ハッシュ・エントリ・タグ (Translation Hashed Entry Tag) 書式 : (qp) ttag r 1 = r 3 M46 説明 : ロ ン グ形式の仮想ハ ッ シ ュ ・ ペー ジ ・ テ ー ブル (VHPT) の検索時に照合に使用される タ グが生成され、 GR r1 に格納される。 仮想ア ド レスは GR r3 に指定 さ れ、 リ ー ジ ョ ン ・ レ ジスタは GR r3 のビッ ト {63:61} に選択される。 ttag 命令への入力 と して、 NaT 入力引数ま たは実装 さ れていない仮想ア ド レ スが指定 さ れた場合は、 得られるターゲ ッ ト ・ レジスタの値は不定であ り、 NaT ビットが1 にセッ トされる。 タグ生成関数は、 プロセ ッ サ固有のロ ング形式の VHPT タグを生成する。 タグ生成関数 は、 実装されたすべてのリージョン・ビットと、 仮想アドレス・ビット {60:0} を使用し なければならない。 この命令は、 PTA.vf を無視する。 ロング形式の VHPT 内の変換エン ト リ は、 thash 命令に よ っ て生成 さ れる ハ ッ シ ュ ・ イ ンデッ クス と、 この命令によ って生成されるタグによ って、 一意に識別されなければな らない。 この命令は、 VHPT ウォーカを実装していないプロセッサ・モデルを含む、 すべてのプ ロ セ ッ サ ・ モデル上に実装 さ れていなければな ら ない。 操作 : if (PR[qp]) { check_target_register(r 1 ); } 割り込み : 無効操作フ ォ ル ト if (GR[r 3 ].nat || unimplemented_virtual_address(GR[r 3 ])) { GR[r 1 ] = undefined(); GR[r 1 ].nat = 1; } else { tmp_vr = GR[r 3 ]{63:61}; tmp_va = GR[r 3 ]{60:0}; GR[r 1 ] = tlb_vhpt_tag(tmp_va, RR[tmp_vr].rid, RR[tmp_vr].ps); GR[r 1 ].nat = 0; } 3:240 第 3 巻 : 命令リファレンス ttag
unpack unpack ─ アンパック (Unpack) 書式 : (qp) unpack1.h r 1 = r 2 , r 3 one_byte_form, high_form I2 (qp) unpack2.h r 1 = r 2 , r 3 two_byte_form, high_form I2 (qp) unpack4.h r 1 = r 2 , r 3 four_byte_form, high_form I2 (qp) unpack1.l r 1 = r 2 , r 3 one_byte_form, low_form I2 (qp) unpack2.l r 1 = r 2 , r 3 two_byte_form, low_form I2 (qp) unpack4.l r 1 = r 2 , r 3 four_byte_form, low_form I2 説明 : GR r 2 および r 3 の各デー タ要素がアンパ ッ ク さ れ、 結果が GR r 1 に格納される。 high_form では、 各ソ ー ス ・ レ ジ ス タ の最上位要素が選択 さ れ、 それに対して low_form では、 各ソ ー ス ・ レ ジ ス タ の最下位要素が選択される。 要素は それぞれの ソ ー ス ・ レ ジ ス タ か ら 交互に選択 さ れる。 操作 : if (PR[qp]) { check_target_register(r 1 ); } if (one_byte_form) { // one-byte elements x[0] = GR[r 2 ]{7:0}; y[0] = GR[r 3 ]{7:0}; x[1] = GR[r 2]{15:8}; y[1] = GR[r 3]{15:8}; x[2] = GR[r 2 ]{23:16}; y[2] = GR[r 3 ]{23:16}; x[3] = GR[r 2 ]{31:24}; y[3] = GR[r 3 ]{31:24}; x[4] = GR[r 2]{39:32}; y[4] = GR[r 3]{39:32}; x[5] = GR[r 2 ]{47:40}; y[5] = GR[r 3 ]{47:40}; x[6] = GR[r 2 ]{55:48}; y[6] = GR[r 3 ]{55:48}; x[7] = GR[r 2]{63:56}; y[7] = GR[r 3]{63:56}; if (high_form) GR[r 1] = concatenate8( x[7], y[7], x[6], y[6], x[5], y[5], x[4], y[4]); else // low_form GR[r 1] = concatenate8( x[3], y[3], x[2], y[2], x[1], y[1], x[0], y[0]); } else if (two_byte_form) { // two-byte elements x[0] = GR[r 2]{15:0}; y[0] = GR[r 3]{15:0}; x[1] = GR[r 2 ]{31:16}; y[1] = GR[r 3 ]{31:16}; x[2] = GR[r 2 ]{47:32}; y[2] = GR[r 3 ]{47:32}; x[3] = GR[r 2]{63:48}; y[3] = GR[r 3]{63:48}; if (high_form) GR[r 1] = concatenate4(x[3], y[3], x[2], y[2]); else // low_form GR[r 1 ] = concatenate4(x[1], y[1], x[0], y[0]); } else { // four-byte elements x[0] = GR[r 2 ]{31:0}; y[0] = GR[r 3 ]{31:0}; x[1] = GR[r 2 ]{63:32}; y[1] = GR[r 3 ]{63:32}; if (high_form) GR[r1 ] = concatenate2(x[1], y[1]); else // low_form GR[r1 ] = concatenate2(x[0], y[0]); } GR[r1].nat = GR[r2].nat || GR[r3].nat; 第 3 巻 : 命令リファレンス 3:241
- 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 und 238: st st ─ ストア (Store) 書式
- Seite 239 und 240: stf stf ─ 浮動小数点スト
- 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: tpa tpa ─ 物理アドレスへ
- 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 ─
- Seite 289 und 290: 表 4-13. マルチメディア ALU
- Seite 291 und 292: 4.2.3.1 Multimedia ALU A9 4.2.3.2 M
- Seite 293 und 294: 表 4-18. マルチメディア・
- Seite 295 und 296: 4.3.1.2 Multimedia Multiply/Mix/Pac
- Seite 297 und 298: 4.3.1.8 Multimedia Shift Left ─ F
- Seite 299 und 300: 4.3.2.6 Deposit I15 4.3.3 ビット
- Seite 301 und 302: 表 4-25. その他の I ユニッ
ttag ─ トランスレーション・ハッシュ・エントリ・タグ<br />
(Translation Hashed Entry Tag)<br />
書式 : (qp) ttag r 1 = r 3 M46<br />
説明 : ロ ン グ形式の仮想ハ ッ シ ュ ・ ペー ジ ・ テ ー ブル (VHPT) の検索時に照合に使用される タ<br />
グが生成され、 GR r1 に格納される。 仮想ア ド レスは GR r3 に指定 さ れ、 リ ー ジ ョ ン ・ レ<br />
ジスタは GR r3 のビッ ト {63:61} に選択される。<br />
ttag 命令への入力 と して、 NaT 入力引数ま たは実装 さ れていない仮想ア ド レ スが指定 さ<br />
れた場合は、 得られるターゲ ッ ト ・ レジスタの値は不定であ り、 NaT ビットが1 にセッ<br />
トされる。<br />
タグ生成関数は、 プロセ ッ サ固有のロ ング形式の VHPT タグを生成する。 タグ生成関数<br />
は、 実装されたすべてのリージョン・ビットと、 仮想アドレス・ビット {60:0} を使用し<br />
なければならない。 この命令は、 PTA.vf を無視する。<br />
ロング形式の VHPT 内の変換エン ト リ は、 thash 命令に よ っ て生成 さ れる ハ ッ シ ュ ・ イ<br />
ンデッ クス と、 この命令によ って生成されるタグによ って、 一意に識別されなければな<br />
らない。<br />
この命令は、 VHPT ウォーカを実装していないプロセッサ・モデルを含む、 すべてのプ<br />
ロ セ ッ サ ・ モデル上に実装 さ れていなければな ら ない。<br />
操作 : if (PR[qp]) {<br />
check_target_register(r 1 );<br />
}<br />
割り込み : 無効操作フ ォ ル ト<br />
if (GR[r 3 ].nat || unimplemented_virtual_address(GR[r 3 ])) {<br />
GR[r 1 ] = undefined();<br />
GR[r 1 ].nat = 1;<br />
} else {<br />
tmp_vr = GR[r 3 ]{63:61};<br />
tmp_va = GR[r 3 ]{60:0};<br />
GR[r 1 ] = tlb_vhpt_tag(tmp_va, RR[tmp_vr].rid, RR[tmp_vr].ps);<br />
GR[r 1 ].nat = 0;<br />
}<br />
3:240 第 3 巻 : 命令リファレンス<br />
ttag