CPU
 Computer >> コンピューター >  >> ハードウェア >> CPU

CPUはどのように機能しますか?

マイクロプロセッサとしても知られるCPUは、コンピュータの心臓部および/または頭脳です。コンピューターのコアを深く掘り下げて、コンピューター プログラムを効率的に作成できるようにします。

「ツールは通常、機械よりも単純です。一般的に手で使用されますが、機械は動物や蒸気の力で動かされることがよくあります。」

チャールズ・バベッジ

コンピュータ 機械です 主に電気を動力源としていますが、その柔軟性とプログラム可能性は、ツールのシンプルさを実現するのに役立ちました.

CPU は、コンピューターの心臓部および/または頭脳です。提供された命令を実行します。その主な仕事は、算術演算と論理演算を実行し、命令をまとめることです。主要部分に入る前に、CPU の主要なコンポーネントとは何か、そしてその役割とは何かを見てみましょう:

プロセッサの 2 つの主要コンポーネント

  • 制御ユニット — CU
  • 算術および論理ユニット — ALU

コントロールユニット — CU

コントロール ユニット CU は、命令の実行を調整するのに役立つ CPU の一部です。何をすべきかを示しています。指示によると、CPU を ALU を含むコンピュータの他の部分に接続するワイヤをアクティブにするのに役立ちます。 .制御ユニットは、処理命令を受け取る CPU の最初のコンポーネントです。

制御ユニットには次の 2 種類があります。

  • ハードワイヤード コントロール ユニット .
  • マイクロプログラマブル (マイクロプログラム) 制御ユニット .

ハードワイヤード コントロール ユニットはハードウェアであり、マイクロプログラマブルとして機能するように変更を加えるには、ハードウェアを変更する必要があります コントロールユニットは、その動作を変更するようにプログラムできます。ハードワイヤード CU は命令の処理が高速ですが、マイクロプログラマブルはより柔軟です。

算術および論理ユニット — ALU

算術および論理ユニット 名前が示すように、ALU はすべての算術および論理計算を行います。 ALU は、加算、減算などの演算を実行します。 ALU は、これらの操作を実行する論理回路または論理ゲートで構成されます。

ほとんどの論理ゲートは 2 つの入力を取り、1 つの出力を生成します

以下は、2 つの入力を取り込んで結果を出力する半加算器回路の例です。ここで、A と B は入力、S は出力、C はキャリーです。

CPUはどのように機能しますか?
半分のソース:https://en.wikipedia.org/wiki/Adder_(electronics)# /media/File:Half_Adder.svg

ストレージ — レジスタとメモリ

CPU の主な仕事は、与えられた命令を実行することです。ほとんどの場合、これらの命令を処理するには、データが必要です。一部のデータは中間データであり、一部は入力であり、その他は出力です。これらのデータと指示は、次のストレージに保存されます:

レジスター

レジスタは、データを格納できる小さな場所のセットです。レジスタはラッチの組み合わせです . ラッチ フリップフロップ とも呼ばれます 論理ゲートの組み合わせです 1 ビットの情報を格納します。

ラッチには、2 つの入力ワイヤ (書き込みおよび入力ワイヤ) と 1 つの出力ワイヤがあります。書き込みワイヤを有効にして、保存されたデータを変更できます。書き込みワイヤが無効になっている場合、出力は常に同じままです。

CPUはどのように機能しますか?
交差結合された一対の NOR ゲートから構成される SR ラッチ

CPU には出力データを格納するためのレジスタがあります。メインメモリ(RAM)への送信は中間データのため遅くなります。このデータは、BUS で接続されている他のレジスタに送信されます .レジスタには、命令、出力データ、ストレージ アドレス、またはあらゆる種類のデータを格納できます。

メモリ(RAM)

Ram は、より多くのデータを格納できるように、最適化された方法でまとめて配置およびコンパクト化されたレジスタのコレクションです。 RAM(Random Access Memory)は揮発性で、電源を切るとデータが失われます。 RAM はデータを読み書きするためのレジスタの集まりであるため、RAM は 8 ビット アドレスの入力を受け取り、実際のデータを格納するためのデータ入力を受け取り、最後にラッチと同じように機能する読み書きイネーブラーを受け取ります。

指示とは

命令は、コンピューターが実行できる粒度レベルの計算です。 CPU が処理できる命令にはさまざまな種類があります。

説明には以下が含まれます:

  • add などの算術演算 そして引く
  • and などの論理命令 または 、およびしない
  • 移動などのデータ命令 入力 出力 読み込み 保存
  • goto などの制御フロー命令 , if … goto 通話 、および戻る
  • プログラムが終了したことを CPU に通知 Halt

命令は、アセンブリ言語を使用してコンピュータに提供されるか、コンパイラによって生成されるか、一部の高級言語で解釈されます。

これらの命令は、CPU 内に組み込まれています。 ALU には算術演算と論理演算が含まれており、制御フローは CU によって管理されます。

1 クロック サイクル コンピュータは 1 つの命令を実行できますが、最新のコンピュータは複数の命令を実行できます。

コンピュータが実行できる命令のグループは、命令セットと呼ばれます .

CPU クロック

クロック サイクル

コンピュータの速度は、そのクロック サイクルによって決まります。 クロック周期の数です コンピューターが動作する 1 秒あたり。 1 クロック サイクルは非常に小さく、約 250 * 10 *-12 秒です。クロック サイクルが高いほど、プロセッサは高速になります。

CPU クロック サイクルの単位は gHz(ギガヘルツ )。 1gHz は 10 ⁹ Hz(ヘルツ )。ヘルツは秒を意味します。したがって、1 ギガヘルツは 1 秒あたり 10 ⁹ サイクルを意味します。

クロック サイクルが速いほど、CPU の命令が多くなります 実行できます。クロック サイクル =1/クロック レートCPU 時間 =クロック サイクル数 / クロック レート

これは、CPU に提供する命令を最適化することで、CPU 時間を改善するために、クロック レートを上げたり、クロック サイクル数を減らしたりできることを意味します。一部のプロセッサはクロック サイクルを増加させる機能を提供しますが、これは物理的な変更であるため、過熱や発煙/発火さえある可能性があります。

命令はどのように実行されるのですか

命令は RAM に保存されます 順番に。 OP で構成される架空の CPU 命令の場合 コード (操作コード) と メモリまたはレジスタ アドレス .

コントロール ユニット 命令レジスタ (IR) 内には 2 つのレジスタがあります。 命令の OP コードと 命令アドレス レジスタ をロードします 現在実行中の命令のアドレスをロードします。 CPU 内には、命令の最後の 4 ビットのアドレスに格納された値を格納する他のレジスタがあります。

2 つの数値を加算する一連の命令の例を見てみましょう。以下は、その説明と一緒に手順です:

ステップ 1 — LOAD_A 8:

命令は、最初は <1100 1000> のように RAM に保存されます。最初の 4 ビットはオペコードです。これにより、命令が決定されます。この命令は取得されています IR コントロールユニットの。命令はデコードです これは、レジスタ A への命令の最後の 4 ビットであるアドレス 1000 にデータをロードする必要があることを意味します。

ステップ 2 — LOAD_B 2

上記と同様に、メモリ アドレス 2 (0010) のデータを CPU レジスタ B にロードします。

ステップ 3 — ADD B A

次の命令は、これら 2 つの数を加算することです。ここで、CU は ALU に加算操作を実行し、結果をレジスタ A に保存するように指示します。

STEP 4 — STORE_A 23

これは、2 つの数を加算するのに役立つ非常に単純な命令セットです。

2 つの数字が正常に追加されました!

バス

CPU、レジスタ、メモリ、IO デバイス間のすべてのデータはバス経由で転送されます。追加したばかりのメモリにデータをロードするために、CPU はメモリ アドレスをアドレス バスに送り、合計の結果をデータ バスに送り、制御バスの正しい信号を有効にします。このようにして、データはバスの助けを借りてメモリにロードされます。

CPUはどのように機能しますか?
写真ソース:https://en.wikipedia.org/wiki/Bus_(computing)# /media/File:Computer_system_bus.svg

キャッシュ

CPU には、キャッシュされた命令をプリフェッチするメカニズムもあります。私たちが知っているように、プロセッサが 1 秒以内に完了することができる命令は数百万あります。これは、命令を実行するよりも、RAM から命令をフェッチするのにより多くの時間が費やされることを意味します。そのため、CPU キャッシュは命令の一部とデータをプリフェッチして、実行を高速化します。

キャッシュとオペレーティング メモリのデータが異なる場合、データはダーティ ビットとしてマークされます .

命令パイプライン

最新の CPU は 命令パイプライン を使用 for 命令実行の並列化。フェッチ、デコード、実行。 1 つの命令がデコード フェーズにあるとき、CPU はフェッチ フェーズのために別の命令を処理できます。

CPUはどのように機能しますか?
写真の出典:https://en.wikipedia.org/wiki/Instruction_pipelining#/media/ファイル:パイプライン,_4_stage.svg

ある命令が別の命令に依存している場合、これには 1 つの問題があります。そのため、プロセッサは依存せず、異なる順序で命令を実行します。

マルチコア コンピュータ

基本的には別の CPU ですが、キャッシュなどの共有リソースがあります。

パフォーマンス

CPU のパフォーマンスは、その実行時間によって決まります。パフォーマンス =1/実行時間

プログラムの実行に 20 ミリ秒かかるとします。 CPU の性能は 1/20 =0.05ms 相対性能 =実行時間 1/ 実行時間 2

CPU のパフォーマンスで考慮される要素は、命令の実行時間と CPU のクロック速度です。したがって、プログラムのパフォーマンスを向上させるには、クロック速度を上げるか、プログラム内の命令の数を減らす必要があります。プロセッサの速度は制限されており、マルチコアを搭載した最新のコンピューターは 1 秒間に数百万の命令をサポートできます。しかし、私たちが書いたプログラムに多くの命令があると、全体的なパフォーマンスが低下します.

Big O 記法 与えられた入力によって、パフォーマンスがどのように影響を受けるかを決定します。

CPU を高速化し、可能な限りパフォーマンスを向上させるために、CPU では多くの最適化が行われています。プログラムを作成する際には、CPU に提供する命令の数を減らすとコンピューター プログラムのパフォーマンスがどのように向上するかを考慮する必要があります。

Milap Neupane ブログにも投稿:CPU はどのように機能するか


  1. データスクレイピングはどのように機能しますか?

    これを読んでいるので、データスクレイピングの利点と、その自動化された手法により、すべての手作業を自分で行うことなく大量のデータを収集できることを聞いた可能性があります。 しかし、データスクレイピングはどのように正確に機能しますか?そして、それは難しいですか、それとも誰かがデータをスクレイピングする方法を学ぶことができますか? 多分それはあなたが好奇心を持っているからです。または、ビジネス(またはサイドハッスル)にもデータスクレイピングを使用できるかどうかを確認したい場合があります。 いずれにせよ、この短い記事の終わりまでに、データスクレイピングとは何か、スクレイピングプロセスが実際にど

  2. Snapchat の仕組み

    Snapchat がモバイル メッセージング アプリの世界に革命をもたらしたと言っても過言ではありません。 Snapchat が登場する前は、友人とのコミュニケーションにこれほどユニークな方法があるとは誰も夢にも思いませんでした。 Snapchat がもたらす自己破壊的な画像や動画という概念は、通常のメッセージやソーシャル ネットワーキング アプリとはまったく異なります。そしてこれが、2011 年の開始以来、Snapshot が現在 1 億 8000 万人を超える毎日のアクティブ ユーザーを持つ最も人気のあるアプリの 1 つになっている理由です。また、報告によると、ファンのフォローはティーンエ