x86に限ってだが、アウトオブオーダーで欠かせないのが命令変換の仕組みである。インテルの場合は「μOp」(マイクロオプ)、AMD(というか旧NexGen)は当初「RISC86」と称し、その後「Op」、最終的には「microOp」と表記は変わっているが、要するにx86命令を「RISC風の」内部命令に変換する仕組みである。この内部命令が、μOpとかmicroOpなどと呼ばれるわけだ。
ここでちょっと寄り道して、RISCとCISCの話をしておくことにする。例えばx86という命令はCISCの代表例であるが、そもそもRISCとCISCの違いとは? というところを簡単に説明しておこう。
RISCとCISCの違いをざっとおさらい
RISCという概念を、それと明確には知らずに搭載したCPUはかなり昔からある※1。だが、RISCという概念が明確になったのは、1981年にデビッド・パターソン(David Patterson)がプロジェクトの指揮を取った「RISC-I/RISC-II」プロジェクトと、ほぼ同じ1982年に、ジョン・ヘネシー(John Hennessy)がプロジェクトの指揮を取った「MIPS」プロジェクトがそれぞれ大きな成果を上げ、これに基づいた製品が登場するようになってからではないかと思う(IBM 801とかもあるが、ここでは割愛する)。
※1 1964年の「CDC6600」が最初、という説が根強い。
ここで初めて、RISC(Reduced Instruction Set Computer:縮小命令セットコンピューター)という概念が定義された。この当時のRISCの概念は、以下の要素に代表されている。
- 命令長は固定
- 処理時間は命令によらず一定(原則1クロック)
- 演算はすべてレジスター間のみ
- マイクロコードを廃する
- 汎用レジスターを多数用意
- 遅延スロットを設けてパイプラインストールを防止
これらを(全部ではないにせよ)搭載したものがRISC、そうでないものがCISC(Complex Instruction Set Computer:複合命令セットコンピューター)というのが、やや乱暴だが現実に即した分類だった。例えばCISCの代表例たるx86の場合は、以下のようになる。
- 命令長は可変。しかも規則性がないため、命令を1byteずつデコードしないと、最終的な命令長が不明
- 処理時間は命令によって大きく変わる
- 演算はレジスター間演算以外に、メモリーや即値、アドレス指定など多彩なモードがある
- マイクロコードを多用しており、特に80386ではデコードのレイテンシがかなり多かった
- 汎用レジスターは非常に少なく、スタックを多用する必要があった
- 遅延スロットに相当するものはない

この連載の記事
-
第828回
PC
TOP500の4位に躍り出たJUPITER Boosterは効率と性能/消費電力比が驚嘆に値する -
第827回
PC
オーディオとモデムを普及させるのに一役買ったAMRとACR 消え去ったI/F史 -
第826回
PC
PCIeリリース直前に登場しわずか1年の短命に終わったCSA 消え去ったI/F史 -
第825回
PC
バッファがあふれると性能が低下する爆弾を抱えるもライセンスが無料で広く普及したAGP 消え去ったI/F史 -
第824回
PC
AT互換機が普及するきっかけとなったPCIは、MCAの失敗から生まれた 消え去ったI/F史 -
第823回
PC
Intel 18AはIntel 3と比較して性能/消費電力比が15%向上 インテル CPUロードマップ -
第822回
PC
爆発的に普及したことが逆に寿命を縮める結果になったVL-Bus 消え去ったI/F史 -
第821回
PC
IBMのMCAバスに対抗してAT互換機メーカー9社が共同で開発したEISA 消え去ったI/F史 -
第820回
PC
LEDが半導体の救世主に? チップレット同士の接続を電気信号から光信号へ ISSCC 2025詳報 -
第819回
PC
次期Core UltraシリーズのPanther Lakeは今年後半に量産開始 インテル CPUロードマップ -
第818回
PC
DDRを併用し低価格・低消費電力を実現したAIプロセッサー「SN40L」 ISSCC 2025詳報 - この連載の一覧へ