このページの本文へ

前へ 1 2 3 4 次へ

ロードマップでわかる!当世プロセッサー事情 第71回

x86を高速化する切り札技術「命令変換」の仕組み

2010年10月04日 12時00分更新

文● 大原雄介(http://www.yusuke-ohara.com/)

  • この記事をはてなブックマークに追加
  • 本文印刷

 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ではデコードのレイテンシがかなり多かった
  • 汎用レジスターは非常に少なく、スタックを多用する必要があった
  • 遅延スロットに相当するものはない

前へ 1 2 3 4 次へ

カテゴリートップへ

この連載の記事

注目ニュース

ASCII倶楽部

プレミアムPC試用レポート

ピックアップ

ASCII.jp RSS2.0 配信中

ASCII.jpメール デジタルMac/iPodマガジン