クロック周波数と命令処理速度の関係
Q:パソコンを買おうとするとき、CPUとクロック周波数(動作周波数)、メモリ容量、ハードディスク容量、OSなどをチェックしますよね。例えば、CPUならCore i7の3.2GHzなどがあります。このクロック周波数は、いったい何を示しているのですか?
A:CPUの内部回路は、タイミングを合わせて一斉に動作するように作られています。オーケストラが、指揮者の棒に合わせて一斉に楽器を弾くことに似ていますね。この、タイミングを合わせるために使われているのがクロック信号です。
クロック信号は、一定の周期でローになったりハイになったりを繰り返します。この繰り返し周期の逆数がクロック周波数です。例えば、5ns(ナノ秒)の間ロー、5nsの間ハイ、…、と繰り返す場合、繰り返し周期は10ns、クロック周波数は1/10ns=100MHzとなります。3.2GHzのCPUなら、繰り返し周期は1/3.2GHz=0.3125nsとなります。1nsは10億分の1秒という大変短い時間ですから、CPUというのはとても高速に動作していることになります。
クロック周波数はCPUでどのような意味を持つのでしょうか。最近の多くのCPUは、基本的には1クロックごとに1回ずつ、機械語命令を読み出して実行します。ほとんどの命令の実行は1クロックでは終わりません。しかし、複数の命令をうまく並行して処理する仕組み(パイプライン)を使って、なるべく1命令を1クロックで処理しようとしています。すなわち、同じCPUで考えると、クロック周波数が高いほど命令処理速度が高くなります。
Q:クロック周波数が高いほどCPUは高速っていうことですね。
A:単純な構造のCPUではそう言えます。ただし、実際には分岐命令などがあると次の命令が何クロックも待たされたりして、処理速度が落ちます。さらに、最近のCPUでは、1クロックごとに2個とか4個とか複数の機械語命令を読み出して並列実行する仕組み(スーパースカラ、マルチコアなど)を持つものもあります。クロック周波数だけでは比較できなくなっています。
クロック周波数と消費電力の関係
Q:同じCPUで、クロック周波数が高いものと低いものがあるのはなぜですか?
A:大きく見て、消費電力の制約と、コストの課題の2つがあります。
まず、CPUはクロック信号に従って一斉に動作するので、1クロックごとに動作電力が必要になります。これが、CPUの消費電力の大きな部分を占めます。高性能のデスクトップパソコンでは3GHz程度のクロック周波数が普通です。しかし、モバイル型やスマートフォンでは消費電力を抑えるために、1GHz程度の周波数が一般的です。組み込み機器の多くは、プログラムやデータのサイズもパソコンよりずっと小さく、処理速度もそれほど必要ではないため、10MHz〜100MHz程度の周波数が多くなっています。ボタン電池で長期間動作する機器や、電卓のように小さな太陽電池で動作する機器では、10MHz以下の周波数のものもあります。クロック周波数は高いほど良いというわけではなく、必要に応じて使い分けます。
Q:消費電力を抑えるには、クロック周波数を下げなければならないってことですね。
A:基本的にはそうです。ただし、消費電力はクロック周波数だけで決まるのではなく、電源電圧でも変わります。また、CPUはいつでも同じ処理速度を必要としてはいません。待ち時間もたくさんあります。必要な時だけ周波数を高くして、そうでないときは周波数を低くする他、CPUの処理を休止(スリープ)させて消費電力を小さくする技術も用いられています。
超低消費電力マイコンとして知られるテキサス・インスツルメンツのMSP430は、動作時の消費電流が1MHz当たり95μA。とても小さい値です。さらにスリープ時の消費電力はわずか500nAなので、電池の寿命を大幅に伸ばすことができます。
プロセッサ・タイプとマイコン・タイプの違い
Q:コストの課題というのはどういうことですか?
A:これには、製造プロセスと、メモリの2つが関係しています。
CPUが最大どれぐらいのクロック周波数で動作できるかには、半導体の製造プロセスが大きく影響しています。論理的な設計は同じでも、製造プロセスによって最高動作周波数が変わります。基本的には、プロセスを微細化するほど高速・低消費電力を実現できます。しかし、製造コストも高くなります。さらに、同じCPUを同じ製造プロセスで作っても、製造時のばらつきによって高速なものと低速なものができてしまいます。最高動作周波数によって製品のグレードを分けるのが一般的です。
もう一つ、CPUが実行すべき機械語プログラムはメモリ(主記憶)に格納されています。実は大容量メモリとして代表的なDRAMやフラッシュ・メモリは、CPUのように高速には動作しません。先ほど、最近のCPUは1クロックごとに1回、機械語命令を読み出すと言いましたが、そのためにはCPUのクロックと同じ速度で動作するメモリが必要です。それが可能なのはSRAMです。しかし、SRAMはトランジスタをたくさん使うので、1ビット当たりのコストが高くなります。
そこで、最近のCPUでは2つの方法が使い分けられています。
パソコンのCPUや、ARM®のCortex®-Aのようなプロセッサ・タイプのCPUでは、CPUの中にキャッシュ・メモリと呼ばれる高速SRAMを用意しています。主記憶に格納された機械語プログラムのうち、必要なブロックをあらかじめキャッシュ・メモリに転送しておくことによって、1クロックに1回、命令を読み出して実行します。キャッシュ・メモリの制御は、CPUに内蔵されたキャッシュコントローラが自動的に行うので、プログラムの方では何も配慮する必要がありません。とても便利です。しかし、キャッシュ・メモリとキャッシュコントローラを搭載するのでCPUのコストが高くなります。
MSP430マイコンや、ARMのCortex-Mを採用したMSP432マイコンのようなマイコン・タイプのCPUでは、キャッシュは使いません。主記憶である内蔵フラッシュ・メモリから、直接機械語プログラムを読み出します。フラッシュ・メモリはSRAMほど高速には動作しないので、CPUの最高動作周波数はあまり高くできません。それでも組み込み機器の用途では処理速度をあまり必要としないことも多いため、これで十分だとも言えます。
- 低消費+高性能「MSP432」マイコン
- 超低消費電力マイコンMSP430ファミリ
- MSP430 LaunchPadバリュー・ライン開発キット
- 新産業用マイコン:「MSP430I2040」
- 新FRAMマイコン:「MSP430FR5969」
- TIのマイコン製品の詳細
- 便利なツールの購入はこちらから:TI store
※MSP430およびMSP432はTexas Instruments Incorporatedの商標です。その他すべての商標および登録商標はそれぞれの所有者に帰属します。
提供:日本テキサス・インスツルメンツ株式会社
アイティメディア営業企画/制作:EDN Japan 編集部/掲載内容有効期限:2016年3月31日
Copyright © ITmedia, Inc. All Rights Reserved.