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ではデコードのレイテンシがかなり多かった
- 汎用レジスターは非常に少なく、スタックを多用する必要があった
- 遅延スロットに相当するものはない
この連載の記事
-
第768回
PC
AIアクセラレーター「Gaudi 3」の性能は前世代の2~4倍 インテル CPUロードマップ -
第767回
PC
Lunar LakeはWindows 12の要件である40TOPSを超えるNPU性能 インテル CPUロードマップ -
第766回
デジタル
Instinct MI300のI/OダイはXCDとCCDのどちらにも搭載できる驚きの構造 AMD GPUロードマップ -
第765回
PC
GB200 Grace Blackwell SuperchipのTDPは1200W NVIDIA GPUロードマップ -
第764回
PC
B100は1ダイあたりの性能がH100を下回るがAI性能はH100の5倍 NVIDIA GPUロードマップ -
第763回
PC
FDD/HDDをつなぐため急速に普及したSASI 消え去ったI/F史 -
第762回
PC
測定器やFDDなどどんな機器も接続できたGPIB 消え去ったI/F史 -
第761回
PC
Intel 14Aの量産は2年遅れの2028年? 半導体生産2位を目指すインテル インテル CPUロードマップ -
第760回
PC
14nmを再構築したIntel 12が2027年に登場すればおもしろいことになりそう インテル CPUロードマップ -
第759回
PC
プリンター接続で業界標準になったセントロニクスI/F 消え去ったI/F史 -
第758回
PC
モデムをつなぐのに必要だったRS-232-CというシリアルI/F 消え去ったI/F史 - この連載の一覧へ