1970年代のBabbage’s difference engineやメインフレームパンチカードシステムなど、以前の設計の遺産は、今日のコンピュータシステムに大きな影響を与えている。 この歴史的なシリーズ、コンピュータの歴史とシステム管理者のための現代のコンピュータの私の最初の記事では、私は現代のコンピュータのいくつかの前,

この記事では、そのコンポーネントと機能を含む中央処理ユニット(CPU)について説明します。 トピックの多くは最初の記事に戻って参照しているので、まだ持っていない場合は必ず読んでください。

中央処理ユニット(CPU)

現代のコンピュータのCPUは、バベッジの差分エンジンの”ミル”の実施形態です。 中央処理ユニットという用語は、単一の巨大なキャビネットに機械レベルのプログラム命令を解釈し、供給されたデータに対して操作を実行するため, 中央処理装置はまた付けられた周辺装置のためのすべての処理を完了した。 周辺機器としてはプリンタ、カードリーダー、保管デバイスなどのドラム、ディスクドライブもできます。 現代の周辺機器は、それ自体がかなりの量の処理能力を持ち、CPUからいくつかの処理タスクをオフロードします。 これにより、CPUが入出力タスクから解放され、その電力が手元のプライマリタスクに適用されるようになります。

初期のコンピュータはCPUが一つしかなく、一度に一つのタスクしか実行できませんでした。,

私たちは今日、CPUという用語を保持していますが、今では典型的なマザーボード上のプロセッサパッケージを指します。 図1に示す標準のインテルプロセッサのパッケージです。

Image

図1:Intel Core i5プロセッサパッケージ(ウィキメディア-コモンズ経由Jud McCranie、CC BY-SA4.0)。

プロセッサパッケージ自体を除いて、ここで見るものは本当にありません。 プロセッサパッケージは、金属容器の中に密封され、小型プリント回路(PC)基板に実装されたプロセッサ(複数可)を含むチップです。, パッケージは単にマザーボード上のCPUソケットの所定の位置に落とされ、ロックレバー配置で固定されています。 CPUクーラー付プロセッサーのパッケージです。 コンタクトの特定の番号を持ついくつかの異なる物理的なソケットがあるので、あなた自身のコンピュータを構築する場合は、マザーボードソケットに合

CPUの仕組み

CPUをより詳細に見てみましょう。 図2は、コンポーネントをより簡単に視覚化できるように、仮想的なCPUの概念図です。, RAMとシステムクロックはCPUの一部ではなく、わかりやすくするためにのみ表示されるため、影付きです。 また、CPUクロックと制御部との間のCPU部品への接続は引き込まれない。 クロックと制御ユニットからの信号は、他のすべてのコンポーネントの不可欠な部分であると言えば十分です。

Image

図2:典型的なCPUの簡易概念ダイアグラム。

このデザインは特にシンプルに見えませんが、現実はさらに複雑です。, この数字は、過度に複雑にすることなく、私たちの目的には十分です。

算術論理ユニット

算術論理ユニット(ALU)は、コンピュータの作業である算術および論理機能を実行します。 AレジスタとBレジスタは入力データを保持し、アキュムレータは演算の結果を受け取ります。 命令レジスタには、ALUが実行する命令が含まれています。

たとえば、二つの数字を追加すると、一つの数字がAレジスタに配置され、もう一つはBレジスタに配置されます。 ALUは加算を実行し、結果をアキュムレータに入れます。, 演算が論理演算である場合、比較対象のデータは入力レジスタに配置されます。 比較の結果、1または0がアキュムレータに入れられます。 これが論理演算であろうと算術演算であろうと、アキュムレータのコンテンツは、結果のためにプログラムによって予約されたキャッシュの場所に

ALUによって実行される別のタイプの操作があります。 結果はメモリ内のアドレスであり、命令のロードを開始するためにメモリ内の新しい場所を計算するために使用されます。 結果は命令ポインタレジスタに入れられます。,

命令レジスタとポインタ

命令ポインタは、CPUによって実行される次の命令を含むメモリ内の位置を指定します。 CPUが現在の命令の実行を完了すると、次の命令は命令ポインタが指すメモリ位置から命令レジスタにロードされます。

命令が命令レジスタにロードされた後、命令レジスタポインタは一つの命令アドレスだけインクリメントされます。 インクリメントすることにより、次の命令を命令レジスタに移動する準備ができます。,

Cache

CPUがRAMに直接アクセスすることはありません。 現代のCpuには、一つ以上のキャッシュ層があります。 計算を実行するCPUの能力は、CPUにデータをフィードするRAMの能力よりもはるかに高速です。 この理由はこの記事の範囲を超えていますが、次の記事でさらに詳しく説明します。

キャッシュメモリは、システムRAMよりも高速であり、それはプロセッサチップ上にあるので、それはCPUに近いです。 キャッシュを提供するデータの保管の指示防止のためのCPUから待ってデータから取得することもできますアプリです。, CPUがデータを必要とし、プログラム命令もデータであると見なされると、キャッシュはデータがすでに滞留しているかどうかを判断し、CPUに提供します。

要求されたデータがキャッシュにない場合、RAMから取得され、予測アルゴリズムを使用してRAMからキャッシュにさらに多くのデータを移動します。 キャッシュのコントローラの分析を要求されたデータのように見えますが、追加データが必要であらかに違います。 予想されるデータをキャッシュにロードします。, RAMよりも高速なキャッシュで一部のデータをCPUに近づけることで、CPUはビジー状態のままで、データを待つサイクルを無駄にすることはありません。

私たちの単純なCPUは、キャッシュの三つのレベルを持っています レベル2と3は、次に必要となるデータとプログラム命令を予測し、そのデータをRAMから移動し、必要なときに準備ができるようにCPUに近づけるように これらのキャッシュサイズは、通常、プロセッサの速度と使用目的に応じて、1MBから32MBの範囲です。

レベル1のキャッシュはCPUに最も近い。 私たちのCPUでは、L1キャッシュの二つのタイプがあります。, L1iは命令キャッシュ、L1dはデータキャッシュです。 レベル1のキャッシュサイズは、通常、64KBから512KBの範囲です。

メモリ管理ユニット

メモリ管理ユニット(MMU)は、メインメモリ(RAM)とCPU間のデータフローを管理します。 また、マルチタスク環境で必要とされるメモリ保護や、仮想メモリアドレスと物理アドレス間の変換も提供します。

CPUクロックとコントロールユニット

すべてのCPUコンポーネントを同期させてスムーズに動作させる必要があります。, 制御装置はクロック速度によって定められる率でこの機能を行い、CPU中延びるタイミング信号の使用によって他の単位の操作を指示するために

ランダムアクセスメモリ(RAM)

RAM、またはメインストレージは、この図と次に示されていますが、それは本当にCPUの一部ではありません。 その機能は、プログラムとデータを格納して、CPUが必要なときに使用できるようにすることです。

どのように動作するか

Cpuは、コントロールユニットによって管理され、CPUクロックによって同期されるサイクルで動作します。, このサイクルはCPU命令サイクルと呼ばれ、一連のフェッチ/デコード/実行コンポーネントで構成されています。 静的データまたは変数データへのポインタを含むことができる命令がフェッチされ、命令レジスタに配置されます。 命令がデコードされ、任意のデータがAおよびBデータ-レジスタに配置されます。 命令は、aレジスタとBレジスタを使用して実行され、結果はアキュムレータに入れられます。 CPUはその後、命令ポインタの値を前の長さだけ増加させ、再び開始します。

基本的なCPU命令サイクルは次のようになります。,

Image

図3:基本的なCPU命令サイクル。

the need for speed

基本的なCPUはうまく動作しますが、この単純なサイクルで実行されるCpuはさらに効率的に使用できます。 CPUパフォーマンスを向上させるための複数の戦略があります。

命令サイクルの過給

初期のCPU設計者が遭遇した一つの問題は、さまざまなCPUコンポーネントで時間を無駄にすることでした。, CPUの性能を向上させるための最初の戦略の一つは、CPU命令サイクルの部分を重ね合わせて、CPUのさまざまな部分をより完全に利用することでした。

たとえば、現在の命令がデコードされると、次の命令がフェッチされ、命令レジスタに配置されます。 それが発生するとすぐに、命令ポインタは次の命令のメモリアドレスで更新されます。 重複する命令サイクルの使用を図4に示します。,

Image

図4:重なり合ったCPU命令サイクル。

この設計はきれいで滑らかに見えますが、I/Oを待つなどの要因によってフローが乱れる可能性があります。 キャッシュに適切なデータまたは命令がない場合、MMUが正しいデータを見つけてCPUに移動する必要があり、時間がかかることがあります。 一部の指示もありCPUサイクルの完成により、干渉を円滑に重なる.

それにもかかわらず、これはCPUパフォーマンスを改善するための強力な戦略です。,

ハイパースレッディング

CPUパフォーマンスを向上させるもう一つの戦略はハイパースレッディングです。 ハイパースレッディングは、二つのデータと命令ストリームを提供することにより、二つのCpuのよう 図5に示すように、仮想CPUに第二の命令ポインタと命令レジスタを追加すると、二つのCpuのように機能し、各命令サイクル中に二つの別々の命令ストリーム また、データを待っている間に一つの実行ストリームが停止すると、命令もデータであり、第二の実行ストリームは処理を続行します。, ハイパースレッディングを実装する各コアは、命令を処理する能力において二つのCpuに相当する。

Image

図5:ハイパースレッディングを持つCPUの概念図。

これは非常に単純化された図であり、仮説的なCPUの説明であることを忘れないでください。 現実ははるかに複雑です。

その他の用語

私は多くの異なるCPU用語に遭遇しました。, 用語をもう少し明示的に定義するには、lscpuコマンドを使用してCPU自体を見てみましょう。

上記のIntelプロセッサは、マザーボード上の単一のソケットに差し込むパッケージです。 プロセッサパッケージには六つのコア 各コアはハイパースレッドが可能であるため、それぞれが合計12個のCpuに対して二つの同時スレッドを実行できます。

私の定義:

  • コア-コアは、処理のタスクを実行することができる最小の物理ハードウェアユニットです。 で一ALUとにより、セットの支援を登録する, 第二の登録及び支援回路をhyperthreading. 一つ以上のコアを単一の物理パッケージに結合することができます。
  • CPU-実行の単一のスレッドを処理することができる論理ハードウェアユニット。 中央処理ユニットという用語の現代の使用は、プロセッサパッケージが同時に実行できるスレッドの総数を指します。 ハイパースレッディングをサポートしないシングルコアプロセッサは、シングルCPUと同等です。 この場合、CPUとcoreは同義です。, A hyperthreadingプロセッサーとシングルコアの機能と同等のCpuを搭載しています。 ハイパースレッディングプロセッサは16個のCpuに相当する機能である。
  • パッケージ-上の図1に示すような、一つ以上のコアを含む物理コンポーネント。
  • Processor-1)データを操作するためのプログラム命令を処理するデバイス。 2)パッケージの同義語として頻繁に使用される。,
  • Socket-packageの別の同義語として使用されることがありますが、より正確には、プロセッサパッケージが挿入されるマザーボード上の物理ソケットを指します。

ソケット、プロセッサ、およびパッケージという用語は、多くの場合、同じ意味で使用され、混乱を引き起こす可能性があります。 上記のlscpuコマンドの結果からわかるように、インテルは独自の用語を提供しており、信頼できるソースと考えています。, 現実には、私たちはすべて様々な方法でこれらの用語を使用しますが、限り、我々は任意の時点でお互いを理解するように、それは本当に重要なものです。

上記のプロセッサには、命令(L1i)用とデータ(L1d)用のレベル1キャッシュがそれぞれ512KiBの二つあることに注意してください。 レベル1のキャッシュはCPUに最も近く、この時点で命令とデータを分離するように速度を上げます。 レベル2とレベル3のキャッシュは大きくなりますが、それぞれに命令とデータが共存します。

これはどういう意味ですか?

良い質問です。, メインフレームの初期には、各コンピュータは単一のCPUしか持っておらず、複数のプログラムを同時に実行することはできませんでした。 メインフレームでは、給与計算、在庫会計、顧客請求などを実行できますが、一度に実行できるアプリケーションは一つだけです。 各プログラムが仕上がり前のシステムオペレーターを開始することができるのです。

複数のプログラムを一度に実行するいくつかの初期の試みは、単純なアプローチを取り、単一のCPUのより良い利用を目的としていました。, たとえば、program1とprogram2がロードされ、program1はI/Oが発生するのを待ってブロックされるまで実行されました。 その時点で、program2はブロックされるまで実行されました。 このアプローチはマルチプロセッシングと呼ばれ、貴重なコンピュータ時間を十分

マルチタスクの初期の試みは、単一のCPUの実行コンテキストを複数のタスクの実行ストリーム間で非常に迅速に切り替えることを含んでいました。 実際には、実行の単一のスレッドのみが一度に処理されるため、この方法は真のマルチタスクではありません。 それはより正確には時間共有と呼ばれています。,

現代コンピュータから見るスマートウォッチタブレット、スーパーコンピュータのすべての支援真の複合加工を複数のCpuを搭載しています。 複数のCpuをコンピュータの走行にも多くの作業を同時に 各CPUは、他のすべてのCpuと同時に独自の機能を実行します。 八コア-プロセッサとhyperthreading(16Cpu)で16の課題を同時に

最終的な考え

構造について少し学ぶために、概念化され単純化されたCPUを見ました。 私はかろうじてこの記事では、プロセッサの機能の表面をスキムしました。, 学ぶことができ進化をつづけています。リンクが埋め込のための課題を明らかにする。

この記事の図と説明は純粋に概念的なものであり、実際のCPUを表すものではないことに注意してください。

このシリーズの次の部分では、私はストレージの異なるタイプとしてRAMとディスクドライブを見て、なぜそれぞれが現代のコンピュータに必要です。