- ベストアンサー
プロセッサの性能を2倍に向上させても
プロセッサの実効性能だけを2倍に向上させても、コンピュータ全体の処理性能は2倍に向上しないことをキャッシュメモリを含めたメモリ階層の仕組みと関係つけて説明せよ。 という問題なのですが キャッシュコヒーレンシが関わっているのかなと考えているのですが、わかりません。 教えて頂きたいです。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
「コンピュータ全体の処理性能は2倍に向上しないこと」を証明するだけですよね。 簡単な式で考えてみます。 1次キャッシュのみ。1次キャッシュのアクセス時間は無視。 実行するCPU命令数:n(個) その内のメモリ読み出し命令数:m(%) メモリ読み出しサイクル数:a(クロック) キャッシュヒット率:b(%) 本来このCPUが処理できる能力:c(個/クロック) とすると、 実際にかかるクロック数Xは X=メモリ読出しない命令クロック数(並列化出来る) +メモリ読み出しにかかる命令クロック数(並列化出来ない) =(n/c)*((100-m)/100)+n*(m/100)*((100-b)/100)*a となります。 例えば、 実行するCPU命令数:1000(個) その内のメモリ読み出し:40(%) メモリ読み出しに必要なクロック数:200(クロック) キャッシュヒット率:99(%) 本来このCPUが処理できる能力:1(個/クロック) とすると、 X=(1000/1)*((100-40)/100)+1000*(40/100)*((100-99)/100)*200 =600+400*0.01*200 =600+800 =1400クロックかかる計算になります。 最良のケースでは、1000個の命令が1000クロックで処理出来ますが、 上記の条件では、1400クロックもかかる計算になります。 実CPU性能を上げてもメモリ読み出しの性能は上がりません。 メモリアクセスの部分はメモリコントローラーに依存するので高速化出来ないこととして考えています。 ここで、CPU性能を倍の2(個/クロック)に上げてみると、 X=(1000/2)*((100-40)/100)+1000*(40/100)*((100-99)/100)*200 =300+400*0.01*200 =300+800 =1100クロックかかる計算になります。 つまり、CPU性能だけを2倍にしても、1100/1400=0.78程度にしかなりません。 また実際には、 1次キャッシュといえどアクセス時間がかかります。 また、容量(キャッシュヒット率)とアクセス時間は一般にトレードオフです。 容量を大きくすればアクセス時間は大きくなります。 intel core iだと、32KBの大きさで2クロックくらいです。 ヒット率は公開されていませんが96%から98%ではないでしょうか。 単純にお金だけではありません。
その他の回答 (2)
- いけだ ひろし(@ike-2000)
- ベストアンサー率53% (69/129)
以下参考に http://www.atmarkit.co.jp/fpc/rensai/zunouhoudan003/cachemiss.html http://news.mynavi.jp/column/architecture/016/index.html ちなみにこの出題ではコヒーレンシは関係ないでしょう。
- Wr5
- ベストアンサー率53% (2173/4061)
単純にメインメモリの帯域まで倍にはならないから…では? キャッシュに乗っている分に関しては相応の速度でアクセスできるでしょうが、キャッシュから外れた分やメモリに書き込みした分は実メモリへのアクセスが発生します。 プロセッサ内で動作しているキャッシュメモリよりメインメモリの方が格段に遅いでしょうから、そこで頭打ち状態になるかと思われます。 # ストレージになるとさらに遅いですしねぇ……。 階層構造で…というのならプロセッサ内のレジスタが一番上にあって、1次キャッシュ、n次キャッシュと続いてメインメモリとなるでしょう。 一般的に下に行くに従って容量は増えていきますけど。 # 容量が増える代わりに速度が遅くなる。
お礼
ありがとうございます。
補足
ご回答ありがとうございます。 キャッシュ容量を2倍にすると、CPUの性能は約30%向上する」という30%の定理が知られている。これは理論的な裏付けではなく、経験的な統計値によ る「だいたいこんな感じ」という説。だが基本的にキャッシュ容量が増えるほどCPU性能は高くなる。しかし技術的な問題から1次キャッシュの容量には制限 がある。また2次キャッシュの容量を増やすことはCPUのチップ面積を増夫させ、コスト増に直結する。いまでも2次キャッシュの回路はCPUチップ上の半 分近くを占めておリ、その容量を8MB、16MBと増やすことは難しい。逆に、2次キャッシュの容量を減らせば、性能は低下するが安価なCPUを作ること ができる。 という解答はどうでしょうか?
補足
ご回答ありがとうございます。 キャッシュ容量を2倍にすると、CPUの性能は約30%向上する」という30%の定理が知られている。これは理論的な裏付けではなく、経験的な統計値によ る「だいたいこんな感じ」という説。だが基本的にキャッシュ容量が増えるほどCPU性能は高くなる。しかし技術的な問題から1次キャッシュの容量には制限 がある。また2次キャッシュの容量を増やすことはCPUのチップ面積を増夫させ、コスト増に直結する。いまでも2次キャッシュの回路はCPUチップ上の半 分近くを占めておリ、その容量を8MB、16MBと増やすことは難しい。逆に、2次キャッシュの容量を減らせば、性能は低下するが安価なCPUを作ること ができる。 この解答では不十分でしょうか?