情報学部 菅沼ホーム

処理速度の向上

  1. クロック周波数置

      今まで,コンピュータの処理速度を上げるため様々な工夫がなされてきました.最も直接的な方法は,Ⅱ.1 節において述べた CPU のクロック周波数を上げることです.一般にある命令を実行するためには数サイクル(命令によって異なる)必要です.同じ命令体系であれば,クロック数を変化させても,その命令を実行するために同じサイクル数が必要となります.そのため,クロック周波数が 2 倍になれば,半分の時間でその命令を実行可能になります.勿論,クロック周波数を変化させるだけでは目的とすることを実現できません.集積度を上げる(配線を短くし,その間の信号伝送速度を早くする),アクセス時間が短いメモリを使用する,等の処理も必要になります.

  2. パイプライン処理

      パイプライン処理方式では,命令実行サイクルを複数のステージに分割し,複数の命令をステージをずらして同時に実行することによって高速処理を実現します.例えば,
    a1 * b1 + a2 * b2 + a3 * b3
    			
    のような処理について考えてみます.いま,乗算が 5 つのステージで実行され,各ステージの実行時間がクロック周波数の 1 サイクルであったとします.基本的な逐次制御方式であれば,3 つの乗算を実行するために,以下に示すように 15 サイクル必要です.

    しかし,パイプライン処理を行えば,以下に示すように,7 サイクルで 3 つの乗算を実行可能です.

      パイプライン処理は,行列やベクトルの演算のように,データだけが異なる同じ演算が連続して行われるような場合は有効に働きます.しかし,ある命令の実行が完全に終了しない限り次の命令が実行できない,分岐命令のように命令の実行によって次の命令が変化する,ような場合は有効に働きません.

  3. 並列処理と量子コンピュータ

      プログラムによっては,同時に,かつ,並列的に実行可能なものも存在します.例えば,上に示した例において,3 つの CPU が存在すれば,3 つの乗算を同時に実行可能となり,実行時間は 5 サイクルとなります.また,画像データを画面に表示する場合,各セル毎のデータを順に画面に送っても表示可能ですが,表示速度は非常に遅くなります.しかし,複数の CPU があれば,各 CPU によって各領域のデータを同時に転送することも可能です.これが,先に述べた GPU の目的です.1 チップ内に複数のプロセッサを内蔵するマルチコアも,並列処理を目的としていますが,プログラムの全てを並列的に実行できるわけではありませんので,コアの数が 2 倍になれば,処理速度も 2 倍になるというわけではありません.プログラムによって,その結果は大きく異なります.

      モンテカルロ法組合せ最適化,暗号の解読なども並列処理が有効な問題の一つです.しかし,モンテカルロ法の繰り返しの数や組合せにおける場合の数が天文学的な数字になった場合,その数に見合う CPU を実装させることはほとんど不可能です(例えば,50 都市を対象とした TSP の場合,その場合の数は 1.52 × 1064 程度).

      これらの問題を解決できる可能性を秘めたものが量子コンピュータです.ただし,現時点で,商用的な量子コンピュータを実現可能か否かも明確でありませんし,暗号解読などの一部の問題を除いて,多くの問題に対するアルゴリズムも未定の状態です.なお,量子とは,原子,陽子,電子,中性子,クォーク,光子などを指しますが,量子コンピュータでは,電子または光子を利用します.

      従来のコンピュータでは,ビットによって構成されたデータを処理対象とし,AND,OR,NOT などの論理ゲートを使用して演算を行います.量子コンピュータにおいて,ビットに対応するのが量子ビットになります.1 個の量子ビットは同時に(確率的に) 0 と 1 という状態を取り得ます(量子重ね合わせ).さらに,2 個の量子ビットでは,00,01,10,11 という 4 つの除隊を同時に採ることができます.結局,n 個の量子ビットでは,2n 個の状態を同時に採ることが可能となります.n の値が大きくなれば,1 台のコンピュータ内にほとんど無限の状態を同時に作り出すことができ,この状態に対して,量子ゲートを適用し,様々な処理を並列的に実行することが可能になります.

      量子ビットを生成する方法としては,例えば,

    • 超伝導量子ビット
    • イオン・トラップ量子ビット
    • 光量子ビット

    などの方法が考えられています.現時点で,実装されている量子ビットの数は,数十~数百程度ですが,「誤り訂正」機能を持った商用的な量子コンピュータを実現するためには,少なくとも数百万個の量子ビットを実装する必要があると考えられています.現在,試験駅に運用されている量子コンピュータにおいては,誤りの訂正をソフトウェア的に行っています.商用的な量子コンピュータが実現するのはいつになるか明確ではありませんが,いずれにしろ,量子コンピュータは,現在のパソコンなどと置き換わるものではなく,並列計算が有効な特定の問題を解くためのコンピュータになると思われます.

情報学部 菅沼ホーム