「ムーアの法則」とは定義では『集積回路上のトランジスタ数は「18か月(=1.5年)ごとに倍になる」というもの』である。ではこの法則は正しいのだろうか?よーするに冒頭の引用画像のように指数関数的に右肩上がりで年スパンとともに性能が上昇する…ということだが、これをデータでもってしてRで検証してみる。
☆画像・文章ともにムーアの法則 – Wikipediaより引用
生データはここで手に入れた。
1 2 3 4 5 6 7 |
install.packages("ggplot2") install.packages("scales") library("ggplot2") library("scales") moore <- read.csv("raw_data(2).csv",header=TRUE) head(moore) |
簡単に成形した後、分析して、多項式の当てはめ曲線を適用してみよう。以下のように工夫をして、しっかりと指数的にトランジスタ数との関係性を紐解くことで法則を検証する。次に、処理速度はどうなのかを確認する。
1 2 3 4 5 6 7 8 |
ggplot(moore,aes(x=Year,y=Transistors,label=rownames(moore))) + geom_point(aes(colour=factor(Cores))) + scale_y_log10(breaks=10^(4:9), labels=trans_format("log10",math_format(10^.x))) + stat_smooth() ggplot(moore,aes(x=Year,y=Clock_MHz,label=rownames(moore))) + geom_point(aes(colour=factor(Cores))) + stat_smooth() |
ここではコア数を第三要素としてプロットの色としてとってみた。まず最初のプロットの結果から。
たしかに指数的な縦軸(y軸)の表にとってみても、右肩上がりにトランジスタ数は上昇している。だが、並列化(コア数増加)の技術にかなり組しているのがわかる。初めのほうは並列化に伴わなくてもトランジスタ数は指数的に増加していっているが、2010年ごろに並列化の技術が固まり始めたのか、コア数が4.6.8… 最大で18までいっている。これが何を意味するのかを考えよう(ちょっと後で)。
次のプロット、これがクロック数の変遷だ。重要なのは”縦軸のスパンが前プロットとは違っている”という点だ。多項式当てはめ曲線でみても指数的には増加していない。まばらになっているし、最初期のケースではかなり低廉な値を多くとっている。トランジスタ数と違ってクロック数だけで考えるとここに指数関数的な増加法則は見込めていない。また多くのことで知られているが、CPUのクロック数というのは常識的に考えれば、増加すればするほど、処理性能が上がるという意味合いに勘違いされているが、概してそう言えるのかというと実は「まったく違う」。これは数処理的に考えれば実は自明のことだが、これは課題としておこう。
CPUのクロック数は上がれば上がるほど一般的には処理能力が上がると考えられている。だが、実際のところ厳密にそう言えるのかというと違う。この理由を調べ、自ら考察せよ。
さて、並列化についてだが、これについては諸説あるらしい。現に引用URLにおいてこのように述べられている。
チップメーカーは、並列化(コア数の増加)や、電源管理機能の向上、メモリ容量と帯域幅の拡大、内部接続の高速化、オフチップアクセラレータの採用を通じて費用対効果に優れた新たな道を模索している。こうしたトレンドは、メーカーのプロセッサに関する最近の発表からも見て取れる。
☆「ムーアの法則」限界説飛び交う中、プロセッサ高速化への道を模索するチップメーカー – ZDNet Japanより引用
つまり「ムーアの法則」においては技術革新がかなり寄与している、という安直な結論はまず導けるだろう。だが並列化のみがこの法則に関与しているわけではない。例えば、ほかの技術も寄与していると上記にあるし、さらにはIntelの社の方針―法則にこだわりを持っているといわれるが―も検討してみることが重要だ。さらにいってしまえば、この経験則的理論の提唱者であるゴートン・ムーアは「ムーアの法則」は「精密化技術が原子レベルにまで達すれば成り立たなくなる」と述べているらしい。ほかにも経験則としては様々な説がある。さて、自分なりの回答を導いてみよう(これが今回の「統計の課題」)。