こんにちは。日本ヒューレット・パッカード オープンソース・Linuxテクノロジーエバンジェリストの古賀政純です。東京五輪が開催される2020年、世界人口は80億人に迫り、社会インフラ・デバイスの数は約1000億、アプリケーションの数は1兆、そして、これらのシステムから生成されるデータは、40ゼタバイトを超えるといわれています。
身の回りの機器から生成される膨大なデータを処理するために、コンピュータの大幅な性能向上が待ったなしで必要とされています。しかし、最近になって、従来型の仕組みのコンピュータでは、処理能力の向上に限界が見えてきました。そこで、ヒューレット・パッカード・エンタープライズ(HPE)は、全く新しい仕組みの「The Machine」の開発に取り組んでいます。今回は、The Machineの全体像を紹介し、The MachineによってもたらされるITの未来像について語ります。
コンピュータは、1940年代から基本構造が変わっていない
John von Neumannという人物をご存知ですか?1945年、現在のコンピュータと同じ「ソフトウェア(プログラム)とデータをメモリに同居させて記憶させる方式のコンピュータ」の仕組みを「First Draft of a Report on the EDVAC」とよばれるレポートにまとめ、公表した科学者です。
2017年現在の最新のスマートフォン、サーバ機器、パソコン、電卓、DVDプレイヤや炊飯器など、日常生活に目にする家電製品や身の回りの電子機器に内蔵されたコンピュータの仕組みは、基本的に、そのレポートに書かれたEDVACのコンセプトと同じなのです。そのため、現在の世の中に広く普及しているコンピュータは、「ノイマン型コンピュータ」と呼ばれています。
コンピュータは、60年以上もアーキテクチャが同じ
「First Draft of a Report on the EDVAC」に記載されたソフトウェア(プログラム)とデータをメモリに同居させて記憶させる方式は、一般に「プログラム内蔵方式」とよばれます。1948年に、世界初のプログラム内蔵方式のコンピュータ「SSEM」が登場し、このレポートに記載されているプログラム内蔵方式のコンピュータ「EDVAC」は、1951年に完成します。ノイマン型コンピュータにおいては、この「プログラム内蔵方式」を理解する必要があります。
ノイマン型コンピュータは、人間の脳にあたる「CPU」(中央演算処理装置)を中心に、その周りにメモリやハードディスクといった階層化された記憶装置がある「CPU主導型コンピューター」です。CPU主導型コンピューターでは、記憶装置にプログラムとデータを保存します。ノイマン型コンピュータで非常に重要な点は、このプログラムとデータを一つの記憶装置に格納し、プログラム(=ソフトウェア)を実行するという点です。ノイマン型コンピュータの登場以前のコンピュータ(ENIACと呼ばれるコンピュータなど)は、コンピュータに行わせる仕事(=プログラム)を変更しようとすると、物理的な配線を変えなえればなりませんでした。しかし、プログラム内蔵方式により、記憶装置に保管されているプログラムを変えれば、物理的な配線を変更せずに異なる仕事(計算)をこなすことができるようになったのです。
コンピュータの黎明期。SSEMは、世界初のプログラム内蔵方式の計算機
プログラムとデータが記憶装置に同居すると、プログラムとデータの出入りは、CPUとメモリを結ぶ1本の「通り道」(バスと呼びます)を通ります。CPU~メモリ間のデータ転送速度とCPUの速度には、大きな差があるため、CPU処理能力がデータ転送能力によって制約を受けるという性能面でのボトルネックが生じます。これは、「フォン・ノイマン・ボトルネック」と呼ばれています。
現在の一般的なコンピュータは、CPUとメモリ、ハードディスク、さらに入出力装置などが銅線で結ばれており、プログラムとデータが銅線のバスの中を通ります。ノイマン型コンピュータを高速に動作させるには、CPUを増やしたり、CPUの動作を高速にしたり、フォン・ノイマン・ボトルネックを解消するために、CPUとメモリ間のデータの通り道の間にキャッシュメモリなどを配置するなどの”改良”が必要になります。多くのコンピュータ・メーカが、ノイマン型コンピュータの”改良”にしのぎを削ってきました。しかし、近年、この改良に大きな壁が立ちはだかるようになってきました。一つは、CPUの動作速度や処理性能の向上があまり期待できなくなってきたのです。
ノイマン型コンピュータの仕組み
これからのデータ爆発時代において、ビジネスの変化を予測するといった、より「賢いITシステム」を実現するためには、膨大なデータを駆使した人工知能などの複雑な計算が必要になります。そのような複雑な処理を高速に行うには、もちろん、ソフトウェア工学の見地での改良も必要なのですが、コンピュータ・ハードウェアの性能自体を今よりも格段に向上させなければなりません。
昨今、半導体メーカーがCPU単体の処理能力の向上に莫大な資金を投じて研究・開発を行っていますが、残念ながら、CPUそのものの性能向上に限界が近づいています。また、1台のコンピュータのCPUの数(一般には、コア数と呼ばれます)を増やしても、コンピュータ単体の処理性能の劇的な向上が期待できなくなっているのです。
コンピュータ単体の性能向上の歴史
では、CPUの性能向上がこれ以上期待できない状況で、そのようなデータ爆発時代に備えるには、どうすればいいのでしょうか。単純に考えると、コンピュータの数を増やすという方法があります。データセンターなどに大量にコンピュータを並べ、並列に処理することにより、1台あたりのコンピュータの性能が低くても、全体で非常に高い処理能力を獲得できます。
しかし、コンピュータの台数を増やすと、問題は、設置スペースと電気使用量です。高い処理能力と引き換えに、広大な設置場所と電気使用量に応じた高額な料金を支払わなければならないのです。ちなみに、現在、全世界のパブリック・クラウド事業者のデータセンターの電気使用量は、日本の人口1億2000万人が使う電気使用量を既に超えているといわれています。
2020年には、データセンターだけで人間が使う電気使用量の約30パーセントを消費するといわれています。大量の計算を必要とする人工知能(機械学習)のような「知的な情報処理」を瞬時に行うためには、今までとは比較にならないほどの大量のコンピュータを用意しなければならず、電気使用量が膨大になるのです。
ノイマン型コンピュータでのデータ爆発への対策