本文へジャンプ

コンピュータアーキテクチャは巡る

平木先生の「アーキテクチャはスパイラル状に進化する」という説はとてもおもしろかったのですが、「ポスト・ムーアの法則」と言われている現在、果たしてこれからもずっとスパイラルの軌道をたどって進化していけるのでしょうか。ご説の続編をお聞きしたいのですが。

それじゃあ、まずスパイラルの話からさらいましょうか。基調となる技術トレンドがスパイラル状に周回していくという話。

コンピュータが今の形をとるようになったのは、おおよそ70年くらい前です。それから現在にいたるまでの間に、回路を組むのに使うデバイスの技術が真空管からトランジスタ、IC、LSIへ、さらにLSIも微細化するという具合に進化して、回路の集積の度合を高めてきました。そして微細化と集積が十分に進むたびに、コンピュータは姿も大きく変わって次のステージへと進んできたんです。

最初はトランジスタや抵抗を箱の中に並べて配線していたものが、次には配線を印刷したボード(プリント基板)にICやLSIを乗せる時代になり、そのうちにボード上に構成していたプロセッサの機能を1つの小さな半導体チップに押し込んだマイクロプロセッサが登場し、それも性能と機能が成熟すると、1つのチップに複雑なシステムや複数のプロセッサを詰め込むようになりました。おおまかに、「箱」の時代、「ボード」の時代、「チップ」の時代、さらに「システムオンチップ(SoC)」の時代。ここまでいいですか?

で、このような変化の間にも、デバイスの微細化は着々と進んでいきます。デバイスが微細化するということは、配線が短くなって動作が速くなり、一定面積にたくさんの回路を詰め込めるということです。プロセッサアーキテクチャは、豊かになったデバイスを使用して高速化のためのロジック回路がたくさん組み込まれるようになり、最初単純だったものが、だんだん複雑になってきたわけですね。

まずは、キャッシュ、メモリコントローラ、パイプラインといった機構が付け加えられる。これは、箱、ボード、ワンチッププロセッサのどの時代も同じです。さらにデバイス技術が爛熟して素子がふんだんに使えるようになると、高級言語やアプリケーションに特化したプロセッサまで作られるようになります。これを高級化と言ったりしますが、これも極めていくと、こんなに複雑なことをしなくても単純な汎用のアーキテクチャにして複数集めればいいではないかと考えられるようになります。そのころにはデバイス技術が一段飛躍し、コンパクトで単純なプロセッサを集積した、新しい形のコンピュータが現れます。

これで一巡ですね。繰返しとはいっても、デバイスの特性や利用形態に合わせてアーキテクチャも少しずつ変わっていき、次第に洗練されるので、技術はスパイラル状に進化していることになります。 コンピュータができてから今までに作られてきたコンピュータを見ていくと、基調となる技術トレンドは20年から25年くらいで変わっていきます。

多機能で複雑なものがいいのか単純なものがいいのかという問題は、今も決着がついていません。1990年代には、複雑な動作の命令を用意して、1回の命令でたくさんの仕事をさせるのがいいのか(Complex Instruction Set Computer :CISC)、あるいは高速だけど単純な動作の命令を用意して、それを組み合わせて実行するほうがいいのか(Reduced Instruction Set Computer:RISC)という論争がありました。今は、ワンチップに多数の計算コアを搭載するメニーコアプロセッサの流れがあって、計算コア単体を単純にするか、もっと多機能で複雑なものにするかという議論があります。それは、同じ種類の問題です。
高級化についていえば、ベクトルコンピュータはシミュレーションで多用する数値計算に特化した最たるものですし、今はまたGPU装備のシステムが盛んに使われています。かつて人工知能に注目が集まったときには、LISPや記号処理※1を高速化するコンピュータが作られましたが、時代を下るとJavaを高速化するプロセッサが作られましたし、現在は応用向きのFPGAを内蔵したプロセッサ、特にAI向けプロセッサが登場しているでしょう? だいたい、高級化には常に2つの方向があると私は見ています。ひとつは社会現象も含めて世の中の現象をシミュレーションすること、もうひとつは人工知能、世の中を理解するということですね。

現在はちょうど、基調となるデバイス技術が爛熟してさかんに応用に特化したプロセッサが作られている時期です。高級化して人工知能という声が出るのは、そのときのデバイス技術の末期、デバイス技術が大きく飛躍する直前と相場が決まっているんですよ。

※1 数式処理、言語理解、論理、推論などを行うための記号処理。たとえば、「f(x)=x^2 を微分するとf'’ (x)=2xになる」というような処理ができるもの。

ページトップへ戻る