(57)【特許請求の範囲】
【請求項１】
複数のエンティティによって共有される共有リソースに対する複数のリクエストについて、複数のカテゴリを決定する段階と、
前記複数のエンティティから前記共有リソースに対する複数のリクエストを受信する段階と、
前記複数のリクエストのそれぞれについて、前記複数のカテゴリのうちから１つのカテゴリを判断する段階と、
前記複数のリクエストから、第１カテゴリに属すると判断される第一群のリクエストと、第２カテゴリに属すると判断される第二群のリクエストとを提供する段階と、
前記第一群のリクエストを第１アービトレーションスキームへと送信する段階であって、前記第１アービトレーションスキームは、第１調整結果を決定すべく第１クロックサイクル数を用いるように構成された第１アービトレーションアルゴリズムを実装し、前記第１クロックサイクル数は前記第１調整結果を決定すべく前記第１アービトレーションスキームで用いられる第１時間に相当し、前記第１調整結果は前記第一群のリクエストから許可されるべき第１リクエストを選択する、前記第１アービトレーションスキームへと送信する段階と、
前記第二群のリクエストを第２アービトレーションスキームに送信する段階であって、前記第２アービトレーションスキームは、第２調整結果を決定すべく第２クロックサイクル数を用いるように構成された第２アービトレーションアルゴリズムを実装し、前記第１クロックサイクル数と前記第２クロックサイクル数とは異なり、前記第２クロックサイクル数は、前記第２調整結果を決定すべく前記第２アービトレーションスキームで用いられる、前記第１時間とは異なる第２時間に相当し、前記第２調整結果は前記第二群のリクエストから許可されるべき第２リクエストを選択する、前記第２アービトレーションスキームへと送信する段階と、
を備える、方法。
【請求項２】
前記第１クロックサイクル数は固定されており、前記第２クロックサイクル数は可変である、請求項１に記載の方法。
【請求項３】
前記第１クロックサイクル数は可変であり、前記第２クロックサイクル数は可変であり、前記第１クロックサイクル数は、前記第２クロックサイクル数よりも短い、請求項１に記載の方法。
【請求項４】
前記第１クロックサイクル数は、前記第２クロックサイクル数よりも短い、請求項１または２に記載の方法。
【請求項５】
前記第１アービトレーションスキームは、
前記第１リクエストを決定するべく、前記第一群のリクエストの間で調整を行う段階を有し、
前記第１リクエストは、前記第１クロックサイクル数の間に決定される、請求項１から４の何れか一項に記載の方法。
【請求項６】
前記調整を行う段階は、
少なくとも１つのアービタにおいて、前記第一群のリクエストを受信する段階と、
前記少なくとも１つのアービタにおいて、許可を受けるリクエストの候補を決定する段階と、
前記許可を受けるリクエストの候補を前記第１リクエストとして供給する段階とを含む請求項５に記載の方法。
【請求項７】
前記第２アービトレーションスキームは、
複数の許可を受けるリクエストの候補を決定するべく、前記第２クロックサイクル数における第１クロックサイクルで前記第二群のリクエスト間の調整を行う段階と、
前記第２リクエストを決定するべく、前記複数の許可を受けるリクエストの候補の間で調整を行う段階とを有し、
前記第２リクエストは、前記第２クロックサイクル数における第２クロックサイクルで決定される、請求項１から６の何れか一項に記載の方法。
【請求項８】
前記第二群のリクエストの間で調整を行う段階は、
複数の第１レベルアービタにおいて、前記第二群のリクエストの複数部分を受信する段階と、
前記複数の第１レベルアービタそれぞれにおいて、許可を受けるリクエストの候補を決定するべく、前記第二群のリクエストの前記複数部分の間で調整を行う段階とを含み、
前記複数の許可を受けるリクエストの候補の間で調整を行う段階は、
第２レベルアービタにおいて、前記複数の第１レベルアービタそれぞれから、前記許可を受けるリクエストの候補を受信する段階と、
前記第２レベルアービタにおいて、前記複数の許可を受けるリクエストの候補から前記第２リクエストを決定するべく、受信した前記複数の許可を受けるリクエストの候補の間で調整を行う段階とを含む、請求項７に記載の方法。
【請求項９】
前記方法は、
前記複数のリクエストから第３カテゴリに属すると判断される第三群のリクエストを提供する段階と、
第３リクエストを、前記第１アービトレーションスキームに送信するべきか、または、前記第２アービトレーションスキームに送信するべきかを判断するべく、前記第三群のリクエストから前記第３リクエストに関連する因子を評価する段階と、
を更に備える、請求項１から８の何れか一項に記載の方法。
【請求項１０】
前記因子を評価する段階は、
前記第３リクエストに関する重み付けまたはステータスを使用して、前記第３リクエストを、前記第１アービトレーションスキームに送信するべきか、または、前記第２アービトレーションスキームに送信するべきかを判断する段階を有する、請求項９に記載の方法。
【請求項１１】
前記重み付けは、以前に許可を受けたリクエストに関する情報を含み、
前記ステータスは、前記第３リクエストに関する優先順位またはレイテンシに関する、請求項１０に記載の方法。
【請求項１２】
前記第二群のリクエストの間で調整を行う段階は、
前記第二群のリクエストが調整を行うべきリクエストを有していない場合に、前記複数の第１レベルアービタのうちの第１のアービタが前記第二群のリクエストの間での前記調整を行い、選択したリクエストを、前記第２レベルアービタを介さずに前記第２リクエストとして出力する段階を更に備える、請求項８に記載の方法。
【請求項１３】
前記第２アービトレーションスキームへ送信されうる前記第二群のリクエストの個数は、前記第１アービトレーションスキームへ送信されうる前記第一群のリクエストの個数よりも多い、請求項１から１２の何れか一項に記載の方法。
【請求項１４】
複数のエンティティから、共有リソースに対する複数のリクエストを受信するロジックと、
前記複数のエンティティによって共有される前記共有リソースについての複数のカテゴリのうちの１つのカテゴリを、前記複数のリクエストのそれぞれに対して判断するロジックと、
前記複数のリクエストから、第１カテゴリに属すると判断される第一群のリクエストと、第２カテゴリに属すると判断される第二群のリクエストとを提供するロジックと、
前記第一群のリクエストを、第１アービトレーションスキームへと送信するロジックであって、前記第１アービトレーションスキームは、第１調整結果を決定すべく第１クロックサイクル数を用いるように構成された第１アービトレーションアルゴリズムを実装し、前記第１クロックサイクル数は前記第１調整結果を決定すべく前記第１アービトレーションスキームで用いられる第１時間に相当し、前記第１調整結果は前記第一群のリクエストから許可されるべき第１リクエストを選択する、前記第１アービトレーションスキームへと送信するロジックと、
前記第二群のリクエストを第２アービトレーションスキームに送信するロジックであって、前記第２アービトレーションスキームは、第２調整結果を決定すべく第２クロックサイクル数を用いるように構成された第２アービトレーションアルゴリズムを実装し、前記第１クロックサイクル数と前記第２クロックサイクル数とは異なり、前記第２クロックサイクル数は、前記第２調整結果を決定すべく前記第２アービトレーションスキームで用いられる、前記第１時間とは異なる第２時間に相当し、前記第２調整結果は前記第二群のクエストの第２セットから許可されるべき第２リクエストを選択する、前記第２アービトレーションスキームへと送信するロジックと、
を備える装置。
【請求項１５】
前記第１クロックサイクル数は固定されており、前記第２クロックサイクル数は可変である、請求項１４に記載の装置。
【請求項１６】
前記第１クロックサイクル数は可変であり、前記第２クロックサイクル数は可変であり、前記第１クロックサイクル数は、前記第２クロックサイクル数よりも短い、請求項１４に記載の装置。
【請求項１７】
前記第１クロックサイクル数は、前記第２クロックサイクル数よりも短い、請求項１４または１５に記載の装置。
【請求項１８】
前記第１アービトレーションスキームは、
前記第１リクエストを決定するべく、前記第一群のリクエストの間で調整を行うロジックを有し、
前記第１リクエストは、前記第１クロックサイクル数の間に決定される、請求項１４から１７の何れか一項に記載の装置。
【請求項１９】
前記調整を行うロジックは、
少なくとも１つのアービタにおいて前記第一群のリクエストを受信するロジックと、
前記少なくとも１つのアービタにおいて、許可を受けるリクエストの候補を決定するロジックと、
前記許可を受けるリクエストの候補を前記第１リクエストとして供給するロジックとを含む、請求項１８に記載の装置。
【請求項２０】
前記第２アービトレーションスキームは、
複数の許可を受けるリクエストの候補を決定するべく、前記第２クロックサイクル数における第１のクロックサイクルで前記第二群のリクエスト間の調整を行うロジックと、
前記第２リクエストを決定するべく、前記複数の許可を受けるリクエストの候補の間で調整を行うロジックとを有し、
前記第２リクエストは、前記第２クロックサイクル数における第２クロックサイクルで決定される、請求項１４から１９の何れか一項に記載の装置。
【請求項２１】
複数の第１レベルアービタを更に備え、
前記第二群のリクエストの間で調整を行うロジックは、
前記複数の第１レベルアービタにおいて、前記第二群のリクエストの複数部分を受信するロジックと、
前記複数の第１レベルアービタそれぞれにおいて、許可を受けるリクエストの候補を決定するべく、前記第二群のリクエストの前記複数部分の間で調整を行うロジックとを含み、
前記複数の許可を受けるリクエストの候補の間で調整を行うロジックは、
第２レベルアービタにおいて、前記複数の第１レベルアービタそれぞれから、前記許可を受けるリクエストの候補を受信するロジックと、
前記第２レベルアービタにおいて、前記複数の許可を受けるリクエストの候補から前記第２リクエストを決定するべく、前記複数の許可を受けるリクエストの候補の間で調整を行うロジックと含む、請求項２０に記載の装置。
【請求項２２】
前記第二群のリクエストの間で調整を行うロジックは、
前記第二群のリクエストが調整を行うべきリクエストを有していない場合に、前記複数の第１レベルアービタのうちの第１のアービタが前記第二群のリクエストの間での前記調整を行い、選択したリクエストを、前記第２レベルアービタを介さずに前記第２リクエストとして出力するロジックを更に備える、請求項２１に記載の装置。
【請求項２３】
前記第２アービトレーションスキームへ送信されうる前記第二群のリクエストの個数は、前記第１アービトレーションスキームへ送信されうる前記第一群のリクエストの個数よりも多い、請求項１４から２２の何れか一項に記載の装置。
【請求項２４】
請求項１４から２３の何れか一項に記載の装置と、
前記共有リソースと、
前記共有リソースへのアクセスを共有する前記複数のエンティティと、
を備えるシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
［優先権情報］
本非仮出願は、２０１１年４月２０日出願の米国仮出願61/477,445号"Variable Length Arbitration（可変長アービトレーション）"の優先権を主張するものであり、上記出願の内容は、参照により本明細書に組み込まれる。
【背景技術】
【０００２】
本明細書に特に示されていない限り、本章において記載される方法は、本願特許請求の範囲に対する従来技術ではなく、この章に記載することによって従来技術と認めているわけではない。
【０００３】
コンピュータシステムは、メモリ、バスおよび通信インターフェースといった数多くの共有されるシステムリソースを含む。そして、数多くのエンティティ（例えば、ユーザおよびクライアント）が、このようなリソースを共有するようになってきている。異なるエンティティは、コンピュータシステムにおける共有リソースの使用に対して異なる要求を有する。例えば、コンピュータ処理ユニット（ＣＰＵ）のようなエンティティは、命令をフェッチする場合にアクセスレイテンシに注目し、ダイレクトメモリアクセス（ＤＭＡ）コントローラのような別のエンティティは、スループットに注目する。共有リソースの使用を効率的に管理し、コンピュータシステムにおける異なるエンティティの要求に最も良好に応えるようにするために、アービタ（arbiter：調整回路）が使用される。
【０００４】
ラウンドロビン（総当たり）、加重ラウンドロビン、最も最近使用されなかったもの（least recently used：ＬＲＵ）、最も最近使用されたもの（most recently used：ＭＲＵ）等、様々なアービトレーションアルゴリズムが開発されており、異なるシステムの要求に応えるべく、アービトレーションの性能および公平さが改善されてきた。しかしながら、システム速度が速くなり、アービトレーションに参加するエンティティの数が増加し、アービタがシステム設計要求に応えるのが難しくなってきている。例えば、６４個のクライアントが１つのリソースを共有する場合、６４ビットのリクエストとなる。アービトレーションを行うサイクルは通常固定されており、例えば、１クロックサイクル毎に行われる。しかしながら、クロック速度が大きい場合、単純なラウンドロビンアルゴリズムであっても、１周期でアービトレーションを完了させるのは難しい。
【発明の概要】
【０００５】
一実施形態では、方法は、複数のエンティティによって共有される共有リソースに対する複数のリクエストについて、複数のカテゴリを決定する。複数のエンティティのうちの１つのエンティティから共有リソースに対するリクエストを受信する。方法は、受信したリクエストについて、複数のカテゴリのうちの１つのカテゴリを判断する。受信したリクエストが第１カテゴリに属すると判断された場合には、方法は、受信したリクエストを、第１時間周期で調整結果を決定するように構成された第１アービトレーションスキームに送信する。受信したリクエストが第２カテゴリに属すると判断された場合には、方法は、受信したリクエストを第１時間周期とは異なる第２時間周期で調整結果を決定するように構成された第２アービトレーションスキームに送信する。
【０００６】
一実施形態では、第１時間周期は固定されており、第２時間周期は可変である。
【０００７】
一実施形態では、第１時間周期は可変であり、第２時間周期は可変であり、第１時間周期は、第２時間周期よりも短い。
【０００８】
一実施形態において、受信したリクエストが、第３カテゴリに属すると判断された場合には、方法は、受信したリクエストを、第１アービトレーションスキームに送信するべきか、または、第２アービトレーションスキームに送信するべきかを判断するべく、受信したリクエストに関連する因子を評価する段階を更に備える。
【０００９】
一実施形態では、装置は、複数のエンティティのうちの１つのエンティティから、共有リソースに対するリクエストを受信するロジックと、複数のエンティティによって共有される共有リソースについての複数のカテゴリのうちの１つのカテゴリを、受信されたリクエストに対して判断するロジックと、受信されたリクエストが第１カテゴリに属すると判断された場合には、受信されたリクエストを、第１時間周期で調整結果を決定するよう構成された第１アービトレーションスキームへと送信するロジックと、受信したリクエストが第２カテゴリに属すると判断された場合には、受信したリクエストを、第１時間周期とは異なる長さの第２時間周期で調整結果を決定するように構成された第２アービトレーションスキームに送信するロジックとを備える。
【００１０】
一実施形態において、システムは、共有リソースと、共有リソースへのアクセスを共有する複数のエンティティとを備える。
【００１１】
以下の詳細な説明および添付の図面により、本発明の本質及び利点の詳細な理解が提供される。
【図面の簡単な説明】
【００１２】
【図１】一実施形態に係るリソースを共有するシステムを単純化して示した図である。
【図２】一実施形態に係るアービタの単純化した例を示した図である。
【図３】一実施形態に係るリクエスト制御ブロックの詳細な例を示した図である。
【図４】一実施形態に係るレベル１アービトレーションの詳細な例を示した図である。
【図５】一実施形態に係る可変長アービトレーションを実行する方法を単純化して示したフローチャートである。
【発明を実施するための形態】
【００１３】
以下に、可変長アービトレーションシステムの技術について記載する。以下の記載では、説明の目的から、本発明の実施形態の完全な理解を提供するべく、数多くの例及び具体的な詳細事項が記載される。特許請求の範囲で規定される特定の実施形態は、これら例のみに記載される特徴の一部又は全て、若しくは、以下に記載されるその他の特徴との組み合わせを含んでもよく、また、以下に記載される特徴及び原理の改良及び均等物を含んでもよい。
【００１４】
図１には、一実施形態に係るリソースを共有する単純化されたシステム１００が示されている。アービタ１０２は、可変クロックサイクルで、メモリ１０４のような共有リソース１０４に対してアービテーションを実行する。リソースを共有するエンティティ１０６には、ＣＰＵ１０６−１、液晶ディスプレイ（ＬＣＤ）コントローラ１０６−２、および、ダイレクトメモリアクセス（ＤＭＡ）コントローラ１０６−３が含まれる。その他の共有リソース１０４およびエンティティ１０６も考えられる。また、共有リソース１０４がここではメモリ１０４と称されているが、その他の共有リソースも考えられる。
【００１５】
アービタ１０２は、可変長アービトレーション（variable length arbitration：ＶＬＡ）を使用して、メモリ１０４へのアクセスをアービトレーション（調整）する。可変長アービトレーションとは、アービタ１０２が、例えば、エンティティ要求の現在の状態のような様々な因子に応じて可変のクロックサイクルでアービトレーションを実行することができることを意味する。以下に詳細に記載するように、アービタ１０２は、２つの異なるレベル（別の実施形態では、２つ以上のレベル）で調整を実行してもよい。一実施形態において、アービトレーションの第１レベルである"レベル０"およびアービトレーションの第２レベルである"レベル１"が提供される。レベル０アービトレーションは、レベル１アービトレーションが実行される周期数よりも少ない周期数で実行される。レベル０アービトレーションは、固定されていても可変であってもよく、レベル１アービトレーションは可変である。例えば、レベル０アービトレーションは、１周期で実行され、レベル１アービトレーションは、１サイクルまたは複数サイクル、例えば、２周期（２周期に限定されない）といった可変周期で実行される。レベル０アービトレーションまたはレベル１アービトレーションを提供することにより、可変長アービトレーションを提供する。
【００１６】
アービタ１０２は、リクエストを３つのカテゴリに分類する。第１カテゴリは、低いレイテンシおよび高い優先順位を要求するエンティティリクエストを含む。キャッシュラインリフィルのリクエストのようなＣＰＵリクエストは、第１カテゴリに属するリクエストの典型的な例である。一実施形態において、第１カテゴリに属するリクエストは、レベル０リクエストにマッピングされる。
【００１７】
第２カテゴリは、可変優先順位および可変レイテンシ要求を有するエンティティリクエストを含む。例えば、リクエストに関連付けられた因子に基づいて、要求が低くなったり高くなったりする。第２カテゴリに属するリクエストは、現状に応じて、レベル０リクエストまたはレベル１リクエストにマッピングされてもよい。ＬＣＤコントローラ１０６−２からのリクエストは、第２カテゴリにマッピングされるリクエストの一例である。例えば、ＬＣＤコントローラ１０６−２に対してバッファされているリクエストがいくつ存在するかを示すディスプレイバッファステータスに基づいて、ＬＣＤコントローラ１０６−３からのリクエストの優先順位が変更されてもよい。
【００１８】
第３カテゴリは、ＤＭＡコントローラ１０６−３のような、コンピュータシステム１００におけるその他のエンティティのリクエストを含む。このようなリクエストは、レベル１にマッピングされ、優先順位は高くないまたはレイテンシが低い。
【００１９】
図２には、一実施形態に係るアービタ１０２の単純化した例が示されている。アービタ１０２は、リクエスト制御ブロック２０２、レベル０アービトレーションリング２０４、レベル１アービトレーションリング２０６、および、グラント（許可）アービタ（Ｇｎｔ  Ａｒｂ）２０８を備える。
【００２０】
リクエスト制御ブロック２０２は、レベル０アービトレーションリング２０４および／またはレベル１アービトレーションリング２０６にリクエストを送信する。リクエスト制御ブロック２０２は、現在のステータスおよび入力条件といった入力基準に基づいて、リクエストを送信してもよい。例えば、リクエスト制御ブロック２０２は、リクエストがどのカテゴリに属すか判断し、リクエストをレベル０アービトレーションリング２０４またはレベル１アービトレーションリング２０６に送信してもよい。例えば、カテゴリ０、カテゴリ１およびカテゴリ２の３つのカテゴリが提供される。カテゴリ０のリクエストは、レベル０アービトレーションリング２０４に送信され、カテゴリ２のリクエストは、レベル１アービトレーションリング２０６に送信される。カテゴリ１のリクエストは、レベル０アービトレーションリング２０４またはレベル１アービトレーションリング２０６に送信されてもよい。ＱｏＳおよび／または加重をカテゴリ１のリクエストに使用して、これらリクエストをレベル０アービトレーションリング２０４に送信すべきか、または、レベル１アービトレーションリング２０６に送信すべきかを決定してもよい。ＱｏＳは、優先順位およびレイテンシ要求のような、リクエストと関連付けられた因子に基づいてもよい。エンティティ１０６からの様々なリクエストについてのステータスは変化する場合がある。例えば、エンティティ１０６での状態が変化すると、優先順位またはレイテンシの要求は、重み付けに影響を与える変化となりうる。例えば、バッファが一杯になると、優先順位が高くなるといったように、リクエストに対する優先順位またはレイテンシ要求が変化する。
【００２１】
一実施形態において、レベル０アービトレーションリング２０４は、１クロックサイクルアービトレーションが行われるリクエストを受信する。例えば、レベル０アービトレーションリング２０４は、８個のリクエスト入力を受信する。レベル０アービトレーションリング２０４は、１クロックサイクルで実行することができる複数のアービトレーションアルゴリズムをサポートする。一実施形態において、リクエストおよび重み付け（weighting）が受信され、レベル０アービトレーションリング２０４は、重み付けに基づいて、どのリクエストに対してメモリ１０４へのアクセスを許可するか決定する。重み付けは、エンティティ１０６からの何れのリクエストが以前許可されたか（すなわち、エンティティ１０６から最近処理されていないリクエストの重み付けが高くなる）に基づいてもよい。
【００２２】
レベル１アービトレーションリング２０６は、リクエストを受信し、１クロックサイクルから２クロックサイクルといったように、可変長アービトレーション時間を使用する。アービトレーション時間は、現在のステータスおよび使用されるアービトレーションに依存してもよい。一実施形態では、レベル１アービトレーションリング２０６は、６２個のリクエスト入力および１つの重み付けを受信する。重み付けは、メモリ１０４へのアクセスが過去に許可されたリクエストに関する情報であってもよい。レベル１アービトレーションリング２０６は、重み付けに基づいて、２つ（または２つ以上）のアービトレーションを行い、どのリクエストに対してメモリ１０４へのアクセスを許可するか決定する。
【００２３】
グラントアービタ２０８は、許可選択信号gnt_selに基づいて、最終的な許可出力を決定する。すなわち、８つのアービトレーショングループArb Group00からArb Group 07のうち、１つのアービトレーショングループのみが有効なリクエストを有している場合は、gnt_lvl1出力としてgnt_cyc1を選択し、それ以外の場合には、gnt_lvl1出力としてgnt_cyc2を選択する。
【００２４】
図３には、一実施形態に係るリクエスト制御ブロック２０２の詳細な例が示されている。リクエスト制御ブロック２０２は、ｎ個のリクエストマッパ（req_mapper）３０２を含む。
【００２５】
リクエストマッパ３０２は、リクエストがカテゴリ０リクエストであるかを判断する。リクエストがカテゴリ０リクエストである場合、リクエストがレベル０アービトレーションリング２０４に送信される（req_out_lvl0[i]）。さらに、重み付けW_lvl0[i]が送信される。リクエストマッパ３０２が、リクエストがカテゴリ２リクエストであると判断した場合、リクエストマッパ３０２は、リクエストをレベル１アービトレーションリング２０６に送信する（req_out_lvl1[i]）。リクエストがカテゴリ１リクエストである場合、リクエストマッパ３０２は、例えば、サービス品質（QOS_in）および重み付け（weight[i]）のようなリクエストに関連する因子を考慮して、選択すべきレベルを判断する。ＱｏＳは、リクエストに関連付けられた優先順位に基づいてもよい。重み付けは、様々な因子に基づいてもよく、例えば、以前にどのリクエストにアクセス許可が与えられたかに基づいてもよい。信号QOS_inがハイ（High）である場合、リクエストは、レベル０アービトレーションリング２０４に送信される。ハイでない場合、重み付けが閾値よりも高い場合には、リクエストがレベル０アービトレーションリング２０４に送信され、重み付けが閾値よりも低い場合には、レベル１アービトレーションリング２０６に送信される。重み付けは、以前に許可されたリクエストに基づいてもよい。リクエストマッパ３０２は、重み付けを更新および／または消去して（W_lvl0[i]およびW_lvll [i]）、現在のステータスおよび許可信号（gnt）に基づいて信号（req_out_lvl0およびreq_out_lvl1）を出力する。
【００２６】
制御信号（ctrl[i]）はシステムレジスタから出力される。制御信号は、リクエストイネーブル、リクエストの初期重み付け等、リクエストに対する制御情報を含む。
【００２７】
リクエストマッパ３０２のタイミングは一定であり、計算時間の全体的な複雑性に影響を与えることはない。
【００２８】
図４には、一実施形態に係るレベル１アービトレーションリング２０６の詳細な例が示されている。レベル１アービトレーションリング２０６が２層構造となっている個所にツリー構造が提供されている。その他の構造についても明らかである。レベル０アービトレーションリング２０４（図示せず）は、１つのアービトレーショングループ４０４であってもよい。
【００２９】
シフタ４０２は、バイトアラインされているアービトレーション開始点を判断する。例えば、シフタ４０２は、０から７ビットをシフトさせてもよい。シフトにより、様々なアービトレーショングループ４０４においてアービトレーションを開始させてもよい。
【００３０】
アービトレーショングループ４０４（arb_group0*）はそれぞれ、リクエストの一群（例えば、８個のリクエスト（req_sft[7:0]））および重み付け入力（Ｗ）を受信する。アービトレーショングループ４０４はそれぞれ、８個のリクエストの間の調整を行い、１つのリクエストを出力するべく選択する。
【００３１】
レベル１アービトレーションでは、複数のレベル０リクエスト間の調整を行うべく、アービトレーショングループ４０４のうちの１つが選択される。この場合、その他のアービトレーショングループは、アービテーションを行うべきリクエストを有していなくてもよい。一例では、アービトレーショングループ４０４−０は、８個のレベル０リクエストを受信し、これらの間の調整を行う。１つのリクエストが選択され、選択されたリクエストがロジック４０６を介して出力される。このリクエストが、グラントアービトレーションロジック２０８に転送される。グラントアービトレーションロジック２０８が選択信号を受信すると、リクエストが出力される。上記したプロセスが、１クロックサイクルで行われる。
【００３２】
レベル１アービトレーションでは、アービトレーショングループ４０４は、重み付け（ｗ）を使用して８個のリクエスト間の調整を行い、調整の結果、許可を勝ち得たリクエストを出力する。アービトレーショングループ４０４はそれぞれ、許可を勝ち得たリクエストおよび重み付けを、第２レベルアービトレーショングループ（arb_group10）４０８へと出力してもよい。第２レベルアービトレーショングループ４０８は、受信した入力に対して第２アービトレーションを実行する。例えば、第２レベルアービトレーショングループ４０８は、８個のリクエスト入力および８個の対応する重み付け入力を受信し、グラントアービトレーションロジック２０８に出力するべき、許可を勝ち得るリクエストを決定する。グラントアービトレーションロジック２０８が選択信号を受信すると、アービトレーショングループ４０８から許可を勝ち得たリクエストが出力される。この場合、レベル１アービトレーションは、２クロックサイクルで行われる。
【００３３】
図５は、一実施形態に係る可変長アービトレーションを実行する方法を単純に示したフローチャート５００である。段階５０２では、メモリ１０４に対する複数のリクエストについて、様々なカテゴリが決定される。メモリ１０４は、複数のエンティティ１０６によって共有される。
【００３４】
段階５０４では、アービタ１０２は、エンティティ１０６からメモリ１０４に対するリクエストを受信する。段階５０６では、アービタ１０２は、受信したリクエストに対するカテゴリを判断する。例えば、リクエストは、３つのカテゴリに属する可能性がある。
【００３５】
段階５０６において、アービタ１０２が、受信したリクエストが、カテゴリ０、カテゴリ１またはカテゴリ２のいずれに属するかを判断する。リクエストが、カテゴリ０に属する場合には、アービタ１０２は、受信したリクエストを、第１時間周期で調整結果（arbitration decision）を決定するように構成された第１アービトレーションスキームに送信する。例えば、アービタ１０２は、リクエストをレベル０アービトレーションリング２０４に送信する。リクエストがカテゴリ２に属する場合、アービタ１０２はリクエストを、第１時間周期とは異なる長さの第２時間周期で調整結果を決定するように構成された第２アービトレーションスキームに送信する。例えば、アービタ１０２は、リクエストをレベル１アービトレーションリング２０６に送信する。
【００３６】
リクエストがカテゴリ１に属する場合、アービタ１０２は、リクエストに関連する因子に基づいて、リクエストをカテゴリ０またはカテゴリ２に分類すべきかを判断する。例えば、アービタ１０２は、リクエストに対するＱｏＳまたは重み付けを分析して、どちらのカテゴリにリクエストを分類すべきか判断する。アービタ１０２は、リクエストをカテゴリ０またはカテゴリ２に分類する。
【００３７】
上記のようにして、可変長アービトレーションが提供される。リクエストの分類に応じて、異なるアービトレーション長さを提供してもよい。これにより、リクエストの優先順位に基づいてアービトレーションの長さを変更することが可能になる。
【００３８】
本明細書で使用されている「１の（ａ、ａｎ、ｔｈｅ）」という言葉は、文中に明確にそれが１つのみであると示されていない限り、複数を含むことを意味している。また、本明細書及び添付の特許請求の範囲で使用されている「〜の内に（ｉｎ）」という言葉は、特に明記されていない限り、「〜の中に（ｉｎ）」及び「〜上に（ｏｎ）」という意味を含む。
【００３９】
上記の説明は、本発明の様々な実施形態を、本発明の側面をどのように実装するかの例と共に、例示したものである。上記の例および実施形態は、唯一の実施形態としてみなされるべきではなく、添付の特許請求の範囲によって規定される本発明の柔軟性及び利点を例示するために示されている。上記の開示および添付の特許請求の範囲に基づいて、その他の配置、実施形態、実装および均等物を、特許請求の範囲に規定される本発明の範囲内において採用可能である。
【図１】
0006041324.tif 000002
【図２】
0006041324.tif 000003
【図３】
0006041324.tif 000004
【図４】
0006041324.tif 000005
【図５】
0006041324.tif 000006