JP2019117677A - 検索メモリ - Google Patents
検索メモリ Download PDFInfo
- Publication number
- JP2019117677A JP2019117677A JP2017251714A JP2017251714A JP2019117677A JP 2019117677 A JP2019117677 A JP 2019117677A JP 2017251714 A JP2017251714 A JP 2017251714A JP 2017251714 A JP2017251714 A JP 2017251714A JP 2019117677 A JP2019117677 A JP 2019117677A
- Authority
- JP
- Japan
- Prior art keywords
- search
- data
- input
- blocks
- block
- 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.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1027—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C15/00—Digital 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/04—Digital 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1008—Correctness of operation, e.g. memory ordering
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C15/00—Digital 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
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C15/00—Digital 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/04—Digital 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
- G11C15/046—Digital 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 using non-volatile storage elements
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Static Random-Access Memory (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Memory System (AREA)
Abstract
【課題】チップ面積の増加を抑制するとともに、消費電流の増加を抑制する検索メモリを提供する。【解決手段】各々が並列に入力されるN個の検索データの入力を受け付ける入力制御部101と、N個の検索ユニット102−0〜102−3と、N個の検索データの中から2個の検索データを選択するN個の第1のセレクタ203−0〜203−3とを備える。各検索ユニットは、複数の検索ブロック200−0〜200−15と、複数の検索ブロックにそれぞれ対応して設けられ、対応する検索ユニットに対して設けられた第1のセレクタにより選択された2個の検索データのうちのいずれか一方の検索データを選択するためのM個の第2のセレクタSL0〜SL15とを含む。N個の検索ユニットのうちの検索ユニットについて、N個の検索データにそれぞれ対応するN種類のエントリーデータのうちの2種類のエントリーデータが複数の検索ブロックにそれぞれ格納される。【選択図】図5
Description
この開示は、半導体装置に関し、たとえば、検索メモリに関する。
検索メモリまたはCAM(内容参照メモリ:Content Addressable Memory)と呼ばれる記憶装置は、記憶しているデータワードの中から検索ワードに一致しているものを検索し、一致しているデータワードが見つかった場合は、そのアドレスを出力するものである。
CAMにはBCAM(Binary CAM)とTCAM(Ternary CAM)とがある。BCAMの各メモリセルは“0”か“1”かのいずれかの情報を記憶する。一方、TCAMの場合には、各メモリセルは、“0”および“1”の他に“ドントケア(Don't Care)”(本例においては、“*”の記号を用いる)の情報を記憶可能である。“*”は“0”および“1”のどちらでも良いことを示す。
TCAM装置は、インターネットなどのネットワーク用のルータにおいてアドレス検索およびアクセス制御のために幅広く利用されている。大容量化に対応するために、TCAM装置は、通常、複数のアレイを有し、各アレイに対して同時にサーチ動作が実行される構成となっている。
TCAM装置は、入力サーチデータ(入力パケット)とTCAMセルデータとを一斉に比較することができるので、全ての検索用途においてRAM(Random Access Memory)よりも高速である。
具体的には、TCAM装置は、メモリセルに格納した情報とユーザーが検索したいデータとを比較して、双方のデータが一致、不一致を示すためのマッチ線(ML)を有している。
そして、一致したマッチ線に対応するアドレス情報(Hit Index)を出力する構成が設けられている。
近年CAMの大容量化のためにCAMアレイ数が増加している。
また、複数の検索キーを用いて並列に検索処理を実行する方式が提案されている(特許文献1および2)。
また、複数の検索キーを用いて並列に検索処理を実行する方式が提案されている(特許文献1および2)。
一方で、複数の検索キーでの並列的に検索処理を実行させるためにはそれぞれの検索キーをCAMアレイに伝送する必要が生じる。
これによりデータバス幅が増加することによりチップ面積が増加するとともに、消費電流が増加する可能性がある。
本開示は、上記の課題を解決するためになされたものであって、チップ面積の増加を抑制するとともに、消費電流の増加を抑制することが可能な検索メモリを提供する。
その他の課題と新規な特徴は、本明細書の記述および添付図面から明らかになるであろう。
ある局面に従う、入力された検索データがメモリセルアレイに格納されたエントリデータに一致するか否かを検索し、一致するエントリデータに対応するアドレス情報を出力する検索メモリである。検索メモリは、各々が並列に入力されるN個(N:2以上)の検索データの入力を受け付ける入力制御部と、N個の検索ユニットと、N個の検索ユニットにそれぞれ対応して設けられ、N個の検索データの中から2個の検索データを選択するN個の第1のセレクタとを備える。各検索ユニットは、複数の検索ブロックと、複数の検索ブロックにそれぞれ対応して設けられ、対応する検索ユニットに対して設けられた第1のセレクタにより選択された2個の検索データのうちのいずれか一方の検索データを選択するためのM個の第2のセレクタとを含む。N個の検索ユニットのうちの少なくとも1つの検索ユニットについて、N個の検索データにそれぞれ対応するN種類のエントリーデータのうちの2種類のエントリーデータが複数の検索ブロックにそれぞれ格納されるように割り当てられる。
一実施例によれば、本開示の検索メモリは、チップ面積の増加を抑制するとともに、消費電流の増加を抑制することが可能である。
実施形態について図面を参照しながら詳細に説明する。なお、図中同一または相当部分には同一符号を付し、その説明は繰り返さない。
(実施形態1)
<通信機器1の全体構成>
図1は、実施形態1に基づく通信機器1の構成を説明する図である。
<通信機器1の全体構成>
図1は、実施形態1に基づく通信機器1の構成を説明する図である。
図1に示されるように、通信機器1は、スイッチあるいはルータ等の通信装置である。
通信機器1は、CPU(Central Processing Unit)2と、転送制御回路4と、汎用メモリ6と、検索メモリ8とを含む。
通信機器1は、CPU(Central Processing Unit)2と、転送制御回路4と、汎用メモリ6と、検索メモリ8とを含む。
CPU2は、機器全体を制御する。
CPU2は、汎用メモリ6に格納されたプログラムと協働して種々の機能を実現する。たとえば、汎用メモリ6は、DRAM(Dynamic Random Access Memory)で構成することが可能であり、CPU2と協働することによりオペレーティングシステム(OS)を構築する。CPU2は、隣接する通信機器等と情報交換し、転送処理に必要な情報を維持管理する。
CPU2は、汎用メモリ6に格納されたプログラムと協働して種々の機能を実現する。たとえば、汎用メモリ6は、DRAM(Dynamic Random Access Memory)で構成することが可能であり、CPU2と協働することによりオペレーティングシステム(OS)を構築する。CPU2は、隣接する通信機器等と情報交換し、転送処理に必要な情報を維持管理する。
転送制御回路4は、通信パケットの転送処理を実行する。転送制御回路4は、転送処理に特化したASIC(Application Specific Integrated Circuit)回路あるいはNPU(Network Processing Unit)といった専用ハードウェアが設けられている。転送制御回路4は、検索メモリ8にアクセスして、転送処理に必要な情報を取得する。
検索メモリ8は、本例においては、TCAM装置を用いる場合について説明する。
[TCAMセルの構成]
図2は、TCAMセルの構成の一例を示す回路図である。
[TCAMセルの構成]
図2は、TCAMセルの構成の一例を示す回路図である。
図2を参照して、TCAMセル(メモリセルMCとも称する)は、2個のSRAMセル(Static Random Access Memory Cell)11,12と、データ比較部13とを含む。SRAMセル11をXセルとも称し、SRAMセル14をYセルとも称する。Xセル11は、内部の記憶ノード対ND1,ND1_nに互いに相補となる(一方が“1”のとき他方が“0”となる)1ビット(bit)のデータを記憶する。Yセル14は、内部の記憶ノード対ND2,ND2_nに互いに相補となる1ビットのデータを記憶する。TCAMセルは、検索メモリセルとも称する。
TCAMセルは、ビット線対BL,/BL、サーチ線対SL,/SL、マッチ線ML、およびワード線WLX,WLYと接続される。ビット線対BL,/BLは、図4のTCAMセルアレイ20の列方向(Y方向)に延在し、列方向に配列された複数のTCAMセルによって共有される。サーチ線対SL,/SLは、TCAMセルアレイ20の列方向(Y方向)に延在し、列方向に配列された複数のTCAMセルによって共有される。
マッチ線MLは、TCAMセルアレイ20の行方向(X方向)に延在し、行方向に配列された複数のTCAMセルによって共有される。ワード線WLX,WLYは、TCAMセルアレイ20の行方向(X方向)に延在し、行方向に配列された複数のTCAMセルによって共有される。
Xセル11は、インバータINV1,INV2と、NチャネルMOS(Metal Oxide Semiconductor)トランジスタQ1,Q2とを含む。インバータINV1は、記憶ノードND1_nから記憶ノードND1へ向かう方向が順方向となるように、記憶ノードND1と記憶ノードND1_nの間に接続される。インバータINV2は、INV1と並列かつ逆方向に接続される。MOSトランジスタQ1は、記憶ノードND1とビット線BLとの間に接続される。MOSトランジスタQ2は、記憶ノードND1_nとビット線/BLとの間に接続される。MOSトランジスタQ1,Q2のゲートは、ワード線WLXと接続される。
Yセル14は、インバータINV3,INV4と、MOS(Metal Oxide Semiconductor)トランジスタQ3,Q4とを含む。インバータINV3は、記憶ノードND2_nから記憶ノードND2に向かう方向が順方向となるように、記憶ノードND2と記憶ノードND2_nの間に接続される。インバータINV4は、INV3と並列かつ逆方向に接続される。MOSトランジスタQ3は、記憶ノードND2とビット線BLとの間に接続される。MOSトランジスタQ4は、記憶ノードND2_nとビット線/BLとの間に接続される。MOSトランジスタQ3,Q4のゲートは、ワード線WLYと接続される。
データ比較部13は、NチャネルMOSトランジスタQ6〜Q9を含む。MOSトランジスタQ6,Q7はマッチ線MLとの接続点であるノードND3と接地ノードGNDとの間に直列に接続される。MOSトランジスタQ8,Q9は、ノードND3と接地ノードGNDとの間に直列に、かつ、直列接続されたMOSトランジスタQ6,Q7の全体と並列に接続される。MOSトランジスタQ6,Q8のゲートは、記憶ノードND1,ND2とそれぞれ接続される。MOSトランジスタQ7,Q9のゲートは、サーチ線SL,/SLとそれぞれ接続される。
図3は、図2のXセルおよびYセルの記憶内容とTCAMデータとの対応関係を表形式で示す図である。
図2および図3を参照して、TCAMセルは、2ビットのSRAMセルを用いて、“0”、“1”、“*”(ドントケア:don't care)の3値を格納することができる。具体的に、Xセル11の記憶ノードND1に“1”が格納され、Yセル14の記憶ノードND2に“0”が格納されているとき、TCAMセルには“0”が格納されているとする。Xセル11の記憶ノードND1に“0”が格納され、Yセル14の記憶ノードND2に“1”が格納されているとき、TCAMセルには“1”が格納されているとする。Xセル11の記憶ノードND1に“0”が格納され、Yセル14の記憶ノードND2に“0”が格納されているとき、TCAMセルには“*”(ドントケア)が格納されているとする。Xセル11の記憶ノードND1に“1”が格納され、Yセル14の記憶ノードND2に“1”が格納されている場合は使用しない。
上記のTCAMセルの構成によれば、サーチデータが“1”(すなわち、サーチ線SLが“1”、かつ、サーチ線/SLが“0”)であり、TCAMデータが“0”(記憶ノードND1が“1”、かつ、記憶ノードND2が“0”)である場合には、MOSトランジスタQ6,Q7がオン状態となるために、プリチャージされたマッチ線MLの電位が接地電位まで引き抜かれる。サーチデータが“0”(すなわち、サーチ線SLが“0”、かつ、サーチ線/SLが“1”)であり、TCAMデータが“1”(記憶ノードND1が“0”、かつ、記憶ノードND2が“1”)である場合には、MOSトランジスタQ8,Q9がオン状態となるために、プリチャージされたマッチ線MLの電位が接地電位まで引き抜かれる。すなわち、サーチデータとTCAMデータとが不一致の場合には、マッチ線MLの電位は接地電位まで引き抜かれる。
逆に、入力されたサーチデータが“1”であり、かつ、TCAMデータが“1”または“*”の場合、もしくは、サーチデータが“0”であり、かつ、TCAMデータが“0”または“*”の場合(すなわち、両者が一致する場合)、プリチャージされたマッチ線MLの電位(電源電圧VDDレベル)は維持される。
上記のように、TCAMでは、1つのエントリ(行)に対応するマッチ線MLに接続された全てのTCAMセルのデータが入力サーチデータと一致しない限り、マッチ線MLに蓄えられた電荷が引き抜かれる。このため、TCAMでの検索は高速であるが、消費電流が大きいという問題がある。
図4は、実施形態1に基づく検索メモリ8に含まれる検索ブロック200の構成を説明する図である。
図4に示されるように、検索ブロック200は、TCAMセルアレイ20(単にセルアレイとも称する)と、書込ドライバ21と、サーチ線ドライバ22と、マッチアンプ部23と、制御論理回路24と、読出回路25とを含む。
検索ブロック200は、図示していないがワード線WLX,WLYを駆動するためのワード線ドライバ(不図示)と、制御信号やアドレス信号等の入力を受ける入出力回路(不図示)とを含む。
TCAMセルアレイ20は、行列状(j行;k列)に配列されたTCAMセルを含む。本例においては、セルアレイ20は、行数(エントリ数)jがLであり、列数(ビット数)kが40の場合が示されている。なお、セルアレイ20は、少なくとも1つ以上の冗長メモリセル列を有している。
セルアレイ20の各列に対応して、k個(k=40)のビット線対(BL0,/BL0からBL(k−1),/BL(k−1)まで)と、k個(k=40)のサーチ線対(SL0,/SL0からSL(k−1),/SL(k−1)まで)とが設けられる。
セルアレイ20の各行に対応して、m本(m=N)のマッチ線(ML0〜ML(L−1)まで)と、図示しないm本のXセル用のワード線(WLX0〜WLX(L−1)まで)と、図示しないm本のYセル用のワード線(WLY0〜WLY(L−1)まで)とが設けられている。
書込ドライバ21は、書込時に、ビット線対BL,/BLを介して各TCAMセルに書込データを供給する。サーチ線ドライバ22は、検索時に、サーチ線対SL,/SLを介して各TCAMセルにサーチデータを供給する。
制御論理回路24は、検索ブロック200全体の動作を制御する。たとえば、制御論理回路24は、検索時には、サーチコマンドを受け取り、サーチ線ドライバ22と、マッチアンプ部23に制御信号を出力することによって、サーチ線ドライバ22、マッチアンプ部23、およびプリチャージ回路の動作を制御する。制御論理回路24は、読出時には読出コマンドを受け取り、読出回路25を制御する制御信号を出力する。これによりセルアレイ20に格納されているエントリデータを読み出して出力することが可能である。
マッチアンプ部23は、セルアレイの行にそれぞれ対応する複数のマッチアンプMAを含む。マッチアンプMAは、検索時に、対応するマッチ線MLの電位に基づいて、対応するTCAMセルデータと入力サーチデータの対応部分とが一致するか否かを検出する。この実施形態では、マッチアンプMAは、検索時に対応するマッチ線MLをプリチャージするためのプリチャージ回路を含む。
図5は、実施形態1に基づく検索メモリ8に含まれる複数の検索ユニットの構成を説明する図である。
図5を参照して、複数の検索ユニット102−0〜102−3(以下総称して検索ユニット102とも称する)と、制御部101と、グローバルプライオリティエンコーダ(GPE)301とが設けられる。
制御部101は、複数の入力サーチデータKey0〜Key3(以下、総称して入力サーチデータKeyとも称する)の入力をそれぞれ並列に受ける。
制御部101は、複数の入力サーチデータKey0〜Key3をそれぞれ各検索ユニット102にそれぞれ出力する。
制御部101は、選択信号SELPおよびSELQを各検索ユニット102にそれぞれ出力する。
各検索ユニット102は、複数の検索ブロック200を有する。
検索ユニット102−0は、検索ブロック200−0〜200−3(総称して検索ブロック200とも称する)と、セレクタ203−0と、中段プライオリティエンコーダ(MPE)300−0と、セレクタSL0〜SL3(総称してセレクタSLとも称する)とを含む。
検索ユニット102−0は、検索ブロック200−0〜200−3(総称して検索ブロック200とも称する)と、セレクタ203−0と、中段プライオリティエンコーダ(MPE)300−0と、セレクタSL0〜SL3(総称してセレクタSLとも称する)とを含む。
セレクタSL0〜SL3は、検索ブロック200−0〜200−3にそれぞれ対応して設けられる。
セレクタ203−0は、複数の入力サーチデータKey0〜Key3の入力を受けて、選択信号SELQ0,SELQ1の入力に従って2つの入力サーチデータKeyを各セレクタSLに出力する。
セレクタSL0〜SL3は、2つの入力サーチデータKeyの入力を受けて、選択信号SELP0〜SELP3の入力に従って2つの入力サーチデータKeyのいずれか一方を対応する検索ブロック200に出力する。
対応する検索ブロック200は、セレクタSLから入力された入力サーチデータKeyに対してサーチ動作を実行する。
対応する検索ブロック200は、一致したマッチ線に対応するアドレス情報(Hit-Index)を中段プライオリティエンコーダ(MPE)300−0に出力する。
中段プライオリティエンコーダ300−0は、各検索ブロック200−0〜200−3から出力されるアドレス情報(Hit-Index)を受けて、優先度の高いアドレス情報をグローバルプライオリティエンコーダ(GPE)301に出力する。
検索ユニット102−1は、検索ブロック200−4〜200−7と、セレクタ203−1と、中段プライオリティエンコーダ(MPE)300−1と、セレクタSL4〜SL7とを含む。
セレクタSL4〜SL7は、検索ブロック200−4〜200−7にそれぞれ対応して設けられる。
セレクタ203−1は、複数の入力サーチデータKey0〜Key3の入力を受けて、選択信号SELQ2,SELQ3の入力に従って2つの入力サーチデータKeyを各セレクタSLに出力する。
セレクタSL4〜SL7は、2つの入力サーチデータKeyの入力を受けて、選択信号SELP4〜SELP7の入力に従って2つの入力サーチデータKeyのいずれか一方を対応する検索ブロック200に出力する。
対応する検索ブロック200は、セレクタSLから入力された入力サーチデータKeyに対してサーチ動作を実行する。
対応する検索ブロック200は、一致したマッチ線に対応するアドレス情報(Hit-Index)を中段プライオリティエンコーダ(MPE)300−1に出力する。
中段プライオリティエンコーダ300−1は、各検索ブロック200−4〜200−7から出力されるアドレス情報(Hit-Index)を受けて、優先度の高いアドレス情報をグローバルプライオリティエンコーダ(GPE)301に出力する。
検索ユニット102−2は、検索ブロック200−8〜200−11と、セレクタ203−2と、中段プライオリティエンコーダ(MPE)300−2と、セレクタSL8〜SL11とを含む。
セレクタSL8〜SL11は、検索ブロック200−8〜200−11にそれぞれ対応して設けられる。
セレクタ203−2は、複数の入力サーチデータKey0〜Key3の入力を受けて、選択信号SELQ4,SELQ5の入力に従って2つの入力サーチデータKeyを各セレクタSLに出力する。
セレクタSL8〜SL11は、2つの入力サーチデータKeyの入力を受けて、選択信号SELP8〜SELP11の入力に従って2つの入力サーチデータKeyのいずれか一方を対応する検索ブロック200に出力する。
対応する検索ブロック200は、セレクタSLから入力された入力サーチデータKeyに対してサーチ動作を実行する。
対応する検索ブロック200は、一致したマッチ線に対応するアドレス情報(Hit-Index)を中段プライオリティエンコーダ(MPE)300−2に出力する。
中段プライオリティエンコーダ300−2は、各検索ブロック200−8〜200−11から出力されるアドレス情報(Hit-Index)を受けて、優先度の高いアドレス情報をグローバルプライオリティエンコーダ(GPE)301に出力する。
検索ユニット102−3は、検索ブロック200−12〜200−15と、セレクタ203−3と、中段プライオリティエンコーダ(MPE)300−3と、セレクタSL12〜SL15とを含む。
セレクタSL12〜SL15は、検索ブロック200−12〜200−15にそれぞれ対応して設けられる。
セレクタ203−3は、複数の入力サーチデータKey0〜Key3の入力を受けて、選択信号SELQ6,SELQ7の入力に従って2つの入力サーチデータKeyを各セレクタSLに出力する。
セレクタSL12〜SL15は、2つの入力サーチデータKeyの入力を受けて、選択信号SELP12〜SELP15の入力に従って2つの入力サーチデータKeyのいずれか一方を対応する検索ブロック200に出力する。
対応する検索ブロック200は、セレクタSLから入力された入力サーチデータKeyに対してサーチ動作を実行する。
対応する検索ブロック200は、一致したマッチ線に対応するアドレス情報(Hit-Index)を中段プライオリティエンコーダ(MPE)300−3に出力する。
中段プライオリティエンコーダ300−3は、各検索ブロック200−12〜200−15から出力されるアドレス情報(Hit-Index)を受けて、優先度の高いアドレス情報をグローバルプライオリティエンコーダ(GPE)301に出力する。
グローバルプライオリティエンコーダ(GPE)301は、複数の中段プライオリティエンコーダ300−0〜300−3の出力を受けて優先度の高いアドレス情報を最終的に出力する。本例においては、複数の入力サーチデータKey0〜Key3に対して複数のアドレス情報(Hit-Index0〜Hit-Index3)をそれぞれ出力する。
図6は、実施形態1に基づくセレクタ203−0の構成について説明する図である。
図6(A)を参照して、セレクタ203−0は、選択回路203A,203Bを含む。
図6(A)を参照して、セレクタ203−0は、選択回路203A,203Bを含む。
選択回路203Aは、複数の入力サーチデータKey0〜Key3の入力を受けて、選択信号SELQ0の入力に従って、複数の入力サーチデータKey0〜Key3の1つを選択して出力信号Xとして出力する。
選択回路203Bは、複数の入力サーチデータKey0〜Key3の入力を受けて、選択信号SELQ1の入力に従って、複数の入力サーチデータKey0〜Key3の1つを選択して出力信号Yとして出力する。
選択信号SELQ0,SELQ1は、それぞれ2ビットの制御信号である。
図6(B)には、選択信号SELQと、選択される出力信号との関係が示されている。
図6(B)には、選択信号SELQと、選択される出力信号との関係が示されている。
選択信号SELQ0,SELQ1がそれぞれ「00」の場合には、入力サーチデータKey0が選択される。
選択信号SELQ0,SELQ1がそれぞれ「01」の場合には、入力サーチデータKey1が選択される。
選択信号SELQ0,SELQ1がそれぞれ「10」の場合には、入力サーチデータKey2が選択される。
選択信号SELQ0,SELQ1がそれぞれ「11」の場合には、入力サーチデータKey3が選択される。
他のセレクタ203−1〜203−3の構成についても同様であるのでその詳細な説明については繰り返さない。
図7は、実施形態1に基づくセレクタSL0の構成について説明する図である。
図7(A)を参照して、セレクタSL0は、出力信号X,Yの入力を受けて、選択信号SELP0の入力に従って、出力信号X,Yの1つを選択して検索ブロック200−0に出力する。
図7(A)を参照して、セレクタSL0は、出力信号X,Yの入力を受けて、選択信号SELP0の入力に従って、出力信号X,Yの1つを選択して検索ブロック200−0に出力する。
選択信号SELP0は、1ビットの制御信号である。
図7(B)には、選択信号SELP0と、選択される出力信号との関係が示されている。
図7(B)には、選択信号SELP0と、選択される出力信号との関係が示されている。
選択信号SELP0が「0」の場合には、信号Xが選択されて出力される。
選択信号SELP0が「1」の場合には、信号Yが選択されて出力される。
選択信号SELP0が「1」の場合には、信号Yが選択されて出力される。
他のセレクタSL1〜SL15の構成についても同様であるのでその詳細な説明については繰り返さない。
図8は、実施形態1に基づく中段プライオリティエンコーダ300−0の構成について説明する図である。
図8(A)を参照して、中段プライオリティエンコーダ300−0は、スイッチ回路SW0〜SW3と、プライオリティエンコーダ300A,300Bとを含む。
スイッチ回路SW0〜SW3は、選択信号SELP0〜SELP3に従って入力される2つのアドレス情報(Hit-Index)を切り替えてプライオリティエンコーダ300A,300Bのいずれか一方に出力する。
図8(B)を参照して、選択信号SELP0と、アドレス情報(Hit-Index)が出力されるプライオリティエンコーダとの関係が示されている。
選択信号SELP0が「0」の場合には、プライオリティエンコーダ300Aにアドレス情報(Hit-Index)が出力される。
選択信号SELP0が「1」の場合には、プライオリティエンコーダ300Bにアドレス情報(Hit-Index)が出力される。
各プライオリティエンコーダ300A,300Bは、入力される複数のアドレス情報(Hit-Index)について優先度の高いアドレス情報を選択して出力する。
本例においては、一例として、プライオリティエンコーダ300Aからアドレス情報(Hit-IndexX)が出力される場合が示されている。プライオリティエンコーダ300Bからアドレス情報(Hit-IndexY)が出力される場合が示されている。
図9は、実施形態1に基づくプライオリティエンコーダ301の構成について説明する図である。
図9(A)を参照して、プライオリティエンコーダ301は、スイッチ回路SW4〜SW11と、プライオリティエンコーダ301A〜301Dとを含む。
スイッチ回路SW4〜SW11は、選択信号SELQ0〜SELQ7の入力に従って、入力されるアドレス情報(Hit-Index)をプライオリティエンコーダ301A〜301Dのいずれか一つに出力する。
スイッチ回路SW4は、入力されるアドレス情報(Hit-IndexX)を選択信号SELQ0に従ってプライオリティエンコーダ301A〜301Dのいずれか一つに出力する。
スイッチ回路SW5は、入力されるアドレス情報(Hit-IndexY)を選択信号SELQ1に従ってプライオリティエンコーダ301A〜301Dのいずれか一つに出力する。
スイッチ回路SW6は、入力されるアドレス情報(Hit-IndexX)を選択信号SELQ2に従ってプライオリティエンコーダ301A〜301Dのいずれか一つに出力する。
スイッチ回路SW7は、入力されるアドレス情報(Hit-IndexY)を選択信号SELQ3に従ってプライオリティエンコーダ301A〜301Dのいずれか一つに出力する。
スイッチ回路SW8は、入力されるアドレス情報(Hit-IndexX)を選択信号SELQ4に従ってプライオリティエンコーダ301A〜301Dのいずれか一つに出力する。
スイッチ回路SW9は、入力されるアドレス情報(Hit-IndexY)を選択信号SELQ5に従ってプライオリティエンコーダ301A〜301Dのいずれか一つに出力する。
スイッチ回路SW10は、入力されるアドレス情報(Hit-IndexX)を選択信号SELQ6に従ってプライオリティエンコーダ301A〜301Dのいずれか一つに出力する。
スイッチ回路SW11は、入力されるアドレス情報(Hit-IndexY)を選択信号SELQ7に従ってプライオリティエンコーダ301A〜301Dのいずれか一つに出力する。
プライオリティエンコーダ301A〜301Dは、入力されたアドレス情報について、優先度の高いアドレス情報を最終的に出力する。本例においては、プライオリティエンコーダ301A〜301Dは、複数のアドレス情報(Hit-Index0〜Hit-Index3)をそれぞれ出力する。
図9(B)を参照して、選択信号SELQと、出力されるプライオリティエンコーダ(PE)との関係が示されている。
選択信号SELQ0〜SELQ7は、それぞれ2ビットの制御信号である。
例えば、スイッチ回路SW4〜SW11は、選択信号SELQ0〜SELQ7が「00」の場合には、入力されるアドレス情報(Hit-Index)をプライオリティエンコーダ301Aに出力する。スイッチ回路SW4〜SW11は、選択信号SELQ0〜SELQ7が「01」の場合には、入力されるアドレス情報(Hit-Index)をプライオリティエンコーダ301Bに出力する。スイッチ回路SW4〜SW11は、選択信号SELQ0〜SELQ7が「10」の場合には、入力されるアドレス情報(Hit-Index)をプライオリティエンコーダ301Cに出力する。
例えば、スイッチ回路SW4〜SW11は、選択信号SELQ0〜SELQ7が「00」の場合には、入力されるアドレス情報(Hit-Index)をプライオリティエンコーダ301Aに出力する。スイッチ回路SW4〜SW11は、選択信号SELQ0〜SELQ7が「01」の場合には、入力されるアドレス情報(Hit-Index)をプライオリティエンコーダ301Bに出力する。スイッチ回路SW4〜SW11は、選択信号SELQ0〜SELQ7が「10」の場合には、入力されるアドレス情報(Hit-Index)をプライオリティエンコーダ301Cに出力する。
スイッチ回路SW4〜SW11は、選択信号SELQ0〜SELQ7が「11」の場合には、入力されるアドレス情報(Hit-Index)をプライオリティエンコーダ301Dに出力する。
次に、検索ブロック200とエントリデータとの割り当てについて説明する。
図10は、検索ブロック200とエントリデータとの割り当てについて説明する図である。
図10は、検索ブロック200とエントリデータとの割り当てについて説明する図である。
図10(A)を参照して、入力サーチデータKey0〜Key3に対してサーチ動作を実行するエントリデータを割り当てる検索ブロック200の個数が示されている。
具体的には、入力サーチデータKey0に対するエントリデータを格納する検索ブロック200の個数4個、入力サーチデータKey1に対するエントリデータを格納する検索ブロック200の個数4個を割り当てる場合が示されている。さらに、入力サーチデータKey2に対するエントリデータを格納する検索ブロック200の個数4個、入力サーチデータKey3に対するエントリデータを格納する検索ブロック200の個数4個を割り当てる場合が示されている。
この場合、検索ユニット102−0に対して、入力サーチデータKey0に対するエントリデータを格納する検索ブロック200−0〜200−3をそれぞれ割り当てる。検索ユニット102−1に対して、入力サーチデータKey1に対するエントリデータを格納する検索ブロック200−4〜200−7をそれぞれ割り当てる。検索ユニット102−2に対して、入力サーチデータKey2に対するエントリデータを格納する検索ブロック200−8〜200−11をそれぞれ割り当てる。検索ユニット102−3に対して、入力サーチデータKey3に対するエントリデータを格納する検索ブロック200−12〜200−15をそれぞれ割り当てる。
図10(B)を参照して、入力サーチデータKey0〜Key3に対してサーチ動作を実行するエントリデータに割り当てる検索ブロック200の個数が示されている。
具体的には、入力サーチデータKey0に対するエントリデータを格納する検索ブロック200の個数6個、入力サーチデータKey1に対するエントリデータを格納する検索ブロック200の個数5個を割り当てる場合が示されている。さらに、入力サーチデータKey2に対するエントリデータを格納する検索ブロック200の個数3個、入力サーチデータKey3に対するエントリデータを格納する検索ブロック200の個数2個を割り当てる場合が示されている。
この場合、検索ユニット102−0に対して、入力サーチデータKey0に対するエントリデータを格納する検索ブロック200−0〜200−3(4個)をそれぞれ割り当てる。
検索ユニット102−1に対して、入力サーチデータKey0に対するエントリデータを格納する検索ブロック200−4,200−5(2個)と、入力サーチデータkey1に対するエントリデータを格納する検索ブロック200−6,200−7(2個)とをそれぞれ割り当てる。
検索ユニット102−2に対して、入力サーチデータKey1に対するエントリデータを格納する検索ブロック200−8,200−9,200−10(3個)と、入力サーチデータKey2に対するエントリデータを格納する検索ブロック200−11(1個)とをそれぞれ割り当てる。
検索ユニット102−3に対して、入力サーチデータKey2に対するエントリデータを格納する検索ブロック200−12,200−13(2個)と、入力サーチデータKey3に対するエントリデータを格納する検索ブロック200−14,200−15(2個)とをそれぞれ割り当てる。
図11は、実施形態1に基づく入力サーチデータKeyに対応するエントリデータを格納した検索ブロック200の概念図である。
図11(A)を参照して、図10(A)の割り当てに従って入力サーチデータKeyに対応するエントリデータが各検索ブロック200に格納されている。
本例の場合には、それぞれの検索ユニット102に対して、1種類の入力サーチデータKeyに対するエントリデータが格納される場合が示されている。
図11(B)を参照して、図10(B)の割り当てに従って、入力サーチデータKeyに対応するエントリデータが各検索ブロック200に格納されている。
本例の場合には、一部の検索ユニット102に対して、2種類の入力サーチデータKeyに対するエントリデータが格納される場合が示されている。
具体的には、検索ユニット102−1には、入力サーチデータKey0に対するエントリデータを格納する検索ブロック200(2個)と、入力サーチデータkey1に対するエントリデータを格納する検索ブロック200(2個)とがそれぞれ割り当てられている。
検索ユニット102−2には、入力サーチデータKey1に対するエントリデータを格納する検索ブロック200(3個)と、入力サーチデータKey2に対するエントリデータを格納する検索ブロック200(1個)とがそれぞれ割り当てられている。
検索ユニット102−3には、入力サーチデータKey2に対するエントリデータを格納する検索ブロック200(2個)と、入力サーチデータKey3に対するエントリデータを格納する検索ブロック200(2個)とがそれぞれ割り当てられている。
当該方式で割り当てることにより、1つの検索ユニット102において2種類のエントリデータをそれぞれ格納することが可能となる。
したがって、4種類の入力サーチデータKeyをそれぞれの検索ブロック200に入力する必要はないためデータバス幅を削減することが可能となる。また、データバス幅を削減することにより、消費電力も低減することが可能である。
図12は、実施形態1に基づく検索ブロック200の割当の方式について説明するフロー図である。
当該フローは、1つの検索ユニット102において2種類のエントリデータを格納することが可能な方式である。ここで、1つの検索ユニット102がP個の検索ブロックを有するものとする。
図12を参照して、割当に際して、入力サーチデータKey0〜Key3に対応するエントリデータをそれぞれ格納するための検索ブロック200の個数が小さい順に配列する(ステップS0)。具体的には、割り当てる個数について小さい個数の順番に配列する。
次に、1番目に小さい個数の入力サーチデータに対応するエントリデータを格納するための検索ブロック200の割当の個数はP個以上であるか否かを判断する(ステップS1)。たとえば、P=4個とする。1番目の入力サーチデータに対応するエントリデータを格納する検索ブロック200の割当の個数は4個以上であるか否かを判断する。
ステップS1において、1番目に小さい個数の入力サーチデータに対応するエントリデータを格納する検索ブロック200の割当の個数はP個以上であると判断した場合(ステップS1においてYES)には、1番目に小さい個数の入力サーチデータに対応するエントリデータを格納する検索ブロック200の組を、一つの検索ユニット内の検索ブロックに割り当てる(ステップS2)。
次に、1番目に小さい個数の入力サーチデータに対応するエントリデータを格納する検索ブロックの割り当ての個数がP個を超えるか否かを判断する。すなわち、P個を超えた残りの1番目に小さい個数の入力サーチデータKeyに対応するエントリデータを格納するための検索ブロック200が有るか否かを判断する(ステップS3)。
ステップS3において、P個を超えた残りの1番目に小さい個数の入力サーチデータKeyに対応するエントリデータを格納すべき検索ブロック200が有ると判断した場合(ステップS3においてYES)について説明する。当該場合は、残りの1番目に小さい個数の入力サーチデータKeyに対応するエントリデータKeyと2番目に小さい個数の入力サーチデータKeyに対応するエントリデータを格納する検索ブロック200の組を、次の検索ユニット内の検索ブロック200の検索ブロック200に割り当てる(ステップS4)。
次に、残りの2番目に小さい個数の入力サーチデータKeyに対応するエントリデータを格納すべき検索ブロック200が有るか否かを判断する(ステップS5)。
ステップS5において、残りの2番目に小さい個数の入力サーチデータKeyに対応するエントリデータを格納する検索ブロック200が有ると判断した場合(ステップS5においてYES)について説明する。当該場合は、2番目と3番目に小さい個数の入力サーチデータKeyに対応するエントリデータを格納する検索ブロック200の組を、さらに次の検索ユニット内の検索ブロック200の検索ブロックに割り当てる(ステップS6)。
次に、残りの4番目に小さい個数の入力サーチデータに対応するエントリデータを格納する検索ブロック200の組を割り当てる(ステップS7)。
そして、終了する(エンド)。
一方で、ステップS3において、残りの1番目に小さい個数の入力サーチデータKeyに対応するエントリデータを格納する検索ブロック200が無いと判断した場合、すなわち、1番目に小さい個数の入力サーチデータKeyに対応するエントリデータを格納する検索ブロックがP個を超えない場合(ステップS3においてNO)について説明する。当該場合は、2番目に小さい個数の入力サーチデータKeyに対応するエントリデータを格納する検索ブロック200の組を、次の検索ユニットの検索ブロックに割り当てる(ステップS8)。
一方で、ステップS3において、残りの1番目に小さい個数の入力サーチデータKeyに対応するエントリデータを格納する検索ブロック200が無いと判断した場合、すなわち、1番目に小さい個数の入力サーチデータKeyに対応するエントリデータを格納する検索ブロックがP個を超えない場合(ステップS3においてNO)について説明する。当該場合は、2番目に小さい個数の入力サーチデータKeyに対応するエントリデータを格納する検索ブロック200の組を、次の検索ユニットの検索ブロックに割り当てる(ステップS8)。
そして、ステップS5に進む。
一方で、ステップS5において、残りの2番目に小さい個数の入力サーチデータKeyに対応するエントリデータを格納する検索ブロック200が無いと判断した場合(ステップS5においてNO)について説明する。当該場合は、3番目に小さい個数の入力サーチデータKeyに対応するエントリデータを格納する検索ブロック200の組を、ほかの検索ユニットの検索ブロックに割り当てる(ステップS9)。
一方で、ステップS5において、残りの2番目に小さい個数の入力サーチデータKeyに対応するエントリデータを格納する検索ブロック200が無いと判断した場合(ステップS5においてNO)について説明する。当該場合は、3番目に小さい個数の入力サーチデータKeyに対応するエントリデータを格納する検索ブロック200の組を、ほかの検索ユニットの検索ブロックに割り当てる(ステップS9)。
そして、ステップS7に進む。
そして、処理を終了する(エンド)。
そして、処理を終了する(エンド)。
たとえば、1番目に小さい個数の入力サーチデータに対応するエントリデータを格納する検索ブロック200の割当の個数が4個であり、2番目に小さい個数の入力サーチデータに対応するエントリデータを格納する検索ブロック200の割当の個数が4個である場合について説明する。さらに、3番目に小さい個数の入力サーチデータに対応するエントリデータを格納する割当の個数が4個であり、4番目に小さい個数の入力サーチデータに対応するエントリデータを格納する検索ブロック200の割当の個数が4個である場合について説明する。
この場合、ステップS2において、1番目に小さい個数の入力サーチデータに対応するエントリデータを格納する検索ブロック200の個数4個の組が割り当てられる。また、ステップS8において、2番目に小さい個数の入力サーチデータに対応するエントリデータを格納する検索ブロック200の個数4個の組が割り当てられる。また、ステップS9において、3番目に小さい個数の入力サーチデータに対応するエントリデータを格納する検索ブロック200の個数4個の組が割り当てられる。また、ステップS7において、4番目に小さい個数の入力サーチデータに対応するエントリデータを格納する検索ブロック200の個数4個の組が割り当てられる。
次に、1番目に小さい個数の入力サーチデータに対応するエントリデータを格納する検索ブロック200の割当の個数はP個以上で無いと判断した場合(ステップS1においてNO)について説明する。当該場合には、1番目と2番目に小さい個数の入力サーチデータKeyに対応するエントリデータを格納する検索ブロック200の合計の個数がP個以上であるか否かを判断する(ステップS10)。たとえば、P=4個とする。1番目と2番目に小さい個数の入力サーチデータKeyに対応するエントリデータを格納する検索ブロック200の割当の合計の個数が4個以上であるか否かを判断する。
ステップS10において、1番目と2番目に小さい個数の入力サーチデータKeyに対応するエントリデータを格納する検索ブロック200の合計の個数がP個以上であると判断した場合(ステップS10においてYES)について説明する。当該場合は、1番目と2番目に小さい個数の入力サーチデータKeyに対応するエントリデータを格納する検索ブロック200の組を一つの検索ユニット内の検索ブロックに割り当てる(ステップS11)。
次に、残りの2番目に小さい個数の入力サーチデータKeyに対応するエントリデータを格納する検索ブロック200が有るか否かを判断する(ステップS12)。
ステップS12において、残りの2番目に小さい個数の入力サーチデータKeyに対応するエントリデータを格納する検索ブロック200が有ると判断した場合(ステップS12においてYES)について説明する。当該場合は、2番目と3番目に小さい個数の入力サーチデータに対応するエントリデータを格納する検索ブロック200の組を、次の検索ユニット内の検索ブロックに割り当てる(ステップS14)。
次に、残りの3番目に小さい個数の入力サーチデータに対応するエントリデータを格納する検索ブロック200が有るか否かを判断する(ステップS16)。
ステップS16において、残りの3番目に小さい個数の入力サーチデータに対応するエントリデータを格納する検索ブロック200が有ると判断した場合(ステップS16においてYES)について説明する。当該場合は、3番目と4番目に小さい個数の入力サーチデータに対応するエントリデータを格納する検索ブロック200の組を、さらに次の検索ユニット内の検索ブロックに割り当てる(ステップS18)。
次に、残りの4番目に小さい個数の入力サーチデータに対応するエントリデータを格納する検索ブロック200の組を割り当てる(ステップS20)。
そして、終了する(エンド)。
たとえば、1番目に小さい個数の入力サーチデータに対応するエントリデータを格納する検索ブロック200の割当の個数が2個であり、2番目に小さい個数の入力サーチデータに対応するエントリデータを格納する検索ブロック200の割当の個数が3個である場合について説明する。さらに、3番目に小さい個数の入力サーチデータに対応するエントリデータを格納する割当の個数が5個であり、4番目に小さい個数の入力サーチデータに対応するエントリデータを格納する検索ブロック200の割当の個数が6個である場合について説明する。
たとえば、1番目に小さい個数の入力サーチデータに対応するエントリデータを格納する検索ブロック200の割当の個数が2個であり、2番目に小さい個数の入力サーチデータに対応するエントリデータを格納する検索ブロック200の割当の個数が3個である場合について説明する。さらに、3番目に小さい個数の入力サーチデータに対応するエントリデータを格納する割当の個数が5個であり、4番目に小さい個数の入力サーチデータに対応するエントリデータを格納する検索ブロック200の割当の個数が6個である場合について説明する。
この場合、ステップS11において、1番目に小さい個数の入力サーチデータに対応するエントリデータを格納する検索ブロック200の個数2個と、2番目に小さい個数の入力サーチデータに対応するエントリデータを格納する検索ブロック200の個数2個の組が一つの検索ユニット内の検索ブロックに割り当てられる。次に、ステップS14において、2番目に小さい個数の入力サーチデータに対応するエントリデータを格納する検索ブロック200の個数1個と、3番目に小さい個数の入力サーチデータに対応するエントリデータを格納する検索ブロック200の個数3個の組が次の検索ユニット内の検索ブロックに割り当てられる。次に、ステップS18において、3番目に小さい個数の入力サーチデータに対応するエントリデータを格納する検索ブロック200の個数2個と、4番目に小さい個数の入力サーチデータに対応するエントリデータを格納する検索ブロック200の個数2個の組がさらにその次の検索ユニット内の検索ブロックに割り当てられる。そして、ステップS20において、残りの4番目に小さい個数の入力サーチデータに対応するエントリデータを格納する検索ブロック200の個数4個の組が割り当てられる。
一方、1番目と2番目に小さい個数の入力サーチデータに対応するエントリデータを格納する検索ブロック200の合計の個数がP個以上で無いと判断した場合(ステップS10においてNO)について説明する。当該場合は、1番目と3番目に小さい個数の入力サーチデータに対応するエントリデータを格納する検索ブロック200の合計の個数がP個以上であるか否かを判断する(ステップS28)。
ステップS28において、1番目と3番目に小さい個数の入力サーチデータに対応するエントリデータを格納する検索ブロック200の合計の個数がP個以上であると判断した場合(ステップS28においてYES)について説明する。当該場合は、1番目と3番目に小さい個数の入力サーチデータに対応するエントリデータを格納する検索ブロック200の組を割り当てる(ステップS30)。
次に、ステップS34において、2番目と3番目に小さい個数の入力サーチデータに対応するエントリデータを格納する検索ブロック200の合計の個数がP個以上であるか否かを判断する(ステップS34)。
ステップS34において、2番目と3番目に小さい個数の入力サーチデータに対応するエントリデータを格納する検索ブロック200の合計の個数がP個以上であると判断した場合(ステップS34においてYES)には、2番目と3番目に小さい個数の入力サーチデータに対応するエントリデータを格納する検索ブロック200の組を割り当てる(ステップS36)。
そして、ステップS16に進む。
たとえば、1番目に小さい個数の入力サーチデータに対応するエントリデータを格納する検索ブロック200の割当の個数が1個であり、2番目に小さい個数の入力サーチデータに対応するエントリデータを格納する検索ブロック200の割当の個数が1個でありる場合について説明する。さらに、3番目に小さい個数の入力サーチデータに対応するエントリデータを格納する割当の個数が6個であり、4番目に小さい個数の入力サーチデータに対応するエントリデータを格納する検索ブロック200の割当の個数が8個である場合について説明する。
たとえば、1番目に小さい個数の入力サーチデータに対応するエントリデータを格納する検索ブロック200の割当の個数が1個であり、2番目に小さい個数の入力サーチデータに対応するエントリデータを格納する検索ブロック200の割当の個数が1個でありる場合について説明する。さらに、3番目に小さい個数の入力サーチデータに対応するエントリデータを格納する割当の個数が6個であり、4番目に小さい個数の入力サーチデータに対応するエントリデータを格納する検索ブロック200の割当の個数が8個である場合について説明する。
この場合、ステップS30において、1番目に小さい個数の入力サーチデータに対応するエントリデータを格納する検索ブロック200の個数1個と、3番目に小さい個数の入力サーチデータに対応するエントリデータを格納する検索ブロック200の個数3個の組が割り当てられる。次に、ステップS36において、2番目に小さい個数の入力サーチデータに対応するエントリデータを格納する検索ブロック200の個数1個と、3番目に小さい個数の入力サーチデータに対応するエントリデータを格納する検索ブロック200の個数3個の組が割り当てられる。
一方、ステップS28において、1番目と3番目に小さい個数の入力サーチデータに対応するエントリデータを格納する検索ブロック200の合計の個数がP個以上でないと判断した場合(ステップS28においてNO)には、1番目と4番目に小さい個数の入力サーチデータに対応するエントリデータを格納する検索ブロック200の組を割り当てる(ステップS32)。
次に、ステップS34において、2番目と3番目に小さい個数の入力サーチデータに対応するエントリデータを格納する検索ブロック200の合計の個数がP個以上でないと判断した場合(ステップS34においてNO)には、2番目と4番目に小さい個数の入力サーチデータに対応するエントリデータを格納する検索ブロック200の組を割り当てる(ステップS38)。
次に、残りの3番目に小さい個数の入力サーチデータに対応するエントリデータを格納する検索ブロック200が有るか否かを判断する(ステップS40)。
ステップS40において、残りの3番目に小さい個数の入力サーチデータに対応するエントリデータを格納する検索ブロック200が有ると判断した場合(ステップS40においてYES)には、3番目と4番目に小さい個数の入力サーチデータに対応するエントリデータを格納する検索ブロック200の組を割り当てる(ステップS41)。
たとえば、1番目に小さい個数の入力サーチデータに対応するエントリデータを格納する検索ブロック200の割当の個数が1個であり、2番目に小さい個数の入力サーチデータに対応するエントリデータを格納する検索ブロック200の割当の個数が2個である場合について説明する。さらに、3番目に小さい個数の入力サーチデータに対応するエントリデータを格納する割当の個数が4個であり、4番目に小さい個数の入力サーチデータに対応するエントリデータを格納する検索ブロック200の割当の個数が9個である場合について説明する。
この場合、ステップS32において、1番目に小さい個数の入力サーチデータに対応するエントリデータを格納する検索ブロック200の個数1個と、3番目に小さい個数の入力サーチデータに対応するエントリデータを格納する検索ブロック200の個数3個との組を割り当てる。次に、ステップS38において、2番目に小さい個数の入力サーチデータに対応するエントリデータを格納する検索ブロック200の割当の個数が2個と、4番目に小さい個数の入力サーチデータに対応するエントリデータを格納する検索ブロック200の割当の個数が2個との組を割り当てる。次に、3番目に近い個数の入力サーチデータに対応するエントリデータを格納する検索ブロック200の残りの個数1個と、4番目に小さい個数の入力サーチデータに対応するエントリデータを格納する検索ブロック200の個数3個との組を割り当てる。
そして、ステップS20に進む。
一方で、ステップS40において、残りの3番目に小さい個数の入力サーチデータに対応するエントリデータを格納する検索ブロック200が無いと判断した場合(ステップS40においてNO)には、ステップS20に進む。
一方で、ステップS40において、残りの3番目に小さい個数の入力サーチデータに対応するエントリデータを格納する検索ブロック200が無いと判断した場合(ステップS40においてNO)には、ステップS20に進む。
たとえば、1番目に小さい個数の入力サーチデータに対応するエントリデータを格納する検索ブロック200の割当の個数が1個であり、2番目に小さい個数の入力サーチデータに対応するエントリデータを格納する検索ブロック200の割当の個数が1個である場合について説明する。さらに、3番目に小さい個数の入力サーチデータに対応するエントリデータを格納する割当の個数が3個であり、4番目に小さい個数の入力サーチデータに対応するエントリデータを格納する検索ブロック200の割当の個数が11個である場合について説明する。
この場合、ステップS30において、1番目に小さい個数の入力サーチデータに対応するエントリデータを格納する検索ブロック200の個数1個と、3番目に小さい個数の入力サーチデータに対応するエントリデータを格納する検索ブロック200の個数3個との組を割り当てる。次に、ステップS38において、2番目に小さい個数の入力サーチデータに対応するエントリデータを格納する検索ブロック200の割当の個数が1個と、4番目に小さい個数の入力サーチデータに対応するエントリデータを格納する検索ブロック200の割当の個数が3個との組を割り当てる。そして、ステップS20に進む。
一方、ステップS12において、残りの2番目に小さい個数の入力サーチデータに対応するエントリデータを格納する検索ブロック200が無いと判断した場合(ステップS12においてNO)には、3番目に小さい個数の入力サーチデータに対応するエントリデータを格納する検索ブロック200の個数がP個以上であるか否かを判断する(ステップS24)。
ステップS24において、3番目に小さい個数の入力サーチデータに対応するエントリデータを格納する検索ブロック200の個数がP個以上であると判断した場合(ステップS24においてYES)には、3番目に小さい個数の入力サーチデータに対応するエントリデータを格納する検索ブロック200の個数であるP個の組を割り当てる(ステップS26)。
次に、ステップS16に進む。
たとえば、1番目に小さい個数の入力サーチデータに対応するエントリデータを格納する検索ブロック200の割当の個数が2個であり、2番目に小さい個数の入力サーチデータに対応するエントリデータを格納する検索ブロック200の割当の個数が2個である場合について説明する。さらに、3番目に小さい個数の入力サーチデータに対応するエントリデータを格納する割当の個数が4個であり、4番目に小さい個数の入力サーチデータに対応するエントリデータを格納する検索ブロック200の割当の個数が8個である場合について説明する。
たとえば、1番目に小さい個数の入力サーチデータに対応するエントリデータを格納する検索ブロック200の割当の個数が2個であり、2番目に小さい個数の入力サーチデータに対応するエントリデータを格納する検索ブロック200の割当の個数が2個である場合について説明する。さらに、3番目に小さい個数の入力サーチデータに対応するエントリデータを格納する割当の個数が4個であり、4番目に小さい個数の入力サーチデータに対応するエントリデータを格納する検索ブロック200の割当の個数が8個である場合について説明する。
この場合、ステップS11において、1番目に小さい個数の入力サーチデータに対応するエントリデータを格納する検索ブロック200の個数2個と、2番目に小さい個数の入力サーチデータに対応するエントリデータを格納する検索ブロック200の個数2個との組を割り当てる。次に、ステップS26において、3番目に小さい個数の入力サーチデータに対応するエントリデータを格納する検索ブロック200の割当の個数が4個の組を割り当てる。そして、ステップS16に進む。
一方で、ステップS24において、3番目に小さい個数の入力サーチデータに対応するエントリデータを格納する検索ブロック200の個数がP個以上で無いと判断した場合(ステップS24においてNO)には、ステップS40に進む。
たとえば、1番目に小さい個数の入力サーチデータに対応するエントリデータを格納する検索ブロック200の割当の個数が1個であり、2番目に小さい個数の入力サーチデータに対応するエントリデータを格納する検索ブロック200の割当の個数が3個である場合について説明する。さらに、3番目に小さい個数の入力サーチデータに対応するエントリデータを格納する割当の個数が3個であり、4番目に小さい個数の入力サーチデータに対応するエントリデータを格納する検索ブロック200の割当の個数が9個である場合について説明する。
この場合、ステップS11において、1番目に小さい個数の入力サーチデータに対応するエントリデータを格納する検索ブロック200の個数1個と、2番目に小さい個数の入力サーチデータに対応するエントリデータを格納する検索ブロック200の個数3個との組を割り当てる。そして、ステップS40に進む。
一方で、ステップS16において、残りの3番目に小さい個数の入力サーチデータに対応するエントリデータを格納する検索ブロック200の個数がP個以上で無いと判断した場合(ステップS16においてNO)には、ステップS20に進む。
たとえば、1番目に小さい個数の入力サーチデータに対応するエントリデータを格納する検索ブロック200の割当の個数が2個であり、2番目に小さい個数の入力サーチデータに対応するエントリデータを格納する検索ブロック200の割当の個数が3個である場合について説明する。さらに、3番目に小さい個数の入力サーチデータに対応するエントリデータを格納する割当の個数が3個であり、4番目に小さい個数の入力サーチデータに対応するエントリデータを格納する検索ブロック200の割当の個数が8個である場合について説明する。
この場合、ステップS11において、1番目に小さい個数の入力サーチデータに対応するエントリデータを格納する検索ブロック200の個数2個と、2番目に小さい個数の入力サーチデータに対応するエントリデータを格納する検索ブロック200の個数2個との組を割り当てる。次に、ステップS14において、2番目に小さい個数の入力サーチデータに対応するエントリデータを格納する検索ブロック200の個数1個と、3番目に小さい個数の入力サーチデータに対応するエントリデータを格納する検索ブロック200の割当の個数が3個の組を割り当てる。そして、ステップS20に進む。
図10(B)で入力サーチデータKey0〜Key3に対応するエントリデータを格納する検索ブロック200の個数がそれぞれ6個、5個、3個、2個の場合について説明する。
図12のフロー図において、ステップS0において、入力サーチデータKey0〜Key3に対応するエントリデータをそれぞれ格納する検索ブロック200の割当に際して小さい順に配列する。
具体的には、2個(Key3)、3個(Key2)、5個(Key1)、6個(Key0)の順番に配列する。
そして、ステップS2において、1番目に小さい個数の入力サーチデータKey3の入力サーチデータに対応するエントリデータを格納する検索ブロック200の個数がP個(P=4)個で無いと判断する。
次に、ステップS6において、1番目に小さい個数の入力サーチデータKey3と2番目に小さい個数の入力サーチデータKey2に対応するエントリデータを格納する検索ブロック200の合計の個数が4個以上であると判断する。
これにより、ステップS8において、1番目に小さい個数の入力サーチデータKey3と2番目に小さい個数の入力サーチデータKey2に対応するエントリデータを格納する検索ブロック200の組を割り当てる。具体的には、1番目に小さい個数の入力サーチデータKey3に対応するエントリデータを格納する検索ブロック200の割当の個数が2個であり、2番目に小さい個数の入力サーチデータKey2に対応するエントリデータを格納する検索ブロック200の割当の個数が2個の組を割り当てる。
次に、ステップS10において、残りの2番目に小さい個数の入力サーチデータKey2に対応するエントリデータを格納する検索ブロック200が有ると判断する。
そして、ステップS12において、2番目に小さい個数の入力サーチデータKey2と3番目に小さい個数の入力サーチデータKey1に対応するエントリデータを格納する検索ブロック200の合計の個数が4個以上であると判断する。
これにより、ステップS12において、2番目に小さい個数の入力サーチデータKey2と3番目に小さい個数の入力サーチデータKey1に対応するエントリデータを格納する検索ブロック200の組を割り当てる。具体的には、2番目に小さい個数の入力サーチデータKey2に対応するエントリデータを格納する検索ブロック200の割当の個数が1個であり、3番目に小さい個数の入力サーチデータKey1に対応するエントリデータを格納する検索ブロック200の割当の個数が3個の組を割り当てる。
そして、ステップS16において、残りの3番目に小さい個数の入力サーチデータKey1に対応するエントリデータを格納する検索ブロック200が有ると判断する。
次に、ステップS18において、3番目に小さい個数の入力サーチデータKey1と4番目に小さい個数の入力サーチデータKey0に対応するエントリデータを格納する検索ブロック200の組を割り当てる。具体的には、3番目に小さい個数の入力サーチデータKey1に対応するエントリデータを格納する検索ブロック200の割当の個数が2個であり、4番目に小さい個数の入力サーチデータKey0に対応するエントリデータを格納する検索ブロック200の割当の個数が2個の組を割り当てる。
次に、ステップS20において、残りの4番目に小さい個数の入力サーチデータKeyに対応するエントリデータを格納する検索ブロック200の組を割り当てる。具体的には、4番目に小さい個数の残りの入力サーチデータKey0に対応するエントリデータを格納する検索ブロック200の4個の組を割り当てる。
そして、本例においては割り当てた組毎にそれぞれの検索ユニット102の検索ブロック200に格納する。一例として、入力サーチデータKey0の4個の検索ブロック200の組を検索ユニット102−0に割り当てる。入力サーチデータKey0の2個の検索ブロック200と入力サーチデータKey1の2個の検索ブロック200の組を検索ユニット102−1に割り当てる。入力サーチデータKey1の3個の検索ブロック200と入力サーチデータKey2の1個の検索ブロック200の組を検索ユニット102−2に割り当てる。入力サーチデータKey2の2個の検索ブロック200と入力サーチデータKey3の2個の検索ブロック200の組を検索ユニット102−3に割り当てる。
図13は、図10(B)の検索ユニットに割り当てられた場合の選択信号を説明する図である。
図13を参照して、検索ユニット102−0について選択信号SELQ0およびSELQ1は、ともに「00」に設定する。選択信号SELP0〜SELP3は、「0」に設定する。
選択信号SELQ0は、「00」であるためセレクタ203−0は、入力サーチデータKey0を出力信号Xとして出力する。また、選択信号SELQ1は、「00」であるためセレクタ203−0は、入力サーチデータKey0を出力信号Yとして出力する。
セレクタSL0〜SL3は、選択信号SELP0〜SELP3(「0」)に従って出力信号Xである入力サーチデータKey0を選択して検索ブロック200−0〜200−3にそれぞれ出力する。
検索ユニット102−1について選択信号SELQ2およびSELQ3は、「00」および「01」に設定する。選択信号SELP4,SELP5は「0」に設定する。選択信号SELP6,SELP7は、「1」に設定する。
選択信号SELQ2は、「00」であるためセレクタ203−1は、入力サーチデータKey0を出力信号Xとして出力する。また、選択信号SELQ3は、「01」であるためセレクタ203−1は、入力サーチデータKey1を出力信号Yとして出力する。
セレクタSL4,SL5は、選択信号SELP4,SELP5(「0」)に従って出力信号Xである入力サーチデータKey0を選択して検索ブロック200−4,200−5に出力する。
セレクタSL6,SL7は、選択信号SELP6,SELP7(「1」)に従って出力信号Yである入力サーチデータKey1を選択して検索ブロック200−6,200−7に出力する。
検索ユニット102−2について選択信号SELQ4およびSELQ5は、「01」および「10」に設定する。選択信号SELP8,SELP9,SELP10は「0」に設定する。選択信号SELP11は、「1」に設定する。
選択信号SELQ4は、「01」であるためセレクタ203−2は、入力サーチデータKey1を出力信号Xとして出力する。また、選択信号SELQ5は、「10」であるためセレクタ203−2は、入力サーチデータKey2を出力信号Yとして出力する。
セレクタSL8,SL9,SL10は、選択信号SELP8,SELP9,SEL10(「0」)に従って出力信号Xである入力サーチデータKey1を選択して検索ブロック200−8,200−9,200−10に出力する。
セレクタSL11は、選択信号SELP11(「1」)に従って出力信号Yである入力サーチデータKey2を選択して検索ブロック200−11に出力する。
検索ユニット102−3について選択信号SELQ6およびSELQ7は、「10」および「11」に設定する。選択信号SELP12,SELP13は「0」に設定する。選択信号SELP14,SELP15は、「1」に設定する。
選択信号SELQ6は、「10」であるためセレクタ203−3は、入力サーチデータKey2を出力信号Xとして出力する。また、選択信号SELQ7は、「11」であるためセレクタ203−3は、入力サーチデータKey3を出力信号Yとして出力する。
セレクタSL12,SL13は、選択信号SELP12,SELP13(「0」)に従って入力サーチデータKey2を出力信号Xとして選択して検索ブロック200−12,200−13に出力する。
セレクタSL14,SL15は、選択信号SELP14,SELP15(「1」)に従って入力サーチデータKey3を出力信号Yとして選択して検索ブロック200−14,200−15に出力する。
検索ユニット102−0の中段プライオリティエンコーダ300−0は、検索ブロック200−0〜200−3のそれぞれからのアドレス情報の入力を受ける。具体的には、選択信号SELP0〜SELP3の入力に従ってプライオリティエンコーダ300Aにそれぞれのアドレス情報が入力される。そして、優先度の高いアドレス情報が出力される。
検索ユニット102−1の中段プライオリティエンコーダ300−1は、検索ブロック200−4〜200−7のそれぞれからのアドレス情報の入力を受ける。具体的には、選択信号SELP4〜SELP7の入力に従ってプライオリティエンコーダ300A,300Bにそれぞれのアドレス情報が入力される。検索ブロック200−4,200−5のアドレス情報は、選択信号SELP4,SELP5(「0」)の入力に従ってプライオリティエンコーダ300Aに入力される。検索ブロック200−6,200−7のアドレス情報は、選択信号SELP6,SELP7(「1」)の入力に従ってプライオリティエンコーダ300Bに入力される。
検索ユニット102−2の中段プライオリティエンコーダ300−2は、検索ブロック200−8〜200−11のそれぞれからのアドレス情報の入力を受ける。具体的には、選択信号SELP8〜SELP11の入力に従ってプライオリティエンコーダ300A,300Bにそれぞれのアドレス情報が入力される。検索ブロック200−8,200−9,200−10のアドレス情報は、選択信号SELP8,SELP9,SELP10(「0」)の入力に従ってプライオリティエンコーダ300Aに入力される。検索ブロック200−11のアドレス情報は、選択信号SELP11(「1」)の入力に従ってプライオリティエンコーダ300Bに入力される。
検索ユニット102−3の中段プライオリティエンコーダ300−3は、検索ブロック200−12〜200−15のそれぞれからのアドレス情報の入力を受ける。具体的には、選択信号SELP12〜SELP15の入力に従ってプライオリティエンコーダ300A,300Bにそれぞれのアドレス情報が入力される。検索ブロック200−12,200−13のアドレス情報は、選択信号SELP12,SELP13(「0」)の入力に従ってプライオリティエンコーダ300Aに入力される。検索ブロック200−14,200−15のアドレス情報は、選択信号SELP14,SELP15(「1」)の入力に従ってプライオリティエンコーダ300Bに入力される。
検索ユニット301は、中段プライオリティエンコーダ300−0〜300−3のそれぞれからのアドレス情報の入力を受ける。
具体的には、選択信号SELQ0〜SELQ7の入力に従ってプライオリティエンコーダ301A〜301Dにそれぞれのアドレス情報が入力される。
検索ユニット102−0からのアドレス情報は、選択信号SELQ0,選択信号SELQ1が「00」に設定されるに従って、プライオリティエンコーダ301Aに入力される。
検索ユニット102−1からのアドレス情報は、選択信号SELQ2が「00」に設定されるに従ってプライオリティエンコーダ301Aに入力される。また、検索ユニット102−1からのアドレス情報は、選択信号SELQ3が「01」に設定されるに従って、プライオリティエンコーダ301Bに入力される。
検索ユニット102−2からのアドレス情報は、選択信号SELQ4が「01」に設定されるに従ってプライオリティエンコーダ301Bに入力される。また、検索ユニット102−2からのアドレス情報は、選択信号SELQ5が「10」に設定されるに従って、プライオリティエンコーダ301Cに入力される。
検索ユニット102−3からのアドレス情報は、選択信号SELQ6が「10」に設定されるに従ってプライオリティエンコーダ301Cに入力される。また、検索ユニット102−3からのアドレス情報は、選択信号SELQ7が「11」に設定されるに従って、プライオリティエンコーダ301Dに入力される。
プライオリティエンコーダ301A〜301Dは、入力されるアドレス情報に従って優先度の高いアドレス情報を出力する。
プライオリティエンコーダ301Aには、入力サーチデータKey0に対応するアドレス情報が入力される。また、プライオリティエンコーダ301Bには、入力サーチデータKey1に対応するアドレス情報が入力される。プライオリティエンコーダ301Cには、入力サーチデータKey2に対応するアドレス情報が入力される。プライオリティエンコーダ301Dには、入力サーチデータKey3に対応するアドレス情報が入力される。
当該方式により、複数の入力サーチデータKey0〜Key3が入力される検索メモリに対して入力サーチデータKey0〜Key3にそれぞれ対応するエントリデータを検索ブロック200に対して自由に割り当てることが可能である。
これによりデータバス幅を低減させて、消費電力も低減することが可能である。
4つの入力サーチデータに対して各々任意の検索ユニットに配分して検索する場合、従来の方式では、全ての検索ブロック200に4つのサーチ入力データを入力し、検索処理を実行していた。
4つの入力サーチデータに対して各々任意の検索ユニットに配分して検索する場合、従来の方式では、全ての検索ブロック200に4つのサーチ入力データを入力し、検索処理を実行していた。
そのため並列検索数がK個の検索キーを、検索ユニットに分配する場合には、データバス幅は、入力サーチデータのバス幅は、K倍のバス幅になる。
しかし、本実施形態1では入力サーチデータ毎に、対象となる検索ユニットを特定のグループに集約するように特定のルールにもとづいて割り当てることでグループごとに必要になる入力サーチデータは2個まで削減可能としている。
そのためK個の入力サーチデータからグループごとに2個の入力サーチデータを選択し、その後検索ユニットごとに選択した2個の入力サーチデータの中から最終的な入力サーチデータを選択するような階層構造のデータバスとする。
当該構成により、検索ユニット内のデータバス幅を入力サーチデータの2倍のデータバス幅まで削減可能となり、チップ面積と消費電流の削減が可能となる。
(実施形態2)
上記の実施形態1においては、所定の割当ルールに基づいて各入力サーチデータ毎の検索ユニットの検索ブロック数に従って、いずれの検索ユニットで各入力サーチデータの検索を実行するかが決定される。
上記の実施形態1においては、所定の割当ルールに基づいて各入力サーチデータ毎の検索ユニットの検索ブロック数に従って、いずれの検索ユニットで各入力サーチデータの検索を実行するかが決定される。
検索メモリに対して書き込みされるデータは、追加や削除などによって時間の経過とともに更新されるためブロック数も変化する。
図14は、検索メモリのデータ更新について説明する図である。
図14を参照して、ここでは、入力サーチデータKey0に対応するエントリデータが格納された検索ブロック200−3のデータが更新により削除された場合が示されている。
図14を参照して、ここでは、入力サーチデータKey0に対応するエントリデータが格納された検索ブロック200−3のデータが更新により削除された場合が示されている。
そして、新たに入力サーチデータKey1のエントリデータを格納する場合について説明する。
この場合、空きの検索ブロック200−3に入力サーチデータKey1のエントリデータを格納することが考えられる。
しかしながら、各検索ブロック200は、プライオリティエンコーダ(PE)で出力する際のアドレス情報(Hit-Index)を選択するときの判断基準となる優先順位をもっている。
一般的に、通常アドレスの小さいエントリデータが優先度が高くなるように設計されている。
したがって、各検索ブロック200の16個の優先度は、検索ブロック200を識別するために使用されるブロックアドレスの上位4ビットの小さい順に優先度が高くなるように設計されている。
検索ブロック200−1→200−2→200−3→200−4、・・・200−15の優先度に設計されている。
したがって、追加する入力サーチデータKey1のエントリデータが空きの検索ブロック200−3に格納された場合には、優先度が高くなる。しかしながら、当該追加する入力サーチデータKey1のエントリデータの優先度が低い場合には、検索ブロック200ごとの優先順位を守るために、図14に示すように検索ブロック200に格納されているエントリデータを移動させる必要が発生する。
そうすると、エントリデータの移動によりデータ更新に時間がかかるという可能性がある。
図15は、実施形態2に基づく検索メモリ8#の構成について説明する図である。
図15を参照して、検索メモリ8#は、複数の検索ユニット700−0〜700−3(以下総称して検索ユニット700とも称する)と、制御部601と、グローバルプライオリティエンコーダ(GPE)301とが設けられる。
図15を参照して、検索メモリ8#は、複数の検索ユニット700−0〜700−3(以下総称して検索ユニット700とも称する)と、制御部601と、グローバルプライオリティエンコーダ(GPE)301とが設けられる。
制御部601は、複数の入力サーチデータKey0〜Key3(以下、総称して入力サーチデータKeyとも称する)の入力をそれぞれ並列に受ける。
制御部601は、複数の入力サーチデータKey0〜Key3をそれぞれ各検索ユニット700にそれぞれ出力する。
制御部601は、選択信号SELPおよびSELQを各検索ユニット700にそれぞれ出力する。
制御部601は、書込制御部800を含む。
図16は、実施形態2に基づく検索ユニット700−0の構成について説明する図である。
図16は、実施形態2に基づく検索ユニット700−0の構成について説明する図である。
図16を参照して、各検索ユニット700は、複数の検索ブロック200を有する。
本例では、代表的に検索ユニット700−0について説明する。
本例では、代表的に検索ユニット700−0について説明する。
書込制御部800は、検索ブロック200およびレジスタ704にデータを書き込むための制御を実行する。
検索ユニット700−0は、4つのサブ検索ユニット701−0〜701−3(総称してサブ検索ユニット701とも称する)と、中段プライオリティエンコーダ300−0とを含む。各サブ検索ユニット701の構成については基本的に同じ構成であるので主にサブ検索ユニット701−0,701−2の構成について説明する。
サブ検索ユニット701−0は、検索ブロック200−0と、セレクタSL0と、レジスタ704−0(総称してレジスタ704とも称する)と、合成回路703−0(総称して合成回路703とも称する)とを含む。
サブ検索ユニット701−2は、検索ブロック200−2と、セレクタSL2と、レジスタ704−2と、合成回路703−2とを含む。
サブ検索ユニット701は、実施形態1で説明した検索ユニット102と比較して、レジスタ704と合成回路703とをさらに設けた点で異なる。その他の構成については同様であるのでその詳細な説明については繰り返さない。
レジスタ704は、対応する検索ブロック200のブロックアドレスを格納する。
合成回路703は、レジスタ704に格納されているブロックアドレスを上位ビットとし、検索ブロック200−0から出力されるアドレス情報(Hit-Index)を下位ビットとして合成して出力する。
合成回路703は、レジスタ704に格納されているブロックアドレスを上位ビットとし、検索ブロック200−0から出力されるアドレス情報(Hit-Index)を下位ビットとして合成して出力する。
中段プライオリティエンコーダ300−0の構成について説明する。
中段プライオリティエンコーダ300−0は、スイッチSW0〜SW3と、プライオリティエンコーダ300A,300Bとを含む。
中段プライオリティエンコーダ300−0は、スイッチSW0〜SW3と、プライオリティエンコーダ300A,300Bとを含む。
スイッチSW0〜SW3は、サブ検索ユニット701−0〜701−3にそれぞれ対応して設けられる。
スイッチSW0〜SW3は、サブ検索ユニット701−0〜701−3のそれぞれから出力されるアドレス情報(Hit-Index)を選択信号SELP0〜SELP3に従ってプライオリティエンコーダ300A,300Bのいずれか一方に出力する。
プライオリティエンコーダ300Aは、判定回路702−0,702−1,707とを含む。
判定回路702−0は、セレクタ705と、優先決定回路706とを含む。
優先決定回路706は、サブ検索ユニット701−0,701−2からそれぞれ入力されるアドレス情報(Hit-Index)に従って優先度の高い方を決定する。
優先決定回路706は、サブ検索ユニット701−0,701−2からそれぞれ入力されるアドレス情報(Hit-Index)に従って優先度の高い方を決定する。
セレクタ705は、優先決定回路706の決定結果に基づいて優先度の高いアドレス情報(Hit-Index)を出力する。
判定回路702−1も判定回路702−0と同様の構成である。
具体的には、サブ検索ユニット701−1,701−3からそれぞれ入力されるアドレス情報(Hit-Index)に従って優先度の高い方を決定し、優先度の高いアドレス情報(Hit-Index)を出力する。
具体的には、サブ検索ユニット701−1,701−3からそれぞれ入力されるアドレス情報(Hit-Index)に従って優先度の高い方を決定し、優先度の高いアドレス情報(Hit-Index)を出力する。
判定回路707も同様の構成であり、判定回路702−0と判定回路702−1とから入力されるアドレス情報(Hit-Index)を比較して、優先度の高いアドレス情報(Hit-Index)を出力する。
プライオリティエンコーダ300Bの構成についてもプライオリティエンコーダ300Aと同様の構成である。
実施形態2においては、レジスタ704に変更可能な論理ブロックアドレスを格納する。
図17は、実施形態2に基づく物理ブロックアドレスと論理ブロックアドレスとの関係について説明する図である。
図17を参照して、入力サーチデータKey0に対応するエントリデータに関して4個の検索ブロック200に割り当てる。また、入力サーチデータKey1に対応するエントリデータに関して4個の検索ブロック200に割り当てる。また、入力サーチデータKey2に対応するエントリデータに関して4個の検索ブロック200に割り当てる。また、入力サーチデータKey3に対応するエントリデータに関して4個の検索ブロック200に割り当てる。
実施形態2においては、各検索ブロック200に割り当てる際に論理ブロックアドレスを割り当てる。
本例の場合には、入力サーチデータKey0に対応するエントリデータとして割り当てる4個の検索ブロック200に対して論理ブロックアドレス「0000」、「0001」、「0010」、「0011」を割り当てる場合が示されている。
入力サーチデータKey1に対応するエントリデータとして割り当てる4個の検索ブロック200に対して論理ブロックアドレス「0100」、「0101」、「0110」、「0111」を割り当てる場合が示されている。
入力サーチデータKey2に対応するエントリデータとして割り当てる4個の検索ブロック200に対して論理ブロックアドレス「1000」、「1001」、「1010」、「1011」を割り当てる場合が示されている。
入力サーチデータKey3に対応するエントリデータとして割り当てる4個の検索ブロック200に対して論理ブロックアドレス「1100」、「1101」、「1110」、「1111」を割り当てる場合が示されている。
この場合、論理ブロックアドレスと物理ブロックアドレスとが一致している場合が示されている。
図18は、実施形態2に基づく物理ブロックアドレスと論理ブロックアドレスとの関係について説明する別の図である。
図18を参照して、ここでは、入力サーチデータKey0に対応するエントリデータを格納する検索ブロック200−3のデータが削除された場合が示されている。
具体的には、論理ブロックアドレス「0011」(物理ブロックアドレス「0011」)に対応する検索ブロック200−3のエントリデータが削除された場合が示されている。
そして、新たに入力サーチデータKey1に対応するエントリデータを割り当てる場合が示されている。
本例においては、入力サーチデータKey1に対応するエントリデータを格納している複数の検索ブロック200にそれぞれ対応する複数のレジスタ704の値を変更する。
具体的には、優先度の高い検索ブロック200に対応するレジスタ704について、優先度の高い論理ブロックアドレスを割り当てる。
一例として、物理ブロックアドレス「0100」の検索ブロック200のエントリデータの優先度が最も高く、その次に、物理ブロックアドレス「0101」の検索ブロック200のエントリデータの優先度が高い。さらに、その次に、物理ブロックアドレス「0110」の検索ブロック200のエントリデータの優先度が高く、その次に、物理ブロックアドレス「0111」の検索ブロック200のエントリデータの優先度が高いものとする。
そして、新たな入力サーチデータKey1に対応するエントリデータの優先度が最も低いものとする。
本例においては、最も優先度の高い検索ブロック200のレジスタ704に対して、優先度の高い論理ブロックアドレスを割り当てる。
物理ブロックアドレス「0100」に対応する検索ブロック200のレジスタ704に論理ブロックアドレス「0011」を格納する。
物理ブロックアドレス「0101」に対応する検索ブロック200のレジスタ704に論理ブロックアドレス「0100」を格納する。
物理ブロックアドレス「0110」に対応する検索ブロック200のレジスタ704に論理ブロックアドレス「0101」を格納する。
物理ブロックアドレス「0111」に対応する検索ブロック200のレジスタ704に論理ブロックアドレス「0110」を格納する。
そして、物理ブロックアドレス「0011」に対応する検索ブロック200のレジスタ704に論理ブロックアドレス「0111」を格納する。
上記で説明したようにレジスタ704に格納されている情報が出力されるアドレス情報のうちの上位ビットとして合成回路703で合成される。
したがって、アドレス情報(Hit-Index)の優先度としては、物理ブロックアドレス「0100」の検索ブロック200のエントリデータの優先度が最も高く、その次に、物理ブロックアドレス「0101」の検索ブロック200のエントリデータの優先度が高い。さらに、その次に、物理ブロックアドレス「0110」の検索ブロック200のエントリデータの優先度が高く、その次に、物理ブロックアドレス「0111」の検索ブロック200のエントリデータの優先度が高くなる。そして、新たな入力サーチデータKey1に対応するエントリデータの優先度が最も低くなる。
図19は、実施形態2に基づく検索メモリのデータ更新について説明する図である。
図19を参照して、ここでは、入力サーチデータKey0に対応するエントリデータが格納された検索ブロック200−3のデータが更新により削除され、そして、新たに入力サーチデータKey1のエントリデータを検索ブロック200−3に格納した場合が示されている。
図19を参照して、ここでは、入力サーチデータKey0に対応するエントリデータが格納された検索ブロック200−3のデータが更新により削除され、そして、新たに入力サーチデータKey1のエントリデータを検索ブロック200−3に格納した場合が示されている。
そして、上記で説明したように、検索ブロック200−3,200−4,200−5,200−6,200−7に対応するレジスタ704の値がそれぞれ更新されている。
上記の論理ブロックアドレスの更新に従って、検索ブロック200−4、200−5、200−6、200−7、200−3の順番に格納されるエントリデータの優先度が設定される。
したがって、各検索ブロック200−4、200−5、200−6、200−7に格納されているエントリデータを実際に移動させる必要はなく、レジスタ704に格納されている論理ブロックアドレスのみ変更すれば良い。すなわち、データ更新処理を短時間で実行することが可能である。
図20は、実施形態2に基づく制御部601に含まれている書込制御部800を説明する図である。
図20を参照して、書込制御部800は、外部からのコマンドCom、アドレスAddrおよびデータDataの入力を受けて、検索ブロック200に対する書込コマンドCAM−Wおよび書込データCAM−Dを出力する。また、レジスタ704に対する書込コマンドREG-Wおよび書込データREG-Dを出力する。
また、書込制御部800は、論理ブロックアドレスを物理ブロックアドレスに変換するアドレス変換テーブルを有している。
書込制御部800は、外部からのコマンドCom、アドレスAddrおよびデータDataの入力を受けてアドレス変換テーブルを用いてアドレス変換処理を実行する。
書込制御部800は、当該変換テーブルを用いて例えば、外部から入力されるアドレス情報について、上位ビットの論理ブロックアドレスを物理ブロックアドレスに変換して対象の検索ブロック200に対するアクセスを実行する。
書込制御部800は、アドレスAddrにより指定された検索ブロック200に対して書込コマンドCAM−Wに従ってエントリデータの書込処理を実行する。あるいは、指定された検索ブロック200のレジスタ704に対して書込コマンドREG−Wに従って論理ブロックアドレスの書込処理を実行する。
(変形例)
実施形態1および2においては、上記で説明した特定の割当ルールに従って検索ブロック200の割り当てを決定する処理を上位のシステムで実行することが可能である。
実施形態1および2においては、上記で説明した特定の割当ルールに従って検索ブロック200の割り当てを決定する処理を上位のシステムで実行することが可能である。
具体的には、図1で説明したCPU2で実行するようにしても良い。CPU2は、隣接する通信回路から転送制御回路4を介してエントリデータのグループの情報を収集し、これら情報に基づいて上記で説明した特定の割当ルールに従って検索ブロックの割り当てを決定する。
一方で、検索メモリ内で当該処理を実行するようにしても良い。
図21は、実施形態2の変形例に基づく書込制御部801の構成について説明する図である。
図21は、実施形態2の変形例に基づく書込制御部801の構成について説明する図である。
図21を参照して、書込制御部801は、CPU802を含む。
CPU802は、入力される入力サーチデータKey0〜Key3に対応するエントリデータが格納される検索ブロック200のそれぞれの個数に基づいて、上記の特定の割当ルールに従って検索ブロック200の割り当てを決定する処理を実行する。
CPU802は、入力される入力サーチデータKey0〜Key3に対応するエントリデータが格納される検索ブロック200のそれぞれの個数に基づいて、上記の特定の割当ルールに従って検索ブロック200の割り当てを決定する処理を実行する。
CPU802は、当該決定処理に基づいて入力サーチデータKey0〜Key3に対応するエントリデータが格納される検索ブロック200をそれぞれ割り当てるとともに、論理ブロックアドレスを設定する。そして、CPU802は、Key0〜Key3に対応するエントリデータが格納される検索ブロック200と論理ブロックアドレスとの対応関係を規定するアドレス設定テーブル820を作成する。
CPU802は、アドレス設定テーブル820に基づいて、設定した論理ブロックアドレスと物理ブロックアドレスとの対応関係を規定したアドレス変換テーブル810を作成する。
CPU802は、アドレス設定テーブル820で設定した論理ブロックアドレスを入力サーチデータKey0〜Key3に対応するエントリデータが格納される検索ブロック200のレジスタに格納する。
具体的には、書込制御部801のCPU802は、外部からのコマンドCom、アドレスAddrおよびデータDataの入力を受けて、検索ブロック200に対する書込コマンドCAM−Wおよび書込データCAM−Dを出力する。また、レジスタ704に対する書込コマンドREG-Wおよび書込データREG-Dを出力する。
また、書込制御部801のCPU802は、アドレス変換テーブル810を用いて例えば、外部から入力されるアドレス情報について、上位ビットの論理ブロックアドレスを物理ブロックアドレスに変換して対象の検索ブロック200に対するアクセスを実行する。
書込制御部801のCPU802は、アドレスAddrにより指定された検索ブロック200に対して書込コマンドCAM−Wに従ってエントリデータの書込処理を実行する。あるいは、指定された検索ブロック200のレジスタ704に対して書込コマンドREG−Wに従って論理ブロックアドレスの書込処理を実行する。
当該処理により、任意の検索ブロック200にエントリデータを格納するとともに検索ブロック200に対応して設けられるレジスタ704に格納される論理ブロックアドレスを任意の値に変更することにより検索ブロック200の優先度を調整することが可能である。
以上、本開示を実施形態に基づき具体的に説明したが、本開示は、実施形態に限定されるものではなく、その要旨を逸脱しない範囲で種々変更可能であることはいうまでもない。
1 通信機器、4 転送制御回路、6 汎用メモリ、8 検索メモリ、20 セルアレイ、21 書込ドライバ、22 サーチ線ドライバ、23 マッチアンプ部、24 制御論理回路、25 読出回路、101,601 制御部、102,301,700 検索ユニット、200 検索ブロック、300 中段プライオリティエンコーダ、701 サブ検索ユニット、702,707 判定回路、703 合成回路、704 レジスタ、706 優先決定回路、800,801 書込制御部。
Claims (7)
- 入力された検索データがメモリセルアレイに格納されたエントリデータに一致するか否かを検索し、一致するエントリデータに対応するアドレス情報を出力する検索メモリであって、
各々が並列に入力されるN個(N:2以上)の検索データの入力を受け付ける入力制御部と、
N個の検索ユニットと、
前記N個の検索ユニットにそれぞれ対応して設けられ、前記N個の検索データの中から2個の検索データを選択するN個の第1のセレクタとを備え、
各前記検索ユニットは、
複数の検索ブロックと、
前記複数の検索ブロックにそれぞれ対応して設けられ、対応する検索ユニットに対して設けられた前記第1のセレクタにより選択された2個の検索データのうちのいずれか一方の検索データを選択するためのM個の第2のセレクタとを含み、
前記N個の検索ユニットのうちの少なくとも1つの検索ユニットについて、前記N個の検索データにそれぞれ対応するN種類のエントリーデータのうちの2種類のエントリーデータが前記複数の検索ブロックにそれぞれ格納されるように割り当てられる、検索メモリ。 - 各前記検索ユニットは、前記複数の検索ブロックに対応して設けられ、各前記検索ブロックから出力される一致するエントリデータに対応するアドレス情報のうち優先度の高いアドレス情報を出力するための2個のアドレス情報出力回路をさらに含む、請求項1記載の検索メモリ。
- 前記N個の検索ユニットに対応して設けられ、各前記検索ユニットから出力されるアドレス情報のうちN個の検索データに対して優先度の高いN個のアドレス情報をそれぞれ出力するためのN個のアドレス情報決定回路をさらに備える、請求項2記載の検索メモリ。
- 前記検索ユニットに含まれる前記複数の検索ブロックの個数以上の検索ブロックに対して前記N種類のエントリーデータのうちの一部のエントリーデータを格納する場合に、所定のルールに従って前記N種類のエントリーデータを前記N個の検索ユニットの前記複数の検索ブロックにそれぞれ割り当てて格納する制御部をさらに備える、請求項1記載の検索メモリ。
- 前記アドレス情報は、前記複数の検索ブロックのうちの少なくとも1つを指定するためのブロックアドレスと、指定された検索ブロックにおけるエントリデータに対応するローカルアドレスとを含み、
各前記検索ユニットは、
前記複数の検索ブロックにそれぞれ対応して設けられ、割り当てられた検索ブロックのブロックアドレスを格納する複数のブロックレジスタと、
前記複数の検索ブロックにそれぞれ対応して設けられ、対応するブロックレジスタに格納されているブロックアドレスと、対応するローカルアドレスとに基づいて指定された検索ブロックにおける一致したエントリデータに対応する論理アドレスに変換する複数のアドレス変換部とを有する、請求項1記載の検索メモリ。 - 各前記アドレス変換部は、前記対応するブロックアドレスを上位ビットとし、前記対応するローカルアドレスを下位ビットとして合成した論理アドレスに変換する、請求項1記載の検索メモリ。
- 各前記検索ユニットに含まれる前記複数のブロックレジスタに格納される物理ブロックアドレスを論理ブロックアドレスに変更するアドレス変換テーブルをさらに備える、請求項6記載の検索メモリ。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2017251714A JP2019117677A (ja) | 2017-12-27 | 2017-12-27 | 検索メモリ |
US16/191,049 US10545878B2 (en) | 2017-12-27 | 2018-11-14 | Search memory |
CN201811615859.8A CN110047539B (zh) | 2017-12-27 | 2018-12-27 | 搜索存储器 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2017251714A JP2019117677A (ja) | 2017-12-27 | 2017-12-27 | 検索メモリ |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2019117677A true JP2019117677A (ja) | 2019-07-18 |
Family
ID=66951161
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2017251714A Pending JP2019117677A (ja) | 2017-12-27 | 2017-12-27 | 検索メモリ |
Country Status (3)
Country | Link |
---|---|
US (1) | US10545878B2 (ja) |
JP (1) | JP2019117677A (ja) |
CN (1) | CN110047539B (ja) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI789836B (zh) * | 2021-07-20 | 2023-01-11 | 旺宏電子股份有限公司 | 用於資料搜尋之記憶體裝置及資料搜尋方法 |
US11587611B2 (en) | 2021-07-20 | 2023-02-21 | Macronix International Co., Ltd. | Memory device with input circuit, output circuit for performing efficient data searching and comparing within large-sized memory array |
Family Cites Families (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6374326B1 (en) | 1999-10-25 | 2002-04-16 | Cisco Technology, Inc. | Multiple bank CAM architecture and method for performing concurrent lookup operations |
JP2004164395A (ja) * | 2002-11-14 | 2004-06-10 | Renesas Technology Corp | アドレス変換装置 |
JP2004309281A (ja) * | 2003-04-07 | 2004-11-04 | Sony Corp | 検査回路および検査方法 |
EP1471537B1 (en) * | 2003-04-25 | 2006-07-26 | Samsung Electronics Co., Ltd. | TCAM device and operating method |
JP4346975B2 (ja) * | 2003-06-27 | 2009-10-21 | 株式会社ルネサステクノロジ | 連想メモリ機能付き集積回路及び侵入検知装置 |
US20050050237A1 (en) * | 2003-08-28 | 2005-03-03 | Jeddeloh Joseph M. | Memory module and method having on-board data search capabilities and processor-based system using such memory modules |
CN1879176A (zh) * | 2003-11-12 | 2006-12-13 | 松下电器产业株式会社 | Cam电路及其输出方法 |
US7251707B1 (en) * | 2004-02-06 | 2007-07-31 | Netlogic Microsystems, Inc. | Content based content addressable memory block enabling using search key |
KR100735577B1 (ko) * | 2004-08-12 | 2007-07-04 | 삼성전자주식회사 | 무선 네트워크의 적응형 키검색장치 및 방법 |
JP4795740B2 (ja) * | 2005-07-19 | 2011-10-19 | 株式会社日立製作所 | 半導体装置 |
US7885090B1 (en) * | 2007-10-29 | 2011-02-08 | Marvell Israel (Misl) Ltd. | Method and apparatus for CAM with redundancy |
US9159420B1 (en) | 2011-08-16 | 2015-10-13 | Marvell Israel (M.I.S.L) Ltd. | Method and apparatus for content addressable memory parallel lookup |
US9419903B2 (en) * | 2012-11-08 | 2016-08-16 | Texas Instruments Incorporated | Structure for implementing openflow all group buckets using egress flow table entries |
CN103345937B (zh) * | 2013-06-18 | 2016-08-03 | 苏州雄立科技有限公司 | 一种在比较搜索芯片中支持多种查找模式的优先级编码方法 |
US20160358653A1 (en) * | 2015-06-08 | 2016-12-08 | Altera Corporation | Hardware programmable device with integrated search engine |
-
2017
- 2017-12-27 JP JP2017251714A patent/JP2019117677A/ja active Pending
-
2018
- 2018-11-14 US US16/191,049 patent/US10545878B2/en active Active
- 2018-12-27 CN CN201811615859.8A patent/CN110047539B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
US20190196979A1 (en) | 2019-06-27 |
CN110047539B (zh) | 2024-09-17 |
CN110047539A (zh) | 2019-07-23 |
US10545878B2 (en) | 2020-01-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6324087B1 (en) | Method and apparatus for partitioning a content addressable memory device | |
US6502163B1 (en) | Method and apparatus for ordering entries in a ternary content addressable memory | |
US6910097B1 (en) | Classless interdomain routing using binary content addressable memory | |
US7325091B2 (en) | Disabling defective blocks in a partitioned CAM device | |
US6687785B1 (en) | Method and apparatus for re-assigning priority in a partitioned content addressable memory device | |
US6134135A (en) | Mask arrangement for scalable CAM/RAM structures | |
US7188211B2 (en) | Block programmable priority encoder in a CAM | |
US10891337B2 (en) | Content addressable memory and semiconductor device | |
CN107644665B (zh) | 半导体设备 | |
JP3599273B2 (ja) | 内容参照可能メモリの改良 | |
CN110047539B (zh) | 搜索存储器 | |
US6867991B1 (en) | Content addressable memory devices with virtual partitioning and methods of operating the same | |
US6745280B2 (en) | Content addressable memories having entries stored therein with independently searchable weight fields and methods of operating same | |
US7251707B1 (en) | Content based content addressable memory block enabling using search key | |
US7219188B1 (en) | Segmented content addressable memory array and priority encoder | |
KR100565456B1 (ko) | 3원 cam 셀 | |
US10852972B2 (en) | Retrieval memory and retrieval system | |
JP4850403B2 (ja) | マグニチュード内容参照可能メモリ | |
JP6170718B2 (ja) | 検索システム | |
CN112970065A (zh) | 双重比较三态内容可寻址存储器 | |
JP4343377B2 (ja) | 連想メモリ | |
EP1290697B1 (en) | Partitioned content addressable memory device | |
JP2005063564A (ja) | ダイナミック連想記憶セル |