第 2 章 内部ア−キテクチャ
2.4 命令フェッチおよびデコード
プロセッサは、命令キャッシュまたは分岐ターゲット・キャッシュから、クロック当 たり最高
16
バイトまでをフェッチできる。フェッチされた情報は、デコーダに直 接フィードを行う16
バイト命令バッファに入れられる(図3
参照)。フェッチは、直 前に分岐を実行した命令最高7
分岐までのシングル実行ストリーム上で発生す る。命令フェッチ・ロジックは、
32
バイト・バウンダリ内の任意の連続する16
バイトの 情報を検索する能力を有する。16
バイトの命令がキャッシュ・ライン境界を跨い でいる場合も、特にペナルティが付与されることはない。命令バイトはデコーダ に消費されるに従って、命令バッファ内にロードされる。命令がバイト・グラニュ ラリティをともなって消費されることがあるが、命令バッファはメモリ・アライン ド・ワード(2
バイト)構成上で管理される。したがって、命令はワード・グラニュラ リティをともなってロードされ、リプレースされることになる。JMP
命令の発行 時など、制御権の移転が発生した場合、命令バッファ全体がフラッシュされ、16
命令バイトの新規ワンセットと共に再ロードされる。Branch-Target Cache 16 x 16 Bytes
2:1 16 Bytes
16 Bytes
Branch Target 32-Kbyte Level-One
Instruction Cache
命令デコード
AMD-K6
プロセッサのデコード・ロジックは、クロック当たり複数のx86
命令をデ コードするよう設計されている(図4
参照)。デコード・ロジックは命令バッファか らのx86
命令バイトおよびそれらのプリデコード・ビットを取得し、実際の命令境 界位置を認識し、これらx86
命令からRISC86
命令を生成する。RISC86
命令は固定フォーマットの内部命令である。大部分のRISC86
命令は1
クロック内で実行される。RISC86
命令は連結され、x86
命令セットのすべての 機能を実行する。x86
命令の中にはたとえばNOP
のようにゼロRISC86
オペ コードにまでデコードされるものもあれば、たとえばレジスタ対レジスタ加算の ように1
つのRISC86
命令にデコードされる場合もある。さらに複雑なx86
命令 は、いくつかのRISC86
命令にデコードされることになる。Instruction Buffer
Short Decoder #1
Short Decoder #2
On-Chip ROM
Long Decoder
Vector Decoder
RISC86
®Sequencer
AMD-K6
プロセッサは、デコーダを組み合わせて使用し、x86
命令のRISC86
命 令への変換を行う。この場合のハードウェアは、2
並列ショート・デコーダと、1
ロ ング・デコーダの、計3
セットのデコーダ構成をとる。並列ショート・デコーダは最 も一般的に使用されるx86
命令(ムーブ、シフト、分岐、ALU
、MMX
、FPU
)をそ れぞれ0
、1
または2
のRISC86
命令に変換する。またショート・デコーダは7
バイ ト長以下のx86
命令に限り変換を実行する。また、ショート・デコーダはクロック 当たり最高2 x86
命令をデコードするよう設計されている。一般によく使用さ れる7
バイトから11
バイト長のx86
命令、ショート・デコーダで扱われない7
バイ ト長までのx86
命令はロング・デコーダが取り扱う。ロング・デコーダはクロック当たり
1
回のデコードだけを実行し、最高4
個のRISC86
命令を生成する。その他すべての変換(コンプレクス命令、シリアル化 条件、割り込みおよび例外など)は、内蔵ROM
からフェッチされたベクトル・コー ドとRISC86
命令・シーケンスとの組み合わせを用いて処理する。コンプレク ス・命令の場合には、ベクトル・デコーダ・ロジックが、RISC86
命令の最初のワン セットとベクトル(最初のROM
アドレス)を提供し、さらにRISC86
命令・シーケ ンスが実行される。ハードウェア・デコーダが生成するものと同種のRISC86
命 令がROM
からフェッチされる。注:これら
3
種類のデコーダには命令バッファ・コンテンツのコピーが同時に供給 されるが、1
つのデコード・クロックの間に使用されるデコーダは、3
種類のう ち1
種類だけである。デコーダまたは
RISC86
シーケンサは、常に4
個のRISC86
命令を1
つのグルー プとして生成する。グループ全体を4
個のRISC86
命令で埋めることのできな いデコードの場合は、RISC86 NOP
命令をグループの空のロケーションに配置 する。たとえば、3
つのRISC86
命令だけしか変換できないロング・デコーデッドx86
命令は、1
つのRISC86 NOP
命令でパディングされ、次いでスケジューラにマルチメディア命令(また
MMX
命令ともいう)はすべて、ショート・デコードとし てハードウェア・デコードされる。このMMX
デコードによりRISC86 MMX
命令、および対応する
MMX
ロードまたはストア命令(オプション)が生成される。MMX
命令は、最初のショート・デコーダでしかデコードできない。非MMX
命令 および非ESC
命令の両方が、最初のショート・デコーダでのMMX
命令のデコー ドと共に、2
番目のショート・デコーダにより複数個が同時にデコード可能である。
ドキュメント内
000
(ページ 31-34)