- HOME
- 研究
- サイエンス&テクノロジー
- 並列処理技術でコンピュータはもっともっと速くなる —本格的なマルチプロセッサ時代の幕開け—
並列処理技術でコンピュータはもっともっと速くなる
—本格的なマルチプロセッサ時代の幕開け—
コンピュータ理工学部 コンピュータサイエンス学科 新實 治男 教授
本格的なマルチプロセッサ時代の幕開け
かつて、スーパーコンピュータと一般のコンピュータとの間で異なっていた構成方法のひとつに、複数個のプロセッサ※1で同時に計算を行い処理速度を高める「マルチプロセッサ」という方法がありました。ところが近年、一般のユーザが使うパソコンや家庭用のゲーム機などでも、かつては考えられなかったマルチプロセッサを搭載したものが登場しています。今やコンピュータは本格的なマルチプロセッサの時代を迎えたのです。マルチプロセッサとはいったいどういう技術なのか、コンピュータの並列処理技術がご専門の新實治男先生に近年のスーパーコンピュータの開発競争なども併せて、お話いただきました。
1台より2台の方が速い
コンピュータを作るときに、至上命題とされるのは「いかに速いコンピュータを作るか」ということです。コンピュータは年々速くなり、一般のユーザが計算速度で困ることは極めて少なくなりましたが、たとえば地球規模の環境変動をシミュレートするといった、膨大な計算を要する課題に対しては、まだまだ十分な計算能力とは言えません。
2002年から日本で運用開始されたスーパーコンピュータ「地球シミュレータ」は1秒間に約40兆回の浮動小数点数※2の計算ができます。しかし、それでも全地球の気候変動をシミュレートするときには地表を1億個程度にしか分割していないのです。1億個の区画に分割しているというと、十分に細かいように聞こえるかもしれませんが、地球の全表面が対象ですから、実は1区画あたり一辺数km〜十数kmにもなります。数km四方の中で起こっている気象現象を一つの点で代表させて表すわけですから、十分な精度とは言えないでしょう。
コンピュータの計算速度を向上させるには、一つひとつのプロセッサの性能を向上させることに加えて、プロセッサを複数個つなげて計算させる「並列処理」という方法があります。1台で計算するよりも2台3台…で協力したほうが当然計算は速くなるからです。
※1 プロセッサ:コンピュータの頭脳であり、核となる部分で「CPU」とも呼ばれる。
※2 浮動小数点数:たとえば12,300を1.23×104というふうに、1.23(仮数部)と4(指数部)との組合せで表現した数のこと。絶対値の極端に大きな値や小さな値を表現するのに適している。それに対して12,300といった普段の表し方は「固定小数点」と呼ばれる。一般に浮動小数点数の計算の方が固定小数点数の計算よりも時間がかかる。また、多くの数値計算プログラムでは浮動小数点数での計算を行う。これらのことから、コンピュータの計算能力を表す尺度としては、1秒間に浮動小数点数での計算が何回できるかを表すFLOPSという単位が用いられている。
クラスタシステムとマルチコア
プロセッサを複数個使って計算をさせる方法のうち、最近よく用いられるものとして次の2通りのやり方があります。ひとつが「クラスタシステム」と呼ばれる方法で、もうひとつが「マルチコア」と呼ばれる方法です。
クラスタシステムでは、システムを構成する複数台のコンピュータのそれぞれにプロセッサが搭載されていて、それぞれは単独でも動かすことができます。そして、そのコンピュータ同士をネットワークで結びつけて、一つの大きなコンピュータとして使う並列コンピュータシステムです。
一方、マルチコアは複数のプロセッサをひとつのマイクロチップの中に搭載します。みなさんの身近なところでは、ソニーの最新の家庭用ゲーム機がマルチコアのチップを使用していますし、パソコンでも比較的新しい機種にはこのようなタイプのチップが入っています。
以下で、クラスタシステムとマルチコア、それぞれの特徴を見ていきましょう。
スケーラビリティで優位のクラスタシステム
クラスタシステムは、独自に計算を行うコンピュータを複数台つないで動かすため、従来のプログラムそのままで並列処理することはできないという短所があります。ただ、90年代後半ごろからパソコンの規格の共通化や価格の低下によって、そのメリットが注目されてきました。
クラスタシステムの最大のメリットは、スケーラビリティ(大規模化しやすいこと)です。10台でうまくいった並列計算法は100台でもうまく動くことが多く、また、システムを構成する一台一台のパソコンの性能が時代遅れになれば、その一台ずつを交換していくことで常にその時代の技術に見合った計算能力を保つことができます。
この後者のメリットが意外に大きな意味があります。大型コンピュータの開発には一般に長い年月が必要とされます。そのため、5年かけて開発するコンピュータであれば、5年後の技術進展や他のコンピュータの性能を予測しながら設計することになります。設計時点で世界最高の性能であっても、5年後にはありふれた性能ということも少なくありません。しかし、クラスタシステムでは、すでにできあがっているパソコンを使うことで、予測ミスのリスクを避けることができるのです。
プログラムがそのままでも 使えるマルチコア
マルチコアでは、一つのマイクロチップの中に複数個のプロセッサが入っているため、外部からは、従来のプロセッサ1個のコンピュータと変わらないように扱えます。複数個のプロセッサが一つのメモリを共有しているため、従来のプログラムでもとりあえずはそのまま動かすことができます。(ただし、そのままでは十分な性能を発揮させることはできませんが ……)
また、プロセッサ同士で何かデータをやりとりする場合、クラスタシステムのようにいちいちネットワークを通す必要がないので、タイムラグや余分な計算が不要だということもメリットです。
このようにクラスタシステムとマルチコアはそれぞれに異なる長所を持っています。一般にスーパーコンピュータは、一つひとつがマルチコアのコンピュータをさらに複数台つなげています。先ほど登場した地球シミュレータでは、8個のプロセッサを搭載するコンピュータが640台つながっています。
日本が世界に誇る並列コンピュータ
地球シミュレータは2002年当時、世界最速のスーパーコンピュータでした。しかし、2004年にはアメリカのスーパーコンピュータ「BlueGene」にその座を奪われ、世界3位へと転落します。その後も、アジア最速の座は日本のスーパーコンピュータが占めていましたが、2007年にインドのスーパーコンピュータによりアジア最速の座からも転落してしまいます。
現在、文部科学省では、再び世界最速のスーパーコンピュータを開発するプロジェクトを進めています。計画では2010年度内に、地球シミュレータの約250倍の計算速度である1秒間に1京回(1兆の1万倍)の浮動小数点演算ができる性能を目指しています。1京回の計算ができるコンピュータということで「汎用京速計算機」と呼ばれています。
地球シミュレータが地球規模の環境変動を計算対象としたのに対して、京速計算機では、ライフサイエンスとナノテクノロジーの2分野がメインターゲットに設定されています。ライフサイエンス分野では、遺伝子レベルから細胞、器官、骨格、血流など人体の全てをシミュレートできるソフトの開発が目指され、ナノテク分野では、ナノ材料をそのまま解析できるような環境を整えるとのことです。
並列処理のこれから
プロセッサを複数個つなげてコンピュータの計算速度を高めようという発想は、実はかなり以前からあったものです。しかし、コンピュータが非常に高価なものだった時代には、たくさんつなげて使うということがあまり現実的なアイデアではありませんでした。スーパーコンピュータなどの一部例外を除き、コンピュータは一つだけのプロセッサで計算を実行するもの(シン グルプロセッサ)というのが一般的でした。そのため、プログラミング言語などの開発環境もシングルプロセッサが前提とされてきました。
ところが、90年代後半ごろからのプロセッサの高性能化・低価格化により、複数個のプロセッサで並列的に計算を実行させるということが、多くのエンジニア・ユーザに急速に注目されるようになります。現在では、複数個のプロセッサを搭載したコンピュータも簡単に手に入るようになり、並列処理が一般的なものになってきています。
しかしながら、従来までのシングルプロセッサのために整えられた開発環境では、並列処理のメリットを十分に活かせないだけでなく、不都合が起こることもあります。大手CPUメーカーのインテルなどが並列用の開発環境を提案するなど、これからはマルチプロセッサを前提とした時代がやってきます。
ただ、プロセッサをいくつも並べると、並べられたプロセッサが放出する熱量が大きくなるという問題点もあり、単純に並べる個数を増やすだけではいずれ限界が来るでしょう。今の形のコンピュータが登場して約60年、私たちは次のコンピュータ技術への転換点に立っているとも言えます。ひょっとすると10年後のコンピュータは、今とまったく異なる仕組みになっているかもしれません。
トピックス
スーパーリニアアクセラレーション
コンピュータは、計算速度を高めるためには小さく作らなければなりません。なぜかというと、配線を流れる信号にも、そのスピードに物理的な限界があるからです。たとえば1GHzというクロック周波数のプロセッサがあるとします。クロックというのはプロセッサの基本動作のタイミングを制御する信号のことで、その周波数が1GHzというのは1秒間に10億回タイミングを取るという意味です(これは決して超高速というわけではなく現在のパソコンでも使われている程度の性能です)。光は秒速約30万kmで進みますから、10億分の1秒の間に進む距離は約30cmです。つまり、クロック周波数1GHzのプロセッサにとって、30cm以上の距離というのは1クロックで信号が届かない距離ということになるのです。電気信号はさらにその数分の1のスピードでしか伝わりませんから、30cm以上の長さの配線に信号を流すということは、数クロック分の時間が無駄になってしまうということなのです。このようにコンピュータがどんどん高速になってくると、光の速度までも考慮に入れた設計が必要になるのです。
光の速度も考慮
マルチプロセッサによる並列処理では、プロセッサの数を(たとえば)4倍にしたときに計算速度が4倍を超えて速くなるという現象が起こることがあります。この現象のことを「スーパーリニアアクセラレーション(超線形加速)」といいます。「超線形加速」というのは、「線形加速」を超えた加速という意味です。プロセッサの個数をn倍にしたとき速度もn倍になるのが線形加速です。多くの場合、実際には線形加速よりも遅くなるものですが、ある条件が揃ったときに線形加速を超えることがあります。コンピュータの性質上、コンピュータのメインメモリを使うよりも、プロセッサのより近くにあるキャッシュというメモリを使うほうが計算が速くできます。プロセッサが増えて一つひとつのプロセッサが担当する計算量が小さくなると、コンピュータのメインメモリを使う割合が減少し、より多くの計算をキャッシュだけで行えるようになるため、このような現象が起きるのです。
アドバイス
コンピュータは文系も活躍できる分野
コンピュータを学び、研究するという分野は、どうしても理系というイメージを持っている人が多いかもしれません。しかし、私はこの分野は「文系」の人が活躍できる余地の大きい分野だと思っています。本来、高校で文系と理系とに分けることにはあまり意味がありません。入試科目との関係で、どちらのほうがより得点できるかによって便宜的に分けただけの分類に過ぎないからです。専門的な勉強は、高校レベルの基礎さえしっかりとできていれば、入学してからいくらでもできます。情報に興味があるのに単に数学や物理ができない(試験の点数が悪い)という理由だけで文系に進学するのはもったいないように感じます。特に、情報技術はユーザに評価されなければ生き残れない、使う側の視点が重要な分野です。文系的な発想の得意な学生諸君が参加してくれることで、非常におもしろくなる分野なのです。
コンピュータ理工学部 コンピュータサイエンス学科 新實 治男 教授
- プロフィール
-
工学博士。専門は超並列コンピュータシステムの構成方式。コンピュータシステムの性能を格段に向上させるために必要不可欠な並列処理の諸技術を研究対象とする。ハードウェアアーキテクチャからオペレーティングシステム、プログラミング言語、各種応用にいたるまで、幅広く総合的に取り組む。コンピュータが使い易くなっていくということは、ハードウェアもソフトウェアもブラックボックス化していくということ。しかし、エンジニアはすべての仕組みを理解したうえで設計に臨むべきだという方針のもと、学生の指導にあたっている。