特許第6041324号(P6041324)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ マーベル ワールド トレード リミテッドの特許一覧

<>
  • 特許6041324-可変長アービトレーション 図000002
  • 特許6041324-可変長アービトレーション 図000003
  • 特許6041324-可変長アービトレーション 図000004
  • 特許6041324-可変長アービトレーション 図000005
  • 特許6041324-可変長アービトレーション 図000006
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】6041324
(24)【登録日】2016年11月18日
(45)【発行日】2016年12月7日
(54)【発明の名称】可変長アービトレーション
(51)【国際特許分類】
   G06F 13/362 20060101AFI20161128BHJP
【FI】
   G06F13/362 510D
【請求項の数】24
【全頁数】13
(21)【出願番号】特願2014-506518(P2014-506518)
(86)(22)【出願日】2012年4月18日
(65)【公表番号】特表2014-514662(P2014-514662A)
(43)【公表日】2014年6月19日
(86)【国際出願番号】US2012034106
(87)【国際公開番号】WO2012145416
(87)【国際公開日】20121026
【審査請求日】2015年3月20日
(31)【優先権主張番号】61/477,445
(32)【優先日】2011年4月20日
(33)【優先権主張国】US
(73)【特許権者】
【識別番号】502188642
【氏名又は名称】マーベル ワールド トレード リミテッド
(74)【代理人】
【識別番号】110000877
【氏名又は名称】龍華国際特許業務法人
(72)【発明者】
【氏名】ジュウ、ジュン
(72)【発明者】
【氏名】カオ、ジョセフ ジュン
(72)【発明者】
【氏名】リュ、シェン
【審査官】 古河 雅輝
(56)【参考文献】
【文献】 特開2005−316608(JP,A)
【文献】 特開2000−339269(JP,A)
【文献】 特開2000−187639(JP,A)
【文献】 特開平09−269927(JP,A)
【文献】 特開2005−316609(JP,A)
【文献】 特開2010−282405(JP,A)
【文献】 国際公開第2010/086906(WO,A1)
【文献】 特開2003−030134(JP,A)
【文献】 特開2006−127423(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 13/10−13/14
G06F 13/20−13/42
G06F 15/16−15/177
(57)【特許請求の範囲】
【請求項1】
複数のエンティティによって共有される共有リソースに対する複数のリクエストについて、複数のカテゴリを決定する段階と、
前記複数のエンティティから前記共有リソースに対する複数のリクエストを受信する段階と、
前記複数のリクエストのそれぞれについて、前記複数のカテゴリのうちから1つのカテゴリを判断する段階と、
前記複数のリクエストから、第1カテゴリに属すると判断される第一群のリクエストと、第2カテゴリに属すると判断される第二群のリクエストとを提供する段階と、
記第一群のリクエストを第1アービトレーションスキームへと送信する段階であって、前記第1アービトレーションスキームは、第1調整結果を決定すべく第1クロックサイクル数を用いるように構成された第1アービトレーションアルゴリズムを実装し、前記第1クロックサイクル数は前記第1調整結果を決定すべく前記第1アービトレーションスキームで用いられる第1時間に相当し、前記第1調整結果は前記第一群のリクエストから許可されるべき第1リクエストを選択する、前記第1アービトレーションスキームへと送信する段階と、
前記第二群のリクエストを第2アービトレーションスキームに送信する段階であって、前記第2アービトレーションスキームは、第2調整結果を決定すべく第2クロックサイクル数を用いるように構成された第2アービトレーションアルゴリズムを実装し、前記第1クロックサイクル数と前記第2クロックサイクル数とは異なり、前記第2クロックサイクル数は、前記第2調整結果を決定すべく前記第2アービトレーションスキームで用いられる、前記第1時間とは異なる第2時間に相当し、前記第2調整結果は前記第二群のリクエストから許可されるべき第2リクエストを選択する、前記第2アービトレーションスキームへと送信する段階
を備える、方法。
【請求項2】
前記第1クロックサイクル数は固定されており、前記第2クロックサイクル数は可変である、請求項1に記載の方法。
【請求項3】
前記第1クロックサイクル数は可変であり、前記第2クロックサイクル数は可変であり、前記第1クロックサイクル数は、前記第2クロックサイクル数よりも短い請求項1に記載の方法。
【請求項4】
前記第1クロックサイクル数は、前記第2クロックサイクル数よりも短い請求項1または2に記載の方法。
【請求項5】
前記第1アービトレーションスキームは
前記第1リクエストを決定するべく、前記一群のリクエストの間で調整を行う段階を有し、
前記第1リクエストは、前記第1クロックサイクル数の間に決定される請求項1から4の何れか一項に記載の方法。
【請求項6】
前記調整を行う段階は、
少なくとも1つのアービタにおいて、前記一群のリクエストを受信する段階と、
前記少なくとも1つのアービタにおいて、許可を受けるリクエストの候補を決定する段階と、
前記許可を受けるリクエストの候補を前記第1リクエストとして供給する段階とを含む請求項5に記載の方法。
【請求項7】
前記第2アービトレーションスキームは、
複数の許可を受けるリクエストの候補を決定するべく、前記第2クロックサイクル数における第1クロックサイクルで前記第二群のリクエスト間の調整を行う段階と、
前記第2リクエストを決定するべく、前記複数の許可を受けるリクエストの候補の間で調整を行う段階とを有し、
前記第2リクエストは、前記第2クロックサイクル数における第2クロックサイクルで決定される請求項1から6の何れか一項に記載の方法。
【請求項8】
前記第二群のリクエストの間で調整を行う段階は、
複数の第1レベルアービタにおいて、前記第二群のリクエストの複数部分を受信する段階と、
前記複数の第1レベルアービタそれぞれにおいて、許可を受けるリクエストの候補を決定するべく、前記第二群のリクエストの前記複数部分の間で調整を行う段階とを含み、
前記複数の許可を受けるリクエストの候補の間で調整を行う段階は、
第2レベルアービタにおいて、前記複数の第1レベルアービタそれぞれから、前記許可を受けるリクエストの候補を受信する段階と、
前記第2レベルアービタにおいて、前記複数の許可を受けるリクエストの候補から前記第2リクエストを決定するべく、受信した前記複数の許可を受けるリクエストの候補の間で調整を行う段階とを含む、請求項7に記載の方法。
【請求項9】
前記方法は、
前記複数のリクエストから第3カテゴリに属すると判断される第三群のリクエストを提供する段階と、
第3リクエストを、前記第1アービトレーションスキームに送信するべきか、または、前記第2アービトレーションスキームに送信するべきかを判断するべく、前記第三群のリクエストから前記第3リクエストに関連する因子を評価する段階
を更に備える請求項1から8の何れか一項に記載の方法。
【請求項10】
前記因子を評価する段階は、
前記第3リクエストに関する重み付けまたはステータスを使用して、前記第3リクエストを、前記第1アービトレーションスキームに送信するべきか、または、前記第2アービトレーションスキームに送信するべきかを判断する段階を有する請求項9に記載の方法。
【請求項11】
前記重み付けは、以前に許可を受けたリクエストに関する情報を含み、
前記ステータスは、前記第3リクエストに関する優先順位またはレイテンシに関する請求項10に記載の方法。
【請求項12】
前記第二群のリクエストの間で調整を行う段階は、
前記第二群のリクエストが調整を行うべきリクエストを有していない場合に、前記複数の第1レベルアービタのうちの第1のアービタが前記第二群のリクエストの間での前記調整を行い、選択したリクエストを、前記第2レベルアービタを介さずに前記第2リクエストとして出力する段階を更に備える、請求項8に記載の方法。
【請求項13】
前記第2アービトレーションスキームへ送信されうる前記第二群のリクエストの個数は、前記第1アービトレーションスキームへ送信されうる前記第一群のリクエストの個数よりも多い、請求項1から12の何れか一項に記載の方法。
【請求項14】
複数のエンティティから、共有リソースに対する複数のリクエストを受信するロジックと、
前記複数のエンティティによって共有される前記共有リソースについての複数のカテゴリのうちの1つのカテゴリを、前記複数のリクエストのそれぞれに対して判断するロジックと、
前記複数のリクエストから、第1カテゴリに属すると判断される第一群のリクエストと、第2カテゴリに属すると判断される第二群のリクエストとを提供するロジックと
前記第一群のリクエストを、第1アービトレーションスキームへと送信するロジックであって、前記第1アービトレーションスキームは、第1調整結果を決定すべく第1クロックサイクル数を用いるように構成された第1アービトレーションアルゴリズムを実装し、前記第1クロックサイクル数は前記第1調整結果を決定すべく前記第1アービトレーションスキームで用いられる第1時間に相当し、前記第1調整結果は前記第一群のリクエストから許可されるべき第1リクエストを選択する、前記第1アービトレーションスキームへと送信するロジックと、
前記第二群のリクエストを第2アービトレーションスキームに送信するロジックであって、前記第2アービトレーションスキームは、第2調整結果を決定すべく第2クロックサイクル数を用いるように構成された第2アービトレーションアルゴリズムを実装し、前記第1クロックサイクル数と前記第2クロックサイクル数とは異なり、前記第2クロックサイクル数は、前記第2調整結果を決定すべく前記第2アービトレーションスキームで用いられる、前記第1時間とは異なる第2時間に相当し、前記第2調整結果は前記第二群のクエストの第2セットから許可されるべき第2リクエストを選択する、前記第2アービトレーションスキームへと送信するロジックと、
を備える装置。
【請求項15】
前記第1クロックサイクル数は固定されており、前記第2クロックサイクル数は可変である請求項14に記載の装置。
【請求項16】
前記第1クロックサイクル数は可変であり、前記第2クロックサイクル数は可変であり、前記第1クロックサイクル数は、前記第2クロックサイクル数よりも短い請求項14に記載の装置。
【請求項17】
前記第1クロックサイクル数は、前記第2クロックサイクル数よりも短い請求項14または15に記載の装置。
【請求項18】
前記第1アービトレーションスキームは
前記第1リクエストを決定するべく、前記一群のリクエストの間で調整を行うロジックを有し、
前記第1リクエストは、前記第1クロックサイクル数の間に決定される請求項14から17の何れか一項に記載の装置。
【請求項19】
前記調整を行うロジックは、
少なくとも1つのアービタにおいて前記一群のリクエストを受信するロジックと、
前記少なくとも1つのアービタにおいて、許可を受けるリクエストの候補を決定するロジックと、
前記許可を受けるリクエストの候補を前記第1リクエストとして供給するロジックとを含む請求項18に記載の装置。
【請求項20】
前記第2アービトレーションスキームは
複数の許可を受けるリクエストの候補を決定するべく、前記第2クロックサイクル数における第1のクロックサイクルで前記第二群のリクエスト間の調整を行うロジックと、
前記第2リクエストを決定するべく、前記複数の許可を受けるリクエストの候補の間で調整を行うロジックとを有し、
前記第2リクエストは、前記第2クロックサイクル数における第2クロックサイクルで決定される請求項14から19の何れか一項に記載の装置。
【請求項21】
複数の第1レベルアービタを更に備え、
前記第二群のリクエストの間で調整を行うロジックは、
前記複数の第1レベルアービタにおいて、前記第二群のリクエストの複数部分を受信するロジックと、
前記複数の第1レベルアービタそれぞれにおいて、許可を受けるリクエストの候補を決定するべく、前記第二群のリクエストの前記複数部分の間で調整を行うロジックとを含み、
前記複数の許可を受けるリクエストの候補の間で調整を行うロジックは、
第2レベルアービタにおいて、前記複数の第1レベルアービタそれぞれから、前記許可を受けるリクエストの候補を受信するロジックと、
前記第2レベルアービタにおいて、前記複数の許可を受けるリクエストの候補から前記第2リクエストを決定するべく、前記複数の許可を受けるリクエストの候補の間で調整を行うロジックと含む、請求項20に記載の装置。
【請求項22】
前記第二群のリクエストの間で調整を行うロジックは、
前記第二群のリクエストが調整を行うべきリクエストを有していない場合に、前記複数の第1レベルアービタのうちの第1のアービタが前記第二群のリクエストの間での前記調整を行い、選択したリクエストを、前記第2レベルアービタを介さずに前記第2リクエストとして出力するロジックを更に備える、請求項21に記載の装置。
【請求項23】
前記第2アービトレーションスキームへ送信されうる前記第二群のリクエストの個数は、前記第1アービトレーションスキームへ送信されうる前記第一群のリクエストの個数よりも多い、請求項14から22の何れか一項に記載の装置。
【請求項24】
請求項14から23の何れか一項に記載の装置と、
前記共有リソースと、
前記共有リソースへのアクセスを共有する前記複数のエンティティと
を備えるシステム。
【発明の詳細な説明】
【技術分野】
【0001】
[優先権情報]
本非仮出願は、2011年4月20日出願の米国仮出願61/477,445号"Variable Length Arbitration(可変長アービトレーション)"の優先権を主張するものであり、上記出願の内容は、参照により本明細書に組み込まれる。
【背景技術】
【0002】
本明細書に特に示されていない限り、本章において記載される方法は、本願特許請求の範囲に対する従来技術ではなく、この章に記載することによって従来技術と認めているわけではない。
【0003】
コンピュータシステムは、メモリ、バスおよび通信インターフェースといった数多くの共有されるシステムリソースを含む。そして、数多くのエンティティ(例えば、ユーザおよびクライアント)が、このようなリソースを共有するようになってきている。異なるエンティティは、コンピュータシステムにおける共有リソースの使用に対して異なる要求を有する。例えば、コンピュータ処理ユニット(CPU)のようなエンティティは、命令をフェッチする場合にアクセスレイテンシに注目し、ダイレクトメモリアクセス(DMA)コントローラのような別のエンティティは、スループットに注目する。共有リソースの使用を効率的に管理し、コンピュータシステムにおける異なるエンティティの要求に最も良好に応えるようにするために、アービタ(arbiter:調整回路)が使用される。
【0004】
ラウンドロビン(総当たり)、加重ラウンドロビン、最も最近使用されなかったもの(least recently used:LRU)、最も最近使用されたもの(most recently used:MRU)等、様々なアービトレーションアルゴリズムが開発されており、異なるシステムの要求に応えるべく、アービトレーションの性能および公平さが改善されてきた。しかしながら、システム速度が速くなり、アービトレーションに参加するエンティティの数が増加し、アービタがシステム設計要求に応えるのが難しくなってきている。例えば、64個のクライアントが1つのリソースを共有する場合、64ビットのリクエストとなる。アービトレーションを行うサイクルは通常固定されており、例えば、1クロックサイクル毎に行われる。しかしながら、クロック速度が大きい場合、単純なラウンドロビンアルゴリズムであっても、1周期でアービトレーションを完了させるのは難しい。
【発明の概要】
【0005】
一実施形態では、方法は、複数のエンティティによって共有される共有リソースに対する複数のリクエストについて、複数のカテゴリを決定する。複数のエンティティのうちの1つのエンティティから共有リソースに対するリクエストを受信する。方法は、受信したリクエストについて、複数のカテゴリのうちの1つのカテゴリを判断する。受信したリクエストが第1カテゴリに属すると判断された場合には、方法は、受信したリクエストを、第1時間周期で調整結果を決定するように構成された第1アービトレーションスキームに送信する。受信したリクエストが第2カテゴリに属すると判断された場合には、方法は、受信したリクエストを第1時間周期とは異なる第2時間周期で調整結果を決定するように構成された第2アービトレーションスキームに送信する。
【0006】
一実施形態では、第1時間周期は固定されており、第2時間周期は可変である。
【0007】
一実施形態では、第1時間周期は可変であり、第2時間周期は可変であり、第1時間周期は、第2時間周期よりも短い。
【0008】
一実施形態において、受信したリクエストが、第3カテゴリに属すると判断された場合には、方法は、受信したリクエストを、第1アービトレーションスキームに送信するべきか、または、第2アービトレーションスキームに送信するべきかを判断するべく、受信したリクエストに関連する因子を評価する段階を更に備える。
【0009】
一実施形態では、装置は、複数のエンティティのうちの1つのエンティティから、共有リソースに対するリクエストを受信するロジックと、複数のエンティティによって共有される共有リソースについての複数のカテゴリのうちの1つのカテゴリを、受信されたリクエストに対して判断するロジックと、受信されたリクエストが第1カテゴリに属すると判断された場合には、受信されたリクエストを、第1時間周期で調整結果を決定するよう構成された第1アービトレーションスキームへと送信するロジックと、受信したリクエストが第2カテゴリに属すると判断された場合には、受信したリクエストを、第1時間周期とは異なる長さの第2時間周期で調整結果を決定するように構成された第2アービトレーションスキームに送信するロジックとを備える。
【0010】
一実施形態において、システムは、共有リソースと、共有リソースへのアクセスを共有する複数のエンティティとを備える。
【0011】
以下の詳細な説明および添付の図面により、本発明の本質及び利点の詳細な理解が提供される。
【図面の簡単な説明】
【0012】
図1】一実施形態に係るリソースを共有するシステムを単純化して示した図である。
図2】一実施形態に係るアービタの単純化した例を示した図である。
図3】一実施形態に係るリクエスト制御ブロックの詳細な例を示した図である。
図4】一実施形態に係るレベル1アービトレーションの詳細な例を示した図である。
図5】一実施形態に係る可変長アービトレーションを実行する方法を単純化して示したフローチャートである。
【発明を実施するための形態】
【0013】
以下に、可変長アービトレーションシステムの技術について記載する。以下の記載では、説明の目的から、本発明の実施形態の完全な理解を提供するべく、数多くの例及び具体的な詳細事項が記載される。特許請求の範囲で規定される特定の実施形態は、これら例のみに記載される特徴の一部又は全て、若しくは、以下に記載されるその他の特徴との組み合わせを含んでもよく、また、以下に記載される特徴及び原理の改良及び均等物を含んでもよい。
【0014】
図1には、一実施形態に係るリソースを共有する単純化されたシステム100が示されている。アービタ102は、可変クロックサイクルで、メモリ104のような共有リソース104に対してアービテーションを実行する。リソースを共有するエンティティ106には、CPU106−1、液晶ディスプレイ(LCD)コントローラ106−2、および、ダイレクトメモリアクセス(DMA)コントローラ106−3が含まれる。その他の共有リソース104およびエンティティ106も考えられる。また、共有リソース104がここではメモリ104と称されているが、その他の共有リソースも考えられる。
【0015】
アービタ102は、可変長アービトレーション(variable length arbitration:VLA)を使用して、メモリ104へのアクセスをアービトレーション(調整)する。可変長アービトレーションとは、アービタ102が、例えば、エンティティ要求の現在の状態のような様々な因子に応じて可変のクロックサイクルでアービトレーションを実行することができることを意味する。以下に詳細に記載するように、アービタ102は、2つの異なるレベル(別の実施形態では、2つ以上のレベル)で調整を実行してもよい。一実施形態において、アービトレーションの第1レベルである"レベル0"およびアービトレーションの第2レベルである"レベル1"が提供される。レベル0アービトレーションは、レベル1アービトレーションが実行される周期数よりも少ない周期数で実行される。レベル0アービトレーションは、固定されていても可変であってもよく、レベル1アービトレーションは可変である。例えば、レベル0アービトレーションは、1周期で実行され、レベル1アービトレーションは、1サイクルまたは複数サイクル、例えば、2周期(2周期に限定されない)といった可変周期で実行される。レベル0アービトレーションまたはレベル1アービトレーションを提供することにより、可変長アービトレーションを提供する。
【0016】
アービタ102は、リクエストを3つのカテゴリに分類する。第1カテゴリは、低いレイテンシおよび高い優先順位を要求するエンティティリクエストを含む。キャッシュラインリフィルのリクエストのようなCPUリクエストは、第1カテゴリに属するリクエストの典型的な例である。一実施形態において、第1カテゴリに属するリクエストは、レベル0リクエストにマッピングされる。
【0017】
第2カテゴリは、可変優先順位および可変レイテンシ要求を有するエンティティリクエストを含む。例えば、リクエストに関連付けられた因子に基づいて、要求が低くなったり高くなったりする。第2カテゴリに属するリクエストは、現状に応じて、レベル0リクエストまたはレベル1リクエストにマッピングされてもよい。LCDコントローラ106−2からのリクエストは、第2カテゴリにマッピングされるリクエストの一例である。例えば、LCDコントローラ106−2に対してバッファされているリクエストがいくつ存在するかを示すディスプレイバッファステータスに基づいて、LCDコントローラ106−3からのリクエストの優先順位が変更されてもよい。
【0018】
第3カテゴリは、DMAコントローラ106−3のような、コンピュータシステム100におけるその他のエンティティのリクエストを含む。このようなリクエストは、レベル1にマッピングされ、優先順位は高くないまたはレイテンシが低い。
【0019】
図2には、一実施形態に係るアービタ102の単純化した例が示されている。アービタ102は、リクエスト制御ブロック202、レベル0アービトレーションリング204、レベル1アービトレーションリング206、および、グラント(許可)アービタ(Gnt Arb)208を備える。
【0020】
リクエスト制御ブロック202は、レベル0アービトレーションリング204および/またはレベル1アービトレーションリング206にリクエストを送信する。リクエスト制御ブロック202は、現在のステータスおよび入力条件といった入力基準に基づいて、リクエストを送信してもよい。例えば、リクエスト制御ブロック202は、リクエストがどのカテゴリに属すか判断し、リクエストをレベル0アービトレーションリング204またはレベル1アービトレーションリング206に送信してもよい。例えば、カテゴリ0、カテゴリ1およびカテゴリ2の3つのカテゴリが提供される。カテゴリ0のリクエストは、レベル0アービトレーションリング204に送信され、カテゴリ2のリクエストは、レベル1アービトレーションリング206に送信される。カテゴリ1のリクエストは、レベル0アービトレーションリング204またはレベル1アービトレーションリング206に送信されてもよい。QoSおよび/または加重をカテゴリ1のリクエストに使用して、これらリクエストをレベル0アービトレーションリング204に送信すべきか、または、レベル1アービトレーションリング206に送信すべきかを決定してもよい。QoSは、優先順位およびレイテンシ要求のような、リクエストと関連付けられた因子に基づいてもよい。エンティティ106からの様々なリクエストについてのステータスは変化する場合がある。例えば、エンティティ106での状態が変化すると、優先順位またはレイテンシの要求は、重み付けに影響を与える変化となりうる。例えば、バッファが一杯になると、優先順位が高くなるといったように、リクエストに対する優先順位またはレイテンシ要求が変化する。
【0021】
一実施形態において、レベル0アービトレーションリング204は、1クロックサイクルアービトレーションが行われるリクエストを受信する。例えば、レベル0アービトレーションリング204は、8個のリクエスト入力を受信する。レベル0アービトレーションリング204は、1クロックサイクルで実行することができる複数のアービトレーションアルゴリズムをサポートする。一実施形態において、リクエストおよび重み付け(weighting)が受信され、レベル0アービトレーションリング204は、重み付けに基づいて、どのリクエストに対してメモリ104へのアクセスを許可するか決定する。重み付けは、エンティティ106からの何れのリクエストが以前許可されたか(すなわち、エンティティ106から最近処理されていないリクエストの重み付けが高くなる)に基づいてもよい。
【0022】
レベル1アービトレーションリング206は、リクエストを受信し、1クロックサイクルから2クロックサイクルといったように、可変長アービトレーション時間を使用する。アービトレーション時間は、現在のステータスおよび使用されるアービトレーションに依存してもよい。一実施形態では、レベル1アービトレーションリング206は、62個のリクエスト入力および1つの重み付けを受信する。重み付けは、メモリ104へのアクセスが過去に許可されたリクエストに関する情報であってもよい。レベル1アービトレーションリング206は、重み付けに基づいて、2つ(または2つ以上)のアービトレーションを行い、どのリクエストに対してメモリ104へのアクセスを許可するか決定する。
【0023】
グラントアービタ208は、許可選択信号gnt_selに基づいて、最終的な許可出力を決定する。すなわち、8つのアービトレーショングループArb Group00からArb Group 07のうち、1つのアービトレーショングループのみが有効なリクエストを有している場合は、gnt_lvl1出力としてgnt_cyc1を選択し、それ以外の場合には、gnt_lvl1出力としてgnt_cyc2を選択する。
【0024】
図3には、一実施形態に係るリクエスト制御ブロック202の詳細な例が示されている。リクエスト制御ブロック202は、n個のリクエストマッパ(req_mapper)302を含む。
【0025】
リクエストマッパ302は、リクエストがカテゴリ0リクエストであるかを判断する。リクエストがカテゴリ0リクエストである場合、リクエストがレベル0アービトレーションリング204に送信される(req_out_lvl0[i])。さらに、重み付けW_lvl0[i]が送信される。リクエストマッパ302が、リクエストがカテゴリ2リクエストであると判断した場合、リクエストマッパ302は、リクエストをレベル1アービトレーションリング206に送信する(req_out_lvl1[i])。リクエストがカテゴリ1リクエストである場合、リクエストマッパ302は、例えば、サービス品質(QOS_in)および重み付け(weight[i])のようなリクエストに関連する因子を考慮して、選択すべきレベルを判断する。QoSは、リクエストに関連付けられた優先順位に基づいてもよい。重み付けは、様々な因子に基づいてもよく、例えば、以前にどのリクエストにアクセス許可が与えられたかに基づいてもよい。信号QOS_inがハイ(High)である場合、リクエストは、レベル0アービトレーションリング204に送信される。ハイでない場合、重み付けが閾値よりも高い場合には、リクエストがレベル0アービトレーションリング204に送信され、重み付けが閾値よりも低い場合には、レベル1アービトレーションリング206に送信される。重み付けは、以前に許可されたリクエストに基づいてもよい。リクエストマッパ302は、重み付けを更新および/または消去して(W_lvl0[i]およびW_lvll [i])、現在のステータスおよび許可信号(gnt)に基づいて信号(req_out_lvl0およびreq_out_lvl1)を出力する。
【0026】
制御信号(ctrl[i])はシステムレジスタから出力される。制御信号は、リクエストイネーブル、リクエストの初期重み付け等、リクエストに対する制御情報を含む。
【0027】
リクエストマッパ302のタイミングは一定であり、計算時間の全体的な複雑性に影響を与えることはない。
【0028】
図4には、一実施形態に係るレベル1アービトレーションリング206の詳細な例が示されている。レベル1アービトレーションリング206が2層構造となっている個所にツリー構造が提供されている。その他の構造についても明らかである。レベル0アービトレーションリング204(図示せず)は、1つのアービトレーショングループ404であってもよい。
【0029】
シフタ402は、バイトアラインされているアービトレーション開始点を判断する。例えば、シフタ402は、0から7ビットをシフトさせてもよい。シフトにより、様々なアービトレーショングループ404においてアービトレーションを開始させてもよい。
【0030】
アービトレーショングループ404(arb_group0*)はそれぞれ、リクエストの一群(例えば、8個のリクエスト(req_sft[7:0]))および重み付け入力(W)を受信する。アービトレーショングループ404はそれぞれ、8個のリクエストの間の調整を行い、1つのリクエストを出力するべく選択する。
【0031】
レベル1アービトレーションでは、複数のレベル0リクエスト間の調整を行うべく、アービトレーショングループ404のうちの1つが選択される。この場合、その他のアービトレーショングループは、アービテーションを行うべきリクエストを有していなくてもよい。一例では、アービトレーショングループ404−0は、8個のレベル0リクエストを受信し、これらの間の調整を行う。1つのリクエストが選択され、選択されたリクエストがロジック406を介して出力される。このリクエストが、グラントアービトレーションロジック208に転送される。グラントアービトレーションロジック208が選択信号を受信すると、リクエストが出力される。上記したプロセスが、1クロックサイクルで行われる。
【0032】
レベル1アービトレーションでは、アービトレーショングループ404は、重み付け(w)を使用して8個のリクエスト間の調整を行い、調整の結果、許可を勝ち得たリクエストを出力する。アービトレーショングループ404はそれぞれ、許可を勝ち得たリクエストおよび重み付けを、第2レベルアービトレーショングループ(arb_group10)408へと出力してもよい。第2レベルアービトレーショングループ408は、受信した入力に対して第2アービトレーションを実行する。例えば、第2レベルアービトレーショングループ408は、8個のリクエスト入力および8個の対応する重み付け入力を受信し、グラントアービトレーションロジック208に出力するべき、許可を勝ち得るリクエストを決定する。グラントアービトレーションロジック208が選択信号を受信すると、アービトレーショングループ408から許可を勝ち得たリクエストが出力される。この場合、レベル1アービトレーションは、2クロックサイクルで行われる。
【0033】
図5は、一実施形態に係る可変長アービトレーションを実行する方法を単純に示したフローチャート500である。段階502では、メモリ104に対する複数のリクエストについて、様々なカテゴリが決定される。メモリ104は、複数のエンティティ106によって共有される。
【0034】
段階504では、アービタ102は、エンティティ106からメモリ104に対するリクエストを受信する。段階506では、アービタ102は、受信したリクエストに対するカテゴリを判断する。例えば、リクエストは、3つのカテゴリに属する可能性がある。
【0035】
段階506において、アービタ102が、受信したリクエストが、カテゴリ0、カテゴリ1またはカテゴリ2のいずれに属するかを判断する。リクエストが、カテゴリ0に属する場合には、アービタ102は、受信したリクエストを、第1時間周期で調整結果(arbitration decision)を決定するように構成された第1アービトレーションスキームに送信する。例えば、アービタ102は、リクエストをレベル0アービトレーションリング204に送信する。リクエストがカテゴリ2に属する場合、アービタ102はリクエストを、第1時間周期とは異なる長さの第2時間周期で調整結果を決定するように構成された第2アービトレーションスキームに送信する。例えば、アービタ102は、リクエストをレベル1アービトレーションリング206に送信する。
【0036】
リクエストがカテゴリ1に属する場合、アービタ102は、リクエストに関連する因子に基づいて、リクエストをカテゴリ0またはカテゴリ2に分類すべきかを判断する。例えば、アービタ102は、リクエストに対するQoSまたは重み付けを分析して、どちらのカテゴリにリクエストを分類すべきか判断する。アービタ102は、リクエストをカテゴリ0またはカテゴリ2に分類する。
【0037】
上記のようにして、可変長アービトレーションが提供される。リクエストの分類に応じて、異なるアービトレーション長さを提供してもよい。これにより、リクエストの優先順位に基づいてアービトレーションの長さを変更することが可能になる。
【0038】
本明細書で使用されている「1の(a、an、the)」という言葉は、文中に明確にそれが1つのみであると示されていない限り、複数を含むことを意味している。また、本明細書及び添付の特許請求の範囲で使用されている「〜の内に(in)」という言葉は、特に明記されていない限り、「〜の中に(in)」及び「〜上に(on)」という意味を含む。
【0039】
上記の説明は、本発明の様々な実施形態を、本発明の側面をどのように実装するかの例と共に、例示したものである。上記の例および実施形態は、唯一の実施形態としてみなされるべきではなく、添付の特許請求の範囲によって規定される本発明の柔軟性及び利点を例示するために示されている。上記の開示および添付の特許請求の範囲に基づいて、その他の配置、実施形態、実装および均等物を、特許請求の範囲に規定される本発明の範囲内において採用可能である。
図1
図2
図3
図4
図5