JP2019114311A - 検索メモリおよび検索システム - Google Patents

検索メモリおよび検索システム Download PDF

Info

Publication number
JP2019114311A
JP2019114311A JP2017246705A JP2017246705A JP2019114311A JP 2019114311 A JP2019114311 A JP 2019114311A JP 2017246705 A JP2017246705 A JP 2017246705A JP 2017246705 A JP2017246705 A JP 2017246705A JP 2019114311 A JP2019114311 A JP 2019114311A
Authority
JP
Japan
Prior art keywords
address
search
entry data
address information
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
Application number
JP2017246705A
Other languages
English (en)
Inventor
武夫 三木
Takeo Miki
武夫 三木
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.)
Renesas Electronics Corp
Original Assignee
Renesas Electronics Corp
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 Renesas Electronics Corp filed Critical Renesas Electronics Corp
Priority to JP2017246705A priority Critical patent/JP2019114311A/ja
Priority to US16/178,325 priority patent/US10852972B2/en
Priority to EP18206432.9A priority patent/EP3503110A1/en
Priority to CN201811505813.0A priority patent/CN110008381A/zh
Publication of JP2019114311A publication Critical patent/JP2019114311A/ja
Pending legal-status Critical Current

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/064Management of blocks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/903Querying
    • G06F16/90335Query processing
    • G06F16/90339Query processing by using parallel associative memories or content-addressable memories
    • 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/0604Improving or facilitating administration, e.g. storage management
    • 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/0673Single storage device
    • 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
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Databases & Information Systems (AREA)
  • Human Computer Interaction (AREA)
  • Computational Linguistics (AREA)
  • Data Mining & Analysis (AREA)
  • Static Random-Access Memory (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

【課題】アドレス情報を容易に管理すること可能な検索メモリを提供する。【解決手段】入力された検索データがメモリセルアレイに格納されたエントリデータに一致するか否かを検索し、一致するエントリデータに対応するアドレス情報を出力する検索メモリであって、複数の検索ブロックと、アドレス情報を出力する出力制御部とを備える。アドレス情報は、複数の検索ブロックのうちの少なくとも1つを指定するためのブロックアドレスと、指定された検索ブロックにおけるエントリデータに対応する論理アドレスとを含み、出力制御部は、エントリデータのサイズに基づくアドレス空間において、エントリデータに対応するアドレス情報が連続的になるように再設定されたアドレス情報を出力する。【選択図】図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)を出力する構成が設けられている。
また、近年、エントリデータ幅のサイズを調整(切り替え)可能なTCAM装置が登場しており、当該切り替えに従って、アドレス情報(Hit Index)をデータブロックサイズ毎に変換するテーブルをそれぞれ設ける方式が開示されている(特許文献1、特許文献2)。
米国特許第6934795号明細書 米国特許第7246198号明細書
一方で、TCAM装置から出力されるアドレス情報(Hit Index)は、エントリデータ幅のサイズの調整に従って不連続となる場合がある。
したがって、アドレス空間に空きが生じ、管理面においては改善の余地があった。
本開示は、上記の課題を解決するためになされたものであって、アドレス情報を容易に管理すること可能な検索メモリを提供する。
その他の課題と新規な特徴は、本明細書の記述および添付図面から明らかになるであろう。
ある局面に従う入力された検索データがメモリセルアレイに格納されたエントリデータに一致するか否かを検索し、一致するエントリデータに対応するアドレス情報を出力する検索メモリであって、複数の検索ブロックと、アドレス情報を出力する出力制御部とを備える。アドレス情報は、前記複数の検索ブロックのうちの少なくとも1つを指定するためのブロックアドレスと、指定された検索ブロックにおけるエントリデータに対応する論理アドレスとを含む。出力制御部は、前記エントリデータのサイズに基づくアドレス空間において、前記エントリデータに対応するアドレス情報が連続的になるように再設定されたアドレス情報を出力する。
一実施例によれば、本開示の検索メモリは、アドレス情報を容易に管理することが可能である。
実施形態1に基づく通信機器1の構成を説明する図である。 TCAMセルの構成の一例を示す回路図である。 図2のXセルおよびYセルの記憶内容とTCAMデータとの対応関係を表形式で示す図である。 実施形態1に基づく検索メモリ8に含まれるセグメント(サブブロック)12の構成を説明する図である。 実施形態1に基づく検索メモリ8に含まれる複数のセグメント(サブブロック)12の構成を説明する図である。 比較例として説明する複数のセグメント12のアドレス情報について説明する図である。 比較例として説明する4個のセグメント12のアドレス空間について説明する図である。 実施形態1に基づく変換回路17のビットシフト量について説明する図である。 実施形態1に基づくアドレス情報について説明する図である。 実施形態1に基づく複数のセグメント12のアドレス空間について説明する図である。 比較例として説明する複数のセグメント12の別のアドレス情報について説明する図である。 実施形態2に基づく通信機器1#の構成の一部を説明する図である。 実施形態2に基づく検索ユニット81〜84にそれぞれ含まれる複数のセグメント(サブブロック)12の構成を説明する図である。 実施形態2に基づく検索メモリ8を管理する管理テーブルの構成を説明する図である。 実施形態2に基づく論理ブロックアドレスの設定について説明する図である。 実施形態3に基づく検索ユニット81〜84にそれぞれ含まれる複数のセグメント(サブブロック)12の構成を説明する図である。 実施形態3の変形例に基づく検索ユニット81〜84にそれぞれ含まれる複数のセグメント(サブブロック)12の構成を説明する図である。 実施形態4に基づく検索システムについて説明する図である。 実施形態4に基づく検索メモリ8A,8Bの構成を説明する図である。 実施形態4に基づく検索メモリ8C,8Dの構成を説明する図である。
実施形態について図面を参照しながら詳細に説明する。なお、図中同一または相当部分には同一符号を付し、その説明は繰り返さない。
(実施形態1)
<通信機器1の全体構成>
図1は、実施形態1に基づく通信機器1の構成を説明する図である。
図1に示されるように、通信機器1は、スイッチあるいはルータ等の通信装置である。
通信機器1は、CPU(Central Processing Unit)2と、転送制御回路4と、汎用メモリ6と、検索メモリ8とを含む。
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セルの構成の一例を示す回路図である。
図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は、図6の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に含まれるセグメント(サブブロック)12の構成を説明する図である。
図4に示されるように、セグメント12は、TCAMセルアレイ20(単にセルアレイとも称する)と、書込ドライバ21と、サーチ線ドライバ22と、マッチアンプ部23と、制御論理回路24と、読出回路25とを含む。
セグメント12は、図示していないがワード線WLX,WLYを駆動するためのワード線ドライバ(不図示)と、制御信号やアドレス信号等の入力を受ける入出力回路(不図示)とを含む。
TCAMセルアレイ20は、行列状(m行;k列)に配列されたTCAMセルを含む。本例においては、セルアレイ20は、行数(エントリ数)mがNであり、列数(ビット数)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(N−1)まで)と、図示しないm本のXセル用のワード線(WLX0〜WLX(N−1)まで)と、図示しないm本のYセル用のワード線(WLY0〜WLY(N−1)まで)とが設けられている。
書込ドライバ21は、書込時に、ビット線対BL,/BLを介して各TCAMセルに書込データを供給する。サーチ線ドライバ22は、検索時に、サーチ線対SL,/SLを介して各TCAMセルにサーチデータを供給する。
制御論理回路24は、セグメント12全体の動作を制御する。たとえば、制御論理回路24は、検索時には、サーチコマンドを受け取り、サーチ線ドライバ22と、マッチアンプ部23に制御信号を出力することによって、サーチ線ドライバ22、マッチアンプ部23、およびプリチャージ回路の動作を制御する。制御論理回路24は、読出時には読出コマンドを受け取り、読出回路25を制御する制御信号を出力する。これによりセルアレイ20に格納されているエントリデータを読み出して出力することが可能である。
マッチアンプ部23は、セルアレイの行にそれぞれ対応する複数のマッチアンプMAを含む。マッチアンプMAは、検索時に、対応するマッチ線MLの電位に基づいて、対応するTCAMセルデータと入力サーチデータの対応部分とが一致するか否かを検出する。この実施形態では、マッチアンプMAは、検索時に対応するマッチ線MLをプリチャージするためのプリチャージ回路を含む。
図5は、実施形態1に基づく検索メモリ8に含まれる複数のセグメント(サブブロック)12の構成を説明する図である。
図5を参照して、複数のセグメント12−0〜12−(N−1)と、複数のプライオリティエンコーダ(PE)15−0〜15−(N−1)と、複数のレジスタ16−0〜16−(N−1)と、複数の変換回路17−0〜17−(N−1)と、グローバルプライオリティエンコーダ(GPE)18とが設けられる。
セグメント12−0〜12−(N−1)の各々の構成は、図4で説明したセグメント12の構成と同様である。総称してセグメント12とも称する。
また、実施形態1において各セグメント12は、エントリデータのサイズを調整可能に設けられている。また、複数のレジスタ16−0〜16−(N−1)を総称してレジスタ16とも称する。また、複数の変換回路17−0〜17−(N−1)を総称して変換回路17とも称する。
具体的には、一例としてエントリデータのサイズ(DBW)として80ビット、160ビット、320ビット、640ビットに調整可能に設けられている。
例えば、セグメント12の1行のビット幅が80ビットとして設けられている場合には、160ビットの場合には2行を用いて1つのエントリデータを格納することが可能である。320ビットの場合には、4行を用いて1つのエントリデータを格納することが可能である。640ビットの場合には8行を用いて1つのエントリデータを格納することが可能である。
したがって、割り当てられるアドレスの個数が変化する。たとえば、160ビットの場合には2行を用いて1つのエントリデータを格納するためアドレスの個数は80ビットの場合と比較して1/2になる。320ビットの場合には4行を用いて1つのエントリデータを格納するためにアドレスの個数は80ビットの場合と比較して1/4になる。640ビットの場合には8行を用いて1つのエントリデータを格納するためにアドレスの個数は80ビットの場合と比較して1/8になる。
各プライオリティエンコーダ15は、マッチアンプMAからの入力をアドレスデータに変換し、最終的な出力を生成する。具体的には、優先度の高いアドレスデータを出力する。
各レジスタ16は、対応するセグメントのブロックアドレスを格納するとともに、対応するセグメントのエントリデータのサイズに関するサイズ情報を格納する。
これらの情報は、本検索メモリ8のユーザーによって設定される。
各変換回路17は、プライオリティエンコーダ15から出力されるアドレスデータと、レジスタ16から入力されるブロックアドレスと、サイズ情報とに基づいてアドレス情報(Hit Index)を再設定する。
グローバルプライオリティエンコーダ18は、複数の変換回路17−0〜17−(N−1)の出力を受けて優先度の高いアドレス情報を最終的に出力する。
図6は、比較例として説明する複数のセグメント12のアドレス情報について説明する図である。
図6を参照して、一例として本例においては21ビットのアドレス空間が設定されている場合について説明する。
21ビットのアドレス空間のうち上位の9ビットはブロックアドレスBAとして割り当てられる。また、下位の12ビットはローカルアドレスLAとして割り当てられる。ブロックアドレスBAはレジスタ16に設定されたブロックアドレスに基づくものであり、ローカルアドレスLAはプライオリティエンコーダ15から出力されるアドレスデータである。
例えば、エントリデータのサイズとして80ビット(DBW80)が設定される場合には、セグメント12に格納される4096個のエントリデータのそれぞれに対応してローカルアドレスLA[11:0]がそれぞれ割り当てられる。
また、512個のセグメント12−0〜12−511のそれぞれに対応してブロックアドレスBA[8:0]がそれぞれ割り当てられている。
次に、エントリデータのサイズとして160ビット(DBW160)が設定される場合には、セグメント12に格納される2048個のエントリデータのそれぞれに対応してローカルアドレスLA[10:0]がそれぞれ割り当てられる。この場合、プライオリティエンコーダ15は、ローカルアドレスLA[10:0]に固定値の12ビット目を加えた12ビットからなるアドレスデータを出力する。
次に、エントリデータのサイズとして320ビット(DBW320)が設定される場合には、セグメント12に格納される1024個のエントリデータのそれぞれに対応してローカルアドレスLA[9:0]がそれぞれ割り当てられる。この場合、プライオリティエンコーダ15は、ローカルアドレスLA[9:0]に固定値の11ビット目、12ビット目を加えた12ビットからなるアドレスデータを出力する。
次に、エントリデータのサイズとして640ビット(DBW640)が設定される場合には、セグメント12に格納される512個のエントリデータのそれぞれに対応してローカルアドレスLA[8:0]がそれぞれ割り当てられる。この場合、プライオリティエンコーダ15は、上記同様に、ローカルアドレスLA[8:0]に固定値の10〜12ビット目を加えた12ビットからなるアドレスデータを出力する。
上述のように、図6に示される比較例において、プライオリティエンコーダ15は、レジスタ16に設定されたサイズ情報に基づき、ローカルアドレスをビットシフトさせたアドレスデータを出力する。
図7は、比較例として説明する4個のセグメント12のアドレス空間について説明する図である。
図7(A)を参照して、エントリデータのサイズとアドレス情報(Hit Index)との関係について説明する図である。
例えば、4個のセグメント12に対してブロック番号Blk#0〜Blk#3が設けられている場合について説明する。
この場合、ブロック番号Blk#0のブロックアドレスBA[8:0]は、10進数標記で「0」とする。ブロック番号Blk#1のブロックアドレスBA[8:0]は、10進数標記で「1」とする。ブロック番号Blk#2のブロックアドレスBA[8:0]は、10進数標記で「2」とする。ブロック番号Blk#3のブロックアドレスBA[8:0]は、10進数標記で「3」とする。
エントリデータのサイズとして80ビット(DBW80)が設定される場合に、ブロック(Blk#0)に対応するエントリデータ4096個に対してアドレス情報(Hit Index)は、ローカルアドレスLA[11:0]によって、10進数標記で「0〜4095」にそれぞれ割り当てられる。
また、ブロック(Blk#1)に対応するエントリデータ4096個に対してアドレス情報(Hit Index)は、10進数標記で「4096〜8191」にそれぞれ割り当てられる。
また、ブロック(Blk#2)に対応するエントリデータ4096個に対してアドレス情報(Hit Index)は、10進数標記で「8192〜12287」にそれぞれ割り当てられる。
また、ブロック(Blk#3)に対応するエントリデータ4096個に対してアドレス情報(Hit Index)は、10進数標記で「12288〜16383」にそれぞれ割り当てられる。
エントリデータのサイズとして160ビット(DBW160)が設定される場合に、ブロック(Blk#0)に対応するエントリデータ2048個に対してアドレス情報(Hit Index)は、ローカルアドレスLA[10:0]によって、10進数標記で「0〜2047」にそれぞれ割り当てられる。
また、ブロック(Blk#1)に対応するエントリデータ2048個に対してアドレス情報(Hit Index)は、10進数標記で「4096〜6143」にそれぞれ割り当てられる。
また、ブロック(Blk#2)に対応するエントリデータ2048個に対してアドレス情報(Hit Index)は、10進数標記で「8192〜10239」にそれぞれ割り当てられる。
また、ブロック(Blk#3)に対応するエントリデータ2048個に対してアドレス情報(Hit Index)は、10進数標記で「12288〜14335」にそれぞれ割り当てられる。
エントリデータのサイズとして320ビット(DBW320)に設定される場合に、ブロック(Blk#0)に対応するエントリデータ1024個に対してアドレス情報(Hit Index)は、ローカルアドレスLA[9:0]によって、10進数標記で「0〜1023」にそれぞれ割り当てられる。
また、ブロック(Blk#1)に対応するエントリデータ1024個に対してアドレス情報(Hit Index)は、10進数標記で「4096〜5119」にそれぞれ割り当てられる。
また、ブロック(Blk#2)に対応するエントリデータ1024個に対してアドレス情報(Hit Index)は、10進数標記で「8192〜9215」にそれぞれ割り当てられる。がそれぞれ出力される。
また、ブロック(Blk#3)に対応するエントリデータ1024個に対してアドレス情報(Hit Index)は、10進数標記で「12288〜13311」にそれぞれ割り当てられる。
エントリデータのサイズとして640ビット(DBW640)に設定される場合に、ブロック(Blk#0)に対応するエントリデータ512個に対してアドレス情報(Hit Index)は、ローカルアドレスLA[8:0]によって、10進数標記で「0〜511」にそれぞれ割り当てられる。
また、ブロック(Blk#1)に対応するエントリデータ512個に対してアドレス情報(Hit Index)は、10進数標記で「4096〜4607」にそれぞれ割り当てられる。
また、ブロック(Blk#2)に対応するエントリデータ512個に対してアドレス情報(Hit Index)は、10進数標記で「8192〜8703」にそれぞれ割り当てられる。
また、ブロック(Blk#3)に対応するエントリデータ512個に対してアドレス情報(Hit Index)は、10進数標記で「12288〜12799」にそれぞれ割り当てられる。
図7(B)は、比較例としてアドレス情報(Hit Index)とエントリデータ幅との関係を説明する図である。
図7(B)に示されるように、エントリデータのサイズとして80ビット(DBW80)に設定されている場合には、ブロックアドレスとローカルアドレスとからなるアドレス情報(Hit Index)のアドレス空間は、各ブロック間において連続している。
一方、エントリデータのサイズとして160ビット(DBW160)、320ビット(DBW320)、640ビット(DBW640)に設定される場合には、各ブロック間におけるアドレス空間は非連続であり、隙間(空き領域)が存在することになる。それゆえ、アドレスの管理として複雑な管理が必要であった。
実施形態1に従う方式においては、各ブロック間における空き領域を無くす方式について説明する。
具体的には、図6に示されるようにエントリデータのサイズとして160ビット(DBW160)が設定される場合には、下位の12ビットのうちローカルアドレスLA[10:0]はアドレスデータとして用いられるが、12ビット目であるローカルアドレスLA[11]は用いられず固定値のため、1ビットのブランク領域が生じる。
また、エントリデータのサイズとして320ビット(DBW320)が設定される場合には、下位の12ビットのうちローカルアドレスLA[9:0]はアドレスデータとして用いられるが、11、12ビット目であるローカルアドレスLA[11],LA[10]は用いられず固定値のため、2ビットのブランク領域が生じる。
また、エントリデータのサイズとして640ビット(DBW640)が設定される場合には、下位の12ビットのうちローカルアドレスLA[8:0]はアドレスデータとして用いられるが、10、11、12ビット目であるローカルアドレスLA[11],LA[10],LA[9]は用いられず固定値のため、3ビットのブランク領域が生じる。
したがって、実施形態1に従う方式においては、変換回路17は、エントリデータのサイズに従ってビットシフトを行う。
図8は、実施形態1に基づく変換回路17のビットシフト量について説明する図である。
図8を参照して、変換回路17は、エントリデータのサイズとして80ビット(DBW80)が設定される場合には、ビットシフトは行なわない。
変換回路17は、エントリデータのサイズとして160ビット(DBW160)が設定される場合には、ビットシフトとして1ビットシフトを行う。
変換回路17は、エントリデータのサイズとして320ビット(DBW320)が設定される場合には、ビットシフトとして2ビットシフトを行う。
変換回路17は、エントリデータのサイズとして640ビット(DBW640)が設定される場合には、ビットシフトとして3ビットシフトを行う。
上述のように、変換回路17はエントリデータのサイズに応じて生じるブランク領域に相当する分だけビットシフトを行う。
図9は、実施形態1に基づくアドレス情報について説明する図である。
図9を参照して、変換回路17は、サイズ情報に従ってレジスタ16から入力されるブロックアドレスBAと、プライオリティエンコーダ15から出力されるローカルアドレスLAとを組み合わせてアドレス情報(Hit Index)として再設定する。この場合、エントリデータのサイズとして80ビット(DBW80)が設定される場合には、ビットシフトさせずにそのまま組み合わせてアドレス情報(Hit Index)として出力する。
変換回路17は、エントリデータのサイズとして160ビット(DBW160)が設定される場合には、ブロックアドレスBAをビットシフトとして1ビットシフトさせたものとプライオリティエンコーダ15から出力される12ビットのアドレスデータのうちローカルアドレスLA[10:0]とを組み合わせてアドレス情報(Hit Index)として出力する。
変換回路17は、エントリデータのサイズとして320ビット(DBW320)が設定される場合には、ブロックアドレスBAをビットシフトとして2ビットシフトさせたものとプライオリティエンコーダ15から出力される12ビットのアドレスデータのうちローカルアドレスLA[9:0]とを組み合わせてアドレス情報(Hit Index)として出力する。
変換回路17は、エントリデータのサイズとして640ビット(DBW640)が設定される場合には、ブロックアドレスBAをビットシフトとして3ビットシフトさせたものと、プライオリティエンコーダ15から出力される12ビットのアドレスデータのうちローカルアドレスLA[8:0]とを組み合わせてアドレス情報(Hit Index)として出力する。
すなわち、エントリデータのサイズに応じてブロックアドレスBAをビットシフトさせることで、ブロックアドレスBAとローカルアドレスLAからなるアドレス情報(Hit Index)を連続するアドレス空間として扱うことが可能になる。
図10は、実施形態1に基づく複数のセグメント12のアドレス空間について説明する図である。
図10(A)を参照して、エントリデータのサイズとアドレス情報(Hit Index)との関係について説明する図である。
例えば、4個のセグメント12に対してブロック番号Blk#0〜Blk#3が設けられている場合について説明する。
この場合、ブロック番号Blk#0のブロックアドレスBA[8:0]は、10進数標記で「0」とする。ブロック番号Blk#1のブロックアドレスBA[8:0]は、10進数標記で「1」とする。ブロック番号Blk#2のブロックアドレスBA[8:0]は、10進数標記で「2」とする。ブロック番号Blk#3のブロックアドレスBA[8:0]は、10進数標記で「3」とする。
エントリデータのサイズとして80ビット(DBW80)が設定される場合に、ブロック(Blk#0)に対応するエントリデータ4096個に対してアドレス情報(Hit Index)は、10進数標記で「0〜4095」にそれぞれ割り当てられる。
また、ブロック(Blk#1)に対応するエントリデータ4096個に対してアドレス情報(Hit Index)は、10進数標記で「4096〜8191」にそれぞれ割り当てられる。
また、ブロック(Blk#2)に対応するエントリデータ4096個に対してアドレス情報(Hit Index)は、10進数標記で「8192〜12287」にそれぞれ割り当てられる。
また、ブロック(Blk#3)に対応するエントリデータ4096個に対してアドレス情報(Hit Index)は、10進数標記で「12288〜16383」にそれぞれ割り当てられる。
エントリデータのサイズとして160ビット(DBW160)が設定される場合に、ブロック(Blk#0)に対応するエントリデータ2048個に対してアドレス情報(Hit Index)は、10進数標記で「0〜2047」にそれぞれ割り当てられる。
また、ブロック(Blk#1)に対応するエントリデータ2048個に対してアドレス情報(Hit Index)は、10進数標記で「2048〜4095」にそれぞれ割り当てられる。
また、ブロック(Blk#2)に対応するエントリデータ2048個に対してアドレス情報(Hit Index)は、10進数標記で「4096〜6143」にそれぞれ割り当てられる。
また、ブロック(Blk#3)に対応するエントリデータ2048個に対してアドレス情報(Hit Index)は、10進数標記で「6144〜8191」にそれぞれ割り当てられる。
エントリデータのサイズとして320ビット(DBW320)が設定される場合に、ブロック(Blk#0)に対応するエントリデータ1024個に対してアドレス情報(Hit Index)は、10進数標記で「0〜1023」にそれぞれ割り当てられる。
また、ブロック(Blk#1)に対応するエントリデータ1024個に対してアドレス情報(Hit Index)は、10進数標記で「1024〜2047」にそれぞれ割り当てられる。
また、ブロック(Blk#2)に対応するエントリデータ1024個に対してアドレス情報(Hit Index)は、10進数標記で「2048〜3071」にそれぞれ割り当てられる。
また、ブロック(Blk#3)に対応するエントリデータ1024個に対してアドレス情報(Hit Index)は、10進数標記で「3072〜4095」にそれぞれ割り当てられる。
エントリデータのサイズとして640ビット(DBW640)が設定される場合に、ブロック(Blk#0)に対応するエントリデータ512個に対してアドレス情報(Hit Index)は、10進数標記で「0〜511」にそれぞれ割り当てられる。
また、ブロック(Blk#1)に対応するエントリデータ512個に対してアドレス情報(Hit Index)は、10進数標記で「512〜1023」にそれぞれ割り当てられる。
また、ブロック(Blk#2)に対応するエントリデータ512個に対してアドレス情報(Hit Index)は、10進数標記で「1024〜1535」にそれぞれ割り当てられる。
また、ブロック(Blk#3)に対応するエントリデータ512個に対してアドレス情報(Hit Index)は、10進数標記で「1536〜2047」がそれぞれ割り当てられる。
図10(B)は、実施形態1に基づくアドレス情報(Hit Index)とエントリデータ幅との関係を説明する図である。
図10(B)に示されるように、エントリデータのサイズとして80ビット(DBW80)に設定されている場合には、各ブロック間におけるアドレス空間は連続している。
また、エントリデータのサイズとして160ビット(DBW160)、320ビット(DBW320)、640ビット(DBW640)に設定される場合においても、各ブロック間における隙間(空き領域)は無くなり、アドレス空間は連続している。
したがって、各変換回路17は、エントリデータのサイズに基づくアドレス空間において、エントリデータに対応するアドレス情報が連続的になるように再設定されたアドレス情報を出力する。
各変換回路17は、エントリデータのサイズが2N倍(N:自然数)に設定された場合に、最大ビット長−Nビットのアドレス空間において、エントリデータに対応するアドレス情報が連続的になるように再設定されたアドレス情報を出力する。
各変換回路17は、エントリデータのサイズに応じてブロックアドレスをNビットシフトさせるシフト演算処理を実行する。
実施形態1に基づく方式によりアドレス情報は連続しているため検索メモリを管理する管理側の負荷を軽減することが可能である。
次に、プライオリティエンコーダPEの出力方式が異なる場合について説明する。
図11は、比較例として説明する複数のセグメント12の別のアドレス情報について説明する図である。
図11を参照して、一例として本例においては21ビットのアドレス空間が設定されている場合について説明する。
21ビットのアドレス空間のうち上位の9ビットはブロックアドレスBAとして割り当てられる。また、下位の12ビットはローカルアドレスLAとして割り当てられる。
例えば、エントリデータのサイズとして80ビット(DBW80)が設定される場合には、セグメント12に格納される4096個のエントリデータのそれぞれに対応してローカルアドレスLA[11:0]がそれぞれ割り当てられ、出力される。
また、512個のセグメント12−0〜12−511のそれぞれに対応してブロックアドレスBA[8:0]がそれぞれ割り当てられている。
次に、エントリデータのサイズとして160ビット(DBW160)が設定される場合には、セグメント12に格納される2048個のエントリデータのそれぞれに対応してローカルアドレスLA[11:1]がそれぞれ割り当てられ、0ビット目、すなわちローカルアドレスLA[0]を固定値としたローカルアドレスLA[11:0]がプライオリティエンコーダ15から出力される。
次に、エントリデータのサイズとして320ビット(DBW320)が設定される場合には、セグメント12に格納される1024個のエントリデータのそれぞれに対応してローカルアドレスLA[11:2]がそれぞれ割り当てられる。0,1ビット目、すなわちローカルアドレスLA[0],LA[1]を固定値としたローカルアドレスLA[11:0]がプライオリティエンコーダ15から出力される。
次に、エントリデータのサイズとして640ビット(DBW640)が設定される場合には、セグメント12に格納される512個のエントリデータのそれぞれに対応してローカルアドレスLA[11:3]がそれぞれ割り当てられる。0,1,2ビット目、すなわちローカルアドレスLA[0],LA[1],LA[2]を固定値としたローカルアドレスLA[11:0]がプライオリティエンコーダ15から出力される。
当該構成において、エントリデータのサイズとして80ビット(DBW80)に設定されている場合には、各ブロック間におけるアドレス空間は連続している。
一方、エントリデータのサイズとして160ビット(DBW160)、320ビット(DBW320)、640ビット(DBW640)に設定される場合には、各ブロック間におけるアドレス空間は非連続であり、隙間(空き領域)が存在することになる。
したがって、当該構成においても変換回路17は、エントリデータのサイズに従って、ブロックアドレスBAとローカルアドレスLAとを組み合わせてアドレス情報(Hit Index)として出力する。
具体的には、変換回路17は、エントリデータのサイズとして160ビット(DBW160)が設定される場合には、ブロックアドレスBAとローカルアドレスLAとを組み合わせたデータを1ビットシフトさせて、アドレス情報(Hit Index)として出力する。
変換回路17は、エントリデータのサイズとして320ビット(DBW320)が設定される場合には、ブロックアドレスBAとローカルアドレスLAとを組み合わせたデータを2ビットシフトさせて、アドレス情報(Hit Index)として出力する。
変換回路17は、エントリデータのサイズとして640ビット(DBW640)が設定される場合には、ブロックアドレスBAとローカルアドレスLAとを組み合わせたデータを3ビットシフトさせて、アドレス情報(Hit Index)として出力する。
これにより図9で説明したのと同様のアドレス情報となる。
各ブロック間における隙間(空き領域)は無くなり、アドレス空間は連続する。
実施形態1に基づく方式によりアドレス情報は連続しているため検索メモリを管理する管理側の負荷を軽減することが可能である。
(実施形態2)
図12は、実施形態2に基づく通信機器1#の構成の一部を説明する図である。
図12を参照して、検索メモリ8の代わりに検索メモリ8#を設けた点が異なる。
検索メモリ8#は、複数の検索ユニット81〜84を含む。
各検索ユニット81は、複数のセグメント12を含む。複数の検索ユニット81〜84は、それぞれエントリデータのサイズが異なっていてもよい。一例として検索ユニット81は、エントリデータのサイズ(DBW)として80ビットに設定される。検索ユニット82は、エントリデータのサイズ(DBW)として160ビットに設定される。検索ユニット83は、エントリデータのサイズ(DBW)として320ビットに設定される。検索ユニット84は、エントリデータのサイズ(DBW)として640ビットに設定される。
図13は、実施形態2に基づく検索ユニット81〜84にそれぞれ含まれる複数のセグメント(サブブロック)12の構成を説明する図である。
図13を参照して、複数のセグメント12−0〜12−(N−1)と、複数のプライオリティエンコーダ(PE)15−0〜15−(N−1)と、複数のレジスタ16#−0〜16#−(N−1)と、複数の変換回路17#−0〜17#−(N−1)と、グローバルプライオリティエンコーダ(GPE)18とが設けられる。
セグメント12−0〜12−(N−1)の各々の構成は、図4で説明したセグメント12の構成と同様である。
また、実施形態2において各セグメント12は、エントリデータのサイズを調整可能に設けられている。
具体的には、一例としてエントリデータのサイズ(DBW)として80ビット、160ビット、320ビット、640ビットに調整可能に設けられている。
各プライオリティエンコーダ15は、マッチアンプMAからの入力をアドレスデータに変換し、最終的な出力を生成する。具体的には、優先度の高いアドレスデータを出力する。
各レジスタ16#は、対応するセグメントの論理ブロックアドレスを格納するとともに、対応するセグメントのエントリデータのサイズに関するサイズ情報を格納する。
各変換回路17#は、プライオリティエンコーダ15から出力されるアドレスデータと、レジスタ16から入力される論理ブロックアドレスと、サイズ情報とに基づいてアドレス情報(Hit Index)を再設定する。
グローバルプライオリティエンコーダ18は、複数の変換回路17#−0〜17#−(N−1)の出力を受けて優先度の高いアドレス情報を最終的に出力する。
図14は、実施形態2に基づく検索メモリ8を管理する管理テーブルの構成を説明する図である。
図14を参照して、管理テーブルは、検索メモリよりも上位層、例えばシステムメモリに設けられており、検索メモリの各セグメントの物理ブロックアドレスと論理ブロックアドレスとの関係が規定されている。
本例においては、物理アドレスとして設定されているブロックアドレスをエントリデータサイズ毎の論理ブロックアドレスに変換して、管理する。
転送制御回路4は、初期設定時に、管理テーブルを参照して、物理ブロックアドレスによって指定されるセグメントに対応するレジスタに論理ブロックアドレスを設定する。
図15は、実施形態2に基づく論理ブロックアドレスの設定について説明する図である。
図15に示されるように、エントリデータのサイズ(DBW)に従って論理ブロックアドレスが設定される場合が示されている。
具体的には、エントリデータのサイズ(DBW)として80ビットに設定された最初のセグメント12の最初の論理ブロックアドレスは、「000」に設定される。
以降、エントリデータのサイズ毎に順番に論理ブロックアドレスが昇順的に設定される。
再び図14を参照して、エントリデータのサイズに従ってアドレス情報(Hit Index)を管理する。
本例においては、物理アドレスとしてブロック番号Blk#000のセグメント12に対して論理ブロックアドレスとして16進数標記で「000」を割り当て、エントリデータのサイズ(DBW)として80ビットに設定した場合が示されている。
この場合、ブロック番号Blk#000(論理ブロックアドレス「000」)に対応するエントリデータ4096個に対してアドレス情報(Hit Index)は、16進数標記で「00000−00FFF」にそれぞれ割り当てられることになる。
次に、物理アドレスとしてブロック番号Blk#001のセグメント12に対して論理ブロックアドレスとして16進数標記で「001」を割り当て、エントリデータのサイズ(DBW)として80ビットに設定した場合が示されている。
この場合、ブロック番号Blk#001(論理ブロックアドレス「001」)に対応する4096個に対してアドレス情報(Hit Index)は、16進数標記で「01000−01FFF」にそれぞれ割り当てられることになる。
次に、物理アドレスとしてブロック番号Blk#002のセグメント12に対して論理ブロックアドレスとして16進数標記で「002」を割り当て、エントリデータのサイズ(DBW)として80ビットに設定した場合が示されている。
この場合、ブロック番号Blk#002(論理ブロックアドレス「002」)に対応する4096個に対してアドレス情報(Hit Index)は、16進数標記で「02000−02FFF」にそれぞれ割り当てられることになる。
次に、物理アドレスとしてブロック番号Blk#003のセグメント12に対して論理ブロックアドレスとして16進数標記で「003」を割り当て、エントリデータのサイズ(DBW)として80ビットに設定した場合が示されている。
この場合、ブロック番号Blk#003(論理ブロックアドレス「003」)に対応する4096個に対してアドレス情報(Hit Index)は、16進数標記で「03000−03FFF」にそれぞれ割り当てられることになる。
この場合、各セグメント12に対応して設けられるレジスタ16には、初期設定時に、管理テーブルに基づいて論理ブロックアアドレスの値と、エントリデータのサイズに関する情報とが格納される。
変換回路17#は、レジスタ16#に格納されている情報と、プライオリティエンコーダ15から出力されるローカルアドレスLAとに基づいてアドレス情報(Hit Index)を出力する。すなわち、変換回路17#は、レジスタ16#に格納されている論理ブロックアドレスとプライオリティエンコーダ15から出力されるローカルアドレスLAとからなるアドレスデータを、実施形態1と同様の方式を用いて、連続したアドレス空間になるように変換する。
例えば、エントリデータのサイズ(DBW)が80ビットに設定される検索ユニット81に含まれるセグメント12とそれに対応するレジスタ16#および変換回路17#について説明する。
例えば、図13で説明したレジスタ16#−0には、論理ブロックアドレス「000」と、エントリデータのサイズ情報「DBW80」とが格納される。
変換回路17#−0は、レジスタ16#−0に格納されるエントリデータのサイズ情報「DBW80」に基づいて、レジスタ16#−0に格納される論理ブロックアドレス「000」と、プライオリティエンコーダ15−0から出力されるローカルアドレスからなるアドレスデータを再設定する。
その結果、変換回路17#−0は、アドレス情報(Hit Index)として割り当てられた「00000−00FFF」のうちの1つの値に変換したアドレス情報として出力する。
同様に、レジスタ16#−1〜16#−3には、論理ブロックアドレス「001」〜「003」と、エントリデータのサイズ情報「DBW80」とがそれぞれ格納される。
変換回路17#−1〜17#−3は、レジスタ16#−1〜16#−3にそれぞれ格納される論理ブロックアドレス「001」〜「003」と、エントリデータのサイズ情報「DBW80」とに基づいて、プライオリティエンコーダ15−1〜15−3からそれぞれ出力されるアドレスデータを再設定する。
変換回路17#−1は、プライオリティエンコーダ15−1から出力されるアドレスデータをアドレス情報(Hit Index)として割り当てられた「01000−01FFF」のうちの1つの値に変換したアドレス情報として出力する。
変換回路17#−2は、プライオリティエンコーダ15−2から出力されるアドレスデータをアドレス情報(Hit Index)として割り当てられた「02000−02FFF」のうちの1つの値に変換したアドレス情報として出力する。
変換回路17#−3は、プライオリティエンコーダ15−3から出力されるアドレスデータをアドレス情報(Hit Index)として割り当てられた「03000−03FFF」のうちの1つの値に変換したアドレス情報として出力する。
このように、各レジスタ#16に論理ブロックアドレスを設定することによって、物理ブロックアドレスに関わらず、検索ユニット81から出力されるアドレス情報(Hit Index)を、エントリデータのサイズに基づくアドレス空間において連続させることが可能である。
同様にして、エントリデータのサイズ(DBW)として160ビットに設定された最初のセグメント12の最初の論理ブロックアドレスは、「000」に設定される。
物理アドレスとしてブロック番号Blk#004のセグメント12に対して論理ブロックアドレスとして16進数標記で「000」を割り当て、エントリデータのサイズ(DBW)として160ビットに設定した場合が示されている。
この場合、ブロック番号Blk#004(論理ブロックアドレス「000」)に対応するエントリデータ2048個に対してアドレス情報(Hit Index)は、16進数標記で「00000−007FF」にそれぞれ割り当てられる。
次に、物理アドレスとしてブロック番号Blk#005のセグメント12に対して論理ブロックアドレスとして16進数標記で「001」を割り当て、エントリデータのサイズ(DBW)として160ビットに設定した場合が示されている。
この場合、ブロック番号Blk#005(論理ブロックアドレス「001」)に対応するエントリデータ2048個に対してアドレス情報(Hit Index)は、16進数標記で「00800−00FFF」にそれぞれ割り当てられる。
エントリデータのサイズ(DBW)として320ビットに設定された最初のセグメント12の最初の論理ブロックアドレスは、「000」に設定される。
物理アドレスとしてブロック番号Blk#006のセグメント12に対して論理ブロックアドレスとして16進数標記で「000」を割り当て、エントリデータのサイズ(DBW)として320ビットに設定した場合が示されている。
この場合、ブロック番号Blk#006(論理ブロックアドレス「000」)に対応するエントリデータ1024個に対してアドレス情報(Hit Index)は、16進数標記で「00000−003FF」にそれぞれ割り当てられる。
物理アドレスとしてブロック番号Blk#007のセグメント12に対して論理ブロックアドレスとして16進数標記で「001」を割り当て、エントリデータのサイズ(DBW)として320ビットに設定した場合が示されている。
この場合、ブロック番号Blk#007(論理ブロックアドレス「001」)に対応するエントリデータ1024個に対してアドレス情報(Hit Index)は、16進数標記で「00400−007FF」にそれぞれ割り当てられる。
物理アドレスとしてブロック番号Blk#008のセグメント12に対して論理ブロックアドレスとして16進数標記で「002」を割り当て、エントリデータのサイズ(DBW)として320ビットに設定した場合が示されている。
この場合、ブロック番号Blk#008(論理ブロックアドレス「002」)に対応するエントリデータ1024個に対してアドレス情報(Hit Index)は、16進数標記で「00800−00BFF」にそれぞれ割り当てられる。
物理アドレスとしてブロック番号Blk#009のセグメント12に対して論理ブロックアドレスとして16進数標記で「003」を割り当て、エントリデータのサイズ(DBW)として320ビットに設定した場合が示されている。
この場合、ブロック番号Blk#009(論理ブロックアドレス「003」)に対応するエントリデータ1024個に対してアドレス情報(Hit Index)は、16進数標記で「00C00−00FFF」に割り当てられる。
物理アドレスとしてブロック番号Blk#00Aのセグメント12に対して論理ブロックアドレスとして16進数標記で「000」を割り当て、エントリデータのサイズ(DBW)として640ビットに設定した場合が示されている。
この場合、ブロック番号Blk#00A(論理ブロックアドレス「000」)に対応するエントリデータ512個に対してアドレス情報(Hit Index)は、16進数標記で「00000−001FF」にそれぞれ割り当てられる。
物理アドレスとしてブロック番号Blk#00Bのセグメント12に対して論理ブロックアドレスとして16進数標記で「001」を割り当て、エントリデータのサイズ(DBW)として640ビットに設定した場合が示されている。
この場合、ブロック番号Blk#00B(論理ブロックアドレス「001」)に対応するエントリデータ512個に対してアドレス情報(Hit Index)は、16進数標記で「00200−003FF」にそれぞれ割り当てられる。
当該方式により、各検索ユニット81〜84から出力されるアドレス情報(Hit Index)は、エントリデータのサイズに基づくアドレス空間において連続している。具体的には、エントリデータのサイズ毎に、エントリデータに対応するアドレス情報が連続的になるように再設定されたアドレス情報が出力される。
したがって、実施形態2に基づく方式により、物理ブロックアドレスが連続していない場合であっても、アドレス情報における隙間(空き領域)は無くなり、アドレス情報は連続しているため検索メモリを管理する管理側の負荷を軽減することが可能である。
また、検索メモリの検索機能を拡張する場合にも当該方式は有利である。
例えば、エントリデータのサイズ(DBW)として160ビットのデータを追加する場合について考える。
本例においては、物理アドレスとしてブロック番号Blk#100のセグメント12をエントリデータのサイズが160ビットのセグメントとして追加設定する。追加設定されたセグメントの物理ブロックアドレス番号BLK#100は、すでにエントリデータのサイズとして160ビットが設定されたセグメントの物理ブロックアドレスBLK#005と連続していない。そのため、物理アドレスとしてブロック番号BLK#100のセグメント12に対して論理ブロックアドレスとして16進数標記で「002」を割り当て、エントリデータのサイズ(DBW)として160ビットに設定する。
この結果、ブロック番号Blk#100(論理ブロックアドレス「002」)に対応するエントリデータ2048個に対してアドレス情報(Hit Index)は、16進数標記で、物理ブロックアドレス番号BLK#005のセグメントから得られるアドレス情報(Hit Index)に続く「01000−017FF」にそれぞれ割り当てられる。
同様に、物理アドレスとしてブロック番号Blk#101のセグメント12に対して論理ブロックアドレスとして16進数標記で「003」を割り当て、エントリデータのサイズ(DBW)として160ビットに設定する。
この結果、ブロック番号Blk#101(論理ブロックアドレス「003」)に対応するエントリデータ2048個に対してアドレス情報(Hit Index)は、16進数標記で、物理ブロックアドレス番号BLK#100のセグメントから得られるアドレス情報(Hit Index)に続く「01800−01FFF」にそれぞれ割り当てられる。
本実施形態2の方式とは異なり、仮に論理アドレスを定義せずに、物理アドレスのみで管理する場合、アドレス情報の連続性を維持するためには、現在使用されている物理アドレスをシフトさせる必要が生じる。
それによって、アドレスの割り付けを大幅に変更させる必要があり、検索メモリの再構築が煩雑となる。
一方、本方式の如く、論理アドレスを定義することにより、物理アドレスをシフトさせることなく、論理アドレスとしてアドレス情報の連続性を維持することが容易に可能である。したがって、検索メモリの再構築も簡易に実行することが可能である。
本例においては、エントリデータのサイズ(DBW)として、640ビットのデータを追加する場合も示されている。
本例においては、物理アドレスとしてブロック番号Blk#102のセグメント12に対して論理ブロックアドレスとして16進数標記で「002」を割り当て、エントリデータのサイズ(DBW)として640ビットに設定する。
この場合、ブロック番号Blk#102(論理ブロックアドレス「002」)に対応するエントリデータ512個に対してアドレス情報(Hit Index)は、16進数標記で「00400−005FF」にそれぞれ割り当てられる。
次に、物理アドレスとしてブロック番号Blk#103のセグメント12に対して論理ブロックアドレスとして16進数標記で「003」を割り当て、エントリデータのサイズ(DBW)として640ビットに設定する。
この場合、ブロック番号Blk#103(論理ブロックアドレス「003」)に対応するエントリデータ512個に対してアドレス情報(Hit Index)は、16進数標記で「00600−007FF」にそれぞれ割り当てられる。
次に、物理アドレスとしてブロック番号Blk#104のセグメント12に対して論理ブロックアドレスとして16進数標記で「004」を割り当て、エントリデータのサイズ(DBW)として640ビットに設定する。
この場合、ブロック番号Blk#104(論理ブロックアドレス「004」)に対応するエントリデータ512個に対してアドレス情報(Hit Index)は、16進数標記で「00800−009FF」にそれぞれ割り当てられる。
また、本例においては、エントリデータのサイズ(DBW)として、320ビットのデータを追加する場合も示されている。
本例においては、物理アドレスとしてブロック番号Blk#105のセグメント12に対して論理ブロックアドレスとして16進数標記で「004」を割り当て、エントリデータのサイズ(DBW)として320ビットに設定する。
この場合、ブロック番号Blk#105(論理)ブロックアドレス「004」)に対応するエントリデータ1024個に対してアドレス情報(Hit Index)は、16進数標記で「01000−013FF」にそれぞれ割り当てられる。
この場合においても、論理アドレスとしてアドレス情報の連続性を維持することが容易に可能であるため検索メモリの再構築も簡易に実行することが可能である。
さらには、検索メモリを管理するシステムでは、ある一定期間でアクセスされないエントリデータを削除する等のメンテナンス動作を実行する場合がある。
その場合に、初期設定にて定義されたブロックがメンテナンス動作によって不要となった場合に、当初連続して定義したはずのメモリ空間が、歯抜け状態のアドレス情報に変化してしまうことがある。
そのような状態になった場合、アドレス情報の連続性を維持するためには従来の方式では、検索メモリに含まれている全てのブロックに対するアドレス情報の割り付けを再構築する必要であったが、本方式を用いることにより、削除が必要になったブロックの論理ブロックアドレスを削除すれば良い。たとえば、エントリデータのサイズ(DBW)として80ビットに設定されたブロックの一部が削除された場合には、当該エントリデータのサイズ(DBW)が80ビットに設定されたブロック群のアドレス情報の再構築をすれば良く、他のエントリデータのサイズに関するアドレス情報は、そのまま維持することが可能であるためメンテナンス動作も簡易に実行することが可能である。
このような、自由度の高いアドレス情報の割り付けが実現できることで、検索メモリの再構築にかかる時間を大幅に改善することで処理性能の向上ができるだけでなく、不要なデータのやり取りをなくすことで消費電力の削減も可能となる。
(実施形態3)
図16は、実施形態3に基づく検索ユニット81〜84にそれぞれ含まれる複数のセグメント(サブブロック)12の構成を説明する図である。
図16を参照して、図5の構成と比較して、複数の合成回路27−0〜27(N−1)と、複数のセレクタSL0〜SL(N−1)と、レジスタ19とをさらに設けた点が異なる。セレクタSL0〜SL(N−1)を総称してセレクタSLとも称する。
その他の構成については実施形態1の図5で説明したのと同様であるのでその詳細な説明については繰り返さない。
合成回路27−0〜27(N−1)は、プライオリティエンコーダ15−0〜15−Nからそれぞれ出力されるアドレスデータと、レジスタ16−0〜16(N−1)にそれぞれ格納されているブロックアドレスとを合成したアドレス情報を出力する。
セレクタSL0〜SL(N−1)は、レジスタ19に格納されているデータに従って出力を切り替える。たとえば、レジスタ19にデータ「0」が格納されている場合には、合成回路27−0〜27(N−1)から出力されるビットシフトされていないアドレス情報がグローバルプライオリティエンコーダ18に出力される。
一方、レジスタ19にデータ「1」が格納されている場合には、変換回路17から出力されるビットシフトされたアドレス情報がグローバルプライオリティエンコーダ18に出力される。
したがって、ビットシフトされたアドレス情報ではなく、ビットシフトされていないアドレス情報をそのまま使用する場合には、レジスタ19に「0」を格納する。一方、論理アドレスを使用する場合には、レジスタ19に「1」を格納する。
当該構成により、物理アドレスの使用と、再設定された論理アドレスの使用とを切り替えることが可能であり、汎用性がさらに向上する。
図17は、実施形態3の変形例に基づく検索ユニット81〜84にそれぞれ含まれる複数のセグメント(サブブロック)12の構成を説明する図である。
図17を参照して、図13の構成と比較して、複数の合成回路27−0〜27(N−1)と、複数のレジスタ26#−0〜26#−(N−1)と、複数のセレクタSL0〜SL(N−1)と、レジスタ19とをさらに設けた点が異なる。
その他の構成については実施形態2の図13で説明したのと同様であるのでその詳細な説明については繰り返さない。
レジスタ26#−0〜26#−(N−1)は、それぞれ物理的なブロックアドレスを格納する。
合成回路27#−0〜27#(N−1)は、プライオリティエンコーダ15−0〜15−Nからそれぞれ出力されるアドレスデータと、レジスタ26#−0〜26#(N−1)にそれぞれ格納されているブロックアドレスとを合成したアドレス情報を出力する。
セレクタSL0〜SL(N−1)は、レジスタ19に格納されているデータに従って出力を切り替える。たとえば、レジスタ19にデータ「0」が格納されている場合には、合成回路27#−0〜27#(N−1)から出力される物理的なブロックアドレスとローカルアドレスとを合成したアドレス情報がグローバルプライオリティエンコーダ18に出力される。
一方、レジスタ19にデータ「1」が格納されている場合には、変換回路17#−0〜17#−(N−1)から出力されるデータがグローバルプライオリティエンコーダ18に出力される。
したがって、論理アドレスではなく、物理的なブロックアドレスとローカルアドレスとを合成したアドレス情報をそのまま使用する場合には、レジスタ19に「0」を格納する。一方、論理アドレスを使用する場合には、レジスタ19に「1」を格納する。
当該構成により、物理アドレスの使用と、論理アドレスの使用とを切り替えることが可能であり、汎用性がさらに向上する。
なお、合成回路に物理的なブロックアドレスを供給するものは、物理的なブロックアドレスを示すユニークな固定値を供給するものであればどのようなものでもよく、レジスタに限定されるものではない。
(実施形態4)
図18は、実施形態4に基づく検索システムについて説明する図である。
図18を参照して、実施形態4においては複数の検索メモリを搭載する検索システムについて説明する。具体的には、検索メモリが搭載されたチップが複数個設けられている。
また、本例においては、独立した複数のチップを1つの検索メモリとして検索可能な検索システムについて説明する。ここでは、複数のチップが多段接続(カスケード接続)される場合について説明する。
図18(A)を参照して、検索メモリ8Aと、検索メモリ8Bとがカスケード接続されている。
転送制御回路4からサーチデータが検索メモリ8Aに入力される。検索メモリ8Aは、サーチデータに従うサーチ動作を実行するとともに、サーチデータを検索メモリ8Bに転送する。
検索メモリ8Bは、検索メモリ8Aから転送されたサーチデータに従うサーチ動作を実行する。
検索メモリ8Bは、サーチ結果であるアドレス情報(Hit Index)を検索メモリ8Aに出力する。
検索メモリ8Aは、サーチ動作に従うサーチ結果と、検索メモリ8Bから入力されたサーチ結果とに基づいて最終的なサーチ結果であるアドレス情報(Hit Index)を転送制御回路4に出力する。
図18(B)を参照して、別の方式で検索メモリ8Aと、検索メモリ8Bとがカスケード接続されている。
転送制御回路4からサーチデータが検索メモリ8Aに入力される。検索メモリ8Aは、サーチデータに従うサーチ動作を実行するとともに、サーチデータを検索メモリ8Bに転送する。
また、検索メモリ8Aは、サーチ結果であるアドレス情報(Hit Index)を検索メモリ8Bに出力する。
検索メモリ8Bは、検索メモリ8Aから転送されたサーチデータに従うサーチ動作を実行する。
検索メモリ8Bは、サーチ動作に従うサーチ結果と、検索メモリ8Aから入力されたサーチ結果とに基づいて最終的なサーチ結果であるアドレス情報(Hit Index)を転送制御回路4に出力する。
図19は、実施形態4に基づく検索メモリ8A,8Bの構成を説明する図である。
図19を参照して、検索メモリ8Aは、AND回路AD0,AD1と、ブロック群110と、PE群120と、変換回路群130と、レジスタ群140と、グローバルプライオリティエンコーダ(GPE)150とを含む。
検索メモリ8Bは、AND回路AD2,AD3と、ブロック群210と、PE群220と、変換回路群230と、レジスタ群240と、グローバルプライオリティエンコーダ(GPE)250とを含む。
AND回路AD0は、カスケード接続信号cas_onと、入力端子Rx0に入力されるサーチデータとの入力に基づいてサーチデータを後段に転送するか否かを設定する。
カスケード接続信号cas_onが“1”の場合には、後段の回路にサーチデータを転送する。一方、カスケード接続信号cas_onが“0”の場合には、後段の回路にサーチデータを転送しない。
本例の場合には、カスケード接続信号cas_onが“1”の場合であるので、後段の検索メモリ8Bにサーチデータを転送する。具体的には、検索メモリ8Aの出力端子Tx0から検索メモリ8Bの入力端子Rxに対してサーチデータが出力される。
AND回路AD1は、カスケード接続信号cas_onと、入力端子Rx1に入力されるサーチ結果の入力とに基づいてサーチ結果をグローバルプライオリティエンコーダ(GPE)150に出力するか否かを設定する。
カスケード接続信号cas_onが“1”の場合には、グローバルプライオリティエンコーダ(GPE)150にサーチ結果を入力する。一方、カスケード接続信号cas_onが“0”の場合には、グローバルプライオリティエンコーダ(GPE)150にサーチ結果を入力しない。
本例の場合には、カスケード接続信号cas_onが“1”の場合であるので、検索メモリ8Bからのサーチ結果を受け付けて、グローバルプライオリティエンコーダ(GPE)150に入力する。具体的には、検索メモリ8Bの出力端子Tx3から検索メモリ8Aの入力端子Rx1に対して出力されたサーチ結果を受け付ける。
ブロック群110は、複数のセグメントを含む。ブロック番号は物理アドレス[8:0]で定義される。本例の場合には10進数標記でブロック番号BLK#「0〜511」にそれぞれ割り当てられている。
PE群110は、複数のセグメントにそれぞれ対応して設けられた複数のプライオリティエンコーダ15を含む。
変換回路群120は、複数のセグメントにそれぞれ対応して設けられた複数の変換回路17を含む。
レジスタ群130は、複数のセグメントにそれぞれ対応して設けられた複数のレジスタ16を含む。
グローバルプライオリティエンコーダ(GPE)150は、複数の変換回路17の出力を受けて優先度の高いアドレス情報を最終的に出力する。その際、グローバルプライオリティエンコーダ(GPE)150は、検索メモリ8Bからのサーチ結果が入力される場合には、当該検索メモリ8Bのサーチ結果も考慮したアドレス情報を最終的に出力する。
AND回路AD2は、カスケード接続信号cas_onと、入力端子Rx2に入力されるサーチデータとの入力に基づいてサーチデータを後段に転送するか否かを設定する。
カスケード接続信号cas_onが“1”の場合には、後段の回路にサーチデータを転送する。一方、カスケード接続信号cas_onが“0”の場合には、後段の回路にサーチデータを転送しない。
本例の場合には、カスケード接続信号cas_onが“0”の場合であるので、後段の回路にサーチデータを転送しない。
AND回路AD3は、カスケード接続信号cas_onと、入力端子Rx3に入力されるサーチ結果の入力とに基づいてサーチ結果をグローバルプライオリティエンコーダ(GPE)150に出力するか否かを設定する。
カスケード接続信号cas_onが“1”の場合には、グローバルプライオリティエンコーダ(GPE)250にサーチ結果を入力する。一方、カスケード接続信号cas_onが“0”の場合には、グローバルプライオリティエンコーダ(GPE)250にサーチ結果を入力しない。
本例の場合には、カスケード接続信号cas_onが“0”の場合であるので、グローバルプライオリティエンコーダ(GPE)250にサーチ結果を入力しない。
ブロック群210は、複数のセグメント12を含む。ブロック番号は物理アドレス[8:0]で定義される。本例の場合には10進数標記でブロック番号BLK#「0〜511」にそれぞれ割り当てられている。
PE群210は、複数のセグメント12にそれぞれ対応して設けられた複数のプライオリティエンコーダ15を含む。
変換回路群220は、複数のセグメント12にそれぞれ対応して設けられた複数の変換回路17#を含む。
レジスタ群230は、複数のセグメント12にそれぞれ対応して設けられた複数のレジスタ16#を含む。
グローバルプライオリティエンコーダ(GPE)250は、複数の変換回路17#の出力を受けて優先度の高いアドレス情報を最終的に出力する。その際、グローバルプライオリティエンコーダ(GPE)250は、他のカスケード接続されたサーチ結果が入力される場合には、当該検索メモリ8Bのサーチ結果も考慮したアドレス情報を最終的に出力する。
再び図18を参照して、実施形態4においては、図13で説明したように各検索メモリ8A,8Bに含まれる複数のセグメント12を用いてエントリデータのサイズ(DBW)として80ビット、160ビット、320ビット毎の検索ユニットを形成する。
そして、実施形態2で説明したように物理アドレスとして設定されているブロックアドレスをエントリデータサイズ毎の論理ブロックアドレスに変換して、管理する。
具体的には、論理ブロックアドレスと、エントリデータのサイズ情報を各レジスタ16#に格納する。なお、本例の場合には、検索メモリ8A,8Bに含まれる総合計のセグメント12の個数が1024個である。したがって、論理ブロックアドレスとしては、図15で説明したようにエントリデータのサイズ毎に、10進数標記で[9:0]にそれぞれ割り当てる。
そして、実施形態2で説明した方式に従って、論理ブロックアドレスに対応するエントリデータの個数に対してアドレス情報をそれぞれ割り当てる。
当該方式により、各検索ユニットから出力されるアドレス情報(Hit Index)は、エントリデータのサイズに基づくアドレス空間において連続している。エントリデータのサイズ毎に、エントリデータに対応するアドレス情報が連続的になるように再設定されたアドレス情報が出力される。
これにより検索メモリ8A,8Bに含まれている複数のセグメント12を1つの検索メモリとして扱うことが可能となる。
したがって、複数のチップ間にサイズが異なるエントリデータが含まれる場合であっても、アドレス情報は連続しているため検索メモリを管理する管理側(システム側)の負荷を軽減することが可能である。
図20は、実施形態4に基づく検索メモリ8C,8Dの構成を説明する図である。
図20を参照して、検索メモリ8Cは、検索メモリ8Aと比較して、AND回路AD1が設けられていない点が異なる。また、検索メモリ8Dは、検索メモリ8Bと比較して、AND回路AD3が設けられていない点が異なる。その他の構成については、図19で説明した検索メモリ8A,8Bの構成と同様であるのでその詳細な説明については繰り返さない。
AND回路AD0は、カスケード接続信号cas_onと、入力端子Rx0に入力されるサーチデータとの入力に基づいてサーチデータを後段に転送するか否かを設定する。
カスケード接続信号cas_onが“1”の場合には、後段の回路にサーチデータを転送する。一方、カスケード接続信号cas_onが“0”の場合には、後段の回路にサーチデータを転送しない。
本例の場合には、カスケード接続信号cas_onが“1”の場合であるので、後段の検索メモリ8Dにサーチデータを転送する。具体的には、検索メモリ8Cの出力端子Tx0から検索メモリ8Dの入力端子Rx2に対してサーチデータが出力される。
グローバルプライオリティエンコーダ(GPE)150は、サーチ結果を出力端子CTx0から出力する。
AND回路AD2は、カスケード接続信号cas_onと、入力端子Rx2に入力されるサーチデータとの入力に基づいてサーチデータを後段に転送するか否かを設定する。
カスケード接続信号cas_onが“1”の場合には、後段の回路にサーチデータを転送する。一方、カスケード接続信号cas_onが“0”の場合には、後段の回路にサーチデータを転送しない。
本例の場合には、カスケード接続信号cas_onが“0”の場合であるので、後段の回路にサーチデータを転送しない。
グローバルプライオリティエンコーダ(GPE)250は、複数の変換回路17#の出力を受けて優先度の高いアドレス情報を最終的に出力する。その際、グローバルプライオリティエンコーダ(GPE)250は、他のカスケード接続されたサーチ結果が入力される場合には、当該検索メモリ8Cのサーチ結果も考慮したアドレス情報を最終的に出力する。
本例の場合には、入力端子CRx1から検索メモリ8Cのサーチ結果が入力される。
したがって、グローバルプライオリティエンコーダ(GPE)250は、検索メモリ8Cのサーチ結果も考慮したアドレス情報を最終的に出力端子CTx1から出力する。
出力端子CTx1から転送制御回路4にアドレス情報が出力される。
図18を参照して、実施形態4においては、図13で説明したように各検索メモリ8C,8Dに含まれる複数のセグメント12を用いてエントリデータのサイズ(DBW)として80ビット、160ビット、320ビット毎の検索ユニットを形成する。
そして、実施形態2で説明したように物理アドレスとして設定されているブロックアドレスをエントリデータサイズ毎の論理ブロックアドレスに変換して、管理する。
具体的には、論理ブロックアドレスと、エントリデータのサイズ情報を各レジスタ16#に格納する。なお、本例の場合には、検索メモリ8C,8Dに含まれる総合計のセグメント12の個数が1024個である。したがって、論理ブロックアドレスとしては、図15で説明したようにエントリデータのサイズ毎に、10進数標記で[9:0]にそれぞれ割り当てる。
そして、実施形態2で説明した方式に従って、論理ブロックアドレスに対応するエントリデータの個数に対してアドレス情報をそれぞれ割り当てる。
当該方式により、各検索ユニットから出力されるアドレス情報(Hit Index)は、エントリデータのサイズに基づくアドレス空間において連続している。エントリデータのサイズ毎に、エントリデータに対応するアドレス情報が連続的になるように再設定されたアドレス情報が出力される。
これにより検索メモリ8C,8Dに含まれている複数のセグメント12を1つの検索メモリとして扱うことが可能となる。
したがって、複数のチップ間にサイズが異なるエントリデータが含まれる場合であっても、アドレス情報は連続しているため検索メモリを管理する管理側(システム側)の負荷を軽減することが可能である。
以上、本開示を実施形態に基づき具体的に説明したが、本開示は、実施形態に限定されるものではなく、その要旨を逸脱しない範囲で種々変更可能であることはいうまでもない。
1 通信機器、4 転送制御回路、6 汎用メモリ、8,8A,8B,8C,8D 検索メモリ、11 RAMセル、12 セグメント、13 データ比較部、15 プライオリティエンコーダ、16,19,26# レジスタ、17 変換回路、18 グローバルプライオリティエンコーダ、20 セルアレイ、21 書込ドライバ、22 サーチ線ドライバ、23 マッチアンプ部、24 制御論理回路、25 読出回路、27,27# 合成回路、81,82,83,84 検索ユニット。

Claims (7)

  1. 入力された検索データがメモリセルアレイに格納されたエントリデータに一致するか否かを検索し、一致するエントリデータに対応するアドレス情報を出力する検索メモリであって、
    複数の検索ブロックと、
    前記アドレス情報を出力する出力制御部とを備え、
    前記アドレス情報は、前記複数の検索ブロックのうちの少なくとも1つを指定するためのブロックアドレスと、指定された検索ブロックにおけるエントリデータに対応する論理アドレスとを含み、
    前記出力制御部は、前記エントリデータのサイズに基づくアドレス空間において、前記エントリデータに対応するアドレス情報が連続的になるように再設定されたアドレス情報を出力する、検索メモリ。
  2. 前記出力制御部は、前記エントリデータのサイズが2N倍(N:自然数)に設定された場合に、最大ビット長−Nビットのアドレス空間において、前記エントリデータに対応するアドレス情報が連続的になるように再設定されたアドレス情報を出力する、請求項1記載の検索メモリ。
  3. 前記出力制御部は、前記ブロックアドレスをNビットシフトさせるシフト演算処理を実行する、請求項2記載の検索メモリ。
  4. 入力された検索データがメモリセルアレイに格納されたエントリデータに一致するか否かを検索し、一致するエントリデータに対応するアドレス情報を出力する検索メモリであって、
    前記検索メモリは、
    複数の検索ブロックと、
    前記アドレス情報を出力する出力制御部とを備え、
    前記アドレス情報は、前記複数の検索ブロックのうちの指定された検索ブロックにおけるエントリデータのサイズに関する情報と、指定された検索ブロックにおけるエントリデータに対応する論理アドレスとを含み、
    前記出力制御部は、前記エントリデータのサイズに基づくアドレス空間において、前記エントリデータに対応する論理アドレスが連続的になるように再設定されたアドレス情報を出力する、検索メモリ。
  5. 前記出力制御部は、
    前記複数の検索ブロックにそれぞれ対応して設けられ、一致するエントリデータに対応するローカルアドレスを出力する複数のローカルエンコーダと、
    前記複数の検索ブロックにそれぞれ対応して設けられ、エントリデータのサイズに関する情報と、前記複数の検索ブロックのうち前記エントリデータのサイズ毎にそれぞれ割り当てられた検索ブロックに関する情報とを格納する複数のブロックレジスタと、
    前記複数の検索ブロックにそれぞれ対応して設けられ、対応するローカルアドレスと、対応するブロックレジスタに格納されている情報とに基づいて指定された検索ブロックにおける一致したエントリデータに対応する論理アドレスに変換する複数のアドレス変換部とを有する、請求項1記載の検索メモリ。
  6. 前記出力制御部は、前記複数の検索ブロックにそれぞれ対応して設けられ、対応するローカルエンコーダから出力されるローカルアドレスと、対応するアドレス変換部から出力される論理アドレスとを選択的に切り替えて出力する複数のセレクタとをさらに含む、請求項5記載の検索メモリ。
  7. 入力された検索データがメモリセルアレイに格納されたエントリデータに一致するか否かを検索し、一致するエントリデータに対応するアドレス情報を出力する直列または並列に接続された複数の検索メモリを備え、
    各前記検索メモリは、複数の検索ブロックと、前記アドレス情報を出力する出力制御部とを含み、
    前記アドレス情報は、前記複数の検索ブロックのうちの指定された検索ブロックにおけるエントリデータのサイズに関する情報と、指定された検索ブロックにおけるエントリデータに対応する論理アドレスとを含み、
    前記出力制御部は、前記エントリデータのサイズに基づくアドレス空間において、前記エントリデータに対応する論理アドレスが連続的になるように再設定されたアドレス情報を出力する、検索システム。
JP2017246705A 2017-12-22 2017-12-22 検索メモリおよび検索システム Pending JP2019114311A (ja)

Priority Applications (4)

Application Number Priority Date Filing Date Title
JP2017246705A JP2019114311A (ja) 2017-12-22 2017-12-22 検索メモリおよび検索システム
US16/178,325 US10852972B2 (en) 2017-12-22 2018-11-01 Retrieval memory and retrieval system
EP18206432.9A EP3503110A1 (en) 2017-12-22 2018-11-15 Retrieval memory and retrieval system
CN201811505813.0A CN110008381A (zh) 2017-12-22 2018-12-10 检索存储器和检索系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2017246705A JP2019114311A (ja) 2017-12-22 2017-12-22 検索メモリおよび検索システム

Publications (1)

Publication Number Publication Date
JP2019114311A true JP2019114311A (ja) 2019-07-11

Family

ID=64331735

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2017246705A Pending JP2019114311A (ja) 2017-12-22 2017-12-22 検索メモリおよび検索システム

Country Status (4)

Country Link
US (1) US10852972B2 (ja)
EP (1) EP3503110A1 (ja)
JP (1) JP2019114311A (ja)
CN (1) CN110008381A (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11436071B2 (en) * 2019-08-28 2022-09-06 Micron Technology, Inc. Error control for content-addressable memory

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6542391B2 (en) * 2000-06-08 2003-04-01 Netlogic Microsystems, Inc. Content addressable memory with configurable class-based storage partition
US6763425B1 (en) 2000-06-08 2004-07-13 Netlogic Microsystems, Inc. Method and apparatus for address translation in a partitioned content addressable memory device
US6934795B2 (en) 1999-09-23 2005-08-23 Netlogic Microsystems, Inc. Content addressable memory with programmable word width and programmable priority
JP2002260389A (ja) 2001-03-01 2002-09-13 Kawasaki Microelectronics Kk 連想メモリ
US7474546B2 (en) * 2007-04-02 2009-01-06 Sun Microsystems, Inc. Hybrid dual match line architecture for content addressable memories and other data structures
US20170147499A1 (en) * 2015-11-25 2017-05-25 Sandisk Technologies Llc Multi-Level Logical to Physical Address Mapping Using Distributed Processors in Non-Volatile Storage Device

Also Published As

Publication number Publication date
US10852972B2 (en) 2020-12-01
EP3503110A1 (en) 2019-06-26
US20190196715A1 (en) 2019-06-27
CN110008381A (zh) 2019-07-12

Similar Documents

Publication Publication Date Title
US6324087B1 (en) Method and apparatus for partitioning a content addressable memory device
US6243281B1 (en) Method and apparatus for accessing a segment of CAM cells in an intra-row configurable CAM system
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
JPH0973793A (ja) 連想記憶装置
JPH06290585A (ja) デュアルポートメモリ
US8059439B2 (en) Encoding data for storage in a content addressable memory
US10891337B2 (en) Content addressable memory and semiconductor device
JP3599273B2 (ja) 内容参照可能メモリの改良
US10545878B2 (en) Search memory
JP2019114311A (ja) 検索メモリおよび検索システム
JP4499654B2 (ja) メモリセルアレイブロックの構成方法、アドレス指定方法、半導体メモリ装置及びメモリセルアレイブロック
JP2019008845A (ja) 半導体装置
JP6170718B2 (ja) 検索システム
JP4850403B2 (ja) マグニチュード内容参照可能メモリ
JP2001236790A (ja) 連想メモリ
EP1290697B1 (en) Partitioned content addressable memory device
JP2019117678A (ja) 半導体装置
US6735147B2 (en) Semiconductor memory device and a method for generating a block selection signal of the same
JP3174160B2 (ja) アドレス変換バッファ
WO2023035616A1 (zh) 存储电路及存储器
CN112735497A (zh) 一种字线建立方法
JP2005038551A (ja) 半導体記憶装置
JP2007102918A (ja) 半導体記憶装置