MPUの基本的な構成と動作について詳しく解説。さらに、MPUとメモリなどの装置とを結ぶ「バス」に関する問題を出題する!
前回の宿題【問題1】は、MPUに関する問題でした。MPUは組み込みシステムのいわば“心臓部”です。
今回は、問題の解答に続いて、MPUの基本的な構成と動作について解説します。この機会にしっかりと理解しておきましょう。
それでは、解答を発表します!
問題1 MPUの動作に関する次の記述のうち、正しいものはどれか? 答え. ウ (←クリック) |
ウ以外の記述には誤りがあります。
アは、「プログラムカウンタ」が誤りです。クロックは「クロックジェネレータ」によって発振されます。イは、「命令レジスタ」が誤りです。次に実行すべき命令のメモリアドレスは、「プログラムカウンタ」に格納されています。エは、「8ビット」が誤りです。汎用レジスタのビット幅はMPUのアーキテクチャによって異なります。
現在、コンピュータと呼ばれるもののほとんどは「ノイマン型」です。ノイマン型では、処理を行うためのプログラムを記憶装置に格納しておきます。このプログラムを順番に読み取り実行するのが、「MPU(Micro Processing Unit:マイクロプロセッサ)」です。一般的に、ノイマン型コンピュータは「演算」「制御」「記憶」「入力」「出力」という5大機能を備えています。MPUは、そのうちの演算と制御の機能を担う心臓部に当たります。
MPUは、プログラムに書かれている命令を1つずつ取り出し、実行します。命令とは、MPUが実行できる最小単位の処理のことです。1つの命令は、「命令のフェッチ(命令をメモリから取得すること)」「命令のデコード(命令を解読すること)」「命令の実行」という複数のステップを経て実行されます。このステップを何度も繰り返して複数の命令を実行していくことで、さまざまな処理が実現可能になるのです。
MPUは、「ALU(Arithmetic and Logic Unit:演算回路)」などの回路と各種レジスタなどから構成されます。もちろん、実際のMPUの構成は非常に複雑ですが、基本的には表1のような要素からなります。プログラムカウンタなど、特定の用途を持つレジスタを、汎用レジスタに対して「専用レジスタ」と呼びます。
構成要素 |
説明 |
ALU | 算術演算、比較演算、論理演算などの演算を行う回路 |
命令デコーダ | 命令を解読する回路 |
プログラムカウンタ | 次に実行すべき命令のメモリアドレスを格納するレジスタ |
命令レジスタ | 現在実行している命令を格納するレジスタ |
フラグレジスタ | 演算の状態(オーバーフロー、論理演算の結果、正負の符号など)を格納するレジスタ |
汎用レジスタ | 演算の対象となるデータを格納するなど、汎用的に利用するレジスタ(ビット幅はMPUのアーキテクチャによって異なる) |
MPUの基本的な動作は以下のとおりです。
プログラムカウンタは、命令のメモリアドレスの取得後、値が加算されて次の命令の位置を指し示すようになります。命令の実行が終わると、再び1〜4の動作を繰り返します。
MPUの動作例を図1に示します。
図1 MPUの動作例 |
①プログラムカウンタからメモリアドレス(0000番地)を取得 ②0000番地から命令(LD命令)を取得し、命令レジスタに格納 ③命令デコーダで命令を解読(10000番地の値をGR0にロードする命令) ④解読した命令を実行(10000番地の値0x0020がGR0にロードされる) PC:プログラムカウンタ IR:命令レジスタ FR:フラグレジスタ GR0:汎用レジスタ1 GR1:汎用レジスタ2 |
MPUは、「クロック信号」に基づいて動作します。クロック信号とは、一定の周期で「0」と「1」に変化する同期信号のことです。メトロノームのカチカチというテンポに合わせて楽器を演奏するように、クロック信号でタイミングを取って命令を実行していきます。
クロック信号は、クロックジェネレータによって発振されます。クロックジェネレータが1秒間に何回クロックを発振するかを表すものが「クロック周波数」です。クロック周波数の単位は「Hz(ヘルツ)」で、1GHzは1秒間にクロックが10億回発振されることを意味します。つまり、アーキテクチャが同じであれば、クロック周波数が高いほど、MPUの動作回数が増え、処理速度が速いことになります。ただし、クロック周波数が高いほど、消費電力も大きくなるため、使用電力などに制限の多い組み込みシステムでは注意が必要です。
MPUが実行する命令は、「命令コード」と「オペランド」からなります。命令コードは文字どおり実行する処理の内容を示すコードであり、オペランドは処理の対象となる値です。
オペランドは、命令コードによって指定方法が異なります。例えば、図1の例で示したLD命令は、レジスタに値をロードする命令ですが、オペランドとして、ロードする値そのものではなく、値を格納しているメモリのアドレスを指定しています。命令コードによっては、値を直接指定したり、値を格納しているレジスタを指定したりするものがあります。
オペランドの指定方法を「アドレッシングモード」といいます。アドレッシングモードはMPUによって異なりますが、表2に基本的な方式を示します。
方式 |
説明 |
即値方式 | 命令内に、処理対象となる値を直接指定する |
レジスタ方式 | 命令内に、処理対象となる値を保持するレジスタを指定する |
直接アドレス方式 | 命令内に、処理対象となる値が格納されているメモリのアドレスを指定する |
間接アドレス方式 | 命令内に指定されているメモリのアドレスが示す位置に、処理対象となる値のアドレスが格納されている |
インデックスアドレス方式 | 命令内に指定されているメモリのアドレスに、インデックスレジスタの値を加算して、処理対象となる値の実効アドレスを求める |
ベースアドレス方式 | 命令内に指定されているメモリのアドレスに、ベースレジスタのアドレスを加算して、処理対象となる値の実効アドレスを求める |
問題2 MPUとメモリなどの装置を結ぶ「バス」に関する次の記述のうち、正しいものはどれか? 答え. 解答はこちら(←クリック) |
いかがでしたでしょうか? MPUの基本的な構成と動作について理解できましたか。次回は、MPUと他装置との架け橋となる「バス」について解説します。お楽しみに!(次回に続く)
関連リンク: | |
組込みソフトウェア技術研修講座イーラーニング(サンプルIDプレゼント中) http://www.certpro.jp/elearning.html |
|
組込みソフトウェア技術者試験クラス2試験対策問題集(ETEC-SW2)(サンプルIDプレゼント中) http://www.certpro.jp/etecsw2test.html |
|
Copyright © ITmedia, Inc. All Rights Reserved.