【問題2】 MPUと他装置との架け橋「バス」とは?“組み込み力”向上! ETEC対策ドリル(2)

MPUの基本的な構成と動作について詳しく解説。さらに、MPUとメモリなどの装置とを結ぶ「バス」に関する問題を出題する!

» 2009年11月30日 00時00分 公開
[近森満(株式会社サートプロ 代表取締役社長/JASA ETEC運営事務局),@IT MONOist]

【問題1】の解答

 前回の宿題【問題1】は、MPUに関する問題でした。MPUは組み込みシステムのいわば“心臓部”です。

 今回は、問題の解答に続いて、MPUの基本的な構成と動作について解説します。この機会にしっかりと理解しておきましょう。

 それでは、解答を発表します!


問題1

MPUの動作に関する次の記述のうち、正しいものはどれか?

ア.MPUは、プログラムカウンタが発振するクロックにより動作のタイミングを計る。
イ.MPUは、命令レジスタから次に実行すべき命令のメモリアドレスを取得する。
ウ.MPUは、演算の状態(オーバーフローの発生など)をフラグレジスタに格納する。
エ.MPUは、演算対象のデータを格納するために8ビットの汎用レジスタを用いる。

答え. (←クリック)


【問題1】の補足

 以外の記述には誤りがあります。

 は、「プログラムカウンタ」が誤りです。クロックは「クロックジェネレータ」によって発振されます。は、「命令レジスタ」が誤りです。次に実行すべき命令のメモリアドレスは、「プログラムカウンタ」に格納されています。は、「8ビット」が誤りです。汎用レジスタのビット幅はMPUのアーキテクチャによって異なります。

演算機能と制御機能を担う心臓部−MPU−

 現在、コンピュータと呼ばれるもののほとんどは「ノイマン型」です。ノイマン型では、処理を行うためのプログラムを記憶装置に格納しておきます。このプログラムを順番に読み取り実行するのが、「MPU(Micro Processing Unit:マイクロプロセッサ)」です。一般的に、ノイマン型コンピュータは「演算」「制御」「記憶」「入力」「出力」という5大機能を備えています。MPUは、そのうちの演算と制御の機能を担う心臓部に当たります。

 MPUは、プログラムに書かれている命令を1つずつ取り出し、実行します。命令とは、MPUが実行できる最小単位の処理のことです。1つの命令は、「命令のフェッチ(命令をメモリから取得すること)」「命令のデコード(命令を解読すること)」「命令の実行」という複数のステップを経て実行されます。このステップを何度も繰り返して複数の命令を実行していくことで、さまざまな処理が実現可能になるのです。

 MPUは、「ALU(Arithmetic and Logic Unit:演算回路)」などの回路と各種レジスタなどから構成されます。もちろん、実際のMPUの構成は非常に複雑ですが、基本的には表1のような要素からなります。プログラムカウンタなど、特定の用途を持つレジスタを、汎用レジスタに対して「専用レジスタ」と呼びます。

表1 MPUの基本的な構成要素
構成要素
説明
ALU 算術演算、比較演算、論理演算などの演算を行う回路
命令デコーダ 命令を解読する回路
プログラムカウンタ 次に実行すべき命令のメモリアドレスを格納するレジスタ
命令レジスタ 現在実行している命令を格納するレジスタ
フラグレジスタ 演算の状態(オーバーフロー、論理演算の結果、正負の符号など)を格納するレジスタ
汎用レジスタ 演算の対象となるデータを格納するなど、汎用的に利用するレジスタ(ビット幅はMPUのアーキテクチャによって異なる)

MPUの動作例

 MPUの基本的な動作は以下のとおりです。

  1. プログラムカウンタ(PC)から、命令が格納されているメモリのアドレスを取得
  2. 取得したアドレスを基に、命令を取り込み、命令レジスタ(IR)に格納(命令のフェッチ)
  3. 命令デコーダにより、命令レジスタに取り込んだ命令を解読(命令のデコード)
  4. 解読結果に従って、命令を実行(命令の実行)

 プログラムカウンタは、命令のメモリアドレスの取得後、値が加算されて次の命令の位置を指し示すようになります。命令の実行が終わると、再び1〜4の動作を繰り返します。

 MPUの動作例を図1に示します。

図1 MPUの動作例
プログラムカウンタからメモリアドレス(0000番地)を取得
0000番地から命令(LD命令)を取得し、命令レジスタに格納
命令デコーダで命令を解読(10000番地の値をGR0にロードする命令)
解読した命令を実行(10000番地の値0x0020がGR0にロードされる)

PC:プログラムカウンタ
IR:命令レジスタ
FR:フラグレジスタ
GR0:汎用レジスタ1
GR1:汎用レジスタ2

MPUの動作タイミングを取るクロック信号

 MPUは、「クロック信号」に基づいて動作します。クロック信号とは、一定の周期で「0」と「1」に変化する同期信号のことです。メトロノームのカチカチというテンポに合わせて楽器を演奏するように、クロック信号でタイミングを取って命令を実行していきます。

 クロック信号は、クロックジェネレータによって発振されます。クロックジェネレータが1秒間に何回クロックを発振するかを表すものが「クロック周波数」です。クロック周波数の単位は「Hz(ヘルツ)」で、1GHzは1秒間にクロックが10億回発振されることを意味します。つまり、アーキテクチャが同じであれば、クロック周波数が高いほど、MPUの動作回数が増え、処理速度が速いことになります。ただし、クロック周波数が高いほど、消費電力も大きくなるため、使用電力などに制限の多い組み込みシステムでは注意が必要です。

オペランドの指定方法を示すアドレッシングモード

 MPUが実行する命令は、「命令コード」と「オペランド」からなります。命令コードは文字どおり実行する処理の内容を示すコードであり、オペランドは処理の対象となる値です。

 オペランドは、命令コードによって指定方法が異なります。例えば、図1の例で示したLD命令は、レジスタに値をロードする命令ですが、オペランドとして、ロードする値そのものではなく、値を格納しているメモリのアドレスを指定しています。命令コードによっては、値を直接指定したり、値を格納しているレジスタを指定したりするものがあります。

 オペランドの指定方法を「アドレッシングモード」といいます。アドレッシングモードはMPUによって異なりますが、表2に基本的な方式を示します。

表2 アドレッシングモード
方式
説明
即値方式 命令内に、処理対象となる値を直接指定する
レジスタ方式 命令内に、処理対象となる値を保持するレジスタを指定する
直接アドレス方式 命令内に、処理対象となる値が格納されているメモリのアドレスを指定する
間接アドレス方式 命令内に指定されているメモリのアドレスが示す位置に、処理対象となる値のアドレスが格納されている
インデックスアドレス方式 命令内に指定されているメモリのアドレスに、インデックスレジスタの値を加算して、処理対象となる値の実効アドレスを求める
ベースアドレス方式 命令内に指定されているメモリのアドレスに、ベースレジスタのアドレスを加算して、処理対象となる値の実効アドレスを求める

今回の演習問題―【問題2】

問題2

MPUとメモリなどの装置を結ぶ「バス」に関する次の記述のうち、正しいものはどれか?

ア.MPUとほかの装置を結ぶバスには、「アドレスバス」「入力データバス」「出力データバス」「制御バス」の4種類がある。
イ.「アドレスバス」はアドレスを送るためのバスで、アドレスバスの幅が16ビットであれば、理論上65536バイトのメモリにアクセスできる。
ウ.「データバス」はデータを送るためのバスで、データバスのビット幅は汎用レジスタのビット幅と等しく、16ビットである。
エ.「制御バス」はデータを送る際の制御信号用のバスで、常にMPUから他装置へ向かって制御信号が送られる。

答え. 解答はこちら(←クリック)


 いかがでしたでしょうか? MPUの基本的な構成と動作について理解できましたか。次回は、MPUと他装置との架け橋となる「バス」について解説します。お楽しみに!(次回に続く)

関連リンク:
組込みソフトウェア技術研修講座イーラーニング(サンプルIDプレゼント中)
http://www.certpro.jp/elearning.html
組込みソフトウェア技術者試験クラス2試験対策問題集(ETEC-SW2)(サンプルIDプレゼント中)
http://www.certpro.jp/etecsw2test.html

筆者プロフィール
  株式会社サートプロ 代表取締役社長
社団法人 組込みシステム技術協会 ETEC運営事務局
近森 満(ちかもり みつる)

大手電気メーカー、外資系IT教育ベンダ、オープンソース系技術者資格認定団体などを経て、2006年より組み込みシステム分野の人材育成・教育支援を行う株式会社サートプロを設立する。現在は、ETEC運営事務局としてJASAの組込みソフトウェア技術者試験の普及・啓蒙(けいもう)活動のほか、組み込み人材育成と教育支援事業を行う。

Copyright © ITmedia, Inc. All Rights Reserved.