
いろいろな処理をこなす「CPU」。ものすごい高度な処理をしているように見えますが、実は意外と単純な作業を繰り返ししてるだけです。この単純な作業を高速で行うことにより、凄い処理を行っているように見せているわけです。
下図はCPUの基本構造とメモリの関係を表した図です。

上図で「アドレス」「レジスタ」という用語が出てきましたが、この「アドレス」「レジスタ」について後のためにちょっと説明しましょう。
デジタル機器の中心部分である中央演算装置 【0から楽しむパソコン講座】
まずはCPUの構造と処理の流れを理解しよう
いろいろな処理をこなす「CPU」。ものすごい高度な処理をしているように見えますが、実は意外と単純な作業を繰り返ししてるだけです。この単純な作業を高速で行うことにより、凄い処理を行っているように見せているわけです。
下図はCPUの基本構造とメモリの関係を表した図です。
上図で「アドレス」「レジスタ」という用語が出てきましたが、この「アドレス」「レジスタ」について後のためにちょっと説明しましょう。
アドレスとはその名の通り「住所:番地」を意味します。1次記憶装置の内部ではデータが書き込まれると、その書き込まれた場所に「番地:アドレス」が付きます。そのアドレスは「アドレス領域」と呼ばれるところに自動的に書き込まれるため、中央演算装置はその「アドレス」を基にデータを取り出します。
レジスタとはマイクロプロセッサ(CPUのチップセット)内にある記憶素子で、演算の過程や演算や実行状態の保持を行う部分です。CPUには人間のように「脳」が当然ありませんので計算の暗算はできません。また、人間のように「ちょっとおぼえとこう」などは無理です。そのためこの「レジスタ」と言う部分を使ってひとつひとつ「記憶」させておかないと次の処理ができません。
よく人間で前のことを忘れる人の場合「鶏の頭」と表現しますよね。CPUは「鶏の頭」なのです。今の処理をしていると、前の処理はもう忘れてしまいます。それを補うのが「レジスタ」です。
このレジスタの容量は小さいですが、とても高速で動作します。このレジスタにもいろいろな役割分担があります。
CPUの性能の指標「クロック数」は以外と複雑
CPUの性能を見るには「クロック数」「ベースクロック」などがあります。よく、「CPUのオーバークロック」などでCPUの性能を上げるといったことがよくありますが、このクロックとベースクロックの関係をよく分からないままオーバークロックを行っている人がいます。この関係をよく理解しないと非常に危険で、ハード全体を壊すおそれがあります。
CPUのクロックとベースクロックの関係について少し説明します。
CPUの処理性能を見るときに「CPUのクロック数」という数値があります。これは簡単に言うと、CPUが1秒間に何回計算することが出来るかという数値となります。
CPUは電子回路の集合体です。そのため、電気信号のタイミングでさまざまな処理をしなければなりません。CPU内部の計算や命令の読み出しも1つの電気信号のタイミングで1つの処理を行うわけです。その電気信号のタイミングが長ければ処理スピードは遅くなり、逆に短くなれば処理スピードは速くなりま す。
1秒間に1回の計算が出来たとした場合、CPUのクロック数は「1Hz」となります。これが1MHzの場合、1秒間に100万回の計算や命令の処理が出来ます。これは1GHzになると10億回の計算や命令の処理が出来るということになります。
CPUに記載されているクロック数が「安定して処理が出来るクロック数」であり、絶対的な数値ではありません。使用環境や処理内容によりクロック数は絶えず変化します。
CPUは電気で動きます。(これは当然ですが...)
CPUを高速で動かす場合当然電気を使用しますから、発熱します。発熱すると電子回路に負担がかかるため、処理が遅くなります。この発熱を抑えると、電子回路に負担がかからないため、処理が早くなります。そのためCPUには発熱を抑えるため「ファン」が取り付けられています。また、コンピュータや室内の温度が低い場合は処理クロックは高速になり、逆に温度が高いと低速になります。
CPUは高速で動きますが、CPUだけ高速に動いていても、回りのパーツがそれに合ったクロック数では動作してくれません。各パーツなどのクロック数は当然違います。(内部メモリやPCIカード、グラフィックボード・サウンドボードなど)
CPUと各パーツのクロック数がまちまちのまま動かすと、大変なことになります。そのため、CPUや各パーツ間で統一のクロック数でデータをやりとりをさせなければなりません。この各パーツ間の統一した信号のタイミングを「ベースクロック」と言います。
このベースクロックは「マザーボード」と呼ばれる各パーツを制御する基板で管理します。このクロック数のタイミングにより各パーツ間でのやり取りが行われています。
よく、「周波数の高いメモリやグラフィックボードを購入したけれども全然早くならない」といった話があります。各パーツの周波数を上げても、このベースクロックが上がらなければ、全体のパフォーマンスが向上しなということになります。
上記の説明を読んでいると、CPUが高速で動いていても、ベースクロックが低いとCPUのクロック数は無駄?思う人は多いと思います。
ではなぜCPUは高速に動かせるかというと「倍率」というのがあります。
CPUの速度は総称では3.0GHzとなっていますが、実は
CPUの速度 = ベースクロック × 倍率
となっています。
この倍率は何?と思いますよね。これは「クロックダブラ」と呼ばれ、逓倍回路とも言います。
クロックタブラはCPU内部の一部の回路であり、CPUの入力クロック信号を整数倍化して高速のクロック信号を生成します。
なぜ、現在のCPUはこの方式を採用しているかと言うと、次の理由があります。
マルチコアのCPUも使用次第です。
CPUの高速化に伴い大きな問題が1つ問題が発生しました。「CPUが発生する熱」です。一昔前のCPUはそれほど気にしませんでしたが、CPUの高速化になるにつれてCPUから発生する「熱」が高くなるのと、消費する「電力量」が大きくなるといった問題が 発生しました。
特に「熱」に関しては、CPUが熱暴走し、破損してしまう危険性があるため、CPU上に大きなファンなどを取り付けて放熱等を行っておりましたがその方法も限界があり、これ以上の高速は無理に近い状態まできていました。そこで考え出したのが「コアのマルチ化」です。当初は1つのコアで多数の処理をさせようとするため、CPUを当然高速化しなければなりませんが、処理を分散させることにより、少し低速になってもCPU自体に余裕を持たせて、楽に処理させることが出来るといったことになりました。そのため、CPUから発生する「熱」や「電力量」も改善されるようになりました。
マルチコアCPUは確かに高性能ですが、実際使用時、この高性能を常に味わえるわけではありません。
もともとCPUの処理は「マルチタスク処理」を行っており、この「マルチタスク処理」で補えない場合にマルチコアCPUが発揮します。
マルチタスクとは、複数の処理を切り替えて並行して処理することです。通常のCPUの場合、短い周期で処理しているため、処理の空きは出てきます。その空きを利用して別の処理を行っているわけです。
そのため、マルチコアCPUで効果が発揮できるのは、映像のエンコード・デコード(作成)や音楽ファイルの編集・オンラインゲームなど、1つのアプリケーションがCPUを占有している場合に別のアプリケーションを動か時などに発揮します。
エクセルのファイル編集やメール閲覧・インターネット閲覧などは、CPUはマルチタスク処理で済んでしまうので、マルチコアCPUであっても一つのCPUで処理なるので、処理の快適さはあまり体感できません。
また、マルチコアCPUの効果を活かすには、操作するソフトウェア(Adobe社のフォトショップやイラストレータ等)が対応になっていなければならず、非対応のソフトウェアを使用した場合はマルチコアCPUであっても一つのコアCPUで動作し、重たい処理を行った場合はシングルコアのCPUと同様に フリーズする可能性があります。
プログラムを開発する場合は、マルチコアCPUを使用のを前提とした「並列プログラミング」をいう技術が必要です。しかし、この技術は少々むずかしく、個人などで作ったプログラムはごの技術を使ったプログラムは少ないと思ったほうが良いでしょう。