(57)【特許請求の範囲】
【請求項１】
複数のマスターデバイスと、複数のスレーブデバイスとを接続するための、少なくとも1つのバスを含むバス相互接続回路であって、
前記バス相互接続回路に接続された前記複数のマスターデバイスの各々に前記バス相互接続回路を介して前記スレーブデバイスと通信されるバストランザクションによって提供されたサービスの通信品質であるサービス品質と、帯域幅およびレイテンシのうち少なくとも1つを含む前記複数のマスターデバイスの前記各々のサービス品質要件との比較に基づいて、前記サービス品質要件が前記バス相互接続回路によって満たされているかどうかを表すいくつかの指標から構成される前記複数のマスターデバイスのヘルス情報を決定し、
前記マスターデバイス間の相対的優先度を割り当てるために使用されるクラスに従って構成された前記複数のマスターデバイスの各々の前記バストランザクションを、前記ヘルス情報に基づいて仮想優先度テーブルにマッピングし、
前記仮想優先度テーブルにマッピングされた前記ヘルス情報を前記相対的優先度に基づいて前記複数のマスターデバイスの各々のバストランザクション要求をアービトレーションするために使用される物理的な優先度レベルに変換し、
前記複数のマスターデバイスの各々の前記物理的な優先度レベルに基づいて前記複数のマスターデバイスからの前記バストランザクション要求をアービトレーションする
ように構成されたバス相互接続回路。
【請求項２】
前記物理的な優先度レベルは、前記ヘルス情報を使用して前記サービス品質要件を満たすことを試みるように調整される、請求項1に記載のバス相互接続回路。
【請求項３】
前記物理的な優先度レベルに基づいて前記バストランザクション要求をアービトレーションするように構成される、前記バス相互接続回路内の前記バス内に備えられた少なくとも1つのアービタをさらに含む請求項1に記載のバス相互接続回路。
【請求項４】
前記マスターデバイスクラスが、前記相対的優先度に応じて、ハードリアルタイムクラス、低レイテンシクラス、ソフトリアルタイムクラス、およびベストエフォートクラスのうちの1つに分類される、請求項1に記載のバス相互接続回路。
【請求項５】
前記複数のマスターデバイスの中の少なくとも1つのマスターデバイスから前記ヘルス情報を受信するように構成される請求項1に記載のバス相互接続回路。
【請求項６】
前記複数のマスターデバイスの中の少なくとも1つのマスターデバイスの前記ヘルス情報が、前記マスターデバイスの複数のクライアントによって生成されるトランザクションの前記ヘルス情報を個々に設定するための複数のヘルス情報セグメントから構成され、前記ヘルス情報セグメントのそれぞれは、前記少なくとも1つのマスターデバイスに対応するシステムメモリ管理ユニットによって管理されるアドレスに関連付けられる、請求項1に記載のバス相互接続回路。
【請求項７】
前記複数のマスターデバイスのうちの少なくとも1つのマスターポートを監視することによって前記ヘルス情報を導出するように構成された少なくとも1つのヘルス情報導出要素をさらに含む請求項1に記載のバス相互接続回路。
【請求項８】
前記少なくとも1つのヘルス情報導出要素が、所与の期間当たりの許可されたトランザクション数の割合に基づいて、前記複数のマスターデバイスのうちの前記少なくとも1つの前記ヘルス情報を導出するように構成される、請求項7に記載のバス相互接続回路。
【請求項９】
前記少なくとも1つのヘルス情報導出要素が、所与の期間当たりの許可されたトランザクション数の割合の移動平均に基づいて、前記複数のマスターデバイスのうちの前記少なくとも1つの前記ヘルス情報を導出するように構成される、請求項7に記載のバス相互接続回路。
【請求項１０】
前記少なくとも1つのヘルス情報導出要素のクロック信号の周波数が、前記バス相互接続回路のクロック信号の周波数と無関係に制御される、請求項7に記載のバス相互接続回路。
【請求項１１】
前記少なくとも1つのアービタが、ラウンドロビンアービトレーション優先度ポリシー、前記ヘルス情報に基づくコマンドの並べ替えを伴うラウンドロビンアービトレーション優先度ポリシー、および固定のアービトレーション優先度ポリシーからなる群から選択される少なくとも1つのアービトレーション優先度ポリシーに基づいて前記バストランザクション要求をアービトレーションするように構成される請求項3に記載のバス相互接続回路。
【請求項１２】
前記少なくとも1つのアービタが、前記複数のマスターデバイスのそれぞれにバスが割り当てられたときに使用された優先度の頻度を監視するように構成された優先度使用モニタをさらに含む請求項3に記載のバス相互接続回路。
【請求項１３】
前記優先度使用モニタが、前記使用された優先度の頻度に従って前記バストランザクション要求をアービトレーションするために、前記バス相互接続回路のクロック周波数の変更に基づく能力要件を決定するように構成される、請求項12に記載のバス相互接続回路。
【請求項１４】
前記能力要件が前記バストランザクション要求をアービトレーションするために利用可能な能力に関連する閾値未満である場合、バス相互接続回路のクロック信号の周波数を低減するように構成される請求項13に記載のバス相互接続回路。
【請求項１５】
前記能力要件が前記バストランザクション要求をアービトレーションするために利用可能な能力に関連する閾値を上回る場合、バス相互接続回路のクロック信号の周波数を増加させるように構成される請求項13に記載のバス相互接続回路。
【請求項１６】
前記バス相互接続回路が半導体ダイに集積化される、請求項1に記載のバス相互接続回路。
【請求項１７】
前記バス相互接続回路が集積化される半導体ダイを含むデバイスが、セットトップボックス、娯楽機器、ナビゲーションデバイス、通信デバイス、固定ロケーションデータユニット、モバイルロケーションデータユニット、モバイルフォン、セルラーフォン、コンピュータ、ポータブルコンピュータ、デスクトップコンピュータ、携帯情報端末(PDA)、モニタ、コンピュータモニタ、テレビ、チューナ、ラジオ、衛星ラジオ、音楽プレーヤ、デジタル音楽プレーヤ、ポータブル音楽プレーヤ、デジタルビデオプレーヤ、ビデオプレーヤ、デジタルビデオディスク(DVD)プレーヤ、およびポータブルデジタルビデオプレーヤのうち、少なくとも1つを含む、請求項1に記載のバス相互接続回路。
【請求項１８】
複数のマスターデバイスと、複数のスレーブデバイスとを接続するための、少なくとも1つのバスを含むバス相互接続回路であって、
前記バス相互接続回路に接続された前記複数のマスターデバイスの各々に前記バス相互接続回路を介して前記スレーブデバイスと通信されるバストランザクションによって提供されたサービスの通信品質であるサービス品質と、帯域幅およびレイテンシのうち少なくとも1つを含む前記複数のマスターデバイスの前記各々のサービス品質要件との比較に基づいて、前記サービス品質要件が前記バス相互接続回路によって満たされているかどうかを表すいくつかの指標から構成される前記複数のマスターデバイスのヘルス情報を決定するための手段と、
前記マスターデバイス間の相対的優先度を割り当てるために使用されるクラスに従って構成された前記複数のマスターデバイスの各々の前記バストランザクションを、前記ヘルス情報に基づいて仮想優先度テーブルにマッピングするための手段と、
前記仮想優先度テーブルにマッピングされた前記ヘルス情報を前記相対的優先度に基づいて前記複数のマスターデバイスの各々のバストランザクション要求をアービトレーションするために使用される物理的な優先度レベルに変換するための手段と、
前記複数のマスターデバイスの各々の前記物理的な優先度レベルに基づいて前記複数のマスターデバイスからの前記バストランザクション要求をアービトレーションするための手段と
を含むバス相互接続回路。
【請求項１９】
複数のマスターデバイスと、複数のスレーブデバイスとを接続するための、少なくとも1つのバスを含むバス相互接続回路におけるバストランザクション要求をアービトレーションする方法であって、
前記バス相互接続回路に接続された前記複数のマスターデバイスの各々に前記バス相互接続回路を介して前記スレーブデバイスと通信されるバストランザクションによって提供されたサービスの通信品質であるサービス品質と、帯域幅およびレイテンシのうち少なくとも1つを含む前記複数のマスターデバイスの前記各々のサービス品質要件との比較に基づいて、前記サービス品質要件が前記バス相互接続回路によって満たされているかどうかを表すいくつかの指標から構成される前記複数のマスターデバイスのヘルス情報を決定するステップと、
前記マスターデバイス間の相対的優先度を割り当てるために使用されるクラスに従って構成された前記複数のマスターデバイスの各々の前記バストランザクションを、前記ヘルス情報に基づいて仮想優先度テーブルにマッピングするステップと、
前記仮想優先度テーブルにマッピングされた前記ヘルス情報を前記相対的優先度に基づいて前記複数のマスターデバイスの各々のバストランザクション要求をアービトレーションするために使用される物理的な優先度レベルに変換するステップと、
前記複数のマスターデバイスの各々の前記物理的な優先度レベルに基づいて前記複数のマスターデバイスからの前記バストランザクション要求をアービトレーションするステップと
を含む方法。
【請求項２０】
複数のマスターデバイスと、複数のスレーブデバイスとを接続するための、少なくとも1つのバスを含むバス相互接続回路に、
前記バス相互接続回路に接続された前記複数のマスターデバイスの各々に前記バス相互接続回路を介して前記スレーブデバイスと通信されるバストランザクションによって提供されたサービスの通信品質であるサービス品質と、帯域幅およびレイテンシのうち少なくとも1つを含む前記複数のマスターデバイスの前記各々のサービス品質要件との比較に基づいて、前記サービス品質要件が前記バス相互接続回路によって満たされているかどうかを表すいくつかの指標から構成される前記複数のマスターデバイスのヘルス情報を決定させ、
前記マスターデバイス間の相対的優先度を割り当てるために使用されるクラスに従って構成された前記複数のマスターデバイスの各々の前記バストランザクションを、前記ヘルス情報に基づいて仮想優先度テーブルにマッピングさせ、
前記仮想優先度テーブルにマッピングされた前記ヘルス情報を前記相対的優先度に基づいて前記複数のマスターデバイスの各々のバストランザクション要求をアービトレーションするために使用される物理的な優先度レベルに変換させ、
前記複数のマスターデバイスの各々の前記物理的な優先度レベルに基づいて前記複数のマスターデバイスからの前記バストランザクション要求をアービトレーションさせる
ためのコンピュータ実行可能命令を記録するコンピュータ可読記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
優先権主張
本出願は、その全体が参照により本明細書に組み込まれる、2010年10月20日に出願された「ARBITRATING BUS TRANSACTIONS on a communications bus BASED ON bus device HEALTH INFORMATION and related power management」という名称の米国仮特許出願第61/405,111号の優先権を主張する。
【０００２】
本出願は、その全体が参照により本明細書に組み込まれる、2010年10月21日に出願された「ARBITRATING BUS TRANSACTIONS on a communications bus BASED ON bus device HEALTH INFORMATION and related power management」という名称の米国仮特許出願第61/405,233号の優先権も主張する。
証拠
【０００３】
本明細書に証拠として添付された18ページを含む証拠Aは、非限定的な例を提供し、その全体が参照により本開示に組み込まれ、本開示の一部を形成する。
【０００４】
本開示の技術は、一般に、プロセッサベースのシステムにおける通信バス上のバストランザクションのアービトレーション、および通信バスの電力管理に関する。
【背景技術】
【０００５】
現代のデジタルシステムおよびプロセッサベースの設計は、一般的に、通信バスを使用する。通信バスは、マスターデバイスとして働くデバイスまたは周辺機器が、スレーブデバイスとして働く受信側の周辺機器またはデバイスに通信を送るのを円滑にするように構成される。たとえば、マスターデバイスがスレーブデバイスに読取り要求を送ることを望む場合、マスターデバイスは、通信バス上でアドレスおよび読取りコマンドを含む制御情報を提供する。通信バスは、制御情報に従って通信バスに結合された適切なスレーブデバイスにコマンドを向ける。さらに、通信バスに結合されたマスターデバイスおよびスレーブデバイスが通信バスとともにシングルチップ上に設けられて、システムオンチップ(SOC)を提供することができる。SOCは、シングルチップで複数の特徴および用途を提供することができる複数のサブシステムの統合のために、特にポータブル電子デバイスに有用である。
【０００６】
通信バスに結合されたスレーブデバイスにマスターデバイスからのバストランザクションを向けるまたはアービトレーションするために、アービタを通信バスに設けることができる。バスのアービトレーションは、たとえば、バストランザクションの衝突を防止することができる。たとえば、通信バスに結合された、コンピュータ処理ユニット(CPU)、デジタル信号プロセッサ(DSP)、および直接メモリアクセス(DMA)コントローラを含むシステムはすべて、同じく通信バスに結合された共有メモリシステムにアクセスすることができる。アービタは、マスターデバイスからの競合する要求間にバスリソースが割り振られるように、これらのデバイスから共有メモリシステムへのメモリアクセス要求をアービトレーションする。
【発明の概要】
【発明が解決しようとする課題】
【０００７】
しかしながら、アービタは、他のマスターデバイスによる他の要求のレイテンシの許容できない増加を引き起こす、通信バス上の1つのマスターデバイスからの要求を処理するルーティングリソースを消費することのないように構成されることが望まれる。
【課題を解決するための手段】
【０００８】
発明を実施するための形態で開示する実施形態は、バスデバイスのヘルス情報に基づいて通信バス上のバストランザクションをアービトレーションし、通信バスの電力管理を提供するためのデバイス、システム、方法、およびコンピュータ可読媒体を含む。このようにして、マスターデバイスのサービス品質要件を満たすことを試みるためにマスターデバイスからのバストランザクションの優先度を調整するために、マスターデバイスのヘルス情報がバス相互接続によって使用される。例として、ヘルス情報がマスターデバイスのサービス品質要件を上回ることを示すとき、サービス品質要件を満たすことによって、システムの頑強さを向上させ、レイテンシの短縮によって性能を向上させ、および/または消費電力を低減することができる。
【０００９】
さらに、マスターデバイスのヘルス情報に基づいてバストランザクションをアービトレーションすることによって、動的なバスアービトレーション方式を提供するために、優先度をバストランザクションに動的に割り当てることができる。さらに、マスターデバイスのヘルス情報は、マスターデバイスのバストランザクションをアービトレーションするために使用される物理的な優先度に変換される前に、まず、そのクラスタイプに基づいて仮想優先度空間(virtual priority space)にマッピングされ得る。このようにして、すべてのマスターデバイスの優先度スケールの「最上位獲得競争」を回避するために、構成されたクラスタイプに基づいてマスターデバイスが利用可能な最大優先度に制約を設けることができる。また、これによって、アービタは、マスターデバイスの相対的な重要度に基づいて、異なるマスターデバイス間にバストランザクションのためのバス相互接続の能力を割り振ることができる。
【００１０】
この点について一実施形態では、通信バスは、複数のマスターデバイスのいずれかからバス相互接続に結合されたスレーブデバイスにバストランザクションを通信するように構成されたバス相互接続である。バス相互接続は、複数のマスターデバイスのヘルス情報を決定するように構成される。バス相互接続は、複数のマスターデバイスの各々のヘルス情報を仮想優先度空間にマッピングするように、さらに構成される。バス相互接続は、仮想優先度空間を複数のマスターデバイスの各々の物理的な優先度レベルに変換するように、さらに構成される。バス相互接続は、複数のマスターデバイスの物理的な優先度レベルに基づいて複数のマスターデバイスのバストランザクションをアービトレーションするように、さらに構成される。
【００１１】
別の実施形態では、バス相互接続が提供される。バス相互接続は、複数のマスターデバイスのヘルス情報を決定するための手段を含む。バス相互接続は、複数のマスターデバイスの各々のヘルス情報を仮想優先度空間にマッピングするための手段も含む。バス相互接続は、仮想優先度空間を複数のマスターデバイスの各々の物理的な優先度レベルに変換するための手段も含む。バス相互接続は、複数のマスターデバイスの物理的な優先度レベルに基づいて複数のマスターデバイスのバストランザクションをアービトレーションするための手段も含む。
【００１２】
別の実施形態では、バス相互接続におけるバストランザクションをアービトレーションする方法が提供される。方法は、複数のマスターデバイスのヘルス情報を決定するステップを含む。方法は、複数のマスターデバイスの各々のヘルス情報を仮想優先度空間にマッピングするステップも含む。方法は、仮想優先度空間を複数のマスターデバイスの各々の物理的な優先度レベルに変換するステップも含む。方法は、複数のマスターデバイスの物理的な優先度レベルに基づいて複数のマスターデバイスのバストランザクションをアービトレーションするステップも含む。
【００１３】
別の実施形態では、コンピュータ実行可能命令を記憶したコンピュータ可読媒体が提供される。バス相互接続に、複数のマスターデバイスのヘルス情報を決定させ、複数のマスターデバイスの各々のヘルス情報を仮想優先度空間にマッピングさせ、仮想優先度空間を複数のマスターデバイスの各々の物理的な優先度レベルに変換させ、複数のマスターデバイスの物理的な優先度レベルに基づいて複数のマスターデバイスのバストランザクションをアービトレーションさせるためのコンピュータ実行可能命令が提供される。
【００１４】
別の実施形態では、ブックキーピング要素(book keeping element)が提供される。ブックキーピング要素は、マスターデバイスのサービス契約を決定するように構成される。ブックキーピング要素は、サービス契約をサービス閾値と比較するようにも構成される。ブックキーピング要素は、サービス契約に対するサービス特性の比較に基づいてマスターデバイスに関するヘルス情報を符号化するようにも構成される。非限定的な例として、サービス契約は、固定帯域幅契約、平均レイテンシ契約、可変帯域幅契約、または動的契約を含み得る。
【図面の簡単な説明】
【００１５】
【図１】マスターデバイスに関するヘルス情報に基づいてバス相互接続に結合された複数のマスターデバイスのうちの任意のものとバス相互接続に結合されたスレーブデバイスとの間のバストランザクションをアービトレーションし、ルーティングするように構成されたバス相互接続およびアービタを含む例示的なバス相互接続システムを示すブロック図である。
【図２】図1のバス相互接続におけるマスターデバイス間の相対的優先度を割り当てるために使用され得る例示的なマスターデバイスクラスを示すブロック図である。
【図３】図1のバス相互接続システムにあり得る仮想優先度空間に対するヘルス情報の例示的なマッピングを示すブロック図である。
【図４Ａ】図1のバス相互接続に対してマスターデバイスのヘルス状況に基づいてヘルス情報を提供するように構成された例示的なマスターデバイスを示すブロック図である。
【図４Ｂ】複数のクライアントからのヘルス情報をアグリゲートし、図1のバス相互接続に対してアグリゲートされたヘルス情報を提供するように構成された例示的なマスターデバイスを示すブロック図である。
【図５】図1のバス相互接続におけるマスターポートのサービスレベルを導出するための図1におけるブックキーピング要素(BKE)で使用され得る例示的なクレジット/デビットオプションを示す図である。
【図６Ａ】図1のバス相互接続におけるマスターポートのサービスレベルを導出するための図1におけるBKEで使用され得る例示的な平均化オプションを示す図である。
【図６Ｂ】図1のバス相互接続におけるマスターポートのサービスレベルを導出するための図1におけるBKEで使用され得る例示的な平均化オプションを示す図である。
【図７】マスターデバイスに関するヘルス情報に基づいてマスターデバイスのバストランザクションをアービトレーションするためのアービタによって使用される優先度を示す概念図である。
【図８】図1のバス相互接続に設けることができる例示的な優先度アクティビティの監視を示すブロック図である。
【図９】マスターデバイスに関するヘルス情報に基づいて図1のバス相互接続におけるバストランザクションをアービトレーションし、ルーティングするための例示的なソフトウェアアーキテクチャを示すブロック図である。
【図１０】図1のバス相互接続を含み得る例示的なプロセッサベースのシステムを示すブロック図である。
【発明を実施するための形態】
【００１６】
ここで図面を参照して、本開示のいくつかの例示的な実施形態が説明される。「例示的な」という言葉は、「一例、実例または例として」を意味するために本明細書で使用される。「例示的」として本明細書で説明する任意の実施形態は、必ずしも他の実施形態よりも好ましいまたは有利であると解釈されるべきではない。
【００１７】
発明を実施するための形態で開示する実施形態は、バスデバイスのヘルス情報に基づいて通信バス上のバストランザクションをアービトレーションし、通信バスの電力管理を提供するためのデバイス、システム、方法、およびコンピュータ可読媒体を含む。このようにして、一例として、マスターデバイスのサービス品質要件を満たすことを試みるためにマスターデバイスからのバストランザクションの優先度を調整するために、マスターデバイスのヘルス情報がバス相互接続によって使用される。例として、ヘルス情報がマスターデバイスのサービス品質要件を上回ることを示すとき、サービス品質要件を満たすことによって、システムの頑強さを向上させ、レイテンシの短縮によって性能を向上させ、および/または消費電力を低減することができる。
【００１８】
さらに、たとえば、マスターデバイスのヘルス情報に基づいてバストランザクションをアービトレーションすることによって、動的なバスアービトレーション方式を提供するために、優先度をバストランザクションに動的に割り当てることができる。さらに、マスターデバイスのヘルス情報は、マスターデバイスのバストランザクションをアービトレーションするために使用される物理的な優先度に変換される前に、まず、そのクラスタイプに基づいて仮想優先度空間にマッピングされ得る。このようにして、一例として、すべてのマスターデバイスの優先度スケールの「最上位獲得競争」を回避するために、構成されたクラスタイプに基づいてマスターデバイスが利用可能な最大優先度に制約を設けることができる。また、これによって、アービタは、マスターデバイスの相対的な重要度に基づいて、異なるマスターデバイス間にバストランザクションのためのバス相互接続の能力を割り振ることができる。
【００１９】
この点について、図1は、「バス相互接続12」と呼ばれる通信バスに結合された複数のマスターデバイス14(0〜M)のうちの任意のものとバス相互接続12に結合されたスレーブデバイス16(0〜N)との間のバストランザクションをアービトレーションし、ルーティングするように構成されたバス相互接続12を含む例示的なバス相互接続システム10のブロック図である。例として、バス相互接続12は、ソフトウェア命令を実行することができる、フィールドプログラム可能ゲートアレイ(FPGA)、特定用途向け集積回路(ASIC)、コントローラ、マイクロコントローラもしくはマイクロプロセッサ、またはそれらのどの組合せによっても提供され得る。バス相互接続12は、所望のマスターデバイス14(0〜M)と所望のスレーブデバイス16(0〜N)との間に通信経路を確立するように構成可能である、例としてゲート、ラッチ、およびレジスタなどのクロック制御された回路を含む。スレーブデバイス16(0〜N)は、マスターデバイス14(0〜M)との共有リソースでもよい。バス相互接続12に設けられているクロック制御された回路をクロック制御するために、バス相互接続クロック信号18が設けられる。
【００２０】
バス相互接続12は、バス相互接続12に接続されたマスターデバイス14(0〜M)の1つまたは複数を、バス相互接続12に結合されたスレーブデバイス16(0〜N)のいずれかと通信させるように構成可能である。一例として、バス相互接続12は、半導体ダイ20内に設けることができ、所望される場合、システムオンチップ(SOC)集積回路設計において設けることができる。マスターデバイス14(0〜M)およびスレーブデバイス16(0〜N)は、それぞれ、この例ではバス相互接続12に設けられているマスターポート22(0〜M)およびスレーブポート24(0〜N)を介してバス相互接続12に接続されている。マスターデバイス14(0〜M)からスレーブデバイス16(0〜N)への複数のバストランザクション要求をアービトレーションするように構成された1つまたは複数のアービタ26(0〜P)がバス相互接続12に設けられている。
【００２１】
マスターデバイス14(0〜M)およびスレーブデバイス16(0〜N)は、所望の任意のタイプの電子デバイスまたはサブシステムとすることができる。たとえば、マスターデバイス14(0〜M)は、限定はしないが、中央処理装置(CPU)、デジタル信号プロセッサ(DSP)、ディスプレイプロセッサ、および直接メモリアクセス(DMA)コントローラを含む、任意のタイプの電子デバイスとすることができる。スレーブデバイス16(0〜N)の一例は、メモリコントローラ16(N)である。メモリコントローラ16(N)は、バス相互接続12に接続されて、マスターデバイス14(0〜M)のいずれもが、メモリコントローラ16(N)に結合されたメモリ28に読取りおよび書込みメモリアクセス要求を与え、読取りおよび書込み応答を受け取ることが可能になる。
【００２２】
図1のバス相互接続12は、マスターデバイス14(0〜M)に関するヘルス情報に基づいてマスターデバイス14(0〜M)の各々のバストランザクションをアービトレーションするように構成される。マスターデバイス14(0〜M)のヘルス情報は、バス相互接続12によってマスターデバイス14(0〜M)に提供されるサービス品質を表すいくつかの指標から構成される。たとえば、マスターデバイス14(0〜M)は各々、いくつかのサービス品質要件を有し得る。サービス品質要件の一例は、帯域幅要件であり得る。サービス品質の別の例は、レイテンシ要件であり得る。マスターデバイス14(0〜M)のヘルス情報は、この実施形態では、サービス品質要件を上回るとき、限定はしないが、システムの頑強さ、レイテンシの短縮による性能の向上、および/または消費電力の低減を含めて、マスターデバイス14(0〜M)のサービス品質要件を満たすことを試みるためにマスターデバイス14(0〜M)からのバストランザクションの優先度を調整するために、バス相互接続12によって使用される。さらに、この実施形態では、バストランザクションをアービトレーションするように構成されたバス相互接続12に設けられた方法および構成要素は、バス相互接続12の実際のバス技術ならびにバス相互接続クロック信号18の周波数およびそのスケーリングとは無関係に設けることができる。
【００２３】
引き続き図1を参照すると、マスターデバイス14(0〜M)は各々、バス相互接続12に結合されたスレーブデバイス16(0〜N)のサービスを要求するいくつかの機能を提供するために、いくつかのマスターデバイスソフトウェアドライバ30(0〜M)およびマスターデバイスハードウェア32(0〜M)を含み得る。マスターデバイス14(0〜M)は、バス相互接続12を介してスレーブデバイス16(0〜N)に通信されるバストランザクションを介してこれらのサービスを要求する。これらのバストランザクションは、例として、バス相互接続クロック信号18の周波数ならびにバス相互接続12のスループットおよびレイテンシなど、バス相互接続12のコアに固有の要因に依存する特定のレベルの性能を必要とする。この点について、マスターデバイス14(0〜M)は、ハードウェアまたはソフトウェアの機構のいずれかを介して、それらのヘルス状況を追跡するように構成され得る。たとえば、ヘルス状況は、マスターデバイス14(0〜M)のバストランザクションの最終期限、マスターデバイス14(0〜M)に割り振られた帯域幅、および/またはマスターデバイス14(0〜M)のレイテンシ要件がバス相互接続12によって満たされているかどうかに基づき得る。
【００２４】
この点について、図1のマスターデバイスソフトウェアドライバ30(0〜M)およびマスターデバイスハードウェア32(0〜M)は、それら自体のヘルス状況を追跡し、次にマスターデバイス14(0〜M)のヘルス状況を追跡するように構成することができる。マスターデバイス14(0〜M)の追跡されたヘルス状況は、バス相互接続12およびバス相互接続システム10の性能を向上させるために、複数のマスターデバイス14(0〜M)間でバストランザクションをアービトレーションするために使用されるヘルス情報として、マスターデバイス14(0〜M)によってバス相互接続12に提供することができる。これらの向上は、限定はしないが、帯域幅に関して十分な能力を提供することによる頑強さの向上、レイテンシの短縮による性能の向上、および/または消費電力の低減を含む。また、ヘルス情報を使用して、バス相互接続12におけるコマンドの並べ替えをサポートする、および/または、たとえばメモリコントローラ16(N)における、コマンドの優先度ベースのキューイングをサポートすることもできる。
【００２５】
マスターデバイス14(0〜M)は、それ自体のヘルス情報34(0〜M)をアービタ26(0〜P)に直接、またはたとえば図1のブックキーピング要素(BKE)36(0〜M)などの媒介を介して提供することができる。たとえば、図1を参照すると、マスターデバイス14(0〜M)は、BKE36(0〜M)にそれらのヘルス状況を含むヘルス情報34(0〜M)を提供するように構成することができる。ブックキーピング要素36(0〜M)は、マスターデバイス14(0〜M)の性能要件がバス相互接続12によって満たされているかどうかを決定することができる。ブックキーピング要素36(0〜M)は、ヘルス情報34(0〜M)に基づいてマスターデバイス14(0〜M)の性能要件が満たされているかどうかを示す情報38(0〜M)を、仮想バスインターフェース40(0〜M)を介してアービタ26(0〜P)に提供する。ブックキーピング要素36(0〜M)は、バス相互接続12のコアの内側または外側に設けることができる。アービタ26(0〜P)は、この情報を使用して、マスターデバイス14(0〜M)の要件が満たされているかどうかに基づいて、バス相互接続12内でマスターデバイス14(0〜M)のバストランザクションをアービトレーションするための優先度を決定する。たとえば、アービタ26(0〜P)は各々、マスターデバイス14(0〜M)の各々のバストランザクションの優先度を決定するための優先度決定モジュール42(0〜P)を含む。ヘルス情報34(0〜M)は、たとえばマスターデバイス14(0〜M)のマスター識別(MID)など、マスターデバイス14(0〜M)ごとに、またはマスターデバイス14(0〜M)のグループで提供することができる。マスターデバイス14(0〜M)の要件は、マスターポート22(0〜M)ごとにアグリゲートすることができる。
【００２６】
以下でより詳細に論じるように、それ自体のヘルス状況を追跡するように構成することができない、または構成されていないマスターデバイス14(0〜M)では、ソフトウェアによって構成された契約に基づいて、ブックキーピング要素36(0〜M)は、マスターデバイス14(0〜M)のヘルス情報34(0〜M)を導出することができる。たとえば、マスターデバイス14(0〜M)の性能要件がバス相互接続12によって満たされているかどうかを決定するために、プログラム可能な閾値をブックキーピング要素36(0〜M)に設けることができる。バス相互接続12によって提供されるマスターデバイス14(0〜M)の帯域幅は、マスターデバイス14(0〜M)のヘルス状況を導出するために使用することができる。ブックキーピング要素36(0〜M)は、導出されたヘルス情報34(0〜M)に基づいてマスターデバイス14(0〜M)の性能要件が満たされているかどうかに関して、この情報38(0〜M)を、仮想バスインターフェース40(0〜M)を介してアービタ26(0〜P)に提供する。アービタ26(0〜P)は、この情報を使用して、マスターデバイス14(0〜M)の要件が満たされているかどうかに基づいて、バス相互接続12内でマスターデバイス14(0〜M)のバストランザクションをアービトレーションするための優先度を決定する。
【００２７】
ヘルス情報34(0〜M)は、様々な方法で符号化することができる。たとえば、ヘルス情報34(0〜M)は、ヘルス情報34(0〜M)を表すヘルス状況閾値または範囲で符号化することができる。たとえば、バストランザクションの0%と33%との間のヘルス状況が性能要件を満たしていないことは、「申し分ない」ヘルス状況を示し得る。バストランザクションの33%と67%との間のヘルス状況が性能要件を満たしていないことは、「発熱の」ヘルス状況を示し得る。バストランザクションの66%と99%との間のヘルス状況が性能要件を満たしていないことは、「病気の」ヘルス状況を示し得る。100%のヘルス状況が性能要件を満たしていないことは、「故障の」ヘルス状況を示し得る。この例では、このヘルス情報34(0〜M)は、2ビットで符号化することができる。このヘルス情報34(0〜M)は、各マスターデバイス14(0〜M)に対して指定することができる。また、閾値は、マスターデバイス14(0〜M)のためにプログラム可能とすることができる。
【００２８】
以下でより詳細に論じるように、ブックキーピング要素36(0〜M)は、バス相互接続クロック信号18とは周波数的に無関係の実装を提供するために、バス相互接続クロック信号18とは無関係の基準クロックを使用するように構成することができる。ブックキーピング要素36(0〜M)をクロック制御するために、個別の、一定の周波数のクロック信号が提供され得る。このようにして、バス相互接続クロック信号18がバス相互接続12のためにスケーリングされる場合、ブックキーピング要素36(0〜M)は、マスターデバイス14(0〜M)の性能要件が新しいクロック周波数に基づいて満たされているかどうかを決定するために再プログラムされるまたは再構成される必要がない。
【００２９】
各マスターポート22(0〜M)は、この実施形態では、ヘルス情報がどのように優先度情報に変換されることになっているかについて記述する、関連する静的変換テーブルを有する。このテーブルは、所与のバス相互接続システム10のアーキテクチャのためにあらかじめ定義することができ、マスターデバイスソフトウェアドライバ30(0〜M)によって構成することができる。このテーブルは、マスターデバイス14(0〜M)がどのように分類されるか、およびバス相互接続12においてアービタ26(0〜P)によってアービトレーションされる優先度レベルに、ヘルス情報がどのようにマッピングされるかについて記述する。この点について、図2は、図1のバス相互接続12におけるマスターデバイス14(0〜M)間の相対的優先度を割り当てるために使用され得るマスターデバイスクラスを含む例示的なマスターデバイスクラステーブル50のブロック図である。一例として、マスターデバイスクラステーブル50は、マスターデバイス14(0〜M)の異なるクラス56ごとに最大優先度52および代表的な帯域幅要件54を含む。たとえば、ハードリアルタイムデバイスとして割り当てられるマスターデバイス14(0〜M)は、低レイテンシ、ソフトリアルタイム、およびベストエフォートタイプのマスターデバイス14(0〜M)よりも、バス相互接続12によってアービトレーションされるバストランザクションについてより高い最大優先度52を有し得る。ハードリアルタイムのマスターデバイス14(0〜M)の例は、GPS、MDP、VFE、およびモデムを含み得る。低レイテンシを必要とするマスターデバイス14(0〜M)の例は、CPUである。ソフトリアルタイムのマスターデバイス14(0〜M)の例は、ビデオデバイス、回転子デバイス、およびVPEを含み得る。ベストエフォートのマスターデバイス14(0〜M)の例は、グラフィックスデバイスおよび周辺機器を含み得る。
【００３０】
マスターデバイス14(0〜M)に関するヘルス情報34(0〜M)は、バス相互接続12における仮想優先度空間にマッピングされる。この点について、図3は、図1のバス相互接続システム10において提供され得る仮想優先度空間に対する例示的なヘルス情報のマッピングのブロック図である。デバイス56(0)(すなわち、ハードリアルタイム)として構成されたマスターデバイス14(0〜M)のバストランザクションを、ヘルス情報34(0)に基づいて可能な最大優先度52(たとえば、0〜3)を含む仮想優先度テーブル60にマッピングすることができることがわかる。デバイス56(1)(すなわち、低レイテンシ)として構成されたマスターデバイス14(0〜M)のバストランザクションを、ヘルス情報34(1)に基づいて可能な最大優先度52(たとえば、0〜3)を含む仮想優先度テーブル60にマッピングすることができる。デバイス56(2)(すなわち、ソフトリアルタイム)として構成されたマスターデバイス14(0〜M)のバストランザクションを、ヘルス情報34(2)に基づいて可能な最大優先度52(たとえば、0〜3)を含む仮想優先度テーブル60にマッピングすることができる。デバイス56(3)(すなわち、ベストエフォート)として構成されたマスターデバイス14(0〜M)のバストランザクションを、ヘルス情報34(3)に基づいて可能な最大優先度52(たとえば、0〜3)を含む仮想優先度テーブル60にマッピングすることができる。アービタ26(0〜P)は、マスターデバイス14(0〜M)のヘルス情報34(0〜M)に基づいて、マスターデバイス14(0〜M)からのバストランザクションをアービトレーションするための物理的な優先度を変換するために、仮想優先度テーブル60のマッピング情報を使用する。
【００３１】
仮想優先度空間へのヘルス情報のマッピングによって、バス相互接続12は、マスターデバイス14(0〜M)のクラスタイプおよびヘルス情報に基づいて、バストランザクションに割り当てられた優先度を制御することができる。このマッピングが変更されることが望ましい場合、マスターデバイス14(0〜M)を再プログラムまたは再構成する必要なく、仮想優先度テーブル60における異なる仮想最大優先度52に、クラスタイプを再度マッピングすることができる。また、仮想優先度空間に対するマッピングは、バス相互接続システム10におけるマスターデバイス14(0〜M)間の相対的な優先度についてのバス相互接続12による定義および制御を可能にする。これは、マスターデバイス14(0〜M)の所与のクラス56によって使用することができる図2のマスターデバイスクラステーブル50に示されるように、最大優先度52を制限することによって達成される。したがって、バス相互接続システム10の存続にどのマスターデバイス14(0〜M)が重要であるかが制約される。この制約の役割は、すべてのマスターデバイス14(0〜M)がそれらの性能契約を満たすためにより高い優先度まで上がろうとしているマスターデバイス14(0〜M)の間の「最上位獲得競争」状態を防止することである。
【００３２】
マスターデバイス14(0〜M)のヘルス情報34(0〜M)が任意の性能またはサービス品質の問題を示していない場合、図3の仮想優先度テーブル60において定義されている最下位の優先度を使用して、図1のアービタ26(0〜P)によって、すべてのマスターデバイス14(0〜M)がアービトレーションされる。そうでない場合、ヘルス情報問題を示しているマスターデバイス14(0〜M)のバストランザクションの優先度は、図3の仮想優先度テーブル60に基づいて、アービタ26(0〜P)において変更される。したがって、図1のブックキーピング要素36(0〜M)によって導出または分析されたヘルス情報34(0〜M)に基づいて、優先度がマスターデバイス14(0〜M)のバストランザクションのアービトレーションに割り当てられるという点で、アービトレーション優先度方式は動的である。
【００３３】
アービタ26(0〜P)によって異なるアービトレーションポリシーが使用され得る。たとえば、公正なラウンドロビン(FRR)アービトレーション優先度方式では、上位の優先度レベルのバストランザクションは、優先され、同じレベルの重要度で異なるマスターデバイス14(0〜M)間のバストランザクション間で公平に利用可能な帯域幅を最初にフィルタリングする。これは、本質的に、最重要最終期限第1アービトレーション優先度方式(most critical deadline first arbitration priority scheme)である。バス相互接続12がバッファリングを実施する場合、優先度キューイング(priority queuing)を提供するためのコマンドを並べ替えるために、優先度情報を使用することができる。他のアービトレーション優先度方針を使用することができる。たとえば、すべてのマスターデバイス14(0〜M)に同じ優先度が割り当てられている、単純なラウンドロビンアービトレーション優先度方式を使用することができる。すべてのマスターデバイス14(0〜M)に、それらのクラスに基づいて固定された優先度が割り当てられている、固定のアービトレーション優先度方式を使用することができる。
【００３４】
上記で論じたように、マスターデバイス14(0〜M)は、ヘルス情報34(0〜M)をバス相互接続12に提供するように構成することができる。マスターデバイス14の複数のクライアントが、マスターデバイス14に対してクライアントによって生成されるトランザクションのヘルス情報を個々に設定することができるケースがある。この点について、図4Aは、ヘルス情報34を図1のバス相互接続12に提供するように構成された例示的なマスターデバイス14のブロック図である。ヘルス情報は、マスターデバイス14の複数のクライアント76(0〜Q)からのアグリゲートされたヘルス情報80(0〜Q)、および/またはアグリゲータ71によってアグリゲートされたマスターデバイス14のヘルス情報に基づき得る。たとえば、CPUのようなレイテンシ依存のクライアント76(0〜Q)が、たとえば図4Aのマスターデバイス14など、サブシステム内にアグリゲートされる実例がある。バス相互接続システム10の性能を向上させるために、これらのタイプのクライアント76(0〜Q)を優先することが重要であり得る。この例では、ヘルス情報34は、複数のヘルス情報セグメント70から構成される。以下でより詳細に論じるように、複数のヘルス情報セグメント70は、アドレスマップ74内のエントリから構成される。アドレスマップ74は、ヘルス情報34がヘルス情報に基づいてマスターデバイス14の優先度を割り当てるために適用可能なマスターデバイス14を識別するマスターIDエントリ73に基づいてインデックスが付けられるエントリを含む。
【００３５】
たとえば、引き続き図4Aを参照すると、システムメモリ管理ユニット(SMMU)79がコアまたはサブシステムに使用されているとき、サービス品質(QoS)ヘルス表示77を、この例では変換ルックアサイドバッファ(TLB)エントリであるメモリページ72に関連付けることができる。SMMU79は、マスターデバイス14の内部または外部に設けられ得る。QoSヘルス表示77は、メモリページ72のページアドレス空間内の特定のアドレス領域またはページとのアクセスに関連付けられたヘルス情報を含む。ヘルス情報は、上記で論じたように、その後、仮想優先度空間に変換される。たとえば、アドレス領域またはページを、重要なヘルスを有するものとしてマークすることができ、さらにそれを、以下でより詳細に開示される、ヘルスから優先度への例示的な変換機構によって、高優先度に変換することができる。この特徴は、アグリゲータ71によってアグリゲートされ、クライアント76(0〜Q)から来るヘルス情報80(0〜Q)とともに使用され得る。たとえば、入って来るヘルス情報80(0〜Q)とQoSヘルス表示77との間の最大値は、最も重要なヘルス値を導出するために使用され得る。代わりに、単にQoSヘルス表示77情報または入って来るヘルス情報80(0〜Q)だけを使用することができる。さらに、各QoSヘルス表示77は、QoSヘルス表示77が有効であり、使用することができるかどうかを示すQoSタグ78を含むことができる。それぞれのマスターデバイス14の応答時間を短縮するために、バス相互接続システム10において、より速い応答時間でTLBミスを伝播できるように、TLBミスは、高優先度に変換することができる重要なヘルス情報を有するものとしてタグを付けることができる。
【００３６】
図4Bは、図4Aに示される複数のマスターデバイス14(0〜M)のブロック図である。マスターデバイス14(0〜M)は各々、この実施形態では、複数のクライアント76(0〜Q)および/またはマスターデバイス14(0〜M)からのヘルス情報80(0〜Q)をアグリゲートし、アグリゲートされたヘルス情報81(0〜M)の出力を図1のバス相互接続12に提供するように構成されている。この例では、図4Bのマスターデバイス14(0)およびSMMU79は、図4Aに示されるマスターデバイス14およびSMMU79である。他のマスターデバイス(たとえば、マスターデバイス14(M))は、複数のクライアント76(0〜Q)および/またはマスターデバイス(たとえば、マスターデバイス14(M))からのヘルス情報80(0〜Q)をアグリゲートするためのアグリゲータ(たとえば、アグリゲータ71(M))を含むこともできる。以下でより詳細に論じるように、アグリゲートされたヘルス情報81(0〜M)は、アービタ26がマスターデバイス14(0〜M)のバストランザクションをアービトレーションする優先度レベルを決定するために使用される。
【００３７】
図1に関して上記で論じたように、ヘルス情報がマスターデバイス14(0〜M)によってバス相互接続12に提供されない場合、ブックキーピング要素36(0〜M)は、マスターポート22(0〜M)を監視し、マスターデバイス14(0〜M)のヘルス状況を導出することができる。たとえば、ブックキーピング要素36(0〜M)は、ソフトウェアを含み得る、またはソフトウェアプログラム可能エンティティであり得る。この点について、図1の実施形態で、ブックキーピング要素36(0〜M)をバス相互接続クロック信号18とは周波数的に無関係にするために、ブックキーピング要素36(0〜M)をクロック制御するために、固定または接点のクロック信号が使用される(たとえば、20メガヘルツ(MHz))。ブックキーピング要素36(0〜M)は、マスターデバイス14(0〜M)のバストランザクションの、限定はしないが往復レイテンシを含む平均レイテンシが所与の期間にわたって、または予想されるように維持されることを確実にするために、固定帯域幅要件または他のタイプの契約で動作することができる。一例として、マスターデバイス14(0〜M)のヘルス状況を決定するためにブックキーピング要素36(0〜M)によって監視することができる契約の一種は、固定帯域幅契約(FBC)である。FBCは、所与の時間ウィンドウ内に所与のデータ量を転送することの保証を提供することができる。マスターデバイス14(0〜M)のヘルス状況を決定するためにブックキーピング要素36(0〜M)によって使用され得る契約の別の例は、平均/瞬間レイテンシ契約(ALC)である。ALCは、平均の所与の帯域幅を有するトラフィックプロファイルについての所与の時間の平均的な往復レイテンシを満たすことの保証を提供することができる。マスターデバイス14(0〜M)のヘルス状況を決定するためにブックキーピング要素36(0〜M)によって使用され得る契約の別の例は、可変帯域幅契約(VBC)である。VBCは、FBCのような帯域幅保証で開始する。さらに、マスターデバイス14(0〜M)は、事前構成された増分または減分ステップで、ハードウェアシグナリングを介して契約を動的に更新することができる。
【００３８】
図5は、図1のマスターデバイス14(0〜M)についてのバス相互接続12によって提供されるサービスレベルを導出するための図1におけるブックキーピング要素36(0〜M)で使用され得る例示的なクレジット/デビットオプションの図である。この例では、所与の時間量要件で転送される所与のデータ量は、グラント期間(GP)当たりの平均ターゲットグラント数(GC)(すなわち、許可されたトランザクションまたは転送された総バイト)に変換される。たとえば、グラント期間は、ブックキーピング要素36(0〜M)をクロック制御するクロック信号のサイクルで表すことができる(たとえば、20MHz)。GC/GPは、ブックキーピング要素36(0〜M)によって監視される軌道を確立する。期間ごとに、ブックキーピング要素36(0〜M)は、IGCが瞬間的なグラント数である場合、(IGCi-GC)+累積されたGCi-1として、累積されたGCiを計算する。ヘルス状況は、リアルタイムのバッファ挙動をエミュレートする軌道90、92、94によって提供される閾値レベルに基づき、製作者96のレートが消費者98のレートに等しい間、バッファ100は空(またはほぼ空)である。消費者98のレートが低下すると、帯域幅の瞬間的な低下に続いてバッファ100が満たされる。ヘルス状況は、バッファ100においてレベルを割り当てることによって決定される。ブックキーピング要素36(0〜M)は、公称の傾斜軌道90をたどるように構成される。レートが低下した場合、それはこの傾斜を下回り、ヘルス状況の更新をトリガする。各々に対応する閾値およびヘルス状況をプログラムすることができる。GPは、GP当たりのデータのグラントまたはバイトの観点から提供することができる。
【００３９】
図6Aおよび図6Bは、図1のバス相互接続12におけるマスターデバイス14(0〜M)からのバストランザクションのヘルス状況レベルを導出するための図1におけるブックキーピング要素36(0〜M)で使用され得る例示的な平均化オプションの図である。図6Aにおいて、サービス要件または契約は、GP当たりの平均ターゲットGC(すなわち、許可されたトランザクションまたは転送された総バイト)に変換される。GC/GPは、ブックキーピング要素36(0〜M)によって監視される軌道101、102、104を確立する。期間ごとに、ブックキーピング要素36(0〜M)は、IGCが瞬間的なグラント数である場合、累積されたGCi=(IGCi-GC)を計算する。GCは、グラントとして、またはバイトとして表すことができる。GP間隔の終わりに、累積された値は、4タップ移動平均フィルタ112を実装する、4エントリの先入れ先出し(FIFO)レジスタ110にシフトされる。最も古い値は、シフトアウトされる。FIFOレジスタ110の値は、合計され、4で割られる。したがって、「悪い」契約によるエラーは、絶対的な形で累積されるのではなく、平均される。結果は、ヘルス状況を決定するために、コンパレータ116における3つの閾値114と比較される。帯域幅閾値114およびヘルス状況は、GPおよびGCによってプログラム可能である。
【００４０】
図6Bの例では、GPおよびGCの追跡のために、16ビットのプログラム可能カウンタ120、121が提供される。ヘルス状況を導出するために使用される3つの16ビット閾値レジスタ122、124、126が設けられている。瞬時バイト/グラントアキュムレータ(IACC)128は、現在のGPについての累算されたバイトを保持する。4つの16ビットアキュムレータレジスタACC0/1/2/3 130、132、134、136が設けられている。組合せ論理に関して、16ビットアキュムレータレジスタ130〜136を追加するために、4:1の加算器138が設けられている。加算器138は、シーリング(ACC0/4+ACC1/4+ACC2/4+ACC3/4)を計算する。これは、1x減算器および1x加算器を使用して行うこともできる。ヘルスの導出のために平均化の結果を3つの閾値レジスタ122、124、126と比較する3つのコンパレータ140、142、144および符号器145も設けられている。
【００４１】
図7は、上記で説明した実施形態に従って、マスターデバイス14(0〜M)に関するヘルス情報、および仮想優先度空間に対するマスターデバイス14(0〜M)のタイプのマッピングに基づいて、いくつかのマスターデバイス14(0〜3)のバストランザクションをアービトレーションするためのアービタ26(0〜P)によって使用される優先度の概念図である。図7の優先度図147に示すように、アービタ26(0〜P)がマスターデバイス14(0〜3)のバストランザクションをアービトレーションする優先度レベル(P0〜P3)は、マスターデバイス14(0〜3)に関するヘルス情報の変化が生じるときに基づいて変化し得る。たとえば、優先度図147に示すように、マスターデバイス14(1)からのバストランザクションは、最初に、低い優先度でアービタ26(0〜P)によってアービトレーションされる。ヘルスの低下に応答して、マスターデバイス14(1)に割り当てられた優先度は、より高い優先度に上げられる。
【００４２】
アービトレーションは、最高優先度レベルP3から開始して、すべての優先度レベルP3〜P0についての公平なラウンドロビン(FRR)のやり方で、アービタ26(0〜P)によって実行することができる。これは、図7の優先度図147に示すように、最高優先度を有するバストランザクションがバス相互接続12およびスレーブデバイス16(0〜N)から第1の利用可能な帯域幅146を吸収する帯域幅フィルタリング機構を提供する。図7の優先度使用図149に示すように、残りの帯域幅を、アービタ26(0〜P)によって下位優先度のマスターデバイス14(0〜M)に割り振ることができる。すべてのマスターデバイス14(0〜M)は、要件が満たされる限り、最低優先度でアービトレーションされる(マスターポート34(0〜M)ごとに変換テーブルによってプログラムされない限り)。アービタ26(0〜P)は、要件を満たすためにアービタ26(0〜P)によって行われる取り組みを理解するための優先度周波数使用(priority frequency usage)から統計を集めるためのアービタアクティビティモニタを含むことができる。この方式は、能力の増加または減少についての能力エンティティに対する推奨を提供するために使用するものとする。
【００４３】
図8は、図1のバス相互接続12に設けることができる例示的な優先度アクティビティの監視148を示すブロック図である。特にハードリアルタイムのマスターデバイス14(0〜M)によって使用される最高優先度レベルといった、バス相互接続12における優先度使用の頻度を監視することによって、バス相互接続12によってより多くの能力を割り振る必要があるかどうか、または過剰な能力が存在するかどうかに関する有益な情報を導出することができる。性能を向上させるために、バス相互接続クロック信号18(図1)の周波数を増加させることによって、追加の能力を提供することができる。過剰な能力が存在する場合、バス相互接続クロック信号18の周波数は、電力を節約するために低減することできる。この能力情報は、周波数および/または電圧の変化をトリガすることができる電力マネージャ機構に送られる。優先度使用147は、たとえばスケジューリングのために優先度を使用しているブックキーピング要素36(0〜M)または/およびアービタ26(0〜P)においてなど、ソースで監視することができる。
【００４４】
アービタ26(0〜P)の取り組みを決定するために、シフトする時間ウィンドウ上の優先度レベルごとの周波数の使用を監視することができる。この実装形態では、図8に示すように、シフトレジスタ150は、アービタ26(0〜P)の場合、最後に定義されたアクセス数を表す要素の数、または、ブックキーピング要素36(0〜M)に実装される場合、最後に定義されたGPの数が提供される。アービタ26(0〜P)の場合のあらゆる新しいバストランザクションは、エントリとしてシフトレジスタ150にシフトされる。最も古い値は、出口としてシフトレジスタ150からシフトアウトされる。同じ操作を、GPに基づいて、ブックキーピング要素36(0〜M)で行うことができる。あらゆる優先度レベルは、関連するカウンタ152、154、156、158を有する。新しい値がシフトレジスタ150にシフトインされるたびに、その優先度値に対応するカウンタ152、154、156、158が増分される。シフトアウトされた値ごとに、対応するカウンタ152、154、156、158が減分される。この機構は、アービタ26(0〜P)での所与の最後のトランザクションの数、またはブックキーピング要素36(0〜M)での所与の最後のGPの数についての相対的な優先度の使用の推論を可能にする。
【００４５】
図9は、マスターデバイス14(0〜M)に関するヘルス情報34(0〜M)に基づいて図1のバス相互接続12におけるバストランザクションをアービトレーションし、ルーティングするための例示的なソフトウェアアーキテクチャ160のブロック図である。共通の要素は、図1に示されるものと同様に標示される。H2Pは、ヘルス情報と仮想優先度空間とのマッピングを表す。
【００４６】
本明細書で開示する実施形態に従ってバスデバイスのヘルス情報に基づいて通信バス上のバストランザクションをアービトレーションするデバイス、システム、方法、およびコンピュータ可読媒体は、任意のプロセッサベースのデバイスに設けられ得る、または組み込まれ得る。例として、限定されないが、セットトップボックス、娯楽機器、ナビゲーションデバイス、通信デバイス、固定ロケーションデータユニット、モバイルロケーションデータユニット、モバイルフォン、セルラーフォン、コンピュータ、ポータブルコンピュータ、デスクトップコンピュータ、携帯情報端末(PDA)、モニタ、コンピュータモニタ、テレビ、チューナ、ラジオ、衛星ラジオ、音楽プレーヤ、デジタル音楽プレーヤ、ポータブル音楽プレーヤ、デジタルビデオプレーヤ、ビデオプレーヤ、デジタルビデオディスク(DVD)プレーヤ、およびポータブルデジタルビデオプレーヤが含まれる。
【００４７】
この点について、図10は、図1に示すバス相互接続システム10の構成要素を使用することができるプロセッサベースのシステム170の例を示す。この例では、プロセッサベースのシステム170は、1つまたは複数のプロセッサ174を各々が含む1つまたは複数の中央処理装置(CPU)172を含む。CPU172は、マスターデバイス14であり得る。CPU172は、一時記憶データへの高速アクセスのためにプロセッサ174に結合されたキャッシュメモリ176を有し得る。CPU172はシステムバス180に結合され、システムバス180は、プロセッサベースのシステム170に含まれるマスターデバイスおよびスレーブデバイスを相互に結合することができる。システムバス180は、図1に示すバス相互接続12のようなバス相互接続でよい。よく知られているように、CPU172は、アドレス情報、制御情報、およびデータ情報をシステムバス180を通じて交換することによって、これらの他のデバイスと通信する。たとえば、CPU172は、スレーブデバイスの一例として、メモリコントローラ16(N)にバストランザクション要求を通信することができる。図10には示さないが、複数のシステムバス180を設けてもよく、この場合、各システムバス180は異なるファブリックを構成する。
【００４８】
他のマスターおよびスレーブデバイスが、システムバス180に接続され得る。図10に示されるように、これらのデバイスは、例として、メモリシステム182、1つまたは複数の入力デバイス184、1つまたは複数の出力デバイス186、1つまたは複数のネットワークインターフェースデバイス188、ならびに1つまたは複数のディスプレイコントローラ190を含み得る。入力デバイス184は、入力キー、スイッチ、音声プロセッサなどを含むが、それに限定されない、どのタイプの入力デバイスも含み得る。出力デバイス186は、オーディオ、ビデオ、他の視覚インジケータなどを含むが、それに限定されない、どのタイプの出力デバイスも含み得る。ネットワークインターフェースデバイス188は、ネットワーク192との間でデータの交換をさせるように構成されたどのデバイスでもよい。ネットワーク192は、限定はされないが、有線ネットワークまたはワイヤレスネットワーク、非公開ネットワークまたは公開ネットワーク、ローカルエリアネットワーク(LAN)、ワイドローカルエリアネットワーク(WLAN)、およびインターネットを含む、任意のタイプのネットワークであってよい。ネットワークインターフェースデバイス188は、所望の任意のタイプの通信プロトコルをサポートするように構成され得る。メモリシステム182は、1つまたは複数のメモリユニット194(0〜N)を含むことができる。アービタ26は、システムバス180と、たとえばメモリシステム182に設けられているメモリユニット194(0〜N)など、システムバス180に結合されているマスターおよびスレーブデバイスとの間に設けることができる。
【００４９】
CPU172はまた、システムバス180を通じてディスプレイコントローラ190にアクセスして、1つまたは複数のディスプレイ194に送られる情報を制御するようにも構成され得る。ディスプレイコントローラ190は、1つまたは複数のビデオプロセッサ196を介して表示されるべき情報を、ディスプレイ194に送り、ビデオプロセッサ196は、表示されるべき情報を、ディスプレイ194に適切なフォーマットとなるように処理する。ディスプレイ194は、限定はされないが、陰極線管(CRT)、液晶ディスプレイ(LCD)、プラズマディスプレイなどを含む、任意のタイプのディスプレイを含み得る。
【００５０】
CPU172およびディスプレイコントローラ190は、システムバス180を介してアービタ26へのメモリアクセス要求を行うためのマスターデバイスとして作用し得る。CPU172およびディスプレイコントローラ190内の異なるスレッドが、アービタ26への要求を行うことができる。CPU172およびディスプレイコントローラ190は、前に説明したように、バストランザクション要求の一部として、アービタ26にMIDを与えることができる。
【００５１】
本明細書で開示される実施形態に関して説明される様々な例示的な論理ブロック、モジュール、回路、およびアルゴリズムは、電子的なハードウェアとして、メモリもしくは別のコンピュータ可読媒体に記憶されるプロセッサもしくは他の処理デバイスにより実行される命令として、またはこれら両方の組合せとして実装され得ることが、当業者にはさらに理解されよう。本明細書に記載したアービタ、マスターデバイス、およびスレーブデバイスは、例として、どの回路、ハードウェア構成要素、集積回路(IC)、またはICチップ内でも利用することができる。本明細書で開示するメモリは、どのタイプおよびサイズのメモリでもよく、所望されるどのタイプの情報も記憶するように構成され得る。この互換性を明確に示すために、上記では、様々な例示的構成要素、ブロック、モジュール、回路、およびステップは全般的に、それらの機能に関して説明されている。そのような機能がどのように実装されるかは、具体的な用途、設計の選択、および/またはシステム全体に課される設計制約により決まる。当業者は、説明した機能を特定の適用例ごとに様々な方法で実装し得るが、そのような実装の決定は、本発明の範囲からの逸脱を生じるものと解釈すべきではない。
【００５２】
本明細書で開示する実施形態に関して説明する様々な例示的な論理ブロック、モジュール、および回路は、プロセッサ、DSP、特定用途向け集積回路(ASIC)、FPGAもしくは他のプログラム可能論理デバイス、個別ゲートもしくはトランジスタ論理回路、個別ハードウェア構成要素、または本明細書で説明する機能を実行するように設計されたそれらの任意の組合せで実装または実行することができる。プロセッサはマイクロプロセッサであり得るが、代替として、プロセッサは任意の従来のプロセッサ、コントローラ、マイクロコントローラ、または状態機械であり得る。プロセッサはまた、コンピューティングデバイスの組合せ、たとえば、DSPとマイクロプロセッサとの組合せ、複数のマイクロプロセッサ、DSPコアと連携する1つまたは複数のマイクロプロセッサ、あるいは任意の他のそのような構成として実装され得る。
【００５３】
本明細書で開示される実施形態は、ハードウェアで具現化されてよく、ハードウェアに記憶される命令により具現化されてよく、たとえば、ランダムアクセスメモリ(RAM)、フラッシュメモリ、読取り専用メモリ(ROM)、電気的にプログラム可能なROM(EPROM)、電気的に消去可能なプログラム可能ROM(EEPROM)、レジスタ、ハードディスク、リムーバブルディスク、CD-ROM、または、当技術分野で知られている任意の他の形態のコンピュータ可読媒体に、存在し得る。例示的な記憶媒体は、プロセッサが記憶媒体から情報を読み取り、記憶媒体に情報を書き込むことができるように、プロセッサに結合される。代替として、記憶媒体はプロセッサと一体であり得る。プロセッサおよび記憶媒体はASIC中に存在し得る。ASICは遠隔局に存在し得る。代替的には、プロセッサおよび記憶媒体は、遠隔局、基地局、またはサーバの中に、個別の構成要素として存在し得る。
【００５４】
本明細書の例示的な実施形態のいずれかで説明された動作ステップは、例および議論を提供するために説明されたものであることにも、留意されたい。説明された動作は、例示された順序以外の多くの異なる順序で実行されてもよい。さらに、単一の動作ステップで説明される動作は、実際には、多くの異なるステップで実行され得る。加えて、例示的な実施形態において論じられた1つまたは複数の動作ステップは、組み合わされてもよい。流れ図において例示される動作ステップは、当業者に容易に明らかとなるような多くの異なる修正を受けてもよいことを、理解されたい。情報および信号は、多種多様な技術および技法のいずれかを使用して表され得ることも、当業者には理解されよう。たとえば、上記の説明全体にわたって言及され得るデータ、命令、コマンド、情報、信号、ビット、シンボル、およびチップは、電圧、電流、電磁波、磁界または磁性粒子、光場または光学粒子、あるいはそれらの任意の組合せによって表され得る。
【００５５】
本開示の前述の説明は、いかなる当業者でも本開示を作成または使用することができるように提供される。本開示への様々な修正は当業者には容易に明らかであり、本明細書で定義した一般原理は、本開示の趣旨または範囲から逸脱することなく他の変形形態に適用できる。したがって、本開示は、本明細書で説明した例および設計に限定されることを意図するものではなく、本明細書で開示する原理および新規の特徴に一致する最も広い範囲を与えられるべきである。
【符号の説明】
【００５６】
10  バス相互接続システム
12  バス相互接続
14  マスターデバイス
16  スレーブデバイス
16(N)  メモリコントローラ
18  バス相互接続クロック信号
20  半導体ダイ
22  マスターポート
24  スレーブポート
26  アービタ
28  メモリ
30  マスターデバイスソフトウェアドライバ
32  マスターデバイスハードウェア
34  ヘルス情報
36  ブックキーピング要素(BKE)
38  情報
40  仮想バスインターフェース
42  優先度決定モジュール
50  マスターデバイスクラステーブル
52  最大優先度
54  代表的な帯域幅要件
56  クラス
60  仮想優先度テーブル
70  ヘルス情報セグメント
71  アグリゲータ
72  メモリページ
73  マスターIDエントリ
74  アドレスマップ
76  クライアント
77  サービス品質(QoS)ヘルス表示
78  QoSタグ
79  システムメモリ管理ユニット(SMMU)
80  ヘルス情報
81  アグリゲートされたヘルス情報
90  軌道
92  軌道
94  軌道
96  製作者
98  消費者
100  バッファ
101  軌道
102  軌道
104  軌道
110  4エントリ先入れ先出し(FIFO)レジスタ
112  4タップ移動平均フィルタ
114  閾値
116  コンパレータ
120  プログラマブルカウンタ
121  プログラマブルカウンタ
122  16ビット閾値レジスタ
124  16ビット閾値レジスタ
126  16ビット閾値レジスタ
128  瞬時バイト/グラントアキュムレータ(IACC)
130  16ビットアキュムレータレジスタ
132  16ビットアキュムレータレジスタ
134  16ビットアキュムレータレジスタ
136  16ビットアキュムレータレジスタ
138  加算器
140  コンパレータ
142  コンパレータ
144  コンパレータ
145  符号器
146  第1の利用可能な帯域幅
147  優先度使用
148  優先度アクティビティの監視
150  シフトレジスタ
152  カウンタ
154  カウンタ
156  カウンタ
158  カウンタ
160  ソフトウェアアーキテクチャ
170  プロセッサベースのシステム
172  中央処理装置(CPU)
174  プロセッサ
176  キャッシュメモリ
180  システムバス
182  メモリシステム
184  入力デバイス
186  出力デバイス
188  ネットワークインターフェースデバイス
190  ディスプレイコントローラ
192  ネットワーク
194  ディスプレイ
194  メモリユニット
196  ビデオプロセッサ
【図１】
0005894171.tif 000002
【図２】
0005894171.tif 000003
【図３】
0005894171.tif 000004
【図４Ａ】
0005894171.tif 000005
【図４Ｂ】
0005894171.tif 000006
【図５】
0005894171.tif 000007
【図６Ａ】
0005894171.tif 000008
【図６Ｂ】
0005894171.tif 000009
【図７】
0005894171.tif 000010
【図８】
0005894171.tif 000011
【図９】
0005894171.tif 000012
【図１０】
0005894171.tif 000013