[MPC5777C] e200z759n3コアの命令パイプラインを理解するこんにちは!
e200z759n3 コアの命令実行パスを調べているときに、次の疑問が浮かびました。
- e200z7 コアリファレンスマニュアルでは、パイプライン実行ユニットの内容についてあまり一貫性がないようです。図 17 では、整数実行ユニットと乗算ユニットが分離されています。ただし、「4.2.1 整数実行ユニット」セクションでは整数の乗算と除算について説明します。セクション「4.6 同時命令実行」では、「デュアル スカラー整数ユニット」の存在について言及されていますが、乗算ユニットについては言及されていません。コアには、任意の整数演算 (合計、乗算、除算など) を実行CAN 2 つの整数実行ユニットがあると思います。私の結論は正しいでしょうか?デュアル発行パイプラインで 2 つの乗算を同時に実行CANか?
- リファレンスマニュアルに基づいてパイプラインの実行フローを説明し、理解を深めるために、次の図を描きました。何か概念を誤解していましたか?
MatheusFranklin_0-1763551946961.jpeg
よろしくお願いいたします。
マテウス
Re: [MPC5777C] Understanding the instruction pipeline of the e200z759n3 core1) 確かにそうです、この写真はe200z4に関連しており、これも二重発行です
davidtosenovjan_0-1763646194213.png
2) パイプラインの内容自体に依存します。前の回答の写真でCAN確認できます。最初の命令は短いため、次の命令の実行が停止することはありません。2 番目の命令は長いため、3 番目の命令は 2 番目の命令の結果に依存するため、停止が発生します。
3) それは待たなければなりません。
4) 基本的にはそうです。ここでは、コンパイラの最適化レベルによっても影響を受けるCANがあり、コンパイラはデュアルイシューアーキテクチャをより有効に活用するために命令の順序を変更する可能性があります(つまり、最高レベルの最適化を実現するには、命令スケジューリングを使用します。
Re: [MPC5777C] Understanding the instruction pipeline of the e200z759n3 core返信ありがとうございます、デビッド!
さらにいくつか質問があります:
- パイプラインにはデュアル発行機能があり、実行ユニットには 2 つの整数ユニットがあるため、同じクロック サイクルで 2 つの独立した整数乗算命令または整数除算命令のフェッチ ステージを開始できますか?
- マニュアルには、加算のような単純な命令を実行する場合、実行ステージが 1 クロック サイクルで終了すると記載されています。WB ステージは E0 ステージの直後のクロック サイクルに入りますか、それともパイプラインの 10 ステージすべてを使用して IF0 から WB サイクル全体を完了するためにアイドル パディングを追加する必要があったのと同じように、さらに 3 つのアイドル クロック サイクルを待つ必要がありますか?
- 2 つの命令間にデータ依存関係がある場合、宛先命令はソース命令の最後の実行ステージと同じクロック サイクルで実行ステージを開始しますか、それとも次のクロック サイクルまで待つ必要がありますか?フィードフォワードがどのように機能するかがよく分かりませんでした。
- 命令間のデータ依存性をチェックするのはデコード フェーズなので、すべてのパイプライン ストールは D1 パイプライン ステージと E0 パイプライン ステージの間で発生すると結論付けるのは正しいでしょうか。
よろしくお願いいたします。
マテウス
Re: [MPC5777C] Understanding the instruction pipeline of the e200z759n3 core1) 実行ユニットとは別に独立したものではなく、単にその一部であると思います。
davidtosenovjan_0-1763571010080.png
2) それがまさにあなたが描いた通りであるとはCAN断言できませんが、原則的にはそれは確かに正しく、パイプラインのステージに適合します。
davidtosenovjan_0-1763571569173.png
e200 マニュアルを読みやすくするために、次のプレゼンテーションをお勧めします。
https://community.nxp.com/t5/MPC5xxx-Knowledge-Base/e200-Core-Training-relevant-to-MPC55xx-and-MPC56...