【問題7】 組み込みで欠かせない「割り込み」“組み込み力”向上! ETEC対策ドリル(7)

パイプライン制御やキャッシュメモリなど、高速化技法について解説。さらに、組み込みで必須の「割り込み」について出題する!

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

【問題6】の解答

 前回の宿題【問題6】は、「パイプライン制御」に関する問題でした。

 パイプライン制御は、単位時間当たりのMPUの処理量を増やし、性能を向上させるための仕組みです。

 今回も問題の解答に続いて、パイプライン制御やキャッシュメモリなど、処理の高速化のための技法について解説します。この機会にしっかりと理解しておきましょう。

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


問題6

パイプライン制御の説明として、正しいものはどれか?

ア.MPUと他の装置の間に高速なメモリを設置し、アクセス速度の差を緩衝することで高速化を図る。
イ.1つの命令を複数のステージに分割し、各ステージを並行して実行し、
   複数の命令をオーバーラップさせて処理することで高速化を図る。
ウ.MPUを介さず、メモリと他の装置との間でデータを直接やり取りすることで高速化を図る。
エ.メモリをバンクという単位に分割し、
   同時に複数のバンクへのアクセスを可能にすることで高速化を図る。

答え. (←クリック)


【問題6】の補足

 以外の記述は、ほかの技術の説明になります。

 は「キャッシュメモリ」、は「DMA(Direct Memory Access)」、は「メモリインタリーブ」の説明です。

複数のステージをオーバーラップして実行−パイプライン制御−

 例えば、1つの命令を実行するために、「命令のフェッチ(IF)」「命令の解読(ID)」「命令の実行(EX)」「メモリへのアクセス(MEM)」「実行結果のメモリへの書き込み(WB)」という5つの手順を必要とするMPUがあるとします。このMPUは、図1のように命令を実行していきます。

図1 パイプライン制御なしの場合

 MPUの性能を向上させるためには、単位時間当たりに実行できる命令の数を増やす必要があります。パイプライン制御では、命令の実行に必要な一連の手順を複数の「ステージ」に分割し、複数のステージを同時並行的にオーバーラップさせて実行します。つまり、命令1のフェッチ後解読時に命令2のフェッチを行い、命令1の実行時に命令2の解読と命令3のフェッチを行う……という具合です。

図2 パイプライン制御の例

 基本は、5ステージからなる「5段階パイプライン制御」ですが、「スーパーパイプライン制御」では、1つの命令をさらに多くのステージに分割して並行実行できる命令数を増やします。

図3 スーパーパイプライン制御の例

 また、複数のパイプラインを用意し、複数の命令を同時に実行可能にすることで、性能の向上を図るものを「スーパースカラ」といいます。スーパースカラではパイプラインの数を「ウェイ」で表し、例えばパイプラインが2本であれば“2ウェイ方式のスーパースカラ”といいます。

図4 スーパースカラの例

パイプラインハザード

 例えば、命令1がレジスタに書き込んだ実行結果を、命令2が実行時に用いるとします。命令1の実行結果はWBステージが終わるまでレジスタに書き込まれないため、命令2のEXステージでは正しい値を利用できません。

図5 パイプラインハザードの例

 このように、パイプラインでステージの実行に乱れが生じることを「パイプラインハザード」といいます。パイプラインハザードの種類、原因、対応策を表1に示します。

表1 パイプラインハザードの種類
種類
原因
対応策
データハザード
前の命令の実行結果が必要となるなど、データ間に依存関係があるために発生する ・実行結果がレジスタに書き込まれるまで待たずに、実行結果を必要な場所に直接転送するバイパスを用いる
・実行結果がレジスタに書き込まれるまでステージの実行を待って(ストールして)、正しい値を利用できるようにする(インターロック)
制御ハザード
条件により次に実行する命令が決まる分岐命令などが原因で発生する ・分岐の結果が分かるまでストールしている間に、分岐命令直後の命令を実行しておく(遅延分岐)
・分岐が成立すると予測して分岐先の命令のフェッチや解読を進めておく(予測分岐)
構造ハザード
資源不足による資源の競合などが原因で発生する ・命令用とデータ用に別々のキャッシュを用意するなど、資源を追加する

アクセス速度の差を緩衝−キャッシュメモリ−

 MPUは、メモリ(主記憶装置)から命令をフェッチして実行します。しかし、MPUと比べると、メモリのアクセス速度は格段に低速です。そのため、MPUをいくら高速化しても、低速のメモリがネックとなり、コンピュータ全体の処理速度が上がりません(これを、「フォン・ノイマン・ボトルネック」といいます)。

 この問題を解消するため、MPUとメモリの間に高速で小容量のメモリを置くことで速度差を緩衝し、実効アクセス速度を向上させようという仕組みが考えられました。これを「キャッシュメモリ」といいます。

 MPUは、最初にキャッシュメモリにアクセスします。キャッシュメモリに必要なデータがある場合(ヒット)、そのデータを取得します。キャッシュメモリ上にデータがない場合(ミス)、メモリから取得し、キャッシュメモリにも格納します。

 キャッシュメモリを用いる場合、MPUがメモリにアクセスする回数が少ないほど、すなわちキャッシュメモリ上で必要なデータがヒットする確率(ヒット率)が高いほど、実効アクセス速度が向上します。キャッシュメモリを用いるシステムにおいて、キャッシュメモリのアクセス時間を10ns、メモリのアクセス時間を100ns、ヒット率を80%とする場合、データの読み取りにかかる平均実効アクセス時間は、次のように求められます。

平均実効アクセス時間 =
   キャッシュメモリのアクセス時間 × ヒット率 + メモリのアクセス時間 × ( 1 − ヒット率 )

= 10ns × 0.8 + 100ns × ( 1 − 0.8 )
= 8ns + 20ns
= 28ns


キャッシュメモリの構成

 キャッシュメモリは、一般にタグ部とデータ部から構成されます。タグ部には、キャッシュメモリ上のデータのステータスを示すフラグと、メモリ上のアドレスを示すタグが格納されます。メモリから取得した実際のデータを格納するのがデータ部です。

 メモリへのアクセスが発生すると、メモリのアドレス内のタグとキャッシュメモリ内のタグが比較されます。タグが同じで、フラグが有効であれば、キャッシュメモリ上にデータが存在することになります。これがヒットです。キャッシュメモリ上に同じタグがない場合、同じタグがあってもフラグが無効である場合はミスです。

 キャッシュメモリは、メモリから取得したデータの配置方法により、表2のように分類できます。

表2 キャッシュメモリの構成方式
方式
説明
ダイレクトマッピング方式 メモリ上のアドレスからキャッシュメモリ上のデータ配置位置が一意に決まる方式。配置位置の特定が容易で、単純な回路で構成できるが、ヒット率があまり高くない
フルアソシアティブ方式 キャッシュメモリ上にデータをランダムに配置する方式。ヒット率は高くなるが、キャッシュメモリ上のタグとの比較に時間がかかる
セットアソシアティブ方式 タグ部とデータ部のセットをn組(「nウェイ」という)用意し、メモリのアドレスから一意にデータ配置位置を決める方式。ダイレクトマッピング方式は1ウェイのセットアソシアティブ方式になる。タグ部とデータ部のウェイ数に比例してヒット率が高くなる

 また、MPUはメモリにデータを書き込むとき、キャッシュメモリ上のデータも更新します。キャッシュメモリの更新方式には「ライトスルー方式」と「ライトバック方式」があります。

表3 キャッシュメモリの更新方式
方式
説明
ライトスルー方式 メモリに書き込むデータがキャッシュメモリ上に存在する場合(ヒット)、キャッシュメモリとメモリの両方を更新する
ライトバック方式 メモリに書き込むデータがキャッシュメモリ上に存在する場合(ヒット)、キャッシュメモリのみを更新する。その後、任意のタイミングでキャッシュメモリ上のデータをメモリに一括して書き込み、キャッシュメモリとメモリの間でデータの矛盾が生じないようにする

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

問題7

割り込みに関する次の記述のうち、正しいものはどれか?

ア.
外部割り込みには、数値のオーバーフローなどによる「プログラム割り込み」や
   システムコールの呼び出しによる「システムコール割り込み」などがある。
イ.
割り込み要求を受けると、実行中の処理を中断して後で再開できるように、
   レジスタなどの状態を保存する「コンテキストスイッチ」が発生する。
ウ.
内部割り込みは、禁止または許可を指定できる「マスカブル割り込み」と、
   禁止または許可を指定できない「ノンマスカブル割り込み」に分類できる。
エ.
割り込み要求を受けると、現在実行中の処理が中断され、
   タスクハンドラに記述された割り込み処理が実行される。

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


 いかがでしたでしょうか? パイプライン制御とキャッシュメモリについて理解できましたか。次回は、組み込みシステムでは必須の「割り込み」について解説します。お楽しみに! (次回に続く)

関連リンク:
組込みソフトウェア技術研修講座イーラーニング(サンプル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.