CPU の内部:トランジスタが命令セット アーキテクチャを構築する方法
CPU (中央処理装置) はコンピューターの頭脳であり、ソフトウェアとハードウェア間の主な接続部分です。これにより、ハードウェア上でソフトウェアを動作させることが可能になります。
しかし、詳細にはどのように機能するのでしょうか?また、どのようにしてプログラムを特定のコンピュータ ハードウェアに接続できるのでしょうか?
この記事では、CPU がどのように動作するかを詳しく説明することで、この関係を理解していただくことを目的としています。このトピックは、多くの場合、大学でコンピュータ ハードウェア設計のバックグラウンドを持った人にしか馴染みがありません。
コンピューター サイエンスの卒業生の多くは、高度なデジタル ロジックの授業を一度も受けたことがないことがよくあります。そのため、経験豊富なプログラマであっても、CPU が実際にどのように情報を処理するかを理解していない可能性があります。
トランジスタから論理ゲートを設計したり、論理ゲートから CPU コンポーネントを設計したりするわけではありませんが、プログラミング言語で書かれたプログラムによって作成されたデータを CPU がどのように処理するかを理解するために必要な主要な概念について説明します。
次のことがわかります:
- アナロジー:CPU の動作原理の概要
- メモリ ハブ:RAM と ROM について
- データの道:CPU データ パスをナビゲートする
- トラフィック コントローラー:CPU におけるステート マシンの役割
- 毎日のルーティン:フェッチと実行のサイクルについて説明
- ルールブック:命令セット アーキテクチャ (ISA) の解読
- プログラミング言語からマシンコードまで
- 都市の課題:CPU の問題に対処する
- 結論:制御ユニットとデータ部分の改善
Intel 8008をリファレンスとして使用します。
アナロジー:CPU の動作原理の概要
コンピューターがどのように機能するかを深く理解するために、現実のシナリオとして都市を想像してみましょう。コンピューターの要素をこの都市の一部と比較してみます。
こうすることで、さまざまな CPU パーツとそれらが重要な理由をより明確に把握できます。その後、各コンポーネントを詳しく見ていきます。
メモリ ハブ:RAM と ROM について
RAM (ランダム アクセス メモリ) は市の公共図書館のようなものです。人々が必要に応じて借りたり返したりできるように、書籍や情報が保管されています。
コンピュータでは、RAM は、CPU がデータを処理するために必要なデータと命令をコンピュータ メモリからロードします。
ROM (読み取り専用メモリ) は都市の歴史アーカイブのようなものです。決して変更されず、一般から借用されることのない記録のみが保存されます。
データの道:CPU データ パスのナビゲート
CPU データ パスは都市内の道路ネットワークです。 CPU データ パスのバスとレジスタは、都市の道路網のように機能します。
道路が車や人の移動を助けるのと同じように、CPU データ パスは、CPU 内でのデータの効率的な移動を保証します。
トラフィック コントローラー:CPU におけるステート マシンの役割
ステート マシンは交通制御システムとして機能します。
交通制御システムは車両の流れを管理し、ステート マシンは CPU に与えられた命令に従ってデータの流れを管理します。
毎日のルーティン:フェッチと実行のサイクルについて説明
取得と実行のサイクルは、都市住民にとって毎日の通勤時間です。
毎日、人々は行き先を決め、そこに旅行し、任務を遂行して家に帰ります。このプロセスは常に繰り返されます。
同様に、CPU は命令をフェッチし、デコードして、繰り返しサイクルで実行します。
ルールブック:命令セット アーキテクチャ (ISA) の解読
命令セット アーキテクチャは都市交通法のようなものです。
都市交通法は、人の輸送に関して都市で合法的に行うことができることを示しています。
命令セット アーキテクチャは、CPU が実行できるルールと命令のセットです。
メモリ ハブ:RAM と ROM について
バレンタイン タナソビッチ氏による写真:https://www.pexels.com/photo/black-and-gray-computer-motherboard-2588757/
RAM は Random Access Memory の略で、データの読み取りと書き込みに使用できます。
長い待ち時間を避けるために、CPU は最初にコンピューターのメモリから RAM にデータを取得します。
次に、RAM のデータを使用して命令を完了します。
メモリは揮発性であるため、コンピュータや多くの電子機器で使用されています。つまり、データはコンピュータの電源が入っている間のみ存在するため、デバイスの動作中の一時的な保存に最適です。
ROM は読み取り専用メモリの略です。そこには、コンピュータの製造時に追加されたデータのみが存在します。
これらは、デバイス、BIOS、小規模組み込みシステムのファームウェアで広く使用されています。
これは、ROM が不揮発性メモリであるためです。これは、デバイスの電源がオフになってもデータがメモリ内に残ることを意味し、永続的なデータ ストレージとして非常に重要になります。
データの道:CPU データ パスのナビゲート
写真:Rogeer Marques:https://www.pexels.com/photo/close-up-shot-of-a-chip-processor-11272008/
CPU データ パスは、次のような相互に連携する多くのコンポーネントを含む複雑なデジタル回路です。
- 算術論理演算装置 (ALU): CPU データ部分内で算術演算および論理演算を実行します。
- 登録: RAM から取得した一時データのための、小さくて高速な保存場所。
- バス: データ、コントロール、アドレス バスは、情報を転送するために CPU データ パス内で使用されるワイヤです。
CPU は Intel 8008 以来大きく変わりましたが、これらは依然としてすべての CPU の基盤として機能するコンポーネントの一部です。
これらのおかげで、データをフローさせることはできますが、実際のフローを制御することはできません。これは、Intel 8008 でステート マシンとして作成された、CPU 内の制御ユニットの仕事です。
トラフィック コントローラー:CPU におけるステート マシンの役割
ステート マシンは、タスクを実行するために異なる状態間を遷移するシステムです。
それらは多数の状態と遷移で構成されます。これらは、その構造と命令の処理に必要な一連の操作を管理する効果的な方法により、Intel 8008 で制御ユニットを作成するために使用されました。
各状態は、1 つまたは複数の CPU コンポーネントをアクティブにして、特定のアセンブリ命令を処理できます。
このようにして、特定の CPU データ パス部分が、命令を完了するためにアクティブ化されます。
さらに、これらのステート マシンのおかげで、CPU は完成し、フェッチ実行サイクルと呼ばれる連続ループでユーザーが必要とするすべての命令を実行できます。
毎日のルーチン:フェッチと実行のサイクルについて説明
CPU のステート マシンは、CPU データ パスが連携して特定の命令を実行する方法を制御します。
今日では、すべてのコンピューターが 1 秒あたり数百万の命令を受け取ります。このように、ステート マシンは命令を取得して実行するループとして機能します。
このプロセスはフェッチ実行サイクルとして知られており、CPU は命令を取得して実行します。
- フェッチ: CPU はメモリから命令をフェッチします。
- デコード: フェッチされた命令はデコードされて、必要なアクションが決定されます。
- 実行: デコードされた命令は、適切な CPU コンポーネントを使用して実行されます。
- 書き戻し: 実行結果はメモリまたはレジスタに書き戻されます。
フェッチ ステージでは、コントロール ユニットが RAM に次の命令を CPU に与えるように指示します。
デコード ステージでは CPU が命令を解釈し、実行ステージでは演算を実行します。その後、ライトバック ステージで結果が正しく保存されることが保証されます。
このサイクルは、PC の電源が入っている間続きます。このようにして、最新のプロセッサでは 1 秒あたり数十億の命令を処理します。
しかし、キーボードやマウスからのデータはどうなるのでしょうか?
このデータは RAM から取得されるのではなく、割り込みと呼ばれるメカニズムを通じて処理されます。 CPU は命令を実行しながら、ペリフェラルからデータが送信されたことを検出できます。
これが発生した場合、CPU は現在のタスクを停止し、ペリフェラルからの命令を優先します。その後、CPU は以前のタスクを再開します。
割り込みを管理するにはさまざまな方法がありますが、最も一般的なものは次のとおりです。
<オル>このように、これらのメカニズムにより、CPU は周辺機器と対話しながらパフォーマンスを維持します。
ルールブック:命令セット アーキテクチャ (ISA) の解読
コントロール ユニット、完全な CPU、RAM を使用すると、多くの命令を実行できます。
しかし、特定の CPU ではどのような命令を実行できるのでしょうか?そして何人ですか?これは、命令セット アーキテクチャ (ISA) が解決するものです。
ISA は、特定の CPU が実行できる一連の命令を定義します。これにより、プログラマはプロセッサ内のすべてのデジタル ロジック ハードウェアを理解することなく、プロセッサで何ができるか、何ができないかを理解できるようになります。
このようにして、ソフトウェアとハードウェアの間のインターフェイスとして機能します。
ISA の重要な側面:
- 命令の種類: 算術、論理、制御、データ転送命令が含まれます。
- アドレス指定モード: 命令のオペランドを指定するメソッド。
- 登録: 命令で使用できるレジスタのセット。
一般的な ISA:
- x86: デスクトップおよびサーバーのプロセッサで広く使用されています。
- ARM: 電力効率が高いため、モバイル デバイスや組み込みデバイスで主流
- RISC-V: 幅広いアプリケーション向けに設計されたオープン スタンダード ISA。
各 CPU には、多くの場合、独自のバージョンの命令セット アーキテクチャがあります。また、命令セット アーキテクチャは、アセンブリ プログラミング言語で定義されることが非常に多いです。
アセンブリ プログラミング言語には非常に多くのバージョンがあるのはこのためです。
各 CPU には独自のハードウェア仕様があるため、各 CPU には他の CPU と同様のコンポーネントがあり、したがって同様のアセンブリ プログラミング言語が関連付けられます。
ISA の選択は、CPU の設計、パフォーマンス、ソフトウェアとの互換性に影響します。
たとえば、x86 の複雑さにより強力なデスクトップ アプリケーションが可能になりますが、ARM のシンプルさはエネルギー効率の高いモバイル デバイスに有利です。
プログラミング言語からマシンコードまで
写真提供者:luis gomes:https://www.pexels.com/photo/close-up-photo-of-programming-of-codes-546819/
各プロセッサには独自のアセンブリ言語がありますが、アセンブリ内のコードを管理したり、アセンブリにコードを記述して大きなプログラムを作成することは複雑になる場合があります。
これは非常に複雑であり、より迅速かつ簡単な方法でプログラムの開発を管理し、実際に開発する代わりに、物事や詳細の修正に時間を浪費する可能性があります。
この問題を解決するために、多くのプログラミング言語がアセンブリから作成されました。コードはプログラミング言語で記述され、その後アセンブリに変換されます。
こうすることで、細部に時間を費やす代わりに、システム開発やアルゴリズム設計など、より重要なことに集中できるようになります。
これは、ほとんどのプログラミング言語がコードをアセンブリに変換するプロセスです。
<オル>これを行うプログラミング言語の例を 2 つ見てみましょう!
C プログラミング言語
C プログラミング言語は、1970 年代初頭にアセンブリから作成されました。これは、ハードウェア操作も可能な、効率的なシステム レベルのプログラミングのための高レベル言語を提供するために作成されました。
コンパイラを使用すると、C コードはアセンブリに変換され、完全な CPU によって処理されます。
この変換のおかげで、C プログラミング言語でプログラムを作成することで、次のような多くの問題により効率的に対処できるようになります。
- メモリ管理エラー
- バッファオーバーフロー
- 手動による最適化の問題
現在では、単純なタスクであっても、C コンパイラーから変換されたアセンブリ コードは、人間がアセンブリ コードを記述するよりもはるかに効率的で信頼性が高くなります。
C コンパイラについて詳しく知りたい場合は、以下をチェックしてください。
Python プログラミング言語
Python プログラミング言語は、1980 年代後半に C から作成されました。
その目標は、読みやすさとシンプルさを重視した、ユーザーフレンドリーで高レベルのプログラミング言語を提供し、迅速なアプリケーション開発を可能にすることでした。
Python では、インタープリターが Python コードを 1 行ずつバイトコードに変換します。
そして、このバイトコードは CPU でマシンコードに変換され、フェッチと実行のサイクルで処理されます。
こうすることで、より簡単な方法でプログラムを作成し、次のようなより大きなプログラムに集中できるようになります。
- 人工知能モデル
- ウェブアプリ
- データ分析
- 科学コンピューティング
ただし、すべてのプログラミング言語の CPU の課題は、データを順番に処理することです。
都市の課題:CPU の問題への対処
写真:Peng LIU:https://www.pexels.com/photo/timelapse-photography-of-vehicle-on-concrete-road-near-in-high-rise-building-during-nighttime-169677/
従来の 1 コア CPU は、命令ごとにデータを順次処理します。処理する命令が多数ある場合、これは制限となります。
これを解決するために GPU (グラフィックス プロセッシング ユニット) が登場しました。 GPU のおかげで、命令を並列処理できるため、コンピューティング時間を大幅に短縮できます。
これらの並列処理機能により、幅広いアプリケーションでより高速な計算と効率の向上を実現できます。
結論:より優れた制御ユニットとデータ部分
写真:Miguel Á.パドリニャン:https://www.pexels.com/photo/green-circuit-board-343457/
最新の CPU はマルチコアであることに加え、制御ユニットとデータ パスの進歩がプロセッサのパフォーマンス向上に重要な役割を果たしています。
制御ユニットは多くの場合、マイクロプログラミングまたは配線接続された制御ユニットを使用して設計されます。
マイクロプログラミングにより、制御ロジックの柔軟性が向上し、更新が容易になります。一方、配線された制御ユニットは、制御信号を直接実装することでより高速なパフォーマンスを実現します。
もう 1 つの重要な進歩は、論理ゲートのトランジスタ用の新しい材料の探索です。
研究者らはシリコンだけに依存するのではなく、より高速で効率的なプロセッサを作成するための代替材料を研究しています。
テクノロジーが進歩し続けるにつれて、これらの基本概念を理解することは、愛好家とその分野の専門家の両方にとって引き続き不可欠です。
これらの開発を継続することで、CPU の設計と機能の継続的な革新と改善が保証されます。
無料でコーディングを学びましょう。 freeCodeCamp のオープンソース カリキュラムは、40,000 人以上の人々が開発者としての職に就くのに役立ちました。始めましょう
-
Macを高速化する方法
コンピューターの所有権について、コンピューターの速度が低下し始めたときよりもイライラすることはほとんどありません。 Macは常に高速で動作すると信じたいのですが、すべてのMacは年齢とともに遅くなります。ありがたいことに、Macの速度が遅いからといって、Macを使い果たして新しいMacを購入する必要があるわけではありません。 Macを高速化する方法は複数ありますが、以下で説明します。 Macの動作が遅いのはなぜですか? Macの速度が遅い原因はいくつかあります。メモリの問題や開いたままのアプリが多すぎると、速度が低下する可能性があります。コンピュータのストレージが不足している可能性もあ
-
Microsoft 365 Advanced Threat Protection:マルウェアからメールを保護する
投稿者 Stephen J. Bigelow、シニア テクノロジー エディター 発行日:2017 年 9 月 21 日 Microsoft Office 365 Advanced Threat Protection (ATP) は、添付ファイル内のマルウェアや悪意のある Web サイトへのハイパーリンクから購読者を保護するために、電子メールをスキャンおよびフィルタリングする Microsoft のオプションのクラウドベース サービスです。 Microsoft は、ATP を使用して、悪意のある添付ファイルや URL を介して届くゼロデイ脅威の影響を軽減しようとしています。 ATP