(57)【要約】周辺コンポーネントインターコネクト（ＰＣＩ）装置は、コンポーネントインターコネクトバスに接続されたバスインターフェース、複数のコンフィギュレーション空間レジスタセットおよび仮想多重ファンクションロジックを含む。コンフィギュレーション空間レジスタの各セットは、ファンクションに対応する。仮想多重ファンクションロジックは、バスインターフェースおよびコンフィギュレーション空間レジスタセットに接続している。仮想多重ファンクションロジックにより、複数のファンクションの複数のコンフィギュレーション空間レジスタセットにアクセスすることができる。また、仮想多重ファンクションロジックは、複数のファンクションにバスインターフェースおよび他の内部ロジックを共有させる。
2006522414.tif 000002
【特許請求の範囲】
【請求項１】
コンポーネントインターコネクトバスに接続されたバスインターフェースと、
各コンフィギュレーション空間レジスタセットが装置のファンクションに対応している、複数のコンフィギュレーション空間レジスタセットと、
バスインターフェースおよびコンフィギュレーション空間レジスタセットに接続され、装置の複数のファンクションを支配するようになっている多重ファンクションロジックと、
を含むことを特徴とする装置。
【請求項２】
バスインターフェースは、周辺コンポーネントインターコネクトバスに接続された周辺コンポーネントインターコネクトバスインターフェースであることを特徴とする、請求項１記載の装置。
【請求項３】
多重ファンクションロジックは、複数の周辺コンポーネントインターコネクトファンクションを処理するようになっていることを特徴とする、請求項１記載の装置。
【請求項４】
バスインターフェースは、周辺コンポーネントインターコネクト拡張バスに接続された周辺コンポーネントインターコネクト拡張（ＰＣＩ−Ｘ）バスインターフェースであることを特徴とする、請求項１記載の装置。
【請求項５】
装置は、特定用途向け集積回路であることを特徴とする、請求項１記載の装置。
【請求項６】
コンフィギュレーション空間レジスタの各セットは、コマンドレジスタを含み、多重ファンクションロジックは、複数のファンクションに関連する複数のコマンドレジスタからのビットを使用して装置を制御することを特徴とする、請求項１記載の装置。
【請求項７】
コンフィギュレーション空間レジスタの各セットは、ステータスレジスタを含み、多重ファンクションロジックは、複数のファンクションに関連する複数のステータスレジスタからのビットを使用して装置を制御することを特徴とする、請求項１記載の装置。
【請求項８】
コンフィギュレーション空間レジスタの各セットは、キャッシュラインサイズレジスタを含み、多重ファンクションロジックは、複数のファンクションに関連する複数のキャッシュラインサイズレジスタからのビットを使用して装置を制御することを特徴とする、請求項１記載の装置。
【請求項９】
コンフィギュレーション空間レジスタの各セットは、レーテンシータイマーレジスタを含み、多重ファンクションロジックは、複数のファンクションに関連する複数のレーテンシータイマーレジスタからのビットを使用して装置を制御することを特徴とする、請求項１記載の装置。
【請求項１０】
コンフィギュレーション空間レジスタの各セットは、周辺コンポーネントインターコネクト拡張（ＰＣＩ−Ｘ）コマンドレジスタを含み、多重ファンクションロジックは、複数のファンクションに関連する複数の周辺コンポーネントインターコネクト拡張（ＰＣＩ−Ｘ）コマンドレジスタからのビットを使用して装置を制御することを特徴とする、請求項１記載の装置。
【請求項１１】
コンフィギュレーション空間レジスタの各セットは、周辺コンポーネントインターコネクト拡張（ＰＣＩ−Ｘ）ステータスレジスタを含み、多重ファンクションロジックは、複数のファンクションに関連する複数の周辺コンポーネントインターコネクト拡張（ＰＣＩ−Ｘ）ステータスレジスタからのビットを使用して装置を制御することを特徴とする、請求項１記載の装置。
【請求項１２】
多重ファンクションロジックは、複数のファンクションの複数のコンフィギュレーション空間レジスタを調整することを特徴とする、請求項１記載の装置。
【請求項１３】
多重ファンクションロジックは、複数のファンクションがバスインターフェースを共有することを可能にすることを特徴とする、請求項１記載の装置。
【請求項１４】
多重ファンクションロジックは、複数のファンクションが内部装置ロジックを共有することを可能にすることを特徴とする、請求項１記載の装置。
【請求項１５】
多重ファンクションロジックは、複数のファンクションが装置の内部リソースを共有することを可能にすることを特徴とする、請求項１記載の装置。
【請求項１６】
複数のファンクションが共有する周辺コンポーネントインターコネクト拡張（ＰＣＩ−Ｘ）マスターインターフェースロジックをさらに含むことを特徴とする、請求項１記載の装置。
【請求項１７】
複数のファンクションが共有する周辺コンポーネントインターコネクト拡張（ＰＣＩ−Ｘ）スレーブインターフェースロジックをさらに含むことを特徴とする、請求項１記載の装置。
【請求項１８】
複数のファンクションが共有する制御レジスタをさらに含むことを特徴とする、請求項１記載の装置。
【請求項１９】
複数のファンクションが共有する処理ユニットをさらに含むことを特徴とする、請求項１記載の装置。
【請求項２０】
複数のファンクションが共有するメモリをさらに含むことを特徴とする、請求項１記載の装置。
【請求項２１】
複数のファンクションが共有する直接メモリアクセスコントローラをさらに含むことを特徴とする、請求項１記載の装置。
【請求項２２】
ホストプロセッサと、
ホストプロセッサに接続されたローカルバスと、
ローカルバスに接続された多重ファンクション装置とを含み、該多重ファンクション装置は、
バスインターフェースと、
複数のコンフィギュレーション空間レジスタセットであって、それぞれが、多重ファンクション装置のファンクションに対応する、コンフィギュレーション空間レジスタセットと、
バスインターフェースおよびコンフィギュレーション空間レジスタセットに接続された多重ファンクションロジックであって、該多重ファンクションロジックは、装置の複数のファンクションを調整するようになっている、多重ファンクションロジックと、
を含むシステム。
【請求項２３】
装置の複数のファンクションのためのコンフィギュレーションビットを複数のレジスタセットに記憶するステップと、
複数のファンクションに装置ロジックを共有させるステップと、
を含むことを特徴とする方法。
【請求項２４】
ファンクションは、周辺コンポーネントインターコネクトファンクションであることを特徴とする、請求項２３記載の方法。
【請求項２５】
ファンクション番号を選択する方法であって、該方法は、
ファンクションそれぞれの最大アウトスタンディングスプリットトランザクションビットと、そのファンクションの現在のアウトスタンディングスプリットトランザクションビットのカウントとを比較するステップであって、最大アウトスタンディングスプリットトランザクションビットは、ファンクションのアウトスタンディングスプリットトランザクションの最大番号を制御するステップと、
現在のアウトスタンディングスプリットカウントが、最大アウトスタンディングスプリットトランザクションビット未満である、最小番号がついたファンクションを選択するステップと、
選択された最小番号のファンクションのファンクション番号を有するバス読み出しトランザクションを出すステップと、
を含むことを特徴とする方法。
【請求項２６】
読み出し要求がスプリットされた場合、アウトスタンディングスプリット要求カウントを加算するステップを、
さらに含むことを特徴とする、請求項２５記載の方法。
【請求項２７】
その後、ファンクションのスプリット読み出しが完了すると、ファンクションの読み出しが出たアウトスタンディングスプリットカウントを減少させるステップをさらに備えることを特徴とする、請求項２５記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
（背景）
周辺コンポーネントインターコネクト（ＰＣＩ）ローカルバス仕様は、マイクロプロセッサまたは中央処理装置（ＣＰＵ）と１台以上の周辺装置との間でデータを転送する３２ビットまたは６４ビットバスに関する。
【背景技術】
【０００２】
ディスクドライブなどの周辺装置は、マザーボードに直接に組み込むことができる。他の周辺装置は、マルチメディア、グラフィックス、ビデオ、オーディオおよびローカルエリアネットワーク（ＬＡＮ）カードなどのＰＣＩ拡張カードを介して追加することができる。
【０００３】
ＰＣＩ“装置”は、ＰＣＩバス環境における動作のＰＣＩ仕様に従った電気部品である。ＰＣＩ仕様に従ったＰＣＩ“装置”（ホストバスブリッジは除く）は、「コンフィギュレーションアドレス空間」（“コンフィギュレーション空間”ともいう）を実現しなければならない。コンフィギュレーション空間とは、コンフィギュレーション、初期化およびエラー処理に使用されるレジスタの特定のセットのことである。
【０００４】
ＰＣＩ“装置”は、それぞれ１個以上の“ファンクション”を有することができる。例えば、１台の装置は２つの“ファンクション”を有することができる：ひとつの“ファンクション”はＳＣＳＩバスコントローラに関するものであり、他の“ファンクション”はイーサネット（登録商標）に関するものである。１台の“装置”の“分割ファンクション”にすることもできるイーサネット（登録商標）コントローラが複数あり、各コントローラを複数の“ファンクション”が、同じのタスクを実施することもできる。例えば、ＰＣＩ仕様によれば、“ファンクション”は、“１つのコンフィギュレーション空間が示すロジックのセット”として定義されている。ＰＣＩ仕様では、“ファンクション”を、固有の２５６バイト空間およびファンクションに対応するロジックなどの分割コンフィギュレーションレジスタ空間として定義している。各ファンクションに固有のコンフィギュレーション空間は、入出力（Ｉ／Ｏ）またはメモリアドレス空間へのアクセスとは別の方法でアクセスすることもできる。
【０００５】
１台のＰＣＩ装置は、多重“ファンクション”を有することができる。「多重ファンクション装置」はファンクションごとにコンフィギュレーション空間を提供しなければならず、このため、多重コンフィギュレーション空間を有することができる。“多重ファンクション装置”における“ファンクション”は、ＰＣＩの機能性を活かすために、例えば、各ファンクションがそれ自体のコンフィギュレーション空間レジスタのセットを有する等、完全に分割された装置として取り扱う。
【０００６】
従来のＰＣＩ装置では、装置のロジックは原則として各ファンクションのコンフィギュレーション空間に対して、１対１で対応することができる。従来の多重ＰＣＩ装置では、各ファンクションは、ファンクションに対応するロジックの動作を制御するレジスタを有することができる。
【０００７】
ＰＣＩローカルバスに対するＰＣＩ拡張（ＰＣＩ−Ｘ）アデンダムは、ＰＣＩバスの速度および効率を向上させる利点がある。ＰＣＩ−Ｘアデンダムによる“ファンクション”は、ＰＣＩ−Ｘコンプライアンスに必要な動作のセットおよびレジスタのセットを指定する。
【発明の開示】
【課題を解決するための手段】
【０００８】
（要約）
本出願は、仮想周辺コンポーネントインターコネクト（ＰＣＩ）多重ファンクション装置およびそれを使用した方法に関する。ＰＣＩ多重ファンクション装置は、多数の利点を有することができる。例えば、ＰＣＩ装置は、各ファンクションの内部リソースの分割を行うことなく、複数のファンクションを実現することができる。ホストとＰＣＩ装置との間のデータ１つのファンクションデータ転送と、該ホストと該ＰＣＩ装置との間の他のファンクションのデータ転送とを区別するハードウェアは現実にはありえない。区別は、ファームウェア制御下のハードウェア以外のレベルではっきりする。装置の複数のファンクションは、内部資源を共有することができ、これは装置のロジックを削減させる。ロジックが減少することにより、個々のファンクション用の専用資源を有するＰＣＩ装置に比べて、該ＰＣＩ装置を小型化、低価格化することができる。ファンクションの一部の使用頻度が低い場合、または作動していない（不能）場合には、非常に多くのファンクションを実現する装置設計について、以上のことは事実であるということができる。
【０００９】
さらに、仮想ＰＣＩ多重ファンクション装置は、単一の集合装置の動作を制御するＰＣＩコンフィギュレーション値の複数の異なるセットを有するという問題に対処することができる。
【００１０】
本出願の一態様は、仮想ＰＣＩ多重ファンクション装置を含むシステムに関する。
【００１１】
他の態様は、ＰＣＩ機能の要求をさらに満たしながらＰＣＩ装置の複数のファンクション間の多数の内部リソースを共有する方法に関する。
【００１２】
１以上の実施形態の詳細を、以下に、添付図面および記述の中で説明する。他の特徴および利点は、記述および図面から、および請求項から明らかになるであろう。
【００１３】
（詳細な説明）
図１は、周辺コンポーネントインターコネクト（ＰＣＩ）システム１００の例を示す。ＰＣＩシステム１００は、ＰＣＩ（またはＰＣＩ−Ｘ）ローカルバス１０２、プロセッサ１０４および複数のＰＣＩ装置１０６−１１６を含むことができる。
【００１４】
図２は、図１のＰＣＩ／ＰＣＩ−Ｘバス１０２に接続したＰＣＩロジック装置２００を示す。ＰＣＩロジック装置２００は、特定用途向け集積回路（ＡＳＩＣ）であってもよい。図２のロジック装置２００は、ＰＣＩ−Ｘバスインターフェース（“ＰＣＩ−Ｘコア”ともいう）２１６、ＰＣＩ−Ｘバスマスターインターフェースロジック２１８、仮想多重ファンクションロジック２０４、ＰＣＩ−Ｘバススレーブインターフェースロジック２２２、追加装置ロジック２０２および複数のコンフィギュレーション空間ファンクションレジスタ２０６Ａ−２０６Ｎを含むことができる。追加装置ロジック２０２は、１個以上の制御レジスタ２１４、ＣＰＵ２０８、メモリ２１２、ダイレクトメモリアクセス（ＤＭＡ）コントローラ２１０を含むことができる。図２中の構成要素は、ハードウェア、ソフトウェアおよび／またはファームウェアをほかの要素と重複使用することもできるし、いくつかの構成要素でハードウェア、ソフトウェアおよび／またはファームウェアを備えていてもよい。例えば、仮想多重ファンクションロジック２０４は、他の装置ロジック２１６、２１８、２２２、２０２および各“ファンクション”のコンフィギュレーション空間と一体化させることができ、図２に示すように分割ブロックにはならない。
【００１５】
ＰＣＩ−Ｘバスインターフェース／ＰＣＩ−Ｘコア２１６は、ホストシステムとＰＣＩ装置２００との間のデータ通信を取り扱うハードウェアのブロックとすることができる。例えば、ＰＣＩ−Ｘコア２１６は、ＰＣＩ−Ｘバスプロトコルを実行することができる。ＰＣＩ−Ｘコア２１６は、内部ロジック２１８、２０４、２０２、２２２とＰＣＩバス１０２との間のインターフェースを提供する。
【００１６】
ＤＭＡコントローラ２１０は、ホストシステムメモリ１０５とオンチップメモリ２１２との間のデータ転送の処理をすることができる。
【００１７】
バスマスターインターフェースロジック２１８は、ＰＣＩ装置２００のバス動作の処理をすることができる。
【００１８】
仮想多重ファンクションロジック２０４は、ＰＣＩ−Ｘコア２１６、ＰＣＩ−Ｘバスマスターインターフェースロジック２１８、ＰＣＩ−Ｘスレーブインターフェースロジック２２２および追加装置ロジック２０２をファンクションレジスタ２０６Ａ−２０６Ｎにアクセスさせるロジック回路を含む。仮想多重ファンクションロジック２０４は、多数のファンクションレジスタ２０６Ａ−２０６Ｎを使用して、対応する共有ロジック２１６、２１８、２０２を制御するための方法を取り扱うロジック回路を含む。
【００１９】
ファンクションレジスタ２０６Ａ−２０６Ｎは、ＰＣＩ装置の“コンフィギュレーション空間”２２０を構成することができる。ＰＣＩ装置２００は、５個の“ファンクション”を有することができ、これにはロジックと、ＰＣＩ装置２００が実現することのできる５個のコンフィギュレーション空間レジスタセット２０６Ａ−２０６Ｎが含まれる。ホストソフトウェアドライバ（例えば、図１のプロセッサ１０４における）は、装置の“ファンクション”の１つを介してＰＣＩ装置２００と通信を行うことができる。“多重ファンクション装置”では、ファンクションにつき異なるホストドライバ、すなわち、各“ファンクション”について１個のホストドライバを設けることができる。多重“ファンクション”が提供するのは、すべて同じセットの“機能”であってもよいし、あるいは、異なる機能であってもよい。例えば、１つの“ファンクション”はＳＣＳＩバスコントローラに関し、他の“ファンクション”はイーサネット（登録商標）コントローラに関するものとすることができる。また、複数あるイーサネット（登録商標）コントローラのそれぞれを、１台の“装置”の分割された“ファンクション”とするなど、複数の“ファンクション”は同じタスクを実行することができる。これを適用する場合、ファンクションが提供する実際の機能は、重要にならないであろう。
【００２０】
５個の“ファンクション”はそれぞれ、ＰＣＩの機能性を生かすために、完全に分割された“装置”として取り扱うことができる。例えば、各ファンクションは、個別のコンフィギュレーション空間レジスタ２０６のセットを各自有することができる。ＰＣＩ仕様では、“ファンクション”はそれぞれ、個別のコンフィギュレーション空間レジスタ２０６のセットを各自を有することが要求される。しかし、５個のファンクションは、同じＰＣＩ“装置”２００によって実行される。
【００２１】
仮想多重ファンクションロジック２０４の“仮想”性により、複数のファンクションがＰＣＩ要求事項（例えば、各ファンクションは、コンフィギュレーション空間レジスタ２０６のセットを有するなど）に従って正確に機能することができ、多重ファンクションが複数の内部リソース（“ロジック”ともいう）の１つのインスタンスを共有することができる。内部リソースとしては、ＰＣＩ−ＸバスインターフェースまたはＰＣＩ−Ｘコア２１６、バスマスターインターフェース２１８、バススレーブインターフェースロジック２２２および追加ロジック２０２をあげることができる。
【００２２】
仮想多重ファンクションロジック２０４は、全ファンクションのレジスタ２０６Ａ−２０６Ｎの値を考慮し、レジスタ２０６Ａ−２０６Ｎに、多重ファンクションに対応する共有ロジック（内部リソース）２１６、２１８、２２２、２０２を制御させる。各ファンクションに対応する実際の（専用）ロジックはないため、ファンクションを“仮想”と呼ぶ。各“ファンクション”は、コンフィギュレーションレジスタ空間により形成される。装置２００の論理、ＣＰＵおよびファームウェアを“ファンクション”によって共有することができるが、ロジックのサブセットのみが直接結合され、コンフィギュレーション空間レジスタ２０６Ａ−２０６Ｎにより制御される。
【００２３】
ＰＣＩ−Ｘバスインターフェース２１６の可能な動作を制御する複数のパラメータがありえる。パラメータについては、各ファンクションのコンフィギュレーション空間にプログラムすることができる。仮想多重ファンクションロジック２０４に特徴的な点は、共有ハードウェア、例えば、ＰＣＩ−Ｘコア２１６およびＤＭＡコントローラ２１０の制御のセットを提供するために、ファンクションが異なれば設定をしたり、対立させたりして処理できる点にある。例えば、２個の異なるファンクションがキャッシュラインサイズレジスタの異なる値によりプログラムされた場合、仮想多重ファンクションロジック２０４は、キャッシュラインサイズの１つの値を選択することができる。また、装置２００全体の利用可能リソースを最大化するために各ファンクションで、仮想多重ロジック２０４は、アウトスタンディングスプリットトランスザクションの最大許容数などのリソース設定を最適化することもできる。
【００２４】
仮想多重ファンクションロジック２０４の特別な操作を必要とするＰＣＩコンフィギュレーション空間の種々の値を以下に説明する。タスクは各ファンクションの個別の値を１個の値に組み込むものとし、これによって集合装置動作を制御することができる。
【００２５】
図３は、ファンクションに対応するレジスタ２０６のセットを示し、これには、コマンドレジスタ３０２、ステータスレジスタ３０４、キャッシュラインサイズレジスタ３０６、レイテンシータイマーレジスタ３０８、ＰＣＩ−Ｘコマンドレジスタ３１０、ＰＣＩ−Ｘステータスレジスタ３１２が含まれる。各レジスタは、複数のビットを含むことができる。
【００２６】
（コマンドレジスタ）
コマンドレジスタ３０２は、ＰＣＩ仕様で定義された、ファンクションの動作を制御する複数のビットを含むことができる。“バスマスター”コマンドビット２は、ファンクションがＰＣＩ−Ｘバス１０２を支配できるか否かを決めるビットである。バスマスターコマンドビットがクリアされると、ファンクションは、ＰＣＩ−Ｘバス上のいかなるトランザクションを開始することができない。バスマスターコマンドビットが設定されると、ファンクションは、ＰＣＩ−Ｘバス１０２上のトランザクションを開始することができる。装置２００の集合的動作は、アクティブファンクションの全バスマスターイネーブルビットの論理“ＯＲ”に等しいものとすることができる。ファンクションのバスマスターイネーブルビットのいずれか１つが設定されると、装置２００は、ＰＣＩ−Ｘバス１０２のトランザクションを開始することができる。
【００２７】
“ＭＷＩ”コマンドビット４は、ファンクションにメモリ書き込み／無効化（ＭＷＩ）コマンドを使用させることができるかを決めるビットである。ＭＷＩビットをクリアした場合、ＭＷＩコマンドは使用されない。ＭＷＩビットを設定した場合、ＭＷＩコマンドを使用することができる。集合装置の動作は、バスマスターイネーブルファンクションのＭＷＩビットの論理“ＡＮＤ”に等しいものとすることができる。このように、バスマスターイネーブルファンクションがすべての設定された論理“ＡＮＤ”を有する場合、集合装置２００にメモリ書き込み／無効化（ＭＷＩ）コマンドを使用させることができる。
【００２８】
“パリティエラーレスポンス”コマンドビット６は、ファンクションがパリティを検査し、ファンクション配下のトランザクション上の“ＰＥＲＲ”信号（ＰＣＩ仕様により定義される）を駆動しなければならないかどうかを決めるビットである。パリティエラーレスポンスビットがクリアされた場合、ファンクションはパリティを検査する必要はなく、“ＰＥＲＲ”をアサートする必要はない。パリティレスポンスビットが設定された場合、ファンクションは全パリティを検査し、パリティエラーが検出された場合、“ＰＥＲＲ”をアサートしなければならない。集合装置の動作は、すべてのアクティブファンクションのパリティビットエラーレスポンスビットの論理“ＯＲ”に等しいものとすることができる。アクティブファンクションのいずれか１つが設定されたパリティエラーレスポンスビットを有する場合において、パリティエラーが検出された場合、装置２００はパリティを検査し、ＰＥＲＲを駆動する。
【００２９】
“ＳＥＲＲイネーブル”コマンドビット８は、ファンクションにＳＥＲＲドライバ（ＰＣＩ仕様で定義された）を割り込みさせることができるかどうかを決めるビットである。ＳＥＲＲイネーブルコマンドビットがクリアされた場合、ファンクションは、ＳＥＲＲドライバを割り込みさせることはできない。ＳＥＲＲイネーブルコマンドビットが設定された場合、ファンクションはＳＥＲＲを割り込みさせることができる。集合装置の動作は、アクティブファンクションのＳＥＲＲイネーブルコマンドビットの論理“ＯＲ”に等しいものとすることができる。このように、アクティブファンクションのいずれかが設定されたＳＥＲＲイネーブルコマンドビットを有していれば、装置２００はＳＥＲＲをアサートすることができる。
【００３０】
“ファストバックツーバックイネーブル”コマンドビット９は、ファンクションにファストバックツーバックトランザクションを実行させるかどうかを決めるビットである。ファストバックツーバックコマンドビットがクリアされた場合、ファンクションは、ファストバックツーバックトランザクションを実行することはできない。ファストバックツーバックコマンドビットが設定された場合、ファンクションは、ファストバックツーバックトランザクションを実行することができる。集合装置の動作は、バスマスターイネーブルファンクションのファストバックツーバックイネーブルコマンドビットの論理“ＡＮＤ”に等しいものとすることができる。このように、バスマスターイネーブルファンクションがすべて、設定されたファストバックツーバックイネーブルコマンドビットを有する場合、装置２００は、ファストトバックツーバックトランザクションを実行することができる。
【００３１】
（ステータスレジスタ）
ステータスレジスタ３０４は、ＰＣＩ仕様によって定義され、ファンクションのステータスを示す複数のビットを含むことができる。少数のビットは、仮想多重ファンクション装置２００の特定の処置を表すビットをいくつか含ませることもできる。
【００３２】
“マスターデータパリティエラー”ステータスビット２４は、支配されたトランザクション上のパリティエラーが検出されたことを表すことができる。所与のファンクションについて、対応するコマンドビット６が該ファンクションに設定されており、集合装置２００が、（ＰＣＩ仕様で定義された）制御下にあるトランザクション上のパリティエラーを検出したら、このビットを該ファンクションに設定することができる。
【００３３】
“シグナル化システムエラー”ステータスビット３０は、装置２００がＳＥＲＲドライバを駆動したことを示す。対応するコマンドビット８が該ファンクションについて設定されると、このビットは、所与のファンクションに設定することができ、装置２００はＳＥＲＲを駆動した。
【００３４】
“シグナル化ターゲットアボート”ステータスビット２７、“受信ターゲットアボート”ステータスビット２８、“受信マスターアボート”ステータスビット２９、“検出パリティエラー”ステータスビット３１は、種々のＰＣＩエラーを表示することができる。集合装置２００が対応するエラーに直面した場合、これらのエラービットは、すべてのファンクション上に設定することができる。
【００３５】
（キャッシュラインレジスタ）
キャッシュラインサイズレジスタ３０６は、ＰＣＩ仕様により定義され、キャッシュラインサイズのファンクションをホスト、例えば、図１中のプロセッサ１０４に通知することができる。キャッシュラインサイズレジスタがゼロ以外の値にプログラムされている場合、ファンクションはキャッシュラインサイズに基づいて最適化させることができる。これらの最適化には、ＰＣＩ仕様に定義されたブロック読み出しおよび書き込みコマンドの使用が含まれる。すなわち、メモリリードライン、メモリリードマルチプル、およびメモリライトインバリデートである。
【００３６】
集合装置の動作は以下の通りである。バスマスターイネーブルファンクションすべてのキャッシュラインサイズレジスタが同値にプログラムされた場合、集合装置２００はその値を使用することができる。そうでない場合は、集合装置２００は、“０”（無効値）のキャッシュラインサイズを利用することができる。
【００３７】
（レイテンシータイマーレジスタ）
レイテンシータイマーレジスタ３０８については、ＰＣＩ仕様により定義することができ、認可を取り消した場合にファンクションがバス１０２を使用することのできる時間の最大量を示すことができる。集合装置２００がトランザクションを制御するとき、集合装置２００は、すべてのバスマスターイネーブルファンクションのレイテンシータイマーレジスタ３０８の値の最小値に等しい値を使用する。
【００３８】
（ＰＣＩ−Ｘコマンドレジスタ）
ＰＣＩ−Ｘコマンドレジスタ３１０は、ＰＣＩ−Ｘ仕様に定義され、装置２００のＰＣＩ−Ｘの動作を制御する複数のビットを含むことができる。データパリティリカバリ”コマンドビット１６は、ファンクションの能力を制御してパリティエラーから復帰させることができる。“データパリティリカバリコマンドビット”が設定されると、ファンクションはパリティエラーからの復帰を試みることができる。このビットがクリアされると、ファンクションは、データパリティエラーからの復帰を試みてはならない。集合装置の動作は、バスマスターイネーブルファンクションの全ビットの論理“ＡＮＤ”に等しいものとすることができる。このように、すべてのバスマスターイネーブルファンクションがこの設定されたビットを有する場合、集合装置２００は、データパリティエラーからの復帰を試みることができる。
【００３９】
“イネーブルリラックスオーダリング”コマンドビット１７は、ファンクションの能力を制御して、制御下にあるトランザクション（ＰＣＩおよび／またはＰＣＩ−Ｘ仕様で定義された）内のリラックスオーダリング（“ＲＯ”）ビットを設定することができる。イネーブルリラックスオーダリングビットが設定されると、ファンクションは、リラックスオーダリング“ＲＯ”ビットを設定することができる。イネーブルリラックスオーダリング“ＲＯ”ビットがクリアされると、ファンクションは、“ＲＯ”ビットを設定してはならない。集合装置の動作は、バスマスターイネーブルファンクションの全イネーブルリラックスオーダリングのビットのロジック“ＡＮＤ”に等しいものとすることができる。このように、すべてのバスマスターイネーブルファンクションがこの設定されたビットを有する場合、集合装置２００は“ＲＯ”ビットを制御下にあるトランザクション内に設定することができる。
【００４０】
“最大メモリリードバイトカウント”コマンドビット１８−１９は、ファンクションが行う最大サイズリードを制限することができる。マスターリードが最大メモリリードバイトカウントビットの値より大きい場合には、（ＰＣＩおよび／またはＰＣＩ−Ｘ仕様で定義された）マスターリードを要求することはできない。集合装置の動作は、バスマスターイネーブルファンクションの最大メモリリードバイトカウントフィールドの全フィールドの最小値とすることができる。このように、集合装置２００により要求された最大サイズリードは、すべてのバスマスターイネーブルファンクションに対して、最大メモリリードバイトカウントフィールドの最小値とすることができる。
【００４１】
“最大アウトスタンディングスプリットトランザクション”コマンドビット２０−２２は、ファンクションが有するのできる最大数のアウトスタンディングスプリットトランザクションを制御することができる。表示された（ＰＩＣおよび／またはＰＣＩ−Ｘ仕様で定義された）アウトスタンディングスプリットの数が達してしまうと、ファンクションはこれ以上、スプリットされ得るトランザクションを要求してはならない。集合装置の動作により、バスマスターイネーブルファンクションの最大アウトスタンディングスプリットトランザクション”コマンドフィールドの全フィールドの総計と等しい値を使用する。これにより、すべてのファンクションに割り当てられたすべてのスプリットを集合装置２００で使用することができる。
【００４２】
（ＰＣＩ−Ｘステータス）
ＰＣＩ−Ｘステータスレジスタ３１２は、ＰＣＩ−Ｘ仕様により定義され、ＰＣＩ−Ｘ操作の種々のステータス情報を通知する。仮想多重ファンクション動作に影響されるビットもある。集合装置２００が対応する条件を検出すると、ステータスビット２９、“受信スプリット完了エラー”ステータスビット１９“予期しないスプリット完了”ステータスビット１８、および“スプリット完了破棄”ビットをすべてのアクティブファンクションに設定することができる。
【００４３】
（ＰＣＩ−Ｘファンクション使用）
異なるファンクション番号を使用して、ＰＣＩ／ＰＣＩ−Ｘプロトコルに従うようにし、いずれかの所与のファンクション上でのアウトスタンディングスプリットの最大数に反することなく、アウトスタンディングスプリットの可能な数に達するようにすることができる。
【００４４】
集合装置２００がＰＣＩ−Ｘバス１０２上でトランザクションを支配すると、ファンクション番号をバス１０２上に転送される情報の一部とすることができる。集合装置２００は、複数の条件に基づいて、各トランザクションにとって有効なファンクション番号を選択しなければならない。
【００４５】
図４は、ファンクション番号を選択する方法を示す。この方法は、４００において、要求されたバストランザクションが読み出しであるのか書き込みであるのかを判定することができる。要求されているトランザクションが書き込みの場合、４０２において装置２００は、最小番号のついたバスマスターイネーブルファンクションの番号を選択することができる。
【００４６】
要求されているトランザクションが読み出しの場合、装置２００（例えば、仮想多重ファンクションロジック２０４）は、イネーブルまたはバスマスターイネーブルされたファンクションに対し、以下のプロセスを使用することができる。
【００４７】
−４０４において、“最大アウトスタンディングスプリットトランザクション”ＰＣＩ−Ｘコマンドレジスタビット２２：２０と、該ファンクションの現在のアウトスタンディングスプリットトランザクションとの比較を、最小番号のついたファンクションから開始し、最大番号のついたファンクションまで続ける。
【００４８】
−４０６において、現在のアウトスタンディングスプリットカウント（該ファンクションで発行されたスプリット）が、要求中に使用される“最大アウトスタンディングスプリットトランザクション”ＰＣＩ−Ｘコマンドレジスタビット２０：２２より少なく、最小番号がついたファンクションを選択し、選択されたファンクションの読み出し結果を出す。
【００４９】
−新しい読み出し要求がスプリットされると、４１０において、該ファンクションのアウトスタンディングスプリット要求カウントを加算する。
【００５０】
−ファンクションのスプリット読み出しが完了すると、４１２において、読み出し結果が出されたファンクションのアウトスタンディングスプリットカウントを減算する。
【００５１】
多数の実施形態を説明してきたが、本願の趣旨および範囲から逸脱しない限りにおいて、種々の修正を行うことができることを理解されたい。従って、他の実施形態が、以下の請求項の範囲に含まれる。
【図面の簡単な説明】
【００５２】
【図１】図１は、周辺コンポーネントインターコネクト（ＰＣＩ）システムの例を示す。
【図２】図２は、装置ロジック、仮想多重ファンクションロジックおよび複数のファンクションレジスタを含むＰＣＩ装置を示す。
【図３】図３は、ファンクションに対応するレジスタのセットを示す。
【図４】図４は、ファンクション番号を選択する方法を示す。
【図１】
2006522414.tif 000003
【図２】
2006522414.tif 000004
【図３】
2006522414.tif 000005
【図４】
2006522414.tif 000006
【国際調査報告】
2006522414.tif 000007
2006522414.tif 000008