第 5 章 ポリプロセッサと超並列処理

1. 超並列処理の概念
1.1 相似的思考と点対称的思考

. . 人間は目に見えない現象を考えるとき、同じような性質を持つと考えられる目に見える現象を思い浮かべるか、先人が既にそれを基に作り上げた構図を脳裏に描く。例えば、原子や電子という言葉に対して太陽の周りを惑星が回るのと同じように原子核の周りを電子が回る構図を描く。即ち、目に見えない世界は見える世界と相似であると考える。著者はこれを相似的思考と呼び、それにより構築された模擬システムの機能構造を相似的機能構造と呼ぶ。人間は目に見える現象やその時点までに構築された模擬システムの示す現象に矛盾しないように新たな現象の模擬システムを相似的に構築できたとき、その現象は解明されたと考える。しかし、やがて挫折を迎える。それは目に見えない世界は見える世界と相似ではないからである。
. . 自然科学の黎明期には太陽が地球を回ると信じられていた。目に見える範囲で天体や地球上の諸現象を観察している限りそれで矛盾はなかったのであるが、現在では誰もがそれは錯覚であり地球が太陽を回ると信じている。鉄は幾ら細かく砕いても鉄の性質を失わないと考えられた時代があった。これはまさしく相似的思考であり、やがて発想の転換を迫られることとなり、分子、原子の発見によりミクロな世界はマクロな世界とは著しく異質な機能構造を持つという考えが今日では常識となっている。電磁気学では川の流れのように正の電極より負の電極に向かって正の電荷が流れると考え、これを電流と名付けて微分方程式という高度な数学的技術を駆使し、様々な電磁気現象の解明に成功してきたが、やがて、これも挫折を向かえる。負の電極より正の電極に向かって負の電荷を持つ電子が流れるという発想の転換により電子、電磁気学は著しい発展をし、今日の電子、電気工学や産業の隆盛を向かえることができた。
. . 電流がアナログ量であるのに対して電子流は粒子であり、マクロな目で見ても単に逆極性のアナログ量ではなく、Flemingの左手の規則は右手で表され、両方の中指を突き合わせれば面対称となる。磁界と力の方向も逆極性にすれば電子流は電流に対して点対称となる。このような機能構造を考えることを点対称的思考と呼ぶ。幾何学的な点対称に限らず、相似に対して著しく対立的な機能構造を持つ場合にこのように呼ぶ。アナログに対してディジタルという概念があるが、これは点対称的とは言えない。電子流はマクロな目で見ても電流とは逆極性であるが、ディジタル量はマクロな目で見ればアナログ量と同じであり、その最小単位が、アナログ量は無限小であるのに対してディジタル量は有限の大きさであるに過ぎない。
. . 炭素を混ぜた鉄は鋼鉄と言われ、焼き生せば鉄と殆ど同じであるが、焼き入れすれば非常に剛性が強くなり、スプリングや刃物に適した性質を持つ。様々な金属を混入した合金は元の金属の性質に著しい変化をもたらすこともよく知られている。半導体では僅かな不純物を混ぜたものを組み合わせると増幅作用を持ち、トランジスタやICとしてコンピュータ技術に大きな貢献をしている。これらも単に大きな固まりとすれば材料力学の対象としての剛性の異なる物質に過ぎない。相似的な増大により、ミクロな機能はどの部分にも一様に存在するのでその合成機能は平均化され、マクロな機能は生じない。即ち、相似性を崩すことにより新たな合成機能が生まれるが、相似的増大ではミクロな機能は失われる。
. . トランジスタを用いてAND,OR,XOR,NOT等の論理素子が作れる。2つの2入力ANDの出力を他の1つの2入力ANDに入力する方法で相似的に拡大した場合にはその出力が1になる確率は零となり、論理素子としての意味を失う。他の素子も同様であり、これらを論理的に組み合わす、即ち、非相似的拡大により加減乗除やメモリ等の高度な機能を生じ、更に、これらの組み合わせによりコンピュータという高機能システムを構築することができた。しかし、機能の進化はこゝで停止してしまった。コンピュータが中央制御装置のメモリ制御により動作するように、中央制御コンピュータが、超LSI化されたマイクロコンピュータや他のコンピュータをアドレスで結合し、制御する超並列接続やネットワークという相似的なシステム拡大により人間の脳の高度情報処理機能を実現しようという相似思考が蔓延し始めた。
. . 人間の受精卵は細胞分裂を繰り返し、魚や四つ足動物の形態を経て成長する。生物進化の過程を経て成長し、母体と相似になったとき出生し進化は停止する。このようにして母体と相似な多くの個体が作られ、これを種と呼ぶ。親と相似となったとき進化が停止することにより種が維持される。相似思考の蔓延はコンピュータの進化の終点であり、これをコンピュータのメモリと相似にアドレスで超並列接続しても共同作業に過ぎず、コンピュータの不得手な知的情報処理を人間並みに行うことは期待できない。猿の共同作業により人間の知的情報処理機能を完全に代行することは不可能なのと同じである。
. . 進化論否定論者は中間の種が存在しないことを否定理由にあげるが、種は進化の一分岐の終点であるから中間種は存在しない。ANDとORの中間論理や加算と乗算の中間演算は存在しないし、ラジオ全盛の時代からテレビの時代になり、両者の機能を備えた機器は存在し得るが、どちらにも似ているがテレビでもなくラジオでもない中間機器という様な意味のない機器は存在し得ない。同様に、類人猿と人間の中間種は存在しない。類人猿が人間に進化するのではなく、人間の製造工程又は設計図が類人猿のそれと良く似ていて進化しているのである。コンピュータの設計図にも進化が必要である。

1.2 情報処理における点対称的思考
. . 胎児は母体と点対称な姿勢を保ち、出生により相似な姿勢となる。脳機能は、右半身は左脳に、左半身は右脳に、身体の前部は反対側の脳後部にと身体と点対称に対応している。胎児も母体の一部であるから点対称な姿勢を保つのである。これらは脳における情報処理は外部の目に見える情報処理とは点対称的であることを示す。複雑な計算を必要とする情報処理も脳では簡単に処理できるから赤ん坊でもパターン認識や言語処理ができる。親でも知らないFourier変換や国語文法による解析を赤ん坊が行える筈がない。このようなものは知らなくても脳はコンピュータに負けない知的情報処理機能を持っている。
. . コンピュータでのパターン認識や音声データ処理においては積分解析が行われ、逆に元のデータを再現するときも積分が用いられる。周波数解析をFourier変換により行えば解析結果から元のデータを再現するには逆Fourier変換が用いられる。これは相似思考である。人間の動作機構の筋肉が積分機構であることは明らかであり、従って、脳における解析は微分解析でなければならない。筋肉の運動は連続的であるから神経を伝播する信号はこれと点対称的なインパルスとなる。筋肉の運動はインパルス応答であり、インパルス駆動される微分方程式の解であるから、筋肉運動や視聴覚により得られるインパルス情報はインパルス応答の逆演算、即ち、微分演算された情報でなければならない。単なるAD-DA相互変換ではない。
. . 微分解析による周波数解析については第4章4.3節において述べたが、Fourier変換がt=0∼∞の積分を必要とし実時間解析は困難であるのに対し、微分解析はt=0におけるy0, Δy0, Δ2y0, ………を求めればよく、t=0の近傍の解析で済む。これは微分方程式の導出と同じであり、微分回路を用いれば、2次共振回路の並列接続により周波数を分離し2階の微分方程式に分解できるのでデータ処理は簡単になる。微分演算は積分演算の逆演算であるが、両者は単に逆ではなく点対称的である。
. . Fourier変換が連続的な周波数成分で元のデータを表すのに対し、微分解析はできるだけ低次の微分方程式、即ち、できるだけ少数の周波数成分により表す。この少数の周波数成分により認識が成功すれば、これら2階の微分方程式の解の合成とデータとの残差は雑音として捨てることができる。Fourier変換の連続的な周波数成分の殆どは全ての場合に共通の成分と雑音であるが、共通成分の除去は困難であり、雑音は予め除去しておく必要がある。微分解析はFourier変換に対して点対称的な周波数解析法である。
. . 関数f(t)は等間隔区分点tk=t0+khの値fkの逐次階差を求めればNewtonの前進補間公式により表される。故に、Newtonの前進補間公式は元の関数の合成であり、逐次階差を求める過程は解析である。合成が加算で行われるから解析は減算で行われる。関数f(t)とNewtonの前進補間公式は相似であるが、逐次階差を一組としベクトルFで表せば、Fはn次元空間の点であり、f(t)と点対称的な関数表現である。
. . 従来、数値積分や微分方程式の数値解法は区分点の関数値、即ち、解y(t)と相似な数値解を求める。著者の演算子法はベクトルY、即ち、n次元空間の点を求める。これは従来法に対し点対称的であり、区分点の関数値だけでなく、Newtonの前進補間公式で表される連続的なtにおける関数値を求めたことに相当し、超並列解法と言うことができる。更に、ベクトル演算がハード的にも並列処理化が容易であることを考慮すれば、著者の演算子法の超並列処理システムをコンピュータの進化の一分岐の有力な候補として挙げることができる。その具体的構想について第2節以降に述べる。

1.3 並列処理と言語における点対称的思考
. . 従来、並列処理という概念は分散処理と略同義の概念と考えられている。多数の計算技手に一つの計算式とそれぞれが分担すべきデータの範囲を与え、全体として膨大な量の計算を並行して行い精密な表を作成するような作業を多数のコンピュータで処理したり、逐次処理的手続きにより行われる科学技術計算に含まれる処理手順の影響のない部分を別のコンピュータにより並行処理したりすることを並列処理と呼んでいる。
. . これらの並列処理は本来逐次処理されるべき作業を人為的に分割し並行処理するものであり、タスク管理や並列コンパイラ等によりその作業を行い配下のコンピュータに指令を出す主コンピュータを必要とし、更に、システムエンジニアやプログラマと呼ばれる人達が一般人には難解な並列言語を駆使して作ったプログラムによる指令を必要とする。LSI技術の進歩により、何千何万のマイクロコンピュータのネットワークによる高度な分散処理が可能となった今日においてもソフト面におけるこの考え方は基本的に変化がなく、プログラム言語は益々複雑化し一般人には到底使用できないものと化している。
. . これらは如何に並列化が高度になっても主コンピュータの能力を超えることはできない。人間社会に喩えるなら民主々義の思想は全く無く、独裁者の支配する社会である。これらの社会は独裁者の能力以上のことはできないのであり、社会の構成員が自らの能力を十分に発揮するには民主化が必要である。コンピュータの並列処理においても同様で、従来の並列処理にある根本的な思想を変える必要があり、特にハードにおいてはノイマン以来の中枢が全体を統御する必要があるという支配者の思想、即ち、配下のコンピュータのアドレスを指定して命令を与え、仕事を配分するという思想を排除しなければならない。それにはコンピュータのアドレスという概念を無くす必要がある。これにより主コンピュータは役目を失い、各並列コンピュータは与えられた外部情報から共同作業により直接自分の仕事を抽出し処理することとなり、主コンピュータの関与によるオーバーヘッドから解放され作業効率を上げることができる。
. . ディスプレイに円を描くのに中心点を照射する電子ビームを円錐状に広げて描ければ理想的な並列処理であるが不可能に近い。実際には円周上の任意のドットから曲率を計算しながら次々と隣のドットを描くという逐次処理により円を描く。円周を8等分し8個のCPUにより各弧を描く並列処理では各CPUの担当する始点と終点を計算して与える分マシン語のプログラムは複雑となる。ドットを描く逐次処理プログラムは全CPUに共通であり予めそれ等の局所ROMに与えておけるが、始点と終点を計算し各CPUに作業割り当てを行う主CPUが必要である。始点と終点の計算も並列CPUに任せるには中心角0°∼45°はCPU0の担当、45°∼90°はCPU1の担当、・・・ と作業範囲を固定しなければならない。このとき主CPUは必要なくなり、並列CPUを結合する共通バスに中心点と半径を与えれば円の並列描画ができる。主CPUのない並列処理では各CPUにアドレスは必要ないが、固定的な結合により作業範囲が規定されていなければならないのであり、ネットワークでは交換機による結合は不可である。交換機による結合は電話と同様にトラフィック理論による安全率を確保する必要があり、効率が低下し、故障や安全率を上回る通信需要によりパニックに陥る危険もある。
. . このような並列描画は逐次処理描画のサブルーチンをコール文で使用することと同様であり、それを使うプログラムは簡単になる。コール文はドットを描く逐次作業を記述していないから並列度の高い命令文であるということができる。この並列命令文は作業の分割も記述していない。これを使うためには、中心点と半径をセットしてからコールするという逐次手続きを要する。BASICの円描画命令CIRCLE文はこれらをパラメータとして記述するだけでその処理手順を記述していないから更に並列度の高い命令文である。2つの円を描くためにはCIRCLE文を2つ逐次処理に記述するが、「中心点AとBにそれぞれ半径aとbの円を描け」と記述すれば円を描く順序を指定していないから並列命令文である。
. . 従って、ハードの並列化はソフトの簡単化に寄与しなければならず、ソフトの並列化はハードの並列化とは独立であり、プログラム言語は簡単化し誰にも使いこなせるものとならねばならない。プログラムの並列化とは必要のない逐次処理手続きの記述を省略することであり、最高の並列言語は自然言語である。しかし、現状はこれに逆行しハードの並列化と共にプログラムは複雑化し、新たな並列言語を生み出し素人にはとても使いこなせないものとなりつゝある。
. . 自然言語は曖昧であると言われるが、2つの円を描く順序のように必要のない処理手順は明確に示さないから、コンピュータを使用するには全ての処理手順を明確に記述する必要があると考える人達には曖昧に思えるに過ぎない。そして、記号論理学の言葉で記述することを最も厳密な記述と考え、三段論法を最高の推論手続きと考えるが、これは典型的な逐次処理手続きである。これらの計算機言語は高級言語であっても並列性及び実用性はマシン語的であり、それ故に厳密であるといえる。

1.4 演算子法の並列性
. . 人間は関数 f(t)=t2 を考えるとき、初期にはグラフ用紙に曲線を描くように適当な点の関数値を逐次に計算し脳裏に点を打ち、それらをつないで2次曲線を描くが、慣れると並列処理となり瞬時に2次関数のグラフを思い浮かべることができる。関数の数式表現はこれら連続的な点集合の全体を表しているのであり並列表記である。2つの関数の演算は個々の点の演算ではなく、点集合同士の演算として数式で記述されるが、これは理想的な並列演算であるということができる。
. . 関数解析や演算子法では関数をベクトル空間の点と考え、関数の形及びそれを表す点集合全体を一つの点の持つ抽象的な性質として取り扱う超高度な並列処理を実現している。特に、微分方程式の解法においてはHeavisideの演算子やLaplace変換が重宝な手段として使われている。しかし、微分方程式の解や微積分の数式処理等は一般には簡単でなく、数値計算という逐次処理手続きが簡便な手法として用いられる。その際、無限にある実数値tの全てを扱うことは不可能であるから適当な間隔のサンプル値について計算されるが、必要なら中間点の値はそれ等の計算結果から補間法等により推定することもでき、サンプル値による計算は全てのtに対する実質的な並列処理と言ってよい。
. . 簡単で馴染みの深い補間法としてはNewtonの前進補間公式があり、これを用いて関数を補間して微積分等の数値計算を行えば全てのtに関する並列処理であることが更に明白に示される。しかし、∑は順番に加えることを意味する逐次表現であり、これをいちいち書くのは取扱いも面倒である。Newtonの前進補間公式はn階の差分を規定すれば確定するからそれらを(y0, Δy0, Δ2y0, ……, Δpy0)と組にして表記すれば関数の形との関連も明白となり分かり易い。更に、各要素に独立の座標軸を割り当てればp+1次元空間の点を表す。著者の演算子法はこれをベクトルYで表すことにより数値関数の簡単な並列表記と並列処理を実現する。
. . 関数同士の四則演算はベクトルの四則演算として行われ、微積分は微積分演算子とベクトルの積として行列演算で行われるが、プログラムはベクトル記号と行列記号の四則演算式として表記され、演算実行時にベクトルの値として各階差の値を一組にして与えることによりベクトル及び行列の具体的な演算がハードまたはファームウエアにより実行され、結果の階差の組がベクトルの値として返される。従って、個々の数値を逐次に計算する手続きをプログラムする必要はなく、BASIC並みの平易な並列処理プログラムが実現される。本章においてはベクトル及び行列の演算をポリプロセッサにより並列処理する方法につき述べ、これにヒントを得た知識情報処理の超並列処理について述べる。

目次へ