B−FreeOS入門書
CPUの動作についてPart1  目次へ戻る

B−FreeOSの仕組みを説明する前に、CPUの動作について簡単に説明したいと思います。

●CPUを構成するもの
前に「CPUが主にできる事は、記憶・計算・判断 の3つしかありません」というお話をしました。
それを説明する前に、最低限覚えておいてほしい言葉があるので説明します。
・レジスタ
レジスタはCPU内の一時メモリで、いろいろな種類と役割があります。
よく○○bitCPUとか言いますが、この○○bitとレジスタの大きさは大抵一致しています。 (32BitCPU→レジスタの幅も32Bitというように)
どんな種類があるかは、後で説明します。
・アドレス
アドレスはCPUにつながれたメモリの場所を意味しています。そしてその情報を伝えるハードとしてアドレスバスという物があります。
このアドレスで表せるメモリ全体をメモリ空間とかアドレス空間と呼びます。
・データ
データはCPUが取り扱う内容です。そしてその情報を伝えるハードとしてデータバスという物があります。
・演算装置
メモリから命令を読み取ってレジスタやメモリの内容で計算を行います。そして結果をレジスタやメモリに書き出します。

●レジスタの種類
ここでは最低限必要な3種類だけ説明します。
・プログラム
 カウンタ
これは、次に実行する命令の位置を指すレジスタです。
CPUはプログラムカウンタが示すメモリを読み取って処理するとともに、プログラムカウンタに読み取ったデータのサイズを加算します。
こうする事で、次々と命令が実行されていきます。
・状態レジスタ
計算した結果に応じて状態レジスタのbitがON/OFFします。
条件判断などに使用します。
・汎用レジスタ
特に用途が決められていないレジスタで、計算時などに使用します。

●クロックとCPUの関係
よくパソコンのカタログのCPUの所に「300MHz」のように書かれています。
これがクロック周波数です。
CPUの動作は先ほどプログラムカウンタの所でも書きましたが、もっと細かく見てみるとだいたい次のようになります。
 1.プログラムカウンタの示すアドレスをアドレスバスに出力する
(そうするとそれをメモリが読み取って該当アドレスのデータをデータバスに出力します)
 2.データバスで命令やデータを読み取って演算装置に渡す
 3.プログラムカウンタに命令の長さを加算
(これで次の命令の場所を示すようになる)
 4.演算装置が命令を解析したり、計算のために一時的にデータを記憶する
 5.命令を実行
これらの各ステップは1クロック毎に進むと考えてください。
  クロックが早ければ早いほど命令が早く実行できるのですが、遅いメモリがつながっていると2のデータの読み取りができるまでCPUは待たされます。
ですからCPUのクロックだけでなく、メモリなどのスピードも重要なのです。

そして全体のステップは、その命令によって変化するわけです。
たとえば1と2をたすという場合は、命令の後に1と2をメモリから持ってこなければならないので次のようになります。
なお、頭の数字は、先ほど説明したステップに対応しています。
 1.プログラムカウンタの示すアドレスをアドレスバスに出力
 2.データバスで命令を読み取って演算装置に渡す
 3.プログラムカウンタに命令の長さを加算
 4.演算装置が命令を解析→「2つのデータを加算する命令」
 1.プログラムカウンタの示すアドレスをアドレスバスに出力
 2.データバスで命令やデータを読み取って演算装置に渡す
 3.プログラムカウンタに命令の長さを加算
 4.計算のために一時的にデータを記憶→1つめのデータ「1」を記憶
 1.プログラムカウンタの示すアドレスをアドレスバスに出力
 2.データバスで命令やデータを読み取って演算装置に渡す
 3.プログラムカウンタに命令の長さを加算
 4.計算のために一時的にデータを記憶→2つめのデータ「2」を記憶
 5.命令を実行→「1」と「2」をたす
これはあくまで一例ですが、命令によって必要なクロック数が変わるのが解ると思います。
次の章では、ここで説明した事のより簡単なモデルを使用して、プログラムの流れについて説明したいと思います。
目次へ戻る