(57)【要約】      （修正有）【課題】多数の並行ルックアップであって、衝突のない並行ルックアップをサポートするシステム・オン・チップを提供する。【解決手段】Ｔ個のタイルにグループ化されるＴ×Ｍ個の共有メモリと、各ルックアップパス用のＭ個のインデックス変換器と、Ｎ個の入力ポートをＴ個のタイルに接続する中央再構成可能相互接続ファブリック１１０と、Ｔ個のタイルをＮ個の出力ポートに接続する出力再構成可能相互接続ファブリック１２５と、Ｎ個の出力結果コレクタ１３０であって、ルックアップパス毎に１つずつ存在する出力結果コレクタ１３０とを備える。【選択図】図１
2015172925.tif 000002
【特許請求の範囲】
【請求項１】
共有メモリのプールを使用するＮ個の並行ルックアップをサポートするシステム・オン・チップであって、
Ｔ個のタイルにグループ化されるＴ×Ｍ個の共有メモリと、
各ルックアップパス用のＭ個のインデックス変換器と、
Ｎ個の入力ポートを前記Ｔ個のタイルに接続する中央再構成可能相互接続ファブリックと、
前記Ｔ個のタイルをＮ個の出力ポートに接続する出力再構成可能相互接続ファブリックと、
Ｎ個の出力結果コレクタであって、前記ルックアップパス毎に１つずつ存在する出力結果コレクタとを備えた、システム・オン・チップ。
【請求項２】
請求項１に記載のシステム・オン・チップにおいて、前記Ｔ個のタイルは、前記ルックアップパスのそれぞれによって必要とされるメモリ容量に基づいて区分され、ルックアップパスに割り当てられる、システム・オン・チップ。
【請求項３】
請求項１に記載のシステム・オン・チップにおいて、各ルックアップパスに割り当てられるタイルの数は２の累乗であり、１つのタイルは複数の区分に重ならない、システム・オン・チップ。
【請求項４】
請求項１に記載のシステム・オン・チップにおいて、前記Ｔ個のタイルのそれぞれが、
ルックアップ毎のＭ個のウェイについてのＤ−ＬＥＦＴルックアップをサポートするＭ個のメモリ、
前記Ｍ個のメモリ内の予めプログラムされたキーを１つの入力キーと比較するマッチングブロック、および、
そのタイルについてのヒット結果を選択する選択ブロックを含む、システム・オン・チップ。
【請求項５】
請求項１に記載のシステム・オン・チップにおいて、前記共有メモリのそれぞれは、２ｍ個のエントリを有し、前記エントリのそれぞれは、ウェイ毎のＰ個のバケットについてのＤ−ＬＥＦＴルックアップをサポートするためにＰ個のプログラム可能な｛キー，データ｝ペアを含む、システム・オン・チップ。
【請求項６】
請求項１に記載のシステム・オン・チップにおいて、各ルックアップパスは、ハッシュベースのルックアップまたはダイレクトアクセスのルックアップとなるように構成変更可能である、システム・オン・チップ。
【請求項７】
請求項１に記載のシステム・オン・チップにおいて、各ルックアップパスのＭ個のインデックス変換器のうちのインデックス変換器ｉは、そのルックアップパスに割り当てられた前記Ｔ個のタイルのうちの１つにおけるメモリｉにアクセスするために使用される、システム・オン・チップ。
【請求項８】
請求項１に記載のシステム・オン・チップにおいて、各ルックアップパスのＭ個のインデックス変換器のそれぞれは、当該ルックアップパスに割り当てられたタイルの数に基づいて構成変更可能である、システム・オン・チップ。
【請求項９】
請求項１に記載のシステム・オン・チップにおいて、各ルックアップパスのＭ個のインデックス変換器のそれぞれは、さらに、
ｌｏｇ２（Ｔ）＋１個のハッシュ関数およびｌｏｇ２（Ｔ）＋１個の非ハッシュ関数であって、これら関数の出力がｍビットからｌｏｇ２（Ｔ）＋ｍビットの範囲のビット幅を有する、ハッシュ関数および非ハッシュ関数、
前記関数のうちの１つを選択するための第１の構成変更可能レジスタ、および、
ルックアップインデックスがそのルックアップパスの割り当てられたタイルのうちの正しいタイルを指し示すようにタイルオフセットを選択するための第２の構成変更可能レジスタであって、前記割り当てられたタイルは前記Ｔ個のタイルから選択される、第２の構成変更可能レジスタを含む、システム・オン・チップ。
【請求項１０】
請求項１に記載のシステム・オン・チップにおいて、前記Ｍ個のインデックス変換器それぞれの出力インデックスがｌｏｇ２（Ｔ）＋ｍビットを有し、前記出力インデックス内のｌｏｇ２（Ｔ）個の最上位のビットは前記Ｔ個のタイルのうちの１つを指し示すのに使用され、前記出力インデックス内のｍ個の最下位のビットはメモリ読取アドレスとして使用される、システム・オン・チップ。
【請求項１１】
請求項１に記載のシステム・オン・チップにおいて、前記中央再構成可能相互接続ファブリックが、Ｍ個の構成変更可能Ｎ×Ｔネットワークを含む、システム・オン・チップ。
【請求項１２】
請求項１に記載のシステム・オン・チップにおいて、前記Ｎ×Ｔネットワークのそれぞれが、クロスバーおよび構成変更可能バタフライのうちの一方である、システム・オン・チップ。
【請求項１３】
請求項１に記載のシステム・オン・チップにおいて、前記出力再構成可能相互接続ファブリックがＴ個の構成変更可能な１×Ｎデマルチプレクサを含む、システム・オン・チップ。
【請求項１４】
請求項１に記載のシステム・オン・チップにおいて、Ｎ個の出力結果コレクタのうちの１つであって、１つのルックアップパスに対応付けられた出力結果コレクタが、そのルックアップパスの割り当てられたタイルから結果を収集し、かつ、当該割り当てられたタイルによって出力された結果から１つの最終結果を選択する、システム・オン・チップ。
【請求項１５】
請求項１に記載のシステム・オン・チップにおいて、前記Ｔ個のタイルのそれぞれについてのヒット結果が、そのタイルのメモリ内の予めプログラムされたキーとそのタイルの入力キーとの間のキーマッチング結果に基づく、システム・オン・チップ。
【請求項１６】
共有メモリのプールを使用してＮ個の並行ルックアップを行う方法であって、
Ｔ個のタイルをＮ個のグループに区分することであって、前記Ｔ個のタイルのそれぞれが、Ｍ個のメモリを含み、Ｎ個のルックアップパスのそれぞれが、入力ポートと出力ポートとに接続され、Ｎ個のルックアップパスのそれぞれが、前記Ｎ個のグループのうちの１つに割り当てられる、Ｔ個のタイルをＮ個のグループに区分することと、
前記Ｎ個の並行ルックアップを実行することとを備え、
前記Ｎ個の並行ルックアップを実行することは、
Ｎ個の入力キーのそれぞれについて、
前記入力キーを複数のルックアップインデックスに変換することであって、前記複数のルックアップインデックスのそれぞれが、対応するルックアップパスによってアクセスされることになる前記Ｎ個のグループのうちの１つにおける特定のタイルのタイルＩＤと、データが読み取られることになる前記特定のタイル内の１つのメモリのメモリアドレスとを含む、変換すること、
前記特定のタイルからのマッチ情報の集合を使用することによって、どのヒット情報を返すかを判断すること、および、
前記複数のルックアップインデックスによって示された複数のタイルからのヒット情報の集合を使用して、前記入力キーに対応付けられたルックアップパスに対してどの最終ルックアップ結果を返すかを判断することを含む、並行ルックアップ実行方法。
【請求項１７】
請求項１６に記載の方法において、前記特定のタイルからどのヒット情報を返すかの前記判断において、当該特定のタイル内の全てのメモリのうち最小のＭｅｍＩＤを有するメモリに、最高の優先順位が与えられる、並行ルックアップ実行方法。
【請求項１８】
請求項１９に記載の方法において、前記ヒット情報が、ヒットデータと、マッチしたキーに対応する前記ヒットデータの位置とを含み、前記ヒットデータの前記位置が、ＭｅｍＩＤと、前記ＭｅｍＩＤに対応付けられたメモリのアドレスと、前記メモリ内の前記ヒットデータの位置とを含む、並行ルックアップ実行方法。
【請求項１９】
請求項１６に記載の方法において、ルックアップパスに対してどの最終ルックアップ結果を返すかの前記判断において、前記ルックアップパスに割り当てられた全てのタイルのうち最小のタイルＩＤを有するタイルに、最高の優先順位が与えられる、並行ルックアップ実行方法。
【請求項２０】
請求項１９に記載の方法において、前記最終ルックアップ結果が、ヒットデータと、前記ヒットデータを含むタイルのタイルＩＤと、前記ヒットデータが読み取られたメモリアドレスおよびメモリＩＤとを含む、並行ルックアップ実行方法。
【請求項２１】
請求項１６に記載の方法において、さらに、前記Ｎ個の並行ルックアップを実行する前に、
各ルックアップパスのハッシュサイズを計算することと、
各ルックアップパスに対して、ハッシュ選択およびタイルオフセットについての構成ビットを生成することと、
ルックアップパスと前記タイルとを接続するネットワークを構成することと、
各ルックアップパスに対して、前記メモリをプログラミングすることとを備えた、
並行ルックアップ実行方法。
【請求項２２】
請求項２１に記載の方法において、各ルックアップパスに対して前記メモリをプログラミングするための技術は、Ｍ個のウェイとＰ個のバケットについてのＤ−ＬＥＦＴルックアップ技術に基づく、並行ルックアップ実行方法。
【請求項２３】
Ｎ個の並行なキー対ルックアップインデックス変換をサポートする変換装置であって、
前記変換器において受信されるＮ個のキーであって、各キーが、Ｔ個のタイルのうちの１つのタイルグループに対応付けられており、前記Ｔ個のタイルのそれぞれがＭ個のメモリを含む、Ｎ個のキーと、
前記Ｎ個のキーをＮ×Ｍ個のルックアップインデックスに並列変換した後、前記変換器から返される前記Ｎ×Ｍ個のルックアップインデックスと、
Ｎ×Ｍ個の変換器とを備え、
前記Ｎ×Ｍ個の変換器のそれぞれが、
前記Ｎ個のキーからの１つのキーを前記Ｎ×Ｍ個のルックアップインデックスからの１つのルックアップインデックスに変換し、かつ、
ｌｏｇ２（Ｔ）＋１個のハッシュ関数およびｌｏｇ２（Ｔ）＋１個の非ハッシュ関数であって、これら関数の出力がｍビットからｌｏｇ２（Ｔ）＋ｍビットの範囲のビット幅を有する、ハッシュ関数および非ハッシュ関数、
前記関数のうちの１つを選択するための第１の構成変更可能レジスタ、および、
前記キーに対応付けられたタイルの前記グループからの正しいタイルを前記ルックアップインデックスが指し示すように、タイルオフセットを選択するための第２の構成変更可能レジスタを含む、変換装置。
【請求項２４】
請求項２３に記載の変換装置において、前記Ｎ×Ｍ個のルックアップインデックスが、中央再構成相互接続ファブリックに転送され、前記中央再構成相互接続ファブリックが、前記Ｎ×Ｍ個のルックアップインデックスのそれぞれをＴ個のタイルのうちの１つに接続して、前記キーを当該タイルに格納された予めプログラムされたキーと比較する、変換装置。
【請求項２５】
タイル装置であって、
Ｍ個のメモリであって、各メモリが２ｍ個のエントリを含み、前記エントリのそれぞれがＰ個のプログラム可能なペア｛キー，データ｝を含む、Ｍ個のメモリと、
入力キーを受信しルックアップ結果を出力するマッチング選択論理とを備え、
前記マッチング選択論理が、
前記Ｍ個のメモリ内の予めプログラムされたキーのうちのいずれかに前記入力キーがマッチするか否かを判断するマッチングブロック、および、
前記Ｍ個のメモリから、前記入力キーとマッチングする前記予めプログラムされたキーを含む１つのメモリを選択する選択ブロックであって、前記選択されたメモリが、前記Ｍ個のメモリのマッチングしたメモリのうちで最小のＭｅｍＩＤを有し、前記ルックアップ結果が前記予めプログラムされたキーとペアにされた予めプログラムされたデータを含む、タイル装置。
【請求項２６】
請求項２５に記載のタイル装置において、前記ルックアップ結果が、さらに、前記予めプログラムされたデータが格納されるメモリアドレスとＭｅｍＩＤとを含む、タイル装置。
【請求項２７】
請求項２５に記載のタイル装置において、前記ルックアップ結果が、出力再構成相互接続ファブリックに転送され、前記出力再構成相互接続ファブリックが、前記Ｔ個のタイルのそれぞれを、Ｎ個のルックアップパスについてのＮ個の最終出力選択装置のうちの１つに接続する、タイル装置。
【請求項２８】
請求項２７に記載のタイル装置において、前記Ｎ個の最終出力選択装置のそれぞれが、
そのルックアップパスに対して確保された全てのタイルからルックアップ結果を受信する収集ブロック、および、
前記収集ブロックによって収集された全てのルックアップ結果から１つの最終ルックアップ結果を選択する選択ブロックであって、前記選択された最終ルックアップ結果が最小のタイルＩＤを有するヒット・タイルからのものである、選択ブロックを含む、
タイル装置。
【請求項２９】
請求項２７に記載のタイル装置において、前記選択された最終ルックアップ結果が、ヒットデータと、タイルＩＤと、ＭｅｍＩＤと、前記ヒットデータが格納されるメモリアドレスとを含む、タイル装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、共有メモリのプールを用いる多数の並行ルックアップに関し、より詳細には、多数の共有メモリを用いる再構成可能な並行ルックアップの方法およびシステムに関する。
【背景技術】
【０００２】
ネットワークプロセッサにおいては、フロー単位のステート管理、ＩＰルックアップ、およびパケット分類など、迅速なルックアップ（検索、参照）を必要とする様々なアプリケーションが存在する。複数の技術を使用して、ＴＣＡＭベースのルックアップ、ハッシュベースのルックアップ、およびダイレクトアクセスのルックアップなどの、ルックアップシステムを実施することができる。ハッシュベースのルックアップ技術およびダイレクトアクセスのルックアップ技術は、ＴＣＡＭベースのルックアップ技術と比較して、メモリコストが低く迅速である。最新のハッシュベースのルックアップ技術は、メモリの使用効率の高さゆえにＤ−ＬＥＦＴハッシュルックアップ方式に基づく。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
しかし、これらのルックアップ技術を使用する従来技術のルックアップシステムにおいては、各ルックアップのために使用されるメモリ数が固定されている。この非柔軟性により、システムが製造された後に各ルックアップのメモリ容量を変更することはできない。さらに、従来技術のルックアップシステムは、例えばハッシュベースなどのルックアップ技術から、ダイレクトアクセスなどの他のルックアップへ変更できないため、１００％のメモリ利用を達成できない。１００％のメモリ利用が達成できれば、完全一致ルックアップを含むアプリケーションにおいて有用となり得る。
【課題を解決するための手段】
【０００４】
システム・オン・チップは、メモリのプールを共有する多数の並行ルックアップをサポートする。各ルックアップに対して確保されるメモリ数は、当該ルックアップに必要なメモリ容量に基づいて再構成可能である。さらに、各ルックアップは、ハッシュベースのルックアップまたはダイレクトアクセスのルックアップとして機能するように構成変更可能である。共有メモリは複数の同質のタイル（tile）にグループ化される。各ルックアップには、タイルのセットが割り当てられる。セット内のタイルは、全てのルックアップが衝突せず並行に行われ得るように他のセットとは共有されない。このシステムはまた、各ルックアップにどのようにタイルが割り当てられるかに基づいてプログラムされる再構成可能接続ネットワークも含む。
【０００５】
一構成において、共有メモリのプールを使用するＮ個の並行ルックアップをサポートするシステム・オン・チップが提供される。前記システム・オン・チップは、Ｔ個のタイルにグループ化されるＴ×Ｍ個の共有メモリと、各ルックアップパス用のＭ個のインデックス変換器と、Ｎ個の入力ポートを前記Ｔ個のタイルに接続する中央再構成可能相互接続ファブリックと、前記Ｔ個のタイルをＮ個の出力ポートに接続する出力再構成可能相互接続ファブリックと、Ｎ個の出力結果コレクタ（収集器）とを含む。前記Ｎ個の出力結果コレクタは、ルックアップパス毎に１つずつ存在する。
【０００６】
いくつかの実施形態において、前記Ｔ個のタイルは、前記ルックアップパスのそれぞれによって必要とされるメモリ容量に基づいて区分され、ルックアップパスに割り当てられる。各ルックアップパスに割り当てられるタイルの数は２の累乗である。１つのタイルが複数の区分に重なることはあり得ない。
【０００７】
いくつかの実施形態において、前記Ｔ個のタイルのそれぞれは、ルックアップ毎にＭ個のウェイ（way）についてのＤ−ＬＥＦＴルックアップをサポートするＭ個のメモリと、前記Ｍ個のメモリ内の予めプログラムされたキーを１つの入力キーと比較するマッチングブロックと、そのタイルについてのヒット結果を選択する選択ブロックと、を含む。
【０００８】
いくつかの実施形態において、前記共有メモリのそれぞれは、２ｍ個のエントリを有する。前記エントリのそれぞれは、ウェイ毎のＰ個のバケット（bucket）についてのＤ−ＬＥＦＴルックアップをサポートするためにＰ個のプログラム可能なペア｛キー，データ｝を含む。
【０００９】
いくつかの実施形態において、各ルックアップパスは、ハッシュベースのルックアップまたはダイレクトアクセスのルックアップとなるように構成変更可能である。
【００１０】
いくつかの実施形態において、各ルックアップパスのＭ個のインデックス変換器のうちのインデックス変換器ｉは、そのルックアップパスに割り当てられた前記Ｔ個のタイルのうちの１つにおけるメモリｉにアクセスするために使用される。
【００１１】
いくつかの実施形態において、各ルックアップパスのＭ個のインデックス変換器のそれぞれは、当該ルックアップパスに割り当てられたタイルの数に基づいて構成変更可能である。
【００１２】
いくつかの実施形態において、各ルックアップパスのＭ個のインデックス変換器のそれぞれは、ｌｏｇ２（Ｔ）＋１個のハッシュ関数およびｌｏｇ２（Ｔ）＋１個の非ハッシュ関数であって、これら関数の出力がｍビットからｌｏｇ２（Ｔ）＋ｍビットの範囲のビット幅を有する、ハッシュ関数および非ハッシュ関数と、前記関数のうちの１つを選択するための第１の構成変更可能レジスタと、ルックアップインデックスがそのルックアップパスの割り当てられたタイルのうちの正しいタイルを指し示すようにタイルオフセットを選択するための第２の構成変更可能レジスタであって、前記割り当てられたタイルは前記Ｔ個のタイルから選択される、第２の構成変更可能レジスタと、をさらに含む。
【００１３】
いくつかの実施形態において、前記Ｍ個インデックス変換器のそれぞれの出力インデックスはｌｏｇ２（Ｔ）＋ｍビットを有する。前記出力インデックス内のｌｏｇ２（Ｔ）個の最上位のビットは前記Ｔ個のタイルのうちの１つを指し示すのに使用され、前記出力インデックス内のｍ個の最下位のビットはメモリ読取アドレスとして使用される。
【００１４】
いくつかの実施形態において、前記中央再構成可能相互接続ファブリックは、Ｍ個の構成変更可能Ｎ×Ｔネットワークを含む。前記Ｎ×Ｔネットワークのそれぞれは、クロスバーまたは構成変更可能バタフライであり得る。
【００１５】
いくつかの実施形態において、前記出力再構成可能相互接続ファブリックはＴ個の構成変更可能な１×Ｎデマルチプレクサを含む。
【００１６】
いくつかの実施形態において、Ｎ個の出力結果コレクタのうちの１つであって、１つのルックアップパスに対応付けられた出力結果コレクタは、そのルックアップパスの割り当てられたタイルから結果を収集し、かつ、当該割り当てられたタイルによって出力された結果から１つの最終結果を選択する。
【００１７】
いくつかの実施形態において、前記Ｔ個のタイルのそれぞれについてのヒット結果は、そのタイルのメモリ内の予めプログラムされたキーとそのタイルの入力キーとの間のキーマッチング結果（キー一致結果）に基づく。
【００１８】
他の構成において、共有メモリのプールを使用してＮ個の並行ルックアップを行う方法が提供される。前記方法は、Ｔ個のタイルをＮ個のグループに区分することを含む。前記Ｔ個のタイルのそれぞれは、Ｍ個のメモリを含む。Ｎ個のルックアップパスのそれぞれは、入力ポートと出力ポートとに接続される。Ｎ個のルックアップパスのそれぞれは、前記Ｎ個のグループのうちの１つに割り当てられる。前記方法はまた、前記Ｎ個の並行ルックアップを実行することを含む。
【００１９】
前記Ｎ個の並行ルックアップの実行は、Ｎ個の入力キーのそれぞれについて、（１）前記入力キーを複数のルックアップインデックスに変換することであって、前記複数のルックアップインデックスのそれぞれは、対応するルックアップパスによってアクセスされることになる、前記Ｎ個のグループのうちの１つにおける特定のタイルのタイルＩＤを含み、かつ、データが読み取られることになる、前記特定のタイル内の１つのメモリのメモリアドレスをも含む、変換することと、（２）前記特定のタイルからのマッチ情報（一致情報）の集合を使用することによって、どのヒット情報を返すかを判断することと、（３）前記複数のルックアップインデックスによって示された複数のタイルからのヒット情報の集合を使用して、前記入力キーに対応付けられたルックアップパスに対してどの最終ルックアップ結果を返すかを判断することと、を含む。
【００２０】
いくつかの実施形態において、前記特定のタイルからどのヒット情報を返すかの前記判断において、当該特定のタイル内の全てのメモリのうち最小のＭｅｍＩＤを有するメモリに、最高の優先順位が与えられる。いくつかの実施形態において、前記ヒット情報は、ヒットデータと、マッチしたキーに対応する前記ヒットデータの位置とを含む。前記ヒットデータの前記位置は、ＭｅｍＩＤと、前記ＭｅｍＩＤに対応付けられたメモリのアドレスと、前記メモリ内の前記ヒットデータの位置とを含む。
【００２１】
いくつかの実施形態において、ルックアップパスに対してどの最終ルックアップ結果を返すかの前記判断において、前記ルックアップパスに割り当てられた全てのタイルのうち最小のタイルＩＤを有するタイルに、最高の優先順位が与えられる。いくつかの実施形態において、前記最終ルックアップ結果は、ヒットデータと、前記ヒットデータを含むタイルのタイルＩＤと、前記ヒットデータが読み取られたメモリアドレスおよびメモリＩＤとを含む。
【００２２】
いくつかの実施形態において、前記方法はまた、前記Ｎ個の並行ルックアップを実行する前に、各ルックアップパスのハッシュサイズを計算することと、各ルックアップパスに対して、ハッシュ選択およびタイルオフセットについての構成ビットを生成することと、ルックアップパスと前記タイルとを接続するネットワークを構成することと、各ルックアップパスに対して、前記メモリをプログラミングすることと、も含む。いくつかの実施形態において、各ルックアップパスに対して前記メモリをプログラミングするための技術は、Ｍ個のウェイとＰ個のバケットについてのＤ−ＬＥＦＴルックアップ技術に基づく。
【００２３】
さらに他の構成において、Ｎ個の並行なキー対ルックアップインデックス変換をサポートする変換装置が提供される。前記変換装置は、前記変換器において受信されるＮ個のキーを含む。前記Ｎ個のキーのそれぞれは、Ｔ個のタイルのうちの１つのタイルグループに対応付けられる。前記Ｔ個のタイルのそれぞれは、Ｍ個のメモリを含む。
【００２４】
前記変換装置はまた、前記Ｎ個のキーをＮ×Ｍ個のルックアップインデックスに並列変換した後、前記変換器から返される前記Ｎ×Ｍ個のルックアップインデックスも含む。
【００２５】
前記変換装置はまた、Ｎ×Ｍ個の変換器も含む。前記Ｎ×Ｍ個の変換器のそれぞれは、前記Ｎ個のキーからの１つのキーを前記Ｎ×Ｍ個のルックアップインデックスからの１つのルックアップインデックスに変換する。前記Ｎ×Ｍ個の変換器のそれぞれは、ｌｏｇ２（Ｔ）＋１個のハッシュ関数およびｌｏｇ２（Ｔ）＋１個の非ハッシュ関数であって、これら関数の出力がｍビットからｌｏｇ２（Ｔ）＋ｍビットの範囲のビット幅を有する、ハッシュ関数および非ハッシュ関数と、前記関数のうちの１つを選択するための第１の構成変更可能レジスタと、前記キーに対応付けられたタイルの前記グループからの正しいタイルを前記ルックアップインデックスが指し示すように、タイルオフセットを選択するための第２の構成変更可能レジスタと、を含む。
【００２６】
いくつかの実施形態において、前記Ｎ×Ｍ個のルックアップインデックスは、中央再構成相互接続ファブリックに転送される。前記中央再構成相互接続ファブリックは、前記Ｎ×Ｍ個のルックアップインデックスのそれぞれをＴ個のタイルのうちの１つに接続して、前記キーを当該タイルに格納された予めプログラムされたキーと比較する。
【００２７】
さらに他の構成において、タイル装置が提供される。前記タイル装置は、Ｍ個のメモリを含む。前記Ｍ個のメモリのそれぞれは２ｍ個のエントリを含む。前記エントリのそれぞれはＰ個のプログラム可能なペア｛キー，データ｝を含む。
【００２８】
前記タイル装置はまた、入力キーを受信しルックアップ結果を出力するマッチング選択論理を含む。前記マッチング選択論理は、前記Ｍ個のメモリ内の予めプログラムされたキーのうちのいずれかに前記入力キーがマッチするか否かを判断するマッチングブロックと、前記Ｍ個のメモリから、前記入力キーとマッチングする前記予めプログラムされたキーを含む１つのメモリを選択する選択ブロックとを含む。前記選択されたメモリは前記Ｍ個のメモリのマッチングしたメモリのうちで最小のＭｅｍＩＤを有する。前記ルックアップ結果は前記予めプログラムされたキーとペアにされた予めプログラムされたデータを含む。前記ルックアップ結果はまた、前記予めプログラムされたデータが格納されるメモリアドレスとＭｅｍＩＤとを含む。
【００２９】
いくつかの実施形態において、前記ルックアップ結果は出力再構成相互接続ファブリックに転送される。前記出力再構成相互接続ファブリックは、前記Ｔ個のタイルのそれぞれを、Ｎ個のルックアップパスについてのＮ個の最終出力選択装置のうちの１つに接続する。いくつかの実施形態において、前記Ｎ個の最終出力選択装置のそれぞれは、そのルックアップパスに対して確保された全てのタイルからルックアップ結果を受信する収集ブロックと、前記収集ブロックによって収集された全てのルックアップ結果から１つの最終ルックアップ結果を選択する選択ブロックとを含み、前記選択された最終ルックアップ結果は最小のタイルＩＤを有するヒット・タイルからのものである。前記選択された最終ルックアップ結果は、ヒットデータと、タイルＩＤと、ＭｅｍＩＤと前記ヒットデータが格納されるメモリアドレスとを含む。
【図面の簡単な説明】
【００３０】
【図１】本発明の一実施形態による並行ルックアップシステムを示す図である。
【図２】本発明の一実施形態による共有メモリのグループ化を例示する図である。
【図３】本発明の一実施形態によるルックアップパスに対する共有タイルの割り当てを例示する図である。
【図４】本発明の一実施形態によるキー対ルックアップインデックス変換器を示す図である。
【図５】本発明の一実施形態によるインデックス変換器を示す図である。
【図６】本発明の一実施形態による中央再構成可能相互接続ファブリックを示す図である。
【図７】本発明の一実施形態によるタイル内のメモリのフォーマットである。
【図８】本発明の一実施形態による例示のタイルの概略図である。
【図９】本発明の一実施形態による選択ブロックにおけるヒット結果の選択方法を示す図である。
【図１０】本発明の一実施形態による出力再構成可能相互接続ファブリックを示す図である。
【図１１】本発明の一実施形態による結果コレクタにおけるヒット結果の選択方法を示す図である。
【図１２】本発明の一実施形態による並行ルックアップシステムを構成およびプログラミングする方法を示す図である。
【００３１】
上記は、以下の本発明の例示的な実施形態のさらに具体的な説明から明らかになるであろう。添付図面において、異なる図全体にわたり、同様の部分は同様の参照符号で示す。図面は必ずしも原寸に比例しておらず、本発明の実施形態の説明に重点が置かれている。
【発明を実施するための形態】
【００３２】
以下の説明では、説明の目的で様々な詳細を述べる。しかし、当業者ならば、これらの特定の詳細事項を用いずとも本発明を実施できることを理解するであろう。よって、本発明は、示される実施形態に限定されることを意図するものではなく、本明細書で説明される原理および特徴に合致する最も広い範囲に従うものである。
【００３３】
システム・オン・チップは、メモリのプールを共有する多数の並行ルックアップをサポートする。各ルックアップに対して確保されるメモリ数は、当該ルックアップに必要なメモリ容量に基づいて再構成可能である。さらに、各ルックアップは、ハッシュベースのルックアップまたはダイレクトアクセスのルックアップとして行われるように構成変更可能である。共有メモリは複数の同質のタイルにグループ化される。各ルックアップには、タイルのセットが割り当てられる。セット内のタイルは、全てのルックアップが衝突せず並行に行われ得るように、他のセットとは共有されない。このシステムはまた、再構成可能接続ネットワークを含む。これらネットワークは、各ルックアップにどのようにタイルが割り当てられるかに基づいてプログラムされる。
【００３４】
図１は、本発明の実施形態による並行ルックアップシステム１００を示す。システム１００は、複数の共有メモリを使用するルックアップパスであって、Ｎ個の同時ルックアップつまり並行なルックアップパスが、衝突せずに実現されるように構成される。システム１００は、ルックアップパス毎の各ｋビット入力キーについて、ｎビットデータを返す。システム１００は、ブロック１０５〜１３０を含み、これらブロックのそれぞれの概要を、まず、そのぞれぞれの特徴を詳述する前に述べる。
【００３５】
ブロック１１５における共有メモリのプールは、Ｔ個の同質の共有タイルにグループ化される。各タイルは、Ｍ個のメモリを含む。各ルックアップパスには、これらＴ個のタイルからいくつかのタイルが割り当てられる。各ルックアップパスに対するタイル割り当ては、典型的には、ソフトウェアにより再構成可能である。
【００３６】
ブロック１０５において、各ルックアップパスの入力キーが複数のルックアップインデックスに変換される。ルックアップデータを読み取るための情報（当該ルックアップパスがアクセスすることになるそれぞれのタイルのタイルＩＤ、およびデータが読み取られることになるそれらのタイル内のメモリのアドレスなど）は、ルックアップインデックスの一部となる。
【００３７】
各入力キーの上記タイルＩＤおよび上記メモリアドレスは、それらの対応するタイルへ、中央再構成相互接続ファブリックであるブロック１１０を介して送信される。中央再構成相互接続ファブリック１１０は、複数の構成変更可能中央ネットワークを含む。これら中央ネットワークは、典型的には、各ルックアップパスに対して確保されるタイルの位置に基づいて構成される。
【００３８】
各タイルでは、ブロック１２０において、予めプログラムされたキーおよびデータが、対応する入力キーから予め変換（例えば、ブロック１１０における変換）されたアドレスにおけるメモリから読み取られる。当該メモリに位置するこれら予めプログラムされたキーは、各ルックアップパスの入力キーと比較される。これら予めプログラムされたキーの中に当該入力キーとのマッチ（一致）があれば、このタイルはヒットデータ（ヒットしたデータ）とヒットアドレス（ヒットしたアドレス）とを返す。
【００３９】
各タイルのヒット情報は、出力再構成可能相互接続ネットワークであるブロック１２５を介して、当該タイルを所有するルックアップパスによって収集される。各ルックアップパスが、ブロック１３０において自己が所有する全てのタイルのヒット情報の中でさらなる選択を一通り行ってから、当該ルックアップパスについて最終ルックアップ結果が返される。
【００４０】
図２は、本発明の実施形態による共有メモリ２００のグループ化を例示する図である。この図は、タイル２０５を使用した、図１の並行ルックアップシステム１００などの並行ルックアップシステムにおける、共有メモリの編成を示す。これらの共有メモリは、Ｔ個の同質の共有タイル２０５にグループ化される。各タイル２０５は、ブロック２１５におけるＭ個のウェイを有するＤ−ＬＥＦＴルックアップをサポートするＭ個のメモリを含む。したがって、並行ルックアップシステム１００は、合計Ｔ×Ｍ個のメモリを有する。各タイル２０５は、並行ルックアップシステム１００においてタイルを特定するタイルＩＤを有する。各タイル２０５内の各メモリ２１０は、当該タイル２０５内の当該メモリ２１０を特定するために、０からＭ−１までの範囲のＭｅｍＩＤに対応付けられる。
【００４１】
ルックアップが実行される前に、各ルックアップパスには、共有タイルからの連続したタイルのセットが割り当てられる。各ルックアップパスに割り当てられるタイルの数は、２の累乗であり、当該ルックアップパスによって必要とされるメモリ容量に依存する。いかなる２つのルックアップパスの間においてもタイルのオーバーラップは許されない。例示のシナリオとして、並行ルックアップシステム１００が８つのタイルと４つの並行ルックアップパスとを有すると仮定する。これらルックアップパスに対するタイル区分は、｛８，０，０，０｝、｛４，４，０，０｝、｛４，２，２，０｝、｛４，２，１，１｝もしくは｛２，２，２，２｝またはこれら区分のうちの１つの任意の順列であり得る。この例示のシナリオについては、並行ルックアップシステム１００を例示するためにこの後も続けて参照および構築していく。
【００４２】
図３は、本発明の実施形態によるルックアップパス３００のための共有タイルの割り当てを例示する図である。８つのタイルと４つの並行ルックアップパスとを有する並行ルックアップシステム１００の上記例示のシナリオを続けて用いると、８つのタイルは以下のように区分される（３０５）：｛４，１，２，１｝。この区分例に基づくと、ルックアップパス０には４つのタイル（具体的には、タイル０、１、２および３）が割り当てられ、ルックアップパス１には１つのタイル（具体的には、タイル４）が割り当てられ、ルックアップパス２には２つのタイル（具体的には、タイル５および６）が割り当てられ、ルックアップパス３には１つのタイル（具体的には、タイル７）が割り当てられる。
【００４３】
各ルックアップパスに対してタイルのセットつまりグループを割り当てた後、各ルックアップパスの入力キーは、図１のブロック１０５にて複数のルックアップインデックスに変換される。ルックアップインデックスは、各ルックアップパスに対して割り当てられたタイルにアクセスするために使用される。各キーの各ルックアップインデックスは、ｌｏｇ２（Ｔ）＋ｍビットを有する。当該ルックアップインデックスのｌｏｇ２（Ｔ）最上位ビット（ＭＳＢ）は、タイルＩＤのために使用され、当該ルックアップインデックスのｍ最下位ビット（ＬＳＢ）は、メモリ読取アドレスのために使用される。タイルＩＤは、対応するルックアップパス対して割り当てられたタイルのうちの１つを指し示し、メモリ読取アドレスは、データが読み取られる当該タイル内の１つのメモリのアドレスである。８つのタイルと４つの並行ルックアップパスとを有する並行ルックアップシステム１００の上記例示のシナリオを続けて用いて、各タイル内の各メモリは１Ｋエントリ幅であると仮定する。各タイルＩＤが３ビット幅であり、各メモリ読取アドレスが１０ビット幅であるので、各ルックアップインデックスは１３ビット幅である。
【００４４】
各ルックアップパスは、典型的には、１つのタイル内にあるメモリと同数（すなわちＭ個）のインデックス変換器を備える。図４は、本発明の実施形態によるキー対ルックアップインデックス変換器４００を示す。いくつかの実施形態では、図１のブロック１０５は、キー対ルックアップインデックス変換器（キーによるルックアップのインデックス変換器）４００と同様に構成される。ルックアップパス毎の入力キーは、そのＭ個のインデックス変換器４０５の全てに送信される。その結果、Ｍ個のルックアップインデックスが、ルックアップパス毎の入力キーに対して得られる。各ルックアップインデックスは、タイルＩＤの値を使用することによって、対応するルックアップパスに対して割り当てられたタイル内の任意のタイルにアクセスできるが、ルックアップインデックスｉは当該タイル内のメモリｉにしかアクセスできない。これについては以下でさらに説明する。
【００４５】
各インデックス変換器４０５は、ハッシュ関数のセットを含む。並行ルックアップシステムがＴ個のタイルを有する場合、各インデックス変換器４０５は、ｌｏｇ２（Ｔ）＋１個のハッシュ関数を有する。これらハッシュ関数の出力は、ｍビットからｌｏｇ２（Ｔ）＋ｍビットの範囲のビット幅を有する。ハッシュサイズとは、１つのハッシュ関数のビット幅のことである。各ルックアップパスのために選択されたハッシュサイズは、当該ルックアップパスに対して確保されるタイルの数に基づいて再構成可能である。あるルックアップパスにｑ個のタイルが割り当てされた場合、当該ルックアップパスのための各インデックス変換器用の選択されたハッシュサイズは、ｍ＋ｌｏｇ２（ｑ）である。８つのタイルを有する並行ルックアップシステム１００の上記例示のシナリオを続けて用いると、各インデックス変換器は、ｌｏｇ２（８）＋１＝４（４つの）ハッシュ関数を有する。
【００４６】
図５は、本発明の実施形態によるインデックス変換器５００を示す。いくつかの実施形態において、図４のインデックス変換器４０５は、インデックス変換器５００と同様に構成される。上記例示のシナリオを再度続けて使用して、各タイル内のメモリアドレスは１０ビット幅であると仮定する。この例示のシナリオのシステムは８つのタイルを有するので、４つのハッシュ関数のハッシュサイズはそれぞれ、１０、１１、１２、および１３である（１０からｌｏｇ２（８）＋１０）。ハッシュサイズが同一でないため、出力がそれぞれ１３ビット幅となるように、これら４つのハッシュ関数の出力のプレフィクスにおいてゼロビットが連結される。
【００４７】
再構成可能cfg_hash_selレジスタを使用して、各ルックアップパスに対するハッシュ関数を選択できる。図５において、１つのルックアップパスに１つのタイルが割り当てられている場合には、１０ビットハッシュ関数が選択される（ｌｏｇ２（１）＋１０＝１０）。１つのルックアップに２つのタイルが割り当てられている場合には、１１ビットハッシュ関数が選択される（ｌｏｇ２（２）＋１０＝１１）。１つのルックアップに４つのタイルが割り当てられている場合には、１２ビットハッシュ関数が選択される（ｌｏｇ２（４）＋１０＝１２）。１つのルックアップに８つのタイルが割り当てられている場合には、１３ビットハッシュ関数が選択される（ｌｏｇ２（８）＋１０＝１３）。
【００４８】
同様に、cfg_hash_selレジスタを使用して、各ルックアップパスに対する非ハッシュ関数を選択できる。特に、インデックス変換器５００は、ハッシュ関数と同じサイズを有する非ハッシュ関数のセットも含む。非ハッシュ関数は、その内部に論理を有さない。その代り、非ハッシュ関数は単に、入力キーから最下位ビット（ＬＳＢ）を取得するだけである。非ハッシュ関数は、ユーザが、ハッシュを介するよりもむしろ（ダイレクトメモリポインタとして入力キーを使用することで）直接メモリにアクセスする必要がある場合に、使用される。この設計により、図１の並行ルックアップシステム１００のようなシステムが、ハッシュベースのルックアップおよびダイレクトアクセスのルックアップの両方をサポートできる。ハッシュベースのルックアップまたはダイレクトアクセスのルックアップの選択は、cfg_hash_selレジスタを構成することにより行われる。例えば、１つのルックアップに４つのタイルが割り当てられている場合には、cfg_hash_selレジスタは、ハッシュベースのルックアップのために１２ビットハッシュ関数、またはダイレクトアクセスのルックアップのために１２ビット非ハッシュ関数を選択する。
【００４９】
インデックス変換器５００はまた、各ルックアップインデックスがそのルックアップパスに割り当てられたタイルのうちの１つを正しく指し示すように、各ルックアップインデックスのタイルＩＤを調整する再構成可能cfg_tile_offsetレジスタを含む。cfg_tile_offsetレジスタのために設定される値は、典型的には、対応するルックアップに割り当てられたタイルのセット内の１番目のタイルＩＤである。例えば、図３において、ルックアップパス０に割り当てられたタイルがタイル０、１、２および３であるので、ルックアップパス０のためのcfg_tile_offsetレジスタは０に設定される。ルックアップパス１、２および３のためのcfg_tile_offsetレジスタは、それぞれ、４、５および７に設定される。
【００５０】
図１に戻って、並行ルックアップシステム１００は、中央再構成可能相互接続ファブリック１１０を含む。中央再構成可能相互接続ファブリック１１０は、１つのタイル内にあるメモリと同数（すなわち、Ｍ個）の別々の中央ネットワークを含む。中央ネットワークのそれぞれは、ルックアップパスと同数（すなわち、Ｎ個）の入力ポートを有し、タイルと同数（すなわち、Ｔ個）の出力ポートを有する。中央ネットワークは、全てのルックアップパスのインデックス変換器ｉの出力を全てのタイル内における、メモリｉに接続する。
【００５１】
図６は、本発明の実施形態による中央再構成可能相互接続ファブリック６００を示す。いくつかの実施形態において、中央再構成可能相互接続ファブリック１１０は、再構成可能相互接続ファブリック６００と同様に構成される。上記例示のシナリオを再度続けて使用すると、タイル毎に２つのメモリを有する８つのタイル６１５を使用する４つの並行ルックアップパスがあり、ルックアップパス毎に２つのインデックス変換器６０５が存在する。中央再構成可能相互接続ファブリック６００は、２つの４×８中央ネットワーク６１０ａ、６１０ｂ（まとめて６１０）を有する。ネットワーク０は、全てのルックアップパスのインデックス変換器０の出力を全てのタイル６１５のメモリ０に接続し、ネットワーク１は、全てのルックアップパスのインデックス変換器１の出力を全てのタイル６１５のメモリ１に接続する。
【００５２】
これら中央ネットワーク６１０は、各ルックアップパスをその確保されたタイル６１５に正しく接続する。例えば、図３において、ルックアップ０は、タイル０、１、２および３に割り当てられている。したがって、ネットワーク０は、入力ポート０を出力ポート０、１、２、３に接続するように構成される。同様に、入力ポート１は、出力ポート４に接続される。同様に、入力ポート２は、出力ポート５および６に接続される。同様に、入力ポート３は、出力ポート７に接続される。これらの接続は図６に示されている。全ての中央ネットワーク６１０は、同じ構成セットアップを有する。したがって、ネットワーク１の構成は、ネットワーク０の構成と全く同じである。
【００５３】
各中央ネットワーク６１０はクロスバーであってよい。しかし、これらの中央ネットワーク６１０は、典型的には、ルックアップが実行される前に予め構成されている。このことは、各中央ネットワーク６１０は実行時には変更されないことを意味する。あるいは、中央ネットワーク６１０は、クロスバーより安価なバタフライネットワークから構築され得る。Ｃｌｏｓネットワーク、Ｂｅｎｅｓネットワーク、またはＯｍｅｇａネットワークなどの実施可能ないくつかの共通再構成可能バタフライネットワークが存在する。
【００５４】
中央ネットワーク６１０が構成された後、各ルックアップパスは、その入力キーと、当該入力キーのルックアップインデックスとを、その割り当てられたタイル６１５全てに直接送信する。ルックアップインデックスは、タイルＩＤおよびメモリアドレスを含む。１つの割り当てられたタイル６１５が、ルックアップインデックスを受信すると、当該割り当てられたタイル６１５は、このルックアップインデックスのタイルＩＤが本当に自己を指し示しているか否かをチェックする。このタイルＩＤが当該タイルのものである場合、このタイルは、当該ルックアップインデックス内のメモリアドレスを使用して、その対応するメモリから読取りを行うことになる。上記タイルＩＤがこのタイルのものでない場合、受信されたインデックスは無視される。
【００５５】
タイル６１５が、自己を指し示すタイルＩＤを有するルックアップインデックスを受信する場合、このルックアップインデックスは有効インデックスと呼ばれる。各タイル６１５はＭ個のメモリを有するので、各タイル６１５は、同じキーからＭ個の中央ネットワークを介して最大Ｍ個の有効ルックアップインデックスを受信可能である。例えば、図６において、各タイル６１５は、その２つのローカルメモリに対する２つの有効インデックスを受信可能である。
【００５６】
図７は、本発明の実施形態によるタイル内のメモリ７００のフォーマットを示す。メモリ７００の深さは、典型的には、２ｍ個のエントリ（ｍビットアドレス）である。メモリ７００内の各エントリは、１ウェイ毎にＰ個のバケットを有するＤ−ＬＥＦＴルックアップをサポートする、Ｐ個の予めプログラムされた｛キー，データ｝ペア７０５を含む。したがって、メモリ７００の幅は、Ｐ×（ｋ＋ｎ）ビットであり、ｋは各キーのビット幅であり、ｎは各データのビット幅である。タイルのローカルメモリ内のキーおよびデータの値は、各ルックアップパスのためにどのように共有タイルが区分されて割り当てられるかに依存して、プログラム可能である。これらメモリのためのプログラム原理は、Ｄ−ＬＥＦＴルックアップ技術に基づく。
【００５７】
あるタイルが１つのローカルメモリに対する有効インデックスを受信すると、当該有効インデックス内のメモリアドレスが、当該ローカルメモリを読み取るために使用される。当該ローカルメモリの出力は、当該メモリアドレスによって指し示されるエントリにおけるＰ個の予めプログラムされた｛キー，データ｝ペアを含む。このタイルが自己のＭ個のローカルメモリに対するＭ個の有効インデックスを受信する極端な場合では、Ｍ×Ｐ個のペア｛キー，データ｝が存在する。Ｍ×Ｐ個のキーが当該タイル内のマッチング論理ブロックに送信されて、これらの予めプログラムされたキーのうちのどれ（１つまたは複数のキー）が当該入力キーとマッチするかが決定される。マッチング結果（１つまたは複数のマッチング結果）が、当該タイルのルックアップ結果として返すように、予めプログラムされたデータを選択するために使用される。
【００５８】
図８は、本発明の実施形態による例示のタイル８００の概略図である。いくつかの実施形態において、図１のブロック１１５内のタイルはタイル８００と同様に構成される。上記例示のシナリオを再度続けて使用すると、タイル８００は、それぞれ３個の予めプログラムされたペア｛キー，データ｝を有する２つのメモリ８０５を含む。各入力キーについて、タイル８００は、その２つのメモリ８０５から、最大６つの予めプログラムされた｛キー，データ｝の有効なペアを取得し得る。この６つのキー、すなわち予めプログラムされて格納されたキーが、タイル８００のマッチングブロック８１０に送信される。マッチングブロック８１０からのマッチング結果（１つまたは複数のマッチング結果）が、選択ブロック８１５に送信されて、タイル８００のルックアップ結果が出力される。いくつかの実施形態では、図２のブロック２１５がマッチングブロック８１０および選択ブロック８１５と同様に構成される。
【００５９】
図９は、本発明の実施形態による選択ブロック９００におけるヒット結果の選択方法を示す。いくつかの実施形態において、図８の選択ブロック８１５は選択ブロック９００と同様に構成される。方法９００は、ステップ９０５から始まり、ステップ９０５において、全ての格納されたキーについてのマッチング結果（１つまたは複数のマッチング結果）が、図８のマッチングブロック８１０から受信される。ステップ９１０において、予めプログラムされたかまたは格納されたキーマッチのうち、入力キーとマッチするものはあるか否かが判断される。マッチがないとステップ９１０において判断されると、ステップ９１５において、ミス（失敗）ビットがセットされ、結果は返されない。少なくとも１つのマッチがあるとステップ９１０において判断されると、ステップ９２０において、予めプログラムされたキーマッチの中で入力キーとマッチするものが１つよりも多くあるか否かが判断される。１つしかマッチがないとステップ９２０において判断されると、ステップ９２５において、ヒットビット（ヒットしたビット）がセットされ、当該予めプログラムされたキーとペアにされた予めプログラムされたデータがヒットデータ（ヒットしたデータ）として返される。１つよりも多くのマッチがあるとステップ９２０において判断されると、ステップ９３０において、ヒットビットがセットされ、最小のＭｅｍＩＤを有するメモリ内の当該予めプログラムされたキーとペアにされた予めプログラムされたデータが選ばれ、ヒットデータとして返される。
【００６０】
当該入力キーについてヒットデータを返すことに加えて、当該タイルは、当該ヒットデータが格納されているメモリアドレスおよびメモリＩＤを含む、ヒットデータの位置も返す。ヒットデータの位置は、ユーザによるシステムデバッグのために有用であり、また、統計の目的のためにも有用である。ステップ９１５、９２５、および９３０の後、方法９００はステップ９０５に戻る。
【００６１】
図８に戻って、タイル８００のルックアップ結果は、図１の出力再構成可能相互接続ファブリック１２５などの出力再構成可能相互接続ファブリックを介して、各ルックアップパスの結果コレクタに送信される。
【００６２】
図１０は、本発明の実施形態による出力再構成可能相互接続ファブリック１０００を示す。いくつかの実施形態において、出力再構成可能相互接続ファブリック１２５は、出力再構成可能相互接続ファブリック１０００と同様に構成される。出力再構成可能相互接続ファブリック１０００は、出力ネットワーク１０１０を含む。出力ネットワーク１０１０は、Ｔ個の１入力×Ｎ出力再構成可能デマルチプレクサを含む。出力ネットワーク１０１０は、複数のタイル１００５のそれぞれの出力を１つのルックアップパスの１つの適切な結果コレクタ１０１５に接続する。例えば、図３において、出力ネットワーク１０１０は、タイル０、１、２および３の出力をルックアップパス０の結果コレクタ１０１５に接続する。出力ネットワーク１０１０はまた、タイル４の出力をルックアップパス１の結果コレクタ１０１５に接続する。出力ネットワーク１０１０はまた、タイル５および６の出力をルックアップパス２の結果コレクタ１０１５に接続する。出力ネットワーク１０１０はまた、タイル７の出力をルックアップパス３の結果コレクタ１０１５に接続する。これらの接続は図１０に示されている。各ルックアップパスの結果コレクタ１０１５は、自己ののタイル１００５のうちから１つの結果を選択して、当該結果コレクタ１０１５の最終ルックアップ結果を出力する。
【００６３】
図１１は、本発明の実施形態による結果コレクタ１１００におけるヒット結果の選択方法を示す。いくつかの実施形態において、図１０の結果コレクタ１０１５は、結果コレクタ１１００と同様に構成される。方法１１００は、ステップ１１０５から始まり、ステップ１１０５において、割り当てられたタイルからのルックアップ結果（１つまたは複数のルックアップ結果）が受信される。ステップ１１１０において、タイルのヒットがあるか否かが判断される。ヒットがないとステップ１１１０において判断されると、ステップ１１１５において、ミスビットがセットされ、結果は返されない。少なくとも１つのヒットがあるとステップ１１１０において判断されると、ステップ１１２０において、複数のタイルから１つよりも多くのヒットがあるか否かが判断される。１つしかヒットがないとステップ１１２０において判断されると、ステップ１１２５において、ヒットビットがセットされ、ヒット結果すなわちヒットデータがルックアップ結果として返される。１つよりも多くのヒットがあるとステップ１１２０において判断されると、ステップ１１３０において、ヒットビットがセットされ、タイルのヒットのうち最小のタイルＩＤを有するタイルからのヒット結果が選ばれ、これがルックアップ結果として返される。
【００６４】
ヒット結果を返すことに加えて、結果コレクタはまた、タイルＩＤと、メモリＩＤと、ヒットデータが読み取られたメモリアドレスとを返す。タイルＩＤ、メモリＩＤ、およびメモリアドレスは、ユーザによるシステムデバッグのために有用であり、また、統計の目的のためにも有用である。ステップ１１１５、１１２５、および１１３０の後、方法１１００はステップ１１０５に戻る。
【００６５】
図１２は、本発明の実施形態による並行ルックアップシステム１２００を構成およびプログラミングする方法を示す。方法１２００は、図１の並行ルックアップシステム１００などの並行ルックアップシステムをユーザがセットアップするためのガイドラインを提供する。並行ルックアップシステム１００は、Ｔ個の共有タイルを有するＮ個の並行ルックアップパスを有する。各タイルは、Ｍ個のメモリを有する。各メモリは、ｍビット幅のメモリアドレスを有する。各メモリエントリは、ソフトウェアによりプログラム可能なＰ個のペア｛キー，データ｝を含む。システム１００内の各ルックアップは、Ｍ個のウェイとウェイ毎のＰ個のバケットについてのＤ−ＬＥＦＴルックアップである。
【００６６】
方法１２００は、ステップ１２０５から始まり、ステップ１２０５において、ユーザが、各ルックアップパスにタイルを割り当てる。各ルックアップパスに割り当てられるタイルの数は２の累乗でなければならない。タイル区分もまた、ルックアップパス同士の間でタイルオーバーラップが生じないようにしなければならない。
【００６７】
ステップ１２１０において、各ルックアップパスのハッシュサイズが計算される。各ルックアップパスのハッシュサイズは、当該ルックアップパスに割り当てられたタイルの数に基づく。あるルックアップパスにｑ個のタイルが割り当てられると、そのハッシュサイズは、ｌｏｇ２（ｑ）＋ｍに等しい。
【００６８】
各ルックアップのハッシュサイズが分かると、ステップ１２１５において、インデックス変換器内のレジスタcfg_hash_selおよびcfg_tile_offsetがそのハッシュサイズに従って構成される。cfg_hash_selレジスタは、当該ルックアップパスに対する関数を選択する。cfg_tile_offsetレジスタは、当該ルックアップパスに対するルックアップインデックスのタイルＩＤを調整する。
【００６９】
その一方、ステップ１２２０において、中央相互接続ネットワークおよび出力相互接続ネットワークが、ルックアップパスをそれらの確保されたタイルに接続する。インデックス変換器およびネットワークについての全ての構成ビットは、本明細書に記載する原理に従って、スクリプトによって自動的に生成され得る。
【００７０】
ステップ１２２５において、各ルックアップパスに割り当てられたメモリがプログラムされる。プログラミング技術は、ルックアップ毎にＭ個のウェイとウェイ毎のＰ個のバケットについてのＤ−ＬＥＦＴルックアップ技術に基づく。
【００７１】
全ての割り当てられたメモリがプログラムされると、ステップ１２３０において、並行ルックアップシステム１００は、並行に、入力キーを受信しＮ個のルックアップを実行する用意ができている。ステップ１２３０の後、方法１２００は終了する。
【００７２】
本発明の実施形態は、相互接続ネットワークの適切な構成による共有メモリのプールを使用する多数の並行ルックアップに関する。各ルックアップに対して確保された共有メモリの数は、当該ルックアップによって必要とされるメモリ容量に基づいて再構成可能である。共有メモリは同質のタイルにグループ化される。各ルックアップには、当該ルックアップによって必要とされるメモリ容量に基づいてタイルのセットが割り当てられる。各ルックアップに割り当てられたタイルは、全てのルックアップが衝突せず並行に行われ得るように、他のルックアップとオーバーラップしない。各ルックアップはハッシュベースのルックアップまたはダイレクトアクセスのルックアップのいずれかになるよう再構成可能である。各相互接続ネットワークは、どのようにタイルが各ルックアップに割り当てられるかに基づいてプログラム可能である。
【００７３】
当業者ならば、他の使用法や利点もまた存在することを理解するであろう。本発明を様々な特定の詳細を参照に説明したが、当業者ならば、本発明の精神から逸脱することなく本発明が他の特定の形式で実施され得ることを理解するであろう。したがって、当業者ならば、本発明が上記例示の詳細によって限定されず、添付の請求項によって定義されることを理解するであろう。
【図１】
2015172925.tif 000003
【図２】
2015172925.tif 000004
【図３】
2015172925.tif 000005
【図４】
2015172925.tif 000006
【図５】
2015172925.tif 000007
【図６】
2015172925.tif 000008
【図７】
2015172925.tif 000009
【図８】
2015172925.tif 000010
【図９】
2015172925.tif 000011
【図１０】
2015172925.tif 000012
【図１１】
2015172925.tif 000013
【図１２】
2015172925.tif 000014
【外国語明細書】
2015172925000001.pdf
2015172925000002.pdf
2015172925000003.pdf
2015172925000004.pdf