JP6205386B2 - 半導体装置及び情報書込/読出方法 - Google Patents

半導体装置及び情報書込/読出方法 Download PDF

Info

Publication number
JP6205386B2
JP6205386B2 JP2015101082A JP2015101082A JP6205386B2 JP 6205386 B2 JP6205386 B2 JP 6205386B2 JP 2015101082 A JP2015101082 A JP 2015101082A JP 2015101082 A JP2015101082 A JP 2015101082A JP 6205386 B2 JP6205386 B2 JP 6205386B2
Authority
JP
Japan
Prior art keywords
memory
data
divided
key data
entry address
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2015101082A
Other languages
English (en)
Other versions
JP2016219074A (ja
Inventor
正登 西沢
正登 西沢
小林 薫
薫 小林
大塚 寛治
寛治 大塚
佐藤 陽一
陽一 佐藤
利之 河内
利之 河内
稔 上井
稔 上井
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Nagase and Co Ltd
Original Assignee
Nagase and Co Ltd
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 Nagase and Co Ltd filed Critical Nagase and Co Ltd
Priority to JP2015101082A priority Critical patent/JP6205386B2/ja
Priority to CN201680021425.8A priority patent/CN107533865B/zh
Priority to PCT/JP2016/062291 priority patent/WO2016185849A1/ja
Priority to US15/574,690 priority patent/US10423666B2/en
Priority to TW105112469A priority patent/TWI621016B/zh
Publication of JP2016219074A publication Critical patent/JP2016219074A/ja
Application granted granted Critical
Publication of JP6205386B2 publication Critical patent/JP6205386B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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
    • 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
    • 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
    • G11C15/046Digital 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
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C8/00Arrangements for selecting an address in a digital store
    • G11C8/12Group selection circuits, e.g. for memory block selection, chip selection, array selection
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Description

本発明は,半導体装置,半導体装置に対するエントリアドレスの書込方法,及び読出方法に関する。具体的に説明すると,本発明の半導体装置は,データの書込時及び検索時における消費電力を低減させることを図った連想メモリ(CAM:Content Addressable Memory)などに関するものである。
近年,クラウドコンピューティングの時代となり,インターネットスイッチやルータの高性能化や消費電力の低減が緊急の課題であるとされている。また,インターネットの検索エンジンとしては,より高速かつ低消費電力で確実な検索操作を行うことができるものが求められている。このような要求に応えるために,近年,インターネットスイッチや検索エンジンでは,CAMを使用することが多くなってきている。
ここで,一般的なCAMは,CAM内に記憶されているデータ検索を行う際に,キーデータと呼ばれる検索データが入力される。そして,CAMは,キーデータと同じデータがメモリに記憶されている場合に,そのキーデータが記憶されているメモリのアドレス(番地)を出力する。このときのアドレスは,エントリアドレスとも呼ばれる。一般的に,このような検索機能を実現するためには,CAM内の全メモリ空間へのアクセスが必要となり,回路構成が複雑になるだけではなく,消費電力が大きくなるという問題があった。特に,この消費電力が大きくなるという問題は,CAMの規模に伴って大きくなるものであるため,現在では非常に深刻な問題であるとされている。
このような問題に対し,例えば特許文献1では,CAMの高速検索性を活かしつつ,低消費電力化を図ることを目的としたデータ検索装置が提案されている。特許文献1のデータ検索装置は,プライオリティが決められた複数のルールデータを,その大小の順序に応じて新たに順序付けし,その順序に応じて複数のメモリブロックに割り当てる。また,この検索装置は,データの検索を行う際には,検索すべき一つのメモリブロックを指定して検索処理を実行する。このように,特許文献1のデータ検索装置は,検索処理を行う際に,指定された一つのブロックのみをアクティブにし,他のブロックをアクティブにする必要がないことから,その分,通常のCAMと比較して検索時の消費電力を低減することができるとされている。
しかしながら,上記特許文献1に開示されたデータ検索装置は,通常のメモリと比較して検索時の消費電力を低減することが可能であるものの,検索処理を実行するためには,一度にブロック内の全メモリ空間にアクセスする必要がある。このため,従来のデータ検索装置は,回路構成が複雑であるとともに,検索時における消費電力が大きいという問題を有していた。このように,上記特許文献1の技術は,現在の問題に対する根本的な解決策を提示するものではなかった。
そこで,高速かつ低消費電力でのデータ検索を実現するために,本発明者らによって,新規な半導体装置(CAM)が提案されている(特許文献2)。この新規なCAMは,メモリアドレスによって特定されるメモリ空間にキーデータに対応するエントリアドレスが書き込まれる検索メモリマットと,この検索メモリマットに接続された制御回路とを備える。検索メモリマットは,メモリ空間が,メモリアドレスを保持したまま,複数の分割メモリに区分されている。CAMに対して,検索メモリマットに書き込むためのキーデータが入力されると,制御回路は,このキーデータを複数の分割データに分割する。そして,制御回路は,複数の分割データのそれぞれを,複数の分割メモリに割り当てて,各分割データをアドレスとして,各分割メモリのメモリアドレスによって特定されるメモリ空間に,当該分割データに対応するエントリアドレスを書き込んでいく。このようにして,検索メモリマットに,複数のキーデータに対応するエントリアドレスが書き込まれていく。
また,検索メモリマットに書き込まれたキーデータを検索する処理は,書込処理と同様のステップで行われる。つまり,CAMに対して,検索対象データとしてのキーデータが入力されると,制御回路は,この検索対象データとしてのキーデータを複数の分割データに分割していく。そして,制御回路は,分割データのそれぞれをアドレスとして,各分割メモリのメモリアドレスによって特定されるメモリ空間にアクセスし,アクセスしたメモリ空間から,当該分割データに対応するエントリアドレスを読み出す。
このようにして,本発明者により開発された新規なCAMでは,キーデータが複数に分割され,この分割されたキーデータのそれぞれに対応するエントリアドレスが,分割メモリに記憶される。このため,このエントリアドレスを検索する際には,検索メモリマット全体を一度にアクティブに(活性化)させる必要はなく,検索メモリマットを分割メモリごとに部分的にアクティブにさせて検索することが可能となる。従って,このCAMによれば,従来のCAMと同様の高速性でデータ検索を実現しつつ,従来のCAMよりも極めて低い消費電力でデータ検索を実行することができる。
特開2004−185792号公報 特許第5575997号公報
ところで,特許文献2に開示されたCAMは,書込処理を行う際に,基本的には,キーデータを分割して得られた分割データの全てについて,これに対応するエントリアドレスを検索メモリマットのメモリ空間に書き込むこととしている。例えば,144bitのキーデータを8bitずつ18分割する設定の場合,特許文献2のCAMは,最大で,そのキーデータに対応するエントリアドレスを,検索メモリマットを構成する18個の分割メモリに書き込む必要がある。しかしながら,特許文献2のCAMにおいて,18個の分割メモリに書き込まれるエントリアドレスはすべて同じデータである。このように,特許文献2のCAMでは,一つのキーデータを検索メモリマットに書き込む際に,同じエントリアドレスを複数箇所に書き込む必要がある。このため,一つのキーデータの書き込みに利用するメモリ空間の容量が比較的大きくなり,検索メモリマットマットに書き込むことのできるキーデータの数が十分ではないという課題があった。また,特許文献2のCAMの書込方式では,検索メモリマットのサイズが大きくなる傾向にあり,CAM自体を小型化させることが難しいという課題もある。
さらに,特許文献2のCAMにおいて,一つのキーデータを検索メモリマットに書き込むためには,基本的に,このキーデータを複数の分割データに分割し,複数の分割データのすべてを分割メモリに割り当てて,それに対応するエントリアドレスを一つ一つ書き込んでいく必要がある。しかし,複数の分割データのすべてについてそれに対応するエントリアドレスを書き込む処理を行うと,書込処理に遅延が生じるため,多数のキーデータを初期登録する際に比較的時間がかかるという課題があった。
このように,特許文献2のCAMは,極めて低い消費電力でキーデータの検索処理が可能であるというメリットがあるものの,書込容量(検索容量),メモリのサイズ,書込処理の速度などの点において,改良の余地があるとされていた。
そこで,本発明は,検索処理の低消費電力性を維持しつつ,書込容量(検索容量)の拡大,メモリの小型化,及び書込処理の高速化を実現することのできる,CAM等半導体装置を提供することを解決課題とする。
本発明は,基本的に,ある書込対象のキーデータから分割された複数の分割データのうち,一つの分割データに対応するキーデータの書き込みに成功した場合には,それ以降の分割データについてはキーデータの書き込み処理を行わないようにすることで,検索メモリマットに対するキーデータの書込処理を効率化させることができるという知見に基づくものである。本発明によれば,書込容量(検索容量)を拡大させることができ,さらには,メモリの小型化及び書込処理の高速化を実現できる。具体的に説明すると,本発明は以下の構成・工程を有する。
本発明の第1の側面は,CAM等の半導体装置に関する。
本発明の半導体装置は,検索メモリマット100と,制御回路200と,確認用メモリ300と,を備える。検索メモリマット100は,メモリアドレス(MA)によって特定されるメモリ空間に,キーデータ(KD)に対応するエントリアドレス(EA)が書き込まれる記憶装置である。制御回路200は,検索メモリマットに接続されており,検索メモリマットに対するデータの書込処理及び読出処理を行う。確認用メモリ300は,制御回路に接続された記憶装置であり,この制御回路の制御を受ける。
検索メモリマット100は,そのメモリ空間が,メモリアドレスを保持したまま,複数の分割メモリ110a,110b…に区分されている。
制御回路200は,キーデータが入力される入力部210と,この入力部に入力されたキーデータを複数の分割データに分割する分割部220と,書込部230と,を有する。
書込部230は,少なくとも,下記に説明する第1書込処理を実行する。
つまり,第1書込処理は,分割部で分割された複数の分割データのそれぞれを,複数の分割メモリに割り当てて,当該分割データをアドレスとして,分割メモリのメモリアドレスによって特定されるメモリ空間に,当該分割データに対応するエントリアドレスを順次書き込んでいく処理である。
ここで,書込部230は,第1書込処理において,ある分割データに対応するエントリアドレスを書き込むべきメモリ空間に,既に他の分割データに対応するエントリアドレスが書き込まれている場合には,当該メモリ空間に,エントリアドレスを書き込まない。
さらに,書込部230は,複数の分割データのうち,一つの分割データに対応するエントリアドレスをメモリ空間に書き込むことに成功した場合には,第1書込処理を終了させ,それ以降の分割データについては書込処理を行わない。
上記構成のように,本発明の半導体装置は,一つの書込対象のキーデータについて,一つのエントリアドレスをメモリ空間に書き込むことに成功した場合には,第1書込処理を終了させて,それ以降は書込処理を行わないこととしている。このため,ある一つのキーデータの書込処理では,一つのメモリアドレスのみが検索メモリマットのメモリ空間に書き込まれる。上述のとおり,特許文献2の半導体装置では,ある一つのキーデータの書込処理において,複数のメモリアドレスが検索メモリマットのメモリ空間に書き込まれていた。これと比較し,本発明の半導体装置は,一つのキーデータの書込処理で使用するメモリ空間の容量を少なくすることができる。これにより,本発明は,検索メモリマット内に登録可能なキーデータの数を増やすことができ,書込容量を拡大することができる。また,本発明の半導体装置は,検索メモリマットのメモリ空間を効率的に利用できるため,メモリのサイズを小型化することが可能である。さらに,本発明の半導体装置は,一つのエントリアドレスをメモリ空間に書き込むことに成功した時点で書込処理を終了させるものであるため,書込処理の高速化を図ることができる。
本発明の半導体装置において,書込部230は,さらに,制御回路200に接続された確認用メモリ300を備えることが好ましい。この場合に,書込部230は,下記に説明する第2書込処理をさらに実行するものであることが好ましい。つまり,第2書込処理は,入力部210に入力されたキーデータとこれに対応するエントリアドレスとを関連付けて確認用メモリ300に書き込む処理である。
上記構成のように,書込部230の第2書込処理によって,書込対象のキーデータとこれに対応するエントリアドレスとを関連付けて確認用メモリ300に書き込んでおく。これにより,後述する読出処理において,検索メモリマット100から複数のエントリアドレスが読み出されたような場合に,どのエントリアドレスが正しいものであるかを,確認用メモリ300を参照することによって決定することが可能となる。
本発明の半導体装置は,バックアップメモリ400をさらに備えることが好ましい。
また,書込部230は,あるキーデータから分割された複数の分割データの全てについて,それに対応するエントリアドレスをメモリ空間に書き込むことができない場合には(「全衝突」が発生した場合),当該キーデータとこれに対応するエントリアドレスとを関連付けてバックアップメモリ400に書き込むことが好ましい。
上記構成のように,バックアップメモリ400を設けて,エントリアドレスの全衝突が発生した場合には,この全衝突したエントリアドレスとキーデータとを関連付けてバックアップメモリ400に格納する。これにより,検索メモリマット内にエントリアドレスを書き込むことができなくなるという事態を回避できる。ただし,本発明では,一つのキーデータにつき一つのエントリアドレスを検索メモリマット内に記録するものであるため,検索メモリマット内でエントリアドレスの衝突(全衝突)が発生する確率は,比較的低いものとなっている。なお,書込処理において全衝突が発生しバックアップメモリ400にキーデータを書き込む場合,上記の確認用メモリ300にはこれと同じキーデータを書き込む必要はない。つまり,バックアップメモリ400にキーデータを書き込む場合,確認用メモリ300にキーデータを書き込まなくてもよいし,書き込んでもよい。
本発明の半導体装置は,符号化回路500をさらに備えることが好ましい。
符号化回路500は,制御回路200の入力部210に入力されたキーデータを所定のアルゴリズムに基づいて符号化し,符号化したキーデータを分割部220へと入力する回路である。
上記構成のように,符号化回路500は,キーデータを符号化することで,その数値を分散させることができる。キーデータの値を分散させることで,例えば,ほぼ同内容のキーデータが複数個連続して入力された場合であっても,エントリアドレスの書込処理の際に,メモリ空間内でエントリアドレスの衝突が発生する確率を低下させることができる。これにより,エントリアドレスの効率的な書込処理が可能となる。
本発明の半導体装置は,上記した検索メモリマット100が,第1の検索メモリマット100a及び第2の検索メモリマット100bを含んで構成されていることが好ましい。また,本発明の半導体装置は,上記した符号化回路500が,互いに符号化のアルゴリズムが異なる第1の符号化回路500a及び第2の符号化回路500bを含んで構成されていることが好ましい。
この場合に,制御回路200の書込部230は,まず,第1の符号化回路500aによって符号化されたキーデータに対応するエントリアドレスを,第1の検索メモリマット100aに書き込む。同時に,制御回路200の書込部230は,第2の符号化回路500bによって符号化されたキーデータに対応するエントリアドレスを,第2の検索メモリマット100bに書き込む。
上記構成のように,書込部230は,ある一つのキーデータに対応するエントリアドレスを,少なくとも第1の検索メモリマット100aと第2の検索メモリマット100bの両方に書き込む。このように書込部230は,ミラーリング書込処理を行う。さらに,あるキーデータを第1の検索メモリマット100aと第2の検索メモリマット100bに書き込む際に,第1の符号化回路500a及び第2の符号化回路500bを利用して,別々のアルゴリズムで符号化(分散)させる。これにより,エントリアドレスの書込処理の際に,メモリ空間内でエントリアドレスの衝突が発生する確率をさらに低下させることができる。
本発明の半導体装置において,書込部230は,第1のキーデータについて第1書込処理を行うときには,第1のキーデータを分割して得られた複数の分割データのうち,k番目の分割データに対応するエントリアドレスを最初にメモリ空間に書き込む。
この場合に,書込部230は,第2のキーデータについて第1書込処理を行うときには,第2のキーデータを分割して得られた複数の分割データのうち,k番目以外の分割データに対応するエントリアドレスを最初にメモリ空間に書き込むことが好ましい。
上記構成のように,書込部230は,エントリアドレスの書込処理を行う分割データの順番を異ならせることで,検索メモリマット内のメモリ空間を効率的に利用することができる。つまり,書込対象のキーデータを複数の分割データに分割した後に,必ず1番目の分割データからエントリアドレスの書込処理を開始する設定であると,この1番目の分割データに対応する分割メモリにばかりエントリアドレスが書き込まれることとなり,メモリ空間の書込済領域に偏りが生じる。これに対して,例えば,書込対象のキーデータを18分割する場合に,第1のキーデータについては1番目の分割データからエントリアドレスの書込処理を開始し,第2のキーデータについては18番目の分割データからエントリアドレスの書込処理を開始するなど,書込処理の順番を異ならせることで,メモリ空間を広く効率的に利用できる。
本発明の半導体装置の制御回路200は,さらに,検索対象のキーデータが入力された場合に,このキーデータに対応するエントリアドレスを読み出すための読出部240を備える。
読出部240は,入力部210に,検索対象データとしてのキーデータが入力され,分割部220が,当該検索対象データとしてのキーデータを複数の分割データに分割した場合において,分割データのそれぞれをアドレスとして,各分割メモリのメモリアドレスによって特定されるメモリ空間にアクセスする。そして,このアクセスしたメモリ空間から,分割データに対応するエントリアドレスを読み出す。
上記構成のように,検索対象のキーデータを分割して得られた分割データのそれぞれをアドレスとして分割メモリのメモリ空間にアクセスし,このアクセスしたメモリ空間に記憶されているエントリアドレスを読み出す。これにより,検索メモリマット内のすべてのメモリ空間をアクティブとすることなく,必要な部位のみをアクティブにすれば足りるようになるため,検索処理での消費電力を低減させることができる。
本発明の半導体装置の制御回路200は,読出部240によって読み出されたエントリアドレスが適切なものであるか否かを確認するための確認部250を,さらに備える。
この確認部250は,まず,読出部240が読み出した一又は複数のエントリアドレスをキーとして,このエントリアドレスに対応するキーデータを,確認用メモリ300から読み出す。そして,確認部250は,このようにして確認用メモリ300から読み出したキーデータが,入力部210に入力された検索対象データとしてのキーデータと一致するか否かを確認する。
本発明の半導体装置では,上述したとおり,キーデータに対応するエントリアドレスの書込処理を行うにあたり,一つの分割データについてエントリアドレスの書き込みに成功した場合には,それ以降の分割データについてはエントリアドレスの書き込みを行わない。このため,上記した読出部240によってエントリアドレスの読出処理を行ったときに,複数の異なるエントリアドレスが読み出されることが想定される。このように,複数の異なるエントリアドレスが読み出されると,検索対象のキーデータに対応するエントリアドレスを決定することができない。そこで,上記構成のように確認部250を設けて,読出部240が読み出した複数のエントリアドレスのそれぞれについて,確認用メモリ300を参照して,各エントリアドレスに対応するキーデータが,検索対象として入力されたキーデータと一致するかどうかの確認処理を行う。これにより,検索対象として入力されたキーデータと一致するエントリアドレスを,一意に決定することができる。
本発明の半導体装置では,確認部250によって,読出部240が読み出した全てのエントリアドレスに対応するキーデータと検索対象データとしてのキーデータとが一致しないと判定される場合がある。この場合に,読出部240は,バックアップメモリ400を参照して,検索データとしてのキーデータと一致するキーデータに対応するエントリアドレスを,バックアップメモリ400から読み出すことが好ましい。
上述したように,書込処理において,エントリアドレスの全衝突が発生した場合には,この全衝突したエントリアドレスとキーデータとを関連付けてバックアップメモリ400に格納している。このため,確認部250によって“一致なし”と判定された場合であっても,バックアップメモリ400内に,検索データとしてのキーデータと一致するキーデータが記憶されている可能性がある。そこで,このような場合には,読出部240はバックアップメモリ400を参照することが好ましい。
本発明の半導体装置は,さらに,絞込部270を有することが好ましい。絞込部270は,読出部240によって複数のエントリアドレスが読み出された場合に,複数のエントリアドレスの中からエントリアドレスの候補を絞り込み,エントリアドレスの候補を確認部250へと送出する。なお,絞込部270によって絞り込まれたエントリアドレスの候補の数は,読出部240によって読み出されたエントリアドレスの数よりも少なくなる。
上記構成のように,本発明の読出処理においては,読出部240によって複数のエントリアドレスが読み出される場合がある。この場合,複数のエントリアドレスのそれぞれについて,確認用メモリ300を照合すれば,検索対象のキーデータに対応するエントリアドレスを一意に定めることができる。しかしながら,読出部240によって読み出されたエントリアドレスが多いと,確認用メモリ300を逐一参照していたのでは,読出処理の遅延を招くおそれがある。そこで,読出部240と確認部250の間に,絞込部270を配置する。そして,この絞込部270によって,読出部240が読み出した複数のエントリアドレスの中から,それよりも少ない候補を絞り込む処理を行い,絞込後のエントリアドレスを確認部250へと送出する。これにより,確認部250によって確認用メモリ300を参照する回数が減少するため,検索処理の高速化を図ることができる。
本発明の第2の側面は,上記した第1の側面に係る半導体装置によって実行される情報書込方法に関する。
本発明の情報書込方法は,前記制御回路200にキーデータが入力される工程と,制御回路200が入力されたキーデータを複数の分割データに分割する工程と,書込工程と,を含む。
書込工程では,分割された複数の分割データのそれぞれを,複数の分割メモリ110a,110b…に割り当てて,当該分割データをアドレスとして,当該分割メモリ110a,110b…のメモリアドレスによって特定されるメモリ空間に,当該分割データに対応するエントリアドレスを順次書き込んでいく第1書込処理を行う。
ここで,第1書込処理において,ある分割データに対応するエントリアドレスを書き込むべきメモリ空間に,既に他の分割データに対応するエントリアドレスが書き込まれている場合には,当該メモリ空間に,エントリアドレスを書き込まない。
さらに,第1書込処理において,複数の分割データのうち,一つの分割データに対応するエントリアドレスをメモリ空間に書き込むことに成功した場合には,この第1書込処理を終了させる。
また,書込工程では,さらに,入力されたキーデータとこれに対応するエントリアドレスとを関連付けて確認用メモリ300に書き込む第2書込処理を行うことが好ましい。
本発明の第3の側面は,上記した第2の側面に係る情報書込方法によって,半導体装置10に対して書き込まれたエントリアドレスを読み出す情報読出方法に関する。
本発明の情報読出方法は,制御回路200に検索対象データとしてのキーデータが入力される工程と,制御回路200が検索対象データとしてのキーデータを複数の分割データに分割する工程を含む。
さらに,本発明の情報読出方法は,制御回路200が,分割データのそれぞれをアドレスとして,各分割メモリ110a,110b…のメモリアドレスによって特定されるメモリ空間にアクセスし,アクセスしたメモリ空間から,当該分割データに対応するエントリアドレスを読み出す工程を含む。さらに,読み出したエントリアドレスに対応するキーデータを,確認用メモリ300から読み出すとともに,確認用メモリ300から読み出したキーデータが,検索対象データとしてのキーデータと一致するか否かを確認する工程を含む。
本発明によれば,検索処理の低消費電力性を維持しつつ,書込容量(検索容量)の拡大,メモリの小型化,及び書込処理の高速化を実現することができる。
図1は,本発明に係る半導体装置の機能ブロックを示している。 図2は,本発明に係る半導体装置におけるデータの流れ図を示している。 図3は,本発明に係る情報書込方法のメインフローを示している。 図4は,本発明に係る情報書込方法のサブフローを示している。 図5は,基本的な書込処理の例を示している。 図6は,衝突が発生した場合の書込処理の例を示している。 図7は,全衝突が発生した場合の書込処理の例を示している。 図8は,本発明に係る情報読出方法のメインフローを示している。 図9は,本発明に係る情報読出方法のサブフローを示している。 図10は,基本的な読出処理の例を示している。 図11は,不一致が発生した場合の読出処理の例を示している。 図12は,符号化処理の一例を示している。 図13は,符号化処理の他の例を示している。 図14は,書込処理の他の例を示している。 図15は,エントリアドレスの候補の絞り込みを行う読出処理の例を示している。 図16は,書込処理の第1の改良例を示している。 図17は,書込処理の第2の改良例を示している。 図18は,書込処理の第3の改良例を示している。
以下,図面を用いて本発明を実施するための形態について説明する。本発明は,以下に説明する形態に限定されるものではなく,以下の形態から当業者が自明な範囲で適宜修正したものも含む。
図1は,半導体装置10の主たる機能構成を示した機能ブロック図である。また,図2は,半導体装置10による処理の流れを示した流れ図である。さらに,図3〜図7は,半導体装置10によるエントリアドレスの書込処理の例を示しており,図8〜図11は,半導体装置10によるエントリアドレスの読出処理(検索処理)の例を示している。
図1に示されるように,半導体装置10は,基本的に,検索メモリマット100と制御回路200と,確認用メモリ300を備える。加えて,半導体装置10は,バックアップメモリ400及び符号化回路500を備えることが好ましい。制御回路200は,検索メモリマット100,確認用メモリ300,及びバックアップメモリ400に接続されており,各メモリ100,300,400に対して所定のデータ(情報)を書き込んだり読み出したりする情報処理を総合的に制御する機能を担っている。特に,制御回路200は,検索メモリマット100に対するデータの書込処理及び読出処理が主たる機能となる。また,制御回路200には,符号化回路500が組み込まれていてもよい。この場合,制御回路200は,符号化回路500を経由したデータに基づいて,各メモリ100,300,400に対して,データの書込処理及び読出処理を行う。
検索メモリマット100は,メモリアドレス(MA)によって特定されるメモリ空間(D)に,キーデータ(KD)に対応するエントリアドレス(EA)が書き込まれる記憶装置(メモリ)である。検索メモリマット100は,エントリアドレス(EA)を書き込むためのメモリ空間(D)が,メモリアドレス(MA)を保持したまま,複数の分割メモリ110a,110b…に区分された構成となっている。例えば,検索メモリマット100及び複数の分割メモリ110a,110b…の例は,図5〜図7,図10,及び図11などに示されている。
まず,図5を参照して,簡単に,検索メモリマット100と,それに記憶されるエントリアドレス(EA)及びキーデータ(KD)の関係について説明する。図5に示されるように,検索メモリマット100は,y軸方向に沿って複数のメモリアドレス(MA)が順番に割り当てられており,このメモリアドレス(MA)によってメモリ空間(D)のアドレス(番地)が特定されている。メモリ空間(D)は,x軸方向に沿ってデータを記憶する領域を有している。この検索メモリマット100は,複数の分割メモリ110a,110b…に区分されている。複数の分割メモリ110a,110b…は,メモリアドレス(MA)と,それによって特定されるメモリ空間(D)を保持している。また,複数の分割メモリ110a,110b…のメモリアドレス(MA)は,それぞれ共通している。つまり,分割メモリ110a,110b…のそれぞれは,メモリアドレス(MA)とそれによって特定されるメモリ空間(D)とが一対一で対応付けられた構成となっている。このように,検索メモリマット100は,複数の分割メモリ110a,110b…に区分されたものと考えることができる。言い換えると,複数の分割メモリ110a,110b…の集合によって,検索メモリマット100が構築されている。
本発明の半導体装置10は,連想メモリ(CAM:Content Addressable Memory)として利用することができる。つまり,半導体装置10は,検索メモリマット100に,キーデータ(KD)に対応するエントリアドレス(EA)を書き込む。その後又はこれと同時に,半導体装置10は,エントリアドレス(EA)と対応付けてキーデータ(KD)を確認用メモリ300に書き込む。他方,半導体装置10に対して,検索対象としてのキーデータ(KD)を入力すると,半導体装置10は,このキーデータ(KD)に対応するエントリアドレス(EA)を読み出して出力する。つまり,「キーデータ」とは,半導体装置10に記憶される所望のデータを意味する。また,「エントリアドレス」とは,キーデータ(KD)が記憶されているメモリ(具体的には確認用メモリ30)の場所(アドレス)を示すメタデータを意味している。
図5に示された例において,エントリアドレス(EA)は,16進法2桁で表される8bitのデータとして定義されている。8bitのエントリアドレス(EA)は,00〜FFの値をとる。半導体装置10は,1つのエントリアドレス(EA)に対応付けて,1つのキーデータ(KD)を記憶するものである。つまり,1つのキーデータ(KD)に対し,1つのエントリアドレス(EA)が割り当てられる。このため,エントリアドレス(EA)が8bitの情報である場合,半導体装置10には256のキーデータ(KD)を記憶することが可能となる。従って,エントリアドレスが8bitに設定されている半導体装置10は,総エントリ数が256エントリとなる。なお,本発明において,エントリアドレス(EA)は,2bit以上のデータであれば問題ない。例えば,エントリアドレス(EA)は,3bit,4bit,6bit,又は8bit以上とすることもできる。また,エントリアドレス(EA)のbit数は,検索メモリマット100のメモリアドレス(MA)のbit数と一致していることが好ましい。図5に示した例では,エントリアドレス(EA)とメモリアドレス(MA)は,共に,8bitに設定されている。
また,図5に示された例において,半導体装置10に入力されたキーデータ(KD)は,144bitのデータに設定されている。144bitのキーデータ(KD)を,エントリアドレス(EA)のbit数に対応するように8bitごとに分割すると,18個のデータ(分割データ)に分割できる(144bit÷8bit=18)。ここで,本発明の半導体装置10において,検索メモリマット100を構成する分割メモリ110a,110b…の数は,少なくともキーデータの分割数(18)以上必要とされる。なお,キーデータ(KD)のbit数は,144bitに限定されるものではなく,必要に応じて適宜調整可能である。また,キーデータ(KD)を複数の分割データに分割するにあたり,キーデータ(KD)のbit数を割る数は,エントリアドレス(EA)のbit数であることが好ましい。つまり,(分割メモリの数)≧(KDのbit数)÷(EAのbit数)となることが好ましい。
また,図5に示された例において,各分割メモリ110a,110b…のメモリアドレス(MA)は,それぞれ,8bitで定義されたデータ(情報)である。つまり,図5に示された例では,キーデータ(KD)から分割された分割データと,メモリアドレス(MA)とは,それぞれ8bitに設定されている点で共通している。このように,分割データとメモリアドレス(MA)のbit数は一致していることが好ましい。なお,上述のとおり,メモリアドレス(MA)のbit数は,エントリアドレス(EA)のbit数とも一致する。
このように,本発明の半導体装置10において,検索メモリマット100は,エントリアドレス(EA)を書き込むためのメモリ空間(D)が,メモリアドレス(MA)を保持したまま,複数の分割メモリ110a,110b…に区分された構成となっている。各分割メモリは,例えば,SRAM(Static Random Access Memory)などの記憶装置を用いて構成することができる。つまり,検索メモリマット100は,分割メモリ110a,110b…として機能する複数のSRAMによって構築することができる。この意味において,本発明は,複数のSRAMを利用して実現したCAMであるということができる。本発明のように,複数のSRAMを用いて実現したCAMを,SRAM−CAMと称することもできる。
また,図5に示された例のように,半導体装置10に記憶可能なキーデータ(KD)の数(総エントリ数)を256エントリと定めた場合,この256エントリを識別するために必要なエントリアドレス(EA)のbitサイズは,8bitになる。また,半導体装置10に入力されるキーデータのbitサイズが144bitであるとした場合,これをエントリアドレス(EA)のbit数8で割ると18となる。このような条件を想定すると,分割メモリ110a,110b…の数は,少なくとも18以上必要となる。
本発明の半導体装置10において,最低限必要となる分割メモリ110a,110b…の数N(検索メモリマット100の分割数N)は,以下の式により求めることができる。
(式)N=L/log・M
L:キーデータ長(bit数)
M:総エントリ数
N:分割メモリの最小個数(検索メモリマットの分割数)
続いて,図1〜図7を参照して,半導体装置10による書込処理及び読出処理について説明する。なお,図1及び図2に示された符号化回路500による符号化処理については,後ほど詳しく後述する。まずは,この符号化処理を除き,半導体装置10による基本的な書込処理について説明を行う。
図1に示されるように,本実施形態に係る制御回路200は,入力部210,分割部220,書込部230,読出部240,確認部250,出力部260,及び絞込部270を有している。これらの要素210〜270は,制御回路200の機能を概念的に分類して示したものである。すなわち,制御回路200は,これらの機能的要素210〜270を利用して,検索メモリマット100に対しエントリアドレス(EA)を書き込んだり,検索メモリマット100に記憶されているエントリアドレス(EA)を読み出したりする処理を行う。また,図2には,制御回路200の各要素による情報処理のフローが一覧的に示されている。
まず,制御回路200により行われるエントリアドレス(EA)の書込処理を説明する。基本的な書込処理のメインフローは,図3に示されている。また,図3に示したメインフローのうち,検索メモリマット100にエントリアドレス(EA)を書き込む処理(ステップS5)の具体的なフローが,図4に示されている。さらに,書込処理の具体例が,図5〜図7に示されている。ここでの書込処理とは,新しいキーデータ(KD)を半導体装置10に記憶する処理である。この半導体装置10では,新しい書込対象のキーデータ(KD)に対応したエントリアドレス(EA)を検索メモリマット100に書き込む処理が行われる。
図3に示されるように,書込処理においては,まず,書込対象のキーデータが,半導体装置10に入力される(ステップS1)。ここで,図2に示されるように,書込対象のキーデータは,制御回路200の入力部210に入力されることとなる。書込対象のキーデータが制御回路200の入力部210に入力されると,この入力部210は,キーデータを分割部220及び書込部230へと送出する。また,入力部210は,入力されたキーデータを,符号化回路500を経由して,分割部220へと送出することとしてもよい。なお,符号化回路500による処理(ステップS2)については,詳しくは後述する。このように,入力部210は,制御回路200における入力インターフェースとして機能する。
続いて,分割部220は,書込対象のキーデータを,複数の分割データへと分割する(ステップS3)。例えば,分割部220は,検索メモリマット100を構築する分割メモリ110a,110b…の数と等しい数にキーデータを分割することが好ましい。つまり,分割部220がキーデータを分割する分割数nは,検索メモリマット100を構築する分割メモリ110a,110b…の数Nと等しいことが好ましい。これにより,分割部220によって複数に分割したキーデータ(分割データ)の全てを,それぞれ順番に,複数の分割メモリ110a,110b…に対して割り当てていくことができる。例えば,図5に示した例において,半導体装置10には,144bitのキーデータが入力されることが想定されている。また,各キーデータに割り当てられるエントリアドレスのbit数は,8bitであり,分割メモリの数は18となっている。このような条件において,分割部220は,144bitのキーデータを,8bit毎に18個の分割データへと分割することが好ましい。分割部220によって,144bitのキーデータは,8bitずつ,18個の分割データに変換される。なお,分割部220による分割条件は,分割メモリの数や,エントリアドレスのbit数,キーデータのbit数などに応じて,適宜変更することが可能である。分割部220によって生成された複数の分割データは,書込部230へと送出される。
さらに詳しく説明すると,分割部220により分割された分割データのビット数(α)は,検索メモリマット100のメモリアドレス(MA)のビット数(β)と等しいことが好ましい(α=β)。例えば,図5などに示されるように,検索メモリマット100のメモリアドレス(MA)が8bitで表される場合には,分割部220は,キーデータ(KD)を8bitの分割データに分割することが好ましい。また例えば,検索メモリマット100のメモリアドレス(MA)が,2bitで表される場合には,分割部220は,キーデータ(KD)を2bitの分割データに分割することが好ましい。これにより,後の処理において,分割部220が分割した分割データのそれぞれを,当該分割データをアドレスとして,検索メモリマット100を構築する分割メモリに適切に割り当てることができる。
図1に示されるように,書込部230は,検索メモリマット100を構築する複数の分割メモリ110a,110b…や,確認用メモリ300,バックアップメモリ400に対して,所定のデータを書き込む機能を有する。
図1及び図2に示されるように,半導体装置10に対して書込対象のキーデータ(KD)が入力されると,まず,書込部230は,このキーデータ(KD)に対して固有のエントリアドレス(EA)を割り当てる。このエントリアドレス(EA)は,一つのキーデータ(KD)について一つ割り当てられるものである。
また,図1に示されるように,書込部230は,入力部210に入力された書込対象のキーデータ(KD)(分割前の状態のキーデータ)を受け取る。そして,書込部230は,キーデータ(KD)に一つのエントリアドレス(EA)を割り当てて,これらのキーデータ(KD)とエントリアドレス(EA)とを関連付けて,確認用メモリ300に書き込む(ステップS4)。すなわち,新しい書込対象のキーデータが半導体装置10に入力された際,書込部230は,この新しいキーデータに対して一つのエントリアドレスを割り当てて,新しいキーデータとエントリアドレスの対応関係を,確認用メモリ300に記憶しておく。これにより,確認用メモリ300には,エントリアドレス(EA)とキーデータ(KD)とが一対一で対応して記憶される。このように,確認用メモリ300は,キーデータとエントリアドレスの対応関係を記憶しておくためのデータベースとしても機能する。また,確認用メモリ300は,後述するように,読出処理を行う際に,制御回路200が読み出したエントリアドレスが正しいものであるか否かの確認を行う際にも利用される。確認用メモリ300は,SRAM等の公知の記憶装置によって構成することができる。
なお,確認用メモリ300は,予めエントリアドレス(EA)がすべて登録されている構成であってもよい。つまり,確認用メモリ300は,予め登録されているエントリアドレス(EA)によって空のメモリ空間が特定されており,この空のメモリ空間に対してキーデータ(KD)を書き込むことができるようになっている。例えば,書込部230は,キーデータ(KD)に対して割り当てられたエントリアドレス(EA)を参照して,確認用メモリ300にアクセスする。そして,確認用メモリ300内のエントリアドレス(EA)によって特定されるメモリ空間に,キーデータ(KD)を書き込む。このような処理によっても,結果的には,一つのエントリアドレス(EA)と一つのキーデータ(KD)とが対応付けて確認用メモリ300に記憶されることとなる。
続いて,書込部230は,キーデータ(KD)に対して固有のエントリアドレス(EA)を割り当てた後,又は割り当てると同時に,検索メモリマット100を構成する複数の分割メモリ110a,110b…に対して,キーデータ(KD)に対応するエントリアドレス(EA)を書き込む処理を行う(ステップS5)。具体的には,書込部230は,複数の分割データのそれぞれを分割メモリ110a,110b…に割り当て,各分割データをアドレスとして各分割メモリ110a,110b…のメモリ空間にアクセスし,このアクセスしたメモリ空間に,分割データに対応するエントリアドレスを順次書き込んでいく。このステップS5において行われる処理は,図4においてより詳しく説明されている。
図4のフロー図は,キーデータ(KD)をn個の分割データに分割し,この分割データの順序をk番目と定義した場合を示している。図4に示されるように,まず,“k”に“1”が代入されて,n個の分割データのうち1番目(最初)の分割データの処理が開始される(ステップS5A)。
次に,書込部230は,1番目(k番目)の分割データに対して固有のエントリアドレス(EA)を割り付けるとともに,この1番目の分割データをアドレスとして,分割メモリのメモリ空間にアクセスする(ステップS5B)。具体的には,書込部230は,まず,1番目(k番目)の分割データを1番目(k番目)の分割メモリ110aに送出する。また,書込部230は,1番目の分割メモリ110aのy軸に割り当てられた複数のメモリアドレス(MA)の中から,1番目の分割データと同じ値のメモリアドレス(MA)を探し出す。そして,書込部230は,1番目の分割メモリ110aのメモリ空間のうち,1番目の分割データと同じ値を持つメモリアドレス(MA)によって特定されるメモリ空間にアクセスする。
続いて,書込部230は,1番目(k番目)の分割データに基づいてアクセスしたメモリ空間に,他の分割データに対応するエントリアドレスが既に書き込まれており,エントリアドレス同士の衝突が発生するか否かを判断する(ステップS5C)。例えば,現在書込処理をしているキーデータの前に,別のキーデータの書込処理を行っている場合には,エントリアドレス同士の衝突が発生し得る。
ステップS5Cにおいて,エントリアドレスの衝突が発生していないと判断した場合,書込部230は,1番目(k番目)の分割データに対応するエントリアドレスを,この分割データに基づいてアクセスした1番目の分割メモリ110aのメモリ空間に書き込む(ステップS5D)。これにより,1番目(k番目)の分割データに対応するエントリアドレスの書込処理が終了する。
ここで,本発明においては,図4に示されるように,あるキーデータ(KD)から得られた複数の分割データのうち,1つの分割データについてエントリアドレス(EA)の書き込みに成功した場合は,それ以降の分割データについては,エントリアドレス(EA)の書込処理を停止させる。このため,ステップS5Dの後には,メインフロー(図3)へと戻り,エントリアドレスの書込処理全体が終了する。このように,本発明では,1つのキーデータ(KD)について,1つのエントリアドレス(EA)のみを検索メモリマット100内に書き込むこととしている。これにより,書込容量(検索容量)を拡大させると同時に,書込処理の高速化を図ることができる。また,書込容量の拡大により,半導体装置全体の小型化を実現できる。
他方,ステップS5Cにおいて,1番目(k番目)の分割データに基づいてアクセスした1番目の分割メモリ110aのメモリ空間に,既に他の分割データに対応するエントリアドレス(EA)が書き込まれていると判断した場合は,書込部230は,その1番目の分割データに対応するエントリアドレスの書込処理は行わない(ステップS5E)。このため,メモリ空間内には,既に書込処理を終えた他の分割データに対応するエントリアドレスのみが残ることとなる。このように,本発明では,1つのメモリ空間に1つのエントリアドレスのみを記録すれば済む。この点からも本発明では,書込処理の効率化を図ることができる。
ステップS5Eのように,エントリアドレスの書き込みに失敗した場合,書込部230は,次の分割データの書込処理を行う。つまり,上記ステップS5Eの後,書込部230は,“k”に“1”を加えて,この“k+1”の値を“k”に代入する(ステップS5F)。そして,書込部230は,ステップS5Fを経て得られた“k”の値が“n(キーデータの分割数)”と等しくなったか否かを確認する(ステップS5G)。kがn未満(k<n)である場合,書込部230は,ステップS5Bに戻る。例えば,1番目(k番目)の分割データの処理が完了した後には,2番目(k+1番目)の分割データの処理を続けて行う。このように,書込部230は,エントリアドレスの書き込みに成功するまで,複数の分割データを順番に処理していく。なお,図4に示した例では,説明を簡単にするために,ステップS5Fにおいて“k”に“1”を加えることとしているが,例えば“k”に“−1”を加えるなど,複数の分割データを1つずつ処理できるその他のアルゴリズムを採用することも可能である。
続いて,ステップS5Gにおいて,“k=n”であると判断された場合,1つのキーデータ(KD)を分割して得られた複数の分割データのすべてについて,衝突が発生しているといえる(ステップS5H)。このように,エントリアドレス(EA)の書込処理で全衝突が発生している場合,書込部230は,検索メモリマット100にキーデータ(KD)に対応するエントリアドレス(EA)を書き込むことができない。その場合,書込部230は,入力部210に入力された書込対象のキーデータ(KD)とこれに対応するエントリアドレス(EA)とを互いに関連付けて,バックアップメモリ400に書き込む処理を行う(ステップS5I)。バックアップメモリ400は,例えば図2に示されるように,キーデータ(KD)とエントリアドレス(EA)と一対一で対応付けて記憶することのできるメモリである。バックアップメモリ400は,例えばSRAMなどの公知のメモリによって構成することができる。このように,書込部230は,全衝突が生じているキーデータ(KD)については,この全衝突を回避するために,検索メモリマット100には書き込まずに,バックアップメモリ400に書き込んでおくことが好ましい。検索メモリマット100とは別に,バックアップメモリ400を設けておくことで,全衝突が生じたキーデータ(KD)の書込処理が簡易になるととともに,全衝突が生じたキーデータ(KD)の検索処理(読出処理)を効率的に行うことができるようになる。なお,書込処理において全衝突が発生しバックアップメモリ400にキーデータを書き込む場合,上記の確認用メモリ300にキーデータを書き込む処理(ステップS4)を省略することもできる。つまり,バックアップメモリ400にキーデータを書き込む場合,確認用メモリ300にキーデータを書き込まなくてもよいし,書き込んでもよい。
上記のように,書込部230は,ステップS5A〜S5Iに従い,書込対象のキーデータ(KD)に対応するエントリアドレス(EA)を,検索メモリマット100若しくはバックアップメモリ400に書込処理を行う。その後,書込部230は,書込処理を終了させて,図3に示したメインフローへと戻る。
次に,図5〜図7を参照して,書込部230による書込処理について,具体例を挙げて説明する。
まず,図5は,基本的な書込処理の例を示している。図5に示した例では,“00_01_02_03_04_05_06_07_08_09_0A_0B_0C_0D_0E_0F_10_11”という値のキーデータ(KD)が,半導体装置10に入力される。なお,アンダーラインは便宜的に付されたものであり,本来的には存在しない。キーデータ(KD)は,16進法で表された144bitの値である。書込部230は,まずこのキーデータ(KD)に対して,“00”の値を持つエントリアドレス(EA)を割り当てる。エントリアドレス(EA)は,16進法2桁で表された8bitの値である。なお,エントリアドレス(EA)は,数値の小さいものから順に割り当てればよい。ただし,エントリアドレス(EA)は,例えば,ランダムに割り当てることとしてもよいし,空いているものを適宜順番に割り当てるようにしてもよい。
また,図4に示されるように,書込部230は,書込対象としてのキーデータ(KD)と固有のエントリアドレス(EA)とを対応付けて,これらの値を確認用メモリ300に書き込む。これにより,確認用メモリ300には,エントリアドレス(EA)とキーデータ(KD)とが一対一で対応付けられて記憶されることとなる。
また,キーデータ(KD)が半導体装置10に入力されると,分割部220が,このキーデータ(KD)を複数の分割データに分割する。図5に示された例において,検索メモリマット100のメモリアドレス(MA)及びエントリアドレス(EA)は8bitの値である。また,検索メモリマット100は,18個の分割メモリ110a,110b,…110mに区分されている。そこで,分割部220は,144bitのキーデータ(KD)を,8bitずつ,18個の分割データへと分割する。このため,各分割データは,8bitの値となる。図5に示した例において,キーデータ(KD)は,“00”“01”“02”“03”“04”“05”“06”“07”“08”“09”“0A”“0B”“0C”“0D”“0E”“0F”“10”“11”という18個の分割データに分割される。
その後,書込部230は,分割部220によって生成された分割データを,分割メモリ110a〜110mに割り当てて,エントリアドレス(EA)を書き込んでいく。図5に示されるように,まず,書込部230は,1番目の分割データ“00”を1番目の分割メモリ110aに割り当てる。1番目の分割メモリ110aは,“00”〜“FF”の値を持つ8bitのメモリアドレス(MA)を有している。ここで,書込部230は,1番目の分割データ“00”を参照して1番目の分割メモリ110aのメモリアドレス(MA)“00”を指定し,このメモリアドレス“00”によって特定されるメモリ空間(D)にアクセスする。そして,書込部230は,メモリアドレス“00”によって特定されるメモリ空間(D)に対し,1番目の分割データ“00”に対応するエントリアドレス(EA)“00”を書き込む。図5に示した例では,1番目の分割データ“00”について,エントリアドレス(EA)“00”の書込処理に成功している。このため,2番目以降の分割データ“01”“02”・・・については,エントリアドレス(EA)の書込処理は行わない。従って,図5のキーデータ(KD)については,1番目の分割データ“00”のみについて,エントリアドレス(EA)の書込処理を行えばよい。
続いて,図6を参照して,書込処理において,エントリアドレス(EA)の「衝突」が生じる場合の例を説明する。本発明の半導体装置では,書込部230が,分割データをアドレスとして,その分割データに対応するエントリアドレス(EA)を,分割メモリ110a…に書き込む。このため,同じ分割メモリの同じメモリ空間に複数のエントリアドレス(EA)が書き込まれる可能性がある。このように,同じメモリ空間に複数のエントリアドレスが書き込まれようとする現象を,本願明細書では「衝突」と表現している。ここで,本発明の半導体装置は,エントリアドレス(EA)の書込処理を行うにあたり「衝突」が生じた場合に,「衝突」が発生したメモリ空間にはエントリアドレス(EA)を重ねて書き込むことはしない。書込処理において衝突が発生した場合,書込部230は,衝突が発生している分割データについてはエントリアドレスの書込処理をせず,次の分割データについてエントリアドレスの書込処理を開始する。
図6に示した例では,図5に示したキーデータ(KD)に続いて,“00_02_02_03_04_05_06_07_08_09_0A_0B_0C_0D_0E_0F_10_FF”という値のキーデータ(KD)が,半導体装置10に入力される。書込部230は,まずこのキーデータ(KD)に対して,“01”の値を持つエントリアドレス(EA)を割り当てる。そして,書込部230は,キーデータ(KD)とエントリアドレス(EA)とを対応付けて,確認用メモリ300に登録する。
また,キーデータ(KD)が半導体装置10に入力されると,分割部220が,このキーデータ(KD)を複数の分割データに分割する。分割部220は,144bitのキーデータ(KD)を,8bitずつ,18個の分割データへと分割する。図6に示した例において,キーデータ(KD)は,“00”“02”“02”“03”“04”“05”“06”“07”“08”“09”“0A”“0B”“0C”“0D”“0E”“0F”“10”“FF”という18個の分割データに分割される。
その後,書込部230は,分割部220によって生成された複数の分割データを,それぞれ,分割メモリ110a〜110mに割り当てて,エントリアドレス(EA)を書き込んでいく。図6に示されるように,まず,書込部230は,1番目の分割データ“00”を1番目の分割メモリ110aに割り当てて,1番目の分割データ“00”を参照して1番目の分割メモリ110aのメモリアドレス(MA)“00”を指定し,このメモリアドレス“00”によって特定されるメモリ空間(D)にアクセスする。そして,書込部230は,このメモリ空間(D)に,1番目の分割データ“00”に対応するエントリアドレス(EA)“01”を書き込もうとする。しかしながら,このメモリアドレス“00”によって特定されるメモリ空間(D)には,すでに,他のエントリアドレス(EA)“00”が書き込まれている(図5参照)。このため,書込部230は,このメモリ空間(D)に,新しいエントリアドレス(EA)“01”を書き込むことができない。このように,一つのメモリ空間に複数のエントリアドレス(EA)が書き込まれる現象が,「衝突」である。このような「衝突」が生じている場合,書込部230は,1番目の分割データ“00”について,エントリアドレス(EA)“01”を書き込まずに処理を終える。
次に,書込部230は,2番目の分割データ“02”についてエントリアドレス(EA)“01”を書き込む処理を開始する。つまり,書込部230は,2番目の分割データ“02”を2番目の分割メモリ110bに割り当てて,2番目の分割データ“02”を参照して2番目の分割メモリ110bのメモリアドレス(MA)“02”を指定し,このメモリアドレス“02”によって特定されるメモリ空間(D)に対し,2番目の分割データ“02”に対応するエントリアドレス(EA)“01”を書き込む。2番目の分割データ“02”に関しては,衝突が生じていないため,2番目の分割メモリ110bに書き込むことができる。そこで,書込部230は,メモリアドレス“02”によって特定されるメモリ空間(D)に対し,2番目の分割データ“02”に対応するエントリアドレス(EA)“01”を書き込む。このように,図6に示した例では,2番目の分割データ“02”について,エントリアドレス(EA)“01”の書込処理に成功している。このため,3番目以降の分割データ“02”“03”・・・については,エントリアドレス(EA)の書込処理は行わない。従って,図6のキーデータ(KD)については,2番目の分割データ“02”のみについて,エントリアドレス(EA)の書込処理を行えばよいこととなる。
このように,書込部230は,衝突が発生している分割データについてはエントリアドレスの書込処理を行わない。また,書込部230は,エントリアドレスの書き込みに成功するまで,複数の分割データについて書込処理を行っていく。そして,エントリアドレスの書き込みに成功した場合には書込処理を終了させ,それ以降の分割データについて書込処理行わない。これにより,検索メモリマットの書込容量を拡大させるとともに,書込処理の高速化を図ることができる。
続いて,図7を参照して,書込処理において,エントリアドレス(EA)の「全衝突」が生じる場合の例を説明する。本発明の半導体装置10は,上記のように,検索メモリマット100のメモリ空間に,エントリアドレス(EA)を順次登録していく。しかし,一つのキーデータ(KD)から生成された複数の分割データの全てについて,衝突が生じる可能性も存在する。このような全衝突が生じる可能性は極めて低いものであるが,理論的には発生し得る。そこで,図7では,全衝突が発生した場合の対策を示している。
図7は,全衝突が発生する場合の書込処理の例を示している。図7に示した例では,ある程度複数のキーデータ(KD)の書込処理を終えた段階で,“00_02_02_03_04_05_05_07_08_09_01_0B_0C_0D_0E_0F_10_FF”という値のキーデータ(KD)が,半導体装置10に入力される。書込部230は,まずこのキーデータ(KD)に対して,“FF”の値を持つエントリアドレス(EA)を割り当てる。
続いて,キーデータ(KD)が半導体装置10に入力されると,分割部220が,このキーデータ(KD)を複数の分割データに分割する。分割部220は,144bitのキーデータ(KD)を,8bitずつ,18個の分割データへと分割する。図7に示した例において,キーデータ(KD)は,“00”“02”“02”“03”“04”“05”“05”“07”“08”“09”“01”“0B”“0C”“0D”“0E”“0F”“10”“FF”という18個の分割データに分割される。
その後,書込部230は,分割部220によって生成された分割データを,分割メモリ110a〜110mに割り当てて,エントリアドレス(EA)を書き込んでいく。しかしながら,1番目〜18番目の分割メモリ110a〜110mのすべてにおいて,分割データに対応するメモリ空間(D)に既に他のエントリアドレス(EA)が書き込まれている。このため,書込部230は,分割データに対応するエントリアドレス(EA)を検索メモリマット100内に書き込むことができない。
そこで,このような全衝突が発生した場合に,書込部230は,全衝突が生じたキーデータ(KD)を,固有のエントリアドレス(EA)と対応付けて,バックアップメモリ400に書き込む。バックアップメモリ400は,例えば図2に示されるように,キーデータ(KD)とエントリアドレス(EA)と一対一で対応付けて記憶することのできるメモリである。バックアップメモリ400は,例えばSRAMなどの公知のメモリによって構成することができる。このように,書込部230は,検索メモリマット100に書き込むと全衝突が生じるキーデータ(KD)については,バックアップメモリ400に書き込んでおくことが好ましい。検索メモリマット100とは別に,バックアップメモリ400を設けておくことで,全衝突が生じたキーデータ(KD)の書込処理が簡易になるととともに,全衝突が生じたキーデータ(KD)の検索処理(読出処理)を効率的に行うことができるようになる。なお,書込部230は,上記のように全衝突が発生しキーデータ(KD)をバックアップメモリ400に書き込む場合には,これと同じキーデータ(KD)を確認用メモリ300に書き込むこととしてもよいし,書き込まないこととしてもよい。確認用メモリ300に全衝突が生じているキーデータを書き込むか否かは,任意に設計することができる。
続いて,図1,図2,及び図8〜図11を参照して,半導体装置10による基本的な読出処理(検索処理)について説明を行う。ここでの読出処理とは,検索対象のキーデータ(KD)が半導体装置10に入力されたときに,この半導体装置10が,検索メモリマット100を検索して,検索対象のキーデータ(KD)に対応するエントリアドレス(EA)を読み出して出力する処理である。なお,符号化処理を含む読出処理については後ほど説明する。
基本的な書込処理のメインフローは,図8に示されている。また,図8に示したメインフローのうち,検索メモリマットからエントリアドレス(EA)を読み出す処理(ステップS9)の具体的なフローが,図9に示されている。さらに,読出処理の具体例が,図10及び図11に示されている。この半導体装置10では,検索対象のキーデータ(KD)に対応したエントリアドレス(EA)を検索メモリマット100から読み出す処理が行われる。
図8に示されるように,読出処理においては,まず,検索対象のキーデータが,半導体装置10に入力される(ステップS6)。ここで,図2に示されるように,検索対象のキーデータは,制御回路200の入力部210に入力されることとなる。検索対象のキーデータが制御回路200の入力部210に入力されると,この入力部210は,キーデータを分割部220及び確認部250へと送出する。また,入力部210は,入力されたキーデータを,符号化回路500を経由して,分割部220へと送出することとしてもよい。なお,符号化回路500による処理(ステップS7)については,詳しくは後述する。
図8に示されるように,分割部220は,検索対象のキーデータ(KD)を,複数の分割データへと分割する(ステップS8)。ここで,分割部220が検索対象のキーデータ(KD)を分割するときの条件(アルゴリズム)は,上述した書込対象のキーデータ(KD)を分割するときの条件(アルゴリズム)と同じである。分割部220によって得られた複数の分割データは,読出部240へと送出される。
続いて,読出部240は,検索メモリマット100から,検索対象のキーデータ(KD)に対応するエントリアドレス(EA)を読み出す処理を行う(ステップS9)。具体的には,読出部240は,複数の分割データのそれぞれを分割メモリ110a,110b…に割り当て,各分割データをアドレスとして各分割メモリ110a,110b…のメモリ空間にアクセスし,このアクセスしたメモリ空間に記憶されているエントリアドレス(EA)を順次読み出していく。このステップS9において行われる処理は,図9においてより詳しく説明されている。
図9では,キーデータ(KD)の分割数をnで定義し,この分割データの順序をkで定義している。図9に示されるように,まず,“k”に“1”が代入されて,n個の分割データのうち1番目(最初)の分割データの処理が開始される(ステップS9A)。
次に,読出部240は,1番目の分割データをアドレスとして,分割メモリのメモリ空間にアクセスする(ステップS9B)。このステップS9Bの処理は,図4に示したステップS5Bの処理と同じである。つまり,読出部240は,まず,1番目(k番目)の分割データを1番目(k番目)の分割メモリ110aに送出する。また,読出部240は,1番目の分割メモリ110aのy軸に割り当てられた複数のメモリアドレス(MA)の中から,1番目の分割データと同じ値のメモリアドレス(MA)を探し出す。そして,読出部240は,1番目の分割メモリ110aのメモリ空間のうち,1番目の分割データと同じ値を持つメモリアドレス(MA)によって特定されるメモリ空間にアクセスする。
その後,読出部240は,ステップS9Bでアクセスしたメモリ空間からエントリアドレス(EA)を読み出す(ステップS9C)。なお,アクセスしたメモリ空間にエントリアドレス(EA)が記憶されていない場合には,読出部240は何も読み出さない。若しくは,読出部240は“検索結果なし”という信号を生成してもよい。
読出部240は,このような読出処理を,分割メモリ110a,110b…のすべてについて行う。つまり,上記ステップS9Cの後,読出部240は,“k”に“1”を加えて,この“k+1”の値を“k”に代入する(ステップS9D)。そして,読出部240は,ステップS9Dを経て得られた“k”の値が“n(キーデータの分割数)”と等しくなったか否かを確認する(ステップS9E)。kがn未満(k<n)である場合,読出部240は,ステップS9Bに戻る。例えば,1番目(k番目)の分割データについて読出処理が完了した後には,2番目(k+1番目)の分割データについての読出処理を続けて行う。このように,読出部240は,すべての分割メモリ110a,110b…の読出処理を終えるまで,複数の分割データに基づいて読出処理を行う。なお,図9に示した例では,説明を簡単にするために,ステップS5Fにおいて“k”に“1”を加えることとしているが,その他のアルゴリズムを採用することも可能である。
読出部240は,ステップS9Fにおいて,全ての分割データについて読出処理を終えたと判断した場合,つまりk=nに達したと判断した場合,次のステップS9Fへと移行する。ステップS9Fにおいて,まず,読出部240は,ステップS9B〜ステップS9Eの処理を繰り返し行うことで読み出した一又は複数のエントリアドレス(EA)を,確認部250へと送出する。確認部250は,読出部240から一又は複数のエントリアドレス(EA)を受け取ると,これらのエントリアドレスをキーとして,確認用メモリ300にアクセスする。そして,確認部250は,確認用メモリ300から,これらの一又は複数のエントリアドレス(EA)と対応付けて記憶されているキーデータ(KD)を読み出す。すなわち,上述したとおり,図3に示したステップS4において,書込処理時に,確認用メモリ300には,書込対象のキーデータ(KD)とエントリアドレス(EA)が対応付けて記憶されている。このため,読出処理時において,確認部250は,エントリアドレス(EA)をキーとしてこの確認用メモリ300を検索すれば,このエントリアドレス(EA)に対応したキーデータ(KD)を読み出すことができる。
続いて,確認部250は,入力部210から検索対象のキーデータ(KD)を受け取り,ステップS9Fで確認用メモリ300から読み出したキーデータ(KD)が,この検索対象のキーデータ(KD)と一致するかどうかを判断する(ステップS9G)。つまり,本発明の読出処理では,読出部240が検索メモリマット100から複数のエントリアドレス(EA)の候補を読み出すことが想定される。このようにエントリアドレス(EA)の候補が複数存在すると,検索対象のキーデータ(KD)に対応するエントリアドレス(EA)を一意に定めることができない。そこで,複数のエントリアドレス(EA)の候補の中から,検索対象のキーデータ(KD)に対応するエントリアドレス(EA)を一つ決定するために,確認部250が存在する。この確認部250は,一致判定処理(ステップS9G)を行う。すなわち,確認部250は,複数のエントリアドレス(EA)の候補のそれぞれについて,確認用メモリ300から,これらに対応する複数のキーデータ(KD)の候補を読み出す。また,確認部250は,複数のキーデータ(KD)の候補と入力部210から受け取った検索対象のキーデータ(KD)とを照合する。そして,確認部250は,複数のキーデータ(KD)の候補の中に,検索対象のキーデータ(KD)と一致するものが存在するかどうかを判定する。
ステップS9Gにおいて,確認部250が,複数のキーデータ(KD)の候補の中に,検索対象のキーデータ(KD)と一致するものが存在すると判定した場合,ステップS9Hに移行する。ステップS9Hでは,確認部250によって検索対象のキーデータ(KD)と一致すると判断されたキーデータ(KD)に対応するエントリアドレス(EA)を,確認部250から出力部260へと出力する(ステップS9H)。その読出処理は,図8のメインフローへと戻る。出力部260は,外部回路に接続されている。このため,出力部260を介して,エントリアドレス(EA)が外部回路へと出力される(ステップS10)。このように,出力部260は,半導体装置10の出力インターフェースとして機能する。これにより,半導体装置10は,検索対象のキーデータ(KD)に対応するエントリアドレス(EA)を検索結果として出力することが可能となる。
他方,ステップS9Gにおいて,確認部250が,複数のキーデータ(KD)の候補の中に,検索対象のキーデータ(KD)と一致するものが存在しないと判定した場合,ステップS9Iに移行する。ステップ9Iでは,読出部240が,検索対象のキーデータ(KD)に基づいて,バックアップメモリ400を参照する(ステップS9I)。その後,読出部240は,この参照したバックアップメモリ400内に検索対象のキーデータ(KD)と同じキーデータが記憶されているか否かを判定する(ステップ9J)。ここで,バックアップメモリ400内に検索対象のキーデータ(KD)と同じキーデータが記憶されている場合,読出部240は,そのキーデータと関連付けられているエントリアドレス(EA)を読み出す。その後,読出部240は,バックアップメモリ400から読み出したエントリアドレス(EA)を出力部260へと出力する(ステップS9H)。他方で,バックアップメモリ400内に検索対象のキーデータ(KD)と同じキーデータが記憶されていない場合,読出部240は,“一致データ無し”と判定する(ステップS9K)。つまり,“一致データ無し”とは,検索対象のキーデータ(KD)と同じキーデータ(KD)が,未だ半導体装置10に書き込まれていないことを意味する。読出部240が“一致データ無し”と判定した場合,読出処理は終了する。
ここで,読出部240と確認部250の間には,絞込部270を設けてもよい(図1参照)。つまり,上述したステップS9Fの前に,絞込部270によって,エントリアドレスの候補を絞り込む処理を行うこともできる。具体的に説明すると,本発明の読出処理においては,読出部240によって複数のエントリアドレスが読み出される場合がある。この場合,複数のエントリアドレスのそれぞれについて,確認用メモリ300を照合すれば,検索対象のキーデータに対応するエントリアドレスを一意に定めることができる。しかしながら,読出部240によって読み出されたエントリアドレスが多いと,確認用メモリ300を逐一参照していたのでは,読出処理の遅延を招くおそれがある。そこで,読出部240と確認部250の間に,絞込部270を配置する。そして,この絞込部270によって,読出部240が読み出した複数のエントリアドレスの中から,それよりも少ない候補を絞り込む処理を行い,絞込後のエントリアドレスを確認部250へと送出する。これにより,確認部250によって確認用メモリ300を参照する回数が減少するため,検索処理の高速化を図ることができる。このような絞込部270の具体例については,図14及び図15を参照して後ほど詳しく説明する。
次に,図10及び図11を参照して,読出部240及び確認部250による読出処理について,具体例を挙げて説明する。
まず,図10は,基本的な読出処理の例を示している。図10に示した例では,“00_02_02_03_04_05_06_07_08_09_0A_0B_0C_0D_0E_0F_10_FF”という値のキーデータ(KD)が,検索対象として,半導体装置10に入力される。検索対象のキーデータ(KD)が半導体装置10に入力されると,分割部220が,このキーデータ(KD)を複数の分割データに分割する。図10に示された例において,分割部220は,144bitのキーデータ(KD)を,8bitずつ,18個の分割データへと分割する。このため,各分割データは,8bitの値となる。図10に示した例において,キーデータ(KD)は,“00”“02”“02”“03”“04”“05”“06”“07”“08”“09”“0A”“0B”“0C”“0D”“0E”“0F”“10”“FF”という18個の分割データに分割される。
その後,読出部240は,分割部220によって生成された分割データをアドレスとして分割メモリ110a〜110mのメモリ空間(D)にアクセスし,エントリアドレス(EA)を読み出していく。図10に示されるように,まず,読出部240は,1番目の分割データ“00”を1番目の分割メモリ110aに割り当てて,1番目の分割データ“00”を参照して1番目の分割メモリ110aのメモリアドレス(MA)“00”を指定し,このメモリアドレス(MA)“00”によって特定されるメモリ空間(D)にアクセスする。アクセスしたメモリ空間(D)には,エントリアドレス(EA)“00”が記憶されているため,読出部240は,このエントリアドレス(EA)“00”を読み出す。同様に,読出部240は,2番目の分割データ“02”をアドレスとして,2番目の分割メモリ110bのメモリ空間(D)にアクセスし,エントリアドレス(EA)“01”を読み出す。読出部240は,このような処理を全ての分割データ及び分割メモリに対して実行する。図10に示した例では,1番目の分割メモリ110aからエントリアドレス“00”が読み出され,2番目の分割メモリ110bからエントリアドレス“01”が読み出され,3番目の分割メモリ110cからエントリアドレス“02”が読み出され,18番目の分割メモリ110mからエントリアドレス“FE”が読み出されている。その他の分割メモリについては,該当するメモリ空間(D)にエントリアドレスが記憶されておらず,読出部240は,“検索結果なし”と判断している。
このように,本発明の読出処理においては,エントリアドレスが,例えば“00”“01”“02”“FE”のように,複数読み出されることがある。その場合,どのエントリアドレスが検索対象のキーデータに対応するものであるかを一意に定めることができない。そこで,読出部240が読み出した複数のエントリアドレス“00”“01”“02”“FE”を候補として,この中に正しいエントリアドレスが含まれているかどうかを,確認部250によって確認する処理を行う。
具体的に説明すると,図10に示されるように,確認部250は,読出部240によって読み出された複数のエントリアドレスの候補“00”“01”“02”“FE”のそれぞれをキーとして,確認用メモリ300にアクセスする。確認用メモリ300には,エントリアドレス(EA)一対一で関連付けて,キーデータ(KD)が記憶されている。従って,確認部250は,エントリアドレス(EA)の候補“00”“01”“02”“FE”に対応するキーデータ(KD)を,確認用メモリ300から読み出すことができる。そして,確認部250は,確認用メモリ300から読み出したキーデータ(KD)のそれぞれを,検索対象のキーデータ(KD)と比較して,互いに一致するかどうかを確認する。図10に示した例においては,確認用メモリ300のうち,エントリアドレス“02”と対応付けられた記憶領域に,“00_02_02_03_04_05_06_07_08_09_0A_0B_0C_0D_0E_0F_10_FF”というキーデータ(KD)が記憶されている。このキーデータ(KD)は,検索対象のキーデータ(KD)と一致している。従って,確認部250は,検索対象のキーデータ(KD)に対応するエントリアドレス(EA)は,“02”であると判断することができる。そこで,確認部250は,キーデータ(KD)同士の一致情報とともに,検索対象のキーデータ(KD)に対応するエントリアドレス(EA)“02”を出力する。これにより,検索対象のキーデータ(KD)に対応するエントリアドレス(EA)を一意に定めることができる。
他方で,確認部250が確認用メモリ300を参照した結果,読出部240によって読み出されたエントリアドレスの候補の中に,検索対象のキーデータ(KD)に対応するものが存在しないと判断される場合がある。このような例が,図11に示されている。
図11に示した例では,検索対象のキーデータ(KD)として,“00_02_02_03_04_05_05_07_08_09_01_0B_0C_0D_0E_0F_10_FF”という値が入力されている。分割部220は,入力されたキーデータ(ED)を18分割する。また,読出部240は,複数の分割データのそれぞれを,検索メモリマット100を構成する複数の分割メモリ110a〜110mに割り当てる。また,読出部240は,各分割データをアドレスとして,各分割メモリ110a〜110mのメモリ空間(D)にアクセスし,そこに記憶されているエントリアドレス(EA)を読み出す。図11の例では,図10に示した例では,1番目の分割メモリ110aからエントリアドレス“00”が読み出され,2番目の分割メモリ110bからエントリアドレス“01”が読み出され,3番目の分割メモリ110cからエントリアドレス“02”が読み出され,18番目の分割メモリ110mからエントリアドレス“FE”が読み出されている。その後,確認部250は,読出部240が読み出したエントリアドレス(EA)の候補を用いて,確認用メモリ300を参照し,このエントリアドレスの候補に関連付けられているキーデータ(KD)を読み出す。そして,確認部250は,確認用メモリ300から読み出した複数のキーデータ(KD)と,検索対象のキーデータ(KD)とを比較し,一致するかどうかを判断する。しかし,図11の例では,確認用メモリ300に,検索対象のキーデータ(KD)と一致するキーデータ(KD)が記憶されていない。このため,確認部250は,“不一致”と判断する。
しかしながら,図7で示したように,キーデータに対応するエントリアドレスを書き込む際に,すべての分割メモリにおいて衝突が発生し,エントリアドレスを分割メモリ内に書き込むことができていない場合がある。このような全衝突が発生した場合,本発明では,全衝突したキーデータ(KD)とこれに対応するエントリアドレス(EA)とをバックアップメモリ400に書き込むこととしている(図7参照)。従って,図11に示されるように,確認部250において“不一致”と判断された場合においても,バックアップメモリ400内にキーデータ(KD)が記録されている場合がある。そこで,図11に示されるように,“不一致”と判断された場合,読出部240は,バックアップメモリ400内を検索して,検索対象のキーデータと一致するキーデータが記憶されているかどうかを調査する。ここで,図11の例では,バックアップメモリ400内に検索対象のキーデータと一致するキーデータが記憶されており,それに対応するエントリアドレスが“FF”となっている。従って,読出部240は,バックアップメモリ400内を検索することで,検索対象のキーデータに対応するエントリアドレスが“FF”であると判断できる。このため,読出部240は,検索結果として,エントリアドレス“FF”を出力する。
上記した書込方式及び読出方式を採用することで,本発明の半導体装置10は,最大で,検索メモリマット100のエントリ数と同じ数だけ,キーデータ(KD)を書き込むことができる。図5等示した例では,半導体装置10の総エントリ数が256エントリであるため,最大で256個のキーデータ(KD)を登録することができる。従って,半導体装置10の書込容量を飛躍的に向上させることができる。
次に,図1〜図3,図8,図12及び図13を参照して,キーデータ(KD)の符号化処理について説明する。
上述したとおり,本発明の半導体装置10は,エントリアドレス(EA)の書込処理において衝突が発生したときには,メモリ空間にエントリアドレスを書き込まないこととしている。ここで,書込対象のキーデータ(KD)に偏りがあると,データの衝突頻度が高くなり,検索不能データ列が多くなるという問題が発生する。例えば,ID番号やIPアドレスを降順で連続的に書き込む場合のように,ほとんど同じデータが連続して同じ検索メモリマット100に書き込まれると,データの偏りが発生する。これにより,検索メモリマット100内において,エントリアドレスの衝突が発生する確率が高くなる。例えば,“00_01_02_03”というキーデータ(KD)に続けて,“00_01_02_04”というキーデータ(KD)が入力されたことを考えると,2つのキーデータ(KD)の値には最後の1bitしか違いがない。このため,後者のキーデータ(KD)の書込処理を行う際には,最後までエントリアドレスを書き込むことができない。従って,このようなデータの偏りは,防ぐことが好ましい。
そこで,本発明の半導体装置10は,図1及び図2に示されるように,キーデータ(KD)を符号化するための符号化回路500を備える。書込処理において,符号化回路500は,制御回路200に入力された書込対象のキーデータ(KD)が,分割部220において分割される前に符号化する(図3:ステップS2)。同様に,読出処理において,符号化回路500は,制御回路200に入力された検索対象のキーデータ(KD)が,分割部220において分割される前に符号化する(図8:ステップS7)。ここにいう符号化には,キーデータの値を所定のアルゴリズムで拡散(分散)させることや,キーデータの値の順番を並び替えるような処理が含まれる。このように,ほとんど同じキーデータが続けて入力された場合であっても,これらのキーデータを符号化することにより,検索メモリマット100に書き込まれるデータの偏りを解消することが可能となる。データの偏りが解消すれば,検索メモリマット100内で衝突が発生する可能性を低下させることができる。その結果,正確にデータ検索を行うことのできる可能性が高まる。なお,符号化回路500は,書込対象のキーデータ(KD)についても検索対象のキーデータ(KD)についても全く同じアルゴリズムで符号化する。これにより,書込対象のキーデータ(KD)と検索対象のキーデータ(KD)を整合させることができる。
図12は,符号化回路500によって実行される符号化処理の一例を概念的に示している。図12に示されるように,符号化回路500は,書込対象/検索対象のキーデータ(144bit)を,複数の分割データ(1〜18)に分割する。このときの分割処理は,上述した分割部220による処理と同じようにすればよい。その後,符号化回路500は,複数の分割データ(1〜18)の位置を並べ替える。このときの並べ替え処理は,一定のアルゴリズムに基づいて行われる。その後,符号化回路500は,並べ替えられた複数の分割データの値を拡散(分散)させる。分割データの値の拡散処理は,公知の符号化アルゴリズム(暗号化アルゴリズム)に基づいて行うことができる。例えば,拡散処理を行うことで,最初に入力されたキーデータ(KD)は,bit数を維持したまま,異なる値に変換されることが好ましい。図12に示された例において,最初のキーデータ(KD)と拡散処理後のデータ(拡散化データ)は,共に144bitのデータであるとされている。
上記のように,例えば並べ替え処理と拡散処理との組み合わせによって,符号化回路500はキーデータ(KD)を符号化することができる。符号化されたキーデータ(拡散化データ)は,制御回路200の分割部220に入力される(図1及び図2参照)。その後,図12に示されるように,制御回路200は,通常どおり,拡散化データを分割して,複数の分割データを生成し,各分割データをアドレスとして,検索メモリマット100を構成する分割メモリにアクセスする。そして,制御回路200は,アクセスした分割メモリに対してエントリアドレス(EA)を書き込む処理,又はアクセスした分割メモリからエントリアドレス(EA)を読み出す処理を行う。
図13は,符号化回路500によって実行される符号化処理の他の例を概念的に示している。図13に示されるように,符号化回路500は,書込対象/検索対象のキーデータ(144bit)を複製する。例えば,図13に示されているように,分割メモリが18個存在する場合には,符号化回路500は,この分割メモリの数に併せて,キーデータ(KD)を18個複製する。複製された複数のキーデータ(KD)は同じ値を持つものである。その後,符号化回路500は,同じ値を持つ複数のキーデータ(KD)に対して,それぞれ異なる拡散アルゴリズムに基づいた拡散処理を行う。例えば,キーデータ(KD)は18個に複製されているため,拡散アルゴリズムも18種類用意されている。これにより,異なる値を持つ拡散化データが得られる。このように,符号化回路500は,1つのキーデータ(KD)から,複数(分割メモリに対応した数)の拡散化データを生成することとしてもよい。
上記のように,例えば複製処理と拡散処理との組み合わせによって,符号化回路500はキーデータ(KD)を符号化することができる。複数の拡散化データは,制御回路200の分割部220に入力される(図1及び図2参照)。その後,図13に示されるように,制御回路200は,複数の拡散化データをそれぞれ分割して,各拡散化データから複数の分割データを生成する。また,制御回路200は,各分割データをアドレスとして,検索メモリマット100を構成する分割メモリにアクセスする。そして,制御回路200は,アクセスした分割メモリに対してエントリアドレス(EA)を書き込む処理,又はアクセスした分割メモリからエントリアドレス(EA)を読み出す処理を行う。
このように,符号化回路500を設けて,書込対象のキーデータ(KD)を符号化することにより,検索メモリマット100に書き込まれるデータの偏りを解消することができる。データの偏りが解消すれば,検索メモリマット100内で衝突が発生する可能性を低下させることができる。その結果,正確にデータ検索を行うことのできる可能性が高まる。
次に,図14及び図15を参照して,エントリアドレス(EA)の候補の絞り込み処理について説明する。
図14及び図15は,エントリアドレス(EA)の読出処理において,読出部240によって読み出された複数のエントリアドレス(EA)の候補の中から,検索対象のキーデータ(KD)に対応する可能性が高いものを絞り込むための処理の例を示している。上述したとおり,本発明の読出方式では,読出部240が,検索メモリマット100から複数のエントリアドレス(EA)の候補を読み出してくる。エントリアドレス(EA)の候補が複数存在していても,上述のとおり,逐一確認用メモリ300を利用して照合すれば,検索対象のキーデータ(KD)に対応するエントリアドレス(EA)を一意に定めることができる。しかし,エントリアドレス(EA)の候補の数が多いと,確認用メモリ300と照合する回数が増えるため,読出処理に遅延が発生する可能性がある。そこで,読出部240によって読み出された複数のエントリアドレス(EA)の候補の中から,さらに絞り込みを行い,確認用メモリ300と照合する回数を減らすことが好ましい。
図14は,まず,書込対象のキーデータ(KD)に対応するエントリアドレス(EA)を半導体装置10に書き込む処理の概要を示している。図14に示されるように,1つのキーデータ(KD)を書き込むための検索メモリマット100が,第1の検索メモリマット100aと第2の検索メモリマット100bとから構成されている。つまり,書込対象のキーデータ(KD)は,第1の検索メモリマット100aと第2の検索メモリマット100bの両方に入力されて書き込まれる。また,符号化回路500は,第1の検索メモリマット100a用に設けられた第1の符号化回路500aと,第2の検索メモリマット100b用に設けられた第2の符号化回路500bとから構成されている。これらの第1の符号化回路500aと第2の符号化回路500bとは,それぞれ符号化方式(拡散式)が異なっている。つまり,第1の符号化回路500aは,書込対象のキーデータ(KD)を拡散式Aにて拡散させるのに対し,第2の符号化回路500bは,書込対象の(KD)を拡散式Bにて拡散させる。
図14に示されるように,例えば,288bitのキーデータ(KD)が半導体装置10内に入力されると,このキーデータ(KD)に固有のエントリアドレス(EA)を割り当てて,これらの関連性を確認用メモリ300に記録する。また,エントリアドレス(EA)の割り当てられたキーデータ(KD)は,第1の符号化回路500aと第2の符号化回路500bの両方に入力される。各符号化回路500a,500bは,所定のアルゴリズムによって,書込対象のキーデータ(KD)を288bit長から366bit長に拡散させる点において共通している。このように,キーデータのbit長を長くすることで,書込処理において全衝突が発生する可能性を低減できる。他方で,各符号化回路500a,500bは,キーデータの拡散方式が異なる。このため,各符号化回路500a,500bには,同じ値のキーデータ(288bit)が入力されるが,各符号化回路500a,500bから出力される拡散後のキーデータは,その値が全く異なっている。ただし,各符号化回路500a,500bから出力される拡散後のキーデータは,bit長(366bit)が共通している。その後,半導体装置10は,第1の符号化回路500aによって拡散されたキーデータを24分割し,各分割データをアドレスとして,第1の検索メモリマット100aの適所に,エントリアドレス(EA)を書き込んでいく。同時に,半導体装置10は,第2の符号化回路500aによって拡散されたキーデータを24分割し,各分割データをアドレスとして,第2の検索メモリマット100bの適所に,エントリアドレス(EA)を書き込んでいく。ここでのエントリアドレス(EA)の書込処理は,上述した方法と同じである。このようにして,図14の実施形態において,半導体装置10は,2つの異なる符号化回路500a,500bを用いて,1つのキーデータ(KD)を別々の符号化方式で符号化し,符号化後の2つのキーデータを,それぞれ2つの異なる検索メモリマット100a,100bに書き込んでおく。
図15に示されるように,まず,検索対象のキーデータ(KD)に対応するエントリアドレス(EA)を半導体装置10から読み出す処理の概要を示している。図15に示された実施形態において,半導体装置10の制御回路200は,さらに絞込部270を有している。絞込部270は,読出部240と確認部250の間に設けられる。絞込部270は,読出部240が第1の検索メモリマット100a及び第2の検索メモリマット100bから読み出したエントリアドレス(EA)の候補の中から,さらに絞り込みを行うための機能を有している。絞込部270は,絞り込んだエントリアドレス(EA)の候補を確認部250へと送出する。このため,確認部250は,絞込部270によって絞りこまれた候補についてのみ,確認用メモリ300での照合を行えば済む。従って,エントリアドレス(EA)の検索処理を高速化させることができる。
具体的に説明すると,288bitの検索対象のキーデータ(KD)が半導体装置10に入力される。検索対象のキーデータ(KD)は,第1の符号化回路500a及び第2の符号化回路500bにそれぞれ入力され,366bitに拡散される。拡散後の2つのキーデータ(KD)は,その後,それぞれ24分割される。読出部240は,第1の符号化回路500aを経て得られた分割データをアドレスとして,第1の検索メモリマット100aのメモリ空間にアクセスし,そこに記憶されているエントリアドレス(EA)を読み出す。これにより,第1の検索メモリマット100aから一又は複数のエントリアドレス(EA)の候補が抽出される。第1の検索メモリマット100aは,24個の分割メモリから構築されている。このため,この第1の検索メモリマット100aから読み出され得るエントリアドレス(EA)の候補の数は,最大で24個となる。同時に,読出部240は,第2の符号化回路500bを経て得られた分割データをアドレスとして,第2の検索メモリマット100bのメモリ空間にアクセスし,そこに記憶されているエントリアドレス(EA)を読み出す。これにより,第2の検索メモリマット100bから一又は複数のエントリアドレス(EA)の候補が抽出される。この第2の検索メモリマット100bから読み出され得るエントリアドレス(EA)の候補の数も,最大で24個となる。
ここで,読出部240は,第1の検索メモリマット100a及び第2の検索メモリマット100bから読み出したエントリアドレス(EA)の候補を,それぞれ絞込部270へと送出する。ここで,絞込部270は,第1の検索メモリマット100aから読み出されたエントリアドレス(EA)の候補と,第2の検索メモリマット100bから読み出されたエントリアドレス(EA)の候補とを比較して,共通するエントリアドレス(EA)の候補を抽出する。例えば,第1の検索メモリマット100aから読み出されたエントリアドレス(EA)の候補に,“01”“02”“03”“04”が含まれており,第2の検索メモリマット100bから読み出されたエントリアドレス(EA)の候補に,“03”“04”“05”“06”が含まれている場合,絞込部270は,これらの共通している“03”“04”のエントリアドレスの候補を抽出する。その後,絞込部270は,このようにして絞り込んだエントリアドレスの候補を確認部250へと伝達する。
確認部250は,絞込部270から受け取ったエントリアドレス(EA)の候補について,確認用メモリ300での照合を行う。つまり,確認部250は,エントリアドレス(EA)の候補をキーとして確認用メモリ300にアクセスし,そのエントリアドレス(EA)と対応付けて記憶されているキーデータ(KD)を読み出し,この読み出したキーデータ(KD)が検索対象として入力されたキーデータ(KD)と一致するかどうかの照合処理を行う。そして,半導体装置10は,確認用メモリ300から読み出したキーデータと検索対象のキーデータが一致した場合,そのキーデータに対応するエントリアドレス(EA)を検索結果として出力することができる。
上記のように,読出部240と確認部250との間に絞込部270を設けることで,確認部250が確認用メモリ300に照合を行う回数を減らすことができる。例えば,絞込部270存在していない場合に,第1の検索メモリマット100aから読み出されたエントリアドレス(EA)の候補に,“01”“02”“03”“04”が含まれており,第2の検索メモリマット100bから読み出されたエントリアドレス(EA)の候補に,“03”“04”“05”“06”が含まれていると,確認部250は,確認用メモリ300に最低でも4回の照合を行う必要がある。これに対して,絞込部270が存在していると,エントリアドレスの候補を“03”“04”の2つに絞り込むことができる。絞込部270を設けることで,確認部250は,確認用メモリ300に2回の照合を行えば済むようになる。従って,検索処理の高速化を実現することができる。
なお,エントリアドレスの候補の絞り込み処理は,上述した形態に限定されない。すなわち,絞り込み処理を行うことで,読出部240によって読み出されたエントリアドレスの数よりも,確認部250によって確認用メモリ300に照合されるエントリアドレスの数を少なくすることができればよい。このように,絞込部270としては,エントリアドレスの数を少なくすることのできるものであれば,どのような形態であっても採用することができる。
次に,図16〜図18を参照して,データの偏りが生じにくい書込処理の方式例について説明する。
図5〜図7を参照して説明したとおり,本発明の半導体装置10は,書込対象のキーデータを複数の分割データに分割した後,各分割データを検索メモリマット100を構成する複数の分割メモリ110a,110b…に順番に割り当てて,この分割データに対応するエントリアドレス(EA)を順次書き込んでいく。このとき,一般的には,1番目の分割データから書込処理が開始され,2番目,3番目,それ以降といったように,キーデータの先頭から末尾に向かって順番に書込処理が行われる。しかし,本発明の半導体装置10では,上述したとおり,エントリアドレスの書き込みに成功した場合には,それ以降の書込処理は行わずに書込処理を終了させる。このため,すべての書込対象のキーデータについて一律的に1番目の分割データから書込処理を開始すると,1番目の分割メモリ110aにアクセスが集中する。また,すべての書込対象のキーデータについて一律的に先頭部分から書込処理を開始すると,検索メモリマット100の前半部分の分割メモリにエントリアドレスの書込が集中し,後半部分の分割メモリに空き領域が多くなる。このように,検索メモリマット100内においてデータの書込済み領域に偏りが生じると,書込処理の際に衝突の発生回数が増えて書込処理に遅延が生じたり,読出処理の精度が低下したり,読出処理に遅延が生じるおそれがある。そこで,以下では,データの偏りが生じにくい書込処理の方式例を説明する。
図16に示した方式では,書込処理を行う際に,先頭側から処理を行うキーデータと,末尾側から処理を行うキーデータとに分けている。具体的に説明すると,(1)の書込対象のキーデータについては,拡散符号化し,18個の分割データに分割した後,1番目(先頭)の分割データから昇順で書込処理を行う。他方で,(2)の書込対象のキーデータについては,拡散符号化し,18個の分割データに分割した後,18番目(末尾)の分割データから降順で書込処理を行う。また,(3)の書込対象のデータは,1番目(先頭)の分割データから昇順で書き込み,(4)の書込対象のデータは,18番目(末尾)の分割データから降順で書き込むこととしている。このように,図16の書込方式では,書込対象のキーデータが入力されたときに,先頭から書き込みを開始するものと末尾から書き込みを開始するものとに分ける。これにより,検索メモリマット100内に書き込まれるデータの偏りを解消することができる。
図17に示した方式では,検索メモリマット100を上下2段で構成している。つまり,検索メモリマット100は,y軸方向に,上側メモリマット100cと下側メモリマット100dとを連結して構成されたものである。上側メモリマット100cと下側メモリマット100dは,それぞれ,x軸方向に,18個の分割メモリに分割されている。ここで,(1)の書込対象のキーデータについては,拡散符号化し,18個の分割データに分割した後,上側メモリマット100cに対して,1番目(先頭)の分割データから昇順で書込処理を行う。他方,(2)の書込対象のキーデータについては,拡散符号化し,18個の分割データに分割した後,下側メモリマット100dに対して,18番目(末尾)の分割データから降順で書込処理を行う。また,(3)の書込対象のデータは,上側メモリマット100cに1番目(先頭)の分割データから昇順で書き込み,(4)の書込対象のデータは,下側メモリマット100dに18番目(末尾)の分割データから降順で書き込むこととしている。このように図17の書込方式では,上下2段のメモリマットによって検索メモリマット100を構築し,書込対象のキーデータが入力されたときに,上側メモリマット100cに書き込みを行うものと下側メモリマット100dに書き込みを行うものとに分ける。これにより,検索メモリマット100内に書き込まれるデータの偏りを解消することができる。なお,図17では示していないが,上側メモリマット100cに18番目(末尾)の分割データから昇順で書き込みを行ったり,下側メモリマット100dに1番目(先頭)の分割データから昇順で書き込みを行うことも可能である。
図18に示した方式では,書込処理を行う際に,キーデータごとに最初に書込を開始する分割データを異ならせている。図18では,最初に書込処理を行う分割データを,符号“S”で示している。具体的に説明すると,(1)の書込対象のキーデータについては,拡散符号化し,18個の分割データに分割した後,1番目(先頭)の分割データから昇順で書込処理を行う。また,(2)の書込対象のキーデータについては,拡散符号化し,18個の分割データに分割した後,2番目の分割データから昇順で書込処理を行う。また,(3)の書込対象のデータは,3番目の分割データから昇順で書き込み,(4)の書込対象のデータは,4番目の分割データから昇順で書き込むこととしている。このように,図18の書込方式では,書込対象のキーデータが入力されたときに,最初に書込処理を開始する分割データを異ならせる。これにより,検索メモリマット100内に書き込まれるデータの偏りを解消することができる。
本願明細書では,データの偏りが生じにくい書込処理の方式について,図16から図18に示した例を挙げたが,書込処理の方式はこれに限定されるものではない。例えば,第1のキーデータと第2のキーデータとを半導体装置10に書き込みする場合を想定する。この場合に,第1のキーデータについて書込処理を行うときには,第1のキーデータを分割して得られた複数の分割データのうち,k番目の分割データに対応するエントリアドレスを最初にメモリ空間に書き込むようにすればよい。他方,第2のキーデータについて書込処理を行うときには,第2のキーデータを分割して得られた複数の分割データのうち,k番目以外の分割データに対応するエントリアドレスを最初にメモリ空間に書き込むようにすればよい。また,最初に処理する分割データ以降については,降順又は昇順で処理することとしてもよいし,1つおき又は2つおきに処理してもよい。このように,書込対象のキーデータごとに,最初に書込処理を行う分割データを変えることで,効率的に検索メモリマットに対してキーデータに対応するエントリアドレスを書き込むことが可能となる。
以上,本願明細書では,本発明の内容を表現するために,図面を参照しながら本発明の実施形態の説明を行った。ただし,本発明は,上記実施形態に限定されるものではなく,本願明細書に記載された事項に基づいて当業者が自明な変更形態や改良形態を包含するものである。
10…半導体装置 100…検索メモリマット
100a…第1の検索メモリマット 100b…第2の検索メモリマット
100c…上側メモリマット 100d…下側メモリマット
110…分割メモリ 200…制御回路
210…入力部 220…分割部
230…書込部 240…読出部
250…確認部 260…出力部
270…絞込部 300…確認用メモリ
400…バックアップメモリ 500…符号化回路

Claims (13)

  1. メモリアドレスによって特定されるメモリ空間に,キーデータに対応するエントリアドレスが書き込まれる検索メモリマット(100)と,
    前記検索メモリマット(100)に接続された制御回路(200)と,を備えた
    半導体装置であって,
    前記検索メモリマット(100)は,
    メモリ空間が,メモリアドレスを保持したまま,複数の分割メモリ(110a,110b…)に区分されたものであり,
    前記制御回路(200)は,
    キーデータが入力される入力部(210)と,
    前記入力部(210)に入力されたキーデータを複数の分割データに分割する分割部(220)と,
    書込部(230)と,を有し,
    前記書込部(230)は,
    前記分割部(220)で分割された複数の分割データのそれぞれを,複数の分割メモリ(110a,110b…)に割り当てて,当該分割データをアドレスとして,当該分割メモリ(110a,110b…)のメモリアドレスによって特定されるメモリ空間に,当該分割データに対応するエントリアドレスを順次書き込んでいく第1書込処理を行うものであり,
    前記書込部(230)は,
    前記第1書込処理において,
    ある分割データに対応するエントリアドレスを書き込むべきメモリ空間に,既に他の分割データに対応するエントリアドレスが書き込まれている場合には,当該メモリ空間に,エントリアドレスを書き込まず,
    複数の分割データのうち,一つの分割データに対応するエントリアドレスをメモリ空間に書き込むことに成功した場合には,前記第1書込処理を終了させる
    半導体装置。
  2. 請求項1に記載の半導体装置であって,
    前記制御回路(200)に接続された確認用メモリ(300)を,さらに備え,
    前記書込部(230)は,
    前記入力部(210)に入力されたキーデータとこれに対応するエントリアドレスとを関連付けて前記確認用メモリ(300)に書き込む第2書込処理をさらに行う
    半導体装置。
  3. 請求項1に記載の半導体装置であって,
    バックアップメモリ(400)をさらに備え,
    前記書込部(230)は,
    あるキーデータから分割された複数の分割データの全てについて,それに対応するエントリアドレスをメモリ空間に書き込むことができない場合には,当該キーデータとこれに対応するエントリアドレスとを関連付けて前記バックアップメモリ(400)に書き込む
    半導体装置,
  4. 請求項1に記載の半導体装置であって,
    符号化回路(500)をさらに備え,
    前記符号化回路(500)は,
    前記制御回路(200)の前記入力部(210)に入力されたキーデータを所定のアルゴリズムに基づいて符号化し,符号化したキーデータを前記分割部(220)へと入力する
    半導体装置。
  5. 請求項4に記載の半導体装置であって,
    前記検索メモリマット(100)が,第1の検索メモリマット(100a)及び第2の検索メモリマット(100b)を含んで構成され,
    前記符号化回路(500)が,互いに符号化のアルゴリズムが異なる第1の符号化回路(500a)及び第2の符号化回路(500b)を含んで構成されており,
    前記制御回路(200)の書込部(230)は,
    前記第1の符号化回路(500a)によって符号化されたキーデータに対応するエントリアドレスを前記第1の検索メモリマット(100a)に書き込み,
    前記第2の符号化回路(500b)によって符号化されたキーデータに対応するエントリアドレスを前記第2の検索メモリマット(100b)に書き込む,
    半導体装置。
  6. 請求項1に記載の半導体装置であって,
    前記書込部(230)は,
    第1のキーデータについて前記第1書込処理を行うときには,第1のキーデータを分割して得られた複数の分割データのうち,k番目の分割データに対応するエントリアドレスを最初にメモリ空間に書き込み,
    第2のキーデータについて前記第1書込処理を行うときには,第2のキーデータを分割して得られた複数の分割データのうち,k番目以外の分割データに対応するエントリアドレスを最初にメモリ空間に書き込む
    半導体装置。
  7. 請求項1から請求項6のいずれかに記載の半導体装置であって,
    前記制御回路(200)は,
    前記入力部(210)に,検索対象データとしてのキーデータが入力され,前記分割部(220)が,当該検索対象データとしてのキーデータを複数の分割データに分割した場合において,
    前記分割データのそれぞれをアドレスとして,各分割メモリ(110a,110b…)のメモリアドレスによって特定されるメモリ空間にアクセスし,アクセスしたメモリ空間から,当該分割データに対応するエントリアドレスを読み出す読出部(240)を,さらに有する
    半導体装置。
  8. 請求項2を引用する請求項7に記載の半導体装置であって,
    前記制御回路(200)は,
    前記読出部(240)が読み出したエントリアドレスに対応するキーデータを,前記確認用メモリ(300)から読み出すとともに,前記確認用メモリ(300)から読み出したキーデータが,前記入力部(210)に入力された前記検索対象データとしてのキーデータと一致するか否かを確認する確認部(250)を,さらに有する
    半導体装置。
  9. 請求項8に記載の半導体装置であって,
    バックアップメモリ(400)をさらに備え,
    前記書込部(230)は,
    あるキーデータから分割された複数の分割データの全てについて,それに対応するエントリアドレスをメモリ空間に書き込むことができない場合には,当該キーデータとこれに対応するエントリアドレスとを関連付けて前記バックアップメモリ(400)に書き込むものであり,
    前記確認部(250)によって,前記読出部(240)が読み出した全てのエントリアドレスに対応するキーデータと前記検索対象データとしてのキーデータとが一致しないと判定された場合,
    前記読出部(240)は,
    前記バックアップメモリ(400)を参照して,前記検索対象データとしてのキーデータと一致するキーデータに対応するエントリアドレスを,前記バックアップメモリ(400)から読み出す
    半導体装置
  10. 請求項8に記載の半導体装置であって,
    前記読出部(240)によって複数のエントリアドレスが読み出された場合に,前記複数のエントリアドレスの中からエントリアドレスの候補を絞り込み,前記エントリアドレスの候補を前記確認部(250)へと送出する絞込部(270)を,さらに有する
    半導体装置。
  11. メモリアドレスによって特定されるメモリ空間に,キーデータに対応するエントリアドレスが書き込まれる検索メモリマット(100)と,
    前記検索メモリマット(100)に接続された制御回路(200)と,を備えた半導体装置(10)に,
    エントリアドレスを書き込む情報書込方法であって,
    前記検索メモリマット(100)は,
    メモリ空間が,メモリアドレスを保持したまま,複数の分割メモリ(110a,110b…)に区分されたものであり,
    前記情報書込方法は,
    前記制御回路(200)にキーデータが入力される工程と,
    前記制御回路(200)が,入力されたキーデータを複数の分割データに分割する工程と,
    書込工程と,を含み,
    前記書込工程は,
    分割された複数の分割データのそれぞれを,複数の分割メモリ(110a,110b…)に割り当てて,当該分割データをアドレスとして,当該分割メモリ(110a,110b…)のメモリアドレスによって特定されるメモリ空間に,当該分割データに対応するエントリアドレスを順次書き込んでいく第1書込処理と含み,
    前記第1書込処理において,
    ある分割データに対応するエントリアドレスを書き込むべきメモリ空間に,既に他の分割データに対応するエントリアドレスが書き込まれている場合には,当該メモリ空間に,エントリアドレスを書き込まず,
    複数の分割データのうち,一つの分割データに対応するエントリアドレスをメモリ空間に書き込むことに成功した場合には,前記第1書込処理を終了させる
    情報書込方法。
  12. 請求項11に記載の情報書込方法であって,
    前記半導体装置(10)は,前記制御回路(200)に接続された確認用メモリ(300)を,さらに備え,
    前記情報書込方法の前記書込工程は,
    前記制御回路(200)に入力されたキーデータとこれに対応するエントリアドレスとを関連付けて前記確認用メモリ(300)に書き込む第2書込処理をさらに含む
    情報書込方法。
  13. 請求項12に記載の情報書込方法によって,前記半導体装置(10)に対して書き込まれたエントリアドレスを読み出す情報読出方法であって,
    前記制御回路(200)に検索対象データとしてのキーデータが入力される工程と,
    前記制御回路(200)が,前記検索対象データとしてのキーデータを複数の分割データに分割する工程と,
    前記制御回路(200)が,前記分割データのそれぞれをアドレスとして,各分割メモリ(110a,110b…)のメモリアドレスによって特定されるメモリ空間にアクセスし,アクセスしたメモリ空間から,当該分割データに対応するエントリアドレスを読み出す工程と,
    読み出したエントリアドレスに対応するキーデータを,前記確認用メモリ(300)から読み出すとともに,前記確認用メモリ(300)から読み出したキーデータが,前記検索対象データとしてのキーデータと一致するか否かを確認する工程と,を含む
    情報読出方法。
JP2015101082A 2015-05-18 2015-05-18 半導体装置及び情報書込/読出方法 Active JP6205386B2 (ja)

Priority Applications (5)

Application Number Priority Date Filing Date Title
JP2015101082A JP6205386B2 (ja) 2015-05-18 2015-05-18 半導体装置及び情報書込/読出方法
CN201680021425.8A CN107533865B (zh) 2015-05-18 2016-04-18 半导体装置及信息写入/读取方法
PCT/JP2016/062291 WO2016185849A1 (ja) 2015-05-18 2016-04-18 半導体装置及び情報書込/読出方法
US15/574,690 US10423666B2 (en) 2015-05-18 2016-04-18 Writing method and semiconductor device including a search memory mat with write processing terminated when one piece of divided key data is successfully written
TW105112469A TWI621016B (zh) 2015-05-18 2016-04-21 半導體裝置及資訊寫入/讀取方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2015101082A JP6205386B2 (ja) 2015-05-18 2015-05-18 半導体装置及び情報書込/読出方法

Publications (2)

Publication Number Publication Date
JP2016219074A JP2016219074A (ja) 2016-12-22
JP6205386B2 true JP6205386B2 (ja) 2017-09-27

Family

ID=57319809

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2015101082A Active JP6205386B2 (ja) 2015-05-18 2015-05-18 半導体装置及び情報書込/読出方法

Country Status (5)

Country Link
US (1) US10423666B2 (ja)
JP (1) JP6205386B2 (ja)
CN (1) CN107533865B (ja)
TW (1) TWI621016B (ja)
WO (1) WO2016185849A1 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
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
CN113642276B (zh) * 2021-08-18 2023-05-05 电子科技大学 一种基于数据预编码的sram架构

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS5575997A (en) 1978-11-29 1980-06-07 Hitachi Cable Ltd Liquid phase crystal growing method
JP3938124B2 (ja) 2002-11-20 2007-06-27 ソニー株式会社 データ検索装置
US7711893B1 (en) * 2004-07-22 2010-05-04 Netlogic Microsystems, Inc. Range code compression method and apparatus for ternary content addressable memory (CAM) devices
US8074011B2 (en) * 2006-12-06 2011-12-06 Fusion-Io, Inc. Apparatus, system, and method for storage space recovery after reaching a read count limit
US7934025B2 (en) * 2007-01-24 2011-04-26 Qualcomm Incorporated Content terminated DMA
US20100262773A1 (en) * 2009-04-08 2010-10-14 Google Inc. Data striping in a flash memory data storage device
JP5677336B2 (ja) * 2011-08-01 2015-02-25 株式会社東芝 メモリ・デバイス
US9026717B2 (en) * 2011-09-30 2015-05-05 SanDisk Technologies, Inc. Apparatus, system, and method for a persistent object store
KR20130128685A (ko) * 2012-05-17 2013-11-27 삼성전자주식회사 불휘발성 메모리 장치 및 그것의 프로그램 방법
JP5575997B1 (ja) * 2013-03-13 2014-08-20 長瀬産業株式会社 半導体装置及び半導体装置に対するエントリアドレス書き込み/読み出し方法

Also Published As

Publication number Publication date
CN107533865A (zh) 2018-01-02
WO2016185849A1 (ja) 2016-11-24
TW201642138A (zh) 2016-12-01
US20180129756A1 (en) 2018-05-10
CN107533865B (zh) 2020-10-16
TWI621016B (zh) 2018-04-11
JP2016219074A (ja) 2016-12-22
US10423666B2 (en) 2019-09-24

Similar Documents

Publication Publication Date Title
JP5524144B2 (ja) key−valueストア方式を有するメモリシステム
US9406381B2 (en) TCAM search unit including a distributor TCAM and DRAM and a method for dividing a database of TCAM rules
US9262500B2 (en) Memory system including key-value store
US11604834B2 (en) Technologies for performing stochastic similarity searches in an online clustering space
US20100205364A1 (en) Ternary content-addressable memory
KR102316271B1 (ko) 데이터 저장장치의 주소 맵핑 테이블 운용 방법
JP6205386B2 (ja) 半導体装置及び情報書込/読出方法
KR20170065374A (ko) 버킷 단위의 정렬을 기반으로 하는 해시 충돌 처리 방법
JP5646775B2 (ja) key−valueストア方式を有するメモリシステム
JP6258436B2 (ja) メモリシステムのローカルコントローラ
JP5833212B2 (ja) key−valueストア方式を有するメモリシステム
US20210056085A1 (en) Deduplication of data via associative similarity search
JP6034467B2 (ja) システム
US20230086370A1 (en) In-memory efficient multistep search
US9824105B2 (en) Adaptive probabilistic indexing with skip lists
US20050060314A1 (en) System and methods involving a data structure searchable with O(logN) performance
JP6166306B2 (ja) 半導体装置,情報処理システム,及び情報書込/読出方法
KR101155433B1 (ko) 멀티 코어 프로세서에 최적화된 문자열 검색 장치 및 그것의 문자열 검색 방법
JP2015181043A (ja) メモリ、データ処理方法、及びメモリシステム
JP2013149097A (ja) B+木のディスク記録方法及びプログラム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20170323

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20170606

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20170613

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20170727

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

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20170822

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20170904

R150 Certificate of patent or registration of utility model

Ref document number: 6205386

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250