(57)【特許請求の範囲】
【請求項１】
周辺コンポーネント相互接続エクスプレス(PCIe)ホストであって、
1つまたは複数の接続スロットのうちの接続スロット上のアタッチされたPCIeエンドポイントを検出するための手段と、
前記PCIeホストと前記アタッチされたPCIeエンドポイントとの間の時間的距離を決定するための手段と、
前記時間的距離が所定のしきい値よりも大きい場合、第1の確認応答(ACK)タイムアウト値を定義するための手段と、
前記時間的距離が前記所定のしきい値以下である場合、前記第1のACKタイムアウト値よりも短い第2のACKタイムアウト値を定義するための手段と
を含む、PCIeホスト。
【請求項２】
1つまたは複数のPCIeエンドポイントを通信可能に結合するための手段と、
前記1つまたは複数のPCIeエンドポイントを通信可能に結合するための前記手段に通信可能に結合されたPCIeリンクを制御するための手段とさらに備え、前記PCIeリンクを制御するための前記手段が、
前記1つまたは複数のPCIeエンドポイントを通信可能に結合するための前記手段上のアタッチされたPCIeエンドポイントを検出し、
前記PCIeホストと前記アタッチされたPCIeエンドポイントとの間の時間的距離を決定することにより前記時間的距離を決定するための手段を提供し、
前記第1のACKタイムアウト値を定義するための手段を提供するように構成され、
前記第1のACKタイムアウト値を定義するための手段が、
前記アタッチされたPCIeエンドポイントを第1のタイプのPCIeエンドポイントとして決定し、
前記第1のタイプのPCIeエンドポイントに提供される第1のACKタイムアウト値を定義し、
前記第2のACKタイムアウト値を定義するための手段を提供するように構成され、
前記第2のACKタイムアウト値を定義するための手段が、
前記アタッチされたPCIeエンドポイントを第2のタイプのPCIeエンドポイントとして決定し、
前記第2のタイプのPCIeエンドポイントに提供される第2のACKタイムアウト値を定義するように構成される、請求項１に記載のPCIeホスト。
【請求項３】
前記1つまたは複数のPCIeエンドポイントを通信可能に結合するための手段が、1つまたは複数のPCIeエンドポイントにそれぞれ通信可能に結合されるように構成された1つまたは複数の接続スロットであり、
前記PCIeリンクを制御するための手段が、前記1つまたは複数の接続スロットに通信可能に結合されたPCIeリンクコントローラであり、前記PCIeリンクコントローラが、
前記1つまたは複数の接続スロットのうちの接続スロット上のアタッチされたPCIeエンドポイントを検出することと、
前記PCIeホストと前記アタッチされたPCIeエンドポイントとの間の時間的距離を決定することと、
前記時間的距離が所定のしきい値よりも大きい場合、
前記アタッチされたPCIeエンドポイントを第1のタイプのPCIeエンドポイントとして決定し、
前記第1のタイプのPCIeエンドポイントに提供される第1のACKタイムアウト値を定義することと、
前記時間的距離が前記所定のしきい値以下である場合、
前記アタッチされたPCIeエンドポイントを第2のタイプのPCIeエンドポイントとして決定し、
前記第2のタイプのPCIeエンドポイントに提供される、前記第1のACKタイムアウト値よりも短い第2のACKタイムアウト値を定義することと
を行うように構成される、請求項2に記載のPCIeホスト。
【請求項４】
前記PCIeリンクコントローラが、PCIe列挙中にPCIeフロー制御パケットのラウンドトリップ時間を測定することによって、前記時間的距離を決定するように構成される、請求項3に記載のPCIeホスト。
【請求項５】
前記第1のタイプのPCIeエンドポイントが、リモートPCIeエンドポイントであり、
前記第2のタイプのPCIeエンドポイントが、ローカルPCIeエンドポイントである、
請求項3に記載のPCIeホスト。
【請求項６】
前記PCIeリンクコントローラが、
前記第1のACKタイムアウト値をリンク構成テーブルに記憶することと、
前記第2のACKタイムアウト値を前記リンク構成テーブルに記憶することと、
前記第1のACKタイムアウト値を前記リモートPCIeエンドポイントに提供することと、
前記第2のACKタイムアウト値を前記ローカルPCIeエンドポイントに提供することと
を行うようにさらに構成される、請求項5に記載のPCIeホスト。
【請求項７】
請求項6に記載のPCIeホストと前記リモートPCIeエンドポイントとを含むシステムであって、
前記リモートPCIeエンドポイントが、前記PCIeリンクコントローラから受信された前記第1のACKタイムアウト値をリモートエンドポイント構成テーブルに記憶するように構成される、システム。
【請求項８】
請求項6に記載のPCIeホストと前記ローカルPCIeエンドポイントとを含むシステムであって、
前記ローカルPCIeエンドポイントが、前記PCIeリンクコントローラから受信された前記第2のACKタイムアウト値をローカルエンドポイント構成テーブルに記憶するように構成される、システム。
【請求項９】
前記PCIeリンクコントローラが、
前記第1のACKタイムアウト値に従って設定された第1のホストタイマーが終わるときに、第1のホスト発信のトランザクションレイヤパケット(TLP)に対する第1のエンドポイント発信のACKが前記リモートPCIeエンドポイントから受信されない場合、前記第1のホスト発信のTLPを前記リモートPCIeエンドポイントに再送することと、
前記第2のACKタイムアウト値に従って設定された第2のホストタイマーが終わるときに、第2のホスト発信のTLPに対する第2のエンドポイント発信のACKが前記ローカルPCIeエンドポイントから受信されない場合、前記第2のホスト発信のTLPを前記ローカルPCIeエンドポイントに再送することと
を行うようにさらに構成される、請求項6に記載のPCIeホスト。
【請求項１０】
請求項6に記載のPCIeホストと前記ローカルPCIeエンドポイントと前記リモートPCIeエンドポイントとを含むシステムであって、
前記リモートPCIeエンドポイントは、前記第1のACKタイムアウト値に従って設定された第1のエンドポイントタイマーが終わるときに、第1のエンドポイント発信のトランザクションレイヤパケット(TLP)に対する第1のホスト発信のACKが前記PCIeリンクコントローラから受信されない場合、前記第1のエンドポイント発信のTLPを前記PCIeリンクコントローラに再送するように構成され、
前記ローカルPCIeエンドポイントは、前記第2のACKタイムアウト値に従って設定された第2のエンドポイントタイマーが終わるときに、第2のエンドポイント発信のTLPに対する第2のホスト発信のACKが前記PCIeリンクコントローラから受信されない場合、前記第2のエンドポイント発信のTLPを前記PCIeリンクコントローラに再送するように構成される、システム。
【請求項１１】
周辺コンポーネント相互接続エクスプレス(PCIe)ホストにおいてリモートPCIeエンドポイントをサポートするための方法であって、
1つまたは複数の接続スロットのうちの接続スロット上のアタッチされたPCIeエンドポイントを検出するステップと、
前記PCIeホストと前記アタッチされたPCIeエンドポイントとの間の時間的距離を決定するステップと、
前記時間的距離が所定のしきい値よりも大きい場合、第1の確認応答(ACK)タイムアウト値を定義するステップと、
前記時間的距離が前記所定のしきい値以下である場合、前記第1のACKタイムアウト値よりも短い第2のACKタイムアウト値を定義するステップと
を含む、方法。
【請求項１２】
前記PCIeホストと前記アタッチされたPCIeエンドポイントとの間の前記時間的距離を決定するステップが、PCIe列挙中にPCIeフロー制御パケットのラウンドトリップ時間を測定するステップを含む、請求項11に記載の方法。
【請求項１３】
前記PCIeホスト内のPCIeリンクコントローラにおいて、前記第1のACKタイムアウト値および前記第2のACKタイムアウト値を記憶するステップと、
前記第1のACKタイムアウト値および前記第2のACKタイムアウト値を前記アタッチされたPCIeエンドポイントに提供するステップと
をさらに含む、請求項11に記載の方法。
【請求項１４】
前記第1のACKタイムアウト値に従って設定された第1のホストタイマーが終わるときに、第1のホスト発信のトランザクションレイヤパケット(TLP)に対する第1のエンドポイント発信のACKが前記アタッチされたPCIeエンドポイントから受信されない場合、前記第1のホスト発信のTLPを前記PCIeリンクコントローラから前記アタッチされたPCIeエンドポイントに再送するステップをさらに含むか、または、
前記第2のACKタイムアウト値に従って設定された第2のホストタイマーが終わるときに、第2のホスト発信のトランザクションレイヤパケット(TLP)に対する第2のエンドポイント発信のACKが前記アタッチされたPCIeエンドポイントから受信されない場合、前記第2のホスト発信のTLPを前記PCIeリンクコントローラから前記アタッチされたPCIeエンドポイントに再送するステップをさらに含む、請求項13に記載の方法。
【請求項１５】
周辺コンポーネント相互接続エクスプレス(PCIe)ホストとPCIeエンドポイントを含むシステムにより実行される方法であって、
請求項13に記載の方法に含まれる各ステップを含み、
前記第1のACKタイムアウト値に従って設定された第1のエンドポイントタイマーが終わるときに、第1のエンドポイント発信のトランザクションレイヤパケット(TLP)に対する第1のホスト発信のACKが前記PCIeリンクコントローラから受信されない場合、前記第1のエンドポイント発信のTLPを前記アタッチされたPCIeエンドポイントから前記PCIeリンクコントローラに再送するステップをさらに含むか、または、
前記第2のACKタイムアウト値に従って設定された第2のエンドポイントタイマーが終わるときに、第2のエンドポイント発信のトランザクションレイヤパケット(TLP)に対する第2のホスト発信のACKが前記PCIeリンクコントローラから受信されない場合、前記第2のエンドポイント発信のTLPを前記アタッチされたPCIeエンドポイントから前記PCIeリンクコントローラに再送するステップをさらに含む、方法。
【請求項１６】
周辺コンポーネント相互接続エクスプレス(PCIe)ホストにより実行されたときに、前記PCIeホストに請求項11から14のいずれか一項に記載の方法を実行させるように構成された命令を含む、コンピュータ可読記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
優先権主張
本出願は、その内容全体が参照により本明細書に組み込まれている、2015年1月16日に出願された、「PERIPHERAL COMPONENT INTERCONNECT EXPRESS (PCIe) HOSTS ADAPTED TO SUPPORT REMOTE PCIe ENDPOINTS」という名称の米国特許出願第14/598,300号の優先権を主張するものである。
【０００２】
本開示の技術は、一般に、周辺コンポーネント相互接続エクスプレス(PCIe)に関する。
【背景技術】
【０００３】
モバイル通信デバイスは、現代社会においてますます一般的になってきた。これらのモバイル通信デバイスの普及は、一部、そのようなデバイス上で現在可能にされる多くの機能によって促されている。そのような機能の需要は、モバイル通信デバイスの処理能力要件を引き上げる。結果として、モバイル通信デバイスは、純粋な通信ツールであることから高度なモバイルエンターテインメントセンターとなることに進化した。
【０００４】
モバイル通信デバイスの人気の上昇と同時に、モバイル通信デバイスによって生成および/または消費される高精細度(HD)および超HD(UHD)マルチメディアコンテンツが爆発的に成長している。しかしながら、モバイル通信デバイス上でHDおよびUHDマルチメディアコンテンツを閲覧する能力は、モバイル通信デバイスの比較的小さい画面によって阻まれている。小さい画面の制限を克服し、エンドユーザのマルチメディアエクスペリエンスを向上させようとして、ワイヤレスフィデリティ(Wi-Fi)Miracast(商標)などのワイヤレスディスプレイ技術が開発されて、Wi-Fi接続を通じてリモートディスプレイデバイス上でHDおよびUHDマルチメディアコンテンツを閲覧することを可能にしている。しかしながら、Wi-Fi接続を通じた送信の前に、HDおよびUHDマルチメディアコンテンツに不可逆圧縮が適用されなければならず、これは、リモートディスプレイデバイス上でのHDおよびUHDマルチメディアコンテンツの閲覧品質に悪影響を及ぼす可能性がある。
【０００５】
リモートディスプレイデバイス上の閲覧品質へのこの悪影響を軽減する助けとなるように、様々なプロトコルが提案されている。具体的には、モバイル周辺コンポーネント相互接続エクスプレス(PCIe)が、モバイル通信デバイス内部の高速チップ間相互接続を行うように設計されたPCIスペシャルインタレストグループ(SIG:special interest group)(PCI-SIG)プロトコルである。モバイルPCIeプロトコルは、MIPI(登録商標)アライアンスM-PHY(登録商標)物理層規格に基づいており、最大32ギガビット毎秒(Gbps)のデータ伝送帯域幅を提供することができる。様々なモバイル通信デバイスは、向上した閲覧品質を求めて、PCIe接続を通じてリモートディスプレイデバイス上で圧縮されていないHDおよびUHDマルチメディアコンテンツを表示するために、モバイルPCIeプロトコルを実装し始めている。しかしながら、リモートディスプレイデバイスからの確認応答信号を待つ送信機が、そのような確認応答信号を受信する前にタイムアウトする可能性があるので、この状況におけるPCIe接続を通じたモバイルPCIeプロトコルの使用は、伝送エラーを生じる可能性がある。したがって、設計者は、そのような伝送エラーを防止するための追加のツールを必要とする。
【発明の概要】
【課題を解決するための手段】
【０００６】
発明を実施するための形態で開示する態様は、リモート周辺コンポーネント相互接続エクスプレス(PCIe)エンドポイントをサポートするように適合されたPCIeホストを含む。この点について、PCIeホストが、アタッチされたPCIeエンドポイントまでの時間的距離を決定し、この時間的距離を所定のしきい値と比較するように構成される。一態様では、時間的距離が所定のしきい値よりも大きい場合、PCIeホストは、アタッチされたPCIeエンドポイントのために第1の構成パラメータを定義する。別の態様では、時間的距離が所定のしきい値以下の場合、PCIeホストは、アタッチされたPCIeエンドポイントのために第1の構成パラメータとは異なる第2の構成パラメータを定義する。時間的距離に基づいてアタッチされたPCIeエンドポイントを区別することによって、PCIeホストは、複数のアタッチされたPCIeエンドポイントとの物理的な接続距離にかかわらず、複数のアタッチされたPCIeエンドポイントを矛盾なくサポートすることができる。
【０００７】
この点について、一態様では、PCIeホストが提供される。PCIeホストは、1つまたは複数のPCIeエンドポイントにそれぞれ通信可能に結合されるように構成された1つまたは複数の接続スロットを備える。PCIeホストはまた、1つまたは複数の接続スロットに通信可能に結合されるPCIeリンクコントローラを備える。PCIeリンクコントローラは、1つまたは複数の接続スロットのうちの接続スロット上のアタッチされたPCIeエンドポイントを検出するように構成される。PCIeリンクコントローラはまた、PCIeホストとアタッチされたPCIeエンドポイントとの間の時間的距離を決定するように構成される。時間的距離が所定のしきい値よりも大きい場合、PCIeリンクコントローラは、アタッチされたPCIeエンドポイントを第1のタイプのPCIeエンドポイントとして決定するように構成される。時間的距離が所定のしきい値よりも大きい場合、PCIeリンクコントローラはまた、第1のタイプのPCIeエンドポイントに提供される第1の構成パラメータを定義するように構成される。時間的距離が所定のしきい値以下である場合、PCIeリンクコントローラは、アタッチされたPCIeエンドポイントを第2のタイプのPCIeエンドポイントとして決定するように構成される。時間的距離が所定のしきい値以下である場合、PCIeリンクコントローラはまた、第2のタイプのPCIeエンドポイントに提供される、第1の構成パラメータとは異なる第2の構成パラメータを定義するように構成される。
【０００８】
別の態様では、PCIeホストが提供される。PCIeホストは、1つまたは複数のPCIeエンドポイントを通信可能に結合するための手段を備える。PCIeホストはまた、1つまたは複数のPCIeエンドポイントを通信可能に結合するための手段に通信可能に結合されたPCIeリンクを制御するための手段を備える。PCIeリンクを制御するための手段は、1つまたは複数のPCIeエンドポイントを通信可能に結合するための手段上のアタッチされたPCIeエンドポイントを検出するように構成される。PCIeリンクを制御するための手段はまた、PCIeホストとアタッチされたPCIeエンドポイントとの間の時間的距離を決定するように構成される。時間的距離が所定のしきい値よりも大きい場合、PCIeリンクを制御するための手段は、アタッチされたPCIeエンドポイントを第1のタイプのPCIeエンドポイントとして決定するように構成される。時間的距離が所定のしきい値よりも大きい場合、PCIeリンクを制御するための手段はまた、第1のタイプのPCIeエンドポイントに提供される第1の構成パラメータを定義するように構成される。時間的距離が所定のしきい値以下である場合、PCIeリンクを制御するための手段は、アタッチされたPCIeエンドポイントを第2のタイプのPCIeエンドポイントとして決定するように構成される。時間的距離が所定のしきい値以下である場合、PCIeリンクを制御するための手段はまた、第2のタイプのPCIeエンドポイントに提供される第2の構成パラメータを定義するように構成される。
【０００９】
別の態様では、PCIeホストでリモートPCIeエンドポイントをサポートするための方法が提供される。この方法は、1つまたは複数の接続スロットの中のある接続スロットのうちのアタッチされたPCIeエンドポイントを検出することを含む。この方法はまた、PCIeホストとアタッチされたPCIeエンドポイントとの間の時間的距離を決定することを含む。この方法はまた、時間的距離が所定のしきい値よりも大きい場合、第1のタイムアウト値を定義することを含む。この方法はまた、時間的距離が所定のしきい値以下である場合、第1のタイムアウト値よりも短い第2のタイムアウト値を定義することを含む。
【００１０】
別の態様では、PCIeホストが提供される。PCIeホストは、1つまたは複数のPCIeエンドポイントにそれぞれ通信可能に結合されるように構成された1つまたは複数の接続スロットを備える。PCIeホストはまた、1つまたは複数の接続スロットに通信可能に結合されるPCIeリンクコントローラを備える。PCIeリンクコントローラは、1つまたは複数の接続スロットのうちの接続スロット上のアタッチされたPCIeエンドポイントを検出するように構成される。PCIeリンクコントローラはまた、PCIeホストとアタッチされたPCIeエンドポイントとの間の時間的距離を決定するように構成される。時間的距離が所定のしきい値よりも大きい場合、PCIeリンクコントローラは、アタッチされたPCIeエンドポイントをリモートPCIeエンドポイントとして決定するように構成される。時間的距離が所定のしきい値よりも大きい場合、PCIeリンクコントローラはまた、リモートPCIeエンドポイントに提供される第1のタイムアウト値を定義するように構成される。時間的距離が所定のしきい値以下である場合、PCIeリンクコントローラは、アタッチされたPCIeエンドポイントをローカルのPCIeエンドポイントとして決定するように構成される。時間的距離が所定のしきい値以下である場合、PCIeリンクコントローラはまた、ローカルのPCIeエンドポイントに提供される、第1のタイムアウト値よりも短い第2のタイムアウト値を定義するように構成される。
【図面の簡単な説明】
【００１１】
【図１】周辺コンポーネント相互接続エクスプレス(PCIe)接続を通じてリモートディスプレイデバイス上に高精細度(HD)マルチメディアコンテンツをレンダリングするように構成されたモバイル通信デバイスを含む例示的なリモートディスプレイシステムの概略図である。
【図２】図1のPCIe接続上で、データフロー制御を行い、データの完全性を保証するためのPCIeリンクレベル信号フローの例示的な図である。
【図３】1つまたは複数のローカルPCIeエンドポイントと1つまたは複数のリモートPCIeエンドポイントを区別し、1つまたは複数のリモートPCIeエンドポイントにより長いトランザクションレイヤパケット(TLP)確認応答(ACK)タイムアウト値を適用するように構成された例示的なPCIeホストの概略図である。
【図４】1つまたは複数のリモートPCIeエンドポイントの中のあるリモートPCIeエンドポイントをサポートするための例示的なPCIeホストプロセスのフローチャートである。
【図５】図3に示すPCIeホストを用いることができるプロセッサベースのシステムの一例を示す図である。
【発明を実施するための形態】
【００１２】
次に図面を参照しながら、本開示のいくつかの例示的な態様について述べる。本明細書において、「例示的」という語は、「例、実例、または例証としての働きをする」ことを意味するために使用される。「例示的」として本明細書で説明するいずれの態様も、必ずしも他の態様よりも好ましいか、または有利であると解釈されるべきでない。
【００１３】
発明を実施するための形態で開示する態様は、リモート周辺コンポーネント相互接続エクスプレス(PCIe)エンドポイントをサポートするように適合されたPCIeホストを含む。この点について、PCIeホストが、アタッチされたPCIeエンドポイントまでの時間的距離を決定し、この時間的距離を所定のしきい値と比較するように構成される。一態様では、時間的距離が所定のしきい値よりも大きい場合、PCIeホストは、アタッチされたPCIeエンドポイントのために第1の構成パラメータを定義する。別の態様では、時間的距離が所定のしきい値以下の場合、PCIeホストは、アタッチされたPCIeエンドポイントのために第1の構成パラメータとは異なる第2の構成パラメータを定義する。時間的距離に基づいてアタッチされたPCIeエンドポイントを区別することによって、PCIeホストは、複数のアタッチされたPCIeエンドポイントとの物理的な接続距離にかかわらず、複数のアタッチされたPCIeエンドポイントを矛盾なくサポートすることができる。リモートPCIeエンドポイントをサポートするように適合されたPCIeホストの態様について述べる前に、本開示の例示的な態様の状況を提供し、それによって本開示の例示的な態様の利点を説明するために、図1および図2に関して、PCIe接続およびPCIeプロトコルフロー制御機構に基づくリモートディスプレイシステムの例示的な図が提供される。リモートPCIeエンドポイントをサポートするように適合されたPCIeホストの特定の例示的な態様の説明は、図3から始まる。
【００１４】
この点について、図1は、PCIe接続16を通じてリモートディスプレイデバイス14上に高精細度(HD)マルチメディアコンテンツをレンダリングするように構成されたモバイル通信デバイス12を含む、例示的なリモートディスプレイシステム10の概略図である。リモートディスプレイシステム10では、モバイル通信デバイス12は、マルチメディアソースデバイスとして構成される。一方、リモートディスプレイデバイス14は、マルチメディアシンクデバイスとして構成され、本明細書ではリモートPCIeエンドポイント14と呼ぶことがある。モバイル通信デバイス12は、HDマルチメディアコンテンツを受信するためにマルチメディアコンテンツソース18に接続されてもよい。非限定的な例では、マルチメディアコンテンツソース18は、ワイヤレス通信媒体22を通じてワイヤレスネットワーク20を介してモバイル通信デバイス12によってアクセス可能なリモートロケーションにある。非限定的な例では、ワイヤレスネットワーク20は、第2世代(2G)ワイヤレスワイドエリアネットワーク(WWAN)、第3世代(3G)WWAN、第4世代(4G)WWAN、またはロングタームエボリューション(LTE)WWANなど、WWANであってもよい。別の非限定的な例では、ワイヤレスネットワーク20は、ワイヤレスローカルエリアネットワーク(WLAN)であってもよい。別の非限定的な例では、マルチメディアコンテンツソース18は、モバイル通信デバイス12の近くにあり(たとえば、家庭内メディアセンター)、第2のPCIe接続24を介してアクセス可能である。PCIe接続16が最大32ギガビット毎秒(Gbps)データ伝送帯域幅を提供することができると仮定すれば、モバイル通信デバイス12は、HDマルチメディアコンテンツに不可逆圧縮を適用する必要なしに、リモートディスプレイデバイス14にHDマルチメディアコンテンツを送信することができる。
【００１５】
PCIeは、データフロー制御を行い、データの完全性を保証するために、伝送レイヤパケット(TLP)バッファおよびTLP再送を利用する。この点について、図2は、図1のPCIe接続16上で、データフロー制御を行い、データの完全性を保証するためのPCIeリンクレベル信号フロー30の例示的な図である。図2に関して、図1の要素が参照されるが、本明細書では再び説明しない。
【００１６】
図2に関して、リモートPCIeエンドポイント14は、バッファステータス更新32をPCIeホスト33に定期的に提供するように構成される。バッファステータス更新32は、PCIeホスト33に、リモートPCIeエンドポイント14において利用可能なデータバッファスペースを示す。PCIeホスト33は、バッファステータス更新32がリモートPCIeエンドポイント14における利用可能なデータバッファスペースを示す場合にのみ、TLP34をリモートPCIeエンドポイント14に送信するように構成される。この点について、PCIeホスト33は、リモートPCIeエンドポイント14によって提供されるデータフロー制御機構(図示せず)によって従われる。同様に、PCIeホスト33はまた、同じ手段によってリモートPCIeエンドポイント14上のデータフロー制御を実施する。
【００１７】
引き続き図2に関して、リモートPCIeエンドポイント14において利用可能なデータバッファスペースを検出すると、PCIeホスト33は、リモートPCIeエンドポイント14にTLP34を送信し、TLP34の送信後にTLP確認応答(ACK)タイマーを直ちに開始する。TLP34は、リモートPCIeエンドポイント14に到着すると、リモートPCIeエンドポイント14においてまずバッファされ、その後、リモートPCIeエンドポイント14によって処理される。時間T0において、リモートPCIeエンドポイント14は、TLP34が正しく受信される場合はTLP ACK36を送信し、または、TLP34が誤って受信される場合は、TLP None ACK(NACK)(図示せず)を送信する。PCIe接続16(図2に図示せず)に関連する伝送遅延により、TLP ACK36またはTLP NACKは、時間T3までPCIeホスト33に到着しない。しかしながら、PCIeホスト33におけるTLP ACKタイマーは、TLP ACK36の到着時間T3よりも早い時間T1に終了する可能性がある。結果として、PCIeホスト33は、早まって時間T2においてTLP再送38を開始する。TLP34とTLP ACK36(またはTLP NACK)との時間ずれ(time misalignment)が持続する場合、TLP34は、最終的には配信できなくなり、廃棄されなければならない可能性がある。
【００１８】
引き続き図2に関して、当初考えられた、PCIeプロトコルは、モバイル通信デバイス12内部の高速チップ間相互接続を実現するように設計された。チップ間相互接続に関連する伝送遅延は、一般にごくわずかであるので、PCIeプロトコルは、PCIe接続16を含む、すべてのPCIe接続にわたって一様なTLP ACKタイムアウト値を採用する。しかしながら、PCIeプロトコルが、図1に示すように、リモートPCIeエンドポイント14をサポートするために拡張されるとき、PCIeプロトコルにおける一様なTLP ACKタイムアウト値は、PCIe接続16に関連する伝送遅延に対応するには短すぎるものになる。PCIe接続16に関連する伝送遅延に対応するために、一様なTLP ACKタイムアウト値が増やされる場合、結果としてチップ間相互接続スループットが悪化することになる。したがって、PCIeホスト33は、PCIe接続16および各チップ間相互接続のためにより大きいデータバッファを提供しなければならず、したがって、PCIeホスト33の費用および複雑性を増大させる。したがって、チップ間相互接続性能に影響を及ぼすことなく、TLP34とTLP ACK36との時間ずれを防止するために、PCIeホスト33がリモートPCIeエンドポイント14を検出し、PCIe接続16により長いTLP ACKタイムアウト値を適用することが望ましい。この点について、図3は、1つまたは複数のローカルPCIeエンドポイント44(1)〜44(M)から1つまたは複数のリモートPCIeエンドポイント42(1)〜42(N)を区別し、1つまたは複数のリモートPCIeエンドポイント42(1)〜42(N)により長いTLP ACKタイムアウト値を適用するように構成された例示的なPCIeホスト40の概略図である。
【００１９】
図3に関して、非限定的な例では、PCIeホスト40は、モバイル通信デバイス46に組み込まれる。PCIeホスト40は、PCIeリンクを制御するための手段と呼ばれることもあるPCIeリンクコントローラ48を備える。非限定的な例では、PCIeリンクコントローラ48は、ハードウェア要素として、またはハードウェア要素およびソフトウェア機能の組合せとして設けられてもよい。PCIeホスト40はまた、1つまたは複数のリモートPCIeエンドポイント42(1)〜42(N)および/または1つまたは複数のローカルPCIeエンドポイント44(1)〜44(M)に結合されるように構成された1つまたは複数の接続スロット50(1)〜50(X)(ここで、X≧M+N)を備える。1つまたは複数の接続スロット50(1)〜50(X)は、1つまたは複数のリモートPCIeエンドポイント42(1)〜42(N)をPCIeホスト40に通信可能に結合するための手段を提供する。PCIeリンクコントローラ48は、1つまたは複数の接続スロット50(1)〜50(X)に通信可能に結合される。PCIeリンクコントローラ48は、1つまたは複数の接続スロット50(1)〜50(X)の中からある接続スロットを介して、1つまたは複数のリモートPCIeエンドポイント42(1)〜42(N)、または1つまたは複数のローカルPCIeエンドポイント44(1)〜44(M)のうちにある、アタッチされたPCIeエンドポイントを検出するように構成される。
【００２０】
引き続き図3について、アタッチされたPCIeエンドポイント42、44を検出すると、PCIeリンクコントローラ48は、PCIeホスト40からアタッチされたPCIeエンドポイント42、44までの時間的距離を決定するようにさらに構成される。非限定的な例では、PCIeリンクコントローラ48は、PCIe列挙中にアタッチされたPCIeエンドポイント42、44にPCIeフロー制御パケットを送り、PCIeフロー制御パケットのラウンドトリップ時間を測定することによって時間的距離を決定する。別の非限定的な例では、PCIeリンクコントローラ48はまた、PCIe列挙中にアタッチされたPCIeエンドポイント42、44からソフトウェア起動情報を受信することによって、アタッチされたPCIeエンドポイント42、44までの時間的距離を決定してもよい。アタッチされたPCIeエンドポイント42、44までの時間的距離を決定した後、PCIeリンクコントローラ48は、時間的距離を所定のしきい値と比較する。時間的距離が所定のしきい値よりも大きい場合、アタッチされたPCIeエンドポイントは、限定的な例では、1つまたは複数のリモートPCIeエンドポイント42(1)〜42(N)のうちのあるリモートPCIeエンドポイント42である、第1のタイプのPCIeエンドポイントとして決定される。時間的距離が所定のしきい値以下である場合、アタッチされたPCIeエンドポイントは、非限定的な例では、1つまたは複数のローカルPCIeエンドポイント44(1)〜44(M)のうちのあるローカルPCIeエンドポイント44である、第2のタイプのPCIeエンドポイントとして決定される。
【００２１】
引き続き図3に関して、PCIeリンクコントローラ48はまた、第1のタイプのPCIeエンドポイント42のための第1の構成パラメータを定義するように構成される。非限定的な例では、第1の構成パラメータは、第1のタイプのPCIeエンドポイント42、または1つもしくは複数のリモートPCIeエンドポイント42(1)〜42(N)として決定される、アタッチされたPCIeエンドポイント42、44のための第1のタイムアウト値である。PCIeリンクコントローラ48は、第2のタイプのPCIeエンドポイント44のための、第1の構成パラメータとは異なる第2の構成パラメータを定義するようにさらに構成される。別の非限定的な例では、第2の構成パラメータは、第2のタイプのPCIeエンドポイント44、または1つもしくは複数のローカルPCIeエンドポイント44(1)〜44(M)として決定される、アタッチされたPCIeエンドポイント42、44のための、第1のタイムアウト値よりも短い第2のタイムアウト値である。
【００２２】
引き続き図3に関して、PCIeリンクコントローラ48は、リンク構成テーブル52に、第1の構成パラメータ(たとえば、第1のタイムアウト値)および第2のタイプの構成パラメータ(たとえば、第2のタイムアウト値)を記憶するようにさらに構成される。非限定的な例では、PCIeリンクコントローラ48は、第1のホストタイマー54(1)および第1のホストデータバッファ54(2)を備えたリモート送信制御要素54を備える。第1のホストデータバッファ54(2)は、第1のタイムアウト値に対応する第1のバッファサイズ(図示せず)を有する。PCIeリンクコントローラ48は、第1のホスト発信のTLP56をリモートPCIeエンドポイント42(1)に送信した直後に、リンク構成テーブル52に記憶された第1のタイムアウト値に従って、リモートPCIeエンドポイント42(1)に対応する第1のホストタイマー54(1)を開始する。PCIeリンクコントローラ48は、第1のホストタイマー54(1)が終わるときに、第1のエンドポイント発信のACK58がリモートPCIeエンドポイント42(1)から受信されない場合、第1のホスト発信のTLP56をリモートPCIeエンドポイント42(1)に再送するように構成される。別の非限定的な例では、PCIeリンクコントローラ48はまた、第2のホストタイマー60(1)および第2のホストデータバッファ60(2)を備えたローカル送信制御要素60を備える。第2のホストデータバッファ60(2)は、第1のタイムアウト値よりも短い第2のタイムアウト値に対応する、第1のバッファサイズよりも小さい第2のバッファサイズ(図示せず)を有する。PCIeリンクコントローラ48は、第2のホスト発信のTLP62をローカルPCIeエンドポイント44(1)に送信した直後に、リンク構成テーブル52に記憶された第2のタイムアウト値に従って、ローカルPCIeエンドポイント44(1)に対応する第2のホストタイマー60(1)を開始する。PCIeリンクコントローラ48は、第2のホストタイマー60(1)が終わるときに、第2のエンドポイント発信のACK64がローカルPCIeエンドポイント44(1)から受信されない場合、第2のホスト発信のTLP62をローカルPCIeエンドポイント44(1)に再送するように構成される。
【００２３】
引き続き図3に関して、PCIeリンクコントローラ48は、1つまたは複数のリモートPCIeエンドポイント42(1)〜42(N)に第1の構成パラメータ(たとえば、第1のタイムアウト値)を提供するように構成される。1つまたは複数のリモートPCIeエンドポイント42(1)〜42(N)は、それぞれ1つまたは複数のリモートエンドポイント構成テーブル66(1)〜66(N)に第1の構成パラメータを記憶するように構成される。PCIeリンクコントローラ48はまた、1つまたは複数のローカルPCIeエンドポイント44(1)〜44(M)に第2の構成パラメータ(たとえば、第2のタイムアウト値)を提供するように構成される。1つまたは複数のローカルPCIeエンドポイント44(1)〜44(M)は、それぞれ1つまたは複数のローカルエンドポイント構成テーブル68(1)〜68(M)に第2の構成パラメータを記憶するように構成される。非限定的な例では、リモートPCIeエンドポイント42(1)は、第1のエンドポイント発信のTLP72をPCIeリンクコントローラ48に送信した直後に、リモートエンドポイント構成テーブル66(1)に記憶された第1のタイムアウト値に従って第1のエンドポイントタイマー70(1)を開始する。リモートPCIeエンドポイント42(1)は、第1のエンドポイントタイマー70(1)が終わるときに、第1のホスト発信のACK74がPCIeリンクコントローラ48から受信されない場合、第1のエンドポイント発信のTLP72をPCIeリンクコントローラ48に再送するように構成される。別の非限定的な例では、ローカルPCIeエンドポイント44(1)は、第2のエンドポイント発信のTLP78をPCIeリンクコントローラ48に送信した直後に、ローカルエンドポイント構成テーブル68(1)に記憶された第2のタイムアウト値に従って第2のエンドポイントタイマー76(1)を開始する。ローカルPCIeエンドポイント44(1)は、第2のエンドポイントタイマー76(1)が終わるときに、第2のホスト発信のACK80がPCIeリンクコントローラ48から受信されない場合、第2のエンドポイント発信のTLP78をPCIeリンクコントローラ48に再送するように構成される。
【００２４】
引き続き図3を参照すると、1つまたは複数のリモートPCIeエンドポイント42(1)〜42(N)をより大きいタイムアウト値およびより大きいデータバッファと関連付けることによって、PCIeホスト40は、図2に関してすでに示したように、TLP34とTLP ACK36との時間ずれを効果的に防ぐことができる。さらに、1つまたは複数のローカルPCIeエンドポイント44(1)〜44(M)をより短いタイムアウト値およびより小さいデータバッファと関連付けることによって、PCIeホスト40は、モバイル通信デバイス12内部の高速チップ間相互接続を提供することができる。
【００２５】
図4は、図3における1つまたは複数のリモートPCIeエンドポイント42(1)〜42(N)の中のあるリモートPCIeエンドポイント42をサポートするための例示的なPCIeホストプロセス90のフローチャートである。図4に関して、図3の要素が参照されるが、本明細書では再び説明しない。
【００２６】
図4に関して、PCIeホストプロセス90は、1つまたは複数の接続スロット50(1)〜50(X)のうちの接続スロットにおいてPCIeリンクコントローラ48によって、アタッチされたPCIeエンドポイントを検出することを含む(ブロック92)。次に、PCIeリンクコントローラ48は、PCIeホスト40とアタッチされたPCIeエンドポイント42、44との間の時間的距離を決定する(ブロック94)。その後、PCIeリンクコントローラ48は、時間的距離を所定のしきい値と比較する(ブロック96)。時間的距離が所定のしきい値よりも大きい場合、PCIeリンクコントローラ48は、アタッチされたPCIeエンドポイント(たとえば、PCIeエンドポイント44)に対する第1のタイムアウト値を決定する(ブロック98)。時間的距離が所定のしきい値以下である場合、PCIeリンクコントローラ48は、第1のタイムアウト値よりも短い、アタッチされたPCIeエンドポイント(たとえば、PCIeエンドポイント42)に対する第2のタイムアウト値を決定する(ブロック100)。
【００２７】
本明細書で開示する態様によりリモートPCIeエンドポイント42(1)〜42(N)および44(1)〜44(N)をサポートするように適合されたPCIeホストは、任意のプロセッサベースのデバイスに設けられる、または組み込まれる場合がある。例としては、限定はしないが、セットトップボックス、エンターテインメントユニット、ナビゲーションデバイス、通信デバイス、固定ロケーションデータユニット、モバイルロケーションデータユニット、モバイルフォン、セルラーフォン、コンピュータ、ポータブルコンピュータ、デスクトップコンピュータ、携帯情報端末(PDA)、モニタ、コンピュータモニタ、テレビジョン、チューナ、ラジオ、衛星ラジオ、音楽プレーヤ、デジタル音楽プレーヤ、ポータブル音楽プレーヤ、デジタルビデオプレーヤ、ビデオプレーヤ、デジタルビデオディスク(DVD)プレーヤ、およびポータブルデジタルビデオプレーヤが含まれる。
【００２８】
この点について、図5は、図3に示すPCIeホスト40を用いることができるプロセッサベースのシステム102の一例を示す。この例では、プロセッサベースのシステム102は、各々が1つまたは複数のプロセッサ106を含む、1つまたは複数の中央処理ユニット(CPU)104を含む。CPU104は、一時的に記憶されたデータへの高速アクセスのためにプロセッサ106に結合されたキャッシュメモリ108を有する場合がある。CPU104は、システムバス110に結合される。よく知られているように、CPU104は、システムバス110を介してアドレス情報、制御情報、およびデータ情報を交換することによって、これらの他のデバイスと通信する。たとえば、CPU104は、バストランザクション要求をメモリコントローラ112に通信することができる。図5には示されていないが、複数のシステムバス110が設けられてもよく、各システムバス110が異なるファブリックを構成する。
【００２９】
非限定的な例では、図3のPCIeホスト40は、図5のCPU104に設けられる。システムバス110は、1つまたは複数の接続スロット50(1)〜50(X)(図5に図示せず)を備えるように構成される。他のデバイスは、1つまたは複数の接続スロット50(1)〜50(X)を介してシステムバス110に接続することができる。図5に示されているように、これらのデバイスは、例として、メモリシステム114、1つまたは複数の入力デバイス116、1つまたは複数の出力デバイス118、1つまたは複数のネットワークインターフェースデバイス120、および1つまたは複数のディスプレイコントローラ122を含むことができる。この点について、メモリシステム114、1つまたは複数の入力デバイス116、1つまたは複数の出力デバイス118、1つまたは複数のネットワークインターフェースデバイス120、および1つまたは複数のディスプレイコントローラ122は、図3の1つまたは複数のローカルPCIeエンドポイント44(1)〜44(M)の中に含まれる。入力デバイス116は、限定はしないが、入力キー、スイッチ、音声プロセッサなどを含む、任意のタイプの入力デバイスを含むことができる。出力デバイス118は、オーディオ、ビデオ、他の視覚的表示器などを含む、ただしこれらに限らない、任意のタイプの出力デバイスを含むことができる。ネットワークインターフェースデバイス120は、ネットワーク124への、またそこからのデータ交換を可能にするように構成された、任意のデバイスとすることができる。ネットワーク124は、限定はしないが、ワイヤードまたはワイヤレスネットワーク、プライベートまたは公衆ネットワーク、ローカルエリアネットワーク(LAN)、ワイヤレスローカルエリアネットワーク(WLAN)、BLUETOOTH(登録商標)ネットワーク、広域ネットワーク(WAN)、またはインターネットを含む任意のタイプのネットワークであることが可能である。ネットワークインターフェースデバイス120は、所望の任意のタイプの通信プロトコルをサポートするように構成することができる。メモリシステム114は、1つまたは複数のメモリユニット126(0〜N)を含むことができる。
【００３０】
また、CPU104は、1つまたは複数のディスプレイ128に送られる情報を制御するために、システムバス110を介してディスプレイコントローラ122にアクセスするように構成することができる。ディスプレイコントローラ122は、1つまたは複数のビデオプロセッサ130を介して表示される情報をディスプレイ128に送り、ビデオプロセッサ130は、表示される情報を、ディスプレイ128に適したフォーマットとなるように処理する。1つまたは複数のビデオプロセッサ130は、図3のPCIeホスト40として機能し、図3の1つまたは複数の接続スロット50(1)〜50(X)を介してディスプレイ128をサポートするように構成されてもよい。ディスプレイ128は、限定はしないが、陰極線管(CRT)、液晶ディスプレイ(LCD)、プラズマディスプレイなどを含む任意のタイプのディスプレイを含むことができる。
【００３１】
本明細書において開示される態様に関して説明される様々な例示的な論理ブロック、モジュール、回路、およびアルゴリズムは、電子ハードウェア、メモリもしくは別のコンピュータ可読媒体に記憶され、プロセッサもしくは他の処理デバイスによって実行される命令、またはその両方の組合せとして実現できることを、当業者はさらに諒解されよう。本明細書で説明するマスタデバイスおよびスレーブデバイスは、例として、任意の回路、ハードウェア構成要素、集積回路(IC)、またはICチップにおいて用いられてもよい。本明細書で開示するメモリは、任意のタイプおよびサイズのメモリであってもよく、所望の任意のタイプの情報を記憶するように構成されてもよい。この互換性について明確に説明するために、様々な例示的な構成要素、ブロック、モジュール、回路、およびステップについて、上記では概してそれらの機能に関して説明した。そのような機能がどのように実現されるかは、特定の適用例、設計上の選択、および/またはシステム全体に課された設計制約によって決まる。当業者は、説明された機能を特定の適用例ごとに様々な方法において実現できるが、そのような実施態様の決定は、本開示の範囲からの逸脱を引き起こすものと解釈されるべきではない。
【００３２】
本明細書において開示される態様に関して説明される様々な例示的な論理ブロック、モジュール、および回路は、プロセッサ、デジタル信号プロセッサ(DSP)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)もしくは他のプログラマブル論理デバイス、個別ゲートもしくはトランジスタロジック、個別ハードウェア構成要素、または本明細書において説明される機能を実行するように設計されるそれらの任意の組合せを用いて実現または実行することができる。プロセッサは、マイクロプロセッサであってもよいが、代替としてプロセッサは、任意の従来のプロセッサ、コントローラ、マイクロコントローラ、またはステートマシンであってもよい。プロセッサはまた、コンピューティングデバイスの組合せ、たとえば、DSPとマイクロプロセッサの組合せ、複数のマイクロプロセッサ、DSPコアと連携した1つもしくは複数のマイクロプロセッサ、または任意の他のそのような構成として実現される場合もある。
【００３３】
本明細書で開示する態様は、ハードウェアにおいて、および、ハードウェアに記憶された命令において具現化される場合があり、命令は、たとえば、ランダムアクセスメモリ(RAM)、フラッシュメモリ、読取り専用メモリ(ROM)、電気的プログラマブルROM(EPROM)、電気的消去可能プログラマブルROM(EEPROM)、レジスタ、ハードディスク、リムーバブルディスク、CD-ROM、または当技術分野において知られている任意の他の形態のコンピュータ可読媒体内に存在する場合がある。例示的な記憶媒体は、プロセッサが記憶媒体から情報を読み取り、記憶媒体に情報を書き込むことができるように、プロセッサに結合される。代替として、記憶媒体は、プロセッサに一体化される場合がある。プロセッサおよび記憶媒体は、ASICに存在する場合がある。ASICは、リモート局内に存在する場合がある。代替では、プロセッサおよび記憶媒体は、遠隔局、基地局、またはサーバ内に個別構成要素として存在してもよい。
【００３４】
本明細書の例示的な態様のいずれかに記載されている動作ステップは、例示および説明のために記載されていることにも留意されたい。説明される動作は、図示されるシーケンス以外の多数の異なるシーケンスにおいて実行される場合がある。さらに、単一の動作ステップにおいて説明される動作は、実際には複数の異なるステップにおいて実行される場合がある。さらに、例示的な態様において論じられる1つまたは複数の動作ステップが組み合わせられる場合がある。フローチャート図に示された動作ステップは、当業者には容易に明らかであるように、多くの異なる修正を受けることがあることを理解されたい。当業者はまた、情報および信号が様々な異なる技術および技法のいずれかを使用して表されてもよいことを理解するであろう。たとえば、上記の説明全体にわたって参照される場合があるデータ、命令、コマンド、情報、信号、ビット、シンボル、およびチップは、電圧、電流、電磁波、磁場もしくは磁性粒子、光場もしくは光学粒子、またはそれらの任意の組合せによって表され得る。
【００３５】
本開示の以上の説明は、いかなる当業者も本開示を作成または使用することが可能となるように提供される。本開示に対する様々な修正は、当業者には容易に明らかになり、本明細書で定義した一般原理は、本開示の趣旨または範囲から逸脱することなく他の変形形態に適用されてもよい。したがって、本開示は、本明細書に記載する例および設計に限定されるものではなく、本明細書で開示する原理および新規の特徴に合致する最も広い範囲を与えられるべきである。
【符号の説明】
【００３６】
10  リモートディスプレイシステム
12  モバイル通信デバイス
14  リモートディスプレイデバイス、リモートPCIeエンドポイント
16  PCIe接続
18  マルチメディアコンテンツソース
20  ネットワーク
22  ワイヤレス通信媒体
24  PCIe接続
30  PCIeリンクレベル信号フロー
32  バッファステータス更新
33  PCIeホスト
34  TLP
36  TLP ACK
38  TLP再送
40  PCIeホスト
42  PCIeエンドポイント
44  PCIeエンドポイント
46  モバイル通信デバイス
48  PCIeリンクコントローラ
50  接続スロット
52  リンク構成テーブル
54  ホストデータバッファ
56  TLP
58  ACK
60  ローカル送信制御要素
60(1)  ホストタイマー
60(2)  ホストデータバッファ
62  TLP
64  ACK
66  リモートエンドポイント構成テーブル
68  ローカルエンドポイント構成テーブル
70  エンドポイントタイマー
72  TLP
74  ACK
76  エンドポイントタイマー
78  TLP
80  ACK
102  プロセッサベースのシステム
104  中央処理ユニット(CPU)
106  プロセッサ
108  キャッシュメモリ
110  システムバス
112  メモリコントローラ
114  メモリシステム
116  入力デバイス
118  出力デバイス
120  ネットワークインターフェースデバイス
122  ディスプレイコントローラ
124  ネットワーク
126  メモリユニット
128  ディスプレイ
130  ビデオプロセッサ
【図１】
0006676057.tif 000002
【図２】
0006676057.tif 000003
【図３】
0006676057.tif 000004
【図４】
0006676057.tif 000005
【図５】
0006676057.tif 000006