CPUの仕組み 6——CPUの組み立て

CPUの仕組み 6——CPUの組み立て

基本的なパーツをすべて導入したので、CPU を組み立てることができます。このセクションでは多くの内容を取り上げます。

CPUの構築が始まった今、CPUはプログラムを実行するために使われるので、プログラムは欠かせません。どのプログラミング言語で書かれたプログラムも最終的にはバイナリに変換されることがわかっているので、ここではバイナリプログラミング言語(マシン言語)を直接使用します。たとえば、CPU に 3 14 の加算を計算するように指示する場合、この加算演算を機械語で記述すると、次の 2 進数に類似します。

見た目が汚いですよね?大丈夫です、後で説明します。知っておく必要があるのは、このバイナリ プログラムを CPU が読み取って実行できるようにメモリに保存する必要があるということだけです。

メモリにはプログラムだけでなく、計算用のデータとして3と14も保存されています。 CPU が行う必要があるのは、メモリ内の特定のアドレスからデータ 3 と 14を読み取り、プログラムの要件に従って 2 つの数値の計算(加算、減算など) を実行し、計算結果をメモリ内の特定のアドレスに格納することです

このような機能を実現するには、CPU が読み取り、計算、保存という対応するアクションを認識できるように規則を設定する必要があります。そのため、次の規則を確立します (命令テーブルと呼ばれます)。

命令テーブルはプログラムのインタープリターとして理解できます。 CPU は、00101110 などのプログラムを受信すると、その意味を認識する必要があり、命令テーブルは質問に答えて疑問を解決するのに役立ちます。

具体的には、各プログラム (命令) の最初の 4 ビットは命令テーブル内の操作コードに対応し、最後の 4 ビットは命令テーブル内のアドレスに対応します。たとえば、00101110 の場合、最初の 4 ビット 0010 はオペレーション コードで、これは LOAD_A (命令表を参照) を意味し、データを読み取ってレジスタ A に格納することを意味します。最後の 4 ビット 1110 を見ると、命令表に記載されている内容は「4 ビット メモリ アドレス」であり、これは実際に読み取るデータのメモリ アドレスです。これら 2 つを合わせると、「アドレス 1110 のデータを読み取り、レジスタ A に保存する」という意味になります。

次はサーキットです!まず、メモリが必要です。前のセクションで説明した 256B メモリを直接使用することもできますが、便宜上、このメモリには 16 個のアドレスしかなく、16 個の 8 ビット 2 進数を格納できると想定します。さらに、それぞれ 8 ビットの 2 進数を格納できる 6 つのレジスタが必要です。レジスタADはデータを一時的に保存して操作するために使用され、命令アドレスレジスタはプログラムが実行している場所(プログラム命令のアドレス)を記録するために使用され、命令レジスタは命令の内容を保存するために使用されます。

次に、作業プロセスを分析してみましょう。コンピュータが起動すると、すべてのレジスタの初期値は 00000000 になり、CPU は最初の段階である命令のフェッチ、つまりメモリから命令を取得する段階に入り始めます。命令アドレスレジスタはメモリに接続され、アドレス 00000000、つまり 00101110 のデータが読み取られます。このデータは命令レジスタに保存され、第 1 ステージが終了します。

2 番目の段階はデコードです。これは、命令が何を実行するのかを判断する段階です。実のところ、私たちはすでに基礎を築いていました。命令の内容は 00101110 で、最初の 4 ビット 0010 は命令テーブル内の LOAD_A に対応する操作コードです。命令の最後の 4 ビットは 1110 で、これは 4 ビットのメモリ アドレスに対応します。全体的な意味は、位置 1110 からデータを読み取り、レジスタ A に保存することです。ただし、デコード作業を実行できる既製の回路はないため、図に示すように、いくつかの回路を追加する必要があります。

この新しく追加された回路を、仮にデコード回路と呼ぶことにします。命令レジスタのデータ 0010 の最初の 4 ビットは、デコード回路の入力として使用されます。これらのゲート回路で処理された後、最終的に 1 が出力されます。つまり、デコード回路の機能は、命令が0010(LOAD_A)であるかどうかを識別することです。命令が 0010 のときのみ出力は 1 になり、それ以外の場合は 0 になります。

第三段階:実行。デコード回路の出力はメモリの読み取り有効ポートに接続され、命令レジスタ 1110 の最後の 4 ビットはメモリのアドレス ポートに接続されます。これは、メモリ アドレス 1110 (00000011 (10 進数 3)) のデータの読み取りを許可することと同じです。

次に、このデータをレジスタ A に保存するにはどうすればよいでしょうか?デコード回路の出力をレジスタ A の書き込みイネーブル ポートに同時に接続し、4 つのレジスタのデータ入力ポートをメモリのデータ ポートに接続する必要があります。データ 00000011 が読み出されると、同時に 4 つのレジスタに送信されますが、書き込みが許可されているのはレジスタ A のみであるため、データはレジスタ A に保存されます。

次に、次の命令をフェッチするために、命令アドレスレジスタ1を00000001に変更します。以降の手順は前の手順と同様です。前のデコード回路は最初の命令 LOAD_A のみを認識でき、後続の各命令には個別のデコード回路のサポートが必要であることに注意してください。デコード回路、命令レジスタ、命令アドレスレジスタなど、すべての命令に対応する部分を制御部と呼びます。

次に、残りの指示を簡単に分析します。命令アドレスは 00000001 なので、メモリから 00011111 を取り出して命令レジスタに格納します。最初の 4 ビット 0001 に対応する命令は LOAD_B であり、最後の 4 ビット 1111 は読み取るメモリ アドレスです。対応するデータは 00001110 (10 進数では 14) で、レジスタ B に格納されます。次に、命令アドレス レジスタ 1 (00000010) は次の命令のフェッチを続行します。命令の内容は 10000100 です。最初の 4 桁の 1000 は命令表の ADD に対応し、最後の 4 桁の 0100 はそれぞれ 2 つのレジスタ 01 と 00 のアドレスです (レジスタは A ~ D の 4 つしかないため、2 ビットの 2 進数で記述できます)。00 はレジスタ A、01 はレジスタ B なので、この命令の機能はレジスタ A と B の値を加算することです。加算に関しては、前に説明した算術論理ユニット (計算ユニット (ALU) とも呼ばれる) を使用する必要があります。回路を次のように簡略化してみましょう。

レジスタAとレジスタBは、制御ユニットを介して操作ユニットの2つの入力端子に接続されます。同時に、制御ユニットは演算ユニットに演算子を渡して計算を実行できるようにします。計算結果は保存する必要がありますが、命令自体には保存場所が指定されていないため、ここでは規則があります。計算結果は命令アドレスの最後のレジスタに保存されます。 2 つのレジスタ アドレスは 01 と 00 で、その後に続く 00 はレジスタ A であるため、最終結果は制御ユニットを介してレジスタ A に保存されます。結果は 00010001 (10 進数では 17) です。

命令アドレスレジスタ1(00000011)、次の命令のフェッチを続行します。命令の内容は 01000111 です。最初の 4 ビット 0100 は命令が STORE_A であることを示しており、これはレジスタ A のデータをメモリに書き込むことを意味します。メモリ アドレスは、命令 0111 の最後の 4 ビットです。制御ユニットは、レジスタ A に読み取り許可信号を送信し、メモリに書き込み許可信号を送信し、レジスタ A の値をメモリ内の対応する位置に保存します。

最後に、2 つの数値を加算するという簡単なプログラム タスクを完了し、結果を正常に保存しました。各命令の読み取り、デコード、実行は 1 サイクルに相当することがわかります。 CPU はこのサイクルを継続的に繰り返して、さまざまなタスクを完了します。各サイクルでは、算術論理ユニット、制御ユニット、およびストレージ ユニット (メモリ) が緊密に連携し、リズムの一貫性を保ち、最終結果が正確であることを保証する必要があります。しかし、リズムが適切であることをどうやって確認するのでしょうか?電気信号の処理にも時間がかかるため、速すぎてもいけませんし、遅すぎても計算効率が低下します。つまり、時計のようにリズムを制御する別の回路があり、各部分が秩序正しく動作するように正確に指示します。 CPU には、メイン周波数という重要な指標があります。たとえば、2.6GHz は 1 秒あたり 26 億サイクルに相当し、CPU は 1 秒間に 26 億サイクルを実行することを意味します。 CPU のメイン周波数が高いほど、速度が速くなります。クロック回路、制御ユニット、および 6 つのレジスタを備えた算術論理ユニットを、比較的独立した部分、つまり CPU にカプセル化します。

この時点で、私たちは単純なトランジスタ スイッチから始めて、途中でレンガやタイルを追加し、最終的に完全な CPU を構築しました。もちろん、これは最も基本的な CPU でもあります。この一連の記事を読めば、ハードウェアとソフトウェアの交差点を明確に理解できると思います。私たちが日常生活で使用するあらゆる種類のソフトウェアは、プログラム命令によって書かれています。各プログラムのすべての命令は、CPU 内の多数のトランジスタ スイッチによって処理され、最終的に目的のタスクが完了します。

<<:  花を摘んだり、草を踏んだりしても植物は「痛み」を感じないと思いますか?

>>:  女性の顔に現れる危険信号は無視できません!月経ニキビはなぜ再発するのでしょうか?

推薦する

バーチャルリアリティ映画が批判を浴びている今、テクノロジー以外の何かを考える時が来ている

2016年1月21日から31日まで、米国ユタ州パークシティで新しいサンダンス映画祭が開催されました。...

千年前のミイラは癌患者だったことが判明...

がんの初期の歴史では、人々はその存在をほとんど認識していませんでした。その歴史は実は私たちが思ってい...

私の国の無人運転インフラの展開は自動車レーダー技術の実験を開始しました

記者は11月23日、自動車情報サービス産業応用連盟から、わが国が自動車向け77-81GHzミリ波レー...

牛ヒレ肉のフライの作り方

牛ヒレ肉を炒める方法はたくさんあります。自分の好みに合った方法を選ぶことができます。もちろん、自分の...

人間の「全ゲノム」の最初の草稿が公開された。その重要性は何ですか?

ヒトゲノム配列の最初のドラフトが公開されてから20年が経過したことをご存知ですか? 20年前に公開さ...

その美しさに騙されないでください。一口でロブスターの爪を噛み切ってしまうほどです!

サンゴ礁やテレビで、フグに似ているけれど抽象画のように明るく大胆な色をした魚を見たことがありますか?...

注意深い!こうした日常の習慣は関節疾患のリスクを高めます。影響を受けていますか?

関節痛を経験したことがありますか?関節炎は一般的な関節疾患として、徐々に私たちの生活の中で「ありふれ...

黄鉄軍 |機械の台頭と無限の知能

今日は、知性の背後にある原理は何かという問いには答えません。脳の謎とは何でしょうか?まず、どのような...

かなりハゲてるね!秋から冬にかけて髪の毛が急激に抜ける場合はどうすればいいでしょうか?この数値を超えない限りは正常とみなされます

日に日に気温が下がるにつれ、冷たい秋風、きつく巻かれたコート、熟した果物、舞い散る落ち葉など、秋冬の...

ベーコンと春タケノコのキャセロール

肉は多くの人に好まれる食べ物です。肉には脂肪とタンパク質が多く含まれています。肉を食べるときは、その...

ヤムイモとナツメのペーストケーキの作り方

ヤムイモとナツメのペーストケーキとは何ですか?おそらくあなたは人生でこの種のケーキを食べたことがない...

豆腐と魚卵の煮込みの作り方

魚卵を豆腐と一緒に煮たものは豆腐の作り方の一つです。豆腐はその栄養価の高さから私たちがよく食べる食べ...

驚き! 「スーパームーン」が中秋節を盛り上げ、今年は「目を楽しませてくれる」

明るい月が海の上に昇り、世界中の人々がこの瞬間を共有します。 9月になり、毎年恒例の中秋節が近づいて...