(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-06-25
(45)【発行日】2024-07-03
(54)【発明の名称】共有リソースへのアクセスを調停するためのシステム及び方法
(51)【国際特許分類】
G06F 13/362 20060101AFI20240626BHJP
【FI】
G06F13/362 510E
(21)【出願番号】P 2021078586
(22)【出願日】2021-05-06
【審査請求日】2024-03-12
(32)【優先日】2020-07-16
(33)【優先権主張国・地域又は機関】US
(32)【優先日】2020-10-21
(33)【優先権主張国・地域又は機関】US
【早期審査対象出願】
(73)【特許権者】
【識別番号】390019839
【氏名又は名称】三星電子株式会社
【氏名又は名称原語表記】Samsung Electronics Co.,Ltd.
【住所又は居所原語表記】129,Samsung-ro,Yeongtong-gu,Suwon-si,Gyeonggi-do,Republic of Korea
(74)【代理人】
【識別番号】110000051
【氏名又は名称】弁理士法人共生国際特許事務所
(72)【発明者】
【氏名】呉 晨 志
【審査官】北村 学
(56)【参考文献】
【文献】特表2004-529541(JP,A)
【文献】特表2004-534462(JP,A)
【文献】特開2008-252753(JP,A)
【文献】特表2009-516478(JP,A)
【文献】米国特許出願公開第2001/0023469(US,A1)
【文献】米国特許第7899927(US,B1)
【文献】国際公開第2015/083212(WO,A1)
(58)【調査した分野】(Int.Cl.,DB名)
IPC G06F 13/20 - 13/378
H04L 12/00 - 12/66
H04L 45/00 - 49/9057
(57)【特許請求の範囲】
【請求項1】
共有リソースへのアクセスを調停する方法であって、
複数のソースからデータを受信する段階と、
複数のキューに前記データを格納する段階
であって、前記複数のキューのうちの第1のキューは第1のソース及び第1の宛先に専用であり、前記複数のキューのうちの第2のキューは第2のソース及び第2の宛先に専用である、前記データを格納する段階と、
前記複数のキューに格納された
前記データに基づいて、前記複数のソースに関連する第1の次元及び複数の宛先に関連する第2の次元を含む少なくとも2つの次元に関連する第1のデータ構造を生成する段階と、
前記第1のデータ構造に基づいて、前記第2の次元を含む少なくとも1つの次元に関連する第2のデータ構造を生成する段階と、
前記第2のデータ構造に基づいて、前記複数の宛先から
前記第1の宛先を選択するための第1の調停を行う段階と、
前記第1の調停に基づく前記第1の宛先の前記選択に応答して、前記第1のデータ構造
に基づいて、更に前記
第1の宛先の前記選
択に基づいて、前記複数のソースから
前記第1のソースを選択するための第2の調停を行う段階と、
前記第1の調停に基づく前記第1の宛先の前記選択、及び前記第2の調停に基づく前記第1のソースの前記選択に応答して、前記第1のキューを識別する段階と、
前記
第1のキューの
前記識別に応答して、前記第1
のキューに格納されたデータを取得する段階と、
前記取得されたデータを前記共有リソースに提供する段階と、を有することを特徴とする方法。
【請求項2】
前記第1のデータ構造は、複数の第1のビットを含み、
前記複数の第1のビットの中の1つの第1のビットは、前記
第1のソース及び前記
第1の宛先に関連し、
前記第1のビットは、前記
第1のキューに格納され
ている
前記データに基づいて設定されることを特徴とする請求項
1に記載の方法。
【請求項3】
前記第2のデータ構造は、複数の第2のビットを含み、
前記複数の第2のビットの中の1つの第2のビットは、前記
第1の宛先に関連し、
前記第2のデータ構造を生成する段階は、前記第2の次元として前記
第1の宛先を有する前記第1のデータ構造のビットのサブセットに基づいて論理OR演算を実行する段階を含むことを特徴とする請求項
2に記載の方法。
【請求項4】
前記
第1の宛先
の前記選択に基づいて、前記第2の調停を行うためにロジックを動的に割り当てる段階を更に含むことを特徴とする請求項1に記載の方法。
【請求項5】
前記共有リソースは、データ通信リンクであることを特徴とする請求項1に記載の方法。
【請求項6】
共有リソースへのアクセスを調停する方法であって、
複数のソースからデータを受信する段階と、
複数のキューに前記データを格納する段階
であって、前記複数のキューのうちの第1のキューは第1のソース、第1の属性、及び第1の宛先に専用であり、前記複数のキューのうちの第2のキューは第2のソース、第2の属性、及び第2の宛先に専用である、前記データを格納する段階と、
前記複数のキューに格納された
前記データに基づいて、前記複数のソースに関連する第1の次元、複数の属性に関連する第2の次元、及び複数の宛先に関連する第3の次元を含む少なくとも3つの次元に関連する第1のデータ構造を生成する段階と、
前記第1のデータ構造に基づいて、前記複数の属性に関連する
前記第2の次元、及び前記複数の宛先に関連する
前記第3の次元を含む少なくとも2つの次元に関連する第2のデータ構造を生成する段階と、
前記第2のデータ構造に基づいて、前記第3の次元を含む少なくとも1つの次元に関連する第3のデータ構造を生成する段階と、
前記第3のデータ構造に基づいて、前記複数の宛先から
前記第1の宛先を選択するための第1の調停を行う段階と、
前記第1の調停に基づく前記第1の宛先の前記選択に応答して、前記第2のデータ構造
に基づいて、更に前記
第1の宛先
の前記選択に基づいて、前記複数の属性から
前記第1の属性を選択するための第2の調停を行う段階と、
前記第1の属性の前記選択に応答して、前記第1のデータ構造、前記
第1の属性
の前記選択、及び前記
第1の宛先
の前記選択に基づいて、前記複数のソースから
前記第1のソースを選択するための第3の調停を行う段階と、
前記第1の調停に基づく前記第1の宛先の前記選択、前記第2の調停に基づく前記第1の属性の前記選択、及び前記第3の調停に基づく前記第1のソースの前記選択に応答して、前記第1のキューを識別する段階と、
前記
第1のキューの
前記識別に応答して、前記第1
のキューに格納されたデータを取得する段階と、
前記取得されたデータを前記共有リソースに提供する段階と、を有することを特徴とする方法。
【請求項7】
前記
第1の属性は、複数の優先順位レベルの中の1つの優先順位レベルであることを特徴とする請求項
6に記載の方法。
【請求項8】
前記第1のデータ構造は、複数の第1のビットを含み、
前記複数の第1のビットの中の1つの第1のビットは、前記
第1のソース、前記
第1の属性、及び前記
第1の宛先に関連し、
前記第1のビットは、前記
第1のキューに格納され
ている
前記データに基づいて設定されることを特徴とする請求項
6に記載の方法。
【請求項9】
前記第2のデータ構造は、複数の第2のビットを含み、
前記複数の第2のビットの中の1つの第2のビットは、前記
第1の属性及び前記
第1の宛先に関連し、
前記第2のデータ構造を生成する段階は、それぞれ前記第2の次元及び前記第3の次元として前記
第1の属性及び前記
第1の宛先を有する前記第1のデータ構造のビットのサブセットに基づいて論理OR演算を実行することを含むことを特徴とする請求項
8に記載の方法。
【請求項10】
前記第3のデータ構造は、複数の第3のビットを含み、
前記複数の第3のビットの中の1つの第3のビットは、前記
第1の宛先に関連し、
前記第3のデータ構造を生成する段階は、前記第3の次元として前記
第1の宛先を有する前記第2のデータ構造のビットのサブセットに基づいて論理OR演算を実行することを含むことを特徴とする請求項
9に記載の方法。
【請求項11】
前記
第1の宛先に基づいて、前記第2の調停を行うためにロジックを動的に割り当てる段階と、
前記
第1の属性及び前記
第1の宛先に基づいて、前記第3の調停を行うためにロジックを動的に割り当てる段階と、を更に含むことを特徴とする請求項
6に記載の方法。
【請求項12】
前記共有リソースは、データ通信リンクであることを特徴とする請求項
6に記載の方法。
【請求項13】
共有リソースへのアクセスを調停するシステムであって、
複数のソースからのデータを格納する複数のキューを格納するためのメモリ
であって、前記複数のキューのうちの第1のキューは第1のソース及び第1の宛先に専用であり、前記複数のキューのうちの第2のキューは第2のソース及び第2の宛先に専用である、前記メモリと、
前記メモリに結合され
た処理回路と、を備え、
前記処理回路は、
前記複数のキューに格納された
前記データに基づいて、前記複数のソースに関連する第1の次元及び複数の宛先に関連する第2の次元を含む少なくとも2つの次元に関連する第1のデータ構造を生成する段階と、
前記第1のデータ構造に基づいて、前記第2の次元を含む少なくとも1つの次元に関連する第2のデータ構造を生成する段階と、
前記第2のデータ構造に基づいて、前記複数の宛先から
前記第1の宛先を選択するための第1の調停を行う段階と、
前記第1の調停に基づく前記第1の宛先の前記選択に応答して、前記第1のデータ構造
に基づいて、更に前記
第1の宛先の前記選
択に基づいて、前記複数のソースから
前記第1のソースを選択するための第2の調停を行う段階と、
前記第1の調停に基づく前記第1の宛先の前記選択、及び前記第2の調停に基づく前記第1のソースの前記選択に応答して、前記第1のキューを識別する段階と、
前記
第1のキューの
前記識別に応答して、前記第1
のキューに格納されたデータを取得する段階と、
前記取得されたデータを前記共有リソースに提供する段階と、を実行させるためのロジックを含むことを特徴とするシステム。
【請求項14】
前記第1のデータ構造は、複数の第1のビットを含み、
前記複数の第1のビットの中の1つの第1のビットは、前記
第1のソース及び前記
第1の宛先に関連し、
前記第1のビットは、前記
第1のキューに格納され
ている
前記データに基づいて設定されることを特徴とする請求項
13に記載のシステム。
【請求項15】
前記第2のデータ構造は、複数の第2のビットを含み、
前記複数の第2のビットの中の1つの第2のビットは、前記
第1の宛先に関連し、
前記第2のデータ構造を生成する段階は、前記第2の次元として前記
第1の宛先を有する前記第1のデータ構造のビットのサブセットに基づいて論理OR演算を実行する段階を含むことを特徴とする請求項
14に記載のシステム。
【請求項16】
前記処理回路は、
前記
第1の宛先
の前記選択に基づいて、前記第2の調停を行うためにロジックを動的に割り当てる段階を実行させるためのロジックを更に含むことを特徴とする請求項
13に記載のシステム。
【請求項17】
前記共有リソースは、データ通信リンクであることを特徴とする請求項
13に記載のシステム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、共有リソースへのアクセスに関し、より詳細には、共有リソースへのアクセスを調整するスケーラブルな調停システム及び方法に関する。
【背景技術】
【0002】
データの1つ以上のソースが共有リソースを介して1つ以上の宛先にアクセスしたい多様な状況がある。例えば、1つ以上のソースはコンピューティングシステムのソフトウェアアプリケーションであり、宛先はデータストレージ装置の格納位置である。ストレージ装置へのアクセスは、例えばPeripheral Component Interconnect Express(PCIe)リンク等の共有データ通信リンクを介して行われる。仮に、複数のソフトウェアアプリケーションが特定の時間にデータストレージ装置にアクセスしたい場合でも、共有データ通信リンクは、一度に1つのアプリケーションがアクセスするように制限される。
【0003】
従って、効率的且つスケーラブル(scalable)な方法で共有リソースへのアクセスを調整/調停するメカニズムを有することが望まれる。
【先行技術文献】
【特許文献】
【0004】
【発明の概要】
【発明が解決しようとする課題】
【0005】
本発明は、上記従来の問題点に鑑みてなされたものであって、本発明の目的は、共有リソースへのアクセスを調整するスケーラブルな調停システム及び方法を提供することにある。
【課題を解決するための手段】
【0006】
上記目的を達成するためになされた本発明の一態様による共有リソースへのアクセスを調停する方法は、複数のソースからデータを受信する段階と、複数のキューに前記データを格納する段階と、前記複数のキューに格納されたデータに基づいて、前記複数のソースに関連する第1の次元及び複数の宛先に関連する第2の次元を含む少なくとも2つの次元に関連する第1のデータ構造を生成する段階と、前記第1のデータ構造に基づいて、前記第2の次元を含む少なくとも1つの次元に関連する第2のデータ構造を生成する段階と、前記第2のデータ構造に基づいて、前記複数の宛先から1つの宛先を選択するための第1の調停を行う段階と、前記第1のデータ構造及び前記選択された宛先に基づいて、前記複数のソースから1つのソースを選択するための第2の調停を行う段階と、前記選択されたソース及び前記選択された宛先に関連する前記複数のキューの中の1つに格納されたデータを取得する段階と、前記取得されたデータを前記共有リソースに提供する段階と、を有する。
【0007】
前記複数のキューの中の特定のキューは、前記複数のソースの中の特定のソース及び前記複数の宛先の中の特定の宛先に関連し、前記特定のキューは、前記特定の宛先にアドレス指定された前記特定のソースからのデータを格納し得る。
前記第1のデータ構造は、複数の第1のビットを含み、前記複数の第1のビットの中の1つの第1のビットは、前記特定のソース及び前記特定の宛先に関連し、前記第1のビットは、前記特定のキューに格納されるデータに基づいて設定され得る。
前記第2のデータ構造は、複数の第2のビットを含み、前記複数の第2のビットの中の1つの第2のビットは、前記特定の宛先に関連し、前記第2のデータ構造を生成する段階は、前記第2の次元として前記特定の宛先を有する前記第1のデータ構造のビットのサブセットに基づいて論理OR演算を実行する段階を含み得る。
前記選択された宛先に基づいて、前記第2の調停を行うためにロジックを動的に割り当てる段階を更に含み得る。
前記共有リソースは、データ通信リンクであり得る。
【0008】
上記目的を達成するためになされた本発明の他の態様による共有リソースへのアクセスを調停する方法は、複数のソースからデータを受信する段階と、複数のキューに前記データを格納する段階と、前記複数のキューに格納されたデータに基づいて、前記複数のソースに関連する第1の次元、複数の属性に関連する第2の次元、及び複数の宛先に関連する第3の次元を含む少なくとも3つの次元に関連する第1のデータ構造を生成する段階と、前記第1のデータ構造に基づいて、前記複数の属性に関連する第2の次元、及び前記複数の宛先に関連する第3の次元を含む少なくとも2つの次元に関連する第2のデータ構造を生成する段階と、前記第2のデータ構造に基づいて、前記第3の次元を含む少なくとも1つの次元に関連する第3のデータ構造を生成する段階と、前記第3のデータ構造に基づいて、前記複数の宛先から1つの宛先を選択するための第1の調停を行う段階と、前記第2のデータ構造及び前記選択された宛先に基づいて、前記複数の属性から1つの属性を選択するための第2の調停を行う段階と、前記第1のデータ構造、前記選択された属性、及び前記選択された宛先に基づいて、前記複数のソースから1つのソースを選択するための第3の調停を行う段階と、前記選択されたソース、前記選択された属性、及び前記選択された宛先に関連する前記複数のキューの中の1つに格納されたデータを取得する段階と、前記取得されたデータを前記共有リソースに提供する段階と、を有する。
【0009】
前記複数のキューの中の特定のキューは、前記複数のソースの中の特定のソース、前記複数の属性の中の特定の属性、及び前記複数の宛先の中の特定の宛先に関連し、前記特定のキューは、前記特定の属性、前記特定のソース、及び前記特定の宛先を有するデータを格納し得る。
前記特定の属性は、複数の優先順位レベルの中の1つの優先順位レベルであり得る。
前記第1のデータ構造は、複数の第1のビットを含み、前記複数の第1のビットの中の1つの第1のビットは、前記特定のソース、前記特定の属性、及び前記特定の宛先に関連し、前記第1のビットは、前記特定のキューに格納されるデータに基づいて設定され得る。
前記第2のデータ構造は、複数の第2のビットを含み、前記複数の第2のビットの中の1つの第2のビットは、前記特定の属性及び前記特定の宛先に関連し、前記第2のデータ構造を生成する段階は、それぞれ前記第2の次元及び前記第3の次元として前記特定の属性及び前記特定の宛先を有する前記第1のデータ構造のビットのサブセットに基づいて論理OR演算を実行することを含み得る。
前記第3のデータ構造は、複数の第3のビットを含み、前記複数の第3のビットの中の第3のビットは、前記特定の宛先に関連し、前記第3のデータ構造を生成する段階は、前記第3の次元として前記特定の宛先を有する前記第2のデータ構造のビットのサブセットに基づいて論理OR演算を実行することを含み得る。
前記方法は、前記選択された宛先に基づいて、前記第2の調停を行うためにロジックを動的に割り当てる段階と、前記選択された属性及び前記選択された宛先に基づいて、前記第3の調停を行うためにロジックを動的に割り当てる段階と、を更に含み得る。
【0010】
上記目的を達成するためになされた本発明の一態様による共有リソースへのアクセスを調停するシステムは、複数のソースからのデータを格納する複数のキューを格納するためのメモリと、前記メモリに結合される処理回路と、を備え、前記処理回路は、前記複数のキューに格納されたデータに基づいて、前記複数のソースに関連する第1の次元及び複数の宛先に関連する第2の次元を含む少なくとも2つの次元に関連する第1のデータ構造を生成する段階と、前記第1のデータ構造に基づいて、前記第2の次元を含む少なくとも1つの次元に関連する第2のデータ構造を生成する段階と、前記第2のデータ構造に基づいて、前記複数の宛先から1つの宛先を選択するための第1の調停を行う段階と、前記第1のデータ構造及び前記選択された宛先に基づいて、前記複数のソースから1つのソースを選択するための第2の調停を行う段階と、前記選択されたソース及び選択された宛先に関連する前記複数のキューの中の1つに格納されたデータを取得する段階と、前記取得されたデータを前記共有リソースに提供する段階と、を実行させるためのロジックを含む。
【0011】
本発明は、共有リソースへのアクセスを調整/調停するための効率的且つスケーラブルなメカニズムを提供する。調停メカニズムは、特定の調停レベルから複数のアービタの必要性を取り除く複数の調停レベルを許容する。調停メカニズムは、調停を行う間、データを中間キューにコピーする必要性を更に取り除く。アービタの個数の減少及び中間キューの除去は、ハードウェアの資源、コスト、ダイ面積の条件、及び/又は電力使用量の面における節約(saving)を提供する。中間キューへのデータのコピーを回避すると、レイテンシ及び処理量(throughput)の面での性能もまた改善される。更に、データが中間キューにコピーされることを取り除くことによって、中間コピーに必要な任意のセキュリティ対策も省くことができる。
【0012】
本発明の実施形態の特徴、態様、及びこれらの点は、詳細な説明、請求の範囲、及び図面に関連付けて考慮することで、更に十分に理解される。当然、本発明の実際の範囲は、請求範囲によって定義される。
【発明の効果】
【0013】
本発明による方法及びシステムによれば、特定の調停レベルから複数のアービタの必要性を取り除くことにより、コスト、面積、電力、及び性能における全ての改善を提供することができる。
【図面の簡単な説明】
【0014】
【
図1】従来のマルチレベル調停システムにおける概念的なレイアウト図である。
【
図2】HOL(head of line)ブロッキングを解決するための従来のマルチレベル調停システムにおける概念的なレイアウト図である。
【
図3】本発明の一実施形態による調停システムのブロック図である。
【
図4】一実施形態による3レベル調停システムの多様な構成要素の概念的なレイアウト図である。
【
図5】一実施形態による2レベル調停システムによって生成される例示的なヒントマップ(hint maps)の概念的なレイアウト図である。
【
図6】一実施形態による3レベル調停システムによって生成される例示的なヒントマップの概念的なレイアウト図である。
【
図7】一実施形態による2レベル調停システムにおける共有リソースへのアクセスを調停するためのプロセスのフローチャートである。
【
図8】一実施形態による3レベル調停システムにおける共有リソースへのアクセスを調停するためのプロセスのフローチャートである。
【発明を実施するための形態】
【0015】
以下、本発明を実施するための形態の具体例を、図面を参照しながら詳細に説明する。同じ参照符号は、他に説明がない限り多様な図に亘って同じ構成要素を指す。本発明は、多様な異なる形態で実現され、ここに例示する実施形態に限定されるものと解釈してはならない。例示する実施形態は、本発明の態様及び特徴を当業者に完全に伝えることができるように例示として提供する。従って、本発明の態様及び特徴の完全な理解のために当業者に必要とされないプロセス、構成要素、及び技術は説明しないことがある。特に言及がない限り、同じ図面符号は図面及び説明において同じ構成要素を示し、それについての説明は繰り返さない。また、図面において、構成要素、層、及び領域の相対的な大きさは、明確にするために誇張及び/又は単純化される。
【0016】
一般的な用語として、本発明の実施形態は、共有リソース(例えば、共有シリアル(serial)リンク)への調停を提供するためのシステム及び方法に関する。このような調停は、複数のソースが共有リソースを介して限られた数の宛先にアクセスしようとする際に好ましい。例えば、共有リンクを使って、256の入力ソースが16の宛先にデータを送信しようとする。
【0017】
従来のマルチレベル調停メカニズムは、第1調停レベルでそれぞれ異なる入力ソースの調停を、第2調停レベルでそれぞれ異なるトラフィッククラス(traffic classes)の調停を、第3調停レベルでそれぞれ異なる出力の宛先の調停を提供する。従来のマルチレベル調停メカニズムは、それぞれの調停レベルでそれぞれ異なるキュー構造を更に使用する。
【0018】
図1は、従来のマルチレベル調停システム100の概念的なレイアウト図である。マルチレベル調停システム100は、共有リソース106を介してデータを複数の宛先104に送信しようとする複数のソース(source)102を含む。調停システム100は、サポートされるそれぞれのデータソース102に対する入力キュー(input queue)108を提供し、データソースは、宛先に送信されるデータをデータソースに対応する入力キュー108に格納する。
【0019】
調停システム100は、ソース、トラフィッククラス、及び宛先のパラメータのそれぞれに基づいて順方向(forward)の調停を行うためにソースアービタ110と、トラフィックアービタ112と、宛先アービタ114と、を含む。ソースアービタ110は、共有リソースにアクセスするための多様な入力キュー108の中の1つの入力キュー(ソース)を選択するために第1レベルの調停を行う。選択された入力キュー108のデータは、データが属するトラフィッククラス(例えば、優先順位)により多様なトラフィックキュー116の中の1つにコピーされる。調停システム100は、サポートされるそれぞれのトラフィッククラスに対するトラフィックキュー116を提供する。
【0020】
トラフィックアービタ112は、それぞれ異なるトラフィッククラスの第2レベルの調停を行い、選択アルゴリズムに基づいて、多様なトラフィッククラスキュー116の中から特定のトラフィッククラスキューを選択する。選択されたトラフィックキュー116のデータは、選択されたトラフィックキューのデータの宛先情報によって多様な宛先キュー118の中の1つにコピーされる。調停システム100は、サポートされるそれぞれの宛先104に対する宛先キュー118を提供する。
【0021】
宛先アービタ114は、それぞれ異なる宛先キュー118の第3レベルの調停を行い、選択アルゴリズムに基づいて、多様な宛先キューの中から特定の宛先キューを選択する。選択された宛先キューに格納されたデータ(例えば、第1のデータパケット)は、サービスのために共有リソース106に提供される。その際、共有リソースは、選択された宛先キューに関連する宛先に選択されたデータを送信する。
【0022】
図1のマルチレベル調停システム100で生ずる1つの問題は、HOL(head of line)ブロッキングである。コンピューティングシステムにおいて、HOLブロッキングは、キューのデータパケットのラインが第1のパケットによって遮断されるときに生ずる。例えば、第1のパケットは、第1のパケットが宛先で混雑することにより第2のパケットが処理されない場合、キューの他のパケットが処理されることを遮断する。第3のパケット以降の他のパケットは、混雑のない宛先にアドレス指定されたとしても、第2のパケットにより遮断される。
【0023】
図2は、HOLブロッキングを解決するための従来のマルチレベル調停システム200における概念的なレイアウト図である。
図1のように、調停システム200は、共有リソース206を介して複数の宛先にデータを送信しようとする複数のソース202を含む。複数のソース202により送信されるデータは、複数の入力キュー208に格納される。
図2の調停システム200は、3次元に沿って入力キュー208を提供することにより、HOLブロッキングの問題を解決することができる。その際、入力キュー208は、それぞれの入力ソース、トラフィッククラス、及び宛先の組み合わせに対して提供される。例えば、調停システム200が256のソース202、4つのトラフィッククラス、及び16の宛先を含むことを仮定した場合、調停システムにより提供される入力キュー208の総数は16,384である。
【0024】
調停システム200は、第1レベルの調停を同時に行うためにアービタの第1セット210を提供する。アービタの第1セット210は、それぞれのトラフィッククラス及び宛先の組合せに対して提供される。特定のトラフィッククラス及び宛先に関連するアービタの第1セット210は、特定のトラフィッククラス及び宛先に関連する入力キュー208を調停するように構成される。入力キュー208は、選択アルゴリズムに基づいて調停されたトラフィッククラス及び宛先に対して選択される。調停システム200が4つのトラフィッククラス及び16の宛先を含む例において、アービタの第1セット210の総数は64である。
【0025】
それぞれのアービタの第1セット210により第1調停レベルのウイナー(winner)として選択された入力キュー208のデータは、対応するトラフィックキュー212にコピーされる。その後、アービタの第2セット214は、トラフィックキュー212に格納されたデータに基づいて、第2レベルの調停を同時に行う。アービタの第2セット214は、特定の宛先に関連するトラフィックキューを調停するように構成され、選択アルゴリズムに基づいて調停された宛先に対するトラフィックキューを選択する。調停システム200は、調停システム200によってサポートされるそれぞれの宛先に対するアービタの第2セット214を提供する。16の宛先がサポートされる場合、調停システム200は、16のアービタの第2セット214を提供し、第2レベルの調停を行う。
【0026】
それぞれのアービタの第2セット214により第2調停レベルのウイナーとして選択されたトラフィックキュー212のデータは、対応する宛先キュー216にコピーされる。宛先アービタ218は、それぞれ異なる宛先キュー216の第3レベルの調停を行い、選択アルゴリズムに基づいて特定の宛先キューを選択する。選択された宛先キュー216に格納されたデータ(例えば、第1データのパケット)は、サービスのために共有リソース206に提供される。その際、共有リソースは、選択された宛先キューに関連する宛先に選択されたデータを送信する。
【0027】
仮に、
図2の調停システム200がHOLブロッキングの問題を解決できたとしても、解決策の実現に必要なリソース、ダイ面積、及び処理電力の面で多くのコストが生じる。従って、リソース、ダイ面積、及び/又は処理電力の面でより効率的な調停システムが必要である。
【0028】
図3は、本発明の一実施形態による調停システム300のブロック図である。調停システム300は、共有リソース306を介して複数の宛先304にデータを送信しようとする複数のソース302を含む。例えば、N個のソース(例えば、0~255のソース)は、データをM個の宛先(例えば、0~15の宛先)に送信しようとする。ソース302、宛先304、及び共有リソース306は、コンピュータシステムの物理的又は仮想の構成要素である。例えば、ソースはそれぞれ異なるソフトウェアアプリケーションであり、宛先はストレージ装置(例えば、ソリッドステートドライブ)の格納位置である。ストレージ装置へのアクセスは、例えばPCIeリンク又はOpen NAND Flash Interface(ONFI)リンク等の共有データ通信リンクを介して行われる。
【0029】
ソース302、宛先304、及び共有リソース306は、また物理的世界(physical world)の位置/構成要素である。例えば、ソース302は、共有エアラインキャリアを使用してそれぞれ異なる地理的位置(宛先304)にメールを送信するそれぞれ異なるポストオフィスである。このような物理的世界の構成要素が関与する場合、ソース、宛先、及び共有リソースは、共有リソースへのアクセスを調停するためにコンピュータシステムによってシミュレーションされる。
【0030】
一実施形態において、調停システム300は、データ通信リンク310を介して複数のソース302に結合される分配器308を含む。データ通信リンク310は、分配器308へのデータの独立した送信を許容する通常の任意のデータ通信リンクである。分配器308は、複数のソース302からデータを受信して、格納のために複数のキュー312にデータを送信する。キュー312は、例えばストレージ装置のスタティックランダムアクセスメモリ(SRAM)である。
【0031】
一実施形態において、複数のキュー312の中の1つのキューは、少なくとも2次元のパラメータに関連する。一実施形態において、キューは、少なくとも3次元のパラメータに関連する。例えば、パラメータは、複数のソース302の中の1つのソース及び複数の宛先304の中の1つの宛先を識別する。一実施形態において、パラメータは、例えばトラフィッククラス(TC)等のデータの属性を更に識別する。トラフィッククラスは、データの優先順位レベルを識別する。例えば、TC0は緊急の優先順位レベルを識別し、TC1は高い優先順位レベルを識別し、TC2は中間の優先順位レベルを識別し、TC3は低い優先順位レベルを識別する。複数のキュー312のそれぞれのキューは、対応するパラメータ(2次元、3次元、又は3次元+)の組み合わせに関連する。
【0032】
調停システム300は、キュー312を識別するために使用されるパラメータのそれぞれの組み合わせに対するキュー312を提供する。例えば、2次元のパラメータが使用される場合、調停システム300は、ソース302及び宛先304のそれぞれの組み合わせに対するキューを提供する。3次元のパラメータが使用される場合、調停システム300は、ソース302、属性、及び宛先304のそれぞれの組み合わせに対するキューを提供する。分配器308は、データに関連するパラメータに基づいて、1つ以上の適切なキューにデータを格納する。
【0033】
一実施形態において、調停システム300は、ヒントマップジェネレータ314と、逆調停エンジン316と、を更に含む。ヒントマップジェネレータ314及び逆調停エンジン316は、ハードウェア、ファームウェア、又はソフトウェア、或いはハードウェア、ファームウェア、及び/又はソフトウェアの組合せによって実現される。例えば、調停システム300がストレージ装置の格納位置へのアクセスを調停する実施形態において、ヒントマップジェネレータ314及び逆調停エンジン316は、ストレージ装置のコントローラサブシステムの一部である。
【0034】
一実施形態において、ヒントマップジェネレータ314は、キュー312のデータに関連するパラメータに基づいて調停を行うためのデータ構造(ヒントマップという)を生成するように構成される。調停システム300は、1つ以上の調停レベルを提供するように構成される。調停されたパラメータのウイニング値(winning value)を選択するために、データの特定のパラメータは、特定の調停レベルで考慮される。
【0035】
一実施形態において、ヒントマップジェネレータ314は、それぞれの調停レベルに対して他のヒントマップを生成するように構成される。ヒントマップは複数のビットを含み、複数のビットの中の1つのビットは1つ以上のパラメータに関連する。ヒントマップのビットに関連するパラメータの個数は、ヒントマップが生成される調停のレベルによる。例えば、2つの調停レベルを仮定すると、第1調停レベルで使用されるヒントマップは2つのパラメータ(例えば、ソース及び宛先)に関連し、第2調停レベルで使用されるヒントマップは1つのパラメータ(例えば、宛先)に関連する。他の例として、3つの調停レベルを仮定すると、第1調停レベルで使用されるヒントマップは3つのパラメータ(例えば、ソース、トラフィッククラス、及び宛先)に関連し、第2調停レベルで使用されるヒントマップは2つのパラメータ(例えば、トラフィッククラス及び宛先)に関連し、第3調停レベルで使用されるヒントマップは1つのパラメータ(例えば、宛先)に関連する。
【0036】
生成されたヒントマップは、ヒントメモリ318に格納される。一実施形態において、ヒントマップは、現在の処理サイクルに対する全てのレベルの調停が完了するまで格納される。ヒントメモリ318は、例えばSRAMによって実現される。
【0037】
一実施形態において、生成されたヒントマップは、1つの調停レベルから他の調停レベルに伝播され、伝播された調停レベルから調停の要請を示す。一実施形態において、ヒントマップは、前のレベルに関連するヒントマップのビットのサブセットの論理OR演算を実行することによって伝播される。例えば、特定の次元(例えば、特定の宛先及びトラフィッククラス)に関連する第2レベルのヒントマップは、他の次元(例えば、ソース)に関連する第1レベルのヒントマップのビットの論理ORを実行することによって生成される。他の実施形態において、特定の宛先に関連する第3レベルのヒントマップは、特定の宛先に関連する第2レベルのヒントマップのヒントビットの論理ORを実行することによって生成される。
【0038】
逆調停エンジン316は、キュー312のデータに関連するパラメータに基づいて、1つ以上のレベルの調停を行うように構成される。一実施形態において、1つ以上のレベルの調停は、ヒントマップジェネレータ314によって生成されたヒントマップに基づく。異なるレベルの調停を行うためにヒントマップを使用する場合、
図2の調停システムを参照して説明したキュー(212、216)のように異なるレベルの調停に関連する他のキューにデータをコピーする必要がなくなる。
【0039】
一実施形態において、逆調停エンジン316は、最終/最高レベルの調停(例えば、宛先304に最も近い調停)からスタートし、初期/最低レベルの調停(例えば、ソース302に最も近い調停)まで逆の調停を行う。所定の調停レベルにおいて、当該調停レベルに対して生成されたヒントマップは、調停の対象であるパラメータのウイニング値を選択するために使用される。その後、ウイニング値は、次に低い調停レベルに対するアービタを動的に割り当てるために使用される。そして、割り当てられたアービタは、低い調停レベルに対して生成されたヒントマップに基づいて調停を行う。逆調停プロセスは、第1調停レベルが複数のキュー312の中のウイニングキューを識別するまで継続される。その際、逆調停エンジン316により選択されたウイニングキューの中のウイニングID391は、ウイニング取得(fetching)ブロック392に送信される。一実施形態において、ウイニング取得ブロック392は、ウイニングID391によって識別されたウイニングキューに格納されたデータをフェッチするように構成される。一実施形態において、ウイニングキューのHOLエントリーは、データ通信リンク320を介して共有リソース306にフェッチ及び伝達される。
【0040】
図4は、一実施形態による3レベル調停システム400の多様な構成要素の概念的なレイアウト図である。3レベル調停システム400の多様な構成要素は、
図3の調停システム300の構成要素と類似する。
図4は、3つの調停レベルを示すが、調停システム400は、より少ないか又はより多い調停レベルをサポートするように修正されることを理解すべきである。
【0041】
調停システム400は、複数のソース402(例えば、0~255のソース)と、複数の宛先404(例えば、0~15の宛先)と、を含む。複数のソース402の中の1つ以上は、共有リソース406を介して複数の宛先404の中の1つ以上にデータ(例えば、データのパケット)を送信しようとする。共有リソース406は、例えばPCIeリンク又はOFNIリンクである。
【0042】
1つ以上のソース402によって送信されたデータは、複数のキュー410の中の1つ以上にデータをエンキューするためにエンキュー分配器408に提供される。その際、エンキュー分配器408は、データに関連するパラメータに基づいてキューを選択する。一実施形態において、データ及び関連するキューを識別するために3つのパラメータが使用される。3つのパラメータは、ソース、属性(例えば、トラフィッククラス)、及び宛先を識別する。パラメータの値に関連するデータを格納するために、他のキューが3つのパラメータの値におけるそれぞれの可能な組み合わせに対して提供される。例えば、256の可能なソース、4つの可能なトラフィッククラス、及び16の可能な宛先がある場合、可能なキュー410の総数は16,384(256×4×16)である。
【0043】
リードポインタ412は、共有リソース406にアクセスするように選択された対応するキュー410における次のデータのパケットを検索するために使用される。
【0044】
一実施形態において、ヒントマップジェネレータは、それぞれの調停レベルに対するヒントマップを生成するために呼び出される。3レベル調停システムにおいて、ヒントマップジェネレータは、第1レベルのヒントマップ414、第2レベルのヒントマップ416、及び第3レベルのヒントマップ418を生成する。第1レベルのヒントマップ414は、キューに入れられたデータを含むキュー410の中の1つ以上を識別する。第1レベルのヒントマップ414のそれぞれのビットは、特定のソース、特定のトラフィッククラス、及び特定の宛先に関連する特定のキューを識別する3次元のパラメータに関連する。第1レベルのヒントマップ414のビットは、対応するキューが空でないという(キューにデータを有するという)決定に応答して設定される。例えば、第1レベルのヒントマップ414のビットのサブセット414aの中の1つ以上のビットは、宛先「0」及びトラフィッククラス「0」に関連するソース402の中の1つ以上に対して設定される。
【0045】
第2レベルのヒントマップ416は、第1レベルのヒントマップ414によって示されるキューに入れられたデータに関連する属性(例えば、トラフィッククラス)及び宛先の中の1つ以上を識別する。その際、第2レベルのヒントマップ416のそれぞれのビットは、特定のトラフィッククラス及び特定の宛先を識別する2次元のパラメータに関連する。第2レベルのヒントマップ416のビットは、特定のトラフィッククラス及び特定の宛先に対してキューに入れられたデータを有する少なくとも1つのキューがあるという決定に応答して設定される。その際、特定のトラフィッククラス及び特定の宛先に関連する第1レベルのヒントマップ414のビットを識別して、論理OR演算を識別されたビットに対して実行する。一実施形態において、論理OR演算の結果は、特定のトラフィッククラス及び特定の宛先に対応する第2レベルのヒントマップ416のビットの値を設定するのに使用される。例えば、トラフィッククラス「0」及び宛先「0」に対応するビット416aは、対応する第1レベルのヒントマップ414のビット414aの対応するサブセットの中のビットの少なくとも1つが設定されることに応答して第2レベルのヒントマップ416に設定される。同様に、トラフィッククラス「1」及び宛先「1」に対応するビット416bは、第1レベルのヒントマップ414のビット414bの対応するサブセットの中のビットの少なくとも1つが設定されることに応答して設定される。
【0046】
第3レベルのヒントマップ418は、第2レベルのヒントマップ416によって示されるキューに入れられたデータに関連する1つ以上の宛先を識別する。その際、第3レベルのヒントマップ418のそれぞれのビットは、特定の宛先を識別する1次元のパラメータに関連する。第3レベルのヒントマップ418のビットは、特定の宛先に関連するキューに入れられたデータを有する少なくとも1つのキューがあるという決定に応答して設定される。その際、特定の宛先に関連する第2レベルのヒントマップ416のビットを識別して、論理OR演算を識別されたビットに対して実行する。一実施形態において、論理OR演算の結果は、特定の宛先に対応する第3レベルのヒントマップ418のビットの値を設定するのに使用される。例えば、宛先「0」に対応するビット418aは、第2レベルのヒントマップ416のビット416cの対応する部分416cの中のビットの少なくとも1つが設定されることに応答して第3レベルのヒントマップ418に設定される。同様に、宛先「1」に対応するビット418bは、第2レベルのヒントマップ416のビット416dの対応するサブセットの中のビットの少なくとも1つが設定されることに応答して設定される。
【0047】
一実施形態において、生成されたヒントマップは、それぞれの調停レベルで調停を行うために使用される。その際、生成されたヒントマップは、対応する調停レベルにおける調停を要請するのに使用される。調停は、宛先404に最も近い最終調停レベル(例えば、レベル3)からスタートし、低い調停レベル(例えば、レベル2、次にレベル1)に逆方向に進む。一実施形態において、レベル3のアービタ(例えば、宛先アービタ420)は、逆調停エンジンによって割り当てられ、レベル3の調停を行う。レベル3の宛先アービタ420は、設定ビットの中の1つをレベル3の調停におけるウイニングの宛先として選択するために宛先の第3レベルのヒントマップ418を使用する。ウイニングの宛先は、スケジューリングアルゴリズムに基づいて選択される。スケジューリングアルゴリズムは、例えばラウンドロビン、加重ラウンドロビン、固定された優先順位等のように、当技術分野における通常の任意のスケジューリングアルゴリズムである。ウイニングの宛先は、例えば宛先「1」に対応するビット418bによって識別される宛先である。
【0048】
一実施形態において、逆調停エンジンは、第2調停レベルに対してアービタ422を動的に割り当てるためにレベル3の調停のウイニングの宛先を使用する。例えば、レベル3の調停におけるウイニングの宛先が宛先「1」であることに応答して、宛先「1」のアービタは動的に割り当てられ、レベル2の調停を行う。選択されていない宛先に関連する他の宛先のアービタ(例えば、宛先「0」のアービタ424)は、割り当てる必要がない。従って、多様な実施形態の逆調停は、
図2のシステム200等の従来の順方向の調停システムと比較して、アービタを削減できることを理解すべきである。例えば、宛先の個数が16の場合、
図2の順方向の調停システム200が16のアービタを呼び出すのに対して、本発明の実施形態は、単一のアービタ422を呼び出す。
【0049】
レベル2のアービタ422は、レベル2の調停が行われる第2レベルのヒントマップ416のパラメータを識別する。例えば、レベル2のアービタ422が宛先「1」のアービタである場合、レベル2の調停は、宛先「1」に関連するそれぞれ異なるトラフィッククラスの間で行われる。その際、レベル2のアービタ422は、宛先「1」を第1のパラメータとして有し、ウイニングトラフィッククラスを第2のパラメータとして有する第2レベルのヒントマップ416の設定ビットの中の1つを選択する。例えば、多様な宛先「1」のビットに対するトラフィッククラス「1」に対応する第2レベルのヒントマップ416のビット416bは、レベル2の調停のウイナー(winner)として選択される。
【0050】
スケジューリングアルゴリズムは、レベル2の調停に対してウイニングトラフィッククラスを選択するのに使用される。スケジューリングアルゴリズムは、レベル3の調停のスケジューリングアルゴリズムと同じであるか又は異なる。一実施形態において、ウイニングトラフィッククラスを選択するためのスケジューリングアルゴリズムは、特定のトラフィッククラスによる共有リソース406の使用記録データ/統計423に基づく。例えば、スケジューリングアルゴリズムは、レベル2の調停のウイナーとして高い使用記録を有する高いトラフィッククラスよりも、低い使用記録を有する低いトラフィッククラスの方を選択する。
【0051】
一実施形態において、逆調停エンジンは、レベル2の調停のウイナーを使用して第1調停レベルに対してアービタ425を動的に割り当てる。例えば、レベル2の調停のウイナーが宛先「1」ビットに対するトラフィッククラス「1」であることに応答して、トラフィッククラス「1」及び宛先「1」に関連するソースアービタ425は、レベル1の調停を行うために動的に割り当てられる。トラフィッククラス及び宛先の他の組合せに対して他のアービタを割り当てる必要はない。トラフィッククラスの個数が4つであり、宛先の個数が16である実施形態では、ソースアービタは64から1つに減少する。
【0052】
レベル1のアービタ425は、レベル1の調停が行われる第1レベルのヒントマップ414のパラメータを識別する。例えば、レベル1のアービタ425が宛先「1」に対するトラフィッククラス「1」のアービタである場合、レベル1の調停は、トラフィッククラス「1」及び宛先「1」に関連する異なるソースのものである。その際、レベル1のアービタ425は、トラフィッククラス「1」及び宛先「1」を第1及び第2のパラメータとして有し、ウイニングソースを第3のパラメータとして有する第1レベルのヒントマップ414の設定ビット中から1つを選択する。例えば、トラフィッククラス「1」及び宛先「1」のビットに対するソース「255」に対応する第1レベルのヒントマップ414のウイニングビット426は、レベル1の調停のウイナーとして選択される。
【0053】
スケジューリングアルゴリズムは、レベル1の調停に対してウイニングソースを選択するのに使用される。スケジューリングアルゴリズムは、レベル2又はレベル3の調停のスケジューリングアルゴリズムと同じであるか又は異なる。一実施形態において、第2レベルのヒントマップ416のウイニングビット及び第3レベルのヒントマップ418のウイニングビットと共に、第1レベルのヒントマップ414のウイニングビット426のパラメータは、複数のキュー410のウイニングキュー428をインデックスするために使用される。例えば、パラメータは、ウイニングキュー428のウイニングID491を識別する。ウイニングID491は、ウイニングキュー428のデータを取得するためにウイニング取得ブロック492に送信される。ウイニングキュー428の対応するリードポインタ412によって識別されるHOLエントリーは、処理のためにデキュー(dequeue)され、共有リソース406に伝達される。一実施形態において、ウイニングビット426に関連する使用データ/統計423は、共有リソース406によってデータをサービスするための予測時間に基づいてアップデートされる。
【0054】
図5は、一実施形態による2レベル調停システムによって生成される例示的なヒントマップの概念的なレイアウト図である。ヒントマップは、第1レベルのヒントマップ500と、第2レベルのヒントマップ502と、を有する。第1レベルのヒントマップ500は複数のビットを含み、それぞれのビットは2次元のパラメータの組み合わせに対応する。例えば、2次元のパラメータは、宛先(例えば、
図3の宛先304の中の1つに対応する宛先0~15)及びソース(例えば、
図3のソース302の中の1つに対応するソース0~255)を識別する。第1レベルのヒントマップ500のそれぞれのビットは、ソースからデータをエンキュー(enqueue)するように構成されたキューの中の1つに対応する。第1レベルのヒントマップ500のビットは、ビットによって示されるソース及び宛先に対するキューの中の1つにデータがある場合、「1」の値を有するように設定される。それ以外では、ビットは「0」の値を有する。
【0055】
第2レベルのヒントマップ502は複数のビットを含み、それぞれのビットは1次元のパラメータに対応する。例えば、1次元のパラメータは、宛先(例えば、宛先0~15)を識別する。第2レベルのヒントマップ502のビットは、ビットによって示される第2レベルのヒントマップの宛先にアドレス指定されたデータをソースのいずれか(例えば、ソース0~255)が提供する場合、「1」の値を有するように設定される。一実施形態において、第2レベルのヒントマップ502のビットの値は、第1レベルのヒントマップのビットにおける論理OR演算を実行することによって設定される。論理OR演算を実行するために使用される第1レベルのヒントマップ500のビットは、設定される第2レベルのヒントマップ502のビットによって示される宛先により識別される。例えば、宛先「0」に関連する第1レベルのヒントマップのビット504における論理OR演算は、宛先「0」に関連する第2レベルのヒントマップのビット506を設定して実行される。
【0056】
図6は、一実施形態による3レベル調停システム(例えば、
図4の調停システム400)によって生成される例示的なヒントマップの概念的なレイアウト図である。ヒントマップは、第1レベルのヒントマップ600と、第2レベルのヒントマップ602と、第3レベルのヒントマップ604と、を有する。第1レベルのヒントマップ600は複数のビットを含み、それぞれのビットは3次元のパラメータの組み合わせに対応する。例えば、3次元のパラメータは、宛先(例えば、
図4の宛先404の中の1つに対応する宛先0~15)、トラフィッククラス(例えば、トラフィッククラス(TC)0~3)、及びソース(
図4のソース402の中の1つに対応するソース0~255)を示す。第1レベルのヒントマップ600のそれぞれのビットは、ソース402からデータをエンキューする
図4のキュー410の中の1つに対応する。第1レベルのヒントマップ600のビットは、ビットにより示されるソース、トラフィッククラス、及び宛先の特定の組み合わせに対する対応するキューにデータがある場合、「1」の値を有するように設定される。それ以外では、ビットは「0」の値を有する。
【0057】
第2レベルのヒントマップ602は複数のビットを含み、それぞれのビットは2次元のパラメータの組み合わせに対応する。例えば、2次元のパラメータは、宛先(例えば、宛先0~16)及びトラフィッククラス(例えば、TC0~3)を示す。第2レベルのヒントマップ602のビットは、第2レベルのヒントマップのビットにより示される宛先及びトラフィッククラスの特定の組み合わせに関連するデータをソースのいずれか(例えば、ソース0~255)が提供する場合、「1」の値を有するように設定される。一実施形態において、第2レベルのヒントマップ602のビットの値は、第1レベルのヒントマップ600におけるビットの論理OR演算を実行することによって設定される。論理OR演算を実行するために使用される第1レベルのヒントマップ600のビットは、設定される第2レベルのヒントマップ602のビットによって示される宛先及びトラフィッククラスによって識別される。例えば、宛先「0」及びトラフィッククラス「0」に関連する第1レベルのヒントマップのビット606における論理OR演算は、宛先「0」に関連する第2レベルのヒントマップのビット608aを設定して実行される。
【0058】
第3レベルのヒントマップ604は複数のビットを含み、それぞれのビットは1次元のパラメータに対応する。例えば、1次元のパラメータは、宛先(例えば、宛先0~16)を識別する。第3レベルのヒントマップ604のビットは、第3レベルのヒントマップのビットにより示される宛先にアドレス指定されたデータをソースのいずれか(例えば、ソース0~255)が提供する場合、「1」の値を有するように設定される。一実施形態において、第3レベルのヒントマップ604のビットの値は、第2レベルのヒントマップのビットの論理OR演算を実行することによって設定される。論理OR演算を実行するために使用される第2レベルのヒントマップ602のビットは、設定される第3レベルのヒントマップ604のビットによって示される宛先によって識別される。例えば、宛先「0」に関連する第2レベルのヒントマップのビット(608a~608d)の論理OR演算は、宛先「0」に関連する第3レベルのヒントマップのビット610を設定して実行される。
【0059】
図7は、一実施形態による2レベル調停システムにおける共有リソースへのアクセスを調停するためのプロセスのフローチャートである。プロセスがスタートし、段階700において、分配器308(
図3)は、1つ以上のソース302からデータを受信する。
【0060】
段階702において、分配器308は、キュー312の中の対応する1つにデータを格納する。キュー312は特定のソース及び宛先に関連し、データは受信したデータのソース及び宛先に基づいてキューの中の1つに格納される。
【0061】
段階704において、ヒントマップジェネレータ314は、受信したデータに基づいて第1及び第2レベルのヒントマップを生成し、ヒントマップのヒントを第1調停レベルから第2調停レベルに伝播する。その際、第1レベルのヒントマップは、システムによってサポートされるソース及び宛先を識別する2次元のパラメータに関連する第1のデータ構造である。一実施形態において、第1のデータ構造は、複数のビットを含む。複数のそれぞれのビットは、キューに関連し、キューに関連するソース及び宛先に関連する。第1のデータ構造のビットは、格納されたデータを有する対応するキューに基づいて設定される。一実施形態において、第1レベルのヒントマップは、
図5に示す演算と同様の第1レベルのヒントマップの論理OR演算により第2調停レベルに伝播される。
【0062】
第2レベルのヒントマップは、複数のビットを含む第2のデータ構造である。第2のデータ構造のそれぞれのビットは、システムによってサポートされる宛先に関連する。一実施形態において、第2レベルのヒントマップは、第1のデータ構造におけるビットのサブセットの論理OR演算を実行することによって生成される。第1のデータ構造におけるビットのサブセットのいずれかが設定されると、論理OR演算により第2レベルのヒントマップの対応するビットが設定される。
【0063】
段階706において、逆調停エンジン316は、第2レベルのヒントマップに基づいてレベル2の調停を行う。その際、逆調停エンジン316は、第2レベルのヒントマップに設定された多様な宛先の中の1つの宛先をウイニングの宛先として選択する。調停は、例えばラウンドロビン、加重ラウンドロビン、固定された優先順位等のスケジューリングアルゴリズムに基づく。
【0064】
段階708において、逆調停エンジン316は、第1レベルのヒントマップに基づいてレベル1の調停を行う。その際、逆調停エンジンは、レベル1の調停を行うためのロジック(アービタ)を動的に割り当てる。アービタは、レベル2の調停においてウイニングの宛先に基づいて割り当てられるソースアービタである。その際、ウイニングソースを選択するために、ソースアービタは、ウイニングの宛先に関連するソースの調停を行う。調停は、例えばラウンドロビン、加重ラウンドロビン、固定された優先順位等のスケジューリングアルゴリズムに基づく。
【0065】
段階710において、逆調停エンジン316は、ウイニングソース及び宛先に関連するキューのデータをデキューする。
【0066】
段階712において、デキューされたデータは、データ通信リンク320を介して共有リソース306に送信される。その後、共有リソース306は、データを宛先に送信する。
【0067】
図8は、一実施形態による3レベル調停システムにおける共有リソースへのアクセスを調停するためのプロセスのフローチャートである。プロセスがスタートし、段階800において、分配器308(
図3)は、1つ以上のソース302からデータを受信する。
【0068】
段階802において、分配器308は、キュー312の中の対応する1つにデータを格納する。キュー312は特定のソース、宛先、及びトラフィッククラス(優先順位レベル)に関連し、データは受信したデータのソース、宛先、及びトラフィッククラスに基づいてキューの中の1つに格納される。
【0069】
段階804において、ヒントマップジェネレータ314は、受信したデータに基づいて第1、第2、及び第3レベルのヒントマップを生成し、ヒントマップのヒントを第1調停レベルから第2調停レベルに伝播し、第2調停レベルから第3調停レベルに伝播する。その際、第1レベルのヒントマップは、システムによってサポートされるソース、宛先、及びトラフィッククラスを識別する3次元のパラメータに関連する第1のデータ構造である。一実施形態において、第1のデータ構造は、複数のビットを含む。複数のそれぞれのビットは、キューに関連し、キューに関連するソース、宛先、及びトラフィッククラスに関連する。第1のデータ構造のビットは、格納されたデータを有する対応するキューに基づいて設定される。一実施形態において、第1レベルのヒントマップは、
図6に示す演算と同様の第1レベルのヒントマップの論理OR演算により第2調停レベルに伝播される。
【0070】
第2レベルのヒントマップは、複数のビットを含む第2のデータ構造である。第2のデータ構造のそれぞれのビットは、システムによってサポートされる宛先及びトラフィッククラスに関連する。一実施形態において、第2レベルのヒントマップは、第1のデータ構造におけるビットのサブセットの論理OR演算を実行することによって生成される。第1のデータ構造におけるビットのサブセットのいずれかが設定されると、論理OR演算により第2レベルのヒントマップの対応するビットが設定される。一実施形態において、第2レベルのヒントマップは、
図6に示す演算と同様の第2レベルのヒントマップの論理OR演算により第3調停レベルに伝播される。
【0071】
第3レベルのヒントマップは、複数のビットを含む第3のデータ構造である。第3のデータ構造のそれぞれのビットは、システムによってサポートされる宛先に関連する。一実施形態において、第3レベルのヒントマップは、第2のデータ構造におけるビットのサブセットの論理OR演算を実行することによって生成される。第2のデータ構造におけるビットのサブセットのいずれかが設定されると、論理OR演算により第3レベルのヒントマップの対応するビットが設定される。
【0072】
段階806において、逆調停エンジン316は、第3レベルのヒントマップに基づいてレベル3の調停を行う。その際、逆調停エンジン316は、第3レベルのヒントマップに設定された多様な宛先の中の1つの宛先をウイニングの宛先として選択する。調停は、例えばラウンドロビン、加重ラウンドロビン、固定された優先順位等のスケジューリングアルゴリズムに基づく。
【0073】
段階808において、逆調停エンジン316は、第2レベルのヒントマップに基づいてレベル2の調停を行う。その際、逆調停エンジンは、レベル2の調停を行うためのロジック(アービタ)を動的に割り当てる。アービタは、レベル3の調停においてウイニングの宛先に基づいて割り当てられるトラフィッククラスのアービタである。その際、ウイニングトラフィッククラスを選択するために、トラフィッククラスのアービタは、ウイニングの宛先に関連するトラフィッククラスの調停を行う。調停は、例えば多様なトラフィッククラスによる共有リソース306の使用データ/統計が考慮されるスケジューリングアルゴリズムに基づく。
【0074】
段階810において、逆調停エンジン316は、第1レベルのヒントマップに基づいてレベル1の調停を行う。その際、逆調停エンジンは、レベル1の調停を行うためのロジック(例えば、アービタ)を動的に割り当てる。アービタは、レベル2の調停においてウイニングトラフィッククラスに基づいて割り当てられるソースアービタである。その際、ウイニングソースを選択するために、ソースアービタは、ウイニングトラフィッククラス及びウイニングの宛先に関連するソースの調停を行う。調停は、例えばラウンドロビン、加重ラウンドロビン、固定された優先順位等のスケジューリングアルゴリズムに基づく。
【0075】
段階812において、逆調停エンジン316は、ウイニングソース、宛先、及びトラフィッククラスに関連するキューのデータをデキューする。
【0076】
段階814において、逆調停エンジンは、データを宛先に送信するのにかかる時間の推定値に基づいて、ウイニングトラフィッククラスの使用統計をアップデートする。
【0077】
段階816において、デキューされたデータは、データ通信リンク320を介して共有リソース306に送信される。その後、共有リソース306は、データを宛先に送信する。
【0078】
一実施形態において、上述した調停システム(300、400)の構成要素は、1つ以上の処理回路で実現される。「処理回路」という用語は、本明細書では、データ又はデジタル信号を処理するために使用されるハードウェア、ファームウェア、及びソフトウェアの任意の組み合わせを意味する。処理回路のハードウェアは、例えば特定用途向け集積回路(ASIC)、汎用又は特殊目的の中央処理装置(CPU)、デジタルシグナルプロセッサ(DSP)、グラフィック処理装置(GPU)、及びフィールドプログラマブルゲートアレイ(FPGA)等のプログラム可能なロジックデバイスを含む。処理回路において、それぞれの機能は、当該機能を実行するように構成された、即ちハードワイヤされた(hard-wired)ハードウェア、又は非一時的なストレージ媒体に格納された命令を実行するように構成されたCPUのような汎用ハードウェアによって実行される。処理回路は、単一のプリント回路基板(PCB)上に作製されるか又は幾つかの相互接続されたプリント回路基板に分散される。処理回路は、他の処理回路を含む。例えば、処理回路は、プリント回路基板上で相互接続された2つの処理回路であるFPGA及びCPUを含む。
【0079】
「第1」、「第2」、「第3」等の用語が多様な構成要素、領域、層及び/又はセクションに用いられるが、これらの構成要素、領域、層、及び/又はセクションは、これらの用語によって制限されてはならない。これらの用語は、1つの構成要素、領域、層、又はセクションを他の構成要素、領域、層、又はセクションと区別するためにのみ用いられる。従って、本明細書に記載の第1構成要素、第1領域、第1層、又は第1セクションは、本発明の思想や範囲を逸脱することなく、第2構成要素、第2領域、第2層、又は第2セクションと称される。
【0080】
本明細書で用いられる用語は、特定の実施形態を説明するためのものであり、本発明の概念を制限するものではない。本明細書で用いられる用語の「実質的に」、「約」、及びこれらと同様の用語は、近似値を説明するための用語として用いられ、当業者が認識する測定値又は計算値の固有の偏差を説明するためのものである。
【0081】
本明細書で用いられる単数形は、文脈上で明らかに他の指示がない限り、複数形も含むことを意図している。本明細書で用いられる「含む」という用語は、開示される特徴、数字、段階、動作、及び/又は構成要素の存在を明示するが、1つ以上の他の特徴、数字、段階、動作、構成要素、及び/又はそれらの組み合わせの存在や追加を排除するものではない。本明細書で用いられる、「及び/又は」という用語は、関連して挙げられた1つ以上の項目の任意且つ全ての組み合わせを含む。「少なくとも1つ」のような表現は、構成要素のリスト全体を修飾し、リストの個別構成要素を修飾しない。実施形態を説明する際、「してもよい」という用語は、本発明の1つ以上の実施形態を指す。「例示的な」という用語は、例又は図を示すことを意図している。「使用する」という用語は、「利用する」という用語と同義語と見なす。
【0082】
構成要素又は層が他の構成要素又は層「(上)に」、「接続された」、又は「結合された」と言及する場合、構成要素又は層が他の構成要素又は層(上)に直接接続されるか、結合されるか、又は介在する構成要素又は層が存在し得ることが理解される。これに対して、構成要素又は層が他の構成要素又は層に「直接」、「直接接続された」、又は「直接結合された」と言及する場合、介在する構成要素又は層は存在しない。同一の図面符号は、同一の構成要素を示す。
【0083】
本明細書で引用した任意の数値範囲は、引用した範囲に含まれる全ての下位範囲を含むことを意図している。例えば、「1.0~10.0」の範囲は、言及した最小値1.0と言及した最大値10.0との間の全ての下位範囲を含む(例えば、2.4~7.6)。本明細書に引用した任意の最大数値は、その中に含まれる全てのより低い数値を含むことを意図しており、本明細書で引用した任意の最小数値は、その中に含まれる全てのより高い数値を含むことを意図している。
【0084】
以上、本発明の実施形態について図面を参照しながら詳細に説明したが、本発明は、上述の実施形態に限定されるものではなく、本発明の技術的思想から逸脱しない範囲内で多様に変更実施することが可能である。
【符号の説明】
【0085】
100、200 (マルチレベル)調停システム
102、202、302、402 ソース
104、204、304、404 宛先
106、206、306、406 共有リソース
108、208 入力キュー
110 ソースアービタ
112 トラフィックアービタ
114、218、420 宛先アービタ
116、212 トラフィックキュー
118、216 宛先キュー
210、214 アービタの第1、第2セット
300 調停システム
308 分配器
310、320 データ通信リンク
312、410 キュー
314 ヒントマップジェネレータ
316 逆調停エンジン
318 ヒントメモリ
391、491 ウイニングID
392、492 ウイニング取得ブロック
400 (3レベル)調停システム
408 エンキュー分配器
412 リードポインタ
414、500、600 第1レベルのヒントマップ
416、502、602 第2レベルのヒントマップ
418、604 第3レベルのヒントマップ
422、424、425 アービタ
423 使用記録データ/統計
426 ウイニングビット
428 ウイニングキュー