Simple DecodeとComplex Decodeの違いとは?
最終更新日
2023年09月07日
Simple Decode と Complex Decode の違いとは何か
完全版!! 「Core i7」極限検証 - 内部アーキテクチャ解析編 (2) CPU Core部分 (2) | マイナビニュース
には、以下のとおり書かれています。(この記事の公開年月日は2008年12月25日)
デコーダとは、どのような処理を実行するのか書かれている命令を解読する機能です。
x86 命令とは、1978年に発売されたインテルの CPU である 8086 と、その後継となる CPU や互換性のある CPU で実行できる命令を指すと思われます。
Simple Decode と Complex Decode は、取り扱える x86 命令に違いがあるようです。
同記事によると、Core マイクロアーキテクチャでは、さらに以下の違いがあるようです。
同記事によると、Core マイクロアーキテクチャの後継となる Nehalem マイクロアーキテクチャについては、以下のとおり書かれています。
ASCII.jp:インテルCPUはこうして進化した すべての基本は「P6」 (2/3)|ロードマップでわかる!当世プロセッサー事情 には、以下のとおり書かれています。(この記事の公開年月日は2012年8月6日)
Complex Decode が1つ、Simple Decode が2つ、これらの他に Micro Instruction Sequencer と呼ぶデコーダがあり、Simple Decode や Complex Decode では対処できない複雑な命令を複数の μOp に変換するそうです。
μOp(マイクロオプ)とは、CPU が実行する処理の単位です。単位に分けられた処理を実行する命令とも言えます。
1つの命令がデコーダによって変換され1つの μOp になることもあれば、複数の μOp になることもあります。
同記事には μOp の例が、以下のとおり書かれています。
この命令は Complex Decode によって変換され3つの処理になりますが、それぞれの処理が μOp です。
メモリーからデータを読み込みレジスタに格納していますが、処理に必要なデータをメモリーからレジスタへ読み込むことをデータフェッチと呼びます。
レジスタはメモリーよりもアクセス速度が速く、処理に必要なデータを格納することで処理速度が向上します。
Core MAの場合4つのデコーダが用意されるが、うち3つ(図3で言うDecoce 1〜3)は1cycleでデコードが出来るx86命令のみを取り扱うSimple Decode、残り1つ(Decode 0)は全てのx86命令を取り扱うComplex Decodeとなっている。「Core MA」とは、Core マイクロアーキテクチャのことです。
デコーダとは、どのような処理を実行するのか書かれている命令を解読する機能です。
x86 命令とは、1978年に発売されたインテルの CPU である 8086 と、その後継となる CPU や互換性のある CPU で実行できる命令を指すと思われます。
Simple Decode と Complex Decode は、取り扱える x86 命令に違いがあるようです。
同記事によると、Core マイクロアーキテクチャでは、さらに以下の違いがあるようです。
ここでComplex Decodeのカバー範囲であるが、どうもSimple Decodeで扱う命令は原則として扱わない事になっているようで、したがってNOPとかSUBといった簡単な命令は図3の赤線の様にDecode 1〜3のみで処理されていた模様だ。NOP とは何も処理をしない、SUB とは減算する命令です。
同記事によると、Core マイクロアーキテクチャの後継となる Nehalem マイクロアーキテクチャについては、以下のとおり書かれています。
つまり、これまではSimple Decodeのみで処理していた命令も、Complex Decodeで取り扱えるようになったということだ。Simple Decode と Complex Decode、それぞれが取り扱う x86 命令に関して変更があったようです。
ASCII.jp:インテルCPUはこうして進化した すべての基本は「P6」 (2/3)|ロードマップでわかる!当世プロセッサー事情 には、以下のとおり書かれています。(この記事の公開年月日は2012年8月6日)
「Decode 0」は「Complex Decode」と呼ばれ、ひとつのx86命令を2つ“以上”のμOpに、「Decode 1/2」は「Simple Decode」と呼ばれ、ひとつのx86命令をひとつのμOpにそれぞれ変換する。同記事では P6 マイクロアーキテクチャについて解説しており、3種類4つのデコーダがあるそうです。
Complex Decode が1つ、Simple Decode が2つ、これらの他に Micro Instruction Sequencer と呼ぶデコーダがあり、Simple Decode や Complex Decode では対処できない複雑な命令を複数の μOp に変換するそうです。
μOp(マイクロオプ)とは、CPU が実行する処理の単位です。単位に分けられた処理を実行する命令とも言えます。
1つの命令がデコーダによって変換され1つの μOp になることもあれば、複数の μOp になることもあります。
同記事には μOp の例が、以下のとおり書かれています。
例えば「メモリーにある2つのデータを足し算」という処理では、CPUは以下のような処理をすることになる。「元のx86命令」とは、「メモリーにある2つのデータを足し算」を実行する命令です。
・メモリーからデータ1をロードしてレジスタ1に格納
・メモリーからデータ2をロードしてレジスタ2に格納
・レジスタ1とレジスタ2の値を加算して、結果をレジスタ3に格納
元のx86命令では1命令で済むが、内部的には3命令相当になるわけだ。μOpというのは、この内部で行なわれる処理に1対1で対応する命令セットとなる。
この命令は Complex Decode によって変換され3つの処理になりますが、それぞれの処理が μOp です。
メモリーからデータを読み込みレジスタに格納していますが、処理に必要なデータをメモリーからレジスタへ読み込むことをデータフェッチと呼びます。
レジスタはメモリーよりもアクセス速度が速く、処理に必要なデータを格納することで処理速度が向上します。
キャンペーン情報(PR) |
---|
マウスコンピューター
・オータムセール 最大50,000円OFF (10月9日迄) DELL ・今週のおすすめ製品 対象製品が特別価格でお買い得 (キャンペーン実施中) パソコン工房 ・決算セール セール対象BTOパソコン最大55,000円OFF (10月1日迄) |