https://logmi.jp/tech/articles/327259
まつもとゆきひろ氏:ほかに、30年間見てきて変化してきたものを考えると、やはりハードウェアの変化はすごく大きいんですね。
(スライドを示して)先ほど話したNEWSのマシンだとこんな感じで、当時はこれが常識だったわけですね。
モトローラのMC68020だったものが、今私が使っているパソコンだとAMDのRyzen9ですね。私のパソコンはちょっと古いので(CPUマイクロアーキテクチャは)Zen2ですけれど、最近だとRyzen9 5900というのが出ています。
クロックだと16MHzが4GHzになっているので、250倍です。メモリ容量だと、メインメモリ8MBだったのが今は64GBで、私のマシンに積んでいるのは30年間で8,000倍です。ハードディスクは156MBを積んでいたのが、1TBのSSDを積んでいるので、6,400倍。さらに外付けのハードディスクもいっぱいあるので、それも足すとものすごいことになるわけですね。
当時のマシンはCPUが1台当たり1個しかなかったんですね。だけど、今だとマルチコアで、私のマシンは12コア24スレッドです。Threadripperだと、64コア128スレッドみたいになったりするわけです。
ムーアの法則のおかげでどんどん性能は良くなっていて、指数関数的増加をしています。最近は物理的限界に到達しつつあって、指数関数的増加はちょっと鈍ってきたと言われることがありますが、それでもハードウェアの値段全体としては安くなっているし、容量では増えているし、クロックは上がっているという傾向があります。
思えば私が中学生、高校生だった40年前は、フロッピーディスクというものがありました。年寄りの昔話になってきましたが、(当時は)240KBもデータが入ったんですね。
中学生だった頃の私には、この240KBは無限の容量で、どうやってこんな容量を使い切るんだろうと思っていました。プログラムを書いても書いても、数キロバイトぐらいにしかならないんですね。240KBもあったら、僕が書く一生分のプログラムはこの1枚に入るんじゃないかと思っていたんですけど、まぁそんなことはなかったんですね。
今私のマシンには、数TBの外付けのハードディスクがあります。何が入ってるかというと、GitHubからダウンロードしてきた大量のソースコードとか、画像データとかいろいろです。240KBは秒で吹き飛ぶ感じで、いろいろ詰まってるわけです。
ディスクとネット帯域はあればあるだけ使う感じで、容量が増えたりハードディスクが伸びたりすると、当たり前が変わってきて、バランスが変化します。
ソフトウェアにとって、けっこう重要なのがコア数の変化です。30年間で、ソフトウェア的に2番目に変化したのはスレッドの価値だと思います。
Rubyはすごく早い時期からスレッドを提供していました。二十数年前のシングルコアしかない時代にスレッド実装した時は、アルゴリズムの表現手段としてスレッドを考えていました。
例えば、コンシューマプロデューサーモデルとしてパイプラインを作って、データをこっちのスレッドで作って、こっちのスレッドでデータを処理する、みたいなことは考えていました。
正直に言うと、パフォーマンスは気にしていなかったんですね。スレッドはもともとそういう1種のアルゴリズムみたいなものを簡単に書くことができるのですが、当時はそのパフォーマンスをそんなに気にしないという理解でした。
だけど現代において、スレッドは処理を複数にオフロードして、全体的なパフォーマンスを向上するために使われることのほうが圧倒的に多くなったんですね。
例えば理想的に仕事を分散できるならば、それぞれのコアでフルスピードで起動することによって、4コアだと4倍早く仕事が終わります。高速化手段として使われるので、パフォーマンスが超重要になってきたんですね。