以下、本発明の実施の形態について図面を用いて説明する。なお、図中同一または相当部分には同一符号を付してその説明は繰り返さない。
<第1の実施の形態>
[構成および基本動作]
図1は、本発明の第1の実施の形態に係る半導体装置の構成を示す機能ブロック図である。
図1を参照して、半導体装置1は、CAMメモリアレイ回路(第1のメモリアレイ回路)10と、センスアンプ(第1のセンスアンプ)11と、サーチラインドライバ(第1のサーチラインドライバ)12と、アドレス/データバッファ20と、命令コードバッファ21と、クロックバッファ22と、サーチ結果出力バッファ23と、アドレスデコーダ&プライオリティエンコーダ40と、アドレス/データ入力端子30と、命令コード入力端子31と、クロック入力端子32と、サーチ結果出力端子33とを備える。アドレスデコーダ&プライオリティエンコーダ40は、アドレスデコーダと、プライオリティエンコーダとを含む。アドレスデコーダ&プライオリティエンコーダ40におけるアドレスデコーダおよびプライオリティエンコーダは、回路の一部が共通化されている。
CAMメモリアレイ回路10は、複数個のネットワークアドレスをそれぞれ記憶する複数個のメモリセル群を含む。以下、ネットワークアドレスは8ビットであると仮定して説明する。
アドレス/データバッファ20は、外部から受けたアドレスおよびデータをセンスアンプ11と、サーチラインドライバ12と、アドレスデコーダ&プライオリティエンコーダ40とへ出力する。
命令コードバッファ21は、外部から受けたデータ書き込みを表わす命令コード、およびデータ検索を表わす命令コードをセンスアンプ11と、サーチラインドライバ12と、アドレスデコーダ&プライオリティエンコーダ40とへ出力する。
クロックバッファ22は、外部から受けたクロックをサーチラインドライバ12と、アドレスデコーダ&プライオリティエンコーダ40とへ出力する。
アドレスデコーダ&プライオリティエンコーダ40は、アドレス/データバッファ20から受けたアドレスに基づいて、データ書き込み時、書き込み対象のメモリセル群を選択する。
センスアンプ11は、データ書き込み時、CAMメモリアレイ回路10における選択されたメモリセル群に対してデータ書き込みを行なう。
サーチラインドライバ12は、データ検索時、アドレス/データバッファ20から受けたネットワークアドレス等の検索データをCAMメモリアレイ回路10へ出力する。
CAMメモリアレイ回路10は、データ検索時、サーチラインドライバ12から受けた検索データとメモリセル群が記憶するデータとを比較し、比較結果をアドレスデコーダ&プライオリティエンコーダ40へ伝達する。
アドレスデコーダ&プライオリティエンコーダ40は、データ検索時、CAMメモリアレイ回路10から比較結果を受けて、検索データと一致するデータを記憶するメモリセル群が複数個ある場合、複数個のメモリセル群のうちのいずれか1個を選択する。そして、アドレスデコーダ&プライオリティエンコーダ40は、選択したメモリセル群のアドレス値をサーチ結果としてサーチ結果出力バッファ23へ出力する。
サーチ結果出力バッファ23は、アドレスデコーダ&プライオリティエンコーダ40から受けたサーチ結果をサーチ結果出力端子33経由で外部へ出力する。
図2は、本発明の第1の実施の形態に係る半導体装置におけるCAMメモリアレイ回路10の構成を示す機能ブロック図である。
図2を参照して、CAMメモリアレイ回路10は、ワード線WLA0〜WLA255と、マッチ線MLA0〜MLA255と、ビット線対BLPA0〜BLPA15と、サーチ線対SLPA0〜SLPA7とを含む。ビット線対BLPA0〜BLPA15は、ビット
線BLA0〜BLA15と、ビット線/BLA0〜/BLA15とを含む。サーチ線対SLPA0〜SLPA7は、サーチ線SLA0〜SLA7と、サーチ線/SLA0〜/SLA7とを含む。
以下、ワード線WLA0〜WLA255の各々をワード線WLAと称する場合がある。また、マッチ線MLA0〜MLA255の各々をマッチ線MLAと称する場合がある。また、ビット線対BLPA0〜BLPA15の各々をビット線対BLPAと称する場合がある。また、サーチ線対SLPA0〜SLPA7の各々をサーチ線対SLPAと称する場合がある。また、ビット線BLA0〜BLA15の各々をビット線BLAと称する場合がある。また、ビット線/BLA0〜/BLA15の各々をビット線/BLAと称する場合がある。また、サーチ線SLA0〜SLA7の各々をサーチ線SLAと称する場合がある。また、サーチ線/SLA0〜/SLA7の各々をサーチ線/SLAと称する場合がある。
1本のマッチ線MLAに接続される8個のメモリセル100が、1個のメモリセル群に対応している。CAMメモリアレイ回路10は、256個のメモリセル群を含む、すなわち、8×256=2048個のメモリセル100を含む。たとえばマッチ線MLA0に接続される8個のメモリセル100が、アドレス0番地におけるデータを記憶している。CAMメモリアレイ回路10は、アドレス0番地〜255番地において8ビットのデータを256個記憶する。
センスアンプ11は、ビット線BLA0〜BLA15と、ビット線/BLA0〜/BLA15を介してCAMメモリアレイ回路10における各メモリセルに接続される。センスアンプ11は、CAMメモリアレイ回路10における各メモリセルに対してデータ読み出しおよびデータ書き込みを行なう。
ワード線WLA0〜WLA255は、アドレスデコーダ&プライオリティエンコーダ40におけるマッチ線MLB0〜MLB255に接続される。
マッチ線MLA0〜MLA255は、アドレスデコーダ&プライオリティエンコーダ40におけるプライオリティリゾルブ4040に接続される。
図3(a)および(b)は、それぞれCAMメモリアレイ回路10におけるメモリセルの一例を示す回路図である。
図3(a)を参照して、メモリセル100aは、「0」、「1」および「X」(don't careを表わす)の3値を記憶するternary CAM cellである。メモリセル100aは、SRAM(Static Random Access Memory)セルSC1およびSC2と、NチャネルMOS(Metal Oxide Semiconductor)トランジスタM55〜M58とを含む。SRAMセルSC1は、NOTゲートG51およびG52と、NチャネルMOSトランジスタM51およびM52とを含む。
NOTゲートG51およびG52は、記憶ノードN11と記憶ノードN12との間に互いに環状に接続される。
NチャネルMOSトランジスタM51は、記憶ノードN11とビット線BLとの間に配置される。すなわち、NチャネルMOSトランジスタM51は、ゲートがワード線WLに接続され、ソースが記憶ノードN11に接続され、ドレインがビット線BLに接続される。NチャネルMOSトランジスタM52は、記憶ノードN12とビット線/BLとの間に配置される。すなわち、NチャネルMOSトランジスタM52は、ゲートがワード線WLに接続され、ソースが記憶ノードN12に接続され、ドレインがビット線/BLに接続される。
NOTゲートG53およびG54は、記憶ノードN21と記憶ノードN22との間に互いに環状に接続される。
NチャネルMOSトランジスタM53は、記憶ノードN21とビット線BLとの間に配置される。すなわち、NチャネルMOSトランジスタM53は、ゲートがワード線WLに接続され、ソースが記憶ノードN21に接続され、ドレインがビット線BLに接続される。NチャネルMOSトランジスタM54は、記憶ノードN22とビット線/BLとの間に
配置される。すなわち、NチャネルMOSトランジスタM54は、ゲートがワード線WLに接続され、ソースが記憶ノードN22に接続され、ドレインがビット線/BLに接続される。
NチャネルMOSトランジスタM55は、ゲートが記憶ノードN11に接続され、ソースが接地電位に接続され、ドレインがNチャネルMOSトランジスタM56のソースに接続される。NチャネルMOSトランジスタM56は、ゲートがサーチ線SLに接続され、ドレインがマッチ線MLに接続される。なお、マッチ線MLはデータ検索が行なわれる前にハイレベルにプリチャージされている。
NチャネルMOSトランジスタM57は、ゲートが記憶ノードN21に接続され、ソースが接地電位に接続され、ドレインがNチャネルMOSトランジスタM58のソースに接続される。NチャネルMOSトランジスタM58は、ゲートがサーチ線/SLに接続され、ドレインがマッチ線MLに接続される。
記憶ノードN11およびN21のレベルがそれぞれSRAMセルSC1およびSC2の記憶データに対応する。記憶ノードN11およびN12は互いに異なる論理レベルを有し、また、記憶ノードN21およびN22は互いに異なる論理レベルを有する。
記憶ノードN11がハイレベルであり、かつ記憶ノードN21がローレベルである場合であってサーチ線SLがハイレベルであり、かつサーチ線/SLがローレベルであるときには、NチャネルMOSトランジスタM55およびM56がいずれもオン状態となるためマッチ線MLがローレベルとなる。この場合、マッチ線MLは、サーチ線SLおよび/SLを介して受けた検索データとメモリセル100aの記憶データとが一致していない状態を示す。
一方、記憶ノードN11がハイレベルであり、かつ記憶ノードN21がローレベルである場合であってサーチ線SLがローレベルであり、かつサーチ線/SLがハイレベルであるときには、NチャネルMOSトランジスタM56がオフ状態となり、NチャネルMOSトランジスタM57がオフ状態となるためマッチ線MLはハイレベルを維持する。この場合、マッチ線MLは、サーチ線SLおよび/SLを介して受けた検索データとメモリセル100aの記憶データとが一致している状態を示す。
また、記憶ノードN11およびN21がいずれもローレベルである場合には、NチャネルMOSトランジスタM55およびM57がいずれもオフ状態となるためマッチ線MLはハイレベルを維持する。この場合、サーチ線SLおよび/SLの論理レベルに関わらずマッチ線MLは常にハイレベルとなるため、メモリセル100aは「X」(don't care)を記憶している状態となる。
なお、メモリセル100aは、記憶ノードN11およびN12がいずれもハイレベルである場合を加えると、4値を記憶することが可能であるといえる。
図3(b)を参照して、メモリセル100bは、たとえば「0」および「1」の2値を記憶するbinary CAM cellである。メモリセル100bは、SRAMセルSC3と、NチャネルMOSトランジスタM63〜M66とを含む。SRAMセルSC3は、NOTゲートG61およびG62と、NチャネルMOSトランジスタM61およびM62とを含む。
NOTゲートG61およびG62は、記憶ノードN31と記憶ノードN32との間に互いに環状に接続される。
NチャネルMOSトランジスタM61は、記憶ノードN31とビット線BLとの間に配置される。すなわち、NチャネルMOSトランジスタM61は、ゲートがワード線WLに接続され、ソースが記憶ノードN31に接続され、ドレインがビット線BLに接続される。NチャネルMOSトランジスタM62は、記憶ノードN32とビット線/BLとの間に配置される。すなわち、NチャネルMOSトランジスタM62は、ゲートがワード線WLに接続され、ソースが記憶ノードN32に接続され、ドレインがビット線/BLに接続される。
NチャネルMOSトランジスタM63は、ゲートが記憶ノードN32に接続され、ソースが接地電位に接続され、ドレインがNチャネルMOSトランジスタM64のソースに接続される。NチャネルMOSトランジスタM64は、ゲートがサーチ線SLに接続され、ドレインがマッチ線MLに接続される。NチャネルMOSトランジスタM65は、ゲートが記憶ノードN31に接続され、ソースが接地電位に接続され、ドレインがNチャネルMOSトランジスタM66のソースに接続される。NチャネルMOSトランジスタM66は、ゲートがサーチ線/SLに接続され、ドレインがマッチ線MLに接続される。なお、マッチ線MLはデータ検索が行なわれる前にハイレベルにプリチャージされている。
記憶ノードN31およびN32のレベルがSRAMセルSC3の記憶データに対応する。記憶ノードN31およびN32は互いに異なる論理レベルを有する。
記憶ノードN32がハイレベルの場合であってサーチ線SLがハイレベルであり、かつサーチ線/SLがローレベルであるときには、NチャネルMOSトランジスタM63およびM64がいずれもオン状態となるためマッチ線MLがローレベルとなる。この場合、マッチ線MLは、サーチ線SLおよび/SLを介して受けた検索データとメモリセル100bの記憶データとが一致していない状態を示す。
一方、記憶ノードN32がハイレベルの場合であってサーチ線SLがローレベルであり、かつサーチ線/SLがハイレベルであるときには、NチャネルMOSトランジスタM64がオフ状態となり、NチャネルMOSトランジスタM65がオフ状態となるためマッチ線MLはハイレベルを維持する。この場合、マッチ線MLは、サーチ線SLおよび/SLを介して受けた検索データとメモリセル100bの記憶データとが一致している状態を示す。
なお、CAMメモリアレイ回路10が含むメモリセル100は、メモリセル100aおよび100bのいずれであってもよい。
図4は、本発明の第1の実施の形態に係る半導体装置におけるアドレスデコーダ&プライオリティエンコーダ40の構成を示す機能ブロック図である。図4において、CAMメモリアレイ回路4010内の複数個のブロックは、アドレス0番地〜255番地のメモリセル群において0x00〜0xFF(16進数)のデータがそれぞれ記憶されている状態を概念的に示している。
アドレスデコーダ&プライオリティエンコーダ40は、CAMメモリアレイ回路(第2のメモリアレイ回路)4010と、センスアンプ(第2のセンスアンプ)4011と、サーチラインドライバ(第2のサーチラインドライバ)4012と、プライオリティリゾルブ4040と、ワード線WLB0〜WLB255と、マッチ線MLB0〜MLB255と、ビット線対BLPB0〜BLPB7と、サーチ線対SLPB0〜SLPB7とを含む。CAMメモリアレイ回路4010と、センスアンプ4011と、サーチラインドライバ4012とは、それぞれCAMメモリアレイ回路10と、センスアンプ11と、サーチラインドライバ12と同じ構成である、すなわち回路が共通である。
以下、ワード線WLB0〜WLB255の各々をワード線WLBと称する場合がある。また、マッチ線MLB0〜MLB255の各々をマッチ線MLBと称する場合がある。また、ビット線対BLPB0〜BLPB15の各々をビット線対BLPBと称する場合がある。また、サーチ線対SLPB0〜SLPB7の各々をサーチ線対SLPBと称する場合がある。また、ビット線BLB0〜BLB15の各々をビット線BLBと称する場合がある。また、ビット線/BLB0〜/BLB15の各々をビット線/BLBと称する場合がある。また、サーチ線SLB0〜SLB7の各々をサーチ線SLBと称する場合がある。また、サーチ線/SLB0〜/SLB7の各々をサーチ線/SLBと称する場合がある。
CAMメモリアレイ回路4010は、複数個のデータをそれぞれ記憶する複数個のメモリセル群を含む。たとえば、ネットワークアドレスが8ビットを有する場合、CAMメモリアレイ回路4010は、アドレス0番地〜255番地において8ビットのデータを256個記憶する。各アドレスにおけるデータは、データが記憶されているアドレスの値と一致する。たとえば、アドレス0番地に記憶されているデータは8ビットすべてが「0」であり、アドレス1番地に記憶されているデータは最下位ビットのみ「1」で残りのビットはすべて「0」であり、アドレス255番地に記憶されているデータは8ビットすべてが「1」である。CAMメモリアレイ回路4010における複数個のメモリセル群には、予め、上記のようなデータが書き込まれている。これらのデータの書き込みは、半導体装置1の電源立ち上げ直後等の期間を利用して自動的に行なえる構成であることが望ましい。
サーチラインドライバ4012は、データ書き込み時、アドレス/データバッファ20から受けた書き込み対象のメモリセルのアドレスをCAMメモリアレイ回路4010へ出力する。
センスアンプ4011は、ビット線対BLPB0〜BLPB7を介してCAMメモリアレイ回路4010における各メモリセルに接続される。センスアンプ4011は、CAMメモリアレイ回路4010に対してデータ読み出しおよびデータ書き込みを行なう。
CAMメモリアレイ回路4010は、マッチ線MLB0〜MLB255を介してCAMメモリアレイ回路10におけるワード線WLA0〜WLA255に接続される。
CAMメモリアレイ回路4010およびプライオリティリゾルブ4040は、ワード線WLB0〜WLB255を介して接続される。
プライオリティリゾルブ4040は、CAMメモリアレイ回路10におけるマッチ線MLA0〜MLA255に接続される。
[動作]
次に、本発明の第1の実施の形態に係る半導体装置がデータ書き込みを行なう際の動作について説明する。
図1および図2を参照して、命令コードバッファ21は、外部から受けたデータ書き込みを表わす命令コードをセンスアンプ11と、サーチラインドライバ12と、アドレスデコーダ&プライオリティエンコーダ40とへ出力する。
アドレス/データバッファ20は、外部から受けたアドレスおよび書き込みデータをセンスアンプ11と、サーチラインドライバ12と、アドレスデコーダ&プライオリティエンコーダ40とへ出力する。
アドレスデコーダ&プライオリティエンコーダ40は、アドレス/データバッファ20から受けたアドレスに基づいて、CAMメモリアレイ回路10におけるワード線WLA0〜WLA255の中からいずれか1個を選択し、選択したワード線WLAを活性化する。
センスアンプ11は、データ書き込み時、データ書き込みバッファとして機能する。すなわち、センスアンプ11は、ビット線対BLPA0〜BLPA7と結合され、ビット線対BLPA0〜BLPA7を介して選択ワード線WLAに対応するすべてのメモリセルに対して一斉にデータ書き込みを行なう。なお、半導体装置1は、行方向のデコーダすなわちアドレスデコーダ&プライオリティエンコーダ40に加えて列方向のデコーダを備え、アドレス信号に基づいて選択されたワード線WLAおよび選択されたビット線対BLPAに対応するメモリセルに対してデータ書き込みを行なう構成であってもよい。
ここで、データ書き込み時、アドレスデコーダ&プライオリティエンコーダ40はプライオリティエンコーダとしてはまったく動作していない点に注意すべきである。
次に、データ書き込み時におけるアドレスデコーダ&プライオリティエンコーダ40の動作を説明する。
図5は、本発明の第1の実施の形態に係る半導体装置におけるアドレスデコーダ&プライオリティエンコーダ40のデータ書き込み時における動作を示す図である。
サーチラインドライバ4012は、命令コードバッファ21からデータ書き込みを表わす命令コードを受けて、サーチ線対SLPB0〜SLPB7を駆動することにより、アドレス/データバッファ20からアドレス線対XP0〜XP7経由で受けた8ビットのアドレスをサーチ線対SLPB0〜SLPB7経由でCAMメモリアレイ回路4010へ出力する。
CAMメモリアレイ回路4010は、サーチラインドライバ4012から受けたアドレスとアドレス0番地〜255番地におけるデータの各々とを比較する。そして、CAMメモリアレイ回路4010は、比較結果に基づいてCAMメモリアレイ回路10におけるメモリセルを選択する。より詳細には、CAMメモリアレイ回路4010は、アドレスと8ビットすべてが一致したデータに対応するマッチ線MLBをハイレベルに保持し、かつアドレスと1ビットでも一致しないデータに対応するマッチ線MLBを放電してローレベルとする。なお、マッチ線MLB0〜MLB255は、データ書き込みが行われる前にハイレベルにプリチャージされている。
たとえば、外部アドレスすなわちアドレス/データバッファ20が外部から受けたアドレスが0番地を示している場合には、サーチラインドライバ4012は、8ビットすべてが「0」であるデータをサーチ線対SLPB0〜SLPB7経由でCAMメモリアレイ回路4010へ出力する。
CAMメモリアレイ回路4010は、8ビットがすべて「0」であるデータを記憶する0番地に対応するマッチ線MLB0のハイレベルを保持し、他のマッチ線MLBはローレベルとする。すなわち、CAMメモリアレイ回路4010は、CAMメモリアレイ回路10におけるワード線WLA0をハイレベルに駆動する。
同様に、外部アドレスすなわちアドレス/データバッファ20が外部から受けたアドレスが1番地を示している場合には、サーチラインドライバ4012は、「00000001」である8ビットのデータをサーチ線対SLPB0〜SLPB7経由でCAMメモリアレイ回路4010へ出力する。
CAMメモリアレイ回路4010は、「00000001」である8ビットのデータを記憶する1番地に対応するマッチ線MLB1のハイレベルを保持し、他のマッチ線MLBはローレベルとする。すなわち、CAMメモリアレイ回路4010は、CAMメモリアレイ回路10におけるワード線WLA1をハイレベルに駆動する。
したがって、アドレスデコーダ&プライオリティエンコーダ40は、サーチラインドライバ4012およびCAMメモリアレイ回路4010を用いて、アドレスデコーダの機能を実現することが可能である。
次に、本発明の第1の実施の形態に係る半導体装置がデータ検索を行なう際の動作について説明する。
図6は、本発明の第1の実施の形態に係る半導体装置におけるCAMメモリアレイ回路10のデータ検索時における動作を示す図である。ここでは、N=8、M=256であると仮定して説明する。
図6を参照して、CAMメモリアレイ回路10は、8×256=2048個のメモリセル100を含む。たとえばマッチ線MLA0に接続される8個のメモリセルが、アドレス0番地におけるデータを記憶している。
メモリセル100において、MCで示すブロックは図3(a)に示すSRAMセルSC1およびSC2、または図3(b)に示すSRAMセルSC3に相当する。XORで示すブロックはイクスクルーシブオア回路であり、イクスクルーシブオア回路の出力に接続されるゲートを有するNチャネルMOSトランジスタと合わせて図3(a)に示すNチャネルMOSトランジスタM55〜M58または図3(b)に示すNチャネルMOSトランジスタM63〜M66に相当する。
命令コードバッファ21は、外部から受けたデータ検索を表わす命令コードをセンスアンプ11と、サーチラインドライバ12と、アドレスデコーダ&プライオリティエンコーダ40とへ出力する。
サーチラインドライバ12は、命令コードバッファ21からデータ検索を表わす命令コードを受けて、サーチ線SLA0〜SLA7を駆動することにより、アドレス/データバッファ20から受けた8ビットの検索データをCAMメモリアレイ回路10へ出力する。
再び図1を参照して、CAMメモリアレイ回路10は、サーチラインドライバ12から受けた検索データとアドレス0番地〜255番地におけるデータの各々とを比較する。そして、CAMメモリアレイ回路10は、比較結果に基づいてCAMメモリアレイ回路4010におけるメモリセルを選択する。より詳細には、CAMメモリアレイ回路10は、8ビットすべてが一致したデータに対応するマッチ線MLAをハイレベルに保持し、かつ1ビットでも一致しないデータに対応するマッチ線MLAを放電してローレベルとする。なお、マッチ線MLA0〜MLA255は、データ検索が行なわれる前にハイレベルにプリチャージされている。
アドレスデコーダ&プライオリティエンコーダ40は、ハイレベルに保持されているマッチ線MLAが複数本存在した場合には、たとえば番号の小さいマッチ線MLAを優先して、すなわちマッチ線MLAに対応するメモリセル群のアドレス値の小さい方を優先してエンコード出力する。
サーチ結果出力バッファ23は、アドレスデコーダ&プライオリティエンコーダ40から受けたサーチ結果であるアドレス値をサーチ結果出力端子33から外部へ出力する。
ここで、データ検索時、アドレスデコーダ&プライオリティエンコーダ40はアドレスデコーダとしてはまったく動作していない点に注意すべきである。
図7は、本発明の第1の実施の形態に係る半導体装置におけるアドレスデコーダ&プライオリティエンコーダ40のデータ検索時における動作を示す図である。
アドレスデコーダ&プライオリティエンコーダ40におけるプライオリティリゾルブ4040は、マッチ線MLA0〜MLA255およびワード線WLB0〜WLB255の間に配置される。プライオリティリゾルブ4040は、ハイレベルに保持されているマッチ線MLAに対応するワード線WLBを選択してハイレベルに駆動し、他のワード線WLBをローレベルに駆動する。ここで、プライオリティリゾルブ4040は、ハイレベルに保持されているマッチ線MLAが複数本存在している場合には、ハイレベルに保持されている複数本のマッチ線MLAのうち、たとえば番号の最も小さいマッチ線MLAに対応するワード線WLBをハイレベルに駆動し、他のワード線WLBをローレベルに駆動する。
そうすると、CAMメモリアレイ回路4010において、ハイレベルに駆動されたワード線WLBに接続されたゲートを有するNチャネルMOSトランジスタがオン状態となり、記憶ノードのレベルがビット線対へ伝達される。すなわち、ビット線対BLPB0〜BLPB7には、ハイレベルに駆動されたワード線WLBに対応するメモリセル群の記憶データに基づく信号が現われる。
センスアンプ4011は、CAMメモリアレイ回路4010に対してデータ読み出しおよび読み出しデータの増幅を行なう。すなわち、センスアンプ4011は、ビット線対BLPB0〜BLPB7に現われた信号を検出して増幅する。そして、センスアンプ4011は、増幅した信号、すなわち検索データと一致するデータが記憶されているCAMメモリアレイ回路10のアドレス値をサーチ結果としてサーチ結果出力バッファ23へ出力する。
したがって、アドレスデコーダ&プライオリティエンコーダ40は、CAMメモリアレイ回路4010およびセンスアンプ4011を用いて、エンコーダの機能を実現することが可能である。さらに、アドレスデコーダ&プライオリティエンコーダ40は、CAMメモリアレイ回路4010、センスアンプ4011およびプライオリティリゾルブ4040を用いて、プライオリティエンコーダの機能を実現することが可能である。
図8は、プライオリティリゾルブ4040の構成を示す回路図である。図8では、マッチ線MLA0〜MLA7およびワード線WLB0〜WLB7に対応する回路を代表的に示す。
図8を参照して、プライオリティリゾルブ4040は、バッファG1〜G8と、NORゲートG11〜G16と、NOTゲートG17と、NANDゲートG21〜G27と、NOTゲートG31〜G38とを含む。
プライオリティリゾルブ4040は、ハイレベルに保持されている複数個のマッチ線MLAのうち、番号の最も小さいマッチ線MLAに対応するワード線WLBのみをハイレベルに駆動し、他のワード線WLBをローレベルに駆動する。たとえば、マッチ線MLA0がハイレベルである場合には、マッチ線MLA1〜MLA255がハイレベルであるかローレベルであるかに関わらず、ワード線WLB0はハイレベルとなり、ワード線WLB1〜WLB255はすべてローレベルとなる。
ところで、一般的なCAMでは、アドレスデコーダおよびプライオリティエンコーダは、実際には同一タイミングにおいていずれか一方しか動作しないものであり、動作活性化率およびコスト対性能比等のハードウエア性能指標において問題がある。しかしながら、本発明の第1の実施の形態に係る半導体装置では、アドレスデコーダ&プライオリティエンコーダ40は、データ書き込み時においてアドレスデコーダとして動作し、かつデータ検索時においてプライオリティエンコーダとして動作する。そして、アドレスデコーダ&プライオリティエンコーダ40は、CAMメモリアレイ回路4010と、センスアンプ4011と、サーチラインドライバ4012とにプライオリティリゾルブ4040を追加することにより構成することができる。
図9は、一般的なCAMにおけるエンコーダの構成を示す回路図である。図9は、一般的なCAMにおけるエンコーダを本発明の第1の実施の形態に係る半導体装置に適用した場合の構成を示している。また、図9では、アドレスA0に対応する回路を主に示す。
図9を参照して、このエンコーダは、プライオリティリゾルブ4040とワード線WLB0〜WLB255を介して接続され、ハイレベルに駆動されたワード線WLBに対応するアドレス値をサーチ結果としてサーチ結果出力バッファ23へ出力する。
このエンコーダは、アドレスA0に対応して論理ゲートを14個含む。すなわち、ネットワークアドレスが8ビットとすると、一点鎖線で囲まれた構成がたとえば8個分必要となる。
図10は、一般的なCAMにおけるアドレスデコーダの構成を示す回路図である。図10は、一般的なCAMにおけるアドレスデコーダを本発明の第1の実施の形態に係る半導体装置に適用した場合の構成を示している。
図10を参照して、このアドレスデコーダは、アドレス/データバッファ20とアドレス線対XP0〜XP7を介して接続され、アドレス/データバッファ20からアドレス線対XP0〜XP7を介して受けた8ビットのアドレスに対応するワード線WLAを活性化させる。
このアドレスデコーダは、ネットワークアドレスが8ビットであるとすると論理ゲートを512個含む構成となる。
図9に示すエンコーダと、図10に示すアドレスデコーダとを合わせた回路が図4に示すアドレスデコーダ&プライオリティエンコーダ40からプライオリティリゾルブ4040を除いた回路に相当する。
図11は、アドレスデコーダ&プライオリティエンコーダ40におけるCAMメモリアレイ回路4010の構成を示す回路図である。
図11を参照して、CAMメモリアレイ回路4010は、たとえば図3(b)に示すメモリセル100bを8ビットのネットワークアドレスに対応して8×256=2048個備える。
ここで、たとえば図3(a)および(b)に示すメモリセルを含むCAMメモリアレイ回路は通常カスタマイズされており、図9に示すエンコーダおよび図10に示すアドレスデコーダと比較してさらに製造プロセスの微細化されたデザインルールを適用することができる。すなわち、本発明の第1の実施の形態に係る半導体装置では、図9に示すエンコーダおよび図10に示すアドレスデコーダの代わりにCAMメモリアレイ回路4010と、センスアンプ4011と、サーチラインドライバ4012とを用いる。このような構成により、一般的なCAMと比べてハードウェアコストすなわち回路規模を削減することができる。
また、本発明の第1の実施の形態に係る半導体装置では、アドレスデコーダおよびエンコーダをCAMメモリアレイ回路4010と、センスアンプ4011と、サーチラインドライバ4012とで構成される回路として共通化する。このような構成により、CAMメモリアレイ回路10と同様にデータ書き込み時およびデータ検索時のいずれにおいてもCAMメモリアレイ回路4010を動作活性化させることができ、コスト対性能比の最適化を図ることができる。
さらに、本発明の第1の実施の形態に係る半導体装置では、アドレスデコーダ&プライオリティエンコーダ40が含むCAMメモリアレイ回路4010と、センスアンプ4011と、サーチラインドライバ4012とは、それぞれCAMメモリアレイ回路10と、センスアンプ11と、サーチラインドライバ12と同じ構成である。このように、アドレスデコーダ&プライオリティエンコーダ40がCAMメモリアレイ回路10と共通の回路を備える構成により、LSIの開発を容易にし、また、製造時の歩留り向上および不良解析の容易化を図ることができる。
次に、本発明の他の実施の形態について図面を用いて説明する。なお、図中同一または相当部分には同一符号を付してその説明は繰り返さない。
<第2の実施の形態>
本実施の形態は、第1の実施の形態に係る半導体装置と比べて冗長構成を有する半導体装置に関する。以下で説明する内容以外は第1の実施の形態に係る半導体装置と同様である。
図12は、本発明の第2の実施の形態に係る半導体装置の構成を示す図である。
図12を参照して、半導体装置2は、本発明の第1の実施の形態に係る半導体装置と比べて、さらに、行シフタ部51と、列シフタ部52,53とを備え、CAMメモリアレイ回路10の代わりにCAMメモリアレイ回路110を備え、アドレスデコーダ&プライオリティエンコーダ40の代わりにアドレスデコーダ&プライオリティエンコーダ140を備える。行シフタ部51は、後述する行シフタ61,62を含む。列シフタ部52は、後述する列シフタ63,64を含む。列シフタ部53は、列シフタ65,66を含む。
CAMメモリアレイ回路110は、行列状に配置された複数個のメモリセルを含む。このメモリセルの行列は、冗長構成として1つの予備メモリセル行と、1つの予備メモリセル列とを含む。なお、CAMメモリアレイ回路110が含むメモリセル100は、前述したメモリセル100aおよび100bのいずれであってもよい。
CAMメモリアレイ回路110においてメモリセルに異常が発生していない場合には、
予備メモリセル行および予備メモリセル列以外のメモリセルで構成されるメモリセル行が1個のネットワークアドレスを記憶する。
CAMメモリアレイ回路110においてメモリセルに異常が発生した場合には、異常が発生したメモリセルの代わりに予備メモリセル行および予備メモリセル列に含まれるメモリセルを用いることにより救済が行なわれる。
本発明の第2の実施の形態に係る半導体装置では、予備メモリセル行および予備メモリセル列を用いる場合を含めてネットワークアドレスまたはメモリセルのアドレス値を記憶するメモリセル行をメモリセル群と称する。以下、ネットワークアドレスは8ビットであると仮定して説明する。
図13は、本発明の第2の実施の形態に係る半導体装置におけるCAMメモリアレイ回路110の構成を示す機能ブロック図である。
図13を参照して、CAMメモリアレイ回路110は、ワード線WLA0〜WLA255と、マッチ線MLA0〜MLA255と、ビット線対BLIPA0〜BLIPA15と、サーチ線対SLIPA0〜SLIPA7とを含む。ビット線対BLIPA0〜BLIPA15は、ビット線BLIA0〜BLIA15と、ビット線/BLIA0〜/BLIA15とを含む。サーチ線対SLIPA0〜SLIPA7は、サーチ線SLIA0〜SLIA7と、サーチ線/SLIA0〜/SLIA7とを含む。さらに、CAMメモリアレイ回路110は、冗長構成として、ワード線WLASPと、マッチ線MLASPと、ビット線対BLIPASPと、サーチ線対SLIPASPとを含む。ビット線対BLIPASPは、ビット線BLIASPと、ビット線/BLIASPとを含む。サーチ線対SLIPASPは、サーチ線SLIASPと、サーチ線/SLIASPとを含む。
以下、ビット線対BLIPA0〜BLIPA15,BLIPASPの各々をビット線対BLIPAと称する場合がある。また、ビット線BLIA0〜BLIA15,BLIASPの各々をビット線BLIAと称する場合がある。また、ビット線/BLIA0〜/BLIA15,/BLIASPの各々をビット線/BLIAと称する場合がある。また、サーチ線対SLIPA0〜SLIPA7,SLIPASPの各々をサーチ線対SLIPAと称する場合がある。また、サーチ線SLIA0〜SLIA7,SLIASPの各々をサーチ線SLIAと称する場合がある。また、サーチ線/SLIA0〜/SLIA7,/SLIASPの各々をサーチ線/SLIAと称する場合がある。
1本のマッチ線MLAに接続される8個のメモリセル100が、1個のメモリセル群に対応している。CAMメモリアレイ回路110は、256個のメモリセル群を含む。すなわち、CAMメモリアレイ回路110は、予備メモリセル行および予備メモリセル列に含まれるメモリセル100を合わせて、9×257=2313個のメモリセル100を含む。マッチ線MLA0に接続される8個のメモリセル100が、アドレス0番地におけるデータを記憶している。CAMメモリアレイ回路110は、アドレス0番地〜255番地において8ビットのデータを256個記憶する。
センスアンプ11は、ビット線BLA0〜BLA15と、ビット線/BLA0〜/BLA15とを介して列シフタ部53に接続される。列シフタ部53は、ビット線BLIA0〜BLIA15,BLIASPと、ビット線/BLIA0〜/BLIA15,/BLIASPとを介してCAMメモリアレイ回路110における各メモリセルに接続される。センスアンプ11は、CAMメモリアレイ回路110における各メモリセルに対してデータ読み出しおよびデータ書き込みを行なう。
ワード線WLA0〜WLA255,WLASPは、行シフタ部51を介してアドレスデコーダ&プライオリティエンコーダ140におけるCAMメモリアレイ回路4110に接続される。
マッチ線MLA0〜MLA255,MLASPは、行シフタ部51を介してアドレスデコーダ&プライオリティエンコーダ140におけるプライオリティリゾルブ4140に接続される。
図14は、本発明の第2の実施の形態に係る半導体装置におけるアドレスデコーダ&プライオリティエンコーダ140のデータ書き込み時における動作を示す図である。図14において、CAMメモリアレイ回路4110内の複数個のブロックは、アドレス0番地〜255番地のメモリセル群において0x00〜0xFF(16進数)のデータがそれぞれ記憶されている状態を概念的に示している。
アドレスデコーダ&プライオリティエンコーダ140は、CAMメモリアレイ回路(第2のメモリアレイ回路)4110と、サーチラインドライバ(第2のサーチラインドライバ)4012と、列シフタ63と、マッチ線MLB0〜MLB255と、サーチ線対SLPB0〜SLPB7と、サーチ線対SLIPB0〜SLIPB7とを含む。さらに、アドレスデコーダ&プライオリティエンコーダ140は、冗長構成として、マッチ線MLBSPと、サーチ線対SLIPBSPとを含む。CAMメモリアレイ回路4110と、サーチラインドライバ4012とは、それぞれCAMメモリアレイ回路110と、サーチラインドライバ12と同じ構成である、すなわち回路が共通である。
以下、ビット線対BLIPB0〜BLIPB15,BLIPBSPの各々をビット線対BLIPBと称する場合がある。また、ビット線BLIB0〜BLIB15,BLIBSPの各々をビット線BLIBと称する場合がある。また、ビット線/BLIB0〜/BLIB15,/BLIBSPの各々をビット線/BLIBと称する場合がある。また、サーチ線対SLIPB0〜SLIPB7,SLIPBSPの各々をサーチ線対SLIPBと称する場合がある。また、サーチ線SLIB0〜SLIB7,SLIBSPの各々をサーチ線SLIBと称する場合がある。また、サーチ線/SLIB0〜/SLIB7,/SLIBSPの各々をサーチ線/SLIBと称する場合がある。
CAMメモリアレイ回路4110は、行列状に配置された複数個のメモリセルを含む。このメモリセルの行列は、冗長構成として1つの予備メモリセル行と、1つの予備メモリセル列とを含む。
CAMメモリアレイ回路4110は、複数個のデータをそれぞれ記憶する複数個のメモリセル群を含む。たとえば、ネットワークアドレスが8ビットを有する場合、CAMメモリアレイ回路4110は、アドレス0番地〜255番地において8ビットのデータを256個記憶する。各アドレスにおけるデータは、データが記憶されているアドレスの値と一致する。たとえば、アドレス0番地に記憶されているデータは8ビットすべてが「0」であり、アドレス1番地に記憶されているデータは最下位ビットのみ「1」で残りのビットはすべて「0」であり、アドレス255番地に記憶されているデータは8ビットすべてが「1」である。CAMメモリアレイ回路4110における複数個のメモリセル群には、予め、上記のようなデータが書き込まれている。これらのデータの書き込みは、半導体装置2の電源立ち上げ直後等の期間を利用して自動的に行なえる構成であることが望ましい。
CAMメモリアレイ回路4110においてメモリセルに異常が発生していない場合には、予備メモリセル行および予備メモリセル列以外のメモリセルで構成されるメモリセル行が1個のメモリセルのアドレス値を記憶する。
CAMメモリアレイ回路4110においてメモリセルに異常が発生した場合には、異常が発生したメモリセルの代わりに予備メモリセル行および予備メモリセル列に含まれるメモリセルを用いることにより救済が行なわれる。
マッチ線MLB0〜MLB255およびワード線WLA0〜WLA255は、CAMメモリアレイ回路110における各メモリセル100が有する所定の優先順位に従って配列される。ここでは、マッチ線MLB0〜MLB255およびワード線WLA0〜WLA255は、CAMメモリアレイ回路110における各メモリセル群のアドレス順に配列される。たとえば、マッチ線MLB0およびワード線WLA0は、CAMメモリアレイ回路110におけるアドレス0番地のメモリセル群に対応している。また、マッチ線MLBSPおよびワード線WLASPは、マッチ線MLB0〜MLB255およびワード線WLA0〜WLA255の配列の端にそれぞれ配置される。
サーチラインドライバ4012は、データ書き込み時、アドレス/データバッファ20から受けた書き込み対象のメモリセルのアドレスを列シフタ63を介してCAMメモリアレイ回路4110へ出力する。
CAMメモリアレイ回路4110は、マッチ線MLB0〜MLB255,MLBSPおよび行シフタ61を介してCAMメモリアレイ回路110におけるワード線WLA0〜WLA255,WLASPに接続される。
次に、本発明の第2の実施の形態に係る半導体装置がデータ書き込みを行なう際の動作について説明する。
図12および図13を参照して、命令コードバッファ21は、外部から受けたデータ書き込みを表わす命令コードをセンスアンプ11と、サーチラインドライバ12と、アドレスデコーダ&プライオリティエンコーダ140とへ出力する。
アドレス/データバッファ20は、外部から受けたアドレスおよび書き込みデータをセンスアンプ11と、サーチラインドライバ12と、アドレスデコーダ&プライオリティエンコーダ140とへ出力する。
アドレスデコーダ&プライオリティエンコーダ140は、アドレス/データバッファ20から受けたアドレスに基づいて、CAMメモリアレイ回路110におけるワード線WLA0〜WLA255の中からいずれか1個を選択し、選択したワード線WLAを活性化する。
センスアンプ11は、データ書き込み時、データ書き込みバッファとして機能する。すなわち、センスアンプ11は、ビット線対BLPA0〜BLPA7と結合され、ビット線対BLPA0〜BLPA7および列シフタ65を介して選択ワード線WLAに対応するすべてのメモリセルに対して一斉にデータ書き込みを行なう。なお、半導体装置2は、行方向のデコーダすなわちアドレスデコーダ&プライオリティエンコーダ140に加えて列方向のデコーダを備え、アドレス信号に基づいて選択されたワード線WLAおよび選択されたビット線対BLPAに対応するメモリセルに対してデータ書き込みを行なう構成であってもよい。
ここで、データ書き込み時、アドレスデコーダ&プライオリティエンコーダ140はプライオリティエンコーダとしてはまったく動作していない点に注意すべきである。
次に、データ書き込み時におけるアドレスデコーダ&プライオリティエンコーダ140の動作を説明する。
再び図14を参照して、サーチラインドライバ4012は、命令コードバッファ21からデータ書き込みを表わす命令コードを受けて、サーチ線対SLPB0〜SLPB7を駆動することにより、アドレス/データバッファ20からアドレス線対XP0〜XP7経由で受けた8ビットのアドレスを列シフタ63経由でCAMメモリアレイ回路4110へ出力する。
図15は、列シフタ63の構成および配線シフト動作の一例を示す回路図である。
図15を参照して、列シフタ63は、スイッチSWCK0〜SWCK7を含む。列シフタ63は、サーチラインドライバ4012とCAMメモリアレイ回路4110との間に接続される。
列シフタ63は、CAMメモリアレイ回路4110におけるすべてのメモリセル100が正常である場合には、サーチ線対SLPB0〜SLPB7とサーチ線対SLIPB0〜SLIPB7とをそれぞれ接続する。
一方、列シフタ63は、たとえばCAMメモリアレイ回路4110におけるサーチ線対SLIPB1に接続されるメモリセル100に異常が発生した場合には、サーチ線対SLIPB1を除くように、サーチ線対SLPB0〜SLPB7とサーチ線対SLIPB0〜SLIPB7,SLIPBSPとの接続をシフトさせる。すなわち、列シフタ63は、サーチ線対SLIPB1を、サーチ線対SLIPB1の隣に配置されたサーチ線対SLIPB0で置換する。そして、列シフタ63は、置換に用いたサーチ線対SLIPB0がサーチ線対SLIPB0〜SLIPB7の配列の端であることから、サーチ線対SLIPB0を、予備メモリセル列に対応するサーチ線対SLIPBSPで置換する。より詳細には、スイッチSWCK0は、サーチ線対SLPB0とサーチ線対SLIPBSPとを接続する。スイッチSWCK1は、サーチ線対SLPB1とサーチ線対SLIPB0とを接続する。スイッチSWCK2〜SWCK7は、サーチ線対SLPB2〜SLPB7とサーチ線対SLIPB2〜SLIPB7とをそれぞれ接続する。
再び図14を参照して、CAMメモリアレイ回路4110は、列シフタ63を介してサーチラインドライバ4012から受けたアドレスとアドレス0番地〜255番地におけるデータの各々とを比較する。そして、CAMメモリアレイ回路4110は、比較結果に基づいてCAMメモリアレイ回路110におけるメモリセルを選択する。より詳細には、CAMメモリアレイ回路4110は、アドレスと8ビットすべてが一致したデータに対応するマッチ線MLBをハイレベルに保持し、かつアドレスと1ビットでも一致しないデータに対応するマッチ線MLBを放電してローレベルとする。なお、マッチ線MLB0〜MLB255,MLBSPは、データ書き込みが行われる前にハイレベルにプリチャージされている。
図16は、行シフタ61の構成および配線シフト動作の一例を示す回路図である。
図16を参照して、行シフタ61は、スイッチSWRK0〜SWRK255を含む。行シフタ61は、マッチ線MLB0〜MLB255,MLBSPとワード線WLA0〜WLA255,WLASPとの間に接続される。
行シフタ61は、CAMメモリアレイ回路110およびCAMメモリアレイ回路4110におけるすべてのメモリセル100が正常である場合には、マッチ線MLBSP,MLB0〜MLB255とワード線WLASP,WLA0〜WLA255とをそれぞれ接続する。
一方、行シフタ61は、たとえばCAMメモリアレイ回路4110におけるマッチ線MLB1に接続されるメモリセル100に異常が発生した場合には、マッチ線MLB1を除くように、マッチ線MLB0〜MLB255,MLBSPとワード線WLA0〜WLA255,WLASPとの接続をシフトさせる。すなわち、行シフタ61は、マッチ線MLB1を、マッチ線MLB1の隣に配置されたマッチ線MLB0で置換する。行シフタ61は、置換に用いたマッチ線MLB0がマッチ線MLB0〜MLB255の配列の端であることから、マッチ線MLB0を、予備メモリセル行に対応するマッチ線MLBSPで置換する。より詳細には、スイッチSWRK0は、マッチ線MLBSPとワード線WLA0とを接続する。スイッチSWRK1は、マッチ線MLB0とワード線WLA1とを接続する。スイッチSWRK2〜SWRK255は、マッチ線MLB2〜MLB255とワード線WLA2〜WLA255とをそれぞれ接続する。
図17は、行シフタ61の構成および配線シフト動作の一例を示す回路図である。
図17を参照して、行シフタ61は、たとえばCAMメモリアレイ回路110におけるワード線WLA1に接続されるメモリセル100に異常が発生した場合には、ワード線WLA1を除くように、マッチ線MLB0〜MLB255,MLBSPとワード線WLA0〜WLA255,WLASPとの接続をシフトさせる。すなわち、行シフタ61は、ワード線WLA1を、ワード線WLA1の隣に配置されたワード線WLA0で置換する。そして、行シフタ61は、置換に用いたワード線WLA0がワード線WLA0〜WLA255の配列の端であることから、ワード線WLA0を、予備メモリセル行に対応するワード線WLASPで置換する。より詳細には、スイッチSWRK0は、マッチ線MLB0とワード線WLASPとを接続する。スイッチSWRK1は、マッチ線MLB1とワード線WLA0とを接続する。スイッチSWRK2〜SWRK255は、マッチ線MLB2〜MLB255とワード線WLA2〜WLA255とをそれぞれ接続する。
図18は、行シフタ61の構成および配線シフト動作の一例を示す回路図である。
図18を参照して、行シフタ61は、たとえばCAMメモリアレイ回路110におけるワード線WLA1に接続されるメモリセル100、およびCAMメモリアレイ回路4110におけるマッチ線MLB0に接続されるメモリセル100に異常が発生した場合には、ワード線WLA1およびマッチ線MLB0を除くように、マッチ線MLB0〜MLB255,MLBSPとワード線WLA0〜WLA255,WLASPとの接続をシフトさせる。すなわち、行シフタ61は、ワード線WLA1を、ワード線WLA1の隣に配置されたワード線WLA0で置換する。行シフタ61は、置換に用いたワード線WLA0がワード線WLA0〜WLA255の配列の端であることから、ワード線WLA0を、予備メモリセル行に対応するワード線WLASPで置換する。また、行シフタ61は、マッチ線MLB0がマッチ線MLB0〜MLB255の配列の端であることから、マッチ線MLB0を、予備メモリセル行に対応するマッチ線MLBSPで置換する。
より詳細には、スイッチSWRK0は、マッチ線MLBSPとワード線WLASPとを接続する。スイッチSWRK1は、マッチ線MLB1とワード線WLA0とを接続する。スイッチSWRK2〜SWRK255は、マッチ線MLB2〜MLB255とワード線WLA2〜WLA255とをそれぞれ接続する。
このように、本発明の第2の実施の形態に係る半導体装置では、CAMメモリアレイ回路110およびCAMメモリアレイ回路4110の各々において互いに非対応のメモリセル行におけるメモリセル100に異常が発生した場合でも、半導体装置2を救済して正常に動作させることができる。
再び図14を参照して、たとえば、外部アドレスすなわちアドレス/データバッファ20が外部から受けたアドレスが0番地を示している場合には、サーチラインドライバ4012は、8ビットすべてが「0」であるデータをサーチ線対SLPB0〜SLPB7および列シフタ63経由でCAMメモリアレイ回路4110へ出力する。
CAMメモリアレイ回路4110は、8ビットがすべて「0」であるデータを記憶する0番地に対応するマッチ線MLB0のハイレベルを保持し、他のマッチ線MLBはローレベルとする。すなわち、CAMメモリアレイ回路4110は、CAMメモリアレイ回路110におけるワード線WLA0をハイレベルに駆動する。
同様に、外部アドレスすなわちアドレス/データバッファ20が外部から受けたアドレスが1番地を示している場合には、サーチラインドライバ4012は、「00000001」である8ビットのデータをサーチ線対SLPB0〜SLPB7および列シフタ63経由でCAMメモリアレイ回路4110へ出力する。
CAMメモリアレイ回路4110は、「00000001」である8ビットのデータを記憶する1番地に対応するマッチ線MLB1のハイレベルを保持し、他のマッチ線MLBはローレベルとする。すなわち、CAMメモリアレイ回路4110は、CAMメモリアレイ回路110におけるワード線WLA1をハイレベルに駆動する。
したがって、アドレスデコーダ&プライオリティエンコーダ140は、サーチラインドライバ4012およびCAMメモリアレイ回路4110を用いて、アドレスデコーダの機能を実現することが可能である。
次に、本発明の第2の実施の形態に係る半導体装置がデータ検索を行なう際の動作について説明する。
図19は、本発明の第2の実施の形態に係る半導体装置におけるアドレスデコーダ&プライオリティエンコーダ140のデータ検索時における動作を示す図である。
図19を参照して、半導体装置2は、行シフタ62と、シフト線SFTSP,SFT0〜SFT255とを備える。アドレスデコーダ&プライオリティエンコーダ140は、CAMメモリアレイ回路(第2のメモリアレイ回路)4110と、センスアンプ(第2のセンスアンプ)4011と、プライオリティリゾルブ4140と、ワード線WLB0〜WLB255と、ビット線対BLPB0〜BLPB7と、ビット線対BLIPB0〜BLIPB7とを含む。さらに、アドレスデコーダ&プライオリティエンコーダ140は、冗長構成として、ワード線WLBSPと、ビット線対BLIPBSPとを含む。CAMメモリアレイ回路4110と、センスアンプ4011とは、それぞれCAMメモリアレイ回路110と、センスアンプ11と同じ構成である、すなわち回路が共通である。
以下、シフト線SFT0〜SFT255,SFTSPの各々をシフト線SFTと称する場合がある。
マッチ線MLA0〜MLA255およびワード線WLB0〜WLB255は、CAMメモリアレイ回路110における各メモリセル100が有する所定の優先順位に従って配列される。ここでは、マッチ線MLA0〜MLA255およびワード線WLB0〜WLB255は、CAMメモリアレイ回路110における各メモリセル群のアドレス順に配列される。たとえば、マッチ線MLA0およびワード線WLB0は、CAMメモリアレイ回路110におけるアドレス0番地のメモリセル群に対応している。また、マッチ線MLASPおよびワード線WLBSPは、マッチ線MLA0〜MLA255およびワード線WLB0〜WLB255の配列の端にそれぞれ配置される。また、シフト線SFT0〜SFT255,SFTSPは、ワード線WLB0〜WLB255,WLBSPにそれぞれ対応して配置される。
センスアンプ4011は、ビット線対BLPB0〜BLPB7および列シフタ64を介してCAMメモリアレイ回路4110における各メモリセルに接続される。センスアンプ4011は、CAMメモリアレイ回路4110に対してデータ読み出しおよびデータ書き込みを行なう。
CAMメモリアレイ回路4110およびプライオリティリゾルブ4140は、ワード線WLB0〜WLB255,WLBSPを介して接続される。
プライオリティリゾルブ4140は、シフト線SFTSP,SFT0〜SFT255を介して行シフタ62に接続される。
行シフタ62は、CAMメモリアレイ回路110におけるマッチ線MLA0〜MLA255,MLASPに接続される。
再び図12および図13を参照して、命令コードバッファ21は、外部から受けたデータ検索を表わす命令コードをセンスアンプ11と、サーチラインドライバ12と、アドレスデコーダ&プライオリティエンコーダ140とへ出力する。
サーチラインドライバ12は、命令コードバッファ21からデータ検索を表わす命令コードを受けて、サーチ線対SLPA0〜SLPA7を駆動することにより、アドレス/データバッファ20から受けた8ビットの検索データをサーチ線対SLPA0〜SLPA7および列シフタ66経由でCAMメモリアレイ回路110へ出力する。
図20は、列シフタ66の構成および配線シフト動作の一例を示す回路図である。
図20を参照して、列シフタ66は、スイッチSWCL0〜SWCL7を含む。列シフタ66は、サーチラインドライバ12とCAMメモリアレイ回路110との間に接続される。
列シフタ66は、CAMメモリアレイ回路110におけるすべてのメモリセル100が正常である場合には、サーチ線対SLPA0〜SLPA7とサーチ線対SLIPA0〜SLIPA7とをそれぞれ接続する。
一方、列シフタ66は、たとえばCAMメモリアレイ回路110におけるサーチ線対SLIPA2に接続されるメモリセル100に異常が発生した場合には、サーチ線対SLIPA2を除くように、サーチ線対SLPA0〜SLPA7とサーチ線対SLIPA0〜SLIPA7,SLIPASPとの接続をシフトさせる。すなわち、列シフタ66は、サーチ線対SLIPA2を、サーチ線対SLIPA2の隣に配置されたサーチ線対SLIPA1で置換する。列シフタ66は、置換に用いたサーチ線対SLIPA1を、サーチ線対SLIPA1の隣に配置されたサーチ線対SLIPA0で置換する。そして、列シフタ66は、置換に用いたサーチ線対SLIPA0がサーチ線対SLIPA0〜SLIPA7の配列の端であることから、サーチ線対SLIPA0を、予備メモリセル列に対応するサーチ線対SLIPASPで置換する。より詳細には、スイッチSWCL0は、サーチ線対SLPA0とサーチ線対SLIPASPとを接続する。スイッチSWCL1は、サーチ線対SLPA1とサーチ線対SLIPA0とを接続する。スイッチSWCL2は、サーチ線対SLPA2とサーチ線対SLIPA1とを接続する。スイッチSWCL3〜SWCL7は、サーチ線対SLPA3〜SLPA7とサーチ線対SLIPA3〜SLIPA7とをそれぞれ接続する。
CAMメモリアレイ回路110は、サーチラインドライバ12から受けた検索データとアドレス0番地〜255番地におけるデータの各々とを比較する。そして、CAMメモリアレイ回路110は、比較結果に基づいてCAMメモリアレイ回路4110におけるメモリセルを選択する。より詳細には、CAMメモリアレイ回路110は、8ビットすべてが一致したデータに対応するマッチ線MLAをハイレベルに保持し、かつ1ビットでも一致しないデータに対応するマッチ線MLAを放電してローレベルとする。なお、マッチ線MLA0〜MLA255,MLASPは、データ検索が行なわれる前にハイレベルにプリチャージされている。
アドレスデコーダ&プライオリティエンコーダ140は、ハイレベルに保持されているマッチ線MLAが複数個存在した場合には、たとえば番号の小さいマッチ線MLAを優先して、すなわちマッチ線MLAに対応するメモリセル群のアドレス値の小さい方を優先してエンコード出力する。
サーチ結果出力バッファ23は、アドレスデコーダ&プライオリティエンコーダ140から受けたサーチ結果であるアドレス値をサーチ結果出力端子33から外部へ出力する。
ここで、データ検索時、アドレスデコーダ&プライオリティエンコーダ140はアドレスデコーダとしてはまったく動作していない点に注意すべきである。
図21は、行シフタ62の構成および配線シフト動作の一例を示す回路図である。
図21を参照して、行シフタ62は、スイッチSWRL0〜SWRL255を含む。行シフタ62は、マッチ線MLA0〜MLA255,MLASPとシフト線SFT0〜SFT255,SFTSPとの間に接続される。
行シフタ62は、CAMメモリアレイ回路110およびCAMメモリアレイ回路4110におけるすべてのメモリセル100が正常である場合には、マッチ線MLASP,MLA0〜MLA255とシフト線SFT0〜SFT255,SFTSPとをそれぞれ接続する。
一方、行シフタ62は、CAMメモリアレイ回路110におけるいずれかのメモリセル100に異常が発生した場合には、異常が発生したメモリセル100に結合されるマッチ線を除くように、マッチ線MLA0〜MLA255,MLASPとシフト線SFT0〜SFT255,SFTSPとの接続をシフトさせる。すなわち、行シフタ62は、異常が発生したメモリセル100に結合されるマッチ線MLA以外のマッチ線MLAおよびマッチ線MLASPとシフト線SFT0〜SFT255とをそれぞれ接続する。
また、行シフタ62は、CAMメモリアレイ回路4110におけるいずれかのメモリセル100に異常が発生した場合には、異常が発生したメモリセル100に結合されるワード線WLBを除くように、マッチ線MLA0〜MLA255,MLASPとシフト線SFT0〜SFT255,SFTSPとの接続をシフトさせる。すなわち、行シフタ62は、異常が発生したメモリセル100に結合されるワード線WLBに対応するシフト線SFT以外のシフト線SFTおよびシフト線SFTSPとマッチ線MLA0〜MLA255とをそれぞれ接続する。
たとえば、行シフタ62は、CAMメモリアレイ回路4110におけるワード線WLB1に接続されるメモリセル100に異常が発生した場合には、ワード線WLB1に対応するシフト線SFT1を、シフト線SFT1の隣に配置されたシフト線SFT0で置換する。行シフタ62は、置換に用いたシフト線SFT0がシフト線SFT0〜SFT255の配列の端であることから、シフト線SFT0を、予備メモリセル行に対応するシフト線SFTSPで置換する。より詳細には、スイッチSWRL0は、シフト線SFTSPとマッチ線MLA0とを接続する。スイッチSWRL1は、シフト線SFT0とマッチ線MLA1とを接続する。スイッチSWRL2〜SWRL255は、シフト線SFT2〜SFT255とマッチ線MLA2〜MLA255とをそれぞれ接続する。
アドレスデコーダ&プライオリティエンコーダ140におけるプライオリティリゾルブ4140は、シフト線SFT0〜SFT255,SFTSPとワード線WLB0〜WLB255,WLBSPとの間に接続される。プライオリティリゾルブ4140は、ハイレベルに保持されているマッチ線MLAに接続されるシフト線SFTに対応するワード線WLBを選択してハイレベルに駆動し、他のワード線WLBをローレベルに駆動する。ここで、プライオリティリゾルブ4140は、ハイレベルに保持されているマッチ線MLAが複数本存在している場合には、ハイレベルに保持されている複数本のマッチ線MLAのうち、たとえば番号の最も小さいマッチ線MLAに接続されるシフト線SFTに対応するワード線WLBをハイレベルに駆動し、他のワード線WLBをローレベルに駆動する。
そうすると、CAMメモリアレイ回路4110において、ハイレベルに駆動されたワード線WLBに接続されたゲートを有するNチャネルMOSトランジスタがオン状態となり、記憶ノードのレベルがビット線対へ伝達される。すなわち、ビット線対BLIPB0〜BLIPB7,BLIPBSPには、ハイレベルに駆動されたワード線WLBに対応するメモリセル群の記憶データに基づく信号が現われる。
なお、プライオリティリゾルブ4140は、マッチ線MLASPはマッチ線MLA0よりも番号が小さいものとして処理する。また、予備メモリセル行が用いられていない場合、すなわちCAMメモリアレイ回路110におけるメモリセル100に異常が発生していない場合には、予備メモリセル行におけるメモリセルには、検索データとは必ず一致しないデータが記憶されている。
図22は、列シフタ64の構成および配線シフト動作の一例を示す回路図である。
図22を参照して、列シフタ64は、スイッチSWCM0〜SWCM7を含む。列シフタ64は、CAMメモリアレイ回路4110とセンスアンプ4011との間に接続される。
列シフタ64は、CAMメモリアレイ回路4110におけるすべてのメモリセル100が正常である場合には、ビット線対BLPB0〜BLPB7とビット線対BLIPB0〜BLIPB7とをそれぞれ接続する。
一方、列シフタ64は、たとえばCAMメモリアレイ回路4110におけるビット線対BLIPB1に接続されるメモリセル100に異常が発生した場合には、ビット線対BLIPB1を除くように、ビット線対BLPB0〜BLPB7とビット線対BLIPB0〜BLIPB7,BLIPBSPとの接続をシフトさせる。すなわち、列シフタ64は、ビット線対BLIPB1を、ビット線対BLIPB1の隣に配置されたビット線対BLIPB0で置換する。そして、列シフタ64は、置換に用いたビット線対BLIPB0がビット線対BLIPB0〜BLIPB7の配列の端であることから、ビット線対BLIPB0を、予備メモリセル列に対応するビット線対BLIPBSPで置換する。より詳細には、スイッチSWCM0は、ビット線対BLPB0とビット線対BLIPBSPとを接続する。スイッチSWCM1は、ビット線対BLPB1とビット線対BLIPB0とを接続する。スイッチSWCM2〜SWCM7は、ビット線対BLPB2〜BLPB7とビット線対BLIPB2〜BLIPB7とをそれぞれ接続する。
センスアンプ4011は、CAMメモリアレイ回路4110に対してデータ読み出しおよび読み出しデータの増幅を行なう。すなわち、センスアンプ4011は、ビット線対BLPB0〜BLPB7に現われた信号を検出して増幅する。そして、センスアンプ4011は、増幅した信号、すなわち検索データと一致するデータが記憶されているCAMメモリアレイ回路110のアドレス値をサーチ結果としてサーチ結果出力バッファ23へ出力する。
したがって、アドレスデコーダ&プライオリティエンコーダ140は、CAMメモリアレイ回路4110およびセンスアンプ4011を用いて、エンコーダの機能を実現することが可能である。さらに、アドレスデコーダ&プライオリティエンコーダ140は、CAMメモリアレイ回路4110、センスアンプ4011およびプライオリティリゾルブ4140を用いて、プライオリティエンコーダの機能を実現することが可能である。
図23は、列シフタにおけるスイッチSWCの構成の一例を示す回路図である。ここで、スイッチSWCは、スイッチSWCK0〜SWCK7、スイッチSWCL0〜SWCL7およびスイッチSWCM0〜SWCM7の各々に対応している。
図23を参照して、スイッチSWCは、PチャネルMOSトランジスタM1,M2と、NチャネルMOSトランジスタM3,M4と、NOTゲートG41とを含む。
NOTゲートG41は、受けた切り替え制御信号CLMの論理レベルを反転して出力する。
PチャネルMOSトランジスタM1は、切り替え制御信号CLMを受けるゲートと、入力ノードINに接続される第1導通電極と、出力ノードOUT_0に接続される第2導通電極とを有する。
PチャネルMOSトランジスタM2は、NOTゲートG41から論理レベル反転後の切り替え制御信号CLMを受けるゲートと、入力ノードINに接続される第1導通電極と、出力ノードOUT_1に接続される第2導通電極とを有する。
NチャネルMOSトランジスタM3は、NOTゲートG41から論理レベル反転後の切り替え制御信号CLMを受けるゲートと、入力ノードINに接続される第1導通電極と、出力ノードOUT_0に接続される第2導通電極とを有する。
NチャネルMOSトランジスタM4は、切り替え制御信号CLMを受けるゲートと、入力ノードINに接続される第1導通電極と、出力ノードOUT_1に接続される第2導通電極とを有する。
切り替え制御信号CLMが論理ローレベルである場合には、PチャネルMOSトランジスタM2およびNチャネルMOSトランジスタM4がオフし、PチャネルMOSトランジスタM1およびNチャネルMOSトランジスタM3がオンする。したがって、入力ノードINと出力ノードOUT_0とが電気的に接続される。
切り替え制御信号CLMが論理ハイレベルである場合には、PチャネルMOSトランジスタM2およびNチャネルMOSトランジスタM4がオンし、PチャネルMOSトランジスタM1およびNチャネルMOSトランジスタM3がオフする。したがって、入力ノードINと出力ノードOUT_1とが電気的に接続される。
図24は、行シフタにおけるスイッチSWRの構成の一例を示す回路図である。ここで、スイッチSWRは、スイッチSWRK1〜SWRK255およびスイッチSWRL1〜SWRL255の各々に対応している。
図24を参照して、スイッチSWRは、PチャネルMOSトランジスタM11,M12と、NチャネルMOSトランジスタM13,M14と、NOTゲートG42とを含む。
スイッチSWRは、2個のスイッチSWCの入力ノードIN同士を接続した構成である。
より詳細には、NOTゲートG42は、受けた切り替え制御信号ROW1の論理レベルを反転して出力する。
PチャネルMOSトランジスタM11は、切り替え制御信号ROW1を受けるゲートと、交差ノードNCに接続される第1導通電極と、入力ノードIN_0に接続される第2導通電極とを有する。
PチャネルMOSトランジスタM12は、NOTゲートG42から論理レベル反転後の切り替え制御信号ROW1を受けるゲートと、交差ノードNCに接続される第1導通電極と、入力ノードIN_1に接続される第2導通電極とを有する。
NチャネルMOSトランジスタM13は、NOTゲートG42から論理レベル反転後の切り替え制御信号ROW1を受けるゲートと、交差ノードNCに接続される第1導通電極と、入力ノードIN_0に接続される第2導通電極とを有する。
NチャネルMOSトランジスタM14は、切り替え制御信号ROW1を受けるゲートと、交差ノードNCに接続される第1導通電極と、入力ノードIN_1に接続される第2導通電極とを有する。
NOTゲートG43は、受けた切り替え制御信号ROW2の論理レベルを反転して出力する。
PチャネルMOSトランジスタM15は、切り替え制御信号ROW2を受けるゲートと、交差ノードNCに接続される第1導通電極と、出力ノードOUT_0に接続される第2導通電極とを有する。
PチャネルMOSトランジスタM16は、NOTゲートG43から論理レベル反転後の切り替え制御信号ROW2を受けるゲートと、交差ノードNCに接続される第1導通電極と、出力ノードOUT_1に接続される第2導通電極とを有する。
NチャネルMOSトランジスタM17は、NOTゲートG43から論理レベル反転後の切り替え制御信号ROW2を受けるゲートと、交差ノードNCに接続される第1導通電極と、出力ノードOUT_0に接続される第2導通電極とを有する。
NチャネルMOSトランジスタM18は、切り替え制御信号ROW2を受けるゲートと、交差ノードNCに接続される第1導通電極と、出力ノードOUT_1に接続される第2導通電極とを有する。
切り替え制御信号ROW1,ROW2が論理ローレベルである場合には、PチャネルMOSトランジスタM12,M16およびNチャネルMOSトランジスタM14,M18がオフし、PチャネルMOSトランジスタM11,M15およびNチャネルMOSトランジスタM13,M17がオンする。したがって、入力ノードIN_0と出力ノードOUT_0とが電気的に接続される。
切り替え制御信号ROW1が論理ローレベルであり、切り替え制御信号ROW2が論理ハイレベルである場合には、PチャネルMOSトランジスタM12,M15およびNチャネルMOSトランジスタM14,M17がオフし、PチャネルMOSトランジスタM11,M16およびNチャネルMOSトランジスタM13,M18がオンする。したがって、入力ノードIN_0と出力ノードOUT_1とが電気的に接続される。
切り替え制御信号ROW1が論理ハイレベルであり、切り替え制御信号ROW2が論理ローレベルである場合には、PチャネルMOSトランジスタM12,M15およびNチャネルMOSトランジスタM14,M17がオンし、PチャネルMOSトランジスタM11,M16およびNチャネルMOSトランジスタM13,M18がオフする。したがって、入力ノードIN_1と出力ノードOUT_0とが電気的に接続される。
切り替え制御信号ROW1,ROW2が論理ハイレベルである場合には、PチャネルMOSトランジスタM12,M16およびNチャネルMOSトランジスタM14,M18がオンし、PチャネルMOSトランジスタM11,M15およびNチャネルMOSトランジスタM13,M17がオフする。したがって、入力ノードIN_1と出力ノードOUT_1とが電気的に接続される。
図25は、プライオリティリゾルブ4140の構成を示す回路図である。図25では、シフト線SFTSP,SFT0〜SFT6およびワード線WLBSP,WLB0〜WLB6に対応する回路を代表的に示す。
図25を参照して、プライオリティリゾルブ4140は、バッファG101〜G108と、NORゲートG111〜G116と、NOTゲートG117と、NANDゲートG121〜G127と、NOTゲートG131〜G138とを含む。
プライオリティリゾルブ4140は、ハイレベルに保持されている複数個のシフト線SFTのうち、番号の最も小さいシフト線SFTに対応するワード線WLBのみをハイレベルに駆動し、他のワード線WLBをローレベルに駆動する。たとえば、シフト線SFTSPがハイレベルである場合には、シフト線SFT0〜SFT255がハイレベルであるかローレベルであるかに関わらず、ワード線WLBSPはハイレベルとなり、ワード線WLB0〜WLB255はすべてローレベルとなる。
なお、半導体装置2においてたとえば1個のメモリセルに異常が発生した場合には、予備メモリセル行および予備メモリセル列の両方を用いて救済を行なう必要はない。すなわち、予備メモリセル行への切り替えおよび予備メモリセル列への切り替えの両方を行なう必要はない。このため、半導体装置2では、たとえば図示しない制御回路が予備メモリセル行への切り替えおよび予備メモリセル列への切り替えのいずれかを選択して行シフタ部51または列シフタ部52に配線シフト動作を行なわせる。
また、半導体装置2では、テスタ等を用いることにより半導体装置2におけるメモリセル100の異常が発見されると、上記のような予備メモリセル行または予備メモリセル列への切り替えを行なう。そして、CAMメモリアレイ回路110およびCAMメモリアレイ回路4110において、予備メモリセル行または予備メモリセル列への切り替えを行なった後の256個のメモリセル群に、CAMメモリアレイ回路110におけるメモリセル群が有する所定の優先順位に従って適切にデータを保存する。これにより、メモリセルに異常が発生した半導体装置を救済して正常に動作させることができるため、半導体装置の歩留まりを向上させることができる。
ところで、本発明の第2の実施の形態に係る半導体装置では、CAMメモリアレイ回路110またはCAMメモリアレイ回路4110におけるメモリセル100に異常が発生した場合、単に異常が発生したメモリセル行を予備メモリセル行に切り替える構成では、半導体装置を正常に動作させることが困難である。これは、プライオリティリゾルブ4140では、ワード線WLBを活性化させる優先順位が固定的に決まっているため、予備メモリセル行への切り替えにより、CAMメモリアレイ回路110におけるメモリセル群の優先順位が崩れてしまう場合があるからである。
しかしながら、本発明の第2の実施の形態に係る半導体装置では、単に異常が発生したメモリセル行を予備メモリセル行に切り替えるのではなく、行シフタ部51は、異常が発生したメモリセル行を除くように、ワード線WLAとマッチ線MLBとの接続をシフトさせ、また、ワード線WLBとシフト線SFTとの接続をシフトさせる。このような構成により、予備メモリセル列への切り替えに加えて、予備メモリセル行への切り替えを行なっても、CAMメモリアレイ回路110におけるメモリセル群の優先順位を崩すことがなく、半導体装置を救済して正常に動作させることができる。したがって、本発明の第2の実施の形態に係る半導体装置では、半導体装置の歩留まりを向上させることができる。
また、本発明の第2の実施の形態に係る半導体装置では、プライオリティエンコーダとして機能するアドレスデコーダ&プライオリティエンコーダ140が含むCAMメモリアレイ回路4110のメモリセル100に異常が発生した場合でも、CAMメモリアレイ回路4110の予備メモリセル行または予備メモリセル列への切り替えが可能である。すなわち、プライオリティエンコーダに異常が発生した場合でも、半導体装置を救済して正常に動作させることができる。
また、半導体装置2を実際に製造する場合、CAMメモリアレイ回路110およびCAMメモリアレイ回路4110の各々において互いに対応するメモリセル行におけるメモリセル100に異常が発生することは稀である。ここで、本発明の第2の実施の形態に係る半導体装置では、CAMメモリアレイ回路110およびCAMメモリアレイ回路4110の各々において互いに非対応のメモリセル行におけるメモリセル100に異常が発生した場合でも、行シフタ部51によって半導体装置を救済して正常に動作させることができる。
その他の構成および動作は第1の実施の形態に係る半導体装置と同様であるため、ここでは詳細な説明を繰り返さない。したがって、本発明の第2の実施の形態に係る半導体装置では、データ検索機能を実現するとともにコスト低減を図り、かつコスト対性能比の最適化を図ることができる。
次に、本発明の他の実施の形態について図面を用いて説明する。なお、図中同一または相当部分には同一符号を付してその説明は繰り返さない。
<第3の実施の形態>
本実施の形態は、第2の実施の形態に係る半導体装置を複数個備えた半導体装置に関する。以下で説明する内容以外は第2の実施の形態に係る半導体装置と同様である。
図26(a)および(b)は、本発明の第3の実施の形態に係る半導体装置の構成を示す図である。
図26(a)を参照して、半導体装置3は、ブロックシフタ71と、サブメモリアレイ101〜108とを備える。半導体装置3は、さらに、冗長構成としてサブメモリアレイSP101を備える。サブメモリアレイ101〜108,SP101の各々は、たとえば半導体装置2と同じ構成である。
サブメモリアレイ101〜108は、それぞれ上位アドレス0番地〜7番地に対応している。また、サブメモリアレイ101〜108の各々における256個のメモリセル群が、下位アドレス0番地〜255番地に対応している。
ブロックシフタ71は、サブメモリアレイ101〜108におけるすべてのメモリセルが正常である場合、あるいは半導体装置3におけるメモリセルに異常が発生した場合であって、サブメモリアレイ101〜108の各々が有する冗長構成によって救済が可能であるときには、ブロックシフタ71は、上位アドレス0番地〜7番地とサブメモリアレイ101〜108とを対応付ける。
ここで、半導体装置3におけるメモリセルに異常が発生した場合であって、サブメモリアレイ101〜108の各々が有する冗長構成によって救済が可能であるときには、本発明の第2の実施の形態に係る半導体装置と同様に、メモリセルに異常が発生したサブメモリアレイ内で予備メモリセル行または予備メモリセル列への切り替えが行なわれる。
一方、半導体装置3におけるメモリセルに異常が発生した場合であって、異常が発生したメモリセルの数が多いためにサブメモリアレイ101〜108の各々が有する冗長構成で救済を行なうことができないときには、サブメモリアレイSP101を用いた救済が行なわれる。
すなわち、図26(b)を参照して、ブロックシフタ71は、たとえばサブメモリアレイ101におけるメモリセルに異常が発生した場合であって、サブメモリアレイ101が有する冗長構成で救済を行なうことができないときには、サブメモリアレイ101を除くように、外部から受けたアドレスとサブメモリアレイ101〜108,SP101との関係をシフトさせる。より詳細には、ブロックシフタ71は、サブメモリアレイ101を未使用とし、上位アドレス0番地〜7番地とサブメモリアレイ102〜108,SP101とを対応付けるように、ブロックシフタ71とサブメモリアレイ101〜108,SP101との配線をシフトさせる。
その他の構成および動作は第2の実施の形態に係る半導体装置と同様であるため、ここでは詳細な説明を繰り返さない。したがって、本発明の第3の実施の形態に係る半導体装置では、データ検索機能を実現するとともにコスト低減を図り、かつコスト対性能比の最適化を図ることができる。
今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は上記した説明ではなくて特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
1,2,3 半導体装置、10,110 CAMメモリアレイ回路(第1のメモリアレイ回路)、11 センスアンプ(第1のセンスアンプ)、12 サーチラインドライバ(第1のサーチラインドライバ)、20 アドレス/データバッファ、21 命令コードバッファ、22 クロックバッファ、23 サーチ結果出力バッファ、30 アドレス/データ入力端子、31 命令コード入力端子、32 クロック入力端子、33 サーチ結果出力端子、40,140 アドレスデコーダ&プライオリティエンコーダ、51 行シフタ部、52,53 列シフタ部、61,62 行シフタ、63,64,65,66 列シフタ、101〜108,SP101 サブメモリアレイ、WLA0〜WLA255,WLB0〜WLB255,WLASP,WLBSP ワード線、MLA0〜MLA255,MLB0〜MLB255,MLASP,MLBSP マッチ線、BLPA0〜BLPA15,BLPB0〜BLPB7,BLIPA0〜BLIPA15,BLIPASP,BLIPB0〜BLIPB7,BLIPBSP ビット線対、BLA0〜BLA15,/BLA0〜/BLA15,BLIA0〜BLIA15,/BLIA0〜/BLIA15,BLIASP,/BLIASP ビット線、SLPA0〜SLPA7,SLPB0〜SLPB7,SLIPA0〜SLIPA7,SLIPASP,SLIPB0〜SLIPB7,SLIPBSP サーチ線対、SLA0〜SLA7,/SLA0〜/SLA7,SLIA0〜SLIA7,/SLIA0〜/SLIA7,SLIASP,/SLIASP サーチ線、SFTSP,SFT0〜SFT255 シフト線、4010,4110 CAMメモリアレイ回路(第2のメモリアレイ回路)、4011 センスアンプ(第2のセンスアンプ)、4012 サーチラインドライバ(第2のサーチラインドライバ)、4040,4140 プライオリティリゾルブ、G1〜G8,G101〜G108 バッファ、G11〜G16,G111〜G116 NORゲート、G21〜G27,G121〜G127 NANDゲート、G17,G31〜G38,G41,G42,G117,G131〜G138 NOTゲート、SWCK0〜SWCK7,SWCL0〜SWCL7,SWCM0〜SWCM7,SWRK0〜SWRK255,SWRL0〜SWRL255 スイッチ、M1,M2,M11,M12 PチャネルMOSトランジスタ、M3,M4,M13,M14 NチャネルMOSトランジスタ。