プロが教えるわが家の防犯対策術!

表題の通りです。
インテルのチップではL2までは1コアに1つキャッシュがありますが、L3は共有になっています。なぜでしょうか。

過去の質問(以下URL)で共有には賛否あるとありましたが、共有にするメリットデメリット(またはそれが議論されている文献)をご教示いただければ幸いです。よろしくお願いします。
m.chiebukuro.yahoo.co.jp/detail/q1033184760

A 回答 (2件)

容量・性能と実装コストを秤にかけた結果ってことでは。



コア毎に大きいキャッシュを持たせる方が速度は稼ぎやすいけど、容量の大きいキャッシュを積むにはコストがかかり、またキャッシュ相互に一貫性を維持する(コヒーレンシ)ことが面倒と言う別の問題も。

コストに関しての考察で、以下URLの記事によれば、Haswellアーキテクチャで共有L3を6MB積むと4コア全体の3割ほどの面積を占めています。

http://pc.watch.impress.co.jp/img/pcw/docs/613/9 …

全コア共有でさえこうなので、もし6MBのキャッシュをコア毎に用意すると、L3の方がコアより広くなり、ダイ全体の面積を広げるので、高価なCPUの出来上がり。

同じ面積でコア毎にキャッシュを持つと、容量が減ってしまうんで性能が上がらなくなります。だったらどうせL3くらいのコアから遠いキャッシュなら、容量増やして全コア共有にしとけばいいじゃん、と言う結論になったのでは?
    • good
    • 2
この回答へのお礼

ご回答ありがとうございます。コヒーレンシの問題もあるんですね。勉強になりました。

お礼日時:2015/08/16 21:46

記憶システムはメモリを頂点(実際には2次記憶が頂点か)にしたツリー構造になっているのでどこかで共有するかまったく共有なしでいくかのどちらかです。

共有しないとすると、L2の次はいきなりメモリになるわけですが、複数のコアが自分のL2にミスしてメモリにアクセスに行くとバスの調停が必要になって、待たされるコアが出てきます。メモリにアクセスするのだから、バス権を取れなかったコアは長く無駄に待たされることになって性能に影響します。比較的アクセスタイムの短いL3を共有しておけば、アクセスが競合しても待たされる時間は短くて済みます。これが利点です。
欠点は、大きなメモリを持つことによってコストがかかります。物理的に大きなチップや多くのトランジスタをもつチップは歩留まりが悪くなりますから、大きなL3キャッシュを持つということはコストが高くなってしまうということです。

ハイエンドCPUの設計では必ずパフォーマンスシミュレータでいろいろな条件で性能解析をしてからマイクロアーキを決めますし、チップのサイズやメモリの有無による歩留まりも前もって計算をして予測をします。その結果から、これがベストという選択をしたんでしょう。
    • good
    • 0
この回答へのお礼

利点、欠点、シンプルでよくわかりました、ご回答ありがとうございます。

お礼日時:2015/08/16 21:51

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!