CPUガイド
1. 序章
このチュートリアルでは、中央処理装置(CPU)が、算術論理演算装置(ALU)、レジスタ、RAMなどの他の重要なコンポーネントとどのように連携して動作するかを見ていきます。 。
2. CPUの概要
CPUが担当するジョブは非常にたくさんあります。 それは単にあらゆるコンピュータの心臓部です。 Firefox、Sublime Text、GTA Vなどのプログラムは、命令と呼ばれる一連の操作で構成されています。 彼らはコンピュータに何を実行するかを指示します。 命令が加算や減算などの数学的なものである場合、CPUはこの数学的な計算を実行するようにALUを設定します。 メモリー命令の場合もあります。 その場合、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。
これらの操作は、論理ゲートを介して実行されます。
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つであるシングルチップCPUIntel 4004 は4ビットCPUであり、1971年にリリースされました。 そのマイクロアーキテクチャは、CPUの例と非常によく似ています。 クロック速度は740キロヘルツ、つまり1秒あたり74万サイクルですが、今日の最新のコンピュータープロセッサのクロック速度は数ギガヘルツで、1秒あたり数十億のCPUサイクルを意味します。
4. 結論
この記事では、CPUがどのように機能するかについて説明し、CPU上で実行される簡単なプログラムを示しました。 命令テーブル、命令サイクル、およびCPUクロックについても詳しく説明しました。