(57)【要約】  データリクエストに関連するクロックカウンタに基づいて、タイムアウト信号を生成するためのシステムおよび方法が与えられる。インターフェースコンポーネントは、マスターデバイスからデータリクエストを受信し、かつ、スレーブデバイスへデータリクエストを送信するように構成されている。タイムアウトコンポーネントは、データリクエストに関連するクロックカウンタを保持し、かつ、スレーブデバイスからデータリクエストに関連するデータ応答を受信する前に、クロックカウンタに関連する閾値レベルに達したことの判定に応答して、タイムアウト信号を生成するように構成されている。
2018522357.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータ実行可能コンポーネントを格納するメモリと、
前記メモリに動作的に接続され、前記コンピュータ実行可能コンポーネントを実行するように構成されたプロセッサと、
を備え、
前記コンピュータ実行可能コンポーネントが、
マスターデバイスからデータリクエストを受信し、かつ、スレーブデバイスへ前記データリクエストを送信するように構成されたインターフェースコンポーネントと、
前記データリクエストに関連するクロックカウンタを保持し、かつ、前記スレーブデバイスから前記データリクエストに関連するデータ応答を受信する前に、前記クロックカウンタに関連する閾値レベルに達したことの判定に応答して、タイムアウト信号を生成するように構成されたタイムアウトコンポーネントと
を有することを特徴とするシステム。
【請求項２】
前記閾値レベルは、前記データリクエストの送信からの所定の時間間隔に対応し、前記インターフェースコンポーネントは、前記タイムアウトコンポーネントから前記タイムアウト信号を受信したことに応答して、前記マスターデバイスへプロキシデータ応答を送信するように構成される、ことを特徴とする請求項１に記載のシステム。
【請求項３】
前記インターフェースコンポーネントは、前記スレーブデバイスから前記データ応答を受信したこと、および、前記タイムアウトコンポーネントからタイムアウト信号を受信しなかったことに応答して、前記マスターデバイスへ前記データリクエストに関連する前記データ応答を送信するように構成される、ことを特徴とする請求項１に記載のシステム。
【請求項４】
前記インターフェースコンポーネントは、さらに、
前記タイムアウトコンポーネントからの前記タイムアウト信号の受信に応答して、前記スレーブデバイスに関連するひとつ以上の他のデータトランザクションを管理し、
前記データリクエストに関連するトランザクションＩＤを格納するようにさらに構成されている、ことを特徴とする請求項２に記載のシステム。
【請求項５】
タイムアウト信号が前記タイムアウトコンポーネントにより受信された後、前記スレーブデバイスに関するレジスタに関連するひとつ以上のデータトランザクションを送信するように構成されたレジスタコンポーネントをさらに備える、請求項１に記載のシステム。
【請求項６】
コンピュータ実行可能な方法であって、
コンピュータシステム内のマスターデバイスからデータリクエストを受信する工程と、
前記コンピュータシステム内のスレーブデバイスへ前記データリクエストを送信する工程と、
前記コンピュータシステム内で、前記データリクエストに関連するクロックカウンタを保持する工程と、
前記スレーブデバイスから前記データリクエストに関連するデータ応答を受信する前に、前記クロックカウンタに関連する閾値レベルに達したことの判定に応答して、前記コンピュータシステム内でタイムアウト信号を生成する工程と、
を備える方法。
【請求項７】
前記タイムアウト信号の生成に応答して、前記マスターデバイスにプロキシデータ応答を送信する工程と、
前記スレーブデバイスからのデータ応答の受信、および、前記タイムアウト信号を生成しないことに応答して、前記マスターデバイスへ、前記データリクエストに関連するデータ応答を送信する工程と
をさらに備える請求項６に記載の方法。
【請求項８】
前記タイムアウト信号の生成に応答して、前記スレーブデバイスに関連するひとつ以上の他のデータトランザクションを管理する工程と、
前記データリクエストに関連するトランザクションＩＤを格納する工程と
をさらに備える、請求項７に記載の方法。
【請求項９】
前記トランザクションＩＤを前記プロキシデータ応答に関連づける工程と、
前記プロキシデータ応答の送信に応答して、前記トランザクションＩＤに関連するエントリーを削除する工程と、
前記スレーブデバイスからの前記データリクエストに関連する前記データ応答の受信に応答して前記トランザクションＩＤに関連するエントリーを削除する工程と
をさらに備える請求項８に記載の方法。
【請求項１０】
前記タイムアウト信号を生成した後に、前記スレーブデバイスに関するレジスタに関連するひとつ以上のデータトランザクションを送信する工程をさらに備える請求項６に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、デバイス間でのデータトランザクションに関する。
【背景技術】
【０００２】
ネットワークシステムにおいて、多くのマスターデバイス（例えば、一次デバイス）は、バスを通じて、スレーブデバイス（例えば、二次デバイス）に接続可能である。例えば、マスターデバイスは、スレーブデバイスとデータトランザクションを開始することができる。また、マスターデバイスは、スレーブデバイス、および／または、スレーブデバイスに関連した処理を制御することができる。その場合、データトランザクションは、マスターデバイスとスレーブデバイスとの間で送信および／または受信される。ひとつの例において、特定のマスターデバイスが、スレーブデバイスにデータリクエストを送信することができる。その場合、スレーブデバイスは、データリクエストを受信したことに応答して、特定のマスターデバイスにデータ応答を送信することができる。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
しかし、ある例において、スレーブデバイスは、特定のマスターデバイスに応答データを送ることができない（例えば、デバイス故障等のため）。その場合、ネットワークのハングアップ（例えば、ネットワークフリーズ、システムバスハングアップ、システムバスフリーズ等）がネットワークシステムに発生する。
【課題を解決するための手段】
【０００４】
ひとつの態様において、システムは、インターフェースコンポーネントおよびタイムアウトコンポーネントを有する。インターフェースコンポーネントは、マスターデバイスからデータリクエストを受信し、かつ、スレーブデバイスへデータリクエストを送信するように構成されている。タイムアウトコンポーネントは、データリクエストに関連するクロックカウンタを保持するように構成されている。タイムアウトコンポーネントはまた、スレーブデバイスからのデータリクエストに関連するデータ応答を受信する前に、クロックカウンタに関連する閾値レベルに到達したか否かの判定に応答してタイムアウト信号を生成するように構成されている。
【０００５】
他の態様において、方法は、コンピュータシステム内のマスターデバイスからデータリクエストを受信する工程を有する。当該方法はまた、データリクエストをスレーブデバイスへ送信する工程を有する。当該方法はまた、コンピュータシステム内でデータリクエストに関連するクロックカウンタを保持する工程を有する。方法はまた、スレーブデバイスからのデータリクエストに関連するデータ応答を受信する前に、クロックカウンタに関連する閾値レベルに到達したか否かの判定に応答して、コンピュータシステム内でタイムアウト信号を生成する工程を有する。
【０００６】
他の態様において、システムは、マスターデバイスからデータリクエストを受信するための手段を有する。システムはまた、スレーブデバイスへデータリクエストを送信するための手段を有する。システムはまた、データリクエストに関連するクロックカウンタを保持するための手段を有する。システムはまた、スレーブデバイスからデータリクエストに関連するデータ応答を受信する前に、クロックカウンタに関連する閾値レベルに到達したか否かの判定に応答して、タイムアウト信号を生成するための手段を有する。
【図面の簡単な説明】
【０００７】
【図１】図１は、ネットワークシステムの実施形態のブロック図である。
【図２】図２は、ネットワークシステムの他の実施形態のブロック図である。
【図３】図３は、ネットワークシステムの他の実施形態のブロック図である。
【図４】図４は、ネットワークシステム内のスレーブシム相互接続を示すブロック図である。
【図５】図５は、スレーブシム相互接続に関連するデータトランザクション信号を示すブロック図である。
【図６】図６は、データリクエストに関連するクロックカウンタに基づいて、タイムアウト信号を生成するための方法の実施形態のフローチャートである。
【図７】図７は、スレーブシム相互接続に関連するデータトランザクションを実行するための方法の実施形態のフローチャートである。
【図８】図８は、スレーブシム相互接続内でデータトランザクションを実行するための方法の他の実施形態のフローチャートである。
【図９】図９は、スレーブシム相互接続内でデータトランザクションを実行するための方法の他の実施形態のフローチャートである。
【図１０】図１０は、データリクエストを処理するための方法の実施形態のフローチャートである。
【図１１】図１１は、データ応答を処理するための実施形態のフローチャートである。
【図１２】図１２は、エレクトロニックコンピューティング環境の例のブロック図である。
【図１３】図１３は、データ通信ネットワークの例のブロック図である。
【発明を実施するための形態】
【０００８】
本開示のさまざまな態様は、データトランザクションに関連するクロックカウンタに基づいて、データトランザクション（例えば、データリクエストおよび／またはデータ応答）用のタイムアウトメカニズムを容易にする。例えば、スレーブデバイスがひとつ以上のデータ応答を生成することができないとき（例えば、スレーブデバイスの故障により）、スレーブデバイスに代わって、ひとつ以上のデータ応答が生成される。ひとつの態様において、タイムアウトメカニズムは、スレーブデバイスがひとつ以上のデータ応答を生成することができないときに、スレーブデバイスの替わりにひとつ以上のデータ応答の生成を容易にするように実行されてよい。ひとつの例において、タイムアウトメカニズムは、クロックカウンタ（例えば、タイマー）に関連している。その場合、マスターデバイスによって生成された各データリクエストに対して、データ応答が保証させる。したがって、ネットワークのハングアップ（例えば、ネットワークフリーズ、システムバスハングアップ、システムバスフリーズ等）は回避される。したがって、ネットワークハングアップによるネットワークシステムのリセットは、避けられる。また、他のスレーブデバイスは、システムバスを通じて、データリクエストを受信し続けることができ、および／または、データ応答を送信し続けることができる。
【０００９】
図１は、システム１００の実施形態を示すブロック図である。システム１００は、スレーブシム相互接続１０２、少なくともひとつのマスターデバイス（例えば、一次デバイス）１０４およびスレーブデバイス（例えば、二次デバイス）１０６を有する。例えば、少なくともひとつのマスターデバイス１０４およびスレーブデバイス１０６は、バス（例えば、システムバス）１１２を介して接続されてよい。この場合、ひとつ以上のマスターデバイスがバス１１２を介してスレーブシム相互接続１０２と通信することができる。システム１００は、システム１００内で各スレーブシステムに対して、スレーブシム相互接続を有することができる（例えば、システム１００は、一つ以上のスレーブシム相互接続および／またはひとつ以上のスレーブデバイスを有することができる）。スレーブシム相互接続１０２は、少なくともインターフェースコンポーネント１０８およびタイムアウトコンポーネント１１０を有する。システム１００は、さまざまなシステムによって使用可能である。それは、例えば、これに限定されないが、サーバーシステム、高可用性サーバーシステム（例えば、テレコムサーバーシステム）、ウエブサーバーシステム、ファイルサーバーシステム、メディアサーバーシステム、ネットワークシステム、ＴＣＰネットワークシステム、インターネットネットワークシステム、データセンターシステム、通信システム、ルータシステム、ディスクアレイシステム、パワードインサーションボードシステム等を含む。
【００１０】
スレーブシム相互接続１０２は、スレーブデバイス１０６の相互接続レイヤーとして実装される。例えば、スレーブシム相互接続１０２は、スレーブデバイス１０６の第１インターフェース（例えば、バス側インターフェース）と、スレーブデバイス１０６の第２インターフェース（例えば、デバイス側インターフェース）との間で実装されてよい。他の態様において、スレーブシム相互接続１０２は、スレーブデバイス１０６から分離して実装可能である。例えば、スレーブシム相互接続１０２は、スレーブデバイス１０６に接続され、および／または、通信可能である。ひとつの態様において、マスターデバイス１０４は、中央処理装置として実装されてよい。しかし、マスターデバイス１０４は、異なるタイプのデバイスとして実装されてもよい。ある態様において、マスターデバイス１０４は、ネットワークデバイス（例えば、サーバーデバイス）であってよい。例えば、スレーブデバイス１０６は、ペリフェラルコンポーネントインターコネクト（ＰＣＩ）デバイスとして実装されてもよい。しかし、スレーブデバイス１０６は、異なるタイプのネットワークデバイスとして実装されてもよい。他の態様において、スレーブデバイス１０６は、ストレージデバイスであってよい。例えば、スレーブデバイスは、シリアル・アドバンスド・テクノロジー・アタッチメント（ＳＡＴＡ）デバイスとして実装されてよい。しかし、スレーブデバイス１０６は、異なるタイプのストレージデバイスとして実装されてもよい。
【００１１】
スレーブシム相互接続１０２（例えば、インターフェースコンポーネント１０８）は、マスターデバイス１０４から（例えば、バス１１２を介して）ひとつ以上のデータリクエストを受信するように構成されている。例えば、スレーブシム相互接続１０２（例えば、インターフェース１０８）は、マスターデバイス１０４からひとつ以上のリクエストを読み出すように構成されている。付加的に、スレーブシム相互接続１０２（例えば、インターフェースコンポーネント１０８）は、マスターデバイス１０４からひとつ以上の書き込みリクエストを受信するように構成されてよい。ひとつの態様において、ひとつ以上のデータリクエストは、アドバンスド・エクテンシブル・インターフェース（ＡＸＩ）データリクエストである。
【００１２】
また、スレーブシム相互接続１０２（例えば、インターフェースコンポーネント１０８）は、ひとつ以上のデータリクエスト（例えば、マスターデバイス１０４から受信したひとつ以上のデータリクエスト）をスレーブデバイス１０６へ送る（例えば、送信する）ように構成されてよい。ある態様において、スレーブシム相互接続１０２は、単一のデータリクエストを受信および／または送信（例えば、フォワード）することできる。他の態様において、スレーブシム相互接続１０２は、データリクエストの集合を受信および／または送信（例えば、フォワード）することができる。この場合、スレーブシム相互接続１０２は、マスターデバイス１０４とスレーブデバイス１０６との間でのデータ伝送用の相互接続デバイス（例えば、中間デバイス）である。
【００１３】
インターフェースコンポーネント１０８は、マスターデバイス１０４とスレーブデバイス１０６との間でのデータトランザクション（例えば、データリクエストおよび／またはデータ応答）をモニターするように構成されてよい。ある態様において、インターフェースコンポーネント１０８は、マスターデバイス１０４とスレーブデバイス１０６との間でのデータトランザクションを、タイムアウトコンポーネント１１０に関連するタイムアウトメカニズム（例えば、クロックカウンタ、タイマー等）の少なくとも一部に基づいて、モニターするように構成されてよい。例えば、タイムアウトコンポーネント１１０は、マスターデバイス１０４から受信され、および／または、スレーブシステム１０６へ送信（例えば、フォワード）されたデータリクエストに関連する少なくともひとつのクロックカウンタ（例えば、少なくともひとつのタイマー）を実装してよい。ある態様において、タイムアウトコンポーネント１１０は、インターフェースコンポーネント１０８によって受信された各データリクエストに対するクロックカウンタを実装してよい。タイムアウトコンポーネント１１０は、少なくともひとつのマスターデバイス１０４から受信したデータリクエストの総数に対応する複数のクロックカウンタを保持することができる。
【００１４】
したがって、ある態様において、インターフェースコンポーネント１０８は、マスターデバイス１０４からデータリクエストを受信し、および／または、スレーブデバイス１０６へデータリクエストを送信することができる。また、タイムアウトコンポーネント１１０は、データリクエストに関連するクロックカウンタを保持することができる。ある態様において、スレーブデバイス１０６からのデータリクエストに関連するデータ応答を受信する前に、クロックカウンタに関連する閾値レベルに到達した（例えば、タイマーが期限切れになった）ことの判定に応答して、タイムアウト信号（例えば、エラー応答信号）を生成する。閾値レベルは、スレーブデバイス１０６へデータリクエストを送信してからの所定の時間間隔に対応してよい。この場合、インターフェースコンポーネント１０８は、データリクエストに関連するエラー応答、および／または、タイムアウト信号を検出することができる。ある態様において、タイムアウトコンポーネント１１０によって実行されるクロックカウンタは、信号（例えば、周期的なチック信号）によってトリガーされる。例えば、タイムアウトコンポーネント１１０により実行されるクロックカウンタ（例えば、データリクエストに関連するタイムアウトフィールド）は、信号に基づいて、ひとつだけ（例えば、単一の値）増分される。ある態様において、閾値レベルは、１６進法値（例えば、０ｘＦＦ等）に関連する。しかし、閾値は異なるタイプの値に関連してもよい。したがって、タイムアウトコンポーネント１１０によって実行されるクロックカウンタ（例えば、データリクエストに関連するタイムアウトフィールド）は信号に基づいて、単一の１６進法値だけ増分される。
【００１５】
ある態様において、インターフェースコンポーネント１０８は、タイムアウトコンポーネント１１０に関連する少なくともひとつのクロックカウンタ（例えば、タイムアウトメカニズム）の関数としてマスターデバイス１０４へ、データリクエストに関連するプロキシデータ応答を送信するように構成される。例えば、インターフェースコンポーネント１０８は、タイムアウトコンポーネント１１０からのタイムアウト信号の受信に応答して（例えば、マスターデバイス１０４が、所定の時間間隔内にスレーブデバイス１０６からデータリクエストに関連するデータ応答を受信しなかったことの判定に応答して）マスターデバイス１０４へプロキシデータ応答を送信するように構成されてよい。インターフェースコンポーネント１０８は、マスターデバイス１０４が所定の時間間隔内にスレーブデバイス１０６からデータ応答（例えば、マスターデバイス１０４によって生成されるデータリクエストに関連するデータ応答）を受信しなかったことの判定に応答して、スレーブデバイス１０６の替わりにマスターデバイス１０４へプロキシデータ応答を送信する。ある態様において、所定の時間間隔は、プログラム可能および／または構成可能である。ひとつの例において、所定の時間間隔は、スレーブデバイス１０６に関連する情報に基づいて決定されてよい。所定の時間間隔は、データリクエストを生成するマスターデバイス１０４と関連する情報に基づいて決定される。所定の時間間隔は、データリクエストに関連する情報に基づいて決定されてよい。特定のデータリクエストに関連する所定の時間間隔は、異なるデータリクエストに関連する所定の時間間隔と異なってよい（例えば、所定の時間間隔は、各データリクエストに対して、ユニークに決定されてよい）。他の例において、所定の時間間隔は、ユーザ（例えば、ユーザ入力）によって決定および／または構成されてよい。したがって、タイムアウト値（例えば所定の時間間隔）が異なるスレーブインターフェースごとに変化可能であることで、より大きなフレキシビリティが与えられる。
【００１６】
また、インターフェースコンポーネント１０８および／またはタイムアウトコンポーネント１１０は、タイムアウトコンポーネントからのタイムアウト信号の受信に応答して、スレーブデバイス１０６に関連するひとつ以上のデータリクエスト（例えば、未来のデータリクエスト）を扱うように構成されてよい。例えば、インターフェースコンポーネント１０８は、マスターデバイス１０４から一つ以上の他のデータリクエストを受信し（例えば、最初のデータリクエストの後）、および／または、マスターデバイス１０４が所定の時間間隔内にスレーブデバイス１０６からデータリクエストに関連するデータ応答を受信しなかったことの判定に応答して、スレーブデバイス１０６に代わってマスターデバイス１０４へ一つ以上の他のデータ応答を送信する（例えば、プロキシデータ応答の後）。この場合、インターフェースコンポーネント１０８および／またはタイムアウトコンポーネント１１０は、プロキシデータ応答がマスターデバイス１０４に送信された後（例えば、データリクエストに関連するクロックカウンタが閾値に達したことに応答して、データリクエストに関連するタイマーが期限切れになったことに応答して、タイムアウト信号が生成されたことに応答して、など）、スレーブデバイス１０６に対する任意の切迫データリクエストおよび／またはデータ応答を取得（例えば、管理、制御等）することができる。ある態様において、データ応答および／またはプロキシデータ応答は、ＡＸＩデータ応答であってよい。他の態様において、インターフェースコンポーネント１０８は、順序ルールのセット（例えば、ＡＸＩ順序ルールのセット）に従ってデータ応答および／またはプロキシデータ応答を送信する。
【００１７】
ある態様において、インターフェースコンポーネント１０８は、スレーブデバイス１０６からデータ応答を受信したこと、および、タイムアウトコンポーネント１１０からタイムアウト信号を受信しなかったことに応答して、マスターデバイス１０４へデータリクエストに関連するデータ応答を送信する。例えば、データリクエストに関連するデータ応答が所定の時間間隔内（例えば、クロックカウンタが所定の閾値に達する前、タイマーが期限切れになる前、等）にスレーブデバイス１０６によって生成されれば、インターフェースコンポーネント１０８は、データ応答をマスターデバイス１０４に送信する。従って、インターフェースコンポーネント１０８は、プロキシデータ応答を生成および／または送信するかわりに、マスターデバイス１０４へデータ応答を送信することができる。
【００１８】
他の態様において、インターフェースコンポーネント１０８は、データリクエストに関連するトランザクション識別子（ＩＤ）を格納するように構成される。例えば、インターフェースコンポーネント１０８は、マスターデバイス１０４からのデータリクエストを受信することに応答して、および／または、スレーブデバイス１０６へデータリクエストを送信（例えば、フォワード）することに応答して、データリクエストに関連するトランザクションＩＤを格納することができる。インターフェースコンポーネント１０８は、トランザクションＩＤおよび／またはデータリクエストに関連する情報を格納するように構成されてよい。例えば、トランザクションＩＤおよび／またはデータリクエストに関連する情報は、タグ（例えば、入力／出力ブライドリクエストタブ）、データリクエストの長さに関連する情報、レジスタリクエストフラグ（例えば、データリクエストがレジスタリクエストであることを示すフラグ）、制御または状態レジスタリクエストフラグ（例えば、ＣＳＲリクエストタグ）、データリクエストに関連するタイムアウトカウント（例えば、データリクエストに関連するクロックカウンタ値）、トランザクションＩＤに関連する他のデータリクエストに関する情報、および／または、トランザクションＩＤおよび／またはデータリクエストに関連する他の情報を有する。
【００１９】
インターフェースコンポーネント１０８および／またはタイムアウトコンポーネント１１０は、特定のデータリクエストに関連するプロキシデータ応答および／またはデータ応答が、インターフェースコンポーネント１０８によって格納された対応するトランザクションＩＤ（例えば、データリクエストに関連する）に基づいて、マスターデバイス１０４に送信されたか否かを判定する。他の態様において、インターフェースコンポーネント１０８は、格納されたトランザクションＩＤを管理するように構成されてよい。ひとつの例において、インターフェースコンポーネント１０８は、スレーブデバイス１０６からのデータリクエストに関連するデータ応答を受信したことに応答してデータリクエストに関連するトランザクションＩＤを削除するように構成される。他の例において、インターフェースコンポーネント１０８は、データリクエストに関連するプロキシデータ応答の送信に応答してデータリクエストに関連するトランザクションＩＤを削除するように構成される。ある態様において、インターフェースコンポーネント１０８は、対応するデータ応答および／または対応するプロキシデータ応答へ、データリクエストに対するトランザクションＩＤを加えることができる。例えば、インターフェースコンポーネント１０８は、対応するデータ応答および／または対応するプロキシデータ応答（例えば、対応するデータ応答および／または対応するプロキシデータ応答は、データリクエストに対するトランザクションＩＤを有する）を有するデータリクエストに関連するトランザクションＩＤに関連するように構成される。
【００２０】
したがって、インターフェースコンポーネント１０８は、インターフェースコンポーネント１０８によって格納されおよび／または削除されたトランザクションＩＤの少なくとも一部に基づいて、データリクエストに関連するプロキシデータ応答を送信するか否かを判定することができる。ある態様において、タイムアウトコンポーネント１１０は、データリクエストに関連するクロックカウンタ（例えば、タイマー）を管理および／または更新するように構成される。例えば、タイムアウトコンポーネント１１０は、対応するデータ応答および／またはマスターデバイス１０４に送信される対応するプロキシデータに応答して、データリクエストに関連するクロックカウンタ（例えば、タイマー）を停止および／または削除（例えば、除去）する。
【００２１】
ある態様において、タイムアウトコンポーネント１１０は、スレーブデバイス１０６からの応答を受信しなかったトランザクションＩＤを周期的にスキャンする。したがって、ペンディングのデータリクエストに対する応答が所定の時間間隔内（例えば、所定のタイムウインドウ）で受信されなかったとき、タイムアウトコンポーネント１１０はタイムアウト信号を生成することができる。他の態様において、ペンディングのデータリクエストに対する応答が所定の時間間隔内（例えば、所定のタイムウインドウ）に受信されなかったとき、スレーブデバイス１０６に関連するインターフェースがディスエーブルとなる。
【００２２】
図２は、システム２００の実施形態を示すブロック図である。システム２００は、スレーブシム相互接続１０２、少なくともひとつのマスターデバイス１０４、および、スレーブデバイス１０６を有する。スレーブシム相互接続１０２は、少なくともインターフェースコンポーネント１０８およびタイムアウトコンポーネント１１０を有する。インターフェースコンポーネント１０８は、トランザクションＩＤコンポーネント２０２および／または順序コンポーネント２０４を有する。
【００２３】
トランザクションＩＤコンポーネント２０２は、データ構造（例えば、ストレージデバイス、データストア等）内で、マスターデバイス１０４によって受信される各データリクエストに対するトランザクションＩＤを保持（例えば、格納）することができる。例えば、トランザクションＩＤコンポーネント２０２は、ペンディングのデータリクエストに関連するトランザクションＩＤを保持（例えば、格納）することができる。ある態様において、トランザクションＩＤコンポーネント２０２は、先入れ先出し（ＦＩＦＯ）データ構造としておよび／またはそれに関連して実装される。他の態様において、トランザクションＩＤコンポーネント２０２は、コンテンツアドレス可能なメモリと関連づけられる。他の態様において、トランザクションＩＤコンポーネント２０２は、リンクしたリストデータ構造内で、各データリクエスト用のトランザクションＩＤを保持（例えば、格納）する。ひとつの例において、データ構造内に格納されるトランザクションＩＤは、単一のデータリクエストに関連づけられる。他の例において、データ構造内に格納されたトランザクションＩＤは、ひとつ以上のデータリクエストと関連づけられる。例えば、トランザクションＩＤ用のデータ構造内のエントリー（例えば、リンクしたリストデータ構造内のデータリスト用にエントリー）が処理すべきデータリクエストの順序に基づいて構成される。したがって、トランザクションＩＤコンポーネント２０２（例えば、トランザクションＩＤコンポーネント２０２内に、および／または、関連して実装されるリンクしたリストデータ構造）は、スレーブデバイス１０６と関連したペンディングのデータリクエストを追跡するように構成される。例えば、ペンディングのデータリクエストに対するデータ応答および／またはプロキシデータ応答は、ペンディングのデータリクエストがリンクしたリストデータ構造内（例えば、リンクしたリストデータ構造のデータリスト内）で処理されるべき次のデータリクエストであるとの判定の少なくとも一部に基づいて生成される。トランザクションＩＤコンポーネント２０２は、各トランザクションＩＤに関連するデータリクエストの管理（例えば、各トランザクションＩＤに関連するデータリクエストの順序、各トランザクションＩＤに関連するペンディングデータリクエストの追跡等）を容易にすることができる。
【００２４】
ある態様において、トランザクションＩＤコンポーネント２０２は、データリクエストの順序をサポートするひとつ以上のデータ構造を有し、および／または、関連づけられる。例えば、第１データ構造は、ペンディングデータリクエストに関連するトランザクションＩＤを格納し、第２データ構造は、第１データ構造のインデックス（例えば、各トランザクションＩＤに対するヒットまたはミス情報）を有し、第３データ構造はペンディングデータリクエストに関連する情報を格納し、第４データ構造は、次のペンディングデータリクエストに対する出力情報を格納し、第５データ構造は、トランザクションＩＤの各リンクしたリスト内のデータ応答を要求する次のデータリクエスト用の情報を格納し、第６データ構造はトランザクションＩＤの各リンクしたリスト内のデータ応答を要求する最後のデータリクエスト用の情報を格納し、第７データ構造は、各ペンディングデータリクエストに関連する情報を格納するためのバッファのアレイを有する、等である。
【００２５】
順序コンポーネント２０４は、受信したデータリクエストを管理するように構成される。順序コンポーネント２０４は、データ応答および／またはプロキシデータ応答の送信を管理するように構成される。一例において、順序コンポーネント２０４は、トランザクションＩＤコンポーネント２０２内に格納されたトランザクションＩＤの少なくとも一部に基づいて、データ応答および／またはプロキシデータ応答の送信を管理する。順序コンポーネント２０４は、タイムアウトコンポーネント１１０と関連するタイムアウト信号をモニターおよび／または受信するように構成される。例えば、順序コンポーネント２０４は、タイムアウトコンポーネント１１０によって生成されたタイムアウト信号に基づいて、データリクエストを受信および／または格納するように構成される。順序コンポーネント２０４は、タイムアウトコンポーネント１１０により生成されたタイムアウト信号に基づいて、データ応答および／またはプロキシデータ応答（例えば、特定のデータリクエストに対するデータ応答および／またはプロキシデータ応答を送信するか否かの判定）を生成する。
【００２６】
順序コンポーネント２０４は、格納されたトランザクションＩＤを管理するように構成される。ある態様において、順序コンポーネント２０４は、格納されたトランザクションＩＤを更新および／または削除する。例えば、順序コンポーネント２０４は、データリクエストに対するトランザクションＩＤを、対応するデータ応答に関連づける。他の例において、順序コンポーネント２０４は、データリクエストに対するトランザクションＩＤを、対応するプロキシデータ応答と関連づける。ある態様において、順序コンポーネント２０４は、データ応答および／またはプロキシデータ応答に関連することに応答して、トランザクションＩＤコンポーネント２０２と関連したトランザクションＩＤを削除する。順序コンポーネント２０４は、データトランザクション（例えば、トランザクションＩＤコンポーネント２０２に関連するデータリクエストおよび／またはデータ応答）と関連するトランザクションＩＤを管理する。
【００２７】
ある態様において、順序コンポーネント２０４は、第１トランザクションＩＤに関連するデータリクエストおよび／または第２トランザクションＩＤに関連するデータ応答を、クロックサイクルごとに処理することができる。例えば、各クロックサイクルの間に、順序コンポーネント２０４は、特定のトランザクションＩＤに関連するデータリクエストおよび／または異なるトランザクションＩＤに関連するデータ応答を処理することができる。他の態様において、特定のクロックサイクルの間のＩＤ衝突に応答して、順序コンポーネント２０４は、特定のトランザクションＩＤと関連するデータリクエストの前に、特定のトランザクションＩＤに関連するデータ応答を処理する。
【００２８】
図３は、システム３００の実施形態を示すブロック図である。システム３００は、スレーブシム相互接続１０２、少なくともひとつのマスターデバイス１０４およびスレーブデバイス１０６を有する。スレーブシム相互接続１０２は、少なくともインターフェースコンポーネント１０８、タイムアウトコンポーネント１１０およびスレーブ制御状態レジスタ（ＣＳＲ）コンポーネント３０２を有する。インターフェースコンポーネント１０８は、トランザクションＩＤコンポーネント２０２および／または順序コンポーネント２０４を有する。
【００２９】
スレーブＣＳＲコンポーネント３０２は、スレーブレジスタ３０４（例えば、スレーブデバイス１０６に関連する少なくともひとつのＣＳＲレジスタ）と関連するひとつ以上のデータリクエストを受信し、および／または、ひとつ以上のデータ応答を送信するように構成される。例えば、マスターデバイス１０４は、スレーブＣＲＳコンポーネント３０２によって受信されたひとつ以上のレジスタデータリクエストを生成することができる。付加的に、スレーブＣＳＲコンポーネント３０２はひとつ以上のレジスタデータリクエストをスレーブレジスタ３０４に送信（例えば、フォワード）する。付加的に、スレーブＣＳＲコンポーネント３０２は、スレーブレジスタ３０４から受信したひとつ以上のレジスタデータ応答を送信（例えば、フォワード）する。例えば、スレーブＣＳＲコンポーネント３０２は、ひとつ以上のレジスタデータ応答をマスターデバイス１０４へ送信（例えば、フォワード）する。
【００３０】
ある態様において、スレーブＣＳＲコンポーネント３０２は、マスターデバイス１０４が、所定の時間間隔内にレジスタ３０４からレジスタデータリクエストに関連するレジスタデータ応答を受信しなかったことの判定に応答して、マスターデバイス１０４へプロキシレジスタデータ応答を送信する。ある態様において、所定の時間間隔は、プログラム可能、および／または、構成可能である。一つの例において、所定の時間間隔の値は、スレーブデバイス１０６および／またはスレーブレジスタ３０４に関連する情報に基づいて、決定される。その場合、所定の時間間隔は、スレーブデバイス１０６および／またはスレーブレジスタ３０４の特定の実行に基づいて変更可能である。所定の時間間隔の値は、マスターデバイス１０４に関連する情報に基づいて決定可能である。特定のマスターデバイス１０４に対する所定の時間間隔は、他のマスターデバイス１０４に対する所定の時間間隔と異なってよい（例えば、レジスタデータリクエストに関連する所定の時間間隔が、ユニークに決定される）。ある態様において、レジスタデータリクエストに関連するクロックカウンタは、タイマーコンポーネント１１０および／またはスレーブＣＳＲコンポーネント３０２によって保持可能である。付加的に、タイマーコンポーネント１１０および／またはスレーブＣＳＲコンポーネント３０２は、レジスタデータリクエストに関連するレジスタデータ応答を受信する前に、クロックカウンタに関連する閾値レベルに到達したことの判定に応答してＣＳＲタイムアウト信号を生成することができる。スレーブＣＳＲコンポーネント３０２は、ＣＳＲタイムアウト信号を生成および／または受信することに応答して、マスターデバイス１０４へプロキシレジスタデータ応答を送信するように構成される。
【００３１】
ある態様において、スレーブＣＳＲコンポーネント３０２は、スレーブデバイス１０６に関連するタイムアウト信号がタイムアウトコンポーネント１１０から受信された後に、スレーブレジスタ３０４に関連する一つ以上のレジスタデータトランザクションを送信および／または受信することができる。この場合、スレーブレジスタ３０４に関連するレジスタデータトランザクションは、スレーブデバイス１０６が応答しないと判定された後に、継続することができる。
【００３２】
他の態様において、タイムアウトコンポーネント１１０によって実装されるクロックカウンタは、スレーブＣＳＲコンポーネント３０２および／またはスレーブレジスタ３０４によって生成される信号（例えば、周期的なチック信号）によってトリガーされる。例えば、タイムアウトコンポーネント１１０により実装されるクロックカウンタ（例えば、データリクエストに関連するタイムアウトフィールド）は、スレーブＣＳＲコンポーネント３０２および／またはスレーブレジスタ３０４により生成される信号に基づいて増分される。ある態様において、クロックカウンタに関連する閾値レベルは、１６進法値（例えば、０ｘＦＦ）に関連づけられる。しかし、閾値は、異なるタイプの値に関連づけられてよい。タイムアウトコンポーネント１１０によって実装されるクロックカウンタ（例えば、データリクエストに関連するタイムアウトフィールド）は、スレーブＣＳＲコンポーネント３０２および／またはスレーブレジスタ３０４により生成される信号に基づいて、単一の１６進法の値だけ増分される。他の態様において、スレーブＣＳＲコンポーネント３０２および／またはスレーブレジスタ３０４によって生成された信号は、各ペンディングデータリクエストに対するクロックカウンタによって実行される。例えば、各ペンディングのデータリクエストに対するクロックカウンタは、スレーブＣＳＲコンポーネント３０２および／またはスレーブレジスタ３０４によって生成された信号に基づいて更新される。
【００３３】
図４は、システム４００の実施形態のブロック図である。システム４００は、スレーブシム相互接続１０２、少なくともひとつのマスターデバイス１０４、スレーブデバイス１０６、スレーブインターフェース４０２、および、スレーブインターフェース４０４を有する。ある態様において、スレーブインターフェース４０２は、バス側のスレーブインターフェースとして実装可能である。他の態様において、スレーブインターフェース４０４は、デバイス側のスレーブインターフェースとして実装可能である。
【００３４】
スレーブインターフェース４０２は、少なくともひとつのマスターデバイス１０４とスレーブシム相互接続１０２との間で実装可能である。例えば、スレーブインターフェース４０２は、バス１１２を介して、少なくともひとつのマスターデバイス１０４からデータリクエストを受信し、および／または、少なくともひとつのマスターデバイス１０４へデータ応答を送信する。スレーブシム相互接続１０２は、スレーブインターフェース４０２とスレーブインターフェース４０４との間に実装可能である。スレーブインターフェース４０４は、スレーブシム相互接続１０２とスレーブデバイス１０６との間に実装可能である。ある態様において、スレーブインターフェース４０２および／またはスレーブインターフェース４０４はＡＸＩスレーブインターフェースであってよい。
【００３５】
ある態様において、スレーブインターフェース４０２および／またはスレーブインターフェース４０４は、出力データ応答が処理されている間に、入力データリクエストを受信および／または格納するように構成される。例えば、スレーブインターフェース４０２および／またはスレーブインターフェース４０４は、出力データ応答が処理されている間、入力データリクエストを受信および／または格納するべく、ひとつ以上のＦＩＦＯメモリを実装、および／または、関連づけられる。ひとつの例において、スレーブインターフェース４０２および／またはスレーブインターフェース４０４は、ひとつ以上のＦＩＦＯメモリが満杯であることに応答して、データフローコントロール（例えば、データリクエストおよび／またはデータ応答のフローコントロール）を実行する。他の態様において、スレーブインターフェース４０２および／またはスレーブインターフェース４０４は、入力データが処理されている間に、出力データ応答を受信および／または格納するように構成される。例えば、スレーブインターフェース４０２および／またはスレーブインターフェース４０４は、入力データリクエストが処理されている間、出力データ応答を受信および／または格納するためのＦＩＦＯメモリ（例えば、異なるＦＩＦＯメモリ）を実装および／または関連づけられる。ある態様において、スレーブインターフェース４０４は、生成されるスレーブデバイス１０６に関連するタイムアウト信号に応答してディスエーブルとなる。
【００３６】
図５は、システム５００の実施形態のブロック図である。システム５００は、スレーブシム相互接続１０２を有する。スレーブシム相互接続１０２は、少なくともインターフェースコンポーネント１０８、タイムアウトコンポーネント１１０およびスレーブＣＳＲコンポーネント３０２を有する。インターフェースコンポーネント１０８は、トランザクションＩＤコンポーネント２０２および／または順序コンポーネント２０４を有する。
【００３７】
スレーブシム相互接続１０２は、少なくともひとつのマスターデバイス１０４および／またはスレーブデバイス１０６と接続される。例えば、インターフェースコンポーネント１０８は、少なくともひとつのマスターデバイス１０４から、書き込み（ｗｒ）アドレスチャネル信号、書き込みデータチャネル信号および／または読み出し（ｒｄ）アドレスチャネル信号を受信する。インターフェースコンポーネント１０８は、書き込み応答チャネル信号および／または読み出しデータチャネル信号を、少なくともひとつのマスターデバイス１０４へ送信する。インターフェースコンポーネント１０８は、スレーブデバイス１０６へ、書き込みアドレスチャネル信号、書き込みデータチャネル信号および／または読み出しアドレスチャネル信号を送信する。インターフェースコンポーネント１０８は、スレーブデバイス１０６から、書き込み応答チャネル信号および／または読み出しデータ／応答チャネル信号を受信する。スレーブＣＳＲコンポーネント３０２は、ＣＳＲアドレス／制御信号、ＣＳＲ書き込みデータ信号および／またはマスターシム選択信号を送信することができる。スレーブＣＳＲコンポーネント３０２は、ＣＳＲ読み出しデータ信号および／またはＣＳＲアクナレッジ信号を受信する。タイムアウトコンポーネント１１０は、スレーブデバイスタイムアウト信号を生成する。スレーブＣＳＲコンポーネント３０２は、スレーブＣＳＲタイムアウト信号を生成することができる。
【００３８】
ある態様において、信号は、バス側のスレーブインターフェース５０２（例えば、スレーブインターフェース４０２）を介して少なくともひとつのマスターデバイス１０４から受信され、および／または、バス側スレーブインターフェース５０２（例えば、スレーブインターフェース４０２）を介して少なくともひとつのマスターデバイス１０４へ送信される。他の態様において、信号は、デバイス側のスレーブインターフェース５０４（例えば、インターフェース４０４）を介してスレーブデバイス１０６から受信され、および／または、デバイス側のスレーブインターフェース（例えば、インターフェース４０４）を介してスレーブデバイス１０６へ送信される。他の態様において、信号は、ＣＳＲスレーブインターフェース５０６を介してスレーブレジスタ３０２から受信され、および／または、ＣＳＲスレーブインターフェース５０６を介してスレーブレジスタ３０２に送信される。インターフェースコンポーネント１０８は、バス側のスレーブインターフェース５０２および／またはデバイス側のスレーブインターフェース５０４に関連するデータトランザクション（例えば、信号）を管理するように構成される。また、以下で詳細に説明するように、スレーブＣＳＲコンポーネント３０２は、ＣＳＲインターフェース５０６に関連するレジスタデータトランザクション（例えば、信号）を管理するように構成される。
【００３９】
上述した主題に従い、実行される方法は、図６から１１に示すフローチャートを参照してより良く理解可能である。説明を単純化するために、ここに示す方法は、連続のブロックとして説明されるが、クレームされる発明の主題は、ブロックの順序によって限定されず、いくつかのブロックは、異なる順序で実行されてもよく、および／または、図示されるものと異なる他のブロックが一緒に実行されてよいことに注意すべきである。また、図示するブロックのすべてが、ここで設計する方法を実行するのに要求されない。
【００４０】
図６は、データリクエストに関連するクロックカウンタに基づくタイムアウト信号を生成するための方法の実施形態のフローチャートである。方法６００は、ブロック６０２で開始され、そこで、データリクエストはマスターデバイス（例えば、インターフェースコンポーネント１０８によって）から受信される。ひとつの例において、書き込みリクエストが、マスターデバイスから受信される。他の例において、読み出しリクエストが例えば、マスターデバイスから受信される。ある態様において、データリクエストは、マスターデバイスから単一のデータリクエストとして受信される。他の態様において、データリクエストは、マスターデバイスから受信されたデータリクエストの集合内に含まれる。
【００４１】
ブロック６０４において、データリクエストは、スレーブデバイスへ送信される（例えば、インターフェースコンポーネント１０８により）。例えば、マスターデバイスにより受信されたデータリクエストは、スレーブデバイスへ送信される。
【００４２】
ブロック６０６において、データリクエストに関連するクロックカウンタが保持される（例えば、タイムアウトコンポーネント１１０により）。例えば、マスターデバイスからデータリクエストを受信したことおよび／またはスレーブデバイスにデータリクエストを送信したことに応答して、データリクエストに関連するクロックカウンタ（例えば、タイマー）が生成され、構成され、および／または、保持される。
【００４３】
ブロック６０８において、スレーブデバイスからデータリクエストに関連するデータ応答を受信する前に、クロックカウンタに関連する閾値レベルに到達したことの判定に基づいて、タイムアウト信号が生成される（例えば、タイムアウトコンポーネント１１０により）。例えば、タイムアウト信号は、データリクエストがスレーブデバイスへ送信されてから所定の時間経過したこと（例えば、所定の時間間隔の間スレーブデバイスからデータ応答を受信しないこと）の判定に応答して生成される。
【００４４】
図７は、スレーブシム相互接続に関して、データトランザクションを実行するための方法の実施形態のフローチャートである。方法７００はブロック７０２で開始され、そこでは、データリクエストがマスターデバイスから受信される（例えば、インターフェースコンポーネント１０８により）。ブロック７０４において、データリクエストは、スレーブデバイスへ送信される（例えば、インターフェースコンポーネント１０８によって）。ブロック７０６において、データリクエストに関連するクロックカウンタが保持される（例えば、タイムアウトコンポーネント１１０により）。
【００４５】
ブロック７０８において、クロックカウンタに関連する閾値レベルに到達したことの判定に応答して、マスターデバイスへ送信される（例えば、インターフェースコンポーネント１０８により）。例えば、プロキシデータ応答は、データリクエストがスレーブデバイスに送信されてから所定の時間経過したことの判定に応答して、マスターデバイスへ送信される。ある態様において、プロキシデータ応答は、データリクエストに関連するタイムアウト信号を受信したこと（例えば、データリクエストに関連するタイムアウト信号が生成されたこと）に応答してマスターデバイスに送信される。
【００４６】
ブロック７１０において、クロックカウンタに関連する閾値レベルに到達するために、スレーブデバイスからデータ応答を受信したことに応答して、マスターデバイスへデータ応答が送信される（例えば、インターフェースコンポーネント１０８により）。例えば、スレーブデバイスにより生成されるデータ応答は、所定の時間間隔内にデータ応答を受信したことに応答して、マスターデバイスへ送信される、ある態様において、スレーブデバイスにより生成されるデータ応答は、データリクエストに関連するタイムアウト信号が生成および／または受信されなかったことの判定に応答して、マスターデバイスへ送信される。
【００４７】
図８は、スレーブシム相互接続内でデータトランザクションを実行するための方法の他の実施形態のフローチャートである。方法８００は、ブロック８０２で開始され、そこで、データリクエストは、マスターデバイスから受信される（例えば、スレーブシム相互接続１０２により）。ブロック８０４において、データリクエストがスレーブデバイスに送信される（スレーブシム相互接続１０２により）。ブロック８０６において、データリクエストをスレーブデバイスに送ってから所定の時間が経過しなかったことの判定およびスレーブデバイスからデータ応答を受信したことに応答して、データリクエストに関連するデータ応答が、マスターデバイスへ送信される（例えば、スレーブシム相互接続１０２により）。例えば、データリクエストに関連するクロックカウンタが所定の閾値に達する前、および／または、データリクエストに関連するタイムアウト信号が生成される前に、スレーブデバイスからデータ応答を受信したことに応答して、データリクエストに関連するデータ応答がマスターデバイスに送信される。ブロック８０８において、スレーブデバイスへデータリクエストを送信してから所定の時間経過し、および、データリクエストに関連するデータ応答がスレーブデバイスから受信されないことの判定に応答して、データリクエストに関連するプロキシデータ応答が、マスターデバイスへ送信される（例えば、スレーブシム相互接続１０２により）。例えば、データリクエストに関連するクロックカウンタが所定の閾値に達する前、および／または、データリクエストに関連するタイムアウト信号が生成される前に、スレーブデバイスからデータ応答を受信しなかったことに応答して、データリクエストに関連するプロキシデータ応答がマスターデバイスへ送信される。
【００４８】
図９は、スレーブシム相互接続において、データトランザクションを実行するための方法の他の実施形態のフローチャートである。方法９００は、ブロック９０２で開始され、そこで、データリクエストが受信される（例えば、インターフェースコンポーネント１０８により）。例えば、データリクエストは、マスターデバイスから受信される。ひとつの例において、書き込みリクエストが、マスターデバイスから受信される。他の例において、読み出しリクエストがマスターデバイスから受信される。ある態様において、データリクエストは、マスターデバイスからの単一のデータリクエストとして受信される。他の態様において、データリクエストは、マスターデバイスから受信されるデータリクエストの集合内に含まれてよい。
【００４９】
ブロック９０４において、データリクエストに関連するトランザクションＩＤエントリーが格納される（例えば、インターフェースコンポーネント１０８および／またはトランザクションＩＤコンポーネント２０２により）。例えば、データリクエストに関連するトランザクションＩＤエントリーが、リンクしたリストデータ構造内に格納される。ある態様において、リンクしたリストデータ構造は、少なくともひとつのＦＩＦＯメモリに関連づけられる。
【００５０】
ブロック９０６において、データリクエストは、デバイスに送信される（例えば、インターフェースコンポーネント１０８により）。例えば、データリクエストは、スレーブデバイスへ送信される。
【００５１】
ブロック９０８において、データリクエストを送信してから所定の時間経過したか否かが判定される（例えば、タイムアウトコンポーネント１１０により）。例えば、データリクエストに関連するクロックカウンタが所定の閾値レベルに達したか否か（例えば、データリクエストの送信に応答して開始される）の判定がなされる。
【００５２】
もし、「いいえ」であれば、方法は、ブロック９１０に進む。もし「はい」であれば、方法９００は、ブロック９１６に進む。ブロック９１０において、データ応答が受信されたか否かが判定される（例えば、インターフェースコンポーネント１０８および／または順序コンポーネント２０４により）。例えば、データリクエストに関連するデータ応答がデバイス（例えば、スレーブデバイス）から受信されたか否かの判定が為される。もし「はい」ならば、方法９００は、ブロック９１２に進む。もし「いいえ」ならば、方法は、ブロック９０８に戻る。ブロック９１２において、データ応答が送信される（例えば、インターフェースコンポーネント１０８および／または順序コンポーネント２０４により）。例えば、デバイス（例えば、スレーブデバイス）から受信したデータ応答は、他のデバイス（例えば、マスターデバイス）に送信される。ブロック９１４において、トランザクションＩＤエントリーが、削除される（例えば、インターフェースコンポーネント１０８および／または順序コンポーネント２０４により）。例えば、データリクエストに関連するトランザクションＩＤエントリーが削除される。ひとつの例において、リンクしたリストデータ構造が、データリクエストに関連するデータ応答の送信を構成するように更新される。ブロック９１４の後に、方法は終了する。
【００５３】
ブロック９１６において、データリクエストに関連するプロキシデータ応答が送信される（例えば、インターフェースコンポーネント１０８および／または順序コンポーネント２０４により）。例えば、プロキシデータ応答は、デバイス（例えば、スレーブデバイス）の替わりに送信される。
【００５４】
ブロック９１８において、トランザクションＩＤエントリーが、削除される（例えば、インターフェースコンポーネント１０８および／または順序コンポーネント２０４により）。例えば、データリクエストに関連するトランザクションＩＤエントリーが削除される。ひとつの例において、リンクしたリストのデータ構造が、データリクエストに関連するプロキシデータ応答の送信を構成するよう更新される。
【００５５】
ブロック９２０において、他のデータリクエストが管理され、および／または、他のプロキシデータ応答がデバイスの替わりに送信される（例えば、インターフェースコンポーネント１０８および／または順序コンポーネント２０４により）。例えば、プロキシデータ応答は、デバイス（例えば、スレーブデバイス）に関連する将来のデータリクエストのために、他のデバイス（例えば、一つ以上のマスターデバイス）へ送信される。
【００５６】
図１０は、データリクエストを処理するための方法の実施形態のフローチャートである。方法１０００は、ブロック１００２で開始され、そこで、データリクエストが受信される（例えば、スレーブシム相互接続１０２により）。例えば、データリクエストは、マスターデバイスから受信される。
【００５７】
ブロック１００４において、トランザクションＩＤがデータリクエストから抽出される（例えば、スレーブシム相互接続１０２により）。例えば、データリクエストに関連するトランザクションＩＤが決定される。
【００５８】
ブロック１００６において、データストレージは、トランザクションＩＤに基づいて割り当てられる（例えば、スレーブシム相互接続１０２により）。ひとつの例において、データストレージは、リンクしたリストデータ構造に関連づけられる。他の例において、データストレージは、ＦＩＦＯメモリに関連づけられる。
【００５９】
ブロック１００８において、トランザクションＩＤに関連するデータトランザクションが応答を待っているか否かが判定される（例えば、スレーブシム相互接続１０２により）。例えば、トランザクションＩＤ（例えば、トランザクションＩＤに関連するエントリー）が、先行するデータリクエストに対してデータストレージ内にすでに格納されているか否かの判定が為される。
【００６０】
もし「いいえ」なら、方法１０００は、ブロック１０１０に進む。ブロック１０１０において、データ構造は、新しいトランザクションＩＤに対してフォーマットされる（例えば、スレーブシム相互接続１０２により）。例えば、データ構造は、トランザクションＩＤが新しいトランザクションＩＤであること（例えば、すでにデータストレージ内に格納されたトランザクションＩＤではないこと）を与えるようにフォーマットされる。ブロック１０１２において、データリクエストおよび／またはトランザクションＩＤに関連する情報は、トランザクションＩＤ用のデータ構造内の初期エントリーに格納される。例えば、デーリクエストおよび／またはとＩＤに関連する情報は、トランザクションＩＤに関連する新しいデータリスト（例えば、リンクしたリストのデータ構造の新しいデータリスト）用の初期エントリーに格納される。ブロック１０１２の後、方法１０００は終了する。
【００６１】
もし「はい」なら、方法１０００は、ブロック１０１４に進む。ブロック１０１４において、データ構造のフォーマットが、トランザクションＩＤに関連するデータリクエストを構成するように更新される（例えば、スレーブシム相互接続１０２により）。例えば、データリクエストが、トランザクションＩＤに関連する他のデータリクエスト（例えば、すでにデータストレージ内に格納されたトランザクションＩＤと関連する他のデータリクエスト）と関連づけられるように、リンクしたリストデータ構造用のエントリー（例えば、トランザクションＩＤに関連するエントリー）が更新される。ある態様において、トランザクションＩＤに関連するデータリクエストを処理する順序は、データリクエストを構成するよう更新される。ブロック１０１６において、データリクエストおよび／またはトランザクションＩＤに関連する情報がデータ構造内に格納される（例えば、スレーブシム相互接続１０２により）。例えば、データリクエストおよび／またはトランザクションＩＤに関連する情報は、トランザクションＩＤに関連するデータリスト（例えば、リンクしたリストデータ構造のデータリスト）用の新しいエントリーに格納される。ブロック１０１６の後、方法１０００は終了する。
【００６２】
図１１は、データ応答を処理するための方法のフローチャートである。方法１１００は、ブロック１１０２で開始され、そこで、データ応答が受信される（例えば、スレーブシム相互接続１０２により）。例において、データ応答は、スレーブデバイスから受信される。他の例において、データ応答は、スレーブシム相互接続により生成されるプロキシデータ応答である。
【００６３】
ブロック１１０４において、トランザクションＩＤがデータ応答から抽出される（例えば、スレーブシム相互接続１０２により）。例えば、データ応答に関連するトランザクションＩＤが決定される。
【００６４】
ブロック１１０６において、トランザクションＩＤがデータ構造内に格納されているか否かが決定される（例えば、スレーブシム相互接続１０２により）。例えば、トランザクションＩＤに関連するデータリクエスト用のエントリーがデータ構造内に格納されているか否か（例えば、トランザクションＩＤに関連するデータリクエストが受信されたか否か）が決定される。
【００６５】
もし「いいえ」ならば、方法１１００は、ブロック１１０８に進む。ブロック１１０８において、エラーメッセージが生成され、および／または、エラー情報が決定される（例えば、スレーブシム相互接続１０２により）。例えば、データ応答に関連するエラーメッセージが生成され、および／または、データ応答に関連するエラー情報が決定される。ブロック１１０８の後、方法１１００は終了する。
【００６６】
もし「はい」ならば、方法１１００はブロック１１１０に進む。ブロック１１１０において、トランザクションＩＤおよび／またはトランザクションＩＤに関連する情報が、データ構造から取得される（例えば、スレーブシム相互接続１０２により）。例えば、トランザクションＩＤ用のエントリーがデータ構造内で発見される。また、トランザクションＩＤに関連する情報および／またはデータ応答に関連するデータリクエストが取得される。
【００６７】
ブロック１１１２において、トランザクションＩＤが単一のデータリクエストに関連しているか否かが決定される（スレーブシム相互接続１０２により）。例えば、トランザクションＩＤ用のひとつのみのエントリーがデータ構造内に格納されているか否かが決定される。
【００６８】
もし「いいえ」なら、方法１１００はブロック１１１４に進む。ブロック１１１４において、トランザクションＩＤに関連する情報が、データ構造内で更新される（例えば、スレーブシム相互接続１０２により）。例えば、トランザクションＩＤに関連するデータリスト（例えば、リンクしたリスト構造内のデータリスト）内のエントリーが消去される。ブロック１１１４の後、方法１１００はブロック１１１８へ進む。
【００６９】
もし「はい」なら、方法１１００はブロック１１１６へ進む。ブロック１１１６において、トランザクションＩＤに関連する情報がデータ構造から除去される（例えば、スレーブシム相互接続１０２により）。例えば、トランザクションＩＤに関連するデータリスト（例えば、リンクしたリスト構造内のデータリスト）が消去される。ブロック１１１６の後、方法１１００はブロック１１１８に進む。ブロック１１１８において、トランザクションＩＤに関連する情報は、データ応答内に挿入される（例えば、スレーブシム相互接続１０２により）。例えば、トランザクションＩＤおよび／またはトランザクションＩＤに関連する他の情報は、データ応答に付加される。
【００７０】
ブロック１１２０において、データ応答が送信される（例えば、スレーブシム相互接続１０２により）。例えば、データ応答は、データ応答に関連するデータリクエストを送信したマスターデバイスへ送られる。
【００７１】
ここに開示された技術は、データリクエストに関連するクロックカウンタに基づきタイムアウト信号を生成することが所望される任意のデバイスに応用可能である。ハンドヘルド、ポータブル、および、他のコンピュータデバイスならびにすべての種類のコンピュータオブジェクトが、さまざまな実施形態に関して、すなわち、データリクエストに関連するクロックカウンタに基づきタイムアウト信号を生成することを所望するデバイスがある任意の場所で使用可能である。したがって、図１２で説明する汎用遠隔コンピュータは一例に過ぎず、ここに開示する発明の主題は、ネットワーク／バスの相互運用および相互作用を有する任意のクライアントによって実行可能である。
【００７２】
図１２は、発明の主題のいくつかの態様が実行されるところのコンピュータシステム環境１２００の例を示す。コンピュータシステム環境１２００は、デバイス用の適切なコンピュータ環境の一例に過ぎず、開示する発明の主題の使用または機能の態様に関して制限を加えるものではない。
【００７３】
図１２は、開示する発明の主題を実行するための例示的デバイスであり、それは、コンピュータ１２１０の形式の汎用コンピュータデバイスを含む。コンピュータ１２１０のコンポーネントは、処理ユニット１２２０、システムメモリ１２３０、および、システムメモリを含むさまざまなシステムコンポーネントを処理ユニット１２２０に接続するシステムバス１２２１を有する。
【００７４】
コンピュータ１２１０は、さまざまなコンピュータ読み取り可能媒体を有する。例として、コンピュータ読み取り可能媒体は、コンピュータストレージ媒体および通信媒体を有する。システムメモリ１２３０は、揮発性および／または不揮発性メモリの形式でのコンピュータストレージ媒体を有してよい。
【００７５】
図１３は、ネットワークまたは分散型のコンピュータ環境の例示的概略図である。分散コンピュータ環境は、コンピュータオブジェクト１３１０、１３１２等、および、コンピュータオブジェクトまたはデバイス１３２０、１３２２、１３２４、１３２６等を有する。それらは、アプリケーション１３３０、１３３２、１３３４、１３３６、１３３８により表されるような、プログラム、方法、データストア、プログラマブルロジック等およびデータストア１３４０を有する。
【００７６】
通信ネットワーク１３４２またはバスがインターネットであるネットワーク環境において、コンピュータオブジェクト１３１０、１３１２等は、それにより他のコンピュータオブジェクトまたはデバイス１３２０、１３２２、１３２４、１３２６、１３２８等がハイパーテキストトランスファープロトコル（ＨＴＴＰ）のような多くの既知の任意のプロトコルを通じて通信するウエブサーバーであってよい。
【００７７】
開示した主題は、方法、装置、または、典型的な製造方法を使って製造した物、ハードウエアを製造するためのプログラミングまたはエンジニアリング技術、ファームウエア、ソフトウエア、または、開示した主題を実行するために電気的デバイスを制御するためのそれらの適当な組みあわせとして実行可能である。コンピュータ読み取り可能媒体は、ハードウエア媒体、ソフトウエア媒体、非一過性媒体、または、輸送媒体を含む。
【図１】
2018522357.tif 000003
【図２】
2018522357.tif 000004
【図３】
2018522357.tif 000005
【図４】
2018522357.tif 000006
【図５】
2018522357.tif 000007
【図６】
2018522357.tif 000008
【図７】
2018522357.tif 000009
【図８】
2018522357.tif 000010
【図９】
2018522357.tif 000011
【図１０】
2018522357.tif 000012
【図１１】
2018522357.tif 000013
【図１２】
2018522357.tif 000014
【図１３】
2018522357.tif 000015
【国際調査報告】
2018522357.tif 000016
2018522357.tif 000017