CPUのプロセス微細化と回路の総数、性能向上の関係について


メモリやディスク等であれば、記憶回路を小さくすれば
たくさんの回路を詰め込むことができるので容量が大きくなることが理解できます。
一方で、CPUでプロセス微細化を行ったとしても、
単に回路を詰め込めば処理が速くなるというというものではないと理解しています。
もちろん消費電力の低減やコアクロックの引き上げ等
メリットがあるのは理解していますが、コアクロックもすでに限界まで来ているし、
メモリほどのメリットがあるように感じられません。
そこで質問です。

1)
CPUに使われる回路(トランジスタ)の総数は増えているのでしょうか?
増えた分の回路は何に使われているのでしょうか?
コア数を増やすなどの用途は考えられますが、
だとすると、プロセスの長さが今の100倍の時と比べて
今頃は100コアになってないとおかしいので、計算が合いません。

2)
CPUの速度は基本的にはクロックで決まるはずなので、
微細化でクロックが上がらなくなった今
単純にプロセス微細化や回路の詰め込みだけでは性能向上していないと理解しています。
このプロセス微細化と性能向上の関係について教えてください。

回答の条件
  • 1人1回まで
  • 登録:
  • 終了:2015/02/28 20:57:55
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

ベストアンサー

id:a-kuma3 No.1

回答回数4973ベストアンサー獲得回数2154

ポイント100pt

1)
CPUに使われる回路(トランジスタ)の総数は増えているのでしょうか?
増えた分の回路は何に使われているのでしょうか?

まず、ひとつの命令が複雑になります。
1クロックで処理できることが多くなる。
過去の用語ですが、数値演算プロセッサや RISC チップといったあたりが分かりやすいと思います(古過ぎ?)。
ビット幅が大きくなったのも、これに入りますよね。
少し新しくなると、マイクロアーキテクチャーとかになるんでしたっけ。

それから、パイプライン。
命令を処理するフェッチ、デコード、演算といったステージが同時に動ける。
もちろん、多重で動く分、回路は必要です。

さらに、スーパースケーラー。
複数の命令について、フェッチやデコードなどを並列に処理します。

パイプラインの処理をするには、バッファに使う CPU 内のキャッシュも必要です。
多ければ良いというものではありませんが、並列で処理している処理の同期を取るために使われます。

2)
CPUの速度は基本的にはクロックで決まるはずなので、
微細化でクロックが上がらなくなった今
単純にプロセス微細化や回路の詰め込みだけでは性能向上していないと理解しています。

同じ回路であれば、クロック周波数で速度は決まるでしょうが、回路(使われてる技術、と言った方が良いのかな)も変わってきています。
単純に詰め込んでいるだけではなく、集積度が上がることで複雑な処理を基盤に構築したから速くなってきたと思います。
# と、(1) の方でも、同じようなことを書きました


プロセスルールの微細化は、回路の総数には直接関係があるけれど、性能向上については、ひとつの要因でしかない、というのが答えになるかと思います。

他1件のコメントを見る
id:a-kuma3

ぼくはソフトウェアの世界に生きている人なので、パイプラインのような処理を、回路でどうやって組むのだろうというのは、想像もつかないですが、あのソフトウェア的な動作を回路にするのは、チョイ足しくらいではないのだろうなあ、と思います。

集積度合とか、回路で使われている面積とか、面白い着眼点ですね。
どこかに情報が落ちてないか、探してみようかな。

2015/02/16 17:14:39
id:quesit

引き続きコメントありがとうございます。今回の質問自体は、回路の勉強をしていて「あれ、CPUがこの仕組みで動作しているんだったら小型化って高速化と関係ないんじゃ?」っていう疑問から始まりました。どこかに具体的な情報が転がっていたらいいんですが、わりとしっかりと解説されているものにほとんど出会わないんですよね…。

2015/02/16 17:21:46
  • id:miharaseihyou
    CPUは単純な回数勝負の回路で筋肉派なんだけど、高性能になればなるだけ暑苦しいんだよね。
    できれば、機能だけでなく、夏場のヒーターの発熱量はできるだけ小さくしたい。
    いくら暑くてもエアコンは嫌だが・・・。
  • id:jwrekitan
    いろいろと用語を理解していないとの印象を受けます。

    > CPUでプロセス微細化を行ったとしても

    プロセス=工程、なので、
    「CPUの製造工程を細分化したとしても」という意味にしかなりませんよ?。
    ハードウエアはプロセッサなのであって、プロセスそのものではありません。
    プロセスを細分化するのは、OSや処理分散アルゴリズムなど、
    CPUに命令を渡す前のソフトウエア側のお仕事になります。
    コア数をいくら増やしたとしても、
    それらのハード資源を有効利用させる事のできるアルゴリズムがなければ、
    処理速度は1マイクロ秒も速くはなりません。
    そして、そのアルゴリズムの作成というのがが実に難しいんです。
    http://www.mi.s.osakafu-u.ac.jp/lec/fujimoto/fujimoto.pdf

    > 微細化でクロックが上がらなくなった今

    クロックはクロック、単なるパルス信号であって、
    プロセッサの小型化(=微細化?)とは全くの無関係です。

    なお、小型化するという事は配線を細くするという事であり、
    配線が細くなれば電気抵抗値が大きくなって発熱量が増えるから、
    発熱との闘いは避けられないんですけれどもね。
    (熱によって基盤が焦げたり、配線が瞬時に焼き切れたりしてしまいます)
  • id:practicalscheme
    「プロセス微細化」は厳密には「プロセスルール微細化」と言うべきでしょうが、省略して「プロセス」と呼ぶのも広まっているのであまり目くじら立てることはないんじゃないでしょうか。

    また、プロセスルールの微細化はクロックの高速化に貢献しているので、全く無関係ということはないでしょう。MOS FETはゲートに電荷を貯めたり抜いたりしてスイッチングを行いますが、ゲートが大きければそれだけたくさんの電荷を移動しないとならないので。キャパシタと考えれば理解しやすいかと。なるべく静電容量を小さくして低電圧で駆動することが高速化に直結します。ただ、あまり小さくなりすぎるとリークやノイズの影響が問題になってきます。

    発熱の問題が、配線を細くして抵抗が大きくなるからというのもちょっと違うかなと思います。細くした分電圧下げてるわけで。CMOS回路の消費電力は状態変化の時に流れる電流が大部分なので、ほぼクロックに比例します。発熱問題は、回路の抵抗値よりもクロックを上げること自体からくるものと、回路間隔が狭くなることによるリーク電流の増大が主要な原因じゃないですか。

    ただ、私も半導体の知識は十数年前くらいで止まってるので、今は別の問題に直面しているのかもしれませんが。
  • id:quesit
    皆様、コメント頂きましてありがとうございます。

    >miharaseihyouさん
    発熱量も非常に大きな問題なので、確かに進化でそのあたりの問題が解決されるのはありがたいですね。

    >椶櫚 さん
    practicalschemeさんに補足をいただいております通り、業界で使われている言葉の意味で書いております(当方、一応ITやプログラミングをお仕事にしている程度には理解しているつもりです)
    具体的なソースとしては、このあたりを参考にさせていただいております。
    http://direct.pc-physics.com/column-cpu-refinement.html
    http://pc.watch.impress.co.jp/docs/column/kaigai/20140825_663363.html
    http://monoist.atmarkit.co.jp/mn/articles/1107/29/news003.html

    >practicalscheme さん
    補足をいただきましてありがとうございます。私も基本的にはお書きいただいた通りの内容で理解しております。そして、最近はというと、CPUについてはいよいよここ2~3年でネタ切れになっているようですね。集積度はまだ頑張れば上げられるようですが、これまで通り消費電力が下がらなくなるため、すべてを同時に電源を入れられないダークシリコンという問題に直面しているようです。そのため、これからは集積化ではなく、処理ごとにチップを変えるヘテロジニアスコンピューティング等で性能を稼ぐしかない流れになるというのを聞いております。依然、CPUで集積度が増えた分の回路を何に使っているのかは謎なんですよね…。
    http://pc.watch.impress.co.jp/docs/column/kaigai/20120726_549137.html
  • id:jwrekitan
    > CPUでプロセス微細化を行ったとしても

    を「CPUが微細化を行う」のように読んだための勘違いです。
    全体としてはpracticalschemeさんの説明が正しいようです。
    適当な事を書いて申し訳ない。

    物理限界とリーク電流の説明
    https://www.impressrd.jp/idc/2008spring/sp1/part2souron.html?page=0%2C0
    https://www.s.u-tokyo.ac.jp/ja/story/newsletter/keywords/16/04.html


    けっこう詳しいところまでご存知のようなので、
    もし参考になりそうなネタがあるとすれば、

    ・クロックは処理速度向上のためにあるのではなく
     回路全体の素子の同期を取るために使われている
     (同期の遅れがクロック数アップの足枷となっている)
    http://okwave.jp/qa/q4523025.html

    ・CPUは1クロックで1命令をこなすのではなく
     実際には2クロック命令や3クロック命令など多岐に及ぶ
     (8bit → 16bitでさえ一筋縄ではいかない)
    http://e-words.jp/w/cpi-2.html

    こういったあたりになるでしょうかね。
    また、コアの数が100倍だろうが1万倍になろうが、
    そのリソース配分を適切に管理する仕組みがなければ、
    速度アップには繋がらない事については先に書いた通りです。
  • id:quesit
    コメントありがとうございます。
    そうですよね、逆に考えると回路数が増えると管理しなくてはいけない素子が増えるので、高速化どころかスピードダウンにつながりそうな気もしますね。にも関わらず、一般にプロセスルールの微細化が性能向上に役立っていると説明されていますが、未だに完全に理解できていないので非常に興味深いです。
  • id:Mook
    だいぶ古い記事ですが、
    「知らなきゃPCは選べない、プロセスルールの基礎知識」
    http://ascii.jp/elem/000/000/165/165196/index-2.html

    2015後半にリリース予定のCore i7 Seriesの「SkyLake」のプロセスルールは14nm で
    集積度は現行の更に倍になるようです。
  • id:quesit
    Mookさん、コメントありがとうございます。
    トランジスタ技術と露光技術両方で5~7nm以降の技術に問題を抱えているそうですね。14nmのSkyLakeも、今後プロセス微細化が止まってしまうと新製品の性能の伸びが小さくなってしまうため、わざわざ登場を遅らせて事実上の延命措置をとっているという情報も聞いています。
  • id:jwrekitan
    すると、お求めの情報はこれになるでしょうかね?

    http://www.cqpub.co.jp/dwm/contents/0135/dwm013501280.pdf
    >>
    最小ゲート長が短くなると,トランジスタの増幅力,ト
    ランス・コンダクタンスが増加し,かつ寄生容量が低下し
    てトランジスタをより高速に動かせるようになります.
    CPUのクロック周波数が年々向上してきたのは,このトラ
    ンジスタの高速化によります(最近は頭打ちになっている
    がこれは発熱による制限).
    <<

    practicalschemeさんの解説が専門用語で置き換わっただけなんですが、
    寄生容量などの専門用語で調べれば、もっと詳しい情報が見つかるかも^^;
  • id:practicalscheme
    十数年前ですと、増えた分の回路でプロセッサにメモリも乗っけちゃおうって流れがありましたね。メモリのバスの遅さがボトルネックになっていて、チップに混載すればそれも解決ってな具合で、GPUやSoCには取り入れられてると思いますが、汎用CPUでは速度の違うメモリを見せるよりはキャッシュにした方がいいって感じなんでしょうかね。

    x86系ですと、内部はRISCで動いていて、CISC風の命令セットをon the flyでCPU内部で翻訳していて、そこをマイクロコードで翻訳するよりハードワイアドにした方が性能が上がったとかいう話も昔ありましたからそこらへんでも回路を食いそうです。で、どうせ翻訳するなら翻訳部分をソフトウェアでやって回路を簡略化しようとしたのがTransmetaでしたが勝てませんでしたね。これも15年前くらいの話ですか…

    今の状況がどうなっているかは私も知りたいです。
  • id:quesit
    椶櫚さん、practicalschemeさん、引き続きコメントありがとうございます。

    もう少し色々なキーワードで調べてみる必要がありそうですね。こちらでも色々調べる作業を続けておりますが、とりあえず下記サイトにトランジスタ数の変遷と個数に関する洞察が載っていましたので貼っておきます。
    http://ascii.jp/elem/000/000/710/710636/

    ところで、この質問のきっかけともなった情報ですが、CEDEC 2014で「2020年までのゲームハードウェア技術トレンド」というタイトルで発表がありまして、私自身はネット配信されていたのでリアルタイムで視聴したのですが、まとめ記事がありましたのでこれについても貼っておきます。
    http://game.watch.impress.co.jp/docs/news/20140905_665358.html

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません