2010-09-13

7.メモリインタリーブ

CPUから主記憶装置へのアクセスを高速化する技術のひとつです。

CPUから主記憶にデータの転送命令を出した場合、CPUの処理速度に比べ主記憶のアクセス速度は遅いため、CPUに待ち時間が出来てしまいます。

それを解消するため、まず主記憶を複数の独立した区画(これをバンクという)に分割します。
 この複数のバンクに対して、CPUは同時に(もしくは短い時間差で)データの転送を要求します。

 要求を受けた各バンクそれぞれが同時進行でデータの準備を行うため、1つのメモリからデータを取得するより効率がよくなります。

2010-09-12

6.CPUからメモリへ -データの書込み命令-

プログラムを実行する際に、一時的に主記憶からキャッシュメモリにデータを格納し、CPUがデータにアクセスする時間を高速化させるという話を前述しました。

では逆に、「ファイル1に”ABC...”を書込みなさい。」といったかたちで、データの追加や更新などの命令がある場合はどうでしょうか?

まず、CPUはキャッシュ上のデータを更新します。
しかし、キャッシュ上のデータは複製でしかないので、いずれ主記憶に更新したデータを送る必要があります。この書込む方式には、ライトスルー方式とライトバック方式があります。


ライトスルー方式:CPUから書込み命令が出された際、キャッシュメモリと主記憶の両方へ更新したデータを送る方式。

ライトバック方式:CPUから書込み命令が出された際、まずはキャッシュメモリのデータを更新します。そして、主記憶に更新したデータを送るタイミングは、キャッシュ上のデータが追い出されるタイミングとなります。
つまり、キャッシュ上でプログラムAの更新データを格納していたが、CPUは次にプログラムBのデータを処理するため、キャッシュの領域を空けなくてはいけなくなります。
この時、プログラムAのキャッシュ上の更新データを主記憶へ戻すことになります。

5.CPUの命令実行方式

・主記憶にロード※1されたプログラムは、CPUによって実行されます。その際の命令実行順は基本的に
  「命令フェッチ※2」→「命令の解読」→「命令実行」となります。
・この命令1つ1つの事をステージと言います。上記の場合、3ステージで命令を処理しています。

・さて、ここで主記憶上にロードされたプログラムを処理する際に以下の5ステージを処理しなければならないとします。

各ステージ 処理内容
IF(Instruction Fetch) 命令フェッチ
ID(Instruction Decode) 命令の解読
AC(Address calculation) 実効アドレスの計算(メモリ上にあるデータのアドレスを計算する)
OR(Operand Read) オペランドの読み込み(データやデータのある場所を示すオペランド部の読み込み)
Ex(Execution) 命令の実行


【命令を処理する方式】
逐次制御方式:命令を1つずつ処理する方式








パイプライン制御:複数の命令をずらしながら処理をする方式












スーパースカラ:複数のパイプラインを、同時に実行する実行する方式



















※1 補助記憶などに格納された、データやプログラムを主記憶装置に読み込む事。
※2 CPUがメインメモリーから命令を読み出す動作の事。

4.CPUの記憶階層とキャッシュメモリ

・レジスタ:CPU内にある記憶装置。CPUがプログラム実行中、頻繁に使うデータはレジスタへ格納されます。

・キャッシュメモリ:CPUと主記憶の仲介役を務め、CPUがこれから必要としているデータをキャッシュに格納することで、アクセスの高速化を図ります。

  1次キャッシュ…CPUに内蔵されています。別名、内部キャッシュや、L1と呼びます。

  2次キャッシュ…CPUと主記憶の間に配置されています。別名、外部キャッシュや、L2と呼びます。

・主記憶装置:別名、メインメモリと呼びます。高速なアクセスが可能で、CPUが直接読み書きすることのできる記憶装置です。 主記憶装置は、プログラムを実行する際に必要となるデータだけを格納します。プログラムが終了し、データが必要なくなるとそのデータを解放します。また、電源が供給されなくなると、データが消滅するという特徴(発揮性メモリと呼ぶ)があります。

・ディスクキャッシュ:主記憶装置と補助記憶装置の間に配置されています。補助記憶装置よりも高速にアクセスができ、主記憶と補助記憶のアクセス速度の差を埋めます。

・補助記憶装置:アクセス速度は低速ですが、安価で大容量というメリットがあります。
また、電源が供給されなくてもデータを保持(不発揮性と呼ぶ)します。

3.クロック周波数とクロック信号の単位

・1秒間に出力されるクロック信号の数をクロック周波数と言います。
・また、クロック信号が出力される時間間隔を1クロックサイクル時間と言います。

ここで、クロック周波数と1クロックサイクル時間の関係を押さえておきましょう。

クロック周波数 クロック信号数(1秒当り) 1クロックサイクル時間
1Hz 1=100 1秒=1s
1kHz 1=103 10-3秒=1ms
1MHz 1=106 10-6秒=1μs
1GHz 1=109 10-9秒=1ns

クロック周波数が高いほど、CPUが命令を実行する速度が高くなります。
すなわち、性能が高いCPUと言えます。

2.CPUの性能計算式

・1クロックサイクル時間= 1(秒)÷ クロック周波数

・命令実行時間= 1クロックサイクル時間 × クロックサイクル数

・1秒間に実行できる命令数= 1(秒)÷ 平均命令実行時間
 単位:MIPS(106

・平均命令実行時間=1(秒)÷ 1秒間に実行できる命令数

・実効アクセス時間= TC × p + TM ×(1-p)
 TC:キャッシュメモリのアクセス時間
 TM:主記憶のアクセス時間
 p:ヒット率

1.コンピュータの構成要素


基本的なコンピュータの構成は、入力装置、記憶装置、制御装置、演算装置、出力装置の5機能になっています。
入力装置:データを入力するための装置。キーボードやマウス、マイクなど。
記憶装置:プログラムやデータを記憶する装置。
制御装置:プログラムを解読し、各装置を制御するための装置。
演算装置:データの加減乗除などの演算を行うための装置。
出力装置:コンピュータが処理したデータを出力するための装置。モニターやスピーカー、プリンタなど。

また記憶装置には、主記憶装置と補助記憶装置に分けられます。
そして、制御装置と演算装置はCPU(Central Processing Unit)にまとめられます。