1. 序章

このチュートリアルでは、中央処理装置(CPU)が、算術論理演算装置(ALU)、レジスタ、RAMなどの他の重要なコンポーネントとどのように連携して動作するかを見ていきます。 。

2. CPUの概要

CPUが担当するジョブは非常にたくさんあります。 それは単にあらゆるコンピュータの心臓部です。 Firefox、Sublime Text、GTA Vなどのプログラムは、命令と呼ばれる一連の操作で構成されています。 彼らはコンピュータに何を実行するかを指示します。 命令が加算や減算などの数学的なものである場合、CPUはこの数学的な計算を実行するようにALUを設定します。 メモリー命令の場合もあります。 その場合、CPUはメモリと相互作用して値の読み取りと書き込みを行います。

このような複雑な操作を行うために、下図のようにCPUには多くの部品があります。 すべてのワイヤを調べるのではなく、いくつかのブロックに焦点を当てます。 次の図のようなこのレベルのビューは、マイクロアーキテクチャと呼ばれます。

プログラムを実行するには、ある程度のメモリが必要です。 簡単にするために、それぞれが8ビットを含む16個のメモリ位置を持つメモリを使用します。 さらに、図からわかるように、プロセッサには4つの8ビットメモリレジスタA、B、C、およびDがあります。 値を保存および操作するために一時的に使用します。

2.1. 指示表

データはバイナリ値としてメモリに保存できます。また、プログラムもメモリに保存できます。 CPUには、以下の表に示すように、サポートされている命令を指定するための命令テーブルがいくつかあります。この例では、最初の4ビットは操作コードまたは略してオペコードになります。 他の4つは、その操作のデータになります。 データは、レジスタまたはメモリ内のアドレスから取得できます。

CPUには、命令アドレスレジスタと命令レジスタの2つのレジスタも必要です。 プログラムのどこにいるかを追跡するために、命令アドレスレジスタを使用します。 現在の命令のメモリアドレスを格納します。 コンピュータを最初に起動したとき、これらのレジスタはすべて0から始まります。 この記事で説明する小さなプログラムを使用してRAMを初期化します。

以下の説明表をご覧ください。

2.2. 命令サイクル

命令を処理するために、CPUは、起動からコンピュータがシャットダウンするまで、フェッチ、デコード、および実行のサイクルを含む命令サイクルに従う必要があります。 CPUの操作の最初のフェーズはフェッチフェーズと呼ばれ、最初の命令を取得します。

レジスタ値は0であるため、RAMはアドレス0に格納されている値を返します。 この場合、00101110。 次に、この値が命令レジスタにコピーされます。 これで、メモリから命令をフェッチしました。 CPUが正しく実行できるように、この命令が何であるかを理解する必要があります。 これはデコードフェーズと呼ばれます。

デコードフェーズでは、オペコードは最初の4ビット:0010です。 これは、RAMからレジスタAに値をロードする命令に対応します。 RAMアドレスは最後の4ビットです:1110、または10進数で14。

これらの操作は、論理ゲートを介して実行されます。 詳細に立ち入ることなく、コントロールユニットがCPUのさまざまな部分すべてを制御する責任があると言えます。 完全なフェッチ、デコード、および実行のサイクルを1つ完了すると、最初からやり直す準備が整います。 メモリと命令テーブルの最初の4行を注意深く見ると、サイクルの中で、オペコード0001とRAMアドレス:1111があることがわかります。 10進数の値00001110、14をレジスタBに保存します。

2.3. 指示を追加

命令アドレスレジスタをもう一度インクリメントすると、2がアドレス指定されます。 アドレス2には、オペコードとして1000があります。 次の命令は、2つのレジスタに値を加算し、結果を2番目のレジスタに格納する命令であることがわかります。 CPUは、ALUを使用してこの操作を実行します。 命令の最後の4ビットを見ると、01がレジスタBに対応し、00がレジスタAに対応していることがわかります。 この命令の最後に、CPUは14と3を追加し、17をレジスタAに格納します。

2.4. ストアの説明

これで、最後の命令01001100をフェッチできます。 デコードすると、0100が命令であり、RAMアドレスが1100で、10進数で12であることがわかります。 メモリを読み取り可能にするのではなく、RAMにアドレスを渡し、書き込み可能にします。

要約すると、メモリから2つの値をロードし、それらを合計して、結果をメモリに保存しました。

3. CPUクロック

CPUクロックは、フェッチ、デコード、および実行フェーズに沿ってCPUを刻み続ける役割を果たします。一定の間隔で電気信号をトリガーします。 コントロールユニットは、これを使用してCPUの内部動作を進めます。

CPUがフェッチ、デコード、実行サイクルの各ステップを実行できる速度は、クロック速度と呼ばれます。 この速度は、周波数の単位であるヘルツで測定されます。 1ヘルツは、1秒あたり1サイクルを意味します。

最初のCPUの1つであるシングルチップCPUIntel 4004 は4ビットCPUであり、1971年にリリースされました。 そのマイクロアーキテクチャは、CPUの例と非常によく似ています。 クロック速度は740キロヘルツ、つまり1秒あたり74万サイクルですが、今日の最新のコンピュータープロセッサのクロック速度は数ギガヘルツで、1秒あたり数十億のCPUサイクルを意味します。

4. 結論

この記事では、CPUがどのように機能するかについて説明し、CPU上で実行される簡単なプログラムを示しました。 命令テーブル、命令サイクル、およびCPUクロックについても詳しく説明しました。