CPUのアーキテクチャ

明日もキャッシュと次の作業を続けます。 

以下はCPUフレーム図です。

CPUの説明を始める

1. コントローラー

コントローラはコントロールユニット(略してCU)とも呼ばれ、コントローラの構成は次のとおりです。

1. 命令レジスタ IR: 現在実行中の命令を格納するために使用されます。命令を実行する必要がある場合、プログラムカウンタPCが示す命令アドレスに従って、命令がキャッシュから命令レジスタIRにフェッチされる。

オペレーションコードはmov、add、jmpなどのアセンブリ言語のシンボルコードであり、オペランドアドレスはデータキャッシュ上の命令が必要とするオペランドのアドレスを示します。 

2. 命令デコーダ ID: 命令レジスタ内の命令がデコードされ、その命令が実行する演算 (つまり、命令内の演算コード) とオペランドがどこにあるか (オペランドのアドレス) が判断されます。

3. タイミング ジェネレータ TG: 「タイム スケジュール」と同様に、コンピュータの各部分の動作に必要なタイム マークを提供します。一般に、一連のタイミング パルスと異なるパルス間隔を使用して実現されます。

4. 演算コントローラ CU: 命令によって完了する必要のある動作と信号に従って、さまざまなマイクロ動作コマンド シーケンスが発行され、すべての制御対象を制御し、命令の実行を完了します。

5. プログラムカウンタ PC: 次に実行される命令のアドレスを格納するために使用され、メモリ (メモリ) との間に直接パスがあります。命令を実行する場合には、まずプログラムカウンタPCに格納されている命令アドレスに従ってメモリから命令レジスタIRに命令をフェッチし、「命令フェッチ」の動作を完了する必要がある。プログラムカウンタ PC 自体に 1 を自動的に加算する機能があり、次の命令のアドレスが自動的に与えられ、各命令がループ実行されます。

2. 電卓

演算装置には通常、少なくとも 3 つのレジスタと 1 つの算術論理演算装置 (ALU) が含まれており、最近のコンピュータには内部に汎用レジスタ グループが組み込まれていることがよくあります。

レジスタは、限られた記憶容量を持つ高速記憶装置であり、命令、データ、アドレスを一時的に保存するために使用できます。レジスタには多くの種類がありますが、四則演算に関係するものは大きく分けて、ACC(Accumulator)はアキュムレータ、MQ(Multiplier-Quotient Register)は乗算レジスタ、Xはオペランドレジスタの3種類があります。レジスタの種類によって実行される操作は異なります。格納されるオペランドの種類も異なります。

電卓

 製品の上位桁と製品の下位桁の概念について、10進法を例にとると、百の位は十の位の上位の桁、十の位は百の位の下位の位となります。 。2 つの 16 ビット数値を乗算すると、結果は 32 ビットになります。左半分の 16 ビットは積の上位ビットであり、ACC に格納されます。右半分の 16 ビットは積の下位ビットです。 MQ に保存されるプロダクト。
算術論理演算ユニット (ALU、Arithmetic and Logic Unit) は、算術論理演算のコンポーネントです。算術演算には加算、減算、乗算などの整数演算が含まれ、論理演算には AND、OR、NOT、XOR などの論理演算やシフト、比較、転送などの演算が含まれます。
シフト演算、文字の左または右へのシフト、または特定のビットの浮動小数点演算 (符号付き拡張子と符号なし拡張子を含む) は、プログラムで広く使用されています。

3. 登録する

CPU には少なくとも 6 種類のレジスタが必要です: 命令レジスタ (IR)、プログラム カウンタ (PC)、アドレス レジスタ (AR)、データ レジスタ (DR)、蓄積レジスタ (AC)、およびプログラム ステータス ワード レジスタ (PSW) )。

これらのレジスタは、CPU が高速に使用できるように少量のデータを保存するために使用されます。

  1. データレジスタ
    データレジスタ(データレジスタ、DR)は、データバッファレジスタとも呼ばれ、その主な機能は、CPU間の動作速度の向上を補うために、CPU、メインメモリ、および周辺機器間の情報伝送の転送ステーションとして機能することです。 、メインメモリ、周辺機器の違いです。
    データレジスタは、メインメモリから読み出した命令やデータワードを一時的に格納するために使用され、逆に、命令やデータワードがメインメモリに格納される場合には、それらもデータレジスタに一時的に格納される。
    データレジスタの役割は、
    (1) CPU、主記憶、周辺機器間の情報伝達の中継点として、
    (2) CPU、主記憶、周辺機器の動作速度の差を補うことです。
    (3) 単一の場合 アキュムレータ構造の演算器では、データレジスタがオペランドレジスタを兼ねることができます

  2. 命令レジスタ
    命令レジスタ (命令レジスタ、IR) は、現在実行中の命令を保存するために使用されます。
    命令が実行されるとき、命令はまずメインメモリからデータレジスタに読み込まれ、次に命令レジスタに転送されます。
    命令には、オペコードとアドレス コードの 2 つのフィールドが含まれます。命令を実行するには、必要な操作を識別するためにオペコードをテストする必要があります。命令デコーダ (命令デコーダ、ID) がこの作業を完了します。命令デコーダは、命令レジスタのオペコード部分をデコードして、命令に必要な動作の制御電位を生成し、マイクロ動作制御回路に送り、マイクロ動作制御回路に送り、マイクロ動作制御回路のタイミング信号の作用下で特定の動作制御を生成します。シーケンシャルコンポーネント信号。
    命令レジスタのオペコード フィールドの出力は、命令デコーダへの入力になります。オペレーションコードがデコードされると、特定の動作に対する特定の信号をオペレーションコントローラに送信できます。

  3. プログラム カウンタ
    プログラム カウンタ (プログラム カウンタ、PC) は、メイン メモリ内の次の命令のアドレスを示すために使用されます。
    プログラムが実行される前に、プログラムの最初のアドレス、つまりプログラムの最初の命令が配置されている主記憶装置のアドレスを PC に送信する必要があるため、PC の内容は次のアドレスになります。メインメモリからフェッチされた最初の命令。
    命令を実行するとき、CPU は PC の内容を自動的にインクリメントして、次に実行される命令のメイン メモリ アドレスを常に保存し、次の命令をフェッチできるようにすることができます。シングルワード命令の場合は (PC)+1àPC、ダブルワード命令の場合は (PC)+2àPC などとなります。
    ただし、分岐命令に遭遇した場合、次の命令のアドレスは、通常のように PC の内容を順次インクリメントすることで取得されるのではなく、分岐命令のアドレス コード フィールドによって指定されます。
    したがって、プログラムカウンタの構造は、情報の登録とカウントの2つの機能を備えた構造とする必要がある。

  4. アドレスレジスタ
    アドレスレジスタ(アドレスレジスタAR)は、CPU が現在アクセスしている主記憶装置のアドレスを保存するために使用されます。
    メインメモリとCPUでは動作速度に差があるため、メインメモリへのアクセスが完了するまで、メインメモリのアドレス情報を一時的に保存するアドレスレジスタが必要になります。
    CPUとメインメモリが情報を交換するとき、つまりCPUがメインメモリにデータや命令を格納したり、メインメモリからデータや命令を読み出したりするときに、アドレスレジスタとデータレジスタが使用されます。
    周辺機器と主記憶装置を一律にアドレス指定すると、CPU と周辺機器が情報を交換するときに、アドレスレジスタとデータレジスタも使用する必要があります。

  5. アキュムレーション レジスタ
    アキュムレーション レジスタは、通常、単にアキュムレータ (Accumulator、AC) と呼ばれ、汎用レジスタです。
    アキュムレータの機能は、算術ユニットの算術論理ユニット ALU が算術演算または論理演算を実行するときに、ALU に作業領域を提供し、ALU のオペランドまたは演算結果を一時的に保存できることです。
    当然のことながら、演算ユニットには少なくとも 1 つの累積レジスタが必要です。

  6. プログラム ステータス ワード レジスタ
    プログラム ステータス ワード (プログラム ステータス ワード、PSW) は、プログラムの現在の動作ステータスと動作モードを表すために使用されます。
    プログラムステータスワードレジスタは、演算結果キャリー/ボローフラグ(C)、演算結果オーバフローフラグ(O)、算術論理命令の演算結果やテスト結果によって成立する各種条件コードの内容を保存するために使用されます。演算結果はゼロフラグ(Z)、演算結果はマイナスフラグ(N)、演算結果符号フラグ(S)などです。これらのフラグビットは通常1ビットのフリップフロップで保存されます。
    さらに、プログラム ステータス ワード レジスタは、割り込みやシステム動作ステータスなどの情報を保存するためにも使用され、CPU とシステムがマシンの動作ステータスやプログラムの動作ステータスを常に把握できるようにします。
    したがって、プログラムステータスワードレジスタは、各種ステータス条件フラグを保持するレジスタです。

以下はCPUとメインメモリのフレーム図です。

4.MMU

CPUに属します

 mmu の役割は、仮想アドレスと物理アドレスの間で変換を行うことです。

仮想アドレスと物理アドレスの関係はページテーブルに記録され、ページテーブルはメモリに格納されます。

TLB は、ページ テーブルの変換結果をキャッシュし、ページ テーブルの検索時間を短縮するためのキャッシュです。

TLB にヒットがない場合は、TWU を使用してメモリ内のページ テーブルを走査し、物理アドレスまたは仮想アドレスを取得して、それを TLB に記録します。

 5.キャッシュ

CPUに属します

まず、キャッシュは高速キャッシュと呼ばれます。なぜキャッシュがあるのか​​というと、メモリアクセスデータは高速ですが、それでもCPUに比べて遅すぎるためです。キャッシュはメモリよりも数百倍速く、アクセスは速度はCPUと同等なので、あらかじめメモリ上のデータをキャッシュにロードし、CPUが使用するキャッシュを作成します。

キャッシュはL3キャッシュ/L2キャッシュ/L1キャッシュに分割され、L1キャッシュは命令キャッシュキャッシュとデータキャッシュキャッシュに分割されます

L1 キャッシュと L2 キャッシュは同じ CPU 上にあり、L3 キャッシュは通常複数の CPU 間で共有されます。

 次の図は、コンピュータに保存されているすべてのデータの種類を示しています

1. ストレージ 2. キャッシュ 3. メモリ 4. ハードディスク

2. CPU 実行プロセス

CPU実行プロセス

1. 命令のフェッチ

CPUは、プログラムカウンタが指す命令キャッシュ内の命令を読み出し、その命令を命令レジスタIRに読み込む。

2. 分析と指示の発行

命令デコーダIDは命令を解析します。

オペレーションコントローラCUとタイミングジェネレータTGは、その機能に応じて各部に制御コマンドを発行し、その制御コマンドの動作を実行する。

3. 命令を実行する

命令の実行は、オペランドのフェッチと演算の実行の 2 つのステップに分かれています。

オペランドのフェッチ: CPU は、アドレス指定操作を通じてデータ キャッシュ キャッシュからオペランドをレジスタに読み取り、一時的に保存します。

演算の実行: 演算ユニットは命令内のオペコードを通じてレジスタ内の数値を演算します。

4. 命令数

次の命令のアドレスを指すようにプログラム カウンタ PC を変更し、命令がなくなるまで上記の手順を繰り返します。

CPUのL3キャッシュのサイズ

1次キャッシュは最も容量が小さく、単位はKBであり、CPUによる違いはありません。

2 次キャッシュは、一部のサーバー CPU が 10 MB を超える場合を除き、基本的には 1 桁の MB です。

L3 キャッシュ、一般的な CPU の L3 キャッシュはわずか 10MB 程度です (現在、AMD EPYC の X シリーズは 768MB の L3 キャッシュに達しています)。

CPUとIOの関係

コンピュータ ハードウェアは DMA を使用してディスクやその他の IO にアクセスします。つまり、リクエストが送信された後は、DMA プロセッサがタスクを完了し、割り込みを通じて CPU に通知するまで、CPU はリクエストを管理しません。したがって、1 回の IO 時間が占有する CPU はごくわずかであり、ブロックされた場合でも、プログラムは実行を継続せず、CPU 時間が他のスレッドやプロセスに与えられるため、CPU は占有されません。IO は多くの CPU 時間を消費しませんが、非常に頻繁な IO は依然として CPU 時間を無駄にします。そのため、多数の IO タスクに直面して、IO をマージしたり、IO プレッシャーを軽減するためにキャッシュを使用したりするためのアルゴリズムが必要になる場合があります。



 

おすすめ

転載: blog.csdn.net/weixin_70280523/article/details/132157339