JP6594624B2 - 多数の共有メモリを用いる再構成可能な並行ルックアップの方法およびシステム - Google Patents

多数の共有メモリを用いる再構成可能な並行ルックアップの方法およびシステム Download PDF

Info

Publication number
JP6594624B2
JP6594624B2 JP2014263373A JP2014263373A JP6594624B2 JP 6594624 B2 JP6594624 B2 JP 6594624B2 JP 2014263373 A JP2014263373 A JP 2014263373A JP 2014263373 A JP2014263373 A JP 2014263373A JP 6594624 B2 JP6594624 B2 JP 6594624B2
Authority
JP
Japan
Prior art keywords
lookup
tile
tiles
memory
path
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2014263373A
Other languages
English (en)
Other versions
JP2015172925A (ja
Inventor
アン・ティー・トラン
ジェラルド・シュミット
ツァヒ・ダニエル
サウラブ・シュリヴァスタヴァ
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Cavium LLC
Original Assignee
Cavium Networks LLC
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Cavium Networks LLC filed Critical Cavium Networks LLC
Publication of JP2015172925A publication Critical patent/JP2015172925A/ja
Application granted granted Critical
Publication of JP6594624B2 publication Critical patent/JP6594624B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/0644Management of space entities, e.g. partitions, extents, pools
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03KPULSE TECHNIQUE
    • H03K19/00Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits
    • H03K19/02Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components
    • H03K19/173Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components
    • H03K19/177Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components arranged in matrix form
    • H03K19/17724Structural details of logic blocks
    • H03K19/17728Reconfigurable logic blocks, e.g. lookup tables
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C15/00Digital stores in which information comprising one or more characteristic parts is written into the store and in which information is read-out by searching for one or more of these characteristic parts, i.e. associative or content-addressed stores
    • G11C15/04Digital stores in which information comprising one or more characteristic parts is written into the store and in which information is read-out by searching for one or more of these characteristic parts, i.e. associative or content-addressed stores using semiconductor elements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/74Address processing for routing
    • H04L45/745Address table lookup; Address filtering
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/74Address processing for routing
    • H04L45/745Address table lookup; Address filtering
    • H04L45/7452Multiple parallel or consecutive lookup operations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0864Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using pseudo-associative means, e.g. set-associative or hashing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/74Address processing for routing
    • H04L45/745Address table lookup; Address filtering
    • H04L45/7453Address table lookup; Address filtering using hashing

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Mathematical Physics (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)
  • Logic Circuits (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Multi Processors (AREA)
  • Memory System (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)

Description

本発明は、共有メモリのプールを用いる多数の並行ルックアップに関し、より詳細には、多数の共有メモリを用いる再構成可能な並行ルックアップの方法およびシステムに関する。
ネットワークプロセッサにおいては、フロー単位のステート管理、IPルックアップ、およびパケット分類など、迅速なルックアップ(検索、参照)を必要とする様々なアプリケーションが存在する。複数の技術を使用して、TCAMベースのルックアップ、ハッシュベースのルックアップ、およびダイレクトアクセスのルックアップなどの、ルックアップシステムを実施することができる。ハッシュベースのルックアップ技術およびダイレクトアクセスのルックアップ技術は、TCAMベースのルックアップ技術と比較して、メモリコストが低く迅速である。最新のハッシュベースのルックアップ技術は、メモリの使用効率の高さゆえにD−LEFTハッシュルックアップ方式に基づく。
しかし、これらのルックアップ技術を使用する従来技術のルックアップシステムにおいては、各ルックアップのために使用されるメモリ数が固定されている。この非柔軟性により、システムが製造された後に各ルックアップのメモリ容量を変更することはできない。さらに、従来技術のルックアップシステムは、例えばハッシュベースなどのルックアップ技術から、ダイレクトアクセスなどの他のルックアップへ変更できないため、100%のメモリ利用を達成できない。100%のメモリ利用が達成できれば、完全一致ルックアップを含むアプリケーションにおいて有用となり得る。
システム・オン・チップは、メモリのプールを共有する多数の並行ルックアップをサポートする。各ルックアップに対して確保されるメモリ数は、当該ルックアップに必要なメモリ容量に基づいて再構成可能である。さらに、各ルックアップは、ハッシュベースのルックアップまたはダイレクトアクセスのルックアップとして機能するように構成変更可能である。共有メモリは複数の同質のタイル(tile)にグループ化される。各ルックアップには、タイルのセットが割り当てられる。セット内のタイルは、全てのルックアップが衝突せず並行に行われ得るように他のセットとは共有されない。このシステムはまた、各ルックアップにどのようにタイルが割り当てられるかに基づいてプログラムされる再構成可能接続ネットワークも含む。
一構成において、共有メモリのプールを使用するN個の並行ルックアップをサポートするシステム・オン・チップが提供される。前記システム・オン・チップは、T個のタイルにグループ化されるT×M個の共有メモリと、各ルックアップパス用のM個のインデックス変換器と、N個の入力ポートを前記T個のタイルに接続する中央再構成可能相互接続ファブリックと、前記T個のタイルをN個の出力ポートに接続する出力再構成可能相互接続ファブリックと、N個の出力結果コレクタ(収集器)とを含む。前記N個の出力結果コレクタは、ルックアップパス毎に1つずつ存在する。
いくつかの実施形態において、前記T個のタイルは、前記ルックアップパスのそれぞれによって必要とされるメモリ容量に基づいて区分され、ルックアップパスに割り当てられる。各ルックアップパスに割り当てられるタイルの数は2の累乗である。1つのタイルが複数の区分に重なることはあり得ない。
いくつかの実施形態において、前記T個のタイルのそれぞれは、ルックアップ毎にM個のウェイ(way)についてのD−LEFTルックアップをサポートするM個のメモリと、前記M個のメモリ内の予めプログラムされたキーを1つの入力キーと比較するマッチングブロックと、そのタイルについてのヒット結果を選択する選択ブロックと、を含む。
いくつかの実施形態において、前記共有メモリのそれぞれは、2個のエントリを有する。前記エントリのそれぞれは、ウェイ毎のP個のバケット(bucket)についてのD−LEFTルックアップをサポートするためにP個のプログラム可能なペア{キー,データ}を含む。
いくつかの実施形態において、各ルックアップパスは、ハッシュベースのルックアップまたはダイレクトアクセスのルックアップとなるように構成変更可能である。
いくつかの実施形態において、各ルックアップパスのM個のインデックス変換器のうちのインデックス変換器iは、そのルックアップパスに割り当てられた前記T個のタイルのうちの1つにおけるメモリiにアクセスするために使用される。
いくつかの実施形態において、各ルックアップパスのM個のインデックス変換器のそれぞれは、当該ルックアップパスに割り当てられたタイルの数に基づいて構成変更可能である。
いくつかの実施形態において、各ルックアップパスのM個のインデックス変換器のそれぞれは、log(T)+1個のハッシュ関数およびlog(T)+1個の非ハッシュ関数であって、これら関数の出力がmビットからlog(T)+mビットの範囲のビット幅を有する、ハッシュ関数および非ハッシュ関数と、前記関数のうちの1つを選択するための第1の構成変更可能レジスタと、ルックアップインデックスがそのルックアップパスの割り当てられたタイルのうちの正しいタイルを指し示すようにタイルオフセットを選択するための第2の構成変更可能レジスタであって、前記割り当てられたタイルは前記T個のタイルから選択される、第2の構成変更可能レジスタと、をさらに含む。
いくつかの実施形態において、前記M個インデックス変換器のそれぞれの出力インデックスはlog(T)+mビットを有する。前記出力インデックス内のlog(T)個の最上位のビットは前記T個のタイルのうちの1つを指し示すのに使用され、前記出力インデックス内のm個の最下位のビットはメモリ読取アドレスとして使用される。
いくつかの実施形態において、前記中央再構成可能相互接続ファブリックは、M個の構成変更可能N×Tネットワークを含む。前記N×Tネットワークのそれぞれは、クロスバーまたは構成変更可能バタフライであり得る。
いくつかの実施形態において、前記出力再構成可能相互接続ファブリックはT個の構成変更可能な1×Nデマルチプレクサを含む。
いくつかの実施形態において、N個の出力結果コレクタのうちの1つであって、1つのルックアップパスに対応付けられた出力結果コレクタは、そのルックアップパスの割り当てられたタイルから結果を収集し、かつ、当該割り当てられたタイルによって出力された結果から1つの最終結果を選択する。
いくつかの実施形態において、前記T個のタイルのそれぞれについてのヒット結果は、そのタイルのメモリ内の予めプログラムされたキーとそのタイルの入力キーとの間のキーマッチング結果(キー一致結果)に基づく。
他の構成において、共有メモリのプールを使用してN個の並行ルックアップを行う方法が提供される。前記方法は、T個のタイルをN個のグループに区分することを含む。前記T個のタイルのそれぞれは、M個のメモリを含む。N個のルックアップパスのそれぞれは、入力ポートと出力ポートとに接続される。N個のルックアップパスのそれぞれは、前記N個のグループのうちの1つに割り当てられる。前記方法はまた、前記N個の並行ルックアップを実行することを含む。
前記N個の並行ルックアップの実行は、N個の入力キーのそれぞれについて、(1)前記入力キーを複数のルックアップインデックスに変換することであって、前記複数のルックアップインデックスのそれぞれは、対応するルックアップパスによってアクセスされることになる、前記N個のグループのうちの1つにおける特定のタイルのタイルIDを含み、かつ、データが読み取られることになる、前記特定のタイル内の1つのメモリのメモリアドレスをも含む、変換することと、(2)前記特定のタイルからのマッチ情報(一致情報)の集合を使用することによって、どのヒット情報を返すかを判断することと、(3)前記複数のルックアップインデックスによって示された複数のタイルからのヒット情報の集合を使用して、前記入力キーに対応付けられたルックアップパスに対してどの最終ルックアップ結果を返すかを判断することと、を含む。
いくつかの実施形態において、前記特定のタイルからどのヒット情報を返すかの前記判断において、当該特定のタイル内の全てのメモリのうち最小のMemIDを有するメモリに、最高の優先順位が与えられる。いくつかの実施形態において、前記ヒット情報は、ヒットデータと、マッチしたキーに対応する前記ヒットデータの位置とを含む。前記ヒットデータの前記位置は、MemIDと、前記MemIDに対応付けられたメモリのアドレスと、前記メモリ内の前記ヒットデータの位置とを含む。
いくつかの実施形態において、ルックアップパスに対してどの最終ルックアップ結果を返すかの前記判断において、前記ルックアップパスに割り当てられた全てのタイルのうち最小のタイルIDを有するタイルに、最高の優先順位が与えられる。いくつかの実施形態において、前記最終ルックアップ結果は、ヒットデータと、前記ヒットデータを含むタイルのタイルIDと、前記ヒットデータが読み取られたメモリアドレスおよびメモリIDとを含む。
いくつかの実施形態において、前記方法はまた、前記N個の並行ルックアップを実行する前に、各ルックアップパスのハッシュサイズを計算することと、各ルックアップパスに対して、ハッシュ選択およびタイルオフセットについての構成ビットを生成することと、ルックアップパスと前記タイルとを接続するネットワークを構成することと、各ルックアップパスに対して、前記メモリをプログラミングすることと、も含む。いくつかの実施形態において、各ルックアップパスに対して前記メモリをプログラミングするための技術は、M個のウェイとP個のバケットについてのD−LEFTルックアップ技術に基づく。
さらに他の構成において、N個の並行なキー対ルックアップインデックス変換をサポートする変換装置が提供される。前記変換装置は、前記変換器において受信されるN個のキーを含む。前記N個のキーのそれぞれは、T個のタイルのうちの1つのタイルグループに対応付けられる。前記T個のタイルのそれぞれは、M個のメモリを含む。
前記変換装置はまた、前記N個のキーをN×M個のルックアップインデックスに並列変換した後、前記変換器から返される前記N×M個のルックアップインデックスも含む。
前記変換装置はまた、N×M個の変換器も含む。前記N×M個の変換器のそれぞれは、前記N個のキーからの1つのキーを前記N×M個のルックアップインデックスからの1つのルックアップインデックスに変換する。前記N×M個の変換器のそれぞれは、log(T)+1個のハッシュ関数およびlog(T)+1個の非ハッシュ関数であって、これら関数の出力がmビットからlog(T)+mビットの範囲のビット幅を有する、ハッシュ関数および非ハッシュ関数と、前記関数のうちの1つを選択するための第1の構成変更可能レジスタと、前記キーに対応付けられたタイルの前記グループからの正しいタイルを前記ルックアップインデックスが指し示すように、タイルオフセットを選択するための第2の構成変更可能レジスタと、を含む。
いくつかの実施形態において、前記N×M個のルックアップインデックスは、中央再構成相互接続ファブリックに転送される。前記中央再構成相互接続ファブリックは、前記N×M個のルックアップインデックスのそれぞれをT個のタイルのうちの1つに接続して、前記キーを当該タイルに格納された予めプログラムされたキーと比較する。
さらに他の構成において、タイル装置が提供される。前記タイル装置は、M個のメモリを含む。前記M個のメモリのそれぞれは2個のエントリを含む。前記エントリのそれぞれはP個のプログラム可能なペア{キー,データ}を含む。
前記タイル装置はまた、入力キーを受信しルックアップ結果を出力するマッチング選択論理を含む。前記マッチング選択論理は、前記M個のメモリ内の予めプログラムされたキーのうちのいずれかに前記入力キーがマッチするか否かを判断するマッチングブロックと、前記M個のメモリから、前記入力キーとマッチングする前記予めプログラムされたキーを含む1つのメモリを選択する選択ブロックとを含む。前記選択されたメモリは前記M個のメモリのマッチングしたメモリのうちで最小のMemIDを有する。前記ルックアップ結果は前記予めプログラムされたキーとペアにされた予めプログラムされたデータを含む。前記ルックアップ結果はまた、前記予めプログラムされたデータが格納されるメモリアドレスとMemIDとを含む。
いくつかの実施形態において、前記ルックアップ結果は出力再構成相互接続ファブリックに転送される。前記出力再構成相互接続ファブリックは、前記T個のタイルのそれぞれを、N個のルックアップパスについてのN個の最終出力選択装置のうちの1つに接続する。いくつかの実施形態において、前記N個の最終出力選択装置のそれぞれは、そのルックアップパスに対して確保された全てのタイルからルックアップ結果を受信する収集ブロックと、前記収集ブロックによって収集された全てのルックアップ結果から1つの最終ルックアップ結果を選択する選択ブロックとを含み、前記選択された最終ルックアップ結果は最小のタイルIDを有するヒット・タイルからのものである。前記選択された最終ルックアップ結果は、ヒットデータと、タイルIDと、MemIDと前記ヒットデータが格納されるメモリアドレスとを含む。
本発明の一実施形態による並行ルックアップシステムを示す図である。 本発明の一実施形態による共有メモリのグループ化を例示する図である。 本発明の一実施形態によるルックアップパスに対する共有タイルの割り当てを例示する図である。 本発明の一実施形態によるキー対ルックアップインデックス変換器を示す図である。 本発明の一実施形態によるインデックス変換器を示す図である。 本発明の一実施形態による中央再構成可能相互接続ファブリックを示す図である。 本発明の一実施形態によるタイル内のメモリのフォーマットである。 本発明の一実施形態による例示のタイルの概略図である。 本発明の一実施形態による選択ブロックにおけるヒット結果の選択方法を示す図である。 本発明の一実施形態による出力再構成可能相互接続ファブリックを示す図である。 本発明の一実施形態による結果コレクタにおけるヒット結果の選択方法を示す図である。 本発明の一実施形態による並行ルックアップシステムを構成およびプログラミングする方法を示す図である。
上記は、以下の本発明の例示的な実施形態のさらに具体的な説明から明らかになるであろう。添付図面において、異なる図全体にわたり、同様の部分は同様の参照符号で示す。図面は必ずしも原寸に比例しておらず、本発明の実施形態の説明に重点が置かれている。
以下の説明では、説明の目的で様々な詳細を述べる。しかし、当業者ならば、これらの特定の詳細事項を用いずとも本発明を実施できることを理解するであろう。よって、本発明は、示される実施形態に限定されることを意図するものではなく、本明細書で説明される原理および特徴に合致する最も広い範囲に従うものである。
システム・オン・チップは、メモリのプールを共有する多数の並行ルックアップをサポートする。各ルックアップに対して確保されるメモリ数は、当該ルックアップに必要なメモリ容量に基づいて再構成可能である。さらに、各ルックアップは、ハッシュベースのルックアップまたはダイレクトアクセスのルックアップとして行われるように構成変更可能である。共有メモリは複数の同質のタイルにグループ化される。各ルックアップには、タイルのセットが割り当てられる。セット内のタイルは、全てのルックアップが衝突せず並行に行われ得るように、他のセットとは共有されない。このシステムはまた、再構成可能接続ネットワークを含む。これらネットワークは、各ルックアップにどのようにタイルが割り当てられるかに基づいてプログラムされる。
図1は、本発明の実施形態による並行ルックアップシステム100を示す。システム100は、複数の共有メモリを使用するルックアップパスであって、N個の同時ルックアップつまり並行なルックアップパスが、衝突せずに実現されるように構成される。システム100は、ルックアップパス毎の各kビット入力キーについて、nビットデータを返す。システム100は、ブロック105〜130を含み、これらブロックのそれぞれの概要を、まず、そのぞれぞれの特徴を詳述する前に述べる。
ブロック115における共有メモリのプールは、T個の同質の共有タイルにグループ化される。各タイルは、M個のメモリを含む。各ルックアップパスには、これらT個のタイルからいくつかのタイルが割り当てられる。各ルックアップパスに対するタイル割り当ては、典型的には、ソフトウェアにより再構成可能である。
ブロック105において、各ルックアップパスの入力キーが複数のルックアップインデックスに変換される。ルックアップデータを読み取るための情報(当該ルックアップパスがアクセスすることになるそれぞれのタイルのタイルID、およびデータが読み取られることになるそれらのタイル内のメモリのアドレスなど)は、ルックアップインデックスの一部となる。
各入力キーの上記タイルIDおよび上記メモリアドレスは、それらの対応するタイルへ、中央再構成相互接続ファブリックであるブロック110を介して送信される。中央再構成相互接続ファブリック110は、複数の構成変更可能中央ネットワークを含む。これら中央ネットワークは、典型的には、各ルックアップパスに対して確保されるタイルの位置に基づいて構成される。
各タイルでは、ブロック120において、予めプログラムされたキーおよびデータが、対応する入力キーから予め変換(例えば、ブロック110における変換)されたアドレスにおけるメモリから読み取られる。当該メモリに位置するこれら予めプログラムされたキーは、各ルックアップパスの入力キーと比較される。これら予めプログラムされたキーの中に当該入力キーとのマッチ(一致)があれば、このタイルはヒットデータ(ヒットしたデータ)とヒットアドレス(ヒットしたアドレス)とを返す。
各タイルのヒット情報は、出力再構成可能相互接続ネットワークであるブロック125を介して、当該タイルを所有するルックアップパスによって収集される。各ルックアップパスが、ブロック130において自己が所有する全てのタイルのヒット情報の中でさらなる選択を一通り行ってから、当該ルックアップパスについて最終ルックアップ結果が返される。
図2は、本発明の実施形態による共有メモリ200のグループ化を例示する図である。この図は、タイル205を使用した、図1の並行ルックアップシステム100などの並行ルックアップシステムにおける、共有メモリの編成を示す。これらの共有メモリは、T個の同質の共有タイル205にグループ化される。各タイル205は、ブロック215におけるM個のウェイを有するD−LEFTルックアップをサポートするM個のメモリを含む。したがって、並行ルックアップシステム100は、合計T×M個のメモリを有する。各タイル205は、並行ルックアップシステム100においてタイルを特定するタイルIDを有する。各タイル205内の各メモリ210は、当該タイル205内の当該メモリ210を特定するために、0からM−1までの範囲のMemIDに対応付けられる。
ルックアップが実行される前に、各ルックアップパスには、共有タイルからの連続したタイルのセットが割り当てられる。各ルックアップパスに割り当てられるタイルの数は、2の累乗であり、当該ルックアップパスによって必要とされるメモリ容量に依存する。いかなる2つのルックアップパスの間においてもタイルのオーバーラップは許されない。例示のシナリオとして、並行ルックアップシステム100が8つのタイルと4つの並行ルックアップパスとを有すると仮定する。これらルックアップパスに対するタイル区分は、{8,0,0,0}、{4,4,0,0}、{4,2,2,0}、{4,2,1,1}もしくは{2,2,2,2}またはこれら区分のうちの1つの任意の順列であり得る。この例示のシナリオについては、並行ルックアップシステム100を例示するためにこの後も続けて参照および構築していく。
図3は、本発明の実施形態によるルックアップパス300のための共有タイルの割り当てを例示する図である。8つのタイルと4つの並行ルックアップパスとを有する並行ルックアップシステム100の上記例示のシナリオを続けて用いると、8つのタイルは以下のように区分される(305):{4,1,2,1}。この区分例に基づくと、ルックアップパス0には4つのタイル(具体的には、タイル0、1、2および3)が割り当てられ、ルックアップパス1には1つのタイル(具体的には、タイル4)が割り当てられ、ルックアップパス2には2つのタイル(具体的には、タイル5および6)が割り当てられ、ルックアップパス3には1つのタイル(具体的には、タイル7)が割り当てられる。
各ルックアップパスに対してタイルのセットつまりグループを割り当てた後、各ルックアップパスの入力キーは、図1のブロック105にて複数のルックアップインデックスに変換される。ルックアップインデックスは、各ルックアップパスに対して割り当てられたタイルにアクセスするために使用される。各キーの各ルックアップインデックスは、log(T)+mビットを有する。当該ルックアップインデックスのlog(T)最上位ビット(MSB)は、タイルIDのために使用され、当該ルックアップインデックスのm最下位ビット(LSB)は、メモリ読取アドレスのために使用される。タイルIDは、対応するルックアップパス対して割り当てられたタイルのうちの1つを指し示し、メモリ読取アドレスは、データが読み取られる当該タイル内の1つのメモリのアドレスである。8つのタイルと4つの並行ルックアップパスとを有する並行ルックアップシステム100の上記例示のシナリオを続けて用いて、各タイル内の各メモリは1Kエントリ幅であると仮定する。各タイルIDが3ビット幅であり、各メモリ読取アドレスが10ビット幅であるので、各ルックアップインデックスは13ビット幅である。
各ルックアップパスは、典型的には、1つのタイル内にあるメモリと同数(すなわちM個)のインデックス変換器を備える。図4は、本発明の実施形態によるキー対ルックアップインデックス変換器400を示す。いくつかの実施形態では、図1のブロック105は、キー対ルックアップインデックス変換器(キーによるルックアップのインデックス変換器)400と同様に構成される。ルックアップパス毎の入力キーは、そのM個のインデックス変換器405の全てに送信される。その結果、M個のルックアップインデックスが、ルックアップパス毎の入力キーに対して得られる。各ルックアップインデックスは、タイルIDの値を使用することによって、対応するルックアップパスに対して割り当てられたタイル内の任意のタイルにアクセスできるが、ルックアップインデックスiは当該タイル内のメモリiにしかアクセスできない。これについては以下でさらに説明する。
各インデックス変換器405は、ハッシュ関数のセットを含む。並行ルックアップシステムがT個のタイルを有する場合、各インデックス変換器405は、log(T)+1個のハッシュ関数を有する。これらハッシュ関数の出力は、mビットからlog(T)+mビットの範囲のビット幅を有する。ハッシュサイズとは、1つのハッシュ関数のビット幅のことである。各ルックアップパスのために選択されたハッシュサイズは、当該ルックアップパスに対して確保されるタイルの数に基づいて再構成可能である。あるルックアップパスにq個のタイルが割り当てされた場合、当該ルックアップパスのための各インデックス変換器用の選択されたハッシュサイズは、m+log(q)である。8つのタイルを有する並行ルックアップシステム100の上記例示のシナリオを続けて用いると、各インデックス変換器は、log(8)+1=4(4つの)ハッシュ関数を有する。
図5は、本発明の実施形態によるインデックス変換器500を示す。いくつかの実施形態において、図4のインデックス変換器405は、インデックス変換器500と同様に構成される。上記例示のシナリオを再度続けて使用して、各タイル内のメモリアドレスは10ビット幅であると仮定する。この例示のシナリオのシステムは8つのタイルを有するので、4つのハッシュ関数のハッシュサイズはそれぞれ、10、11、12、および13である(10からlog(8)+10)。ハッシュサイズが同一でないため、出力がそれぞれ13ビット幅となるように、これら4つのハッシュ関数の出力のプレフィクスにおいてゼロビットが連結される。
再構成可能cfg_hash_selレジスタを使用して、各ルックアップパスに対するハッシュ関数を選択できる。図5において、1つのルックアップパスに1つのタイルが割り当てられている場合には、10ビットハッシュ関数が選択される(log(1)+10=10)。1つのルックアップに2つのタイルが割り当てられている場合には、11ビットハッシュ関数が選択される(log(2)+10=11)。1つのルックアップに4つのタイルが割り当てられている場合には、12ビットハッシュ関数が選択される(log(4)+10=12)。1つのルックアップに8つのタイルが割り当てられている場合には、13ビットハッシュ関数が選択される(log(8)+10=13)。
同様に、cfg_hash_selレジスタを使用して、各ルックアップパスに対する非ハッシュ関数を選択できる。特に、インデックス変換器500は、ハッシュ関数と同じサイズを有する非ハッシュ関数のセットも含む。非ハッシュ関数は、その内部に論理を有さない。その代り、非ハッシュ関数は単に、入力キーから最下位ビット(LSB)を取得するだけである。非ハッシュ関数は、ユーザが、ハッシュを介するよりもむしろ(ダイレクトメモリポインタとして入力キーを使用することで)直接メモリにアクセスする必要がある場合に、使用される。この設計により、図1の並行ルックアップシステム100のようなシステムが、ハッシュベースのルックアップおよびダイレクトアクセスのルックアップの両方をサポートできる。ハッシュベースのルックアップまたはダイレクトアクセスのルックアップの選択は、cfg_hash_selレジスタを構成することにより行われる。例えば、1つのルックアップに4つのタイルが割り当てられている場合には、cfg_hash_selレジスタは、ハッシュベースのルックアップのために12ビットハッシュ関数、またはダイレクトアクセスのルックアップのために12ビット非ハッシュ関数を選択する。
インデックス変換器500はまた、各ルックアップインデックスがそのルックアップパスに割り当てられたタイルのうちの1つを正しく指し示すように、各ルックアップインデックスのタイルIDを調整する再構成可能cfg_tile_offsetレジスタを含む。cfg_tile_offsetレジスタのために設定される値は、典型的には、対応するルックアップに割り当てられたタイルのセット内の1番目のタイルIDである。例えば、図3において、ルックアップパス0に割り当てられたタイルがタイル0、1、2および3であるので、ルックアップパス0のためのcfg_tile_offsetレジスタは0に設定される。ルックアップパス1、2および3のためのcfg_tile_offsetレジスタは、それぞれ、4、5および7に設定される。
図1に戻って、並行ルックアップシステム100は、中央再構成可能相互接続ファブリック110を含む。中央再構成可能相互接続ファブリック110は、1つのタイル内にあるメモリと同数(すなわち、M個)の別々の中央ネットワークを含む。中央ネットワークのそれぞれは、ルックアップパスと同数(すなわち、N個)の入力ポートを有し、タイルと同数(すなわち、T個)の出力ポートを有する。中央ネットワークは、全てのルックアップパスのインデックス変換器iの出力を全てのタイル内における、メモリiに接続する。
図6は、本発明の実施形態による中央再構成可能相互接続ファブリック600を示す。いくつかの実施形態において、中央再構成可能相互接続ファブリック110は、再構成可能相互接続ファブリック600と同様に構成される。上記例示のシナリオを再度続けて使用すると、タイル毎に2つのメモリを有する8つのタイル615を使用する4つの並行ルックアップパスがあり、ルックアップパス毎に2つのインデックス変換器605が存在する。中央再構成可能相互接続ファブリック600は、2つの4×8中央ネットワーク610a、610b(まとめて610)を有する。ネットワーク0は、全てのルックアップパスのインデックス変換器0の出力を全てのタイル615のメモリ0に接続し、ネットワーク1は、全てのルックアップパスのインデックス変換器1の出力を全てのタイル615のメモリ1に接続する。
これら中央ネットワーク610は、各ルックアップパスをその確保されたタイル615に正しく接続する。例えば、図3において、ルックアップ0は、タイル0、1、2および3に割り当てられている。したがって、ネットワーク0は、入力ポート0を出力ポート0、1、2、3に接続するように構成される。同様に、入力ポート1は、出力ポート4に接続される。同様に、入力ポート2は、出力ポート5および6に接続される。同様に、入力ポート3は、出力ポート7に接続される。これらの接続は図6に示されている。全ての中央ネットワーク610は、同じ構成セットアップを有する。したがって、ネットワーク1の構成は、ネットワーク0の構成と全く同じである。
各中央ネットワーク610はクロスバーであってよい。しかし、これらの中央ネットワーク610は、典型的には、ルックアップが実行される前に予め構成されている。このことは、各中央ネットワーク610は実行時には変更されないことを意味する。あるいは、中央ネットワーク610は、クロスバーより安価なバタフライネットワークから構築され得る。Closネットワーク、Benesネットワーク、またはOmegaネットワークなどの実施可能ないくつかの共通再構成可能バタフライネットワークが存在する。
中央ネットワーク610が構成された後、各ルックアップパスは、その入力キーと、当該入力キーのルックアップインデックスとを、その割り当てられたタイル615全てに直接送信する。ルックアップインデックスは、タイルIDおよびメモリアドレスを含む。1つの割り当てられたタイル615が、ルックアップインデックスを受信すると、当該割り当てられたタイル615は、このルックアップインデックスのタイルIDが本当に自己を指し示しているか否かをチェックする。このタイルIDが当該タイルのものである場合、このタイルは、当該ルックアップインデックス内のメモリアドレスを使用して、その対応するメモリから読取りを行うことになる。上記タイルIDがこのタイルのものでない場合、受信されたインデックスは無視される。
タイル615が、自己を指し示すタイルIDを有するルックアップインデックスを受信する場合、このルックアップインデックスは有効インデックスと呼ばれる。各タイル615はM個のメモリを有するので、各タイル615は、同じキーからM個の中央ネットワークを介して最大M個の有効ルックアップインデックスを受信可能である。例えば、図6において、各タイル615は、その2つのローカルメモリに対する2つの有効インデックスを受信可能である。
図7は、本発明の実施形態によるタイル内のメモリ700のフォーマットを示す。メモリ700の深さは、典型的には、2個のエントリ(mビットアドレス)である。メモリ700内の各エントリは、1ウェイ毎にP個のバケットを有するD−LEFTルックアップをサポートする、P個の予めプログラムされた{キー,データ}ペア705を含む。したがって、メモリ700の幅は、P×(k+n)ビットであり、kは各キーのビット幅であり、nは各データのビット幅である。タイルのローカルメモリ内のキーおよびデータの値は、各ルックアップパスのためにどのように共有タイルが区分されて割り当てられるかに依存して、プログラム可能である。これらメモリのためのプログラム原理は、D−LEFTルックアップ技術に基づく。
あるタイルが1つのローカルメモリに対する有効インデックスを受信すると、当該有効インデックス内のメモリアドレスが、当該ローカルメモリを読み取るために使用される。当該ローカルメモリの出力は、当該メモリアドレスによって指し示されるエントリにおけるP個の予めプログラムされた{キー,データ}ペアを含む。このタイルが自己のM個のローカルメモリに対するM個の有効インデックスを受信する極端な場合では、M×P個のペア{キー,データ}が存在する。M×P個のキーが当該タイル内のマッチング論理ブロックに送信されて、これらの予めプログラムされたキーのうちのどれ(1つまたは複数のキー)が当該入力キーとマッチするかが決定される。マッチング結果(1つまたは複数のマッチング結果)が、当該タイルのルックアップ結果として返すように、予めプログラムされたデータを選択するために使用される。
図8は、本発明の実施形態による例示のタイル800の概略図である。いくつかの実施形態において、図1のブロック115内のタイルはタイル800と同様に構成される。上記例示のシナリオを再度続けて使用すると、タイル800は、それぞれ3個の予めプログラムされたペア{キー,データ}を有する2つのメモリ805を含む。各入力キーについて、タイル800は、その2つのメモリ805から、最大6つの予めプログラムされた{キー,データ}の有効なペアを取得し得る。この6つのキー、すなわち予めプログラムされて格納されたキーが、タイル800のマッチングブロック810に送信される。マッチングブロック810からのマッチング結果(1つまたは複数のマッチング結果)が、選択ブロック815に送信されて、タイル800のルックアップ結果が出力される。いくつかの実施形態では、図2のブロック215がマッチングブロック810および選択ブロック815と同様に構成される。
図9は、本発明の実施形態による選択ブロック900におけるヒット結果の選択方法を示す。いくつかの実施形態において、図8の選択ブロック815は選択ブロック900と同様に構成される。方法900は、ステップ905から始まり、ステップ905において、全ての格納されたキーについてのマッチング結果(1つまたは複数のマッチング結果)が、図8のマッチングブロック810から受信される。ステップ910において、予めプログラムされたかまたは格納されたキーマッチのうち、入力キーとマッチするものはあるか否かが判断される。マッチがないとステップ910において判断されると、ステップ915において、ミス(失敗)ビットがセットされ、結果は返されない。少なくとも1つのマッチがあるとステップ910において判断されると、ステップ920において、予めプログラムされたキーマッチの中で入力キーとマッチするものが1つよりも多くあるか否かが判断される。1つしかマッチがないとステップ920において判断されると、ステップ925において、ヒットビット(ヒットしたビット)がセットされ、当該予めプログラムされたキーとペアにされた予めプログラムされたデータがヒットデータ(ヒットしたデータ)として返される。1つよりも多くのマッチがあるとステップ920において判断されると、ステップ930において、ヒットビットがセットされ、最小のMemIDを有するメモリ内の当該予めプログラムされたキーとペアにされた予めプログラムされたデータが選ばれ、ヒットデータとして返される。
当該入力キーについてヒットデータを返すことに加えて、当該タイルは、当該ヒットデータが格納されているメモリアドレスおよびメモリIDを含む、ヒットデータの位置も返す。ヒットデータの位置は、ユーザによるシステムデバッグのために有用であり、また、統計の目的のためにも有用である。ステップ915、925、および930の後、方法900はステップ905に戻る。
図8に戻って、タイル800のルックアップ結果は、図1の出力再構成可能相互接続ファブリック125などの出力再構成可能相互接続ファブリックを介して、各ルックアップパスの結果コレクタに送信される。
図10は、本発明の実施形態による出力再構成可能相互接続ファブリック1000を示す。いくつかの実施形態において、出力再構成可能相互接続ファブリック125は、出力再構成可能相互接続ファブリック1000と同様に構成される。出力再構成可能相互接続ファブリック1000は、出力ネットワーク1010を含む。出力ネットワーク1010は、T個の1入力×N出力再構成可能デマルチプレクサを含む。出力ネットワーク1010は、複数のタイル1005のそれぞれの出力を1つのルックアップパスの1つの適切な結果コレクタ1015に接続する。例えば、図3において、出力ネットワーク1010は、タイル0、1、2および3の出力をルックアップパス0の結果コレクタ1015に接続する。出力ネットワーク1010はまた、タイル4の出力をルックアップパス1の結果コレクタ1015に接続する。出力ネットワーク1010はまた、タイル5および6の出力をルックアップパス2の結果コレクタ1015に接続する。出力ネットワーク1010はまた、タイル7の出力をルックアップパス3の結果コレクタ1015に接続する。これらの接続は図10に示されている。各ルックアップパスの結果コレクタ1015は、自己ののタイル1005のうちから1つの結果を選択して、当該結果コレクタ1015の最終ルックアップ結果を出力する。
図11は、本発明の実施形態による結果コレクタ1100におけるヒット結果の選択方法を示す。いくつかの実施形態において、図10の結果コレクタ1015は、結果コレクタ1100と同様に構成される。方法1100は、ステップ1105から始まり、ステップ1105において、割り当てられたタイルからのルックアップ結果(1つまたは複数のルックアップ結果)が受信される。ステップ1110において、タイルのヒットがあるか否かが判断される。ヒットがないとステップ1110において判断されると、ステップ1115において、ミスビットがセットされ、結果は返されない。少なくとも1つのヒットがあるとステップ1110において判断されると、ステップ1120において、複数のタイルから1つよりも多くのヒットがあるか否かが判断される。1つしかヒットがないとステップ1120において判断されると、ステップ1125において、ヒットビットがセットされ、ヒット結果すなわちヒットデータがルックアップ結果として返される。1つよりも多くのヒットがあるとステップ1120において判断されると、ステップ1130において、ヒットビットがセットされ、タイルのヒットのうち最小のタイルIDを有するタイルからのヒット結果が選ばれ、これがルックアップ結果として返される。
ヒット結果を返すことに加えて、結果コレクタはまた、タイルIDと、メモリIDと、ヒットデータが読み取られたメモリアドレスとを返す。タイルID、メモリID、およびメモリアドレスは、ユーザによるシステムデバッグのために有用であり、また、統計の目的のためにも有用である。ステップ1115、1125、および1130の後、方法1100はステップ1105に戻る。
図12は、本発明の実施形態による並行ルックアップシステム1200を構成およびプログラミングする方法を示す。方法1200は、図1の並行ルックアップシステム100などの並行ルックアップシステムをユーザがセットアップするためのガイドラインを提供する。並行ルックアップシステム100は、T個の共有タイルを有するN個の並行ルックアップパスを有する。各タイルは、M個のメモリを有する。各メモリは、mビット幅のメモリアドレスを有する。各メモリエントリは、ソフトウェアによりプログラム可能なP個のペア{キー,データ}を含む。システム100内の各ルックアップは、M個のウェイとウェイ毎のP個のバケットについてのD−LEFTルックアップである。
方法1200は、ステップ1205から始まり、ステップ1205において、ユーザが、各ルックアップパスにタイルを割り当てる。各ルックアップパスに割り当てられるタイルの数は2の累乗でなければならない。タイル区分もまた、ルックアップパス同士の間でタイルオーバーラップが生じないようにしなければならない。
ステップ1210において、各ルックアップパスのハッシュサイズが計算される。各ルックアップパスのハッシュサイズは、当該ルックアップパスに割り当てられたタイルの数に基づく。あるルックアップパスにq個のタイルが割り当てられると、そのハッシュサイズは、log(q)+mに等しい。
各ルックアップのハッシュサイズが分かると、ステップ1215において、インデックス変換器内のレジスタcfg_hash_selおよびcfg_tile_offsetがそのハッシュサイズに従って構成される。cfg_hash_selレジスタは、当該ルックアップパスに対する関数を選択する。cfg_tile_offsetレジスタは、当該ルックアップパスに対するルックアップインデックスのタイルIDを調整する。
その一方、ステップ1220において、中央相互接続ネットワークおよび出力相互接続ネットワークが、ルックアップパスをそれらの確保されたタイルに接続する。インデックス変換器およびネットワークについての全ての構成ビットは、本明細書に記載する原理に従って、スクリプトによって自動的に生成され得る。
ステップ1225において、各ルックアップパスに割り当てられたメモリがプログラムされる。プログラミング技術は、ルックアップ毎にM個のウェイとウェイ毎のP個のバケットについてのD−LEFTルックアップ技術に基づく。
全ての割り当てられたメモリがプログラムされると、ステップ1230において、並行ルックアップシステム100は、並行に、入力キーを受信しN個のルックアップを実行する用意ができている。ステップ1230の後、方法1200は終了する。
本発明の実施形態は、相互接続ネットワークの適切な構成による共有メモリのプールを使用する多数の並行ルックアップに関する。各ルックアップに対して確保された共有メモリの数は、当該ルックアップによって必要とされるメモリ容量に基づいて再構成可能である。共有メモリは同質のタイルにグループ化される。各ルックアップには、当該ルックアップによって必要とされるメモリ容量に基づいてタイルのセットが割り当てられる。各ルックアップに割り当てられたタイルは、全てのルックアップが衝突せず並行に行われ得るように、他のルックアップとオーバーラップしない。各ルックアップはハッシュベースのルックアップまたはダイレクトアクセスのルックアップのいずれかになるよう再構成可能である。各相互接続ネットワークは、どのようにタイルが各ルックアップに割り当てられるかに基づいてプログラム可能である。
当業者ならば、他の使用法や利点もまた存在することを理解するであろう。本発明を様々な特定の詳細を参照に説明したが、当業者ならば、本発明の精神から逸脱することなく本発明が他の特定の形式で実施され得ることを理解するであろう。したがって、当業者ならば、本発明が上記例示の詳細によって限定されず、添付の請求項によって定義されることを理解するであろう。

Claims (29)

  1. 共有メモリのプールを使用するN個の並行ルックアップをサポートするシステム・オン・チップであって、
    T個のタイルにグループ化されるT×M個の共有メモリと、
    各ルックアップパス用のM個のインデックス変換器と、
    N個の入力ポートを前記T個のタイルに接続する中央再構成可能相互接続ファブリックと、
    前記T個のタイルをN個の出力ポートに接続する出力再構成可能相互接続ファブリックと、
    N個の出力結果コレクタであって、前記ルックアップパス毎に1つずつ存在する出力結果コレクタとを備えた、システム・オン・チップ。
  2. 請求項1に記載のシステム・オン・チップにおいて、前記T個のタイルは、前記ルックアップパスのそれぞれによって必要とされるメモリ容量に基づいて区分され、ルックアップパスに割り当てられる、システム・オン・チップ。
  3. 請求項1に記載のシステム・オン・チップにおいて、各ルックアップパスに割り当てられるタイルの数は2の累乗であり、1つのタイルは複数の区分に重ならない、システム・オン・チップ。
  4. 請求項1に記載のシステム・オン・チップにおいて、前記T個のタイルのそれぞれが、
    ルックアップ毎のM個のウェイについてのD−LEFTルックアップをサポートするM個のメモリ、
    前記M個のメモリ内の予めプログラムされたキーを1つの入力キーと比較するマッチングブロック、および、
    そのタイルについてのヒット結果を選択する選択ブロックを含む、システム・オン・チップ。
  5. 請求項1に記載のシステム・オン・チップにおいて、前記共有メモリのそれぞれは、2m個のエントリを有し、前記エントリのそれぞれは、ウェイ毎のP個のバケットについてのD−LEFTルックアップをサポートするためにP個のプログラム可能な{キー,データ}ペアを含む、システム・オン・チップ。
  6. 請求項1に記載のシステム・オン・チップにおいて、各ルックアップパスは、ハッシュベースのルックアップまたはダイレクトアクセスのルックアップとなるように構成変更可能である、システム・オン・チップ。
  7. 請求項1に記載のシステム・オン・チップにおいて、各ルックアップパスのM個のインデックス変換器のうちのインデックス変換器iは、そのルックアップパスに割り当てられた前記T個のタイルのうちの1つにおけるメモリiにアクセスするために使用される、システム・オン・チップ。
  8. 請求項1に記載のシステム・オン・チップにおいて、各ルックアップパスのM個のインデックス変換器のそれぞれは、当該ルックアップパスに割り当てられたタイルの数に基づいて構成変更可能である、システム・オン・チップ。
  9. 請求項1に記載のシステム・オン・チップにおいて、各ルックアップパスのM個のインデックス変換器のそれぞれは、さらに、
    log2(T)+1個のハッシュ関数およびlog2(T)+1個の非ハッシュ関数であって、これら関数の出力がmビットからlog2(T)+mビットの範囲のビット幅を有する、ハッシュ関数および非ハッシュ関数、
    前記関数のうちの1つを選択するための第1の構成変更可能レジスタ、および、
    ルックアップインデックスがそのルックアップパスの割り当てられたタイルのうちの正しいタイルを指し示すようにタイルオフセットを選択するための第2の構成変更可能レジスタであって、前記割り当てられたタイルは前記T個のタイルから選択される、第2の構成変更可能レジスタを含む、システム・オン・チップ。
  10. 請求項1に記載のシステム・オン・チップにおいて、前記M個のインデックス変換器それぞれの出力インデックスがlog2(T)+mビットを有し、前記出力インデックス内のlog2(T)個の最上位のビットは前記T個のタイルのうちの1つを指し示すのに使用され、前記出力インデックス内のm個の最下位のビットはメモリ読取アドレスとして使用される、システム・オン・チップ。
  11. 請求項1に記載のシステム・オン・チップにおいて、前記中央再構成可能相互接続ファブリックが、M個の構成変更可能N×Tネットワークを含む、システム・オン・チップ。
  12. 請求項1に記載のシステム・オン・チップにおいて、前記N×Tネットワークのそれぞれが、クロスバーおよび構成変更可能バタフライのうちの一方である、システム・オン・チップ。
  13. 請求項1に記載のシステム・オン・チップにおいて、前記出力再構成可能相互接続ファブリックがT個の構成変更可能な1×Nデマルチプレクサを含む、システム・オン・チップ。
  14. 請求項1に記載のシステム・オン・チップにおいて、N個の出力結果コレクタのうちの1つであって、1つのルックアップパスに対応付けられた出力結果コレクタが、そのルックアップパスの割り当てられたタイルから結果を収集し、かつ、当該割り当てられたタイルによって出力された結果から1つの最終結果を選択する、システム・オン・チップ。
  15. 請求項1に記載のシステム・オン・チップにおいて、前記T個のタイルのそれぞれについてのヒット結果が、そのタイルのメモリ内の予めプログラムされたキーとそのタイルの入力キーとの間のキーマッチング結果に基づく、システム・オン・チップ。
  16. 共有メモリのプールを使用してN個の並行ルックアップを行う方法であって、
    T個のタイルをN個のグループに区分することであって、前記T個のタイルのそれぞれが、M個のメモリを含み、N個のルックアップパスのそれぞれが、入力ポートと出力ポートとに接続され、N個のルックアップパスのそれぞれが、前記N個のグループのうちの1つに割り当てられる、T個のタイルをN個のグループに区分することと、
    前記N個の並行ルックアップを実行することとを備え、
    前記N個の並行ルックアップを実行することは、
    N個の入力キーのそれぞれについて、
    前記入力キーを複数のルックアップインデックスに変換することであって、前記複数のルックアップインデックスのそれぞれが、対応するルックアップパスによってアクセスされることになる前記N個のグループのうちの1つにおける特定のタイルのタイルIDと、データが読み取られることになる前記特定のタイル内の1つのメモリのメモリアドレスとを含む、変換すること、
    前記特定のタイルからのマッチ情報の集合を使用することによって、どのヒット情報を返すかを判断すること、および、
    前記複数のルックアップインデックスによって示された複数のタイルからのヒット情報の集合を使用して、前記入力キーに対応付けられたルックアップパスに対してどの最終ルックアップ結果を返すかを判断することを含む、並行ルックアップ実行方法。
  17. 請求項16に記載の方法において、前記特定のタイルからどのヒット情報を返すかの前記判断において、当該特定のタイル内の全てのメモリのMemIDのうち最小のMemIDを有するメモリに、最高の優先順位が与えられる、並行ルックアップ実行方法。
  18. 請求項17に記載の方法において、前記ヒット情報が、ヒットデータと、マッチしたキーに対応する前記ヒットデータの位置とを含み、前記ヒットデータの前記位置が、前記MemIDのうちの1つと、前記MemIDのうちの1つに対応付けられたメモリのアドレスと、前記メモリ内の前記ヒットデータの位置とを含む、並行ルックアップ実行方法。
  19. 請求項16に記載の方法において、ルックアップパスに対してどの最終ルックアップ結果を返すかの前記判断において、前記ルックアップパスに割り当てられた全てのタイルのうち最小のタイルIDを有するタイルに、最高の優先順位が与えられる、並行ルックアップ実行方法。
  20. 請求項19に記載の方法において、前記最終ルックアップ結果が、ヒットデータと、前記ヒットデータを含むタイルのタイルIDと、前記MemIDのうちの1つのMemIDと、前記ヒットデータが読み取られたメモリアドレスとを含む、並行ルックアップ実行方法。
  21. 請求項16に記載の方法において、さらに、前記N個の並行ルックアップを実行する前に、
    各ルックアップパスのハッシュサイズを計算することと、
    各ルックアップパスに対して、ハッシュ選択およびタイルオフセットについての構成ビットを生成することと、
    ルックアップパスと前記タイルとを接続するネットワークを構成することと、
    各ルックアップパスに対して、前記メモリをプログラミングすることとを備えた、並行ルックアップ実行方法。
  22. 請求項21に記載の方法において、各ルックアップパスに対して前記メモリをプログラミングするための技術は、M個のウェイとP個のバケットについてのD−LEFTルックアップ技術に基づく、並行ルックアップ実行方法。
  23. N個の並行なキー対ルックアップインデックス変換をサポートする変換装置であって、
    N個のキーであって、各キーが、T個のタイルのうちの1つのタイルグループに対応付けられており、前記T個のタイルのそれぞれがM個のメモリを含む、N個のキーと、
    前記N個のキーをN×M個のルックアップインデックスに並列変換した後、返される前記N×M個のルックアップインデックスと、
    N×M個の変換器とを備え、
    前記N×M個の変換器のそれぞれが、
    前記N個のキーからの1つのキーを前記N×M個のルックアップインデックスからの1つのルックアップインデックスに変換し、かつ、
    log2(T)+1個のハッシュ関数およびlog2(T)+1個の非ハッシュ関数であって、これら関数の出力がmビットからlog2(T)+mビットの範囲のビット幅を有する、ハッシュ関数および非ハッシュ関数、
    前記関数のうちの1つを選択するための第1の構成変更可能レジスタ、および、
    前記キーに対応付けられたタイルの前記グループからの正しいタイルを前記ルックアップインデックスが指し示すように、タイルオフセットを選択するための第2の構成変更可能レジスタを含む、変換装置。
  24. 請求項23に記載の変換装置において、前記N×M個のルックアップインデックスが、中央再構成相互接続ファブリックに転送され、前記中央再構成相互接続ファブリックが、前記N×M個のルックアップインデックスのそれぞれをT個のタイルのうちの1つに接続して、前記キーを当該タイルに格納された予めプログラムされたキーと比較する、変換装置。
  25. タイル装置であって、
    M個のメモリであって、各メモリが2m個のエントリを含み、前記エントリのそれぞれがP個のプログラム可能なペア{キー,データ}を含む、M個のメモリと、
    入力キーを受信しルックアップ結果を出力するマッチング選択論理とを備え、
    前記マッチング選択論理が、
    前記M個のメモリ内の予めプログラムされたキーのうちのいずれかに前記入力キーがマッチするか否かを判断するマッチングブロック、および、
    前記M個のメモリから、前記入力キーとマッチングする前記予めプログラムされたキーを含む1つのメモリを選択する選択ブロックであって、前記選択されたメモリが、前記M個のメモリのマッチングしたメモリのうちで最小のMemIDを有し、前記ルックアップ結果が前記予めプログラムされたキーとペアにされた予めプログラムされたデータを含む、タイル装置。
  26. 請求項25に記載のタイル装置において、前記ルックアップ結果が、さらに、前記予めプログラムされたデータが格納されるメモリアドレスとMemIDとを含む、タイル装置。
  27. 請求項25に記載のタイル装置において、前記ルックアップ結果が、出力再構成相互接続ファブリックに転送され、前記出力再構成相互接続ファブリックが、前記T個のタイルのそれぞれを、N個のルックアップパスについてのN個の最終出力選択装置のうちの1つに接続する、タイル装置。
  28. 請求項27に記載のタイル装置において、前記N個の最終出力選択装置のそれぞれが、
    そのルックアップパスに対して確保された全てのタイルからルックアップ結果を受信する収集ブロック、および、
    前記収集ブロックによって収集された全てのルックアップ結果から1つの最終ルックアップ結果を選択する選択ブロックであって、前記選択された最終ルックアップ結果が最小のタイルIDを有するヒット・タイルからのものである、選択ブロックを含む、タイル装置。
  29. 請求項27に記載のタイル装置において、前記選択された最終ルックアップ結果が、ヒットデータと、タイルIDと、MemIDと、前記ヒットデータが格納されるメモリアドレスとを含む、タイル装置。
JP2014263373A 2013-12-27 2014-12-25 多数の共有メモリを用いる再構成可能な並行ルックアップの方法およびシステム Active JP6594624B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US14/142,511 US9620213B2 (en) 2013-12-27 2013-12-27 Method and system for reconfigurable parallel lookups using multiple shared memories
US14/142,511 2013-12-27

Publications (2)

Publication Number Publication Date
JP2015172925A JP2015172925A (ja) 2015-10-01
JP6594624B2 true JP6594624B2 (ja) 2019-10-23

Family

ID=53482550

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2014263373A Active JP6594624B2 (ja) 2013-12-27 2014-12-25 多数の共有メモリを用いる再構成可能な並行ルックアップの方法およびシステム

Country Status (6)

Country Link
US (6) US9620213B2 (ja)
JP (1) JP6594624B2 (ja)
KR (1) KR102391602B1 (ja)
CN (1) CN104951494B (ja)
HK (1) HK1210843A1 (ja)
TW (1) TWI659303B (ja)

Families Citing this family (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9620213B2 (en) 2013-12-27 2017-04-11 Cavium, Inc. Method and system for reconfigurable parallel lookups using multiple shared memories
US9825884B2 (en) 2013-12-30 2017-11-21 Cavium, Inc. Protocol independent programmable switch (PIPS) software defined data center networks
US9379963B2 (en) 2013-12-30 2016-06-28 Cavium, Inc. Apparatus and method of generating lookups and making decisions for packet modifying and forwarding in a software-defined network engine
US9413357B2 (en) 2014-06-11 2016-08-09 Cavium, Inc. Hierarchical statistically multiplexed counters and a method thereof
US10616380B2 (en) 2014-06-19 2020-04-07 Cavium, Llc Method of handling large protocol layers for configurable extraction of layer information and an apparatus thereof
US9635146B2 (en) 2014-06-19 2017-04-25 Cavium, Inc. Method of using bit vectors to allow expansion and collapse of header layers within packets for enabling flexible modifications and an apparatus thereof
US9813327B2 (en) 2014-09-23 2017-11-07 Cavium, Inc. Hierarchical hardware linked list approach for multicast replication engine in a network ASIC
US10616144B2 (en) 2015-03-30 2020-04-07 Cavium, Llc Packet processing system, method and device having reduced static power consumption
US10496543B2 (en) * 2016-03-31 2019-12-03 Samsung Electronics Co., Ltd. Virtual bucket multiple hash tables for efficient memory in-line deduplication application
US10305799B2 (en) * 2016-08-17 2019-05-28 Cisco Technology, Inc. Re-configurable lookup pipeline architecture for packet forwarding
GB2569844B (en) * 2017-10-20 2021-01-06 Graphcore Ltd Sending data off-chip
CN108306835B (zh) * 2018-01-23 2021-05-04 中国航空工业集团公司洛阳电光设备研究所 一种以太网交换机的输入缓存及数据转发方法
CN109039911B (zh) * 2018-07-27 2021-02-26 烽火通信科技股份有限公司 一种基于hash查找方式共享ram的方法及系统
CN113519144B (zh) * 2019-01-10 2023-06-27 马维尔以色列(M.I.S.L.)有限公司 用于网络设备的精确匹配和三元内容可寻址存储器(tcam)混合查找
US11922032B1 (en) 2021-03-31 2024-03-05 DreamBig Semiconductor Inc. Content relocation and hash updates in algorithmic TCAM

Family Cites Families (50)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4929939A (en) 1988-10-31 1990-05-29 International Business Machines Corporation High-speed switching system with flexible protocol capability
US5319347A (en) 1992-04-30 1994-06-07 Sgs-Thomson Microelectronics, Inc. Parallelized magnitude comparator for comparing a binary number to a fixed value
JP3703518B2 (ja) * 1995-03-30 2005-10-05 川崎マイクロエレクトロニクス株式会社 連想メモリシステム
US6667984B1 (en) 1998-05-15 2003-12-23 Polytechnic University Methods and apparatus for arbitrating output port contention in a switch having virtual output queuing
JP2001024641A (ja) 1999-07-06 2001-01-26 Nec Corp クロスバー型スイッチのアービタにおける接続許可システム及び方法
US20030093613A1 (en) * 2000-01-14 2003-05-15 David Sherman Compressed ternary mask system and method
ATE319249T1 (de) 2000-01-27 2006-03-15 Ibm Verfahren und vorrichtung für klassifizierung von datenpaketen
US6831917B1 (en) 2000-05-10 2004-12-14 Cisco Technology, Inc. Network address translation for multicast virtual sourcing
US7075926B2 (en) 2000-05-24 2006-07-11 Alcatel Internetworking, Inc. (Pe) Programmable packet processor with flow resolution logic
JP2002198430A (ja) 2000-12-26 2002-07-12 Nec Microsystems Ltd 駆動力可変ブロックおよびこれを用いたlsi設計方法
JP4489308B2 (ja) 2001-01-05 2010-06-23 富士通株式会社 パケットスイッチ
AU2003265288B2 (en) * 2002-08-10 2008-08-28 Cisco Technology, Inc. Associative memory with enhanced capabilities
US7461167B1 (en) 2002-11-22 2008-12-02 Silicon Image, Inc. Method for multicast service in a crossbar switch
US7685436B2 (en) 2003-10-02 2010-03-23 Itt Manufacturing Enterprises, Inc. System and method for a secure I/O interface
EP1553738A1 (en) 2004-01-12 2005-07-13 Thomson Licensing S.A. Method and apparatus for generating data packets
US7085907B2 (en) 2004-02-17 2006-08-01 International Business Machines Corporation Dynamic reconfiguration of memory in a multi-cluster storage control unit
KR100603567B1 (ko) 2004-09-02 2006-07-24 삼성전자주식회사 스위치에서의 대역폭 예약을 통한 QoS 보장 방법 및 그시스템
US20060059269A1 (en) 2004-09-13 2006-03-16 Chien Chen Transparent recovery of switch device
US20060140126A1 (en) 2004-12-27 2006-06-29 Intel Corporation Arbitrating virtual channel transmit queues in a switched fabric network
JP4779955B2 (ja) 2006-01-06 2011-09-28 富士通株式会社 パケット処理装置及びパケット処理方法
US8112622B2 (en) 2006-12-08 2012-02-07 Broadcom Corporation Chaining port scheme for network security
TW200832408A (en) * 2007-01-19 2008-08-01 Univ Nat Chiao Tung Hierarchical search line with internal storage irrelevant entry control
US8259715B2 (en) 2007-07-25 2012-09-04 Hewlett-Packard Development Company, L.P. System and method for traffic load balancing to multiple processors
US8054744B1 (en) 2007-10-25 2011-11-08 Marvell International Ltd. Methods and apparatus for flow classification and flow measurement
WO2009113918A1 (en) 2008-03-12 2009-09-17 Telefonaktiebolaget Lm Ericsson (Publ) Improved cell reselection in an mbsfn system
EP2280513B1 (en) 2008-04-30 2015-07-01 NEC Corporation Router, information processing device having said router, and packet routing method
JP4784786B2 (ja) 2009-03-27 2011-10-05 日本電気株式会社 クロック分配回路及びクロックスキュー調整方法
US8938268B2 (en) * 2009-11-24 2015-01-20 Qualcomm Incorporated Method and apparatus for facilitating a layered cell search for Long Term Evolution systems
WO2011078108A1 (ja) * 2009-12-21 2011-06-30 日本電気株式会社 マルチプロセッサ環境におけるパターンマッチング方法、及び装置
US9077669B2 (en) * 2010-06-14 2015-07-07 Dynamic Invention Llc Efficient lookup methods for ternary content addressable memory and associated devices and systems
US8467213B1 (en) * 2011-03-22 2013-06-18 Netlogic Microsystems, Inc. Power limiting in a content search system
CN102724101B (zh) 2011-03-29 2015-01-21 华为技术有限公司 报文转发方法及系统与中继代理设备
EP2715601A1 (en) 2011-06-01 2014-04-09 Security First Corp. Systems and methods for secure distributed storage
WO2013020002A1 (en) * 2011-08-02 2013-02-07 Cavium, Inc. Incremental update of rules for packet classification
US9159420B1 (en) * 2011-08-16 2015-10-13 Marvell Israel (M.I.S.L) Ltd. Method and apparatus for content addressable memory parallel lookup
WO2013054497A1 (ja) 2011-10-14 2013-04-18 パナソニック株式会社 中継器、中継器の制御方法、およびコンピュータプログラム
US8711860B2 (en) 2011-12-22 2014-04-29 Telefonaktiebolaget L M Ericsson (Publ) Controller for flexible and extensible flow processing in software-defined networks
WO2013119241A1 (en) 2012-02-09 2013-08-15 Intel Corporation Modular decoupled crossbar for on-chip router
US9225635B2 (en) 2012-04-10 2015-12-29 International Business Machines Corporation Switch routing table utilizing software defined network (SDN) controller programmed route segregation and prioritization
US20140153443A1 (en) 2012-11-30 2014-06-05 International Business Machines Corporation Per-Address Spanning Tree Networks
CN104022960B (zh) 2013-02-28 2017-05-31 新华三技术有限公司 基于OpenFlow协议实现PVLAN的方法和装置
US20140369363A1 (en) 2013-06-18 2014-12-18 Xpliant, Inc. Apparatus and Method for Uniquely Enumerating Paths in a Parse Tree
CN103347013B (zh) 2013-06-21 2016-02-10 北京邮电大学 一种增强可编程能力的OpenFlow网络系统和方法
US9590914B2 (en) 2013-11-05 2017-03-07 Cisco Technology, Inc. Randomized per-packet port channel load balancing
US9973599B2 (en) 2013-12-04 2018-05-15 Mediatek Inc. Parser for parsing header in packet and related packet processing apparatus
US9363178B2 (en) 2013-12-18 2016-06-07 Telefonaktiebolaget L M Ericsson (Publ) Method, apparatus, and system for supporting flexible lookup keys in software-defined networks
US9620213B2 (en) 2013-12-27 2017-04-11 Cavium, Inc. Method and system for reconfigurable parallel lookups using multiple shared memories
US9379963B2 (en) 2013-12-30 2016-06-28 Cavium, Inc. Apparatus and method of generating lookups and making decisions for packet modifying and forwarding in a software-defined network engine
US9825884B2 (en) 2013-12-30 2017-11-21 Cavium, Inc. Protocol independent programmable switch (PIPS) software defined data center networks
CN104010049B (zh) 2014-04-30 2017-10-03 易云捷讯科技(北京)股份有限公司 基于sdn的以太网ip报文封装方法及网络隔离和dhcp实现方法

Also Published As

Publication number Publication date
CN104951494A (zh) 2015-09-30
US20220404995A1 (en) 2022-12-22
JP2015172925A (ja) 2015-10-01
HK1210843A1 (en) 2016-05-06
US20150187419A1 (en) 2015-07-02
US9620213B2 (en) 2017-04-11
US11435925B2 (en) 2022-09-06
US9952799B2 (en) 2018-04-24
US20210034269A1 (en) 2021-02-04
TW201602782A (zh) 2016-01-16
KR20150077372A (ko) 2015-07-07
US20170242619A1 (en) 2017-08-24
US9952800B2 (en) 2018-04-24
US20170242618A1 (en) 2017-08-24
KR102391602B1 (ko) 2022-04-27
TWI659303B (zh) 2019-05-11
CN104951494B (zh) 2019-08-09
US20180203639A1 (en) 2018-07-19
US10782907B2 (en) 2020-09-22

Similar Documents

Publication Publication Date Title
JP6594624B2 (ja) 多数の共有メモリを用いる再構成可能な並行ルックアップの方法およびシステム
US7346750B2 (en) Memory interleave system
JP4348093B2 (ja) マップテーブルを用いてメモリにインタリーブ方式でアクセスする方法
US10430353B2 (en) Memory device performing near-data processing using a plurality of data processing engines that independently perform data processing operations, and system including the same
WO2016159945A1 (en) Distributed routing table system with improved support for multiple network topologies
CN101248434B (zh) 辅助网络处理器的散列
US20130013888A1 (en) Method and Appartus For Index-Based Virtual Addressing
JP4445708B2 (ja) マップテーブルを使用して入出力モジュールにアクセスする方法
CN105593832B (zh) 用于支持交叉存取的存储器区域的使用的方法和装置
TWI629887B (zh) 具有由多個封包處理引擎共用的本地查閱資料表的可重新配置的互連元件
JP3808373B2 (ja) 分散共有メモリ装置及び分散処理方法
US10419432B2 (en) Method and apparatus for use with different memory maps
CN118118199A (zh) Ip地址合并方法、装置、设备及存储介质
US8213428B2 (en) Methods and apparatus for indexing memory of a network processor

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20171225

A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A711

Effective date: 20171225

Free format text: JAPANESE INTERMEDIATE CODE: A712

Effective date: 20171225

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20181211

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20181225

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20190325

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20190523

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20190826

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20190925

R150 Certificate of patent or registration of utility model

Ref document number: 6594624

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R360 Written notification for declining of transfer of rights

Free format text: JAPANESE INTERMEDIATE CODE: R360

R360 Written notification for declining of transfer of rights

Free format text: JAPANESE INTERMEDIATE CODE: R360

R371 Transfer withdrawn

Free format text: JAPANESE INTERMEDIATE CODE: R371

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

S531 Written request for registration of change of domicile

Free format text: JAPANESE INTERMEDIATE CODE: R313531

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250