CPUのマイクロオプ(μOp,RISC86,Op,microOp)

最終更新日 2024年01月23日

CPUのマイクロオプ(μOp,RISC86,Op,microOp)とは

基礎

CPUのマイクロオプとは、x86命令をRISC命令に変換する仕組みです。英語表記ではmicroOpです。CPU内部で変換を行い、変換後の命令を内部命令と呼びます。x86命令からRISC命令に変換後の内部命令をマイクロオプと呼ぶ場合があります。以降では、マイクロオプが変換後の内部命令を指すとして書く場合があります。

名称の変遷

当初の名称がインテルではμOp、AMDではRISC86です。μはギリシャ文字でありマイクロと読み、μOpをマイクロオプと読みます。その後はOpです。さらにその後はmicroOpです。μOp、Opという呼び方は今でも使用する場合があります。

厳密にはRISC命令に近い内部命令に変換する仕組み

マイクロオプとはx86命令をRISC命令に変換する仕組みと書きましたが、厳密にはx86命令をRISC命令に近い内部命令に変換する仕組みが正しいです。マイクロオプはRISCと無関係に開発した仕組みであり、開発した結果、マイクロオプがx86命令をRISC命令に近い内部命令に変換する仕組みになりました。

昔と違って今ではx86命令をRISC命令に変換が妥当ではない

昔と違って今では、マイクロオプとはx86命令をRISC命令に変換する仕組みと言うよりは、x86命令をCPU高速化技術に合わせた内部命令に変換する仕組みとする方が妥当です。CPUが技術進歩し様々な高速化技術を搭載していますが、x86命令のままでは高速化技術をあまり活かせません。当初はRISC命令に変換することで活かせましたが、進歩する高速化技術をあまり活かせなくなり、今では当時のRISC命令とは大きく違う内部命令に変換し高速化技術を活かせるようにしています。

x86命令をマイクロオプに変換する理由

パイプライン高速化のためにx86命令をマイクロオプに変換する

x86命令をマイクロオプに変換する理由は、パイプラインを活かして高速化するためです。パイプラインとは、命令の特定の処理を専門に行うユニットを複数並べ、流れ作業のように各ユニットが専門の処理を行い終わったら次の命令の専門の処理を行い、各ユニットの待機時間をなくして性能を向上させることです。

パイプラインの効率を高めるには、命令の解読や実行が短時間で終わる必要があります。x86命令のままでは長時間かかるので短時間で終わるマイクロオプに変換します。

x86命令からマイクロオプに変換する例

例えば「メインメモリーの値Aとレジスターの値Bを足し算し、その結果をメインメモリーの値Aに上書きする」というx86命令があるとします。x86命令であれば命令数が1つです。マイクロオプに変換すると、「メインメモリーの値Aをレジスターに保存し値Cとする」、「レジスターの値Cとレジスターの値Bを足し算し、その結果をレジスターに保存し値Dとする」、「レジスターの値Dをメインメモリーの値Aに上書きする」、以上3つの命令になります。

マイクロオプに変換すると命令数が増えますが、複雑なx86命令が複数の単純なマイクロオプに分解となります。x86命令だと複雑なので命令の実行が終わるまで時間がかかりますが、単純なマイクロオプなら短時間で終わります。そのため、パイプラインに適する命令になります。

x86命令からマイクロオプへの変換に関わるユニット

ユニットの一覧

命令キャッシュ    
↓x86命令    
フェッチユニット    
↓x86命令    
デコードユニット    
↓マイクロオプ    
スケジューラーユニット ROB
↓マイクロオプ ↓マイクロオプ  
ロードユニット
ストアユニット
演算ユニット
↓↑データ    
データキャッシュ

命令キャッシュ

命令キャッシュとは、命令を一時的に保存しておくためのキャッシュメモリーです。ここにx86命令を一時的に保存します。

フェッチユニット

フェッチユニットとは、フェッチ、すなわち命令キャッシュから読み出した命令を短時間ためておくところです。ここにx86命令を短時間ためておきます。

デコードユニット

デコードユニットとは、命令を解読する処理を行う回路です。フェッチユニットがデコードユニットに転送したx86命令を、デコードユニットが解読します。さらにデコードユニットがx86命令をマイクロオプに変換します。

スケジューラーユニット

スケジューラーユニットとは、解読した命令の並び替えを行う回路です。デコードユニットがスケジューラーユニットに転送したマイクロオプを並び替えます。大雑把に言うと、マイクロオプの実行の効率が高くなるように並べ替えます。転送されてきた順序通りにではなく並び替える方が効率がよく実行できる場合があるためです。

ロードユニット、ストアユニット

ロードユニットとは、データキャッシュにあるデータを読み込みレジスターに書き込む回路です。ストアユニットとは、レジスターにあるデータを読み込みデータキャッシュに書き込む回路です。本来はメインメモリーも考慮しなければなりませんが、解説を簡単にするためにメインメモリーがないとします。

スケジューラーユニットがロードユニットやストアユニットに転送したマイクロオプを実行します。今回はメインメモリーを考慮しませんが、メインメモリーに対するデータ読み書きが発生するマイクロオプの実行に時間がかかるので、演算ユニットとは別にロードユニットとストアユニットを用意して実行することが重要です。

演算ユニット

演算ユニットとは、命令の内容に従って命令を実行する回路です。スケジューラーユニットが演算ユニットに転送したマイクロオプを実行します。

データキャッシュ

データキャッシュとは、データを一時的に保存するためのキャッシュメモリーです。ここでのデータとは、命令の処理に使用する値等を指します。演算ユニットで使用するデータや演算ユニットが実行した結果のデータを一時的に保存します。

出典

ASCII.jp:x86を高速化する切り札技術「命令変換」の仕組み (1/4)|ロードマップでわかる!当世プロセッサー事情(2010/10/04更新記事)
ASCII.jp:x86を高速化する切り札技術「命令変換」の仕組み (2/4)(2010/10/04更新記事)
ASCII.jp:x86を高速化する切り札技術「命令変換」の仕組み (3/4)(2010/10/04更新記事)
ASCII.jp:x86を高速化する切り札技術「命令変換」の仕組み (4/4)(2010/10/04更新記事)
ASCII.jp:インテルCPUはこうして進化した すべての基本は「P6」 (2/3)(2012/08/06更新記事)


キャンペーン情報(PR)
マウスコンピューター
・オータムセール
最大50,000円OFF
(10月9日迄)
DELL
・今週のおすすめ製品
対象製品が特別価格でお買い得
(キャンペーン実施中)
パソコン工房
・決算セール
セール対象BTOパソコン最大55,000円OFF
(10月1日迄)

CPUのマイクロオプ



デル株式会社