命令パイプラインとは

プロセッサ命令には、その操作に複数の段階があります。これらの各ステージは、完了するまでに 1 つの CPU サイクルを要します。これらのステージは、命令フェッチ、命令デコード、実行、メモリ アクセス、およびライトバックです。これらはそれぞれ、完了する必要がある命令を取得し、操作を操作対象の値から分離し、プロセスを実行し、結果が書き込まれるレジスタを開き、開いたレジスタに結果を書き込みます。

ヒストリカル イン オーダー プロセッサ

初期のコンピューターでは、CPU は命令パイプラインを使用していませんでした。これらの CPU では、すべての命令に対して各シングル サイクル操作を実行する必要がありました。これは、平均的な命令が完全に処理されてから次の命令が開始されるまでに 5 クロック サイクルかかることを意味していました。一部の操作では、結果をレジスタに書き込む必要がない場合があります。つまり、メモリ アクセスとライトバックの段階をスキップできます。

命令パイプラインとは

パイプラインのないサブスカラー プロセッサでは、各命令の各部分が順番に実行されます。

ただし、次の命令に進む前に完全な命令を順番に実行すると、問題が潜んでいます。問題はキャッシュミスです。CPU は、アクティブに処理しているデータをレジスタに格納します。これは、1 サイクルのレイテンシでアクセスできます。問題は、レジスタがプロセッサ コアに組み込まれているため小さいことです。データがまだロードされていない場合、CPU はより大きく低速な L1 キャッシュに移動する必要があります。そこにない場合は、より大きくて低速な L2 キャッシュに再度移動する必要があります。次のステップは L3 キャッシュです。最後のオプションはシステム RAM です。これらの各オプションのチェック��は、ますます多くの CPU サイクルが必要になります。

現在、この余分に追加されたレイテンシは、次の命令を開始する前に各命令を順番に完全に完了する必要があるシステムでは大きな問題になる可能性があります。命令プロセッサごとに 5 サイクルだったものは、1 つの命令で数十または数百のクロック サイクルにわたって突然ハングアップする可能性があります。その間ずっと、コンピュータ上で他に何もできません。技術的には、これは 2 つの独立したコアを持つことで多少軽減できます。ただし、両者が同じことを、場合によっては同時に行うことを妨げるものは何もありません。そのため、マルチコア ルートを下っても、これは修正されません。

従来の RISC パイプライン

RISC は、Reduced Instruction Set Computer の略です。これは、各命令のデコードを容易にすることでパフォーマンスを最適化するプロセッサ設計のスタイルです。これは、より複雑な命令セットを設計して同じタスクを実行するために必要な命令を少なくする CISC または複合命令セット コンピューターと比較したものです。

従来の RISC 設計には、命令パイプラインが含まれています。任意のサイクルで 5 つの命令ステージのいずれかを実行する代わりに、パイプラインでは 5 つのステージすべてを実行できます。もちろん、1 つの命令の 5 つのステージすべてを 1 サイクルで実行することはできません。ただし、それぞれ 1 ステージのオフセットで 5 つの連続する命令をキューに入れることができます。このようにして、新しい命令を各クロック サイクルで完了することができます。コアの複雑さの増加が比較的少ないため、パフォーマンスが 5 倍向上する可能性があります。

命令パイプラインとは

スカラー パイプライン プロセッサでは、命令実行の各ステージをクロック サイクルごとに 1 回実行できます。これにより、サイクルごとに 1 つの命令が完了する最大スループットが可能になります。

パイプラインを持たないプロセッサは、サイクルごとに 1 つの完全な命令を実行できないため、サブスカラーにしかできません。この主要な 5 ステージ パイプラインを使用すると、すべてのプロセスの命令を完了することができるスカラー CPU を作成できます。さらに広範囲に及ぶパイプラインを作成することで、クロック サイクルごとに複数の命令を実行できるスーパースカラー CPU を作成できます。もちろん、潜在的な問題はまだあります。

まだシーケンシャル

これは、さまざまなレベルのキャッシュと RAM を照会する必要がある場合に、応答を何サイクルも待機するという問題を解決するものではありません。また、新たな問題が発生します。ある命令が前の命令の出力に依存している場合はどうなるでしょうか? これらの問題は、高度なディスパッチャーによって個別に解決されます。別の命令の出力に依存する命令が近づきすぎないように、実行順序を慎重に計画します。また、キャッシュ ミスを処理するために、命令を保留し、パイプライン内で実行準備ができていてその結果を必要としない他の命令に置き換え、準備ができたら命令を再開します。

これらのソリューションは、パイプライン化されていないプロセッサでも機能しますが、クロックごとに複数の命令を実行するスーパースカラー プロセッサに必要です。分岐予測子は、複数の潜在的な結果を持つ命令の結果を予測しようとし、別の方法で証明されない限り、それが正しいと仮定し続けることができるため、非常に便利です。

結論

パイプラインを使用すると、プロセッサの個別の機能をすべてサイクルごとに使用できます。これは、異なる命令の異なるステージを同時に実行することによって行われます。これにより、CPU 設計が複雑になることはありません。また、複数の命令がサイクルごとに 1 つのステージを実行できるようにします。



ハードドライブのクローンを作成する方法

ハードドライブのクローンを作成する方法

データが貴重な資産である現代のデジタル時代では、Windows 上でハード ドライブのクローンを作成することは、多くの人にとって重要なプロセスとなる可能性があります。この包括的なガイド

Windows 10でドライバーWUDFRdのロードに失敗した場合の修正方法

Windows 10でドライバーWUDFRdのロードに失敗した場合の修正方法

コンピュータの起動中に、ドライバ WUDFRd をコンピュータに読み込めなかったことを示すエラー メッセージが表示されましたか?

NVIDIA GeForce Experienceエラーコード0x0003を修正する方法

NVIDIA GeForce Experienceエラーコード0x0003を修正する方法

デスクトップで NVIDIA GeForce experience エラー コード 0x0003 が発生していますか? 「はい」の場合は、ブログを読んで、このエラーをすばやく簡単に修正する方法を見つけてください。

Chromebook の電源が入らないのはなぜですか

Chromebook の電源が入らないのはなぜですか

「Chromebook の電源がオンにならないのはなぜですか?」という質問に対する答えを見つけます。この役立つガイドは Chromebook ユーザー向けです。

Fitbit Versa 4 の文字盤を変更する方法

Fitbit Versa 4 の文字盤を変更する方法

Fitbit Versa 4 の文字盤を無料で変更して、時計の外観を毎日変えることができます。それがいかに早くて簡単かを見てください。

ルンバが止まったり、くっついたり、向きを変えたりする – 修正

ルンバが止まったり、くっついたり、向きを変えたりする – 修正

ルンバ ロボット掃除機が停止し、固着し、回転し続ける問題を修正します。

Steam Deckのグラフィック設定を変更する方法

Steam Deckのグラフィック設定を変更する方法

Steam デッキは、堅牢で多彩なゲーム体験をすぐに提供します。ただし、ゲームを最適化し、可能な限り最高のパフォーマンスを保証するには、

分離ベースのセキュリティとは何ですか?

分離ベースのセキュリティとは何ですか?

サイバーセキュリティの世界でますます重要になっているトピック、つまり分離ベースのセキュリティを詳しく掘り下げる予定でした。このアプローチは、

Chromebook でオート クリッカーを使用する方法

Chromebook でオート クリッカーを使用する方法

今日は、Chromebook で繰り返しクリックするタスクを自動化できるツール、オート クリッカーについて詳しく説明します。このツールは時間を節約し、

SMPSとは何ですか?

SMPSとは何ですか?

コンピューターに SMPS を選択する前に、SMPS とは何か、およびさまざまな効率評価の意味を理解してください。