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

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

▶ 旺宏電子股▲ふん▼有限公司の特許一覧

特開2023-152261メモリ内データコンピューティングおよび分析
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2023152261
(43)【公開日】2023-10-16
(54)【発明の名称】メモリ内データコンピューティングおよび分析
(51)【国際特許分類】
   G06F 12/00 20060101AFI20231005BHJP
【FI】
G06F12/00 560F
G06F12/00 597U
【審査請求】有
【請求項の数】28
【出願形態】OL
(21)【出願番号】P 2022119956
(22)【出願日】2022-07-27
(31)【優先権主張番号】17/710,367
(32)【優先日】2022-03-31
(33)【優先権主張国・地域又は機関】US
(71)【出願人】
【識別番号】599129074
【氏名又は名称】旺宏電子股▲ふん▼有限公司
(74)【代理人】
【識別番号】110000877
【氏名又は名称】弁理士法人RYUKA国際特許事務所
(72)【発明者】
【氏名】チュン-シウン フン
(72)【発明者】
【氏名】シュオ-ナン フン
【テーマコード(参考)】
5B160
【Fターム(参考)】
5B160CB03
5B160MM20
(57)【要約】      (修正有)
【課題】メモリ内コンピューティング(CIM)デバイスと、同様のデータパスを有する他のデバイスとのために、より高い能力と効率の向上と得る集積回路及び集積回路内で実行される方法を提供する。
【解決手段】CIMデバイス100において、メモリアレイと、入力/出力インタフェースとの間のデータパス回路は、ページバッファを含む。ページバッファの各バッファセルは、複数の記憶要素を含み、夫々のバッファセルに接続された複数の計算回路が設けられている。計算回路は、夫々のバッファセルの記憶要素内のデータの関数を実行し、複数のバッファセルの演算結果を含む結果データページを生成するために並列に構成される。結果データページの関数を実行して分析結果を生成するために、データ分析回路176がデータパス回路に接続されている。また、入力/出力インタフェースを介してアクセス可能な分析結果を格納する分析結果レジスタが設けられる。
【選択図】図1
【特許請求の範囲】
【請求項1】
メモリアレイデータへの並列アクセスのための複数のデータラインを有するメモリアレイと、
入力/出力インタフェースと、
前記メモリアレイと前記入力/出力インタフェースとの間のデータパス回路であって、前記データパス回路は、前記メモリアレイのそれぞれのデータラインに接続された複数のバッファセルを有し、各バッファセルは、複数の記憶要素を含む、データパス回路と、
前記複数のバッファセル内のそれぞれのバッファセルに、前記それぞれのバッファセルの前記記憶要素内のデータの関数を実行するために接続された複数の計算回路であって、前記複数のバッファセルの演算結果を含む結果データページを生成するために並列に構成された、複数の計算回路と、
前記結果データページの関数を実行して分析結果を生成するために前記データパス回路に接続されたデータ分析回路と
を備える集積回路。
【請求項2】
前記複数の計算回路は、前記演算結果を前記それぞれのバッファセルの前記記憶要素に格納する、請求項1に記載の集積回路。
【請求項3】
前記入力/出力インタフェースを介してアクセス可能な前記分析結果を格納するためのレジスタを備える、請求項1または2に記載の集積回路。
【請求項4】
前記複数の計算回路は、関数のグループを実行するための回路を有しており、前記関数のグループから前記記憶要素内の前記データの関数を選択するために、セットアップデータに応答して構成可能である、請求項1または2に記載の集積回路。
【請求項5】
前記結果データページの前記関数は、前記結果データページ内のロジック「1」または「0」を示すビットのカウントを含む、請求項1または2に記載の集積回路。
【請求項6】
前記結果データページの前記関数は、結果カウントと閾値との比較を含む、請求項5に記載の集積回路。
【請求項7】
前記結果データページは、複数のセグメントを含み、前記結果データページの前記関数は、各セグメントの結果カウントと閾値との比較を含む、請求項5に記載の集積回路。
【請求項8】
前記データ分析回路は、前記結果データページの前記関数を設定するために、セットアップデータに応答して構成可能である、請求項1または2に記載の集積回路。
【請求項9】
コマンドを実行して前記それぞれのバッファセルの前記記憶要素内の前記データの関数を設定するように構成されたコマンドインタフェースを備える、請求項1または2に記載の集積回路。
【請求項10】
前記それぞれのバッファセルの前記記憶要素内の前記データの関数のパラメータと、前記結果データページの前記関数のパラメータとを格納するためのセットアップレジスタを備える、請求項1または2に記載の集積回路。
【請求項11】
前記複数の計算回路は、前記それぞれのバッファセルの前記記憶要素内の1つよりも多くのデータの関数を順に実行して前記結果データページについての前記複数のバッファセルの前記演算結果を生成するように構成可能である、請求項1または2に記載の集積回路。
【請求項12】
前記データパス回路は、キャッシュと、データを前記複数のバッファセルから前記キャッシュ内の記憶要素へ転送するための、かつ、データを前記キャッシュから前記入力/出力インタフェースへ転送するための回路とを有する、請求項1または2に記載の集積回路。
【請求項13】
前記データ分析回路は、前記キャッシュ内の前記結果データページにアクセスするように構成されている、請求項12に記載の集積回路。
【請求項14】
前記データ分析回路は、前記複数のバッファセル内の前記記憶要素内の前記結果データページにアクセスするように構成されている、請求項12に記載の集積回路。
【請求項15】
前記データ分析回路は、前記メモリアレイ用のプログラムオペレーションにおける不合格ビット検出器として構成されている、請求項1または2に記載の集積回路。
【請求項16】
コントローラと、コマンドデコーダとを備え、前記コントローラは、論理演算を設定するためのコマンドと、分析基準を調整するためのコマンドとに応答する、請求項1または2に記載の集積回路。
【請求項17】
関数を実行して前記入力/出力インタフェースからのデータを前記複数のバッファセルの選択された記憶要素に格納するように構成されたコントローラを備える、請求項1または2に記載の集積回路。
【請求項18】
前記複数のバッファセルの前記記憶要素内の前記データの関数は、各バッファセルの2つまたはそれよりも多くの記憶要素内のデータに対するビット毎論理演算である、請求項1または2に記載の集積回路。
【請求項19】
メモリと、記憶要素の複数のラインを含むページバッファとを有する集積回路内で実行される方法であって、
第1のデータを計算に対する入力として前記ページバッファ内の第1のラインに格納する段階と、
第2のデータを前記計算に対する入力として前記ページバッファ内の第2のラインに格納する段階と、
前記ページバッファ内において前記計算を実行して演算結果を提供する段階と
を備える、方法。
【請求項20】
前記演算結果を前記複数のラインのうちの1つに格納する段階を備える、請求項19に記載の方法。
【請求項21】
第2のデータを格納する前記段階は、前記メモリから前記第2のライン内の前記第2のデータをロードする段階を有する、請求項19または20に記載の方法。
【請求項22】
分析基準を前記演算結果に適用して、分析結果を生成し、アクセス可能なメモリに前記分析結果を格納する段階
を備える、請求項19または20に記載の方法。
【請求項23】
前記演算結果をデータ出力のためにキャッシュへ転送する段階
を備える、請求項19または20に記載の方法。
【請求項24】
演算タイプを設定して前記ページバッファ内における前記計算のための演算を選択する段階を備える、請求項19または20に記載の方法。
【請求項25】
演算識別子を制御レジスタに書き込むことにより、演算タイプを設定して、前記ページバッファにおける前記計算のための演算を選択する段階を備える、請求項19または20に記載の方法。
【請求項26】
分析基準を前記演算結果に適用して、分析結果を生成し、アクセス可能なメモリに前記分析結果を格納する段階と、
前記計算の結果のための前記分析基準を設定する段階と
を備える、請求項19または20に記載の方法。
【請求項27】
前記演算結果をキャッシュへ移動させ、前記分析基準を前記キャッシュ内の前記演算結果に適用する段階を備える、請求項26に記載の方法。
【請求項28】
前記分析基準を前記ページバッファの前記複数のラインのうちの1つにおける前記演算結果に適用する段階を備える、請求項26に記載の方法。
【発明の詳細な説明】
【技術分野】
【0001】
メモリ内コンピューティング(CIM)デバイスに関連する技術を提示する。この技術の例は、ページバッファに連結された計算回路を有する高密度NANDフラッシュメモリを含む。
【背景技術】
【0002】
いくつかのCIMデバイスにおいて、メモリアレイと入力/出力インタフェースとの間のデータパス上の回路を用いて、論理演算が実行される。CIMデバイスは、単一チップ上のメモリアレイおよび入力/出力インタフェースを含む集積回路を備えてよく、いくつかの実施形態において、マルチチップパッケージ内の1つよりも多くのチップに及ぶ集積回路を備えてよい。この構成は、論理演算用の非常に短いデータパスをもたらし得るので、非常に速い演算が低いエネルギーコストで可能になる。
【0003】
CIMデバイスと、同様のデータパスを有する他のデバイスとのために、より高い能力と効率の向上とを提供することが望ましい。
【発明の概要】
【0004】
メモリアレイデータへの並列アクセスのための複数のデータラインを含むメモリアレイを備える集積回路を説明する。また、集積回路は、入力/出力インタフェースを含む。メモリアレイと入力/出力インタフェースとの間のデータパス回路を説明する。データパス回路は、メモリアレイのそれぞれのデータラインに接続された複数のバッファセルを含み、各バッファセルは、ページバッファに設けられ得るような複数の記憶要素を含む。複数のバッファセル内のそれぞれのバッファセルに接続された複数の計算回路が設けられている。計算回路は、それぞれのバッファセルの記憶要素内のデータの関数を実行し、複数のバッファセルの演算結果を含む結果データページを生成するために並列に構成され得る。結果データページは、例えば、複数のバッファセルの記憶要素に格納され得るか、キャッシュメモリへ移動させられ得る。
【0005】
複数の計算回路により実行される複数のバッファセルの記憶要素内のデータの関数は、本明細書において説明される技術の例におけるページバッファの各バッファセルの2つまたはそれよりも多くの記憶要素内のデータのページまたはページの各部分に対するビット毎論理演算である。
【0006】
結果データページの関数を実行して分析結果を生成するためにデータ分析回路がデータパス回路に接続されている技術を説明する。入力/出力インタフェースを介してアクセス可能な分析結果を格納するために、レジスタが設けられ得る。本明細書において説明される例では、データ分析回路は、ページバッファ内の複数のバッファセルに接続されているか、キャッシュメモリに接続されている。いくつかの例において、1つよりも多くのデータ分析回路がデータパスに含まれ得る。
【0007】
計算回路が関数のグループを実行するための回路を有しており、関数のグループから記憶要素内のデータの関数を選択するためにセットアップデータに応答して構成可能である技術を説明する。
【0008】
また、計算回路が関数のグループを実行するための回路を有しており、記憶要素内のデータに対して順に実行される1つよりも多くの関数を選択するためにセットアップデータに応答して構成可能である技術を説明する。
【0009】
本明細書において説明される技術の一例において、分析回路内で実行される結果データページの関数は、結果データページ内のロジック「1」または「0」を示すビットのカウントを含む。また、データ分析回路は、結果カウントと、閾値として適用される基準との比較を実行するための回路を含み得る。
【0010】
いくつかの実施形態において、結果データページは、複数のセグメントを含み、データ分析回路内で実行される結果データページの関数は、各セグメントの結果カウントと、閾値として用いられる基準との比較を含む。
【0011】
コントローラとコマンドデコーダとを含む集積回路を説明する。コントローラは、レジスタ読み取りオペレーションおよびレジスタ書き込みオペレーションを用いてセットアップデータを格納するなど、計算回路の論理演算を設定するためのコマンドと、分析基準を調整するためのコマンドとに応答する。また、コントローラとコマンドデコーダとを含む集積回路を説明する。コントローラは、コマンドに応答してパラメータを設定することで、CIMオペレーションのサポートにおいて分析結果の生成のために分析回路を有効化または無効化する。
【0012】
コントローラとコマンドデコーダとを含む集積回路を説明する。コントローラは、CIMオペレーションの実行の準備において複数のバッファセルの選択された記憶要素内の入力/出力インタフェースからのデータを格納するためのコマンドに応答する。
【0013】
メモリとページバッファとを有する集積回路内で実行される方法を説明する。方法は、データを計算に対する入力としてページバッファに格納する段階と、計算に対する入力としてデータをメモリアレイからロードする段階と、ページバッファにおいて計算を実行して演算結果を提供する段階とを含む。また、方法は、分析基準を演算結果に適用して、分析結果を生成し、制御レジスタなど、アクセス可能なメモリに分析結果を格納する段階を含み得る。また、方法は、演算結果をデータ出力のためにキャッシュへ転送する段階を含み得る。方法は、演算識別子を制御レジスタに書き込むことなどにより、演算タイプを設定して、ページバッファにおける計算のための演算を選択する段階を含み得る。また、方法は、計算の結果のための分析基準を設定する段階を含み得る。
【0014】
メモリとページバッファとを有する集積回路内で実行される方法であって、ページバッファのバッファセルに格納されたデータに対して実行される1回よりも多くの論理演算を順に含むメモリ内コンピューティングオペレーションをセットアップする段階を含む、方法を説明する。
【0015】
メモリとページバッファとを有する集積回路内で実行される方法であって、1回よりも多くの論理演算を実行するように、かつ、制御レジスタ内のデータなど、セットアップデータに応答して用いられる論理演算を選択するように構成された計算回路を提供する段階を含む、方法を説明する。制御レジスタは、論理演算のタイプと、順に実行される1回よりも多くの演算が存在するかどうかと、論理演算のための入力データのソースとを示すセットアップデータを含み得る。
【0016】
概して、CIMデバイスの効率および能力を向上させるための技術を説明する。
【0017】
以下の図面、発明を実施するための形態および特許請求の範囲を確認すれば、提示される技術の他の態様および利点が分かり得る。
【図面の簡単な説明】
【0018】
図1】本明細書において説明されるプログラマブルCIMオペレーションとデータ分析回路とを含むCIMデバイスの簡略図である。
【0019】
図2】埋め込みデータ分析回路を含むCIMデバイス用のデータパス回路の一例の簡略図である。
【0020】
図3】埋め込みデータ分析回路を含むCIMデバイス用のデータパス回路の別の例の簡略図である。
【0021】
図4】複数のデータ要素とCIM論理回路とを含むページバッファセルの図である。
【0022】
図5】本明細書において説明されるデータ分析回路に関連して利用され得るページのセグメンテーションを示す。
【0023】
図6】本技術のいくつかの実施形態によるCIMオペレーション用のセットアップパラメータを提供するために使用可能な制御レジスタを示す。
【0024】
図7】本明細書において説明されるデータ分析回路により生成されるステータス情報へのアクセスを提供するために使用可能な制御レジスタを示す。
【0025】
図8】データ分析回路によりページの複数のセグメントにわたって生成されるページのセグメント用のステータス情報へのアクセスを提供するために使用可能な制御レジスタを示す。
【0026】
図9】入力/出力インタフェースからのデータをページバッファの複数のバッファセルの選択された記憶要素に格納するために用いられる例示的な一連のコマンド、アドレスおよびデータのタイミング図である。
【0027】
図10】本明細書において説明されるCIMオペレーションのサポートにおいてCIMデバイス上で実装されるオペレーションの簡略フローチャートである。
【0028】
図11A】本明細書において説明されるページバッファ内の結果データページのデータ分析を利用したCIMオペレーションの簡略フローチャートである。
図11B】本明細書において説明されるページバッファ内の結果データページのデータ分析を利用したCIMオペレーションの簡略フローチャートである。
【0029】
図12A】内部データ分析がオフにされているかCIMデバイスに含まれていない場合などにおける、内部データ分析なしのCIMオペレーションの簡略フローチャートである。
図12B】内部データ分析がオフにされているかCIMデバイスに含まれていない場合などにおける、内部データ分析なしのCIMオペレーションの簡略フローチャートである。
【0030】
図13】本明細書において説明されるキャッシュ内の結果データページのデータ分析を用いたCIMオペレーションの簡略フローチャートである。
【0031】
図14A】本明細書において説明されるデータ分析と共に複数のページにわたって順に実行されるCIMオペレーションの簡略フローチャートである。
図14B】本明細書において説明されるデータ分析と共に複数のページにわたって順に実行されるCIMオペレーションの簡略フローチャートである。
図14C】本明細書において説明されるデータ分析と共に複数のページにわたって順に実行されるCIMオペレーションの簡略フローチャートである。
【発明を実施するための形態】
【0032】
図1から図14を参照して、本技術の実施形態の詳細な説明を提供する。
【0033】
図1は、本明細書において説明される技術によるプログラマブルCIMオペレーションとデータ分析とをサポートする集積回路メモリデバイスの簡略チップブロック図である。集積回路メモリデバイス100は、単一の集積回路基板上の、NANDフラッシュアレイなどのメモリアレイ160を含む。本明細書において説明されるメモリデバイスは、マルチチップモジュール、積層チップ、同様に他の構成を用いて実装され得る。他のタイプのメモリアレイが同様に利用され得る。これらのメモリアレイは、NORフラッシュメモリ、PCRAMなどの相変化メモリ、遷移金属酸化物メモリなどの他のプログラマブル抵抗メモリRRAM(登録商標)、強誘電体ランダムアクセスメモリ(FeRAM)、磁気ランダムアクセスメモリ(MRAM)、他のタイプの不揮発性メモリ、DRAMメモリ、SRAMメモリ、および他のタイプの揮発性メモリを含む。
【0034】
入力/出力ポート195(例えば、I/Oピン)を介したホスト101とのデータ転送のために、I/Oインタフェース190がデバイス上に設けられている。いくつかの実施形態において、I/Oポート195は、汎用プロセッサもしくは専用アプリケーション回路などのオンチップホスト回路に、または、メモリアレイ160によりサポートされるシステムオンチップ機能を提供するモジュールの組み合わせに接続できる。
【0035】
一実施形態において、I/Oインタフェース190は、コマンド、アドレスおよびデータが通信されるI/Oポート195のセットを含むシリアルインタフェースである。シリアルインタフェースは、アドレスおよびデータ毎に用いられるI/Oピンをコマンドチャネルが共有するシリアルペリフェラルインタフェース(SPI)バス仕様に基づき得るか準拠し得る。例えば、集積回路メモリデバイス100は、SPIバス信号を受信および送信するためのピンを用いた入力/出力ポートを含み得る。1つのピンが、同様にコマンド用に使用可能な、シリアル入力データ/アドレス信号SIを搬送する入力データラインに接続され得る。別のピンまたは複数の他のピンが、シリアル出力データ信号SOを搬送する出力データラインまたは出力データラインに接続され得る。別のピンが、シリアルクロック信号SCLKを搬送するクロックラインに接続され得る。さらに別のピンが、チップイネーブルまたはチップ選択信号CS#を搬送する制御ラインに接続され得る。
【0036】
パラレルインタフェースと他のタイプのシリアルインタフェースとを含む他のタイプのインタフェースが、同様に用いられ得る。特定の集積回路メモリデバイス100上のI/Oポート195は、I/Oデータ幅を有する出力データを提供するように構成され得る。I/Oデータ幅は、いくつかの例を挙げると、インタフェースクロックサイクル毎の並列の1ビット、4ビット、8ビット、16ビット、32ビットまたはより多いビットであり得る。
【0037】
I/Oインタフェース190とメモリアレイ160との間のデータパス回路は、ページバッファ172と、CIM回路174と、データ分析回路176と、キャッシュ178とを含む。ページバッファは、メモリアレイ160内のメモリデータのページへの並列アクセスのために、データライン165に連結されている。キャッシュ178は、典型的には、キャッシュからI/Oインタフェース190への、バイトまたはワードなどのデータ記憶単位の高速転送をサポートするバス185を介して、I/Oインタフェース190に連結されている。いくつかの実施形態において。ページバッファ172内の記憶要素は、I/Oインタフェース190へ直接アクセス可能であってよい。
【0038】
メモリデバイスは、メモリオペレーションのサポートにおいてステータス情報を格納し、情報および他のパラメータをセットアップするために用いられる制御レジスタのセットを含み得る。このセットは、読み取りオペレーションおよび書き込みオペレーションのために、I/Oインタフェース190を通じて、およびデバイス上の制御ロジック110を通じてアクセス可能であり得る。図1に示されるように、制御レジスタのセットは、分析結果レジスタ112を含み得る。分析結果レジスタ112は、データ分析回路176用の出力データおよびセットアップデータを格納し、かつ、CIM回路174用のセットアップデータを格納するために用いられる。
【0039】
集積回路メモリデバイス100上の制御ロジック110およびコマンドデコーダ108は、I/Oインタフェース109からのライン191上などで受信されたコマンドに応答して、読み取り、プログラミング、消去、レジスタ読み取りおよびレジスタ書き込み等を含むメモリオペレーションを実行する、1つまたは複数のステートマシンなど、ロジックを含む。制御ロジック110は、デバイス上の回路に対して、図において矢印で表される制御信号を出力および受信する。また、制御ロジックは、バス130上のアドレスを提供する。バス130上で供給されるアドレスは、例えば、制御ロジック110内のアドレスカウンタの出力(例えば、連続するアドレス)、または受信されたコマンドで搬送されるアドレスを含み得る。また、これらのアドレスは、キャッシュ178へのアクセスのためのキャッシュアドレスと、本明細書において説明されるような、ページバッファ172内の記憶要素へのアクセスのためのアドレスとを含み得る。
【0040】
ブロック図に概略的に示されるアドレスデコーダ140が、メモリアレイ内の行に沿って複数のワードライン145に、ページバッファ172に、かつ、キャッシュ178に連結されている。ページバッファ172は、メモリアレイ160からのデータの読み取りおよびメモリアレイ160へのデータの書き込みのためのオペレーション中を含むメモリアレイ160へのページアクセスのためにメモリアレイ160内の列に沿って配置された複数のデータライン165に連結されている。
【0041】
ページバッファ172は、メモリアレイ160へのページアクセスのためにそれぞれのデータラインに連結された複数のバッファセルを含み得る。各バッファセルは、本明細書において説明されるように、メモリセル毎の複数のビットのページ読み取りおよびページ書き込みをサポートし、かつ、ページとページのセグメントとにわたるビット毎CIMオペレーションをサポートする記憶要素など、複数の記憶要素を含み得る。
【0042】
アドレスデコーダ140は、それぞれの接続データラインを介して、メモリアレイ160内の特定のメモリセルを選択し、ページバッファ172に連結させることができる。ページバッファ172は、これらの特定のメモリセルに並列に書き込まれるかこれらの特定のメモリセルから並列に読み取られるデータを格納できる。ページバッファ172は、16Kビットもしくは32Kビットまたはそれ以上など、数千ビットと、ECCコードのような関連付けられたメタデータを含む追加のビットとを含むページのページ幅を有し得る。
【0043】
図1に示される例において、バイアス配置ステートマシンを用いる制御ロジック110は、ブロック120内の1つまたは複数の電圧源を通じて生成または提供されるバイアス配置供給電圧の印加を制御する。この制御は、電圧の読み取り、プログラミングおよび消去などであり、データをページバッファからメモリアレイへ転送するためのページ書き込みと、データをメモリアレイ内のページからページバッファへ転送するためのページ読み取りとを含む。
【0044】
制御ロジック110およびコマンドデコーダ108は、コントローラを構成する。コントローラは、ステートマシンおよびサポートロジックを含む専用論理回路を用いて実装され得る。代替的な実施形態において、制御ロジックは、汎用プロセッサを備える。汎用プロセッサは、デバイスのオペレーションを制御するためのコンピュータプログラムを実行する同じ集積回路上に実装され得る。さらに他の実施形態において、専用論理回路と汎用プロセッサとの組み合わせが、制御ロジックの実装のために利用され得る。
【0045】
以下でより詳細に説明するように、コントローラのコマンドデコーダ108および制御ロジック110は、本明細書において説明される入力コマンドに応答して、CIMオペレーションおよびデータ分析をサポートする手順を実行するように構成されている。
【0046】
示されている例において、ホスト101は、メモリデバイス100上のI/Oポート195と、チップ選択端子などの示されていない他の制御端子とに連結されており、データ、コマンドまたは命令をメモリデバイス100に提供できる。いくつかの例において、ホスト101は汎用プロセッサ、専用プロセッサ、メモリコントローラとして構成されたプロセッサ、またはメモリデバイス100を用いる他のプロセッサを備え得る。ホスト101の全部または一部が、メモリとして同じ集積回路上に実装され得る。ホストは、CIM機能を利用し、かつ、メモリデバイス100上で実行されるデータ分析をサポートするコンピュータプログラムを実行して、消費電力を低減し、オペレーションの速度を向上させることができる。応答において、ホスト101は、一連のコマンドを発行して、これらの手順を実行させ、計算および分析結果を読み取り、後続のオペレーションを選択できる。
【0047】
図2は、図1のメモリアレイ160などのメモリアレイ201と、図1の入力/出力(I/O)インタフェース190などのインタフェース205との間のデータパス回路の簡略図である。データパス回路は、マルチレベルページバッファ202、ビットカウント回路203およびキャッシュ204を含む。マルチレベルページバッファ202は、鉛直線によって示されるように、複数のマルチレベルページバッファ/CIMユニットへ分割されている。マルチレベルページバッファ/CIMユニットの各は、複数のバッファセルを備え得る。例えば、マルチレベルページバッファ/CIMユニットは、メモリアレイ201の256個のデータラインに並列に連結された16行×16列のバッファセルのアレイを備え得る。
【0048】
バッファセル(例えば図4を参照のこと)の各々は、複数の記憶要素と、オペコード212により構成可能であるロジックユニットとを備え得る。オペコード212は、選択された論理関数を記憶要素内のデータを用いて実行して出力を生成し結果を格納すべく、制御レジスタに格納され得るか、そうでなければオペレーションをセットアップするために提供され得る。結果は、バッファセルの複数の記憶要素内の記憶要素のうちの1つへ戻るように格納され得るか、いくつかの場合において、キャッシュ204など、他のメモリに格納され得る。複数のバッファセルからの結果の組み合わせは、複数のバッファセルの演算結果を含む結果データページを提供する。いくつかの実施形態において、結果データページは、ページ演算全体についてのページバッファ内のページバッファ/CIMセルの全てにおける論理演算の演算結果を含む。他の実施形態において、結果データページは、ページのある部分(以下で説明されるセグメント、または別のサイズ部分など)に対する演算についてのページバッファ/CIMセルのセグメント内の論理演算の演算結果を含む。
【0049】
ビットカウント回路203、またはデータパス回路に接続された他のデータ分析回路は、ページバッファにおける論理演算の演算結果(結果データページ)の分析を実行する。この例では、分析は、結果データページ内の「1」ビットまたは「0」ビットの数のビットカウントであり、このカウントを基準213と比較し、合格/不合格結果を制御レジスタ214に出力する。基準213は、制御レジスタに格納され得るか、そうでなければ分析オペレーションをセットアップするために提供され得る。この例におけるビットカウント回路203は、メモリアレイ201のプログラムまたは消去オペレーション中に不合格ビット検出器としても用いられ得る。いくつかの実施形態において、ビットカウント回路203は、結果データページ内のビットに対し、類似性スコアまたは近接度スコアを計算するための、かつ、このスコアを閾値などの基準と比較するための演算など、追加の論理演算を実行するように構成され得る。
【0050】
異なる実施形態において、制御レジスタ214内の合格/不合格結果は、結果データページが全体として基準に合格しているかどうかを示すパラメータを含むように構成され得るか、結果データページが複数のセグメントへ分割されている場合に結果データページのどのセグメントが基準に合格しているかを示すパラメータを含むように構成され得るか、ページ全体の分析結果およびセグメント毎の分析結果の両方を含むように構成され得る。
【0051】
キャッシュ204は、例えば、バッファセル内の選択された記憶要素とキャッシュ204との間のデータの高速転送のために、マルチレベルページバッファ202に連結されている。キャッシュ204は、複数のキャッシュユニットとして構成され得る。各キャッシュユニットは、図における鉛直パーティションによって示されるようにマルチレベルページバッファ/CIMユニットのうちの1つに対応する。メモリアレイ201の256個のデータラインに並列に連結された16行×16列のバッファセルのアレイをマルチレベルページバッファ/CIMユニットが備える一例において、各キャッシュユニットは、同様に、1つのキャッシュセルが各バッファセルに対応する16行×16列のキャッシュセルのアレイを備え得る。16×16のキャッシュユニットの各列は、対応する16バッファセルから転送される16ビットワードを格納できる。データは、例えば、キャッシュセルと対応するバッファセル内の選択された記憶要素との間で、比較的速い速度で、キャッシュクロック220のレートで平行移動させられ得る。
【0052】
キャッシュ204は、インタフェース205との読み取り転送および書き込み転送のために、バス210により連結されている。一例において、バス210およびインタフェース205は、キャッシュクロックの速度での対応する複数のキャッシュセルからの複数の16ビットワード(例えば、2ワード、4ワードまたは8ワード)の転送用に構成されている。インタフェース205は、I/Oポート222の構成に従って、ライン221上のインタフェースクロックのインタフェースクロックレートでデータをI/Oポート222に出力するように構成されている。このインタフェースクロックレートは、キャッシュクロックのクロックレートとは異なり得る。
【0053】
図3は、図1のメモリアレイ160などのメモリアレイ301と、図1の入力/出力インタフェース190などのインタフェース305との間のデータパス回路の代替的な構成の簡略図である。データパス回路は、マルチレベルページバッファ302、不合格ビット検出器回路303およびキャッシュ304を含む。マルチレベルページバッファ302は、鉛直線によって示されるように、複数のマルチレベルページバッファ/CIMユニットへ分割されている。マルチレベルページバッファ/CIMユニットの各は、複数のバッファセルを備え得る。例えば、マルチレベルページバッファ/CIMユニットは、メモリアレイ301の256個のデータラインに並列に連結された16行×16列のバッファセルのアレイを備え得る。
【0054】
バッファセル(例えば図4を参照のこと)の各々は、複数の記憶要素と、オペコード312により構成可能であるロジックユニットとを備え得る。オペコード312は、選択された論理関数を記憶要素内のデータを用いて実行して出力を生成し結果を格納すべく、制御レジスタに格納され得るか、そうでなければオペレーションをセットアップするために提供され得る。結果は、バッファセルの複数の記憶要素内の記憶要素のうちの1つへ戻るように格納され、対応するキャッシュセルへ転送され得るか、いくつかの場合において、結果は、キャッシュ304に直接格納され得る。複数のバッファセルからの結果の組み合わせは、複数のバッファセルの演算結果を含む結果データページを提供する。いくつかの実施形態において、結果データページは、ページバッファ/CIMユニットの全てにおける論理演算の結果を含む。他の実施形態において、結果データページは、ページバッファ/CIMユニットのあるセグメントにおける論理演算の結果を含む。
【0055】
不合格ビット検出回路303は、プログラム検証オペレーションの結果の分析を実行するために、またはページバッファ内の検証オペレーションを消去するために、データパス回路に含まれ得る。この例では、不合格ビット検出回路は、プログラム内の「1」ビットまたは「0」ビットの数のビットカウントを生成するか検証結果を消去し、プログラムオペレーションにおける次の段階を判断するコントローラまたはホストに結果を提供する。
【0056】
キャッシュ304は、例えば、バッファセル内の選択された記憶要素とキャッシュ304との間のデータの高速転送のために、マルチレベルページバッファ302に連結されている。キャッシュ304は、複数のキャッシュユニットとして構成され得る。各キャッシュユニットは、マルチレベルページバッファ/CIMユニットのうちの1つに対応する。メモリアレイ301の256個のデータラインに並列に連結された16行×16列のバッファセルのアレイをマルチレベルページバッファ/CIMユニットが備える一例において、各キャッシュユニットは、同様に、1つのキャッシュセルが各バッファセルに対応する16行×16列のキャッシュセルのアレイを備え得る。16×16のキャッシュユニットの各列は、対応する16バッファセルから転送される16ビットワードを格納できる。結果データページのデータを含むデータは、例えば、キャッシュセルと対応するバッファセル内の選択された記憶要素との間で、比較的速い速度で、キャッシュクロック320のレートで平行移動させられ得る。
【0057】
キャッシュ304は、インタフェース305との読み取り転送および書き込み転送のために、バス310により連結されている。一例において、バス310およびインタフェース305は、キャッシュクロックの速度での対応する複数のキャッシュセルからの複数の16ビットワード(例えば、2ワード、4ワードまたは8ワード)の転送用に構成されている。インタフェース305は、I/Oポート322の構成に従って、ライン321上のインタフェースクロックのインタフェースクロックレートでデータをI/Oポート322に出力するように構成されている。このインタフェースクロックレートは、キャッシュクロックのクロックレートとは異なり得る。
【0058】
データパス回路は、ビットカウント回路330を含む。ビットカウント回路330は、バス310に接続されているか、そうでなければキャッシュ内のデータにアクセスするように構成されている。ビットカウント回路330は、ページバッファにおける論理演算の結果の分析を実行する。この例では、分析は、結果データページ内の「1」ビットまたは「0」ビットの数のビットカウントであり、このカウントと基準313との比較を含む。また、分析は、合格/不合格結果を制御レジスタ314に出力する。基準313は、制御レジスタに格納され得るか、そうでなければ分析オペレーションをセットアップするために提供され得る。いくつかの実施形態において、図3に示されるもののようなビットカウント回路は、図2に示されるように構成されたデバイス上に含まれ得る。その結果、メモリアレイとインタフェースとの間のデータパス回路内に、ページバッファ内で実行されるCIMオペレーションからの結果データページを分析するように構成された複数のデータ分析回路が存在することになる。
【0059】
制御レジスタ314内の合格/不合格結果は、結果データページが全体として基準に合格しているかどうかを示すパラメータを含み得るか、結果データページが複数のセグメントへ分割されている場合に結果データページのどのセグメントが基準に合格しているかを示すパラメータを含み得るか、結果データページが全体として基準に合格しているかどうかを示すパラメータと、結果データページのどのセグメントが基準に合格しているかを示すパラメータとの両方を含み得る。
【0060】
図2のビットカウント回路203および図3のビットカウント回路330は各々、結果データページの関数を実行して分析結果を生成するためにデータパス回路に接続されたデータ分析回路の例である。他の実施形態において、データ分析回路は、データマッチングオペレーションを実行することで、結果データページまたは結果データページのセグメントを、分析のための基準として提供される定数と比較できる。他の実施形態において、データ分析回路は、結果データページ内の複数のビットセットに対してロジックオペレーションまたは計算オペレーションを実行し、次に、演算結果をカウントしてカウントを報告できるか、ステータスビットをステータスレジスタに書き込むことによりカウントを閾値と比較して合格判定または不合格判定を行うことができる。
【0061】
1つの例示的な手順において、ページバッファ内のCIM回路は、アレイからのデータと別のソースからのページバッファに格納されたマスタデータとに対してビット毎XOR演算を計算するように構成され得る。これにより、ページバッファセル内のアレイデータおよびマスタデータ内のビットが一致しない場合には「0」を含み、ページバッファセル内のアレイデータおよびマスタデータ内のビットが一致する場合には「1」を含むページにわたる1サイクルで結果データページが生成される。データ分析回路は、結果データページ内の「1」をカウントすることにより、一致するビットの数をカウントするように構成され得る。また、いくつかの例において、データ分析回路は、結果データページ内の複数のビットに対して論理演算を実行し、次に、論理演算の結果を入力として用いて、カウントまたは合格/不合格ステータスなど、分析結果を生成できる。一実装において、データ分析回路は、隣接ビットに対してAND演算(例えば、ビット(i) AND ビット(i+1)であり、iは、0からN-1までであり、Nは、結果データページ内のビットの数である)を実行して、N/2ビットを有する演算結果を生成するように構成され得る。また、データ分析回路は、結果データページ内の2つよりも多くのビットに対して演算を実行するか、特定のニーズに適するような他の関数を実行するように構成され得る。
【0062】
データ分析回路は、16KBの結果データページに対し、例えば16Bのセグメントにおいて、分析オペレーション1K回の適用を複数サイクルで実行できる。
【0063】
図4は、図1図2および図3に関して説明されたようなアレイ内に配置された複数のバッファセルを含むマルチレベルページバッファ/CIMユニット内で用いられ得るバッファセル400の簡略図である。
【0064】
バッファセル400は、メモリアレイからのビット線BLまたは他のタイプのデータラインに連結された検知回路410を含む。また、バッファセル400は、バッファセルの一部であり得るCIM論理回路411に接続されている。CIM論理回路411は、メモリ読み取りオペレーションおよびメモリ書き込みオペレーションならびにCIMオペレーションのために用いられる。バッファセル400は、データビットD0を格納する記憶要素、データビットD1を格納する記憶要素、…およびデータビットDnを格納する記憶要素など、複数の記憶要素412-414を含む。例えば、バッファセルは、3個、4個または5個の記憶要素を含み得る。複数の記憶要素412-414は、特定のオペレーションのために特定の記憶要素を論理回路へリンクする回路により、検知回路410および論理回路411に連結されている。また、複数の記憶要素412-414はパスゲート420などのセレクタにより、ライン421に連結されており、次に、ライン421は、対応するキャッシュセルに接続されている。
【0065】
この例では、CIM論理回路411は、構成レジスタにより提供されるオペコードに応答して、または所与のCIMオペレーションで用いるためのコマンドに応答して選択可能である組み合わせ論理回路を含む。また、CIM論理回路411は、タイミング信号およびオペコードに応答して、ロジックゲートの入力を、データビットD(0)~D(N-1)を格納する記憶要素のうちの選択されたもの、および対応するキャッシュセルからのライン421に接続し、かつ、論理回路の出力を、データビットD(0)~D(N-1)を格納する記憶要素のうちの選択された1つ、および任意選択的に、対応するキャッシュセルからのライン421に接続する回路を含む。オペコード、またはオペコードのデコードに応答して生成される制御信号は、いくつかの例において、セグメントまたはページの全てのページバッファセルに適用され得る。また、バッファセル400は、SEL信号および他の制御信号に応答して、データを、データビットD0~D(N-1)を格納する記憶要素のうちの選択された1つから、ライン421上で、対応するキャッシュユニット内の対応するキャッシュセルへ転送する。
【0066】
CIM論理回路411は、結果がキャッシュへ転送されるかデータ分析回路に適用される前に、1つのオペコードまたは複数のオペコードに応答して、1回の論理演算または1回よりも多くの論理演算を順に実行するように構成され得る。
【0067】
ページバッファは、複数のページバッファセルP(i)を含み、i=0~M-1である。Mは、データをM個のメモリセルからページバッファへ転送するためにページバッファに接続されたデータラインの数である。ページバッファセルの各々は、ビットD(0)~D(N-1)用の記憶要素を有してよく、組み合わせで、ページバッファ内の記憶要素のN個のラインを形成する。この例では、ページバッファ内の複数のラインの記憶要素の各ラインは、M個のビットを格納できる。また、M個のビットは、ホストまたは他の制御ロジックにより制御されるオペレーション制御手順に応答して、メモリアレイから読み取りオペレーションにおいて、もしくはページバッファ内の別のラインなど、別のソースからの書き込みオペレーションにおいて、ページバッファに連結されたキャッシュから、または別のデータパスから、ページバッファ内のラインへ並列にロードされ得る。
【0068】
以下の表1は、ページバッファにおける論理演算の選択をサポートする1つの例示的なオペコードセットを示す。1番目の列では、論理演算の名前が提供されている。列2から列4では、オペコードのビット[2:0]が提供されている。列5では、第1の演算に適用される場合の関数が提供されている。列6では、第1の演算と連続し得る第2の演算として適用される場合の関数が提供されている。当然ながら、演算およびオペコードの配置は、所与の実装のために所望されるように定義され得る。
【0069】
例えば、XORオペコードは、第1のXOR演算および第2のXOR演算をセットアップする。これらのXOR演算は、順にまたは別個に実行され得る第1のXORでは、「入力1」および「読み取られたデータ」のXORを実行する。第1のXORの出力は、選択された記憶要素内のデータビットD1に格納される。「入力1」は、データをキャッシュまたはIOインタフェースからページバッファへ転送するためにホストコマンドにより提供されるデータを含み得る。それは、複数のバッファセル内の、記憶要素414などの選択された記憶要素内に位置する。「読み取られたデータ」は、選択された記憶要素へ検知回路410を介してメモリアレイから転送されて格納されたデータ、例えば、データビットD0である。第2のXORでは、「入力2」および「D1」のXORを実行する。D1内のデータは、第1のXOR演算により、またはオペコードの表において定義される異なる第1の論理演算により生成され得る。データ「入力2」は、キャッシュメモリまたはIOインタフェースからの転送において、ホストにより提供され得る。第2のXORの出力は、選択された記憶要素にデータビットD2として格納される。本明細書において提供される技術のいくつかの例では、所与の演算のための「入力1」および「入力2」の両方が、キャッシュメモリまたはIOインタフェースからの転送において、ホストからページバッファ内の対応するラインへ書き込まれ得る。
【0070】
他のオペコードは、XORオペコードに関して論じられるように同様に解釈され得る。いくつかの実施形態において、表からの1つのオペコードは、順に実行され得るOP1およびOP2の両方を識別するために用いられ得る。表1における例では、第1のオペコードおよび第2のオペコードの両方が、異なる入力を用いた同じ論理関数を選択する。他の例では、第1のオペコードおよび第2のオペコードは、異なる論理関数を選択できる。いくつかの例では、異なる関数を実行するために、表からの2つのオペコードが順に選択される。これらのオペコードのうちの1つは、第1の演算のためのものであり、もう1つは、第2の演算のためのものである。
【表1】
【0071】
図5は、いくつかの実施形態において適用され得るページのセグメンテーションを示す。図5に示されるように、ページ500は、メモリアレイからページバッファへ並行して転送されるデータの量である。1つのページが、例えば16KBプラス2KBの追加のデータを含み得る。いくつかのデバイスでは、これらのページは、特定の構成に適するように、より小さいかまたは大きい。図5に示されるように、ページ500は、SEG1からSEG8という8個のセグメントへ分割されている。上で言及したように、データ分析回路は、セグメント単位で動作して、これら8個のセグメントの各々の分析結果を提供できる。他のセグメンテーションが、特定のニーズに適するように適用され得る。
【0072】
図6から図8は、例示的な制御レジスタを示す。これらの制御レジスタは、CIMオペレーションの機能を定義するセットアップデータ(例えば、オペコード、基準およびアドレス指定)を提供するために、かつ、レジスタ読み取りオペレーションおよびレジスタ書き込みオペレーションを用いてホストによりアクセス可能な結果データ(例えば、合格/不合格データおよびカウントデータ)を提供するために、図1を参照して説明されたようなデバイス上で用いられ得る。
【0073】
図6は、第1のパラメータと第2のパラメータとを含むCIM制御機能アドレスを有する機能制御レジスタを示す。第1のパラメータP1は、データ分析回路内で適用される基準AD1BN(例えば、許容される1ビットの数)を保持するレジスタを指す。第2のパラメータP2は、ページバッファセル内で実行される論理演算の数を示す第1のビットOP#と、データ分析回路を有効化するために用いられる第2のビットINTKと、OP#ビットにより示される場合に実行される第2の演算を識別する第1のオペコードフィールドOP2と、実行される第1の演算を識別する第2のオペコードフィールドOP1とを保持するレジスタを指す。なお、表1に関して論じられる実施形態において、ただ1つのオペコードフィールドが利用され得る。この例では、ビットOP#は、両方のオペコードが実行される場合に設定される。ビットOP#が設定されなかった場合、第1のオペコードのみが実行される。さらに、図6は、予約フィールドRSVを示す。
【0074】
図7は、8個のビットを有するステータス制御レジスタを示す。最初の7個のビットMからSは、通常のメモリオペレーションに関連するステータスビット、またはデバイス上の他の関数であり得る。ステータスビットFAILは、データ分析の結果を示す。セグメントシステムにおいて、ビットFAILは、セグメントの全てが基準に不合格である場合にデータ分析回路により一例における不合格ステータスを示すように設定(またはリセット)されるか、少なくとも1つのセグメントが合格している場合に合格ステータスを示すようにリセット(または設定)される。メモリデバイスを動作させるホストは、ステータス制御レジスタを読み取って、分析結果を判断できる。
【0075】
図8は、内部データチェック機能アドレスINTK FEATURE ADDRとパラメータフィールドP1とを有する内部チェック機能制御レジスタを示す。結果データページが8個のセグメントへセグメント化される一実施形態において、図8の内部チェック機能制御レジスタは、示されるような8個のセグメントの各々について、合格不合格P/Fビットを格納できる。
【0076】
所与の実装において用いられる制御レジスタの構成は、実行されている関数のタイプに合うように適合させられ得る。
【0077】
図9は、ページバッファのバッファセルの選択された記憶要素内の入力データを設定するためにホスト内で生成され得るコマンドシーケンスを示すタイミング図である。このコマンドシーケンスは、3レベルメモリ内で用いられるシーケンスと同様である。マルチレベルメモリセルに格納される各ビットは、ページバッファの特定のラッチへ書き込まれる。図9に示されるシーケンスでは、2つのコマンドバイトCMDが、キャッシュ転送コマンドを提供する。デバイス内のコマンドデコーダおよびコントローラは、キャッシュ書き込みオペレーションをセットアップする。次に、5個のアドレスバイトが、キャッシュへの書き込みのサポートにおいて列アドレスおよび行アドレスを提供する。デバイス内のコマンドデコーダおよびコントローラは、アドレスをデコードして、キャッシュへの書き込みのサポートにおいてキャッシュアドレスをセットアップする。一連のデータバイトが入力され、書き込みオペレーションは、データをキャッシュに格納するために、コントローラにより実行される。最終的に、ページバッファへキャッシュデータを転送させるために、コマンドバイトが入力される。コントローラおよびコマンドデコーダは、手順を実行して、データをページバッファ内の記憶要素(Dx)の指定されたラインへ転送する。CIMオペレーションにおいて利用されるデータおよびCIMオペレーションにより生成されるデータの移動に関連する他の機能を達成するために、同様のコマンドシーケンスが実装され得る。
【0078】
図10は、本明細書において説明されるデータ分析を用いたCIMオペレーションのサポートにおいてデバイス内で実行される段階の簡略フローチャートである。このフローチャートにおいて、CIMオペレーションを設定するために、第1の機能制御レジスタがパラメータと共にロードされる。その一例は、図6に示される制御レジスタ内のP2行である(1000)。このオペレーションは、デバイスによりホストから受信される書き込みレジスタコマンドに応答して実行され得る。また、これらの段階は、機能制御レジスタをロードしてデータ分析のための内部分析基準を設定する段階を含む。その一例は、図6に示される制御レジスタのP1行である(1010)。指定されたオペレーションを実行すべく、入力(この場合では、指定された論理関数により用いられる入力1および入力2である)を提供するために、ページバッファセルの記憶要素の選択されたラインに入力データが配置される(1020)。次に、メモリデバイスは、コマンドまたは他の信号に応答して、指定された論理演算を実行し、ページバッファセルの記憶要素のラインのうちの1つに結果を格納し、ページバッファのセルにわたって結果データページを提供し、結果データページを分析し、ホストによりアクセス可能なメモリ位置に格納される分析結果を提供できる(1030)。次に、この関数を利用するホストアプリケーションが、読み取りステータスコマンドを発行でき、デバイスは、読み取りステータスコマンドに応答し、内部分析基準に従ってデータ分析の結果を提供する(1040)。これらの結果は、図7に関して上で論じられたステータス制御レジスタに格納され得る。また、この関数を利用するホストアプリケーションは、図8に関して上で論じられたレジスタなど、分析の結果に関するより多くの詳細を格納する制御レジスタを読み取るために、機能取得コマンドなどのコマンドを発行できる(1050)。したがって、メモリデバイスは、機能取得コマンドに応答して、デバイス上の入力/出力ポートを介して、結果ページのセグメントの合格/不合格ステータスなど、要求されたデータをホストに提供する。
【0079】
図11Aは、内部データ分析を用いた、メモリアレイから読み取られるデータに対して実行される本明細書において説明されるCIMオペレーションのフローチャートである。このオペレーションは、例えば、当該関数を提供する図6および一実施形態に関して上で論じたINTKパラメータを用いて実行され得る。この例では、手順が始まる(1101)。メモリデバイス上での設定された論理演算を変更するかどうかが判断される(1102)。論理演算を変更することが所望される場合、ホストは、論理演算を変更するためにコマンドを発行する(1103)。論理演算の変更が実行されない場合、または段階1103において論理演算を変更した後に、結果データページの分析のための判定基準を変更するかどうかが判断される(1104)。判定基準を変更することが所望される場合、判定基準を変更するためにコマンドが発行される(1105)。段階1104において判定基準の変更がなかった場合、または段階1105において変更が実行された後に、選択されたオペレーションに対する入力として用いられる第1のデータセットを用いてページバッファを準備するために、コマンドが発行される(1106)。これは、図9に関して論じたようなオペレーションを伴い得る。代替的に、これは、ページバッファ内の、1つのラインなど、記憶要素の1つのセットから、ページバッファ内の、別のラインなど、記憶要素の別のセットへのデータ(メモリアレイから以前に読み取られたページのデータなど)の移動を伴い得る。ページバッファ内の第1のデータを準備した後に、単一のコマンド、または代替的に、コマンドシーケンスが実行されることで、ステートマシンまたは他の制御回路を用いた手順が実行されてメモリアレイからページバッファへの第2のデータセット(例えば、ページ、またはページのセグメント)が読み取られ、ページバッファにおいてビット毎論理演算が実行され、ビットカウント回路または他のデータ分析回路を用いてページバッファにおいて結果データページが分析され、論理演算の結果データページがキャッシュへ転送される(1107)。ステータス制御レジスタの書き込みを可能にするのに十分なレイテンシの後、ホストは、次に、データ分析オペレーションの合格/不合格ステータスなど、データ分析オペレーションの結果を保持する1つまたは複数のレジスタを読み取るために、1つまたは複数のコマンドを発行できる(1108)。
【0080】
図11Bは、例えば集積回路メモリ上のコマンドデコーダを用いた単一の外部コマンドのデコードに応答してステートマシンにより実行され得る図11Aの段階1107により表される手順の一例のフローチャートである。フローチャートは、図11Aの段階1107において始まる(1112)。コマンドに応答して、メモリデータがメモリアレイからページバッファのラインへ読み取られる(1113)。第1の演算用に用いられるオペコードOP1が適用され、OP1を実行するためにページバッファ内の論理回路が用いられる(1114)。次に、パラメータOP#を見ることにより、第2のオペコードがこの例において実行されるかどうかが判断される(1115)。第1のオペコードおよび第2のオペコードは、上記の表1に示されるような同じ論理関数を識別できるか、異なる論理関数を識別できる。第2のオペコードが実行される場合、第2の演算が実行される(1116)。ただ1つのオペコードが実行される場合、または段階1116において第2のオペコードが実行された後に、この例示的なINTK内のパラメータをチェックすることにより、データ分析段階が内部で実行されるかどうかが判断される(1117)。データ分析段階が実行される場合、この段階が実行され、結果がステータス制御レジスタへ書き込まれる(1118)。結果をステータス制御レジスタへ書き込んだ後に、または内部データ分析が保持されている場合、論理演算の結果は、ページバッファから、ホストによるアクセスのために利用可能であるキャッシュへ転送される(1119)。この時点で、図11Aの段階1107の手順が完了する(1120)。
【0081】
図12Aは、内部データ分析を利用しない、メモリアレイから読み取られるデータに対して実行される本明細書において説明されるCIMオペレーションのフローチャートである。このオペレーションは、例えば、当該関数を提供する図6および一実施形態に関して上で論じたINTKパラメータを用いて実行され得る。この例では、手順が始まる(1201)。メモリデバイス上での設定された論理演算を変更するかどうかが判断される(1202)。論理演算を変更することが所望される場合、ホストは、論理演算を変更するためにコマンドを発行する(1203)。論理演算の変更が実行されない場合、または段階1203において論理演算を変更した後に、選択されたオペレーションに対する入力として用いられる第1のデータセットを用いてページバッファを準備するために、コマンドが発行される(1204)。これは、図9に関して論じたようなオペレーションを伴い得る。代替的に、これは、ページバッファ内の記憶要素の1つのセットから、ページバッファ内の記憶要素の別のセットへのデータ(メモリアレイから以前に読み取られたページのデータなど)の移動を伴い得る。デバイス上のコントローラは、上で論じたセットアップデータに応答して、内部データ分析がこのオペレーションのために用いられない、と当該関数を含む実施形態において判断できる。ページバッファ内の第1のデータを準備した後に、ために、単一のコマンド、または代替的にコマンドシーケンスが実行されることで、ステートマシンまたは他の制御回路を用いた手順が実行されてメモリアレイからページバッファへの第2のデータセットが読み取られ、ページバッファにおいて論理演算が実行され、論理演算の結果データページがキャッシュへ転送される(1205)。
【0082】
図12Bは、例えば集積回路メモリ上のコマンドデコーダを用いた単一の外部コマンドのデコードに応答してステートマシンにより実行され得る図12Aの段階1205により表される手順の一例のフローチャートである。フローチャートは、図12Aの段階1205において始まる(1212)。コマンドに応答して、メモリデータがメモリアレイからページバッファへ読み取られる(1213)。第1の演算用に用いられるオペコードOP1が適用され、OP1を実行するためにページバッファ内の論理回路が用いられる(1214)。次に、パラメータOP#を見ることにより、第2のオペコードがこの例において実行されるかどうかが判断される(1215)。第1のオペコードおよび第2のオペコードは、上記の表1に示されるような同じ論理関数を識別できるか、異なる論理関数を識別できる。第2のオペコードが実行される場合、第2の演算が実行される(1216)。ただ1つのオペコードが実行される場合、または段階1216において第2のオペコードが実行された後に、論理演算の結果がページバッファからキャッシュへ転送される(1217)。次に、この例におけるパラメータINTKをチェックすることにより、内部分析が実行されるかどうかが判断される(1218)。キャッシュ内のデータを用いて内部分析が実行される場合、データ分析が実行され、結果がステータス制御レジスタへ書き込まれる(1219)。内部データ分析の完了後に、またはデータ分析が実行されない場合、手順は終了しており、結果データは、ホストによるアクセスのためにキャッシュ内で利用可能なままになる(1220)。
【0083】
図13は、図3に関して説明されたようなキャッシュへ連結されたデータ分析回路が存在する一実施形態を用いて、結果データページがキャッシュへ転送された後に実行される内部データ分析で、メモリアレイから読み取られるデータに対して実行される本明細書において説明されるCIMオペレーションのフローチャートである。このオペレーションは、例えば、図6に関して上で論じたINTKパラメータを用いて、当該関数を提供する一実施形態において実行され得る。この例では、手順が始まる(1301)。メモリデバイス上での設定された論理演算を変更するかどうかが判断される(1302)。論理演算を変更することが所望される場合、ホストは、論理演算を変更するためにコマンドを発行する(1303)。論理演算の変更が実行されない場合、または段階1303において論理演算を変更した後に、結果データページの分析のための判定基準を変更するかどうかが判断される(1304)。判定基準を変更することが所望される場合、判定基準を変更するためにコマンドが発行される(1305)。段階1304において判定基準の変更がなかった場合、または段階1305において変更が実行された後に、選択されたオペレーションに対する入力として用いられる第1のデータセットを用いてページバッファを準備するために、コマンドが発行される(1306)。これは、図9に関して論じたようなオペレーションを伴い得る。代替的に、これは、ページバッファ内の記憶要素の1つのセットからページバッファ内の記憶要素の別のセットへのデータ(メモリアレイから以前に読み取られたページのデータなど)の移動を伴い得る。ページバッファ内の第1のデータを準備した後に、単一のコマンド、または代替的に、コマンドシーケンスが実行されることで、ステートマシンまたは他の制御回路を用いた手順が実行されてメモリアレイからページバッファへの第2のデータセット(例えば、ページ、またはページのセグメント)が読み取られ、ページバッファ内のビット毎論理演算が実行され、論理演算の結果データページがキャッシュへ転送され、ビットカウント回路または他のデータ分析回路を用いてキャッシュ内の結果データページが分析される(1307)。一例において、段階1307により表される手順は、図12Aの段階1205の手順のようなものであってよく、図12Bを参照して上で説明したように進んでよい。ステータス制御レジスタの書き込みを可能にするのに十分なレイテンシの後、ホストは、次に、データ分析オペレーションの合格/不合格ステータスなど、データ分析オペレーションの結果を保持する1つまたは複数のレジスタを読み取るために、1つまたは複数のコマンドを発行できる(1308)。
【0084】
図14Aは、ホストが複数のページを順に分析する場合についての、図2および図3に関連して上で論じたページバッファまたはキャッシュ内の結果データページに対して実行される内部データ分析を用いた、メモリアレイから読み取られるデータに対して実行される本明細書において説明されるCIMオペレーションのフローチャートである。このオペレーションは、例えば、図6に関して上で論じたINTKパラメータを用いて、当該関数を提供する一実施形態において実行され得る。この例では、手順が始まる(1401)。メモリデバイス上での設定された論理演算を変更するかどうかが判断される(1402)。論理演算を変更することが所望される場合、ホストは、論理演算を変更するためにコマンドを発行する(1403)。論理演算の変更が実行されない場合、または段階1403において論理演算を変更した後に、結果データページの分析のための判定基準を変更するかどうかが判断される(1404)。判定基準を変更することが所望される場合、判定基準を変更するためにコマンドが発行される(1405)。段階1404において判定基準の変更がなかった場合、または段階1405において変更が実行された後に、選択されたオペレーションに対する入力として用いられる第1のデータセットを用いてページバッファを準備するために、コマンドが発行される(1406)。これは、図9に関して論じたようなオペレーションを伴い得る。代替的に、これは、ページバッファ内の記憶要素の1つのセットからページバッファ内の記憶要素の別のセットへのデータ(メモリアレイから以前に読み取られたページのデータなど)の移動を伴い得る。ページバッファのライン内の第1のデータを準備した後に、単一のコマンド、または代替的にコマンドシーケンスが実行されることで、ステートマシンまたは他の制御回路を用いた手順が実行されて、分析が一連のページに適用される。手順は、メモリアレイからページバッファのラインへのページ(例えば、ページ、またはページのセグメント)のデータを読み取り、読み取られたデータと、ページバッファの別のライン内またはキャッシュ内のデータとに対してページバッファ内のビット毎論理演算を実行し、論理演算の結果データページをキャッシュへ転送し、ビットカウント回路または他のデータ分析回路を用いてキャッシュ内の結果データページを分析して合格/不合格結果を生成すると共に本実施形態ではデータ分析の基準に合格していえるページのページアドレスを格納し、かつ、シーケンスの最後のページが分析されるまで各段階を通じてループするためのオペレーションを含み得る(1407)。合格ページのページアドレスは、メモリデバイス上の追加のステータス制御レジスタを用いて、手順の完了後、ホストによるアクセスのためにデバイスに格納され得る。ステータス制御レジスタの書き込みを可能にするのに十分なレイテンシの後、ホストは、次に、データ分析オペレーションの合格/不合格ステータスなど、データ分析オペレーションの結果を保持する1つまたは複数のレジスタを読み取るために、1つまたは複数のコマンドを発行できる(1408)。代替的に、合格/不合格ステータスは、段階1408のサポートにおいて、ページのシーケンス全体について維持され得る。全てのページが合格している場合、手順は完了する。不合格ページが存在する場合、ホストは、合格ページのページアドレスなど、どのページが合格しているか、および、どのページが不合格になっているかを示すデータを取得するために、コマンドを発行できる(1409)。
【0085】
図14Bは、データ分析回路がページバッファに接続されている場合についての、例えば集積回路メモリ上のコマンドデコーダを用いた単一の外部コマンドのデコードに応答してステートマシンにより実行され得る図14Aの段階1407により表される手順の一例のフローチャートである。フローチャートは、図14Aの段階1407において始まる(1412)。開始アドレスと、多数のアドレスのインジケーション(終了アドレスまたはシーケンス長パラメータなど)とを含むコマンドに応答して、メモリデータがメモリアレイからページバッファのラインへ読み取られる(1413)。第1の演算のために用いられるオペコードOP1が適用され、読み取られたデータと、ページバッファの別のライン内のデータとに対してOP1を実行し、演算結果をページバッファ内のラインに格納するために、ページバッファ内の論理回路が用いられる(1414)。次に、パラメータOP#を見ることにより、第2のオペコードがこの例において実行されるかどうかが判断される(1415)。第1のオペコードおよび第2のオペコードは、上記の表1に示されるような同じ論理関数を識別できるか、異なる論理関数を識別できる。第2のオペコードが実行される場合、ページバッファの対応するライン内のデータに対して第2の演算が実行される(1416)。ただ1つのオペコードが実行される場合、または段階1416において第2のオペコードが実行された後に、現在のデータについて、ページバッファ内の結果データを用いてデータ分析段階が実行される(1417)。データ分析段階の後に、合格データのアドレスがステータス制御レジスタに書き込まれる(1418)。次に、手順は、シーケンスのデータの最後のページが分析済みであるかどうかを判断する(1419)。そうでない場合、次のアドレスが生成され(1420)、次のアドレスからのデータが段階1413において読み取られ、手順は最後のページまで継続する。段階1419において最後のページが示されている場合、手順は終了する(1421)。
【0086】
図14Cは、データ分析回路がキャッシュに接続されている場合についての、例えば集積回路メモリ上のコマンドデコーダを用いた単一の外部コマンドのデコードに応答してステートマシンにより実行され得る図14Aの段階1407により表される手順の一例のフローチャートである。フローチャートは、図14Aの段階1407において始まる(1422)。開始アドレスと、多数のアドレスのインジケーション(終了アドレスまたはシーケンス長パラメータなど)とを含むコマンドに応答して、メモリデータがメモリアレイからページバッファ内のラインへ読み取られる(1423)。第1の演算のために用いられるオペコードOP1が適用され、読み取られたデータと、ページバッファの別のライン内のデータとに対してOP1を実行し、演算結果をページバッファ内のラインに格納するために、ページバッファ内の論理回路が用いられる(1424)。次に、パラメータOP#を見ることにより、第2のオペコードがこの例において実行されるかどうかが判断される(1425)。第1のオペコードおよび第2のオペコードは、上記の表1に示されるような同じ論理関数を識別できるか、異なる論理関数を識別できる。第2のオペコードが実行される場合、第2の演算が実行される(1426)。ただ1つのオペコードが実行される場合、または段階1426において第2のオペコードが実行された後に、結果データがキャッシュへ転送される(1427)。次に、現在のデータについて、キャッシュ内の結果データを用いてデータ分析段階が実行される(1428)。データ分析段階の後に、合格データのアドレスがステータス制御レジスタに書き込まれる(1429)。次に、手順は、シーケンスのデータの最後のページが分析済みであるかどうかを判断する(1430)。そうでない場合、次のアドレスが生成され(1431)、次のアドレスからのデータが段階1423において読み取られ、手順は最後のページまで継続する。段階1430において最後のページが示されている場合、手順は終了する(1432)。
【0087】
メモリホスト、メモリコントローラにより、またはメモリデバイスもしくはそのようなデバイスの組み合わせにより実行されるロジックを示す多数のフローチャートを本明細書において説明している。本明細書における全てのフローチャートでは、実現される機能に影響を及ぼすことなく、段階のうちの多くを組み合わせたり、並行して実行したり、異なる順序で実行したりできることが理解されるであろう。いくつかの場合において、読み手は、特定の他の変更も行われる場合に限り、段階を入れ替えても同じ結果が実現されることを理解するであろう。他の場合において、読み手は、特定の条件が満たされる場合に限り、段階を入れ替えても同じ結果が実現されることを理解するであろう。さらに、本明細書におけるフローチャートが、本発明の理解に関連する段階のみを示していること、および、他の機能を達成するための多数の追加の段階が、示されている段階の前、後および間に実行され得ることが理解されるであろう。
【0088】
本技術により、低電力設定に適用され得る、メモリ内の効率的な計算が可能になる。例えば、共通のオペレーションにおいて、ホストは、メモリから読み取られたページまたはメモリから読み取られたページに対する論理関数の結果における少なくとも閾値数のビット(例えば、95%または任意の他の基準)がホストからページバッファへ書き込まれたかメモリ内の別の位置から読み取られたページと一致していることをスコアリングまたは表示する「近接値」など、何らかの特徴を求めて、メモリに格納されたデータを検索し得る。ホストは、本明細書において説明された技術を用いて、データをメモリチップからコントローラチップなどの別のチップへ移動させることなく、検索または検索の一部を実行することで、IO遷移の消費電力を回避できる。
【0089】
本発明は、上で詳述した好ましい実施形態および例を参照することにより開示されているが、これらの例が限定的な意味ではなく例示的であることが意図されていることが理解されるべきである。修正および組み合わせが当業者により容易に行われることが想定されている。これらの修正および組み合わせは、本発明の趣旨および以下の特許請求の範囲内になる。
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11A
図11B
図12A
図12B
図13
図14A
図14B
図14C