3.1 ア−キテクチャ
3.1.1 VLSIアルゴリズム・アーキテクチャ・リバイバル 天野英晴委員
3.1.1.1.はじめに
1980年代のはじめにVLSIアルゴリズム・アーキテクチャの研究が盛んに行われた。これらの研究は、それまで既存のアルゴリズムやアーキテクチャをいかにLSI上に実装するか?を考えてきたのに対して、むしろLSIに適合したアルゴリズム・アーキテクチャを開発しようとする動きであった。
これらの研究を通して、(1)同一セルの繰り返しパターンから成る。(2)セル間 コミュニケーションがローカルで済む。(3)入出力ピンが少なくて済む。アルゴリズム、アーキテクチャが提案され、特にH.T.Kungの提案したシストリックアレイは、その高い並列性とデータ流に対する巧妙な処理によって注目を集め、実際にシステムも実装された。
しかし、これらのVLSIアルゴリズム・アーキテクチャは、結局多く チップが実装されることなく、1980年の中ごろ以降、RISCに代表される汎用マイクロプロセッサの性能の飛躍の陰に隠れるように姿を消してしまった。
なぜ、VLSIアルゴリズム・アーキテクチャは勢いを失ってしまったのだろうか?本節では、まず80年代当初の研究を振り返り、この原因を考える。そして、これらの研究に光を当て、新しい状況に即したアルゴリズム・アーキテクチャの可能性について考える。
3.1.1.2 VLSIアルゴリズム・アーキテクチャとは?
登場の背景
1980年代はじめ、LSI技術は着実に発展を続け、32bitプロセッサがLSI上に実装可能になった。RISCが提案され、LSIに適したプロセッサは何か?ということで議論が始まりつつあった。この時代はCPUを始めとする様々なシステムがLSI上に搭載できる可能性が現れる一方で、LSIのプロセス実装技術ではなく、設計上のコストの大きさ、困難さが始めて認識されつつあった時代であった。この辺、システムLSIが実現化しつつある現在と多少似たような状況が見られたのである。
今までボード上で実装されていたシステム、たとえばVAXなどの複雑な構造のプロセッサをLSI上に実装しようとすると、設計は困難を極めた。当時はもちろんハードウェア記述言語もなく、CAD技術は未熟、設計はゲートレベルで行うしかなかったし、ジャンパやリメイクが容易なボードレベルの実装に対して、チップ内で設計が決まったら修正が利かないというプレッシャーは大きい。それで困難の末チップ上に搭載してみても、結局思ったより性能が上がらないのである。
これは、既存の構造のシステム、アルゴリズムを無理やりLSIチップに合わせたのが悪かったのではないか?LSIに合わせてアルゴリズム・アーキテクチャ自体を変える必要があるのではないか?このような考え方で始められたのが一連のVLSIアルゴリズム・アーキテクチャ研究である。(様々な文献があるが、ここでは代表例として[1][2]を挙げるに止める)
この研究ではVLSIチップについての以下のような認識に基づいている。
(1)VLSIチップに関して
(a)チップ内の配線は面積を大きく消費する。
(b)配線上の伝播遅延は処理速度に対して無視できないほど大きい。
(c)チップ外部との入出力用のピン数は限られている。
(2)VLSIの設計に関して
(a)VLSIの設計、テストについてのコストはチップ自体の製造コストに対し無視できぬほど大きい。
(b)開発期間を短縮することにより新しいプロセスを利用することができ、有利になる。
このことからVLSIに適したアーキテクチャは以下の特徴を持つことが好ましいとされた。
(1)単純なセルの繰り返し等の規則的な構造を取る。このことにより、設計を容易にし、設計・テストのコストを削減する。
(2)通信コストを重視した構成を取る。したがって、特に密なデータ交換を必要とする結合は隣接セルのみの間で行われることが望ましい。
(3)単純セルの繰り返しで高い性能を得るためには、並列処理、パイプライン処理を効果的に利用することのできるアーキテクチャが望ましい。
(4)計算操作と入出力操作のバランスをうまく取り、入出力ピン数の制限が性能に影響を与えないアーキテクチャが望ましい。
シストリックアレイ
VLSIアルゴリズム・アーキテクチャの代表選手はH.T.Kungの提案したシストリックアレイである。このアーキテクチャは、単純な計算能力を持つセルを規則構造に接続し、並列かつパイプライン的に動作するものである。外部との通信は境界セルのみで行われ、セル全体は単一のクロックに同期して計算とデータ交換を行う。ちょうど心臓の鼓動に合わせて血液が流れるようにリズムカルに計算とデータ交換を行うことからシストリック(鼓動)アレイと呼ばれる。
シストリックアレイの最も簡単な例が図1に示すパターンマッチ用のアレイである。この例ではセルは一次元に配列され、各セルは1文字の比較を行う。図に示すようにアレイの一端からはテキストを、他の一端からはマッチするパターンを入力すると、各セルは並列に比較を行い、一回パターンとテキストを流してやれば、全照合が終了する。各セルは1クロックごとに「比較動作」とアイドルを繰り返しており、これがシストリック的な動作である。
図1 Systolic Array for pattern matching
図2は、幅Wを持つN×Nの帯行列とN次元ベクトルxの積を求めるアレイである。この例では一端からxを入力し、上方から帯行列要素を入力してやると、データがぶつかったセルで積和(y=y+ax)が取られ、それが流されることによって答えyが出力されていく。必要なセル数はW/2、実行時間は2W・Wである。
図2 Systolic Array for Matrix vector multiplication
他にも6角アレイによる行列の積計算用アレイ、コンボリュ−ション、フーリエ変換などに対して様々な構造のアレイが提案された。
シストリックアレイは、交信が完全に局所的に行われること、セルの規則構造、並列、パイプライン処理の利用、入出力と計算のバランスの点で先の条件を良く満足している。しかし、すべての応用分野についてこのようなアルゴリズムを構築することは難しい。そこで、シストリックアレイにグローバルバスを付加したセミシストリックアレイも研究された。この構造によりFIRフィルタ等の分野にも適用が可能になる。図3は一種のグローバルバスを持ったFIRフィルタのセミシストリックアレイによる実現例を示す。
ここでは省略するが、他にも配列形式を持つ演算回路、正方格子状のアレイを持つ計算システム等がVLSIアーキテクチャとして盛んに研究された。
図3 Semi-Systolic Array for FIR filter
3.1.1.3 VLSIアルゴリズム・アーキテクチャはなぜ姿を消したか?
VLSIアルゴリズム・アーキテクチャは1985年くらいまでは盛んに研究がおこなれたが、1980年後半には勢いを失った。この原因としては様々なものが考えられるが、私見として以下の点を挙げておく。
(1)VLSI設計上の困難がCADの進展によって大幅に緩和されたこと。特に1980年代後
半から急速に発達した論理合成・圧縮技術によって、ハードウェア記述言語によるRTLレベルの設計が可能になった。このことにより、ある程度複雑なアーキテクチャであっても短期間で市場に投入できるようになり、結果として単純セルの組み合わせのメリットが目減りした。
(2)同様にCADの発達により、配線上の遅延が予想したより性能に影響しなかった。
チップ全体に渡るバスは要所にレジスタを入れたマルチプレクサとして実装されるようになり、グローバルバスの実装もさほど気にならなくなった。
(3)パッケージ技術の発達により、予想以上にLSIのピン数を大きくすることができるようになった。依然としてLSI間のデータ交換は性能に大きな影響を与えるが、実はシストリックアレイも構成によってはかなり入出力を要するものもあり、ピン制限が与える性能に対する影響という点で大きく優位に立つことができなかった。
(4)シストリックアレイ自体が当時のチップ上に実装可能なものが少なかった。1980年代はじめのLSI技術では、セルには単純なビット演算や比較演算しか入れることができなかった。このため、シストリックアルゴリズムの中でかなりの割合を占める浮動小数点演算を伴うアルゴリズム(行列演算、FFTなど)を1チップ上に実装することができなかった。
(5)シストリックアーキテクチャはセル間の交信路、セルの構成が固定されてしまっており、変更を行うことが難しかった。このためきわめて特定されたアルゴリズムに制限されてしまった。
このような状況で、VLSIアルゴリズムのFlagship的な存在であったシストリックアルゴリズム、アーキテクチャの失速によって、VLSIアルゴリズム、アーキテクチャの研究は下火になり、その考え方や成果が忘れ去られようとしている。(もちろんシストリックアレイは最近でも一部で研究、実装が行われている。、またシストリックアレイを実証するために開発されたWARP[3]はiWarpの実現に関連してVLIWアーキテクチャという凄い副産物につながっている)
3.1.1.4 ネオVLSIアーキテクチャの可能性
VLSIアルゴリズム・アーキテクチャ登場の背景には、
(1)半導体の面積を効率的に利用するためのアーキテクチャの設計能力が追いつかなくなった
(2)半導体上に様々なシステムが搭載される期待と必要性が広がった
の2点があり、現在、回りまわってかなり似通った状況になっている。半導体の面積の増加は、発達したCADを用いたとしても、効率的に利用する設計を行うことが困難になりつつあるし、様々なシステムを単一チップに搭載するシステムLSIへの期待が広がっている。したがって、今VLSIアルゴリズム・アーキテクチャに再び光が当たる可能性はあるといえる。
まず、単純に考えて状況が変わったことによって以下の点が有利になっている。
(1)現在複数の浮動小数点演算器をセルとして単一のLSIに実装可能となっている。
このことにより長年実現が困難だった数値演算向きVLSIアーキテクチャが実際に構築可能になっている。
(2)LSI-IPの発達により単純なセルの構築がきわめて容易になっている。
応用分野によっては、昔のアルゴリズムを掘り出して実装するだけで、ある程度の成功を収めることができるかもしれない。しかし、それでは本格的なインパクトを与えることは難しい。そこで、さらに状況の変化を考えて、VLSIアルゴリズム・アーキテクチャを練り直す必要がある。
手品の種は以下の通りである。
(1)DRAMの混載技術:シストリックアルゴリズムは基本的にメモリは外にあり、データは流し込むもの、として設計されている。これは当時LSIチップ中に大容量のDRAMを混載させることが困難であったためである。ところが、シストリックアルゴリズムの中で最も巧妙な方法のうちのいくつかは、かなり大容量の、しかも固定したデータを繰り返し流し込む必要が生じてしまう。図1の照合パターンや図2の行列がこれに当たる。これらをDRAMに格納しておき、アラインメントを考えてカラムバッファに対して一度に読み出すことによって、シストリックアレイの使いやすさと応用分野を広げることのできる可能性がある。もちろんシストリックだけではなく、他のVLSIアルゴリズムとDRAM混載技術の組み合わせも魅力的である。
(2)FPGAとの組み合わせ:VLSIアーキテクチャの弱点は往々にして、その構造の柔軟性が不足している点にある。FPGAと計算セルを効果的に組み合わせることにより、ReconfigurableなVLSIアーキテクチャを考えることができる。最近のReconfigurable SystemあるいはCustom Computing Machineの研究の発達[4]は、この方向性に対して大きな助けとなる。
(3)CPUコア、DSPコアとの組み合わせ:1980年代と異なり高性能のCPUやDSPがIPとして容易に使える以上、セルを専用のハードウェアにする必然性は少ない。IPを有効に利用することにより柔軟性の乏しさを補うことができる可能性がある。
以上、種はあるが、有効な組み合わせには、かなりの研究を要し、我々にとっての大きな課題である。
3.1.1.5おわりに
本節ではネオVLSIアルゴリズム・アーキテクチャについての可能性を論じたが、残念ながらこのような観点は現在の所全く個人的なもので、研究としても立ち上げ段階である。
この研究領域は研究プロジェクトとしてはかなり広い領域となる。
(1)混載LSI技術、IP技術とリンクする。
(2)アーキテクチャ技術がもちろん研究領域として考えられる。
(3)アルゴリズムの研究が必要である。
(4)アルゴリズム記述に関するソフトウェア的な研究が必要である。
(5)アーキテクチャレベルに及ぶ高位論理合成技術が必要である。
残念なことに、現在Flagship的な構成やキラーアプリケーションが存在しないのが問題であり、すぐに大プロジェクトとしてスタートさせるのは困難であるが、少なくともシステムLSI時代に向けて、当時の研究を振り返って考えることは必要だと思われる。
参考文献