テクニカルノート「コンピュータの歴史(2):コンピュータの世代」

4.3 クロックの高周波数化とその終焉

(1) 1990年代後半のパソコン市場の特徴

 パソコンは高速化を軸に進化してきたが、1990年代後半、市場には2つの大きな変化が現れ、より一層の高速化が求められるようになったといわれる。それは次の二つである52)

  1. 1989年3月、欧州原子核研究機構 (CERN) のティム・バーナーズ=リーは「Information Management: A Proposal」(情報管理: 提案)を執筆し、WWW(World Wide Web、W3)を発明した。その後、提案書を作成して具体化し、W3 に必要なツール、ブラウザ(兼エディタ)、World Wide Web とwebサーバを構築し、1990年12月20日にウェブページを初めて公開した65)。長い間、脱工業化社会と呼ばれていたが、これが、情報化社会への引き金になったといわれる。
     W3の発明の要点は、既存のハイパーテキストとインターネットを結合したことであり、ハイパーリンクと呼ばれるリンクを設けたことである。多くのウェブ文書は他の関連する文書へのハイパーリンクを含んでいる。それは、例えばダウンロードのページだったり、ソース文書だったり、他の定義だったり、W3上の何かの資源だったりする。このハイパーリンクによって情報の網が形成される。これによってワールドワイドウェブが構成されるのである65)
     
  2. マイクロソフトは、MSDOSのグラフィカルユーザインターフェース(GUI)の研究を1985年から開始し、1993年5月にマルチタスク機能をもったGUIベースの新OS、windows3.1を日本市場に投入し好評を博し、米国にも8月に投入した。Windowsは当初はGUI系の名前であったが、最終的にはOSの名称として使われるようになった66)
     1995年8月に、後継のWindows95がリリースされた。このシステムは、Windows3.1を改善するとともに、TCP/IPとInternet Explorerと呼ばれるブラウザを標準装備し、Webアクセスに対応した。
     インターネットが広がりを見せ始めた時期であったために、一般家庭にも急速に普及を見せた画期的なOSといわれる67)

 このようにGUIベースのOSの普及とインターネットブームにより、パソコンは高速化が強く要請され、MPUクロックの高周波数化と各種の高速化技法に挑戦していくことになる。その体力が日本のパソコンメーカにはなかったのが脱落の要因と思われる。

(2) MPUクロックの高周波数化

 この時代を代表するインテルのパソコンpentiumをモデルとして取り上げ具体的に話を進めたい。

  1. パソコンの既存財産を継承するために、インテルはMPUとしてRISCが登場してからもCISC MPUを使用してきたが、市場の動向に従ってPentiumで初めてRISCベースに切り替えた。RISCベースのMPUでx86系の命令セットをエミュレートし、PentiumのCPUとして使用することにしたのである。当初はこの方式は珍しいものであったが、その後、pentiumに拡張命令を追加して高速化を図るアプローチが採用されるようになると、RISC MPUをベースにCISC CPUを実現する方式がパソコンやサーバで常態化することになる。
     
  2. 微細加工の進歩とともにゲート間距離が短縮され、MPUクロックの高周波数化によって高性能化を図れるようになった。特に1990年代後半より、MPUは一層の高性能化が要請され、クロックの高周波数化競争が始まったといわれる。下記の表は、pentiumの機種別のクロックの周波数幅の変化を示す。 
Noリリース機種名クロックの周波数幅備考
1993/5Pentium60~300  MHzコア数=1
295/11Pentium Pro150~200コア数=1
97/5同上   Ⅱ233~450コア数=1
499/2同上   Ⅲ450 MHz~1.4 GHzコア数=1
52000/11同上   41.3 ~ 3.8 GHzコア数=1
605同上   D2.66 ~ 3.73 コア数=2、(ハイパースレディングは無効)、X64
703同上   XE3.2 ~ 3.73コア数=1または2、スレッド数=2または4
8 06同上  Dual-Core1.30 ~ 3.33コアマイクロアーキテクチャ採用、コア数=1または2

 2000年11月にリリースされた機種のクロック周波数は、1993年5月にリリースされたPentiumに比べ低周波数、高周波数ともに著しく向上している。Pentiumの低周波数60MHzが、2000年11月リリースのPentium 4の高周波数では3.8GHzに達し、周波数は7年半で63倍に高周波数化している。年率に換算すると、8.1で高周波数化していたことになる。
 因みに、1971年に誕生した最初のMPU Intel4004の周波数は740KHzなので、pentium4の周波数に比べて513万倍に達している。
 しかし、Pentium D以降では周波数は減少し、コア数を2に増加している。これは、周波数を増加すると消費電力が増加する現象が見られるようになったことと、微細加工によりリーク電流が発生するようになり、さらに消費電力が増加したための対応といわれる。
 消費電力の増加は熱対策の問題を引き起こし、クロックを高周波数化して高性能化をはかるというパラダイムが終焉し、高周波数化を抑え、コア数を増やして並列度を高めて高性能化をはかる、周波数あたりの高性能化をはかる周波数効率化のパラダイムに移行したといわれる。以上の参考文献は(68~76)。

(3) その他の高速化手法

  MPUは、この時期に、高周波数化パラダイムに加えて各種の高速化技法を採用するようになった。
 93年5月にリリースされたPentiumは、前身の80486に対して次のアーキテクチャ上の改善を行っている68)。高集積化によって増加したIC素子を有効活用し、より一層の高性能化を図っていると考えることができる。

  1. 整数などのスカラ演算*)用にスーパースケーラ構造を採用した。命令フェッチ・命令の解読(デコード)・対象データの読み出し(オペランドの読み出し)・命令の実行・結果の書き込みの5段のステージを持つパイプライン処理**)を複数化して1クロックで1つ以上の命令の実行を可能とした。これは命令の実行部を複数持ち、命令を並列に実行できるようにしたことを意味する。
    註*)スカラ演算とは、基本的には1命令で1つの演算データ(オペランド)を持つ命令の演算をいう。
    註**)パイプライン処理とは、1つの演算命令の処理の流れを複数のステージに分割し、各ステージを連続的に使って1つの命令の処理が行われ、かつ、空いたステージには次の命令が送り込まれ処理される。このために、1命令の処理時間はステージ数分の1に短縮される。ステージ段数をさらに増やして高速化する方式はスーパーパイプラインと呼ばれる。
     
     パイプラインは単位時間に処理される演算数を増加させる、すなわちスループットの向上を目的とした処理方式で、命令の処理時間はパイプライン化しない場合に比べて長くなるといわれている。
     
  2. 分岐予測(Branch Prediction)とは、プログラム実行の流れの中で条件分岐命令が分岐するかしないかを事前に予測することにより、命令パイプラインの効果を可能な限り維持し、性能を高めるための技法である。分岐予測の方法には、いろいろな方法があり、使えるリソース量とのトレードオフで決まる。Pentiumでも、変わっていったようである。
     
  3. アウト・オブ・オーダー実行
    アウト・オブ・オーダー実行(out-of-order execution)とは、クロックあたりの命令実行数(IPC値)を増やし性能を上げるための手法の1つで、機械語プログラム中の命令の並び順に依らず、データなどの依存関係から見て処理可能な命令について検出した時点で実行・完了させるものである。
     最初にアウト・オブ・オーダー実行を行ったマシンは、1960年代のCDC 6600とされているが、最初にアウト・オブ・オーダー実行を行った商用MPUは1990年発表のIBMのPOWER1とされている。x86アーキテクチャではP6マイクロアーキテクチャ(Pentium Pro、1995年)およびCyrix 6×86(1995)が最初である。他には、IBMとモトローラのPowerPC 601 (1992/1993)、富士通とHALのSparc641 (1995)、ヒューレット・パッカードのPA-8000 (1996)、MIPSの MIPS R10000 (1996)、AMD K5 (1996)、DEC Alpha の 21264 (1998)などがある。
     マルチコアでは、アウト・オブ・オーダー実行を省くのが主流となっている。
  4. MPUのレジスタに比べ遅いメモリ性能をカバーするために、メモリとレジスタとの間に配置されるキャッシュメモリを命令用とデータ用に分離するハーバードタイプと呼ばれる方式を採用し、サイズもそれぞれ8 Kバイトずつと大きくした。キャッシュメモリをもう一段追加し階層化してメモリアクセスの高速化をはかる方式がある。
     
  5. 浮動小数点演算は8段のステージを持つパイプライン処理を行った。浮動小数点は整数に比べ複雑な処理が必要なことからステージ段数が増える。
     
  6. トランジスタ数は310万個の0.8 μmのBiCMOSプロセス*)を採用した。
    註*)BiCMOS(Bipolar CMOS)は、バイポーラ トランジスタとMOS トランジスタを組み合わせることで、高速かつ低消費電力のICを実現する技術。
     
  7. 効率化された仮想86モード*)のサポート。
    註*) Pentiumプロセッサの下で、16ビットアドレスの8086アプリケーションをそのまま動作させることができるように、CPUの実行モードを制御する命令やソフトウェア割り込み命令、入出力命令、フラグレジスタへのアクセスなどのシステムの動作に関わる命令はすべてトラップされ、仮想86モニターでバーチャルマシンとして処理される77)
     
  8. 4 KB/ページから4 MB/ページへの拡張を行うページ拡張モードのサポート。
  9. デュアルプロセッサモード(2つのプロセッサの並列処理)のサポート。
  10. 1997年1月に、Pentiumプロセッサ向けにMMXと呼ばれるSIMD(Single Instruction Multi Data)型拡張命令セット(56個)が追加された。これはベクトル演算とかベクトル処理とも呼ばれる。
     MMX用レジスタとして128ビットの浮動小数点レジスタを転用して、1つの命令で同時に複数の整数演算を扱い、デジタルシグナルプロセッサ (DSP) の得意分野である音声、画像、動画などのマルチメディア関係の処理の高速化を図ったが78)、次のSSE拡張命令が追加され不要となった。
     
  11. ストリーミングSIMD拡張命令(Streaming SIMD Extensions、略称:SSE)の追加
    ストリーミングとは、SIMD(Single Instruction Multiple Data)型命令が複数の演算データ(オペランド)を持っていることに起因する。SSE命令は、8本の128ビット専用レジスタを新設し、MMXの欠点を取り除き、並列処理のための回路を追加し、一つの計算を同時に複数の値に対して行える79)
     SSE命令の拡張は下記のように段階的に行われた。
No追加時期と機種SSE種別内容追加命令数
1999年2月PentiumⅢSSEx86アーキテクチャに8本の128ビットレジスタを新設し、浮動小数点演算のSIMD処理を実現70
22000年 11月 Pentium 4SSE264ビットの倍精度浮動小数点演算のサポートおよびMMXを128ビット幅に拡張する整数演算命令の追加144
32004年2月Pentium 4SSE3浮動小数点数演算や複素数計算の強化、メモリアクセスの高速化、一つのプロセッサコアで二つの命令の流れを同時に実行するハイパースレッディングへの対応などが行われた13
2006年7月 Intel Core 2SSSE3(Supplemental SSE3)SSE3を補完的に拡張するもので、同社のCoreシリーズ初のSSE拡張。同じレジスタ内に収まってる数値間の加減算(水平加算/水平減算)などの追加16
62007年11月 Intel Core 2SSE4.1積和演算の命令や浮動小数点数を整数に変換する丸め処理に関する命令などが追加47
2007年 11月 AMD PhenomSSE aビット操作などに関する4つの命令からなる。AMD社製品用
2008年11月 インテル コア I7SSE4.2文字列処理や巡回冗長検査(CRC)などに関する命令の追加

Comments are closed.