IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ マイクロン テクノロジー, インク.の特許一覧

特表2022-522048連想メモリバッファを備えた連想メモリシステムでの書き込み及びクエリ実行操作
<>
  • 特表-連想メモリバッファを備えた連想メモリシステムでの書き込み及びクエリ実行操作 図1A
  • 特表-連想メモリバッファを備えた連想メモリシステムでの書き込み及びクエリ実行操作 図1B
  • 特表-連想メモリバッファを備えた連想メモリシステムでの書き込み及びクエリ実行操作 図2A
  • 特表-連想メモリバッファを備えた連想メモリシステムでの書き込み及びクエリ実行操作 図2B
  • 特表-連想メモリバッファを備えた連想メモリシステムでの書き込み及びクエリ実行操作 図3A
  • 特表-連想メモリバッファを備えた連想メモリシステムでの書き込み及びクエリ実行操作 図3B
  • 特表-連想メモリバッファを備えた連想メモリシステムでの書き込み及びクエリ実行操作 図4
  • 特表-連想メモリバッファを備えた連想メモリシステムでの書き込み及びクエリ実行操作 図5
  • 特表-連想メモリバッファを備えた連想メモリシステムでの書き込み及びクエリ実行操作 図6
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2022-04-13
(54)【発明の名称】連想メモリバッファを備えた連想メモリシステムでの書き込み及びクエリ実行操作
(51)【国際特許分類】
   G11C 15/04 20060101AFI20220406BHJP
   G06F 12/00 20060101ALI20220406BHJP
【FI】
G11C15/04 631D
G06F12/00 597Z
【審査請求】有
【予備審査請求】未請求
(21)【出願番号】P 2021559962
(86)(22)【出願日】2020-04-01
(85)【翻訳文提出日】2021-11-26
(86)【国際出願番号】 US2020026108
(87)【国際公開番号】W WO2020210098
(87)【国際公開日】2020-10-15
(31)【優先権主張番号】16/382,511
(32)【優先日】2019-04-12
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
(71)【出願人】
【識別番号】595168543
【氏名又は名称】マイクロン テクノロジー,インク.
(74)【代理人】
【識別番号】100121083
【弁理士】
【氏名又は名称】青木 宏義
(74)【代理人】
【識別番号】100138391
【弁理士】
【氏名又は名称】天田 昌行
(74)【代理人】
【識別番号】100074099
【弁理士】
【氏名又は名称】大菅 義之
(72)【発明者】
【氏名】アケル アミーン ディー.
(72)【発明者】
【氏名】エイラート ショーン エス.
【テーマコード(参考)】
5B160
【Fターム(参考)】
5B160AA12
(57)【要約】
装置(例えば、連想メモリシステム)は、コントローラ、コントローラに結合された第1の連想メモリ、及びコントローラに結合された第2の連想メモリを有し得る。コントローラは、第1の連想メモリに、データを第1の連想メモリに書き込ませ、第2の連想メモリに、データを第2の連想メモリに書き込ませ、第1の連想メモリがデータを第1の連想メモリに書き込み続ける間、第2の連想メモリに、第2の連想メモリに書き込まれたデータに対してクエリ実行させるように構成することができる。
【特許請求の範囲】
【請求項1】
コントローラと、
前記コントローラに結合された第1の連想メモリと、
前記コントローラに結合された第2の連想メモリと、を備える装置であって、
前記コントローラは、
前記第1の連想メモリに、データを前記第1の連想メモリに書き込ませ、
前記第2の連想メモリに、前記データを前記第2の連想メモリに書き込ませ、
前記第1の連想メモリが前記データを前記第1の連想メモリに書き込み続ける間、前記第2の連想メモリに、前記第2の連想メモリに書き込まれた前記データに対してクエリ実行させるように構成される、前記装置。
【請求項2】
前記コントローラが、
前記第1の連想メモリに、前記データを前記第1の連想メモリのメモリタイルに書き込ませ、
前記第2の連想メモリに、前記データを前記第2の連想メモリの領域に書き込ませ、
前記第1の連想メモリの前記メモリタイルの位置を、前記第2の連想メモリの前記領域の位置にマッピングするように構成される、請求項1に記載の装置。
【請求項3】
前記コントローラが、前記メモリタイルがデータでいっぱいであるとの判定に応えて、前記メモリタイルの前記位置の前記領域の前記位置への前記マッピングを無効化するように構成される、請求項2に記載の装置。
【請求項4】
前記コントローラが、前記メモリタイルがデータでいっぱいであるとの判定に応えて、前記第2の連想メモリに、前記データを前記領域から削除させるように構成される、請求項2に記載の装置。
【請求項5】
前記第2の連想メモリが、入力データを前記第2の連想メモリに書き込まれた前記データと比較することによって、前記第2の連想メモリに書き込まれた前記データに対してクエリ実行するように構成される、請求項1から4のいずれかに記載の装置。
【請求項6】
前記第1の連想メモリが、前記データを前記第1の連想メモリの抵抗可変メモリセルに書き込むように構成される不揮発性連想メモリであり、
前記第2の連想メモリが、前記データを前記第2の連想メモリのスタティックランダムアクセスメモリセルに書き込むように構成される揮発性連想メモリである、請求項1から4のいずれか1項に記載の装置。
【請求項7】
前記コントローラが、前記第1の連想メモリ及び前記第2の連想メモリに、前記第2の連想メモリによる前記データの前記第2の連想メモリへの書き込みが終了するまで、前記データを前記第1の連想メモリ及び前記第2の連想メモリに同時に書き込ませるように構成される、請求項1から4のいずれか1項に記載の装置。
【請求項8】
前記コントローラが、
前記データが前記第1の連想メモリに書き込まれている間、前記第1の連想メモリの前記データの位置を前記第2の連想メモリの前記データの位置にマッピングし、
前記第1の連想メモリが前記データの前記第1の連想メモリへの前記書き込みを完了したことに応えて、前記マッピングを無効化するように構成される、請求書1から4のいずれか1項に記載の装置。
【請求項9】
前記コントローラが、前記第1の連想メモリが前記データの前記第1の連想メモリへの前記書き込みを完了させたことに応えて、前記第2の連想メモリに、前記データを前記第2の連想メモリから削除させるように構成される、請求項1から4のいずれか1項に記載の装置。
【請求項10】
コントローラと、
前記コントローラに結合されたメイン連想メモリと、
前記コントローラに結合されたバッファ連想メモリと、を備える装置であって、
前記コントローラは、前記バッファ連想メモリに、前記メイン連想メモリが前記メイン連想メモリの部分的にいっぱいであるメモリタイルに対してクエリ実行することに代わり、前記バッファ連想メモリに対してクエリ実行させるように構成される、前記装置。
【請求項11】
前記コントローラが、前記バッファ連想メモリに、前記メイン連想メモリが部分的にいっぱいであるメモリタイルに対してクエリ実行することに代わり前記バッファ連想メモリに対してクエリ実行させると同時に、前記メイン連想メモリに、前記データで完全にいっぱいである前記メイン連想メモリのメモリタイルに対してクエリ実行させるように構成される、請求項10に記載の装置。
【請求項12】
前記コントローラが、前記メイン連想メモリに、前記部分的にいっぱいであるメモリタイルを書き込み可能にさせたことに応えて、前記部分的にいっぱいであるメモリタイルの全てのデータベクトルを、前記部分的にいっぱいであるメモリタイルから前記バッファ連想メモリにコピーさせるように構成される、請求項10に記載の装置。
【請求項13】
前記部分的にいっぱいであるメモリタイルから前記バッファ連想メモリにコピーされた前記データベクトルは、第1のデータベクトルであり、
前記コントローラが、
前記メイン連想メモリに、前記部分的にいっぱいであるメモリタイルを書き込み可能にさせたことに応えて、前記メイン連想メモリに、第2のデータベクトルを前記部分的にいっぱいであるメモリタイルの空き位置に書き込ませ、
前記メイン連想メモリが前記第2のデータベクトルを前記部分的にいっぱいであるメモリタイルに書き込んでいる間、前記バッファ連想メモリに、前記第2のデータベクトルを前記バッファ連想メモリに書き込ませ、
前記メイン連想メモリが前記第2のデータベクトルを前記部分的にいっぱいであるメモリタイルに書き込み続ける間、前記バッファ連想メモリに、前記バッファ連想メモリの前記第1のデータベクトル及び前記第2のデータベクトルに対してクエリ実行させるように構成される、請求項12に記載の装置。
【請求項14】
前記コントローラが、前記メイン連想メモリの前記部分的にいっぱいであるメモリタイルの位置のアドレスを前記第1のデータベクトル及び前記第2のデータベクトルに対応する前記バッファ連想メモリのアドレス範囲にマッピングするエントリを備えるデータ構造を管理するように構成される、請求項13に記載の装置。
【請求項15】
前記メイン連想メモリが、
第2のベクトルを前記メイン連想メモリの空き位置に書き込み、
前記メイン連想メモリの第1のデータベクトルの位置を前記空き位置にマッピングすることによって、
前記メイン連想メモリの前記第1のデータベクトルを前記第2のデータベクトルに置き換えるように構成される、請求項13に記載の装置。
【請求項16】
データベクトルを第1の連想メモリのメモリタイルに書き込むことと、
前記データベクトルを前記メモリタイルに対応する第2の連想メモリの領域に書き込むことと、
前記メモリタイルの代わりに前記領域に対してクエリ実行することと、を含む、方法。
【請求項17】
前記データベクトルを前記メモリタイルにかつ前記領域に書き込むことが、前記データベクトルの前記領域への書き込みが完了するまで前記データベクトルを前記メモリタイルにかつ前記領域に同時に書き込むことを備え、
前記メモリタイルの代わりに前記領域に対してクエリ実行することが、前記データベクトルの前記領域への書き込みが完了した後、前記データベクトルを前記メモリタイルに書き込んでいる間、前記領域の前記データベクトルに対してクエリ実行することを備える、請求項16に記載の方法。
【請求項18】
前記メモリタイルの代わりに前記領域に対してクエリ実行することが、
前記メモリタイルが以前に書き込まれたデータベクトルでいっぱいではないという判定に応えて、前記メモリタイルの代わりに前記領域に対してクエリ実行すること、及び
追加メモリタイルが以前に書き込まれたデータベクトルでいっぱいであるという判定に応えて、前記メモリタイルの代わりに前記領域に対してクエリ実行すると同時に、前記第1の連想メモリの前記追加メモリタイルに対してクエリ実行することを備える、請求項16に記載の方法。
【請求項19】
前記データベクトルを前記メモリタイルにかつ前記領域に書き込む前に、前記メモリタイルの以前に書き込まれたデータベクトルを前記領域にコピーすることをさらに含む、請求項16から18のいずれか1項に記載の方法。
【請求項20】
入力データベクトルを、前記第1の連想メモリまたは前記第2の連想メモリに格納された追加データベクトルと比較することと、
前記入力データベクトルと前記追加データベクトルとの間の一致が有効であるかどうかを、一致検証回路によって判定することと、をさらに含む、請求項16から18のいずれか1項に記載の方法。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、一般に、連想メモリ、より詳細には、連想メモリバッファを備えた連想メモリシステムにおける書き込み及びクエリ実行操作に関する。
【背景技術】
【0002】
メモリシステムは、コンピュータ、携帯電話、ハンドヘルド電子デバイスなどといった電子システムに実装され得る。ソリッドステートドライブ(SSD)、組み込みマルチメディアコントローラ(eMMC)デバイス、ユニバーサルフラッシュストレージ(UFS)デバイスなどといった一部のメモリシステムは、ホストからのホスト(例えば、ユーザ)データを格納するための不揮発性ストレージメモリを含み得る。不揮発性ストレージメモリは、電源が入っていないとき、格納データを保持することによって永続的データを提供し、他のタイプのメモリの中でもとりわけ、NANDフラッシュメモリ、NORフラッシュメモリ、読み出し専用メモリ(ROM)、電気的消去可能プログラマブルROM(EEPROM)、消去可能プログラマブルROM(EPROM)、ならびに、相変化ランダムアクセスメモリ(PCRAM)、3次元クロスポイントメモリ(例えば、3D XPoint)、抵抗ランダムアクセスメモリ(RRAM)、強誘電体ランダムアクセスメモリ(FeRAM)、磁気抵抗ランダムアクセスメモリ(MRAM)、及びプログラム可能導電性メモリなどの抵抗可変メモリを含み得る。
【0003】
様々な抵抗可変メモリセルなどの一部のメモリセルは、メモリセルが、セルにアクセスするのに用いられる信号線の交点に(例えば、ワード線とビット線の交点に)配置されるようなクロスポイントアーキテクチャに配置することができる。抵抗可変メモリセルの状態(例えば、格納データ値)は、例えばメモリセルのプログラムされた抵抗に依存し得る。
【0004】
メモリは通常、ホストが提供したアドレスに応えて、ユーザデータをホストに返す(例えば、読み取り操作中に)。別の形態のメモリは、連想パターンメモリ(APM)としても知られる連想メモリ(CAM)である。いくつかの例では、CAMに対して、入力データ(例えば、入力データベクトル)がCAMに格納されているかどうかを判定するためにクエリ実行することができる。例えば、CAMは、入力データを受信し得、検索を実行してCAMの格納データ(例えば、格納データベクトル)が入力データと一致するかどうかを判定し得る。
【0005】
CAMは、コンピュータシステム、データベース、画像もしくは音声認識、バイオメトリクス、データ圧縮、キャッシュメモリコントローラ、またはコンピュータ及び通信ネットワーク(例えば、ネットワークスイッチ、メディアアクセスコントローラ、ネットワークルータなどでの)などでの、高速検索またはパターンマッチングを必要とするアプリケーションでハードウェアベースの検索デバイスとして利用することができる。
【図面の簡単な説明】
【0006】
図1A】本開示のいくつかの実施形態による、装置の簡略化されたブロック図である。
図1B】本開示のいくつかの実施形態による、データ構造の例の図である。
図2A】本開示のいくつかの実施形態による、特定の書き込み段階に対応する不揮発性CAMの一部のブロック図である。
図2B】本開示のいくつかの実施形態による、図2Aの特定の書き込み段階後の特定の書き込み段階に対応する不揮発性CAMの一部のブロック図である。
図3A】本開示のいくつかの実施形態による、特定の書き込み段階に対応するバッファCAMの一部のブロック図である。
図3B】本開示のいくつかの実施形態による、図3Aの特定の書き込み段階後の特定の書き込み段階に対応するバッファCAMの一部のブロック図である。
図4】本開示のいくつかの実施形態による、CAMの簡略化されたブロック図である。
図5】本開示のいくつかの実施形態による、不揮発性CAMの一部の図である。
図6】本開示のいくつかの実施形態による、不揮発性CAMに格納されたデータに対してクエリ実行する図である。
【発明を実施するための形態】
【0007】
様々な例で、不揮発性メモリをCAMとして使用することができる。不揮発性メモリCAMを設けることには、揮発性CAM(例えば、SRAM CAM)に比べ様々な利益が存在し得る。例えば、不揮発性CAMは、データの保持に電力を必要とせず、不揮発性メモリセルは揮発性メモリセルと比較してフットプリントが小さいことが多いため、より高いストレージ密度を提供することができる。多くの場合、揮発性CAMは、不揮発性CAMと比較してより高速なデータ書き込み時間を提供することができ、揮発性CAMに書き込まれたデータは、不揮発性CAMに書き込まれたデータよりもすぐにクエリ実行のために利用可能となり得る。
【0008】
いくつかの例では、不揮発性CAMには、データがCAMに書き込まれている間、クエリ実行のためのアクセスができない場合がある。例えば、不揮発性CAMの以前に格納されたデータには、追加データが不揮発性CAMに書き込まれている間、クエリ実行のためにアクセスができない場合がある。この問題は、以前に書き込まれたデータには、書き込み時間中クエリ実行のためにアクセスできない場合があるため不揮発性CAMに関連する比較的長い書き込み時間によって悪化し得る。
【0009】
本明細書中でさらに説明するように、本開示の様々な実施形態は、不揮発性メモリセルに関連する書き込み時間を考慮することができるCAM実装を提供する。したがって、実施形態は、他の利益の中でもとりわけ、以前のアプローチと比較して向上したクエリ実行時間を有する不揮発性CAMを提供することができる。
【0010】
例として、いくつかの実施形態は、メインCAMとして不揮発性の第1のCAMを使用し、バッファCAMとして揮発性CAM(例えば、SRAMバッファCAM)などの第2のCAMを使用することができる。メインCAM及びバッファCAMにデータを書き込むことができ、メインCAMにデータを書き込み続けている間、バッファCAMに書き込まれたデータに対してクエリ実行することができる。このことは、例えば、メインCAMのデータに対してクエリ実行するためメインCAMにデータが書き込まれるまでの待機に関連する遅延を排除することができる。
【0011】
いくつかの例では、メインCAMの以前に書き込まれたデータをバッファCAMにコピーして、追加データをメインCAMに書き込んでいる間、バッファCAMにおいて、以前に書き込まれたデータに対してクエリ実行できるようにする。このことは、例えば、メインCAMに追加データを書き込んでいる間メインCAMの以前に書き込まれたデータにクエリ実行のためにアクセスできないという問題を解消することができる。
【0012】
バッファCAMをメイン不揮発性CAMと併せて用いると、メインCAMと併せてバッファとしてDRAMバッファまたはテーブルを用いる場合と比較して、エネルギー要件、コスト、及び信頼できる比較結果を取得するのにかかる時間を削減することができる。例えば、DRAMまたはテーブルの使用には、入力データと比較されているメインCAMのデータに対応するデータを識別するために、DRAMまたはテーブルのコンテンツ全体をスキャンするという時間のかかるプロセスが含まれ得る。
【0013】
図1Aは、本開示のいくつかの実施形態による、コンピューティングシステム100の形式の装置の簡略化されたブロック図である。コンピューティングシステム100は、例えば、他のタイプのCAMシステムの中でもとりわけ周辺コンポーネント相互接続エクスプレス(PCIe)CAMシステムであり得るCAMシステム102の形態の装置を含む。
【0014】
CAMシステム102は、コントローラ104、バス108を介してコントローラ104に結合されたCAM106-1から106-8、ならびにコントローラ104に結合されたCAM110-1及び110-2を含み得る。8個のCAM106及び2個のCAM110が示されているが、任意の数のCAM106及びCAM110が存在し得る。いくつかの例では、CAM106は、メイン(例えば、一次)CAMと呼ばれ得、CAM110は、バッファCAMと呼ばれ得る(例えば、CAM110は、CAM106のバッファとして機能することができるので)。いくつかの例では、CAM106-1から106-8を含み得る単一のメインCAM106が在り得、CAM110-1及び110-2を含み得る単一のバッファCAM110が在り得る。本明細書中では、「CAM106」及び/または「メインCAM」は、CAM106-1から106-8の1つまたは複数を指すのに用いられ、「CAM110」及び/または「バッファCAM」は、CAM110-1及び110-2の1つまたは複数を指すのに用いられる。
【0015】
コントローラ104は、メインCAMに、1つまたは複数のデータベクトルなどのデータをメインCAMに書き込ませ、バッファCAMに、データをバッファCAMに書き込ませ、バッファCAMに、メインCAMがデータをメインCAMに書き込み続ける間、バッファCAMに書き込まれたデータに対してクエリ実行させることができる。いくつかの例では、メインCAM及び/またはバッファCAMでデータに対してクエリ実行することは、入力データ(例えば、入力データベクトル)をメインCAM及び/またはバッファCAMのデータと比較することを含み得る。いくつかの例では、コントローラ104は、メインCAMがメインCAMへのデータの書き込みを終了させたとの判定に応えて、バッファCAMに、バッファCAMに書き込まれたデータを削除させることができ、その後、メインCAMに、メインCAMのデータに対してクエリ実行させることができる。
【0016】
様々な例では、コントローラ104は、入力データベクトルと、バッファCAMまたはメインCAMに格納されたデータベクトルの一致を検証するのに用いることができる一致検証回路を含み得る。例えば、入力データベクトルが格納データベクトルと一致するインディケーションを受信したことに応えて、一致検証回路は、バッファCAMまたはメインCAMに、格納データベクトルを読み取らせ、バッファCAMまたはメインCAMから読み取られたデータベクトルをコントローラ104に返させることができる。次に、一致検証回路は、返されたデータベクトルを入力データベクトルと比較して、以前に示された一致が有効であるかどうかを判定することができる。
【0017】
いくつかの例では、メインCAM及びバッファCAMは、入力データベクトルと格納ベクトルの一致を検証するのに用いることができる一致検証回路を含み得る。例えば、入力データベクトルが格納データベクトルと一致していることに応えて、一致検証回路は、格納データベクトルを読み取り、読み取られたデータベクトルを入力データベクトルと比較して、以前に示された一致が有効であるかどうかを判定することができる。一致が無効である場合、一致検証回路は、比較結果を一致から不一致に変更し、その結果をコントローラ104に送信することができる。
【0018】
コントローラ104は、バッファCAMがバッファCAMへのデータの書き込みを終了するまで、メインCAM及びバッファCAMに、データをメインCAM及びバッファCAMに同時に書き込ませることができ、バッファCAMに、メインCAMがデータをメインCAMに書き込み続ける間、バッファCAMに書き込まれたデータに対してクエリ実行させることができる。例えば、第1の期間において、メインCAMは、データをメインCAMに書き込むことができ、第1の期間の最初の部分と重複する第2の期間において、バッファCAMは、データをバッファCAMに書き込むことができ、第1の期間の残りの部分の間、バッファCAMは、バッファCAMに書き込まれたデータに対してクエリ実行することができる。いくつかの例では、バッファCAMは、メインCAMがデータをメインCAMに書き込むことができるよりも速く、データをバッファCAMに書き込むことができる。
【0019】
いくつかの例では、メインCAMは不揮発性CAMであり得、バッファCAMはSRAM CAMなどの揮発性CAMであり得る。例えば、バッファCAMに書き込まれた及び/または格納されたデータは、SRAMメモリセルに書き込まれ及び/または格納され得、メインCAMに書き込まれた及び/または格納されたデータは、不揮発性メモリセルに書き込まれ及び/または格納され得る。いくつかの例では、メインCAMは、抵抗可変メモリセルを含み得る3D XPointデバイスなどのクロスポイントデバイスであり得る。しかしながら、開示はそのように限定されるものではなく、メインCAMは、他のタイプの不揮発性メモリセルを含み得る。
【0020】
コントローラ104は、データベクトルがメインCAMに書き込まれるたびに(例えば、メインCAMがデータベクトルをメインCAMに書き込んだことに応えて)、(例えば、コントローラ104における)ルックアップ(例えば、マッピング)テーブル112などのデータ構造を生成することができる。バッファCAMは、メインCAMがデータベクトルをメインCAMに書き込むたびに、対応するデータベクトルをバッファCAMに書き込むことができることに留意されたい。いくつかの例では、コントローラ104は、ルックアップテーブル112を管理することができる。
【0021】
いくつかの例では、コントローラ104は、データベクトルの、ホスト103から受信した論理アドレスをメインCAMのデータベクトルの物理アドレスにマッピングすることができる論理から物理(L2P)へのマッピングテーブル113を含み得る。
【0022】
コントローラ104は、他のタイプのコントローラの中でもとりわけ、フィールドプログラマブルゲートアレイ(FPGA)及び/または特定用途向け集積回路(ASIC)であり得る。ホスト103は、様々な他のタイプのホストの中でもとりわけ、例えば、パーソナルラップトップコンピュータ、デスクトップコンピュータ、デジタルカメラ、モバイルデバイス(例えば、携帯電話)、ネットワークサーバ、インターネットオブシングス(IoT)対応デバイス、またはメモリカードリーダなどのホストシステムであり得る。例えば、ホスト103は、バスを含み得るインターフェース116を介して(例えば、コントローラ104を介して)CAMシステム102にアクセス可能な1つまたは複数のプロセッサを含み得る。インターフェース116は、様々な数あるものの中でも、シリアルアドバンストテクノロジアタッチメント(SATA)、PCIe、またはユニバーサルシリアルバス(USB)などの規格化されたインターフェースであり得る。
【0023】
いくつかの例では、CAMシステム102は、コンピューティングシステム100のメモリシステムの一部であり得る。例えば、メモリシステムは、SSD、UFSデバイス、eMMCデバイスなどのようなストレージシステムであり得る。CAMシステム102がメモリシステムの一部であり得る様々な例では、コントローラ104は、メモリシステムに結合されメモリシステムの様々なメモリデバイスを制御するように構成されたメモリシステムコントローラ(例えば、SSDコントローラ、特定用途向け集積回路ASIC、プロセッサなど)(例えば、それに組み込まれた制御論理)の一部であり得る。
【0024】
図1Bは、本開示のいくつかの実施形態による、ルックアップテーブル112の形態のデータ構造の例を示す。ルックアップテーブル112は、メインCAMの位置(例えば、位置のアドレス)をバッファCAMの位置(例えば、位置のアドレス)にマッピングすることができるエントリ114-1から114-Nを含み得る。例えば、ルックアップテーブル112は、メインCAMアドレスをバッファCAMアドレスにマッピングすることができる。
【0025】
いくつかの例では、メインCAMアドレスは、データベクトルが書き込まれているメインCAMのメモリセルのグループの位置の物理アドレスであり得、バッファアドレスは、メインCAMに書き込まれているデータベクトルに対応するデータベクトルを格納しているバッファCAMのメモリセルのグループの位置の物理アドレスであり得る。例えば、エントリ114-1から114-Nは、メインCAMに書き込まれているメインCAMのデータベクトルの位置のアドレスを、バッファCAMの対応するデータベクトルの位置のアドレスにマッピングすることができる。コントローラ104は、例えば、エントリ114に、メインCAMのデータベクトルのアドレス及びバッファCAMのデータベクトルのアドレスを書き込むことによって、ルックアップテーブル112を管理することができる。エントリ114のマッピングは、メインCAMが、対応するデータベクトルをメインCAMの位置に書き込んでいる間有効であり得、コントローラ104は、例えば、メインCAMがメインCAMの位置へのデータの書き込みを終了したとの判定に応えて、マッピングを無効化することによって、ルックアップテーブル112を管理することができる。
【0026】
いくつかの例では、メインCAMアドレスは、メインCAMのメモリタイルの物理アドレスであり得、バッファアドレスは、バッファCAMの領域の物理アドレスであり得る。例えば、エントリ114-1から114-Nは、メインCAMのメモリタイルの位置のアドレスをバッファCAMの領域の位置のアドレスにマッピングすることができる。いくつかの例では、メモリタイルアドレスの各々は、バッファCAMの領域に対応するある範囲のアドレスにマッピングすることができる。いくつかの例では、エントリ114のマッピングは、対応するメモリタイルがデータで部分的にいっぱいである(例えば、完全にいっぱいではない)限り有効であり得、コントローラ104は、対応するメモリタイルが完全にいっぱいであるとの判定に応えてマッピングを無効化することができる。
【0027】
図2Aは、本開示のいくつかの実施形態による、特定の書き込み段階に対応する不揮発性CAMの一部のブロック図である。図2Bは、本開示のいくつかの実施形態による、図2Aの特定の書き込み段階後の特定の書き込み段階に対応する不揮発性CAMの一部のブロック図である。例えば、図2A及び2Bは、CAM106であり得るCAM206などのメインCAMの不揮発性CAMアレイ218を示す。CAMアレイ218は、いくつかのメモリタイル220(例えば、メモリタイル220-1から220-M)を含み得る。いくつかの例では、メモリタイルは、書き込み操作中にクエリ実行に利用できないメモリセルの最小グループにすることができる。例えば、メモリタイル220は、データベクトルがそのメモリタイルに書き込まれている間、クエリ実行に利用できない場合がある。
【0028】
メモリタイル220-1から220-Mの各々は、それぞれの位置225-1から225-Kにメモリセルのそれぞれのグループを含み得る。メモリタイル220-1から220-Mの各々のそれぞれの位置225-1から225-Kは、それぞれ、物理アドレスAddr 1からAddr Kを有し得る。それぞれのデータベクトルは、メモリタイル220-1から220-Mの各々のそれぞれの位置225-1から225-Kに書き込むことができる。いくつかの例では、L2Pテーブル113は、ホスト103からの各論理アドレスを、各メインCAMの各メモリタイル220の各アドレスAddrにマッピングすることができる。
【0029】
各位置225は、CAMシステム102のCAM106などのCAMシステムの各メインCAMの位置、各メインCAMの、メモリタイル220などの各メモリタイルの位置、及び各メモリタイルの各位置225を指定することによって指定することができる。例えば、CAM106-3のメモリタイル220-1の位置225-2は、CAMシステム102のCAM106-3の位置、CAM106-3のメモリタイル220-1の位置、及びメモリタイル220-1の位置225-2を指定することによって指定することができる。
【0030】
各物理アドレスAddrは、例えば、CAMシステムの各メインCAMの位置、各メインCAMの各メモリタイルの位置、及び各メモリタイルの各データベクトルの位置を指定することによって、各データベクトルの位置を指定することができる。例えば、物理アドレスAddr 2は、CAM106-3の位置、CAM106-3のメモリタイル220-1の位置、及びメモリタイル220-1のVector 2の位置225-1を指定することによって、データベクトルVector 2の位置を指定することができる。
【0031】
いくつかの例では、各メモリタイル220の位置225-1から225-Kは、順序付けられたシーケンスであり得、位置225-1から225-Kは、それぞれ、順序付けられたシーケンスの1番目の位置からK番目の位置である。さらに、アドレスAddr 1からAddr Kは、順序付けられたシーケンスであり得、アドレスAddr 1からAddr Kは、それぞれ、順序付けられたシーケンスの最も低いアドレスから最も高いアドレスである。例えば、データベクトルは、データベクトルがホスト103から受信される順序で、空き位置225-1から225-Kのシーケンスに順次(例えば、次々に)書き込むことができる。
【0032】
それぞれのデータベクトルは、それぞれの最初に利用可能な空き位置のシーケンスに順々に書き込むことができる。例えば、Vector 1及びVector 2は、ホスト103から順番に受信され得、位置225-1から225-Kのシーケンスは、メモリタイル220-1における利用可能な空き位置であり得る。したがって、Vector 1は、最初に利用可能な空き位置225-1に書き込まれ得、続いてVector 2は、位置225-1後の最初に利用可能な空き位置225-2に書き込まれ得る。図2Bに示すように、ホスト103から連続して受信された次のK-2個のデータベクトルVector 3からVector Kは、それぞれ、位置225-2後の次に利用可能な空き位置である位置225-3から225-Kに順番に書き込むことができることに留意されたい。
【0033】
いくつかの例では、メモリタイル220-1から220-Mは、順序付けられたシーケンスであり得、メモリタイル220-1から220-Mは、それぞれ、順序付けられたシーケンスの1番目からM番目のメモリタイルである。例えば、メモリタイル220-1から220-Mは、順番に書き込まれ得る。
【0034】
Vector (K+1)は、Vector Kが位置225-Kに書き込まれた後、つまりタイル220-1がいっぱいになった後、受信され得る。例えば、Vector (K+1)は、図2Bに示すように、メモリタイルのシーケンスの最初に利用可能な空きメモリタイル220-2に、例えばメモリタイル220-2の位置225-1から225-Kのシーケンスの最初に利用可能な空き位置225-1に書き込まれ得る。
【0035】
いくつかの例では、K+1個のデータベクトルVector 1からVector (K+1)は、それぞれ、ホスト103からコントローラ104で順次受信したK+1個の書き込みコマンドに応えて、書き込まれ得る。例えば、書き込みコマンドは、それぞれ、論理アドレスを指定することができ、L2Pマッピングテーブル113は、最初のK個の論理アドレスをタイル220-1の物理アドレスAddr 1からAddr Kに、そして、K+1の論理アドレスをタイル220-2のアドレスAddr 1にそれぞれマッピングし得る。
【0036】
いくつかの例では、コントローラ104は、ホスト103からの前述のK+1個の書き込みコマンドの最初の書き込みコマンドなどの書き込みコマンドを受信したことに応えて、CAM206に、シーケンスメモリタイル220-1から220-Mにおいて最初に利用可能なメモリタイル220を書き込み可能にさせることができる。例えば、最初に利用可能なメモリタイルは、少なくとも1つの空き位置を有するシーケンスにおける最初のメモリタイルであり得る。
【0037】
次に、コントローラ104は、書き込み可能にされたメモリタイルに以前に書き込まれたすべてのデータベクトルを、バッファCAMの対応する領域にコピーさせ得る。例えば、コントローラは、CAM206に、書き込み可能にされたメモリタイルに以前に書き込まれたすべてのデータベクトルを読み取らせ、読み取られたデータベクトルをコントローラ104に出力させることができる。次に、コントローラ104は、CAM206から読み取られたデータベクトルをバッファCAMに送信し、バッファCAMに、データベクトルをバッファCAMの対応する領域に書き込むようにさせることができる。
【0038】
コントローラ104は、CAM206に、その後、コマンドで指定されたデータベクトルを、書き込み可能にされたメモリタイルの最初に利用可能な空き位置に書き込ませ、バッファCAMに、コマンドで指定されたデータベクトルを、バッファCAMの領域に書き込ませ得、バッファCAMがバッファCAMの領域へのデータベクトルの書き込みを終了するまで、CAM206及びバッファCAMがデータベクトルを同時に書き込むようにする。コントローラ104は、タイルの位置のアドレスを領域のアドレスにマッピングし、CAM206が書き込み可能にされたメモリタイルにデータベクトルを書き込み続ける間、タイルの代わりに領域に対してクエリ実行することができる。コントローラ104は、書き込み可能にされたメモリタイルへのデータベクトルの書き込みの終了に応えて、タイルの位置のアドレスの領域のアドレスへのマッピングを無効化し、及び/または、領域からデータベクトルを削除し得る。
【0039】
例では、図2Aに示すように、Vector 1及びVector 2は、タイル220-1に以前に書き込まれている場合がある。続いて、コントローラ104は、Vector 3からVector Kを書き込むための書き込みコマンドを受信し得る。コントローラ104は、Vector 1及びVector 2をバッファCAMの領域にコピーさせ、バッファCAMがVector 3からVector KのバッファCAMの領域への書き込みを終了するまで、CAM206及びバッファCAMに、Vector 3からVector Kをタイル220-1にかつバッファCAMの領域に同時に書き込ませ得る。
【0040】
コントローラ104は、タイル220-1の位置のアドレスを領域のアドレスにマッピングし、CAM206がVector 3からVector Kをメモリタイル220-1に書き込み続ける間、タイル220-1の代わりに領域に対してクエリ実行することができる。CAM206がVector 3からVector Kのタイル220-1への書き込みを終了したことに応えて、コントローラ104は、タイル220-1の位置のアドレスの領域のアドレスへのマッピングを無効化し、及び/または、領域からデータベクトルを削除し得る。
【0041】
代替として、コントローラ104は、図2Bに示すように、メモリタイル220-1がデータベクトルで完全にいっぱいであるとの判定に応えて、タイル220-1の位置のアドレスの領域のアドレスへのマッピングを無効化し、及び/または、領域からデータベクトルを削除し得る。例えば、コントローラ104は、タイル220-1がどれだけいっぱいであるかを追跡することができる(例えば、使用されているタイル220-1のパーセンテージを追跡することによって)。コントローラ104は、タイル220-1が書き込み可能にされているか及び/またはアクティブに書き込まれているかどうかに関係なく、タイル220-1がデータベクトルで部分的にいっぱいである限り、バッファCAMに、タイル220-1に対してクエリ実行しているCAM206の代わりにバッファCAMの領域に対してクエリ実行させることができる。例えば、コントローラ104は、タイル220-1が完全にいっぱいになるまで、バッファCAMに、データベクトルのコピーをバッファCAMの領域に保持させることができる。
【0042】
タイル220-1の位置のアドレスからバッファCAMの領域のアドレスへのマッピングが無効化された及び/またはVector 1からVector KがバッファCAMの領域から削除された後、コントローラは、Vector (K+1)がバッファCAMに書き込まれるまで、CAM206に、Vector (K+1)をメモリタイル220-2の位置225-1にかつバッファCAMの領域に同時に書き込ませることができることに留意されたい。コントローラ104は、メモリタイル220-2をバッファCAMの領域にマッピングすることができる。コントローラ104は、CAM206がVector (K+1)をメモリタイル220-2に書き込み続ける間、及び/または、メモリタイル220-2がデータベクトルで完全にいっぱいになるまで、バッファCAMに、バッファCAMのVector (K+1)に対してクエリ実行させることができる。さらに、CAM206は、完全にいっぱいであるタイル220-1に対してクエリ実行することができ、同時にバッファCAMは、メモリタイル220-2に対応するバッファCAMの領域に対してクエリ実行することができる。
【0043】
いくつかの例では、ホスト103は、以前に書き込まれたデータベクトルを格納しているメモリタイルの位置に、新しいデータベクトルを書き込むための書き込みコマンドを送信して、例えば、以前に書き込まれたデータベクトルを更新(例えば、書き換え)することができる。例えば、書き込みコマンドは、L2Pテーブル113によって、Vector 1を格納している位置225-1にマッピングされている論理アドレスを含み得る。書き込みコマンドに応えて、コントローラ104は、新しいデータベクトル最初に利用可能な空き位置に書き込み得る。例えば、最初に利用可能な空き位置は、図2Aにおいてメモリタイル220-1の位置225-3、または、図2Bにおいてメモリタイル220-2の位置225-2であり得る。次に、コントローラ104は、論理アドレスを、図2Aにおいてタイル220-1の位置225-3にまたは図2Bにおいてタイル220-2の位置225-2に再マッピングするようにL2Pテーブル113を修正し得る。
【0044】
図3Aは、本開示のいくつかの実施形態による、特定の書き込み段階に対応するバッファCAM310の一部のブロック図である。図3Bは、本開示のいくつかの実施形態による、図3Aの特定の書き込み段階後の特定の書き込み段階に対応するバッファCAM310の一部のブロック図である。例えば、バッファCAM310は、CAM110であり得る。いくつかの例では、図3Aの特定の書き込み段階は、図2Aの特定の書き込み段階に対応し得、図3Bの特定の書き込み段階は、図2Bの特定の書き込み段階に対応し得る。
【0045】
バッファCAM310は、CAM106-1から106-8及び/またはCAM206などの様々なメインCAMからの様々なメモリタイルからのベクトルを格納することができる、SRAMメモリセルなどの揮発性メモリセルのCAMアレイ331を有し得る。それぞれのメモリタイルからのベクトルは、それぞれの領域330-1から330-4に格納することができる。例えば、領域には、現在書き込まれている及び/または部分的にいっぱいであるメモリタイルからのデータベクトルを格納することができる。図3A及び3Bの例には4つの領域が示されているが、例えば、データベクトルがバッファCAM310に格納される必要があり得るメモリタイルの数に応じて、任意の数の領域が存在し得る。
【0046】
領域330-1から330-4はそれぞれ、バッファCAM310におけるアドレス範囲332-1から332-4に対応し得る。それぞれのメモリタイルのアドレスは、それぞれ、アドレス範囲332-1から332-4にマッピングすることができる。例えば、図2A及び2Bのメモリタイル220-1からのベクトルは、領域330-1に格納することができること、及びメモリタイル220-1のアドレスは、アドレス範囲332-1にマッピングすることができることに留意されたい。
【0047】
各メモリタイルからのそれぞれのデータベクトルは、各メモリタイルに対応する各領域におけるそれぞれの位置に格納することができる。例えば、各位置は、各データベクトルを格納することができる揮発性メモリセルの各グループを含み得る。各領域におけるそれぞれの位置は、各領域に対応するアドレス範囲332にアドレスを有し得る。各領域における位置は、各メモリタイルにおける位置に対応し得る。
【0048】
例えば、領域330-1における位置335-1から335-Kは、それぞれ、メモリタイル220-1における位置225-1から225-Kに対応し得、それぞれ、アドレス範囲332-1のアドレスAddr BC1からAddr BCKを有し得る。いくつかの例では、メモリタイル220-1のアドレスAddr 1からAddr Kは、それぞれ、領域330-1のアドレスAddr BC1からAddr BCKにマッピングすることができる。
【0049】
Vector 1及びVector 2は、Vector 1及びVector 2の領域330-1での書き込みが終了するまで、タイル220-1及び領域330-1に同時に書き込むことができることに留意されたい。領域330-1のVector 1及びVector 2に対しては、図2Aに示すように、メモリタイル220-1にVector 1及びVector 2を書き込み続ける間、及び/または、メモリタイル220-1がデータベクトルで部分的にいっぱいである限り、クエリ実行することができる。
【0050】
いくつかの例では、図2Bと関連して前述したように、メモリタイル220-1を書き込み可能にしたことに応えてVector 1及びVector 2を領域330-1にコピーして、Vector 3からVector Kをメモリタイル220-1に書き込むことができる。Vector 1及びVector 2を領域330-1にコピーした後、図2B及び3Bに示すように、Vector 3からVector Kの領域330-1への書き込みが終了するまで、Vector 3からVector Kをメモリタイル220-1及び領域330-1に同時に書き込むことができる。
【0051】
例えば、Vector 3からVector Kは、Vector 3からVector Kの位置335-3から335-Kへの書き込みが完了するまで、それぞれ位置225-3から225-K及び位置335-3から335-Kに同時に書き込むことができる。領域330-1のVector 3からVector Kに対しては、図2Bに示すように、Vector 3からVector Kをタイル220-1へ書き込み続ける間、及び/または、メモリタイル220-1へのVector 3からVector Kの書き込みが、メモリタイル220-1がデータベクトルで完全にいっぱいになり終了するまで、クエリ実行することができる。メモリタイル220-1がデータベクトルで完全にいっぱいであることに応えて、コントローラ104は、タイル220-1のアドレスとアドレス範囲332-1のマッピングを無効化することができ、及び/または、バッファCAM310に、Vector 3からVector Kを領域330-1から削除させることができる。
【0052】
図4は、本開示のいくつかの実施形態による、CAM440の簡略化されたブロック図である。例えば、CAM440は、メインCAMまたはバッファCAMとして構成することができる。CAM440は、入力データレジスタ444に結合することができるCAMアレイ442を含む。例えば、CAMアレイ442は、CAM440がメインCAMである例についてはCAMアレイ218であり得、または、CAM440がバッファCAMである例についてはCAMアレイ331であり得る。CAMアレイ442は、データを(例えば、格納データベクトルの形で)格納することができ、入力データレジスタ444は、格納データベクトルと比較するために、コントローラ404(例えば、コントローラ104であり得る)から入力データベクトルを受信することができる。例えば、格納データベクトルに対しては、入力データベクトルによってクエリ実行することができる。CAM440がバッファCAMである例では、CAMアレイ222は、SRAMセルを有するSRAMメモリアレイであり得る。CAM440がメインCAMである例では、CAMアレイ442は、抵抗可変メモリセル(例えば、クロスポイント式に配置される)などの不揮発性メモリセルを有する不揮発性メモリアレイであり得る。
【0053】
CAM440は、CAM440の内部動作を指示することができCAMアレイ442を管理することができる制御回路445(例えば、制御ステートマシン)を有し得る。制御回路445は、制御インターフェース446を介してコントローラ404から制御信号を受信することができる。例えば、コントローラ404は、制御回路445に、入力データベクトルをCAMアレイ442に格納されているデータベクトルと比較させることによって、制御回路445に、CAMアレイ442に格納されているデータベクトルに対して、入力データベクトルを用いてクエリ実行させることができる。コントローラ404はまた、制御回路445に、データベクトルをCAMアレイ442に書き込ませることができる。いくつかの例では、コントローラ445は、図1Aに関連して前述した一致検証回路を含み得る。
【0054】
検出器449は、線450-1から450-K(例えば、一致線)によってCAMアレイ442に結合することができる。例えば、それぞれの線450-1から450-Kの各々は、CAMアレイ442に格納された各データベクトルに対応し得る。例えば、それぞれの線450-1から450-Kは、それぞれ、CAM440がメインCAMである例において、タイル220-1のVector 1からVector Kのようなタイルのそれぞれのデータベクトルに対応し得る。CAM440がバッファCAMである例では、それぞれの線450-1から450-Kは、それぞれ、領域330-1のVector 1からVector KのようなバッファCAMの領域のそれぞれのデータベクトルに対応し得る。
【0055】
検出器449は、格納データベクトルが入力データベクトルと一致するかどうかを検出することができ、格納データベクトルごとに、各格納データベクトルが入力データベクトルと一致するかどうかを示す各結果(例えば、データビット)を生成することができる。
【0056】
例えば、図4に示されるように、検出器449は、各格納データベクトルが入力データベクトルと一致したことを示す論理値1(1)を有するデータビットを生成し得、各格納データベクトルが入力データベクトルと一致しなかった(例えば不一致だった)ことを示す論理値ゼロ(0)を有するデータビットを生成し得る。しかしながら、開示はそのように限定されるものではなく、論理1と論理0の役割を逆にすることができる。いくつかの例では、ベクトル比較の結果を組み合わせて、各格納ベクトルに対応するコンポーネント(例えば、1または0)を有する結果(例えば、出力)ベクトル452を形成することができる。
【0057】
検出器449は、各格納ベクトルのアドレスを、結果ベクトル452(例えば、その各コンポーネント)における各結果に関連付ける(例えば、リンクする)ように構成することができる。いくつかの例では、検出器449は、線450-1から450-Kの各々に結合されたセンスアンプ(例えば、図4には示されていない)を有し得る。例えば、各センスアンプは、センスアンプが一致それとも不一致を検出するかに応じて、論理1または0を生成するように構成することができる。結果ベクトル452及びコンポーネントの関連アドレスは、入力/出力(I/O)バッファ454に、インターフェース455を介してコントローラ404に出力するために送信することができる。
【0058】
CAM440がバッファCAMである例では、結果ベクトル452は、メインCAMの代わりにバッファCAMに対してクエリ実行されていることに応えて、コントローラ404に出力することができる。結果ベクトル452のコンポーネントに関連付けられたアドレスは、メインCAMのデータベクトルのアドレスにマッピングすることができることに留意されたい。いくつかの例では、コントローラ404は、それぞれの論理アドレスをメインCAMのデータベクトルのアドレスに関連付けることができ、結果ベクトルをホスト103などのホストに出力することができる。
【0059】
図5は、本開示のいくつかの実施形態による、不揮発性CAMの一部を示す。例えば、図5は、メインCAMの不揮発性CAMアレイの、タイル220であり得るメモリタイル520などの一部を示す。メモリタイル520は、データベクトルプレーン560-1から560-Jなどの多数のデータプレーンを有し得る。
【0060】
各データベクトルプレーン560は、ワード線562-1から562-8を有し得る。ワード線562-1から562-8の各々は、ビット線563-1から563-8と交差し得る。したがって、各データベクトルプレーン560は、クロスポイントデータベクトルプレーンであり得る。ワード線とビット線の各交点に、抵抗可変メモリセルなどのメモリセル564が存在し得る。いくつかの例では、ビット線563に共通結合されたメモリセルのグループ(例えば、メモリセルの列)は、データベクトルを格納することができる。例えば、ビット線563-1から563-8にそれぞれ共通結合されたメモリセルの列は、それぞれ、データベクトル565-1から565-8を格納することができる。8つのビット線及び8つのワード線が示されているが、任意の数のビット線及びワード線が存在し得る。
【0061】
各ベクトルプレーン560のビット線563-1から563-8は、それぞれ、センスアンプ567-1から567-8に結合することができる。センスアンプ567-1から567-8は、それぞれ、入力データベクトル568と格納ベクトル565-1から565-8の比較の結果を生成することができる。例えば、結果は、結果ベクトル569のコンポーネントであり得る。いくつかの例では、タイルの格納データベクトルは、一度に1プレーンずつ(例えば、プレーンごとに)入力データベクトル466と比較することができる。
【0062】
図6は、本開示のいくつかの実施形態による、不揮発性メインCAMに格納されたデータに対してクエリ実行することを示す。例えば、格納データに対して、入力データを格納データと比較することによって、入力データによってクエリ実行されている。例えば、図6において、入力データベクトル668は、メインCAMのベクトルプレーン660(例えば、メモリタイルであり得る)におけるデータベクトル665-1から665-8と同時に比較されている。入力データベクトル668は、例えば、ビットBit1からBit8にそれぞれ対応するコンポーネントデータ(例えば、ビット)値00110011を有し得る。
【0063】
ベクトルプレーン660は、ワード線662-1から662-8を有し得る。ワード線662-1から662-8の各々は、ビット線663-1から663-8と交差し得る。ワード線とビット線の各交点に、抵抗可変メモリセルなどのメモリセル664が存在し得る。図6の例では8本のビット線及び8本のワード線が示されているが、実施形態は、特定の数のワード線及び/またはビット線に限定されるものではない。
【0064】
データベクトル665-1から665-8は、それぞれ、ビット線663-1から663-8にそれぞれ共通結合されたメモリセルの列に格納することができる。例えば、各列におけるメモリセル664-1から664-8は、ワード線662-1から662-8にそれぞれ結合することができる。この例では、データベクトル665-1(01111111)は、ビット線663-1に結合されたセルに格納され、データベクトル665-2(11110111)は、ビット線663-2に結合されたセルに格納され、データベクトル665-3(11111111)は、ビット線663-3に結合されたセルに格納され、データベクトル665-4(11111101)は、ビット線663-4に結合されたセルに格納され、データベクトル665-5(00110011)は、ビット線663-5に結合されたセルに格納され、データベクトル665-6(00000000)は、ビット線663-6に結合されたセルに格納され、データベクトル665-7(11111110)は、ビット線663-7に結合されたセルに格納され、データベクトル665-8(00000000)は、ビット線665-8に結合されたセルに格納される。それぞれのデータベクトル665-1から665-8の各々のそれぞれのデータ値(例えば、コンポーネント)は、それぞれメモリセル664-1から664-8に格納されることに留意されたい。
【0065】
ビット線663-1から663-8は、それぞれ、センスアンプ667-1から667-8に結合することができる。センスアンプ667-1から667-8は、それぞれ、入力データベクトル668と格納ベクトル665-1から665-8の比較の結果を生成することができる。例えば、結果は、結果ベクトル669のコンポーネント(00001000)であり得る。
【0066】
入力データベクトル668のBit1からBit8は、それぞれ、データ線663-1から663-8の各々に結合されたメモリセル664-1から664-8にそれぞれ格納されたデータと比較することができる。論理0のビット値は、メモリセル全体に限界電圧VDM1などの電圧差を印加することによって、メモリセル664に格納されたデータと比較することができる。論理1のビット値は、メモリセル全体に限界電圧VDM2を印加することによって、メモリセル664に格納されたデータと比較することができる。
【0067】
例えば、VDM1は、論理0の入力ビット値に対応し得、VDM2は、論理1の入力ビット値に対応し得る。いくつかの例では、限界電圧は、メモリセルに結合されたビット線に印加された電圧からメモリセルに結合されたワード線に印加された電圧をひいたものであり得る。本例では、VDM1及びVDM2は、反対の極性を有し、VDM1は負の極性を有し、VDM2は正の極性を有することに留意されたい。しかしながら、本開示は、そのように限定されるものではない。
【0068】
いくつかの例では、メモリセル664は、メモリセル664全体にVDM1を印加したことに応えて閾値化イベント(例えば、スナップバックイベント)などの切り替えイベント、またはメモリセル664全体にVDM2を印加したことに応えて切り替えイベントを経験し得る。例えば、メモリセル664は、低導電率状態(例えば、高抵抗状態)などの一方の導電率状態から、高導電率状態(例えば、低抵抗状態)などの他方の導電率状態に切り替えることができる。
【0069】
いくつかの例では、限界電圧に応えて切り替えイベントを経験しているメモリセルは、限界電圧に対応する入力データ値と不一致であるデータ値を格納していると見なされ得る。例えば、論理1を格納しているメモリセルは、そのメモリセル全体にVDM1(例えば、入力論理0に対応する)を印加したことに応えて切り替えイベントを経験し得、論理0を格納しているメモリセルは、そのメモリセル全体にVDM2(例えば、入力論理1に対応する)を印加したことに応えて切り替えイベントを経験し得る。
【0070】
そのような例では、限界電圧に応えて切り替えイベントを経験していないメモリセルは、限界電圧に対応する入力データ値と一致するデータ値を格納していると見なされ得る。例えば、論理0を格納しているメモリセルは、そのメモリセル全体にVDM1を印加したことに応えて切り替えイベントを経験しない場合があり、論理1を格納しているメモリセルは、そのメモリセル全体にVDM2を印加したことに応えて切り替えイベントを経験しない場合がある。しかしながら、他の例では、切り替えイベントが一致を示し得、切り替えイベントがないことが不一致を示し得ることに留意されたい。
【0071】
データベクトル665のメモリセルの少なくとも1つに格納されたデータが入力データベクトル668の対応するビットと不一致である場合、データベクトル665は入力データベクトル668と不一致と見なされ得ることに留意されたい。センスアンプ667は、センスアンプの出力電圧に反映され得る電流の変化を感知することによって、対応するデータベクトル665の1つまたは複数のメモリセルが経験した切り替えイベントを感知し得る。結果として、センスアンプは、切り替えイベントを感知することによって、センスアンプに結合されたデータベクトルと入力データベクトル668の不一致を感知することができる。例えば、センスアンプは、切り替えイベントの感知に応えて、センスアンプに結合されたデータベクトルと入力データベクトル668の不一致を示す論理0を生成(例えば、出力)し得る。センスアンプは、切り替えイベントを感知しなかったことに応えて、センスアンプに結合されたデータベクトルと入力データベクトル668の一致を示す論理1を生成し得る。
【0072】
いくつかの例では、入力データベクトル668の一部は、比較の第1のフェーズに対応する第1の期間中に、データベクトル665-1から665-8の対応する部分と比較することができ、入力データベクトル668の残りの部分は、比較の第2のフェーズに対応する第2の期間中に、データベクトル665-1から665-8の対応する部分と比較することができる。第1のフェーズ中、論理0を有する入力データベクトル668のBit1、Bit2、Bit5、及びBit6は、それぞれ、データベクトル665-1から665-8の各々のメモリセル664-1、664-2、664-5、及び664-6に格納されたデータ値と、それらのメモリセル全体にVDM1を印加することによって比較することができ、一方、例えばゼロボルトを残りのメモリセル664-3、664-4、664-7、及び664-8全体に印加する。
【0073】
第2のフェーズ中、論理1を有する入力データベクトル668のBit3、Bit4、Bit7、及びBit8は、それぞれ、データベクトル665-1から665-8の各々のメモリセル664-3、664-4、664-7、及び664-8に格納されたデータ値と、それらのメモリセル全体にVDM2を印加することによって比較することができ、一方、例えばゼロボルトを残りのメモリセル664-1、664-2、664-5、及び664-6全体に印加する。しかしながら、本開示はそのように限定されるものではなく、VDM1及びVBM2は同時に(例えば、同じフェーズ中に)印加することができる。
【0074】
いくつかの例では、VDM1を、メモリセルを論理0に対応する抵抗状態へと書き込む(例えば、プログラムする)ための書き込み電圧に置き換えることができる。例えば、書き込み電圧は、負の方向で、VDM1よりも大きくすることができる。いくつかの例では、VDM2を、メモリセルを論理1に対応する抵抗状態へと書き込むための書き込み電圧に置き換えることができる。例えば、書き込み電圧は、正の方向で、VDM2よりも大きくすることができる。いくつかの例では、論理0を書き込むための書き込み電圧を第1のフェーズ中に印加することができ、論理1を書き込むための書き込み電圧を第2のフェーズ中に印加することができる。しかしながら、本開示はそのように限定されるものではなく、それぞれの書き込み電圧を同時に(例えば、同じフェーズ中に)印加することができる。
【0075】
メインCAMのCAMアレイは、クロスポイントアレイ構造などの2次元(2D)及び/または3次元(3D)アレイ構造を含み得る。メモリセル(例えば、メモリセル564及び664)は、例えば、様々なタイプの抵抗可変記憶素子及び/またはスイッチ素子を含み得る。例えば、セルは、相変化ランダムアクセスメモリ(PCRAM)セルまたは抵抗変化型メモリ(RRAM)セルであり得る。
【0076】
本明細書中で用いられる記憶素子とは、メモリセルのプログラム可能な部分を指す。例えば、メインCAMは、セルが、記憶素子がスイッチ素子と直列に結合される「スタック」構造を含み得、本明細書中で3D相変化材料及びスイッチ(PCMS)デバイスと呼ばれ得る3Dクロスポイントデバイスであり得る。3D PCMSセルは、例えば、オボニック閾値スイッチ(OTS)などの2端子カルコゲニドベースのスイッチ素子と直列に結合された2端子カルコゲニドベースの記憶素子を含み得る。いくつかの例では、メモリセルは、単一の材料がスイッチ素子及び記憶素子の両方として機能することができる自己選択メモリ(SSM)セルであり得る。SSMセルは、カルコゲニド合金を含み得るが、実施形態はそのように限定されるものではない。
【0077】
非限定的な例として、開示された不揮発性CAMのメモリセルは、インジウム(In)-アンチモン(Sb)-テルル(Te)(IST)材料(例えば、InSbTe、InSbTe、InSbTeなど)またはゲルマニウム(Ge)-アンチモン(Sb)-テルル(Te)(GST)材料(例えば、GeSbTe、GeSbTe、GeSbTeなど)などの相変化材料(例えば、相変化カルコゲニド合金)を含み得る。本明細書中で用いられるハイフンでつないだ化学成分の表記は、特定の混合物または化合物に含まれる要素を示し、示される要素を伴う全ての化学量論を表すことを意図している。他のメモリセル材料は、様々な数ある材料の中でも、GeTe、In-Se、SbTe、GaSb、InSb、As-Te、Al-Te、Ge-Sb-Te、Te-Ge-As、In-Sb-Te、Te-Sn-Se、Ge-Se-Ga、Bi-Se-Sb、Ga-Se-Te、Sn-Sb-Te、In-Sb-Ge、Te-Ge-Sb-S、Te-Ge-Sn-O、Te-Ge-Sn-Au、Pd-Te-Ge-Sn、In-Se-Ti-Co、Ge-Sb-Te-Pd、Ge-Sb-Te-Co、Sb-Te-Bi-Se、Ag-In-Sb-Te、Ge-Sb-Se-Te、Ge-Sn-Sb-Te、Ge-Te-Sn-Ni、Ge-Te-Sn-Pd及びGe-Te-Sn-Ptを含み得る。
【0078】
本開示の先行する詳細な説明では、本明細書の一部を構成する添付図面への参照がなされ、それらの図面では、本開示のいくつかの実施形態がどのように実施され得るかが例として示される。これらの実施形態は、当業者が本開示の実施形態を実施することが可能となるように十分詳細に説明されており、本開示の範囲から逸脱することなく、他の実施形態が利用されてよいこと、ならびにプロセスの変更、電気的変更及び/または構造的変更がなされてよいことが理解されよう。
【0079】
本明細書で使用される「いくつかの(a number of)もの」、または「多数の(quantity of)もの」は、そのような1つ以上のものを指し得る。例えば、複数のメモリセルまたは多数のメモリセルは1つ以上のメモリセルを指し得る。「複数の(plurality)もの」は、2つ以上を意図している。本明細書で使用されるように、用語「結合される(coupled)」は、電気的に結合されること、直接結合されること、及び/または(例えば、直接の物理的接触によって)介在要素なしで直接接続されること、介在要素と間接的に結合及び/または接続されること、または無線で結合されることを含み得る。結合という用語は、互いに協力または相互作用する2つ以上の要素をさらに含み得る(例えば、因果関係のように)。本明細書で使用される場合、同時に実行されている複数の行為は、特定の期間にわたって少なくとも部分的に重複する行為を指す。
【0080】
本明細書では特定の実施形態が示され説明されたが、示された特定の実施形態は、同じ結果を達成するように意図された構成と置き換えられ得ることを、当業者は理解するであろう。この開示は、本開示のいくつかの実施形態の適応または変形を網羅することを意図している。上記説明は限定的ではなく例示的に行われていることが理解されよう。上記実施形態の組み合わせ、及び本明細書で特に説明されていない他の実施形態は、上記説明を検討した当業者にとって明らかであろう。本開示のいくつかの実施形態の範囲は、上記の構造及び方法が使用される他の用途を含む。したがって、本開示のいくつかの実施形態の範囲は、添付の特許請求の範囲を、係る特許請求の範囲によって権利が与えられる均等物の全範囲と一緒に参照して決定されるべきである。
【0081】
前述の発明を実施するための形態では、本開示を簡素化する目的のために、単一の実施形態にいくつかの特徴を一緒にまとめている。開示のこの方法は、本開示の開示された実施形態が、各請求項に明示的に記載されたものよりも多くの特徴を使用する必要があるという意図を反映したものとして解釈されるべきではない。むしろ、以下の特許請求の範囲が反映するように、発明の主題は、単一の開示された実施形態の全ての特徴にあるわけではない。したがって、以下の請求項は、本明細書によって発明を実施するための形態に組み込まれ、各請求項は、別個の実施形態として独立している。
図1A
図1B
図2A
図2B
図3A
図3B
図4
図5
図6
【手続補正書】
【提出日】2021-11-26
【手続補正1】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項1】
コントローラと、
前記コントローラに結合された第1の連想メモリであって、不揮発性メモリセルを備える前記第1の連想メモリと、
前記コントローラに結合された第2の連想メモリであって、揮発性メモリセルを備える前記第2の連想メモリと、を備える装置であって、
前記コントローラは、
前記第1の連想メモリに、データを前記第1の連想メモリに書き込ませ、
前記第2の連想メモリに、前記データを前記第2の連想メモリに書き込ませ、
前記第1の連想メモリが前記データを前記第1の連想メモリに書き込み続ける間、前記第2の連想メモリに、前記第2の連想メモリに書き込まれた前記データに対してクエリ実行させるように構成される、前記装置。
【請求項2】
前記コントローラが、
前記第1の連想メモリに、前記データを前記第1の連想メモリのメモリタイルに書き込ませ、
前記第2の連想メモリに、前記データを前記第2の連想メモリの領域に書き込ませ、
前記第1の連想メモリの前記メモリタイルの位置を、前記第2の連想メモリの前記領域の位置にマッピングするように構成される、請求項1に記載の装置。
【請求項3】
前記コントローラが、前記メモリタイルがデータでいっぱいであるとの判定に応えて、前記メモリタイルの前記位置の前記領域の前記位置への前記マッピングを無効化し、前記メモリタイルがデータでいっぱいであるとの判定に応えて、前記第2の連想メモリに、前記データを前記領域から削除させるように構成される、請求項2に記載の装置。
【請求項4】
前記第2の連想メモリが、入力データを前記第2の連想メモリに書き込まれた前記データと比較することによって、前記第2の連想メモリに書き込まれた前記データに対してクエリ実行するように構成される、請求項1からのいずれかに記載の装置。
【請求項5】
前記コントローラが、前記第1の連想メモリ及び前記第2の連想メモリに、前記第2の連想メモリによる前記データの前記第2の連想メモリへの書き込みが終了するまで、前記データを前記第1の連想メモリ及び前記第2の連想メモリに同時に書き込ませるように構成される、請求項1からのいずれか1項に記載の装置。
【請求項6】
前記コントローラが、
前記データが前記第1の連想メモリに書き込まれている間、前記第1の連想メモリの前記データの位置を前記第2の連想メモリの前記データの位置にマッピングし、
前記第1の連想メモリが前記データの前記第1の連想メモリへの前記書き込みを完了したことに応えて、前記マッピングを無効化し、
前記第1の連想メモリが前記データの前記第1の連想メモリへの前記書き込みを完了させたことに応えて、前記第2の連想メモリに、前記データを前記第2の連想メモリから削除させるように構成される、請求書1からのいずれか1項に記載の装置。
【請求項7】
コントローラと、
前記コントローラに結合されたメイン連想メモリであって、不揮発性メモリセルを備える前記メイン連想メモリと、
前記コントローラに結合されたバッファ連想メモリであって、揮発性メモリセルを備える前記バッファ連想メモリと、を備える装置であって、
前記コントローラは、前記バッファ連想メモリに、前記メイン連想メモリが前記メイン連想メモリの部分的にいっぱいであるメモリタイルに対してクエリ実行することに代わり、前記バッファ連想メモリに対してクエリ実行させるように構成される、前記装置。
【請求項8】
前記コントローラが、前記バッファ連想メモリに、前記メイン連想メモリが部分的にいっぱいであるメモリタイルに対してクエリ実行することに代わり前記バッファ連想メモリに対してクエリ実行させると同時に、前記メイン連想メモリに、データで完全にいっぱいである前記メイン連想メモリのメモリタイルに対してクエリ実行させるように構成される、請求項に記載の装置。
【請求項9】
前記コントローラが、前記メイン連想メモリに、前記部分的にいっぱいであるメモリタイルを書き込み可能にさせたことに応えて、前記部分的にいっぱいであるメモリタイルの全てのデータベクトルを、前記部分的にいっぱいであるメモリタイルから前記バッファ連想メモリにコピーさせるように構成される、請求項に記載の装置。
【請求項10】
前記部分的にいっぱいであるメモリタイルから前記バッファ連想メモリにコピーされた前記データベクトルは、第1のデータベクトルであり、
前記コントローラが、
前記メイン連想メモリに、前記部分的にいっぱいであるメモリタイルを書き込み可能にさせたことに応えて、前記メイン連想メモリに、第2のデータベクトルを前記部分的にいっぱいであるメモリタイルの空き位置に書き込ませ、
前記メイン連想メモリが前記第2のデータベクトルを前記部分的にいっぱいであるメモリタイルに書き込んでいる間、前記バッファ連想メモリに、前記第2のデータベクトルを前記バッファ連想メモリに書き込ませ、
前記メイン連想メモリが前記第2のデータベクトルを前記部分的にいっぱいであるメモリタイルに書き込み続ける間、前記バッファ連想メモリに、前記バッファ連想メモリの前記第1のデータベクトル及び前記第2のデータベクトルに対してクエリ実行させるように構成される、請求項に記載の装置。
【請求項11】
前記コントローラが、前記メイン連想メモリの前記部分的にいっぱいであるメモリタイルの位置のアドレスを前記第1のデータベクトル及び前記第2のデータベクトルに対応する前記バッファ連想メモリのアドレス範囲にマッピングするエントリを備えるデータ構造を管理するように構成されており、
前記メイン連想メモリが、
第2のベクトルを前記メイン連想メモリの空き位置に書き込み、
前記メイン連想メモリの前記第1のデータベクトルの位置を前記空き位置にマッピングすることによって、前記メイン連想メモリの前記第1のデータベクトルを前記第2のデータベクトルに置き換えるように構成される、請求項10に記載の装置。
【請求項12】
データベクトルを第1の連想メモリのメモリタイルに書き込むことであって、前記第1の連想メモリは不揮発性メモリセルを備える、前記書き込むことと、
前記データベクトルを前記メモリタイルに対応する第2の連想メモリの領域に書き込むことであって、前記第2の連想メモリは揮発性メモリセルを備える、前記書き込むことと、
前記メモリタイルの代わりに前記領域に対してクエリ実行することと、を含む、方法。
【請求項13】
前記データベクトルを前記メモリタイルにかつ前記領域に書き込むことが、前記データベクトルの前記領域への書き込みが完了するまで前記データベクトルを前記メモリタイルにかつ前記領域に同時に書き込むことを備え、
前記メモリタイルの代わりに前記領域に対してクエリ実行することが、前記データベクトルの前記領域への書き込みが完了した後、前記データベクトルを前記メモリタイルに書き込んでいる間、前記領域の前記データベクトルに対してクエリ実行することを備える、請求項12に記載の方法。
【請求項14】
前記メモリタイルの代わりに前記領域に対してクエリ実行することが、
前記メモリタイルが以前に書き込まれたデータベクトルでいっぱいではないという判定に応えて、前記メモリタイルの代わりに前記領域に対してクエリ実行すること、及び
追加メモリタイルが以前に書き込まれたデータベクトルでいっぱいであるという判定に応えて、前記メモリタイルの代わりに前記領域に対してクエリ実行すると同時に、前記第1の連想メモリの前記追加メモリタイルに対してクエリ実行することを備える、請求項12に記載の方法。
【請求項15】
入力データベクトルを、前記第1の連想メモリまたは前記第2の連想メモリに格納された追加データベクトルと比較することと、
前記入力データベクトルと前記追加データベクトルとの間の一致が有効であるかどうかを、一致検証回路によって判定することと、をさらに含む、請求項12から14のいずれか1項に記載の方法。
【国際調査報告】