質問: cpuの使用率の素朴な疑問 ご観覧有難うございます。 pc使用中に素朴な疑問が生まれましたので、お教え下さい。 dell(cpu:celeron 2.6g メモリ:512mb)とimb(cpu:pentium4 3.2g メモリ512mb)pcが各1台づつ。計2台あります。 ある同じexcel(マクロ)を実行しました。 dellはcpuの使用率が約99%で動いております。 一方ibmはcpu使用率が約45%で動いております。 質問 1.celeronとpentiumの差があるにしろ、同じ重いexcelを実行してここまで使用率の差が出るのか。 2.ibm(pentium)の方は一つのアプリケーションで独占しないように設定されているのか。 3.celeronとpentiumの元々の何かが関係しているのか。 4.この差は何なんだろうか。 です。 宜しくお願い致します。
回答: 1は。hyperthreadingが最も大きいでしょう。続いてキャッシュ、fsbの性能になるでしょう。ただ、50%とほぼ100%ならhyperthreading+αぐらいが最も分かりやすい。 2は、hyperthreadingが有効になっていることでos上で2つのプロセッサとして認識されます。物理プロセッサは1つですが2つのプロセッサのように見えるのです。それがhyperthreadingです。 この技術ではただ2つに見えるだけでなく、実際に処理を行う際に、同時に2つ目の処理も同じプロセッサ内の処理回路に入れてしまうのです。 どうしてそんな技術を作ったかというと、 pentium4では、周波数を上げるために回路をより細分化しました。そのため、全ての回路が使われることはまずなくcpu使用率100%でも実際には最大で45%~60%しか使われていないという現象が発生したのです。 それを補ったのがこの技術。使用効率を高めるためのもので、使っていない回路で処理を同時に行う仕組みなのです。これを使うとプロセッサは2つ搭載されているように振る舞います。だから、性能が上がるのです。 問題は何故、使用率が下がるのかという点。そもそも2つのプロセッサをフルで使うにはある条件を満たさなければいけません。 前の処理と後の処理が連続した結果を必要としないことなどの条件がいるのです。例えば、最初の処理で結果を出し、それを次の処理で別の形に変えるという2つの処理があります。1つのプロセッサならそれを続ければいいのですが、2プロセッサでは、1つ目の処理が完了しないと次の処理に移れません。そうなると、2つめのプロセッサは眠った状態になります。 これが、連続して発生すれば使用率は半分になります。大きな点はここになると考えられます。 ちなみに、それでは何故、両方のプロセッサ使用率が同じぐらいなのかという質問があるかもしれませんので、そこも書いておくと。 あくまで搭載しているcpuは1つで、実体としてcpuは1つの命令しかなくとも共通のプロセッサというものを使っているというのが現実になります。そうなると、使用率は半分となるのです。 他に、l2 cache容量が多ければ、リソース消費が減少します。特に、小さなマクロや何度も同じ処理をループさせるならより短時間で使用率を少なくすることができるでしょう。 fsbはチップセットとcpuを繋ぐ回路の性能。性能が高ければ一度に大量のデータをcpuに提供できます。celeronは3,2gb~4,2gb/s程度のピークバンドが一般的。pentium4の3,2ghzは6,4gb/sです。これはメモリアクセスを高速化し使用率を数パーセント以上下げるかもしれません。 これらによって半分を下回ると考えられます。