インメモリ・コンピューティングって、何?~13時間53分お待ちください!?
「ビッグデータ」の後を追うようにして、急速にIT業界のキーワードとなりつつあるインメモリ・コンピューティング。従来より4ケタ(1万倍)速い、などと、昨今なかなか聞かない景気のいい話が飛び交う。しかしそれは本当なのか?そして、それはなぜなのか?
■おさらい:HDDとメモリの違い
ITに詳しくない方でも、お使いのPCに「ハードディスクドライブ(以下HDD)」と「メモリ」の2種類の記憶装置が使われていることはご存じであろう。どちらも、デジタルデータを電気的に書き込んで記録しておき、必要なときに読み出して使う「記憶装置」である、という点では同じだ。
いっぽう、同じでないのは?下表のとおり、HDDの特徴は、「容量が相対的に大きい、単価が安い、電力を切っても消えない、読み書きは遅い」。一方メモリはその裏返しで、「容量が相対的に小さい、単価は高い、電力が切れると消えてしまう、読み書きは速い」となる。
みなさんもPC作業中にPCが「フリーズ」して、作りかけの文書などが消えてしまい涙をのんだご経験をお持ちだろう。フリーズすると消えてしまうのは、作業中データがメモリ上にあったからだ。一方で途中で「保存」しておいた文書は、なくならずにPCに残っている。それはHDD上に書き込まれていたからだ。
HDDとメモリの比較
ハードディスク(HDD) | メモリ | |
---|---|---|
媒体 | 回転体(回転している、ハードなディスク) | 半導体(物理的には動かない) |
容量 | 相対的に大きい | 相対的に小さい |
ビットあたり単価 | 安い | 高い |
揮発性 | 電力が切れても消えない(不揮発性) | 電力が切れると消える(揮発性) |
読み書きの速さ | 低速(5ミリ秒=5,000,000ナノ秒程度) | 高速(50ナノ秒程度) |
※最近は両者の中間的な性質を持つSSD(ソリッドステートディスク)も存在するが、SSDについては別途言及することとし、ここでは省略する。
■50年続いた「HDD時代」
HDDが初めて商品化されたのは1956年。それから50年余の間、HDDはコンピュータの主要な記憶装置としてあらゆるデータ記録の屋台骨を支え続けてきている。
現在世の中にあるコンピュータのほぼすべてが、データを記録しておく媒体としてのHDDを前提として構成されている。1本あたりの記憶容量が大きく、ビットあたり単価は安く、しかも年々劇的に下がっていく。ノートPCのような小さなものからスーパーコンピュータ「京」に至るまで、データはHDDに書き込んでおくのが常識であった。
いっぽうメモリはというと、読み書きの速度はHDDよりはずっと速くて便利だが、ビットあたり単価がはるかに高いため、メモリを大量に使うのはコスト的に無理だった。したがってここ30年以上にわたり、コンピュータはメモリとHDDを組み合わせて使っている。
■「倉庫」と「作業机」
イメージ的にたとえて言えば、HDDは「倉庫」、大量のブツ(データ)を保管しておく大きなスペースである。一方メモリは「作業机」で、ブツ(データ)を倉庫から取り出してきて、あれこれ作業する間、一時的に置いておくための小さなスペースである。
作業が終わったら、その都度、作業机の上は片づける(倉庫に戻す)。でないと机は狭い(メモリの記憶容量は小さい)ので、次の作業ができないからだ。
実際、たとえば、私のノートPCでは、メモリは4GB、HDDは640GB。その比率は160倍である。企業向けの大型コンピュータの場合、保存しておかなければならないデータが多かったりすると、その比率はさらに高いことも多い。
いわゆる「ビッグデータ」が流行り言葉となった2011年あたりにおいても、その「ビッグな」データはすべてHDDに格納されている。(当然、HDD装置を販売するストレージベンダーなどは大喜びである。)
作業の都度、データを倉庫から持ってきて作業机に並べていき、机の上の空き面積が足りなくなったら、使っていないデータから倉庫に戻す。面倒なようだが(いや、実際に面倒だが)、すべてのコンピュータはこれをえんえんと繰り返しながら稼働しているのである。
ところが。2010年末に登場したSAP HANAは、その「常識」を真っ向から否定する。HDDではなく、すべてのデータをメモリ上に持つ(=インメモリ)ことにしたのである。上記のイメージで言えば、倉庫との出し入れを行わず、非常に大きな作業机を用意して、その上にすべてのデータを置いておくことにしたのだ。
なぜか?簡単にいうと、HDDは「遅い」のである。
■HDDはもはや「遅い」
下記はWikipediaからの引用である。
http://ja.wikipedia.org/wiki/記憶装置
・・・現在のコンピュータは、二次記憶装置としてハードディスクドライブを使うのが一般的である。ハードディスク上のデータアクセスにかかる時間はミリ秒単位である。一方、RAM上のデータアクセスにかかる時間はナノ秒単位である。これはハードディスクが機械的に可動(回転)する装置であるためで、メインメモリと比較すると約100万倍遅い。・・・
CPUのサイクルタイムはおよそ5ナノ秒。同様にメモリのアクセスタイムはおよそ50ナノ秒、HDDのアクセスタイムはおよそ5ミリ秒=5,000,000ナノ秒である。(Wikipediaでは100万倍といっているが、ここでは実勢に近づけて10万倍としておく。)
ミリ秒とかナノ秒と言われてもいまひとつピンとこないので、同じ比率を保って置き換えてみよう。8ケタ上げると、
5ナノ秒 ⇒ 0.05秒
50ナノ秒 ⇒ 0.5秒
5ミリ秒 ⇒ 50,000秒
ということは、、、
①作業者(CPU)は、データ1個あたり0.05秒で処理ができます。
②作業机(メモリ)は、データ1個あたり0.5秒で出し入れできます。
③倉庫(HDD)は、データ1個あたり50,000秒で出し入れできます。
・・・ということになる。ちなみに5万秒とは、約13時間53分である。
CPUは0.05秒ごとに1個(秒あたり20個)、メモリは0.5秒ごとに1個(秒あたり2個)さばけるのに対し、HDDは「13時間53分ごとに1個」(笑)の超々スローモーションでしかこなせないのである。
CPUやメモリの速度に比べて、HDDの速度がどれだけ遅いか、感じていただけるであろうか。
■物理的な回転体の限界
CPUやメモリなどいわゆる半導体のアクセス速度は、年々飛躍的に向上している。一方HDDもまた格段の進化を遂げてはいるが、「データを記録してある回転体(ハードなディスク)が回転し、それをアームに取り付けられた磁気ヘッドが読み取る」というHDDの基本的構造は変わっていないため、物理的な限界が近づいているとされている。発熱や摩耗のため、回転速度を一定以上に速くはできないからだ。
#イメージとしては、HDDの機構は、昔のLPレコード――回転体の上にレコード針のついたアームを乗せる――とまったく同じである。ついでにいうと、回転中に強い振動などが加わると針が回転体を傷つけて“クラッシュ”してしまうところも、HDDと同じだ。
しかし上述のように、実際には、世の中のほぼすべてのコンピュータが記録装置としてのHDDを前提に構成されている。したがって、HDDの遅さをカバーするために、さまざまな工夫が行われてきた。
例えば2本のHDDにまったく同じデータセットをそれぞれ持っておき、取り出しを分担することで速度をほぼ2倍にする(ミラーリング)とか、10本のディスクを並列に並べ、1つのデータを10本に分散して同時並行的に記録することで速度をほぼ10倍にする(ストライピング)とか、次に必要になりそうなデータがどれかを予測してあらかじめHDDからメモリへ読み出しておくことで、CPUのアイドルタイムを極力減らす(キャッシング)とか。
しかしいくらがんばっても、「0.5秒 vs 13時間53分」の大差がついている、という事実は変わらない。この差はいかんともしがたい。
-----
それならいっそ、HDDなんかやめちゃえば?と思われるだろう。そのとおり。それが自然な流れだ。
これまで、メモリというのはHDDに比べてはるかに高価だったから、メモリをたくさん使うには莫大なカネがかかり、現実的ではなかった。しかし「ムーアの法則」と歩みをそろえてメモリ単価はどんどん安くなってきたためついに、「HDDをやめて全部メモリにする」ことが現実的になってきた。そして、それを具現化したのがSAP HANAに代表されるインメモリ・コンピューティングなのである。
次回に続く。。
メモリとHDDについての参考情報
■Wikipedia-記憶装置(再掲)
http://ja.wikipedia.org/wiki/記憶装置■CPUとは?メモリとは?ハードディスクとは?私とほぼ同じ喩えを使って説明。(ごくごく初心者の方に(^^))
http://muryoschool.fc2web.com/01/04.html