目次]   [1ページ目] [前ページ] [次ページ]  [Q&A
科学技術計算分科会「サイエンティフィック・コンピューティングの最前線」

「GRAPE-DRとスーパーコンピューティングの未来」


(2/8)

2. 背景 - 計算機アーキテクチャの「進化」
  1940年代末に ENIACが稼働を開始してからの 60年間にわたって、計算機の速度はほぼ 10年に 100倍のペースで向上を続けてきた。これは他の技術では類を見ないものである。この進化は、2期に分けることができる。第一期は 1969年まで、すなわちスループット 1の浮動小数点演算ユニットを持つ CDC 7600以前であり、第二期はその後現在までである。

  この 2つの時期で、計算機の性能向上のために必要な方策は根本的に異なる。どちらの時期においても、性能向上のための基礎になっているのはデバイス技術の進歩である。1950年代においては真空管やパラメトロンからトランジスタへというデバイスそのものの変化であり、60年代には個別トランジスタから集積回路へ、それ以降は集積回路の微細化、バイポーラから CMOSへといったトランジスタ構成方式の進化等多岐に渡るが、計算機アーキテクチャの観点からはこれらの進歩は基本的に以下の 2つの意味を持つ。
  • デバイスの動作速度の進歩
  • デバイス集積度の進歩
動作速度の進歩は、基本的にはそのまま計算機の能力の向上につながる。これに対してデバイス集積度、すなわち 1台の計算機で利用可能なスイッチング素子の数の増加は、なんらかの方法でそれを計算機構成方式に反映させ、より多数の素子を有効に使えるようにしなければ性能向上につながらない。第一期と第二期では、この方法が異なる。

  第一期においては、利用可能な素子の数は完全にパイプライン化した浮動小数点乗算器を構成するのに十分なほどではなかった。従って、計算機アーキテクチャの構成方針はある意味単純なものであり、
  • なるべくスループットの高い浮動小数点演算器を作る
  • 残りの素子で、十分な命令・データを演算器に供給できる回路を作る
とまとめることができる。第一期の特徴は、大きな計算機ほど価格性能比が良いということである。このことは当時グロシュの法則として知られていた。この法則は「計算機の性能は価格の 2乗に比例する」というものである。

  浮動小数点演算性能の観点からは、大きな計算機ではまず浮動小数点演算専用回路をつけることができ、さらにその性能は素子の数を増やすとそれ以上に上がる、ということからグロシュの法則は理解できる。スループットを倍にするにはトランジスタ数を倍増する必要はないからである。

  しかし、スループット1 の演算器が計算機に入ってしまうと、それからどうするか?という問題が発生する。後知恵では自明な回答は、演算器を増やして並列に計算させる、というものだが、歴史は素直にその方向に進んできたわけではない。CDC 7600の後スーパーコンピューターの主流となったのは、CDC 7600の設計者であったシーモア・クレイが設計したベクトル計算機 Cray-1であった。Cray-1では、
  • 半導体メモリとマルチバンク構成によるメモリのスループットの向上
  • ベクトル演算制御による演算器の有効利用
という 2つの技術革新により、CDC-7600から 3倍弱のクロック向上でしかなかったにもかかわらず多くのアプリケーションでそれ以上の性能向上を実現した。特に競争相手であった CDC Star 100や Cyber 203/205 に比べて圧倒的に高いスカラ演算性能とベクトルレジスタによる短いベクトルでの高い演算性能を持ったことでマーケットを支配した。

  しかし、Cray-1の後スーパーコンピューターの性能向上は長期に渡って低迷する。1976年に出荷が始まった Cray-1が 160Mflopsの理論ピーク性能をもったのに対して、1985年にやっと出荷が始まった Cray-2の演算速度はほぼ 10年後であるのにわずかに 2Gflopsであった。Cray-2の少し前に出荷が始まった Cray-X/MPでは 4プロセッサの最大構成でようやく 1Gflopsとなった。この間に、日本の計算機メーカーは VP-200, S-810, SX-2といったベクトル計算機を相継いで発表し、Crayのマシンを上回る性能を実現した。

  この時期の大きな特徴は、浮動小数点演算器の数の増加が極めてゆっくりであったことである。Cray-1は 1ユニットもっていたが、Cray-2でようやく 4ユニット、VP-400, S-810, SX-2も 4ユニットである。この 10年間に利用可能な素子数は大雑把には 100倍になっているので、素子数増加の殆ど全ては演算器数の増加以外の何かに使われたことになる。この、演算器に使われる素子数の割合の急速な低下が、第二期の大きな特色である。

  ベクトル計算機において演算器の増加がゆっくりであった大きな理由は、複数の演算器の間、あるいは1 つの演算器を持つプロセッサ複数の間で物理的にメモリを共有し、しかもメモリと演算器の間に十分な転送速度をもたせる、という設計方針にある。バイポーラ技術で製造されたベクトル並列機では、演算器の数は Cray C-90の 32が最大となる。C-90は 1991年、すなわち Cray-1の 15年後に出荷が始まっている。

  物理的な共有メモリと高いメモリバンドのどちらかあるいは両方を断念すればより多くの演算器をもった計算機を構成できる。このために 1970年代から 80年代にかけては多様な並列計算アーキテクチャ研究が行われた。しかし、1980年代中頃にいたるまで、実際に Cray等のベクトル並列計算機よりも高い性能を実現した並列計算機は殆どなかった。その基本的な理由は、それらの並列計算機では浮動小数点演算器のスループットが 1よりもはるかに低く、グロシュの法則による損が大きかったためである。例えば Intel i286+287を要素プロセッサにしたマシンでは、浮動小数点演算に数十クロックかかった上にクロックサイクルがベクトル計算機の 1/10以下であったため、10000プロセッサ程度にならなければ 16演算器程度のベクトル計算機に対抗できなかったが、それほどの規模のものは実現困難であった。

  しかし、計算機全体における第一期から第二期への変化と同じことが 1980年代中頃に今度は 1チップ LSI演算器で発生した。すなわち、1-2チップで浮動小数点演算器を実現することが可能になった。これはまず浮動小数点演算専用 LSIである Weitek 1164/1165, LSI Logic L64132といったチップで 1985年頃に実現され、Intel i860において 1チップマイクロプロセッサでも実現された。つまり、i860は CDC 7600ないし Cray-1にあたるものを 1チップで実現した。

  これらの演算器を使った並列計算機は筑波大学の QCDPAX[1]、TMCの CM-2、さらには Intel SSDの iPSC-860、Touchstone、Paragon等があるが、どれも同じ時期のベクトル並列計算機に比べてピーク性能に関する限り圧倒的に高い価格性能比を実現した。これらでは、分散メモリアーキテクチャを採用することでノードあたりのコストを下げている。もっとも、マイクロプロセッサベースの超並列システムの商業的な成功は 1993年に発表された Cray MPP (T3D)を待つことになる。これは DEC Alpha 21064ベースであり、当初 1チップ 150Mflopsとほぼ Cray-1に匹敵する演算速度と、STREAMベンチマーク実測で 400MB/sに及ぶ高いメモリバンド幅(Cray-1は理論ピーク 640MB/s) を実現した。さらに、高速なノード間ネットワークももたせたことで T3Dでは実用的なアプリケーションで高い性能を出すことが比較的容易になったことが商業的成功につながったと考えられる。

  こうして、1990年前後にマイクロプロセッサベースの超並列システムの古典的なベクトル並列計算機に対する優位性はほぼ確立した。1993年には航技研数値風洞(富士通VPP-500)が発表され、ベクトル並列計算機も分散メモリアーキテクチャになったことで 1980年代の停滞から脱出し、飛躍的な性能向上を実現した。これは地球シミュレータを経て NEC SX-9につながる流れになっている。しかし、価格性能比でみる限りマイクロプロセッサベースのシステムと競合するのは困難になってきている。

  一方、マイクロプロセッサベースのシステムも、1970年代後半にベクトル並列機が停滞期にはいったのと全く同じ停滞が長く続いているのが現状である。これは、高性能マイクロプロセッサが持つ乗算器の数の過去20 年間の増加速度をみれば明らかである。1989年に 1だったものが、2007年の 4コアプロセッサをもってようやく 8まで増加した。これは、Cray-1から Cray C90までの 15年間に 32倍よりもさらにに遅い、18年間にわずか 8倍である。LSIの設計ルールはこの間に 1μmから 65nmになり、およそ 200倍以上の数のトランジスタが使われるようになっている。

  従って、1990年代初めにベクトル並列計算機に対してマイクロプロセッサベースのシステムが持っていたような優位性を現在のマイクロプロセッサベースのシステムに対してもっている何かが可能なはず、と考えられる。これが、新しいアーキテクチャを考えるべきである背景である。

  マイクロプロセッサにおいて演算器の数を増やすことの障害になっているのは、アムダールの法則といわゆる「メモリーの壁」の 2つである。これらはどちらも 1980年代にベクトルプロセッサの演算器の増加の障害になっていたものと本質的には同じである。しかし、大きな違いは、1990年代にはメモリバンド幅の不足は共有メモリから分散メモリに移行することで解決できたのに対して、現在のマイクロプロセッサでは外付けのメモリバンド幅を大幅に増やす方法は存在しないことである。このため、問題は同じだが解決は同じではない。

目次]   [1ページ目] [前ページ] [次ページ]  [Q&A

All Rights Reserved, Copyright©サイエンティフィック・システム研究会 2007