- ベストアンサー
CPUの1周期で行われること
こんにちは。前から疑問に思っていたことを質問させていただきます。 それは、CPUのクロック周波数のことです。 クロック周波数とは、CPUのリズムのようなものであると思っています。例えば、512MHzだったら、1秒間に512M回のリズムでCPUがデータを処理しているという風に想像しています。 ここでの「データの処理」というのが、自分の頭の中ではっきりしていません。CPUの1周期では一体何が、どれだけ実行されるのでしょうか。 (CPUの中でどのようなことが行われているのかは大体わかります。CPUの1周期で何が起きているということがわかりません。) どれだけという点で言うなら、例えば32bitCPUなら、単純に1秒間に32bit*512Mのデータを処理する(100%能力を発揮したとして)ということになるのでしょうか。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
インテルのCPUは1クロックで1命令の実行はできません。 命令の種類によっては、数クロック以上かかります。 (近頃は工夫してなるべく1クロックで1命令できる ようにはなってきている) メモリへのアクセスはもっとクロック数がかかります。 (メモリはCPUの速度よりも遅いので)。そこでいろいろ 苦労するわけです。CPUの中に小容量の高速メモリを 入れたり(「キャッシュメモリ」と言います)。 その量は、せいぜい512kバイト程度です。(512 Mバイトの1/1000) そのキャッシュメモリでさえ 1クロックでアクセスできるかどうか。 仮にメモリに書き込む命令が1クロックで実行できると しても、「メモリのどこに書き込むかを決める命令」も 実行しなければなりませんし、それらを「繰り返す命令」 も実行しなければなりません。ですので、 >>32bitCPUなら、単純に1秒間に32bit*512Mのデータを >>処理する(100%能力を発揮したとして)ということに >>なるのでしょうか。 ということにはなりません。非常に単純に言えば、 1回メモリに書くのに3命令必要ですから、3倍の 時間がかかります(実際はもっとかかります)
その他の回答 (1)
- asuca
- ベストアンサー率47% (11786/24626)
CPUにはいろいろあるので一概にはいえませんが1クロックで1命令を処理します。 つまり単純なものだったら メモリからデータAの読み込み メモリからデータBの読み込み 数式(たとえばかけ算) 計算結果をストアする ストアされたものをメモリに書き込む などこれだけのステップがかかります。 ですからクロック数では一概に処理数は読めません。 CPUによてはたとえばRISC型のものだったら複数の命令を1クロックで処理できるなどして高速化できます。アップルのマッキントッシュなどに使われているPowerPCなんかはこのタイプですね。ですからWindowsマシンと単純にクロックによる速度比較ができないんです。 >例えば32bitCPUなら、単純に1秒間に32bit*512Mのデータを処理する(100%能力を発揮したとして)ということになるのでしょうか。 上記に書いたように処理手順があるのでそんなことはないです。
補足
1クロックで扱えるデータや命令そのものの量はどれくらいなのでしょうか。 データも命令もコンピュータ内(CPU内)では、2進数で表現されていますね。実際は電圧の高低で表されると思うのですが、CPUは1クロックで何ビット扱えるのでしょうか。 また、命令と一口に言っても、命令そのものは何ビットくらいあるのか?とか、命令によってビット数が違うのか?などが想像もつきません。 まだまだ、そのあたりのメカニズムがわからず、すっきりしません。もしよければここで教えていただくか、参考になるサイトを教えていただければと思います。