• 検索結果がありません。

命令フェッチおよびデコード

ドキュメント内 000 (ページ 31-34)

第 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)