ムーアの法則が成立しなくなると、遅いソフトウェアは遅いままだ。ソフトウェア技術者はなにをすべきか~ポスト・ムーア法則時代のコンピューティング(後編)。QCon Tokyo 2016
10月24日に都内で開催されたイベント「QCon Tokyo 2016」で、国立情報学研究所 アーキテクチャ科学研究系 教授 佐藤一郎氏による基調講演「ポスト・ムーア法則時代のコンピューティング」は、IT業界だけでなく社会的にも影響をもたらすと考えられるムーアの法則の限界とその先について、多くの示唆を与えるものとなりました。
(本記事は「いま起きているムーアの法則の限界は、微細化よりも電力と経済性の限界~ポスト・ムーア法則時代のコンピューティング(前編)。QCon Tokyo 2016」の続きです)
ブロックチェーンもムーアの法則の限界に影響を受ける
さて、この講演は実は主催者から「コンピュータサイエンスが生み出す新しい社会」ということで、フィンテックやビッグデータの並列分散処理などの話をしてほしいという依頼をいただいていまして、私としてはムーアの法則の限界の影響が深刻になってきているので、これをIT業界で共有するほうが重要だと思っているのですが、やはり主催者からはフィンテックや分散処理の話をしてくださいとのことだったので、まずはフィンテックの話をします(笑)
いま話題になっているフィンテックの多くは、実は他業種では既に使われている技術が大半で、私が知る限り本質的な新しい技術はブロックチェーン以外に思いつかないんですね。
フィンテックには技術的な話題とそうではない話題があって。基本的に金融機関は世の中でいちばんビジネスプロセスが重い業界で、新しい技術に積極的でないのは、新しい技術を採用するにはビジネスプロセスを変えなければいけないわけですが、それが難しかったわけです。
なので、おそらくフィンテックでいちばん重要なのは、フィンテックがブームになることでビジネスプロセスを変えることに金融機関の経営者が前向きになったというところだと思います。
そう考えると、技術的にフィンテックの話をするとなるとブロックチェーンくらいしかない。
ブロックチェーンはProof of Workという仕組みを採用していて、このProof of Workをどんどん続けていくと、一回あたりのProof of Workの計算コストが増えていくようになっています。
これはムーアの法則によってコンピュータの計算性能が上がっていくことを前提にしているのですが、しかしムーアの法則に限界が来ているとすると、Proof of Workが今後も回っていくかどうか、疑問になります。

解決策としては、Proof of Work専用のマシンを作って一般のマシンよりエネルギー効率をよくするか、たくさんのマシンでProof of Workを処理する代わりに費用の安い電力、例えば水力発電の電力などを使うか、などがあります。そうでないと、いわゆるマイニング業者はやっていけないと思います。
ただし、こうしたことを実際にやれるマイニング業者は多くはないので、今度はマイニング業者の寡占化が進むと、ブロックチェーンというか、ビットコインのフェアネスが維持できるのかが疑問です。
やはりブロックチェーンではあまり前向きな話にはなりませんね。
ポスト・ムーア法則の時代のクラウドビジネスとSIビジネス
話をムーアの法則に戻すと、ムーアの法則が成立しなくなる時代、いわゆるポスト・ムーア法則の時代には、半導体技術を前提とした計算能力の向上が期待できなくなります。
すると、いま遅いソフトウェアはずっと遅いままです。なんとかするのにいちばん重要なのは、ソフトウェアの改良だと思います。

ポスト・ムーア法則の時代のクラウドビジネスは、どうなるか。
半導体を微細化しても消費電力が下がらないというのは、クラウドのコストの大半を占める電気代が安くならないということで、さらに微細化が進んでもサーバの性能があがらないとなると、最新サーバに置き換えても計算量があがらないことになります。
すると、計算量あたりのクラウドの利用料金は下げ止まる可能性が高い。

会場にいらっしゃる方はベンダやSIerの人が多いと思いますが、ポスト・ムーアの法則の時代にはサーバの性能向上や価格低下が進まないとなると、お客様は新しいコンピュータを買っても性能があがらないことに気がついてきます。
いままではシステム更新をすれば前のシステムよりも性能が向上する、というのは暗黙の前提でしたが、それが約束できなくなります。するとお客さんは新しいシステムを買わない、現在のシステムをなるべく長期で使うというところに関心が移ってくるはずです。
そうするとシステム開発やシステム更新で食べている事業者はけっこう厳しい時代になると思います。

ポスト・ムーア法則の時代にコンピュータの性能を上げるには
ポスト・ムーア法則の時代が来るとしても、われわれはがんばってコンピュータの性能をあげていかなくてはいけません。
ハードウェアの性能向上についてはいろんな方法が提案されていて、具体的には7つぐらいのトレンドがありますが、正直なところまだ正解が見つかっていません。

状況としては、生物の進化で言うカンブリア紀に近い。進化の爆発状態がここ5~6年は続くと思います。
いろんなトレンドのなかでどれも重要なのですが、ここでは主催者側の要望もあって分散並列処理などを中心にいくつかを紹介します。
まず、メニーコア化。プロセッサのコア数を増やしていくアプローチです。

ただ、コア数が増えると消費電力が増えるという問題があって、そのためクロックは下げなくてはいけない。なのでこの方向がエンタープライズ系の処理に向いているかどうかは分かりません。おそらく、科学計算や機械学習に向いているでしょう。
過去のスパコンの経験則では、コアを32個以上に増やしてもあまりいいことはない、といわれています。もしかしたらそのあたりに限界があって、スパコンと同じことを繰り返す可能性があります。
また、ソフトウェアでメニーコアを使いこなすには、マルチスレッドプログラミングが必要ですが、これが難しいのですね。
マルチスレッドプログラミングではテストでバグを見つけるのは難しく、網羅的にテストをしてバグを見つけるのは難しいので、ソフトウェアを科学的にとらえて理詰めでバグをつぶしていくしかありません。そのためにはコンピュータサイエンスの素養が重要になります。

次の方向性は、メモリを活かそうというものです。
メモリに使われるDRAMもムーアの法則に依存しているのですが、メモリはプロセッサと違って活性化率が低いので、プロセッサよりもムーアの法則の限界には縛られにくく、微細化の限界、5nmくらいまでいけるのではないかと思います。するとこの先もメモリ容量はさらに増やしていけるので、HDDやSSDの代わりにメモリにデータを置いて、性能向上をするというアプローチです。

不揮発性メモリ(NvRAM)、MRAMやFERAMといった技術も注目されています。NvRAMで、SSDよりも高速だがDRAMよりは遅いけれど大容量なメモリとして利用します。

機械学習などではメモリが多い方が有利になっていて、例えば自動運転のクラウド側などに使われようとしています。
専用ハードウェアやGPUによるアクセラレータのアプローチもあります。

GPUでディープラーニングが流行している背景には、GPUとディープラーニングの相性がよかったということがあります。ただし、いまGPUは一社の一強になっているので、その一社だけに依存するのはちょっと怖いかな、とも思います。
専用チップを作るというアプローチもあります。これはチップの開発費はかかりますが電力効率は高いので、消費電力を気にする業者、例えばGoogleなどが取り組んでいますが、ロジックを設計する技術者の確保が難しいのと、ハードウェアではアップデートができないという課題があります。
またFPGAという方向性もあります。FPGAは専用チップと違ってプロセッサの回路を動的に定義できますが、これもロジックの設計者の確保が難しいのと、複雑なロジックは苦手で発熱が大きいという課題もあり、一長一短です。
とにかくサーバ台数でカバーする、というアプローチもあります。

これは電気代がかかりますが、それは考えずに台数を増やそうというアプローチです。ただし、世の中には「壊れたコンピュータ」と「いずれ壊れるコンピュータ」の2種類しかなく、たくさんのコンピュータはいずれどれかが壊れてしまう。それをどう補完するか。
私の専門はこの辺なのですが、ひとつのデータを複製して複数のコンピュータに保存する。するとアクセスを分散できて処理性能は上がりますが、難しいのはそのデータを更新するときです。
Rack-Scale Architecture(ラックスケールアーキテクチャ)は、インテルなどが推進しているのですが、光ネットワークなど高速なネットワークでCPUやメモリといったモジュールを接続し、アプリケーションに応じて例えばプロセッサをサーバ間でまとめたり、メモリをまとめたり動的にコンピュータを構成します。

こういうものをディスアグリゲーテッドコンピューティングと言って、数年後には流行ってくると思います。
そして、フォンノイマン以外のアーキテクチャのコンピュータというアプローチもあります。

AIに関して言うと、比較的いろんな処理に向いたチップを作る考え方と、特定のAI処理に向いた専用チップを作るという方向性がありますが、ハードウェアの技術としては後者の方が作るのは簡単です。

ただ、一般的なAI処理でも人間の脳を再現する必要はなくて、ハエとかサメくらいの脳でも結構いろんなことができるかもしれないので、もっと単純化してもいいのかもしれません。
ポスト・ムーアの法則の時代にソフトウェア技術者に求められること
最後、いちばん重要な点として、ポスト・ムーアの時代にソフトウェア技術者に求められることは、ひとことで言うと「余計なトランジスタを使わない」これがすべてです。

微細化によって性能向上などが見込めなくなると、結局頑張らなくてはいけないのは、ソフトウェアによる性能向上です。
やらなくてはいけないことはソフトウェアを定量的に解析し、改善すべきところを適切に見つけて、無駄な処理をなくすということ。しかも昔の経験則やノウハウは生かせないので、新規にやらなければなりません。
必要なのは科学的見地からソフトウェアを改良していくこと、に尽きると思います。

アルゴリズムを改良するにしても、ちゃんとアルゴリズムが分かっているのか、対象のハードウェアを分かっているのか、ということが重要になってきます。
しかもハードウェアが多様化していくので、自社で使っているハードウェアと他社で使っているハードウェアは異なっていく可能性が高く、他社からのノウハウや既存のノウハウは使えずに自分たちで考える、ということが求められます。

しかし基本的にコンピュータの根本となる原理原則は変わりません。そしてソフトウェアを科学的な見地からきっちり見るとなると、やはりコンピュータサイエンスをきっちりやることが大事だと思います。
ポスト・ムーアの法則の時代というのは、コンピュータの性能があがらない、つらい時代ですが、一方で、いままで頑張ってシステムの性能をあげてもハードウェアの進化のおかげだと思われていたのが、これからはソフトウェアでの性能向上が正当に評価されるよい時代になるのかもしれません。
まとめ
ムーアの法則に本当に限界が見えてきていて、性能コスト比が改善しない時代になってきています。
この先、ムーアの法則に限界が来ると、コンピュータの性能があがらなくなってくるので、ソフトウェアで頑張るか、特殊なハードウェアを使うしかない。
そうしたなかで皆さんに生き抜いてほしいし、生き抜くためには科学的に設計・実装をする必要がある、というところが大事だと思います。

ご静聴ありがとうございました。
前編:「いま起きているムーアの法則の限界は、微細化よりも電力と経済性の限界~ポスト・ムーア法則時代のコンピューティング(前編)。QCon Tokyo 2016」
あわせて読みたい
オールフラッシュストレージのViolin Memoryが倒産手続きのためチャプター11を提出。ビジネスはまだ継続中
≪前の記事
いま起きているムーアの法則の限界は、微細化よりも電力と経済性の限界~ポスト・ムーア法則時代のコンピューティング(前編)。QCon Tokyo 2016