パイプライン制御やキャッシュメモリなど、高速化技法について解説。さらに、組み込みで必須の「割り込み」について出題する!
前回の宿題【問題6】は、「パイプライン制御」に関する問題でした。
パイプライン制御は、単位時間当たりの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に示します。
種類 |
原因 |
対応策 |
データハザード |
前の命令の実行結果が必要となるなど、データ間に依存関係があるために発生する | ・実行結果がレジスタに書き込まれるまで待たずに、実行結果を必要な場所に直接転送するバイパスを用いる ・実行結果がレジスタに書き込まれるまでステージの実行を待って(ストールして)、正しい値を利用できるようにする(インターロック) |
制御ハザード |
条件により次に実行する命令が決まる分岐命令などが原因で発生する | ・分岐の結果が分かるまでストールしている間に、分岐命令直後の命令を実行しておく(遅延分岐) ・分岐が成立すると予測して分岐先の命令のフェッチや解読を進めておく(予測分岐) |
構造ハザード |
資源不足による資源の競合などが原因で発生する | ・命令用とデータ用に別々のキャッシュを用意するなど、資源を追加する |
MPUは、メモリ(主記憶装置)から命令をフェッチして実行します。しかし、MPUと比べると、メモリのアクセス速度は格段に低速です。そのため、MPUをいくら高速化しても、低速のメモリがネックとなり、コンピュータ全体の処理速度が上がりません(これを、「フォン・ノイマン・ボトルネック」といいます)。
この問題を解消するため、MPUとメモリの間に高速で小容量のメモリを置くことで速度差を緩衝し、実効アクセス速度を向上させようという仕組みが考えられました。これを「キャッシュメモリ」といいます。
MPUは、最初にキャッシュメモリにアクセスします。キャッシュメモリに必要なデータがある場合(ヒット)、そのデータを取得します。キャッシュメモリ上にデータがない場合(ミス)、メモリから取得し、キャッシュメモリにも格納します。
キャッシュメモリを用いる場合、MPUがメモリにアクセスする回数が少ないほど、すなわちキャッシュメモリ上で必要なデータがヒットする確率(ヒット率)が高いほど、実効アクセス速度が向上します。キャッシュメモリを用いるシステムにおいて、キャッシュメモリのアクセス時間を10ns、メモリのアクセス時間を100ns、ヒット率を80%とする場合、データの読み取りにかかる平均実効アクセス時間は、次のように求められます。
平均実効アクセス時間 = |
キャッシュメモリは、一般にタグ部とデータ部から構成されます。タグ部には、キャッシュメモリ上のデータのステータスを示すフラグと、メモリ上のアドレスを示すタグが格納されます。メモリから取得した実際のデータを格納するのがデータ部です。
メモリへのアクセスが発生すると、メモリのアドレス内のタグとキャッシュメモリ内のタグが比較されます。タグが同じで、フラグが有効であれば、キャッシュメモリ上にデータが存在することになります。これがヒットです。キャッシュメモリ上に同じタグがない場合、同じタグがあってもフラグが無効である場合はミスです。
キャッシュメモリは、メモリから取得したデータの配置方法により、表2のように分類できます。
方式 |
説明 |
ダイレクトマッピング方式 | メモリ上のアドレスからキャッシュメモリ上のデータ配置位置が一意に決まる方式。配置位置の特定が容易で、単純な回路で構成できるが、ヒット率があまり高くない |
フルアソシアティブ方式 | キャッシュメモリ上にデータをランダムに配置する方式。ヒット率は高くなるが、キャッシュメモリ上のタグとの比較に時間がかかる |
セットアソシアティブ方式 | タグ部とデータ部のセットをn組(「nウェイ」という)用意し、メモリのアドレスから一意にデータ配置位置を決める方式。ダイレクトマッピング方式は1ウェイのセットアソシアティブ方式になる。タグ部とデータ部のウェイ数に比例してヒット率が高くなる |
また、MPUはメモリにデータを書き込むとき、キャッシュメモリ上のデータも更新します。キャッシュメモリの更新方式には「ライトスルー方式」と「ライトバック方式」があります。
方式 |
説明 |
ライトスルー方式 | メモリに書き込むデータがキャッシュメモリ上に存在する場合(ヒット)、キャッシュメモリとメモリの両方を更新する |
ライトバック方式 | メモリに書き込むデータがキャッシュメモリ上に存在する場合(ヒット)、キャッシュメモリのみを更新する。その後、任意のタイミングでキャッシュメモリ上のデータをメモリに一括して書き込み、キャッシュメモリとメモリの間でデータの矛盾が生じないようにする |
問題7 割り込みに関する次の記述のうち、正しいものはどれか? 答え. 解答はこちら(←クリック) |
いかがでしたでしょうか? パイプライン制御とキャッシュメモリについて理解できましたか。次回は、組み込みシステムでは必須の「割り込み」について解説します。お楽しみに! (次回に続く)
関連リンク: | |
組込みソフトウェア技術研修講座イーラーニング(サンプルIDプレゼント中) http://www.certpro.jp/elearning.html |
|
組込みソフトウェア技術者試験クラス2試験対策問題集(ETEC-SW2)(サンプルIDプレゼント中) http://www.certpro.jp/etecsw2test.html |
|
Copyright © ITmedia, Inc. All Rights Reserved.