AR# 36596

PCI Express のデザイン アシスタント - MAX_READ_REQUEST_SIZ と MAX_PAYLOAD_SIZE の違い

説明

MAX_READ_REQUEST_SIZ と MAX_PAYLOAD_SIZE の違いは何ですか。

注記 : このアンサーは、PCI Express のザイリンクス ソリューション センター (ザイリンクス アンサー 34536) の一部です。PCI Express のザイリンクス ソリューション センターには、PCIe に関する質問への回答が掲載されています。PCIe を使用したデザインを新しく作成する場合や、問題をトラブルシュートする場合には、この PCIe のソリューション センターから情報を入手してください。

ソリューション

最大ペイロード サイズ (MPS) と最大読み出し要求サイズ レジスタは、オフセット 08h にある PCIe 機能ストラクチャのデバイス制御レジスタにあります。

ハードウェアでこれらの設定を確認する方法は主に 2 つあります。

1 つは、PCITree や lspci などのツールを使用してデバイス制御レジスタの内容を読み出す方法です。これらのツールの種類については、(ザイリンクス アンサー 34806) を参照してください。 デバイス制御レジスタは、使用しているコアによりますが異なるロケーションにある場合があります。デバイス制御レジスタのロケーションを確認するには、リンクされている機能リストを確認するか、使用しているコアのユーザー ガイドを参照してください。該当するユーザー ガイドの入手方法は、(ザイリンクス アンサー 35920) を参照してください。この情報は「Core Overview」のセクションに記載されています。

もう 1 つの方法は、コアからユーザー アプリケーションまで cfg_dcommand[15:0] 出力を使用する方法です。

最大ペイロード サイズ

MPS レジスタは TLP のデータ ペイロードの最大サイズを制御します。PCI Express の仕様では最高 4096 バイトまでのペイロードが可能ですが、パケットのパスにある任意のシステム エレメントの Max_Payload_Size パラメーターを各パケットが超えないようにソフトウェアで管理する必要があると記述されています。つまり、階層にある各デバイスは同じ MPS 設定を使用する必要があり、この設定は階層内の任意のデバイスの機能を超えてはいけないということになります。このため、MPS の値が高いデバイスは、最小値の MPS が設定されているデバイスを含められるよう、低い MPS 設定で動作する必要があります。受信の場合、デバイスは設定値と同じペイロードの TLP を処理できなければなりません。送信の場合、デバイスは MPS 設定を超えるデータ ペイロードの TLP を作成してはいけません。

システムの MPS 設定はエミュレーションおよびコンフィギュレーション中に決定されます。階層にある各デバイスは、そのコンフィギュレーション スペースにあるデバイス機能レジスタに MPS 機能を送信します。ソフトウェアは MPS 機能を決定するため各デバイスをプローブし、MPS 設定を決定し、そしてデバイス制御レジスタにその設定を書き込んで各デバイスをプログラムします。

デバイス機能レジスタでリクエストされた MPS 値は CORE Generator のカスタマイズ プロセス中に設定されます。

最大読み出し要求サイズ

コンフィギュレーション中に、各デバイスの制御レジスタに最大読み出し要求サイズがソフトウェアによってプログラムされます。このパラメーターはメモリの読み出し要求の最大サイズを設定します。128 バイトずつ最高 4096 バイトまで設定できます。

最大読み出し要求サイズは MPS より大きな値になることがあります。たとえば、512 バイトの読み出し要求を 128 バイトの MPS のデバイスに出力することができます。読み出し要求に対しデータを返すデバイスは、データ TLP の完了のサイズを 128 バイト以下に制限します。この場合 1 回の読み出しに複数の完了が必要です。トポロジでのバンド幅の割り当てをバランスよくするため、システムはこの最大読み出し要求サイズを使用します。デバイスが 1 回の伝送で読み出しすることができるデータ最大量を制限すると、システム バンド幅の占有を防ぐことができます。パフォーマンスはデータ取得に必要な読み出し要求数を決定するので、最大読み出し要求サイズはパフォーマンスに影響を与えます。また、読み出し要求にはペイロードがまったく含まれていないので 100% オーバーロードです。最大読み出し要求サイズが 128 バイトの状態で 64KB のデータを読み出すには、メモリからデータを要求するのに 512 のメモリ読み出し TLP が必要です (64 KB / 128 バイト = 512)。大きなブロックのデータの送信を効率よく行うには、読み出し要求のサイズをできる限り最大読み出し要求サイズに近いものにし、送信する必要のある読み出しの数を抑えます。

改訂履歴
2010/08/13 - 初版

アンサー レコード リファレンス

関連アンサー レコード

Answer Number アンサータイトル 問題の発生したバージョン 修正バージョン
34806 PCI Express のデザイン アシスタント - システムにある PCI Express デバイスの診断ツール N/A N/A
34538 Xilinx Solution Center for PCI Express - Design Assistant N/A N/A
AR# 36596
日付 12/15/2012
ステータス アクティブ
種類 一般
デバイス 詳細 概略
IP