CPU

中央処理装置(CPU)は、すべてのコンピュータの重要な部分です。CPUはコンピュータの他の部分を制御するために信号を送ります。

CPUは、命令と呼ばれるコンピュータのやるべきことのリストに基づいて動作する電子機械です。命令のリストを読み込んで、順番に一つ一つ実行(実行)していきます。CPUが実行できる命令のリストがコンピュータプログラムです。

クロックレート、またはCPUの内部部品の速度は、ヘルツ(Hz)で測定されます。最近のプロセッサは、ギガヘルツ(GHz)が代わりに使われるほど高速に動作することが多い。1GHzは1秒間に1,000,000,000回のサイクルである。

デスクトップ(家庭用)パソコンに使われているCPUのほとんどは、インテルかアドバンスト・マイクロ・デバイセズ(通常はAMDと略す)製のマイクロプロセッサです。CPUを製造している他の会社には、ARM、IBM、AMDの3社があり、現在はATI Technologiesがリーダーとなっています。彼らのCPUのほとんどは、携帯電話、自動車、ゲーム機、軍用など、より特殊なもののための組み込みシステムに使用されています。

コンピュータ内部のペンティアムCPUZoom
コンピュータ内部のペンティアムCPU

CPUの種類

20世紀には、エンジニアがさまざまなコンピュータアーキテクチャを発明しました。現在、ほとんどのデスクトップコンピュータは32ビットCPUか64ビットCPUを使用しています。32ビットCPUの命令は、32ビットサイズのデータを扱うのが得意です(32ビットCPUでは、ほとんどの命令が32ビットで「考える」ようになっています)。同様に、64ビットCPUは64ビットのサイズのデータを扱うのが得意です(32ビットのデータを扱うのも得意な場合が多いです)。CPUが最も得意とするデータの大きさは、CPUのワードサイズと呼ばれることが多い。70年代、80年代、90年代前半の古いCPUの多く(そして現代の多くの組み込みシステム)は、8ビットまたは16ビットのワードサイズを持っています。20世紀半ばにCPUが発明されたとき、それらは多くの異なるワードサイズを持っていました。中には、命令とデータのワードサイズが異なるものもありました。あまり一般的ではないワードサイズは、後に使用されなくなりました。

ほとんどのCPUはマイクロプロセッサです。つまり、CPUはシングルチップにすぎません。マイクロプロセッサを内蔵したチップの中には、他のコンポーネントも含まれており、完全なシングルチップの「コンピュータ」となっているものもあります。これをマイクロコントローラと呼びます。

レジスター

CPUがコンピュータプログラムを実行する際には、命令が操作するデータ(読み書きするデータ)をどこかに格納する必要があります。この格納場所のことをレジスタと呼びます。CPUは通常、多くのレジスタを持っています。レジスタは、アクセス(読み書き)が非常に速くなければなりません。そのため、それらはCPUチップ自体の一部となっています。

メモリ

すべてのデータをレジスタに格納することは、ほとんどのCPUを複雑にしすぎます(そして非常に高価です)。そのため、レジスタは通常、CPUが「今」作業しているデータのみを保存します。プログラムが使用する残りのデータは、RAM(メモリ)に格納されます。マイクロコントローラを除いて、RAMは通常、CPUの外にある別のチップに格納されています。

CPUは、RAM内のデータを読み書きしたいときに、そのデータに対するアドレスを出力します。RAM内の各バイトにはメモリアドレスがあります。アドレスの大きさは、ワードサイズと同じであることが多いです。32ビットのCPUでは32ビットのアドレスを使用します。しかし、8ビットCPUのような小さなCPUでは、ワードサイズよりも大きなアドレスを使用することがよくあります。そうしないと、プログラムの最大長が短くなりすぎてしまいます。

アドレスのサイズが制限されているため、メモリの最大量も制限されています。32 ビットプロセッサは通常、4 GB の RAM までしか処理できません。これは、32 ビット アドレスを使用して選択できるさまざまなバイト数です (各ビットには 0 と 1 の 2 つの値があり、232 バイトは 4 GB です)。64 ビットのプロセッサでは、最大 16 EB の RAM (16 エクサバイト、約 160 億 GB、または 160 億バイト) を扱うことができるかもしれません。オペレーティングシステムは、より少ない量を使用するためにそれを制限するかもしれません。

RAMに格納されている情報は、通常、揮発性です。つまり、コンピュータの電源が切れてしまうと消えてしまうということです。

キャッシュ

最近のコンピュータでは、RAMはレジスタよりもはるかに遅いため、RAMにアクセスするとプログラムが遅くなります。メモリアクセスを高速化するために、RAMとCPUの主要部分の間にキャッシュと呼ばれる高速なタイプのメモリを入れることがよくあります。キャッシュは通常、CPUチップ自体の一部であり、RAMよりも1バイトあたりのコストが高い。キャッシュはRAMと同じデータを格納していますが、通常ははるかに小さいです。そのため、プログラムが使用するすべてのデータがキャッシュに収まらない場合があります。キャッシュは、使用頻度の高いデータを保存しようとします。例としては、最近使用したデータや、最近使用したデータにメモリ内で近いデータなどが挙げられます。

RAMのキャッシュを持つことに意味があるように、「キャッシュのためのキャッシュ」を持つことに意味があることがよくあります。多値キャッシュでは、L1キャッシュ、L2キャッシュなどと呼ばれる多くのキャッシュが存在します。L1キャッシュは、最も高速(バイトあたりのコストが最も高い)なキャッシュで、CPUに「最も近い」キャッシュです。L2キャッシュは一歩離れたところにあり、L1キャッシュなどよりも遅い。L1キャッシュは、L2キャッシュなどのキャッシュとして見られることが多いです。

バス

コンピュータバスとは、CPUがRAMやコンピュータ内の他のコンポーネントと通信するために使用する配線のことです。ほとんどのCPUには、少なくともデータバス(データの読み書きに使用)とアドレスバス(アドレスの出力に使用)があります。CPU内部の他のバスは、CPUのさまざまな部分にデータを運んでいます。

命令セット

命令セット(ISA - Instruction Set Architectureとも呼ばれる)は、特定のCPUによって直接理解される言語です。これらの言語は、マシンコードやバイナリとも呼ばれます。これらの言語は、メモリからレジスタにデータをロードしたり、2 つのレジスタの値を加算したりするなど、CPU にさまざまなことをさせる方法を説明しています。命令セットの各命令にはエンコーディングがあり、これは命令がどのようにビットの列として書かれているかを示しています。

CやC++などのプログラミング言語で書かれたプログラムは、CPUが直接実行することはできません。CPUが実行する前にマシンコードに翻訳しなければなりません。コンパイラはこの翻訳を行うコンピュータプログラムです。

マシンコードは0と1が並んでいるだけなので、人間が読むのは難しい。より読みやすくするために、マシンコードプログラムは通常、アセンブリ言語で書かれています。アセンブリ言語では、0と1の代わりにテキストを使用します。例えば、値 0 をレジスタ A にロードするために "LD A,0" と書くかもしれません。アセンブリ言語をマシンコードに変換するプログラムをアセンブラと呼びます。

機能性

CPUができる基本的なことをご紹介します。

  • メモリからデータを読み込み、メモリにデータを書き込む。
  • 1つの数字を別の数字に足していきます。
  • ある数字が他の数字よりも大きいかどうかをテストします。
  • ある場所から別の場所へ番号を移動します(例えば、あるレジスタから別のレジスタへ、またはレジスタとメモリの間など)。
  • 命令リストの別の場所にジャンプしますが、何らかのテストが真である場合に限ります(例えば、ある数値が他の数値よりも大きい場合に限ります)。

非常に複雑なプログラムであっても、このような簡単な命令をたくさん組み合わせて作ることができます。これが可能なのは、一つ一つの命令が非常に短い時間で起こるからです。今日の多くのCPUは、1秒間に10億(1,000,000,000)以上の命令を実行することができます。一般的に、CPUが所定の時間内にできることが多いほど、高速であることがわかります。プロセッサの速度を測る一つの方法として、MIPS (Million Instructions Per Second)があります。フロップス(1 秒あたりの浮動小数点演算)や CPU のクロック速度(通常はギガヘルツで測定)も、プロセッサがある時間内にどれだけの作業を行うことができるかを測定する方法の一つです。

CPUはロジックゲートで構成されており、可動部分はありません。コンピュータのCPUは、ビデオカードやBIOSのようなコンピュータの他の部分と電子的に接続されています。コンピュータプログラムは、コンピュータのメモリ内の特別な場所に数字を読み書きすることで、これらの周辺機器を制御することができます。

命令パイプライン

CPUが実行する各命令は、通常、多くのステップで実行されます。例えば、単純なCPUで「INC A」(レジスタAに格納されている値を1つ増やす)という命令を実行するためのステップは次のようになります。

  • メモリから命令を読み出す。
  • 命令をデコードして(命令が何をするのかを把握して)
  • Aを登録するために1つ追加します。

CPUの異なる部分は、これらの異なることを行っています。多くの場合、異なる命令からのいくつかのステップを同時に実行することが可能で、CPUを高速化することができます。例えば、メモリからある命令を読み出すと同時に、別の命令をデコードすることができます。これは、多くの命令を一度に「パイプラインの中に」持っていると考えることができます。最良のケースでは、すべてのモジュールが一度に異なる命令を処理していますが、これは必ずしも可能ではありません。

メモリ管理ユニット(MMU)と仮想メモリ

最近のCPUは、多くの場合、メモリ管理ユニット(MMU)を使用しています。MMUは、CPUからのアドレスを(通常は)異なるRAMアドレスに変換するコンポーネントです。MMUを使用する場合、プログラムで使用されるアドレスは、データが格納されている「実際の」アドレスではありません。これを仮想(「本物」の反対)メモリと呼びます。MMUを持つことが良い理由のいくつかを以下に挙げます。

  • MMUは、プログラムから他のプログラムのメモリを「隠す」ことができます。これは、プログラムが実行されている間、いかなるアドレスも「隠された」アドレスに変換しないことによって行われます。これは、プログラムが他のプログラムのメモリを読み取ったり変更したりできないことを意味するので、セキュリティと安定性が向上します。(プログラムはお互いを「スパイ」したり、「お互いのつま先を踏んだり」することはできません)。
  • 多くのMMUは、メモリの一部を書き込み不可、読み込み不可、または実行不可にすることができます(メモリのその部分に格納されているコードを実行できないことを意味します)。これは、安定性やセキュリティ上の理由の他に、他の理由でも良いことがあります。
  • MMUは、異なるプログラムが異なるメモリの「ビュー」を持つことを可能にします。これは様々な状況で便利です。例えば、プログラムの「メイン」コードを他のプログラムと衝突することなく、常に同じ(仮想的な)アドレスに置くことが可能になります。また、プログラム間で共有されている(ライブラリからの)コードの多くの異なる部分がある場合にも便利です。
  • MMUは、プログラムを実行するたびにライブラリのコードを異なるアドレスで表示することを可能にします。これは、メモリ内のどこに何があるかを知らないと、ハッカーがプログラムを悪さをするのが難しくなることが多いので、良いことです。これはアドレス空間のランダム化と呼ばれています。
  • 高度なプログラムやオペレーティングシステムでは、MMUを使ったトリックを使用して、メモリ内の異なる場所間でデータをコピーする必要がないようにすることができます。

複数のコア

マルチコアプロセッサは、21世紀初頭に一般的になりました。これは、同じチップに多くのプロセッサを搭載して、一度に多くの命令を実行できるようにしたことを意味します。一部のプロセッサは、AMD Epyc 7601 のように最大 32 個のコアを持つことがあります。

メーカー

コンピュータのCPUを作っているのは以下の会社です。

  • アーム
  • インテル
  • 先端マイクロデバイス
  • エムシーエスティー
  • しゅりょくしゅみんきょうかい
  • サンマイクロシステムズ

その他の情報

質問と回答

Q: CPUとは何ですか?


A: CPU(Central Processing Unit)は、全てのコンピュータの重要な部分です。脳が身体をコントロールするのと同じように、コンピュータの他の部分を制御するための信号を送ります。CPUは、特定のタスクを実行するための命令リストに基づいて動作する電子機械です。

Q:CPUはどのように動作するのですか?


A:CPUは命令のリストを読み、一つ一つを順番に実行(実行)していきます。CPUが実行できる命令のリストがコンピュータプログラムです。

Q:CPUのクロックレートや速度は何で測られるのですか?


A:CPUの内部部品のクロックレートや速度はヘルツ(Hz)で測定されます。最近のプロセッサは非常に高速に動作するため、代わりにギガヘルツ(GHz)が使用されることが多く、1GHzは1秒間に1,000,000,000回のサイクルを表します。

Q:CPUを製造している会社にはどのようなものがありますか?


A:インテル、アドバンスト・マイクロ・デバイス(AMD)、ARM(最近Nvidiaが買収)、IBM、そして現在市場をリードしているATIテクノロジーズのAMDがCPUを製造しています。

Q:CPUはどこで使われることが多いのですか?


A:デスクトップPCに使われているCPUは、ほとんどがインテルかAMDのマイクロプロセッサで、その他は携帯電話や自動車、ゲーム機、軍事用途など、より特殊なものの組み込みシステムで使われています。

AlegsaOnline.com - 2020 / 2023 - License CC3