基本的なパーツをすべて導入したので、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 内の多数のトランジスタ スイッチによって処理され、最終的に目的のタスクが完了します。 |
<<: 花を摘んだり、草を踏んだりしても植物は「痛み」を感じないと思いますか?
>>: 女性の顔に現れる危険信号は無視できません!月経ニキビはなぜ再発するのでしょうか?
最近、「クレイフィルター」が大人気です興味深い視覚体験をもたらしますフィルターをかけた写真は見た目が...
「瓜」という言葉は、多くの人々の生活の中に溶け込んでいると言えます。メロンといえば、果物であるだけ...
数日前、起業家の友人たちと雑談していたとき、Douban について話しました。 Douban の忠実...
「サイエンスインタープリター」の解説を聞く海上の食糧危機著者 |科学通訳者 夏二新航海といえば、イ...
制作:中国科学普及協会制作者:趙婷婷、張凡(中国科学院武漢植物園)制作者: 中国科学院コンピュータネ...
朝食は私たちの生活の中で最も重要な食事です。多くの人は朝食に蒸しパンと豆乳を食べることに慣れています...
レビュー専門家: 王国一、中国農業大学栄養学・食品安全学博士研究員冷蔵庫は清潔で整頓されているのに、...
生きるか死ぬか、これはウミグモにとって問題ではないはずだ。結局のところ、彼らは生き残るためにあまりに...
大根の食べ方はいくつありますか?最も一般的なのは、煮る、炒める、自然乾燥、大根の細切りの漬物などです...
人間が生まれて最初に解決しなければならないのは、食糧の問題です。食べ物がなく、体がエネルギーを補給で...
紫キャベツは、通称「紫キャベツ」とも呼ばれています。色が紫色で、形がキャベツに似ていることから「紫キ...
そば麺包子という食べ物について聞いたことがある人はほとんどいないでしょうし、食べたことがある人はさら...
現代社会は健康維持を標榜し、美を愛する社会です。女性にとって、美容は生涯の仕事です。この美しさのため...
掘削は地質調査の最も直接的かつ不可欠な手段の一つであり、地下物体の物理的情報を直接得る唯一の手段でも...