(57)【要約】【課題】小さい回路によってリードアクセスの回数のカウントを実現すること。【解決手段】第１メモリは、複数の第１記憶領域を備える。第２メモリは、複数の第１アドレスが格納される。複数の第１アドレスのそれぞれは第１状態にある第１記憶領域である第２記憶領域のアドレス情報である。判定回路は、第１メモリへのリードアクセスの際に、複数の第１アドレスのそれぞれを第２メモリから読み出して読み出した第１アドレスである第２アドレスとリードアクセスのアクセス先の第１記憶領域である第３記憶領域を示すアドレス情報である第３アドレスとを比較することによって、第３記憶領域が第１状態にあるか否かを判定する。更新回路は、第３記憶領域が第１状態にあると判定された場合に第３記憶領域にかかるカウント値をインクリメントする。【選択図】図４
2020030873.tif 000002
【特許請求の範囲】
【請求項１】
複数の第１記憶領域を備える不揮発性の第１メモリと、
複数の第１アドレスが格納され、前記複数の第１アドレスのそれぞれは第１状態にある前記第１記憶領域である第２記憶領域のアドレス情報である、第２メモリと、前記第２記憶領域毎に第１カウント値が格納される第３メモリと、前記第１メモリへのリードアクセスの際に、前記複数の第１アドレスのそれぞれを前記第２メモリから読み出して前記読み出した第１アドレスである第２アドレスと前記リードアクセスのアクセス先の前記第１記憶領域である第３記憶領域を示すアドレス情報である第３アドレスとを比較することによって、前記第３記憶領域が前記第１状態にあるか否かを判定する判定回路と、前記第３記憶領域が前記第１状態にあると判定された場合に前記第３メモリに格納された前記第３記憶領域にかかる前記第１カウント値をインクリメントする更新回路と、を備える第１カウント回路と、
を備えるメモリシステム。
【請求項２】
前記複数の第１記憶領域のそれぞれは、ブロックであり、
前記第１状態は、データが書き込まれ得る領域を残した状態である、
請求項１に記載のメモリシステム。
【請求項３】
前記第３記憶領域にかかる前記第１カウント値に基づいて通知を出力する出力回路をさらに備える請求項１に記載のメモリシステム。
【請求項４】
前記第３記憶領域の内容を前記複数の第１記憶領域のうちの前記第３記憶領域と異なる第１記憶領域に転記するか否かを前記通知に基づいて判断する制御回路をさらに備える、
請求項３に記載のメモリシステム。
【請求項５】
同時に開始される２以上の数である第１の数のリードアクセスのそれぞれについて前記第３アドレスを発行する制御回路をさらに備え、
前記第１カウント回路の数は、前記第１の数と等しい、
請求項１に記載のメモリシステム。
【請求項６】
前記第１カウント回路が所定の処理を実行中に前記第１メモリへのリードアクセスが発生する毎に第２カウント値をインクリメントする第２カウント回路をさらに備える、
請求項１に記載のメモリシステム。
【請求項７】
前記更新回路によってインクリメントされた前記第１カウント値と、前記第２カウント値と、の合計である第３カウント値を演算し、前記第３カウント値に基づいて通知を出力する出力回路をさらに備える、
請求項６に記載のメモリシステム。
【請求項８】
前記第３記憶領域の内容を前記複数の第１記憶領域のうちの前記第３記憶領域と異なる第１記憶領域に転記するか否かを前記通知に基づいて判断する制御回路をさらに備える、
請求項７に記載のメモリシステム。
【請求項９】
前記判定回路が動作中であることは、前記第１カウント回路が前記所定の処理を実行中であることに該当し、
前記判定回路が動作中でなくかつ前記更新回路が動作中であることは、前記第１カウント回路が前記所定の処理を実行中であることに該当しない、
請求項６に記載のメモリシステム。
【請求項１０】
前記複数の第１記憶領域は、複数のグループに分類され、
前記第２メモリは、それぞれ前記複数のグループのいずれかに対応した複数の連続領域を備え、各連続領域には対応するグループに含まれる第２記憶領域をそれぞれ示す１以上の前記第１アドレスが格納され、
前記判定回路は、前記複数の連続領域のうちの前記第３記憶領域が属するグループに対応した連続領域を特定し、当該連続領域に格納された前記第１アドレスを当該連続領域の先頭から順番に読み出す、
請求項１に記載のメモリシステム。
【請求項１１】
各第２記憶領域に関し、前記第２メモリにおける前記第１アドレスの格納位置と前記第３メモリにおける前記第１カウント値の格納位置とが対応する、
請求項１に記載のメモリシステム。
【請求項１２】
前記第１記憶領域の状態を前記第１状態と異なる第２状態から前記第１状態に遷移させたり前記第１状態から前記第１状態と異なる第３状態に遷移させたりする制御回路をさらに備え、
前記制御回路は、前記第１記憶領域の状態を前記第２状態から前記第１状態に遷移させたり前記第１状態から前記第３状態に遷移させたりした際に前記第２メモリおよび前記第３メモリの内容を更新する、
請求項２に記載のメモリシステム。
【請求項１３】
前記第１メモリは、それぞれが１つの第１記憶領域より大きい複数の第４記憶領域を含み、
前記第２カウント回路、前記第２カウント値を第４記憶領域毎に管理する、
請求項７に記載のメモリシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本実施形態は、メモリシステムに関する。
【背景技術】
【０００２】
ＮＡＮＤ型のフラッシュメモリ（ＮＡＮＤメモリ）を搭載したメモリシステムがある。ＮＡＮＤメモリに対してリードが実行されると、リードされた位置の付近のメモリセルに格納されたデータの信頼性が低下する。この現象は、ＮＡＮＤメモリのリードディスターブとして知られている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】国際公開第２０１２／０８１１６５号
【特許文献２】特開２０１２−１４６１２９号公報
【特許文献３】米国特許出願公開第２０１４−００９８６００号明細書
【発明の概要】
【発明が解決しようとする課題】
【０００４】
データの信頼性が所定レベル以下となることを防止するために、リードアクセスの回数が所定値を越えた場合には、リード位置の周辺のデータを他の位置に退避する処理が実施される場合がある。
【０００５】
一つの実施形態は、小さい回路によってリードアクセスの回数をカウントすることができるメモリシステムを提供することを目的とする。
【課題を解決するための手段】
【０００６】
一つの実施形態によれば、メモリシステムは、第１メモリと、第２メモリと、第３メモリと、判定回路と、更新回路とを備える。第１メモリは、複数の第１記憶領域を備える。第２メモリは、複数の第１アドレスが格納される。複数の第１アドレスのそれぞれは第１状態にある第１記憶領域である第２記憶領域のアドレス情報である。第３メモリは、第２記憶領域毎に第１カウント値が格納される。判定回路は、第１メモリへのリードアクセスの際に、複数の第１アドレスのそれぞれを第２メモリから読み出して読み出した第１アドレスである第２アドレスとリードアクセスのアクセス先の第１記憶領域である第３記憶領域を示すアドレス情報である第３アドレスとを比較することによって、第３記憶領域が第１状態にあるか否かを判定する。更新回路は、第３記憶領域が第１状態にあると判定された場合に第３メモリに格納された第３記憶領域にかかる第１カウント値をインクリメントする。
【図面の簡単な説明】
【０００７】
【図１】図１は、第１の実施形態のメモリシステムの構成例を示す図である。
【図２】図２は、第１の実施形態のメモリチップの構成を示す模式的かつ例示的な図である。
【図３】図３は、第１の実施形態のブロックの状態遷移の一例を示す図である。
【図４】図４は、第１の実施形態のアクセスカウンタの構成例を示す図である。
【図５】図５は、第１の実施形態の同時にリードを開始する要素の数の具体例を説明するための図である。
【図６】図６は、第１の実施形態のブロックＲＡＭおよびカウントＲＡＭに格納される情報の一例を示す図である。
【図７】図７は、第１の実施形態のステートマシンの状態遷移の一例を説明するための図である。
【図８】図８は、第１の実施形態のステートマシンが制御する初期化信号およびブロック検索中信号の状態を含む各種信号の遷移の具体例を示すタイミングチャートである。
【図９】図９は、第１の実施形態のアクセスカウンタの動作の一例を説明するフローチャートである。
【図１０】図１０は、第２の実施形態のアクセスカウンタの動作の一例を説明するためのシーケンス図である。
【発明を実施するための形態】
【０００８】
以下に添付図面を参照して、実施形態にかかるメモリシステムを詳細に説明する。なお、これらの実施形態により本発明が限定されるものではない。
【０００９】
（第１の実施形態）
図１は、第１の実施形態のメモリシステムの構成例を示す図である。メモリシステム１は、ホスト２と所定の通信インタフェースで接続される。ホスト２は、例えばパーソナルコンピュータ、携帯情報端末、またはサーバなどが該当する。メモリシステム１は、ホスト２からアクセス要求（リード要求およびライト要求）を受け付けることができる。各アクセス要求は、アクセス先を示す論理アドレスを伴う。論理アドレスは、メモリシステム１がホスト２に提供する論理アドレス空間内の位置を示すアドレス情報である。メモリシステム１は、ライト要求とともに、書き込み対象のデータを受け付ける。
【００１０】
メモリシステム１は、メモリコントローラ１００と、ＮＡＮＤ型のフラッシュメモリ（ＮＡＮＤメモリ）２００と、を備える。なお、メモリシステム１は、ＮＡＮＤメモリ２００の代わりに任意の不揮発性メモリを具備することができる。例えば、メモリシステム１は、ＮＡＮＤメモリ２００の代わりにＮＯＲ型のフラッシュメモリを具備することができる。
【００１１】
ＮＡＮＤメモリ２００は、１以上のメモリチップ２０１を含む。ここでは一例として、ＮＡＮＤメモリ２００は４つのメモリチップ２０１を含む。各メモリチップ２０１は、チップ番号によって識別され得る。各メモリチップ２０１を区別する場合には、各メモリチップ２０１を、チップ番号０〜３を用いて、チップ＃０〜チップ＃３（Chip  #0  〜  Chip  #3）と表記することとする。
【００１２】
ＮＡＮＤメモリ２００は、メモリコントローラ１００と、１以上のチャネルで接続されている。ここでは一例として、ＮＡＮＤメモリ２００とメモリコントローラ１００とは、２つのチャネル（Ch  #0、Ch  #1）で接続される。
【００１３】
より具体的には、チップ＃０およびチップ＃１は、チャネル＃０（Ch  #0）に接続され、チップ＃２およびチップ＃３は、チャネル＃１（Ch  #1）に接続されている。メモリコントローラ１００は、チャネル＃０とチャネル＃１とを独立に制御することができる。
【００１４】
図２は、第１の実施形態のメモリチップ２０１の構成を示す模式的かつ例示的な図である。
【００１５】
本図に例示されるように、メモリチップ２０１は、２つのサブアレイ２０３に分割されたメモリセルアレイ２０２と、２つの周辺回路２０４とを備える。各サブアレイ２０３は、２つの周辺回路２０４のうちの１つと対を構成している。サブアレイ２０３と周辺回路２０４との対は、プレーン（Plane）と称される。各メモリチップ２０１内の各プレーンは、プレーン番号によって識別される。
【００１６】
ここでは、各メモリチップ２０１が備える２つのプレーンのうちの１つを、プレーン番号０を用いて、プレーン＃０（Plane  #0）と表記する。また、各メモリチップ２０１が備える２つのプレーンのうちの他のプレーンを、プレーン番号１を用いて、プレーン＃１（Plane  #1）と表記する。
【００１７】
各サブアレイ２０３は、複数のブロック２０５を備える。ブロック２０５は、イレースが実行される最小単位の記憶領域である。つまり、１つのブロック２０５に格納された全てのデータは、一括にイレースされる。なお、各ブロック２０５は、複数のページを備える。ページは、一括にデータのリードおよびデータのライトが可能な記憶領域である。
【００１８】
周辺回路２０４は、例えば、ロウデコーダ、カラムデコーダ、センスアンプ、ページバッファ等を含む。周辺回路２０４がプレーン毎に設けられていることにより、２つのプレーンのそれぞれは、互いに独立にリードを実行することが可能である。
【００１９】
第１の実施形態では、１つのメモリチップ２０１に含まれる２つのプレーンは同じタイミングでリードを開始することができる。このような、１つのメモリチップ２０１に含まれる複数のプレーンが同時にリードを開始する処理は、マルチプレーンリードと称され得る。マルチプレーンリードの場合、複数のプレーンのそれぞれのアクセス先の物理アドレスが、１つのリードコマンドによって指定され得る。
【００２０】
なお、メモリチップ２０１が備えるプレーンの数は２つに限定されない。
【００２１】
ここで、ブロックの状態遷移について説明する。図３は、第１の実施形態のブロックの状態遷移の一例を示す図である。ハッチングされた矢印は、ブロックの状態遷移を示しており、実線の矢印は、データの移動を示している。
【００２２】
ブロックの状態としては、少なくとも、オープンブロック、アクティブブロック、およびフリーブロックがある。１以上のアクティブブロックは、アクティブブロックプールを構成し、１以上のフリーブロックは、フリーブロックプールを構成する。
【００２３】
オープンブロックとは、データの書き込み途中のブロックである。即ち、オープンブロックは、データが書き込まれ得る領域を残した状態にあるブロックである。
【００２４】
アクティブブロックは、データの書き込みが終了したブロックのうちの、まだ再利用できないブロックである。データの書き込みが終了したブロックのうちの、有効なユーザデータが格納されているブロックは、アクティブブロックとして管理される。再利用とは、オープンブロックに遷移させることをいう。
【００２５】
フリーブロックは、有効なユーザデータが格納されていないブロックである。フリーブロックは、再利用可能なブロックである。
【００２６】
例えば、オープンブロックに１ブロック分のデータがライトされた後、そのオープンブロックはアクティブブロックに遷移する。アクティブブロックに格納されているライトデータの状態は、有効な状態と無効な状態とのうちの何れかである。
【００２７】
アクティブブロックにあるデータ（第１のデータと表記する）が格納されている状態でホスト２から第１のデータと同一の論理アドレスを指定して第２のデータが送られてきた場合、メモリコントローラ１００は、オープンブロックの空のページに第２のデータを書き込み、アクティブブロックに格納されている第１のデータを無効なデータとして管理する。
【００２８】
アクティブブロックは、ガベージコレクションによってフリーブロックに遷移する。ガベージコレクションは、アクティブブロックであるブロックに格納されている有効なデータを他のブロック（オープンブロック）に転記（transcribe）して、転記元のブロックに格納されている全てのデータを無効化する処理をいう。これによって、転記元のブロックは、アクティブブロックからフリーブロックに遷移する。
【００２９】
フリーブロックは、格納されているデータがイレースされた後、オープンブロックに遷移する。
【００３０】
なお、データが有効とは、そのデータが格納されている位置の物理アドレスが論物変換テーブル（後述する）によって何れかの論理アドレスに対応付けられていることをいう。データが無効とは、そのデータが格納されている位置の物理アドレスが論物変換テーブルによって何れの論理アドレスにも対応付けられていないことをいう。また、「空の」状態とは、ここでは、無効なデータおよび有効なデータの何れも記憶されていない状態をいう。即ち、空のページは、データの書き込みが可能な空き領域である。
【００３１】
図１に説明を戻す。メモリコントローラ１００は、ホストインタフェース（Ｉ／Ｆ）１０１、制御回路１０２、バッファ１０３、ＮＡＮＤインタフェース（Ｉ／Ｆ）１０４、およびアクセスカウンタ１０５を備えている。メモリコントローラ１００は、例えばＳｏＣ（System-On-a-Chip）として構成され得る。これらの構成要素は、不図示のクロック生成回路から供給されるクロックによって駆動される。なお、メモリコントローラ１００の各機能は、ハードウェア、ソフトウェア、またはそれらの組み合わせによって実現され得る。
【００３２】
バッファ１０３は、ホスト２とＮＡＮＤメモリ２００との間で転送中のデータや管理情報がバッファリングされるメモリである。管理情報は、例えば、論物変換テーブルを含む。
【００３３】
論物変換テーブルは、メモリシステム１がホスト２に提供する論理アドレス空間内の位置を示すアドレス情報（論理アドレス）とＮＡＮＤメモリ２００内の物理的な位置（メモリセルアレイ２０２内の位置）を示すアドレス情報（物理アドレス）とを対応付ける情報である。特定の論理アドレスに書き込みが集中した場合に、ＮＡＮＤメモリ２００内の特定の位置の疲弊が進行することを避けるために、論物変換テーブルを更新することによって論理アドレスと物理アドレスとの関連付けが動的に変更可能になっている。
【００３４】
なお、バッファ１０３を構成するメモリの種類は、特定の種類に限定されない。例えば、バッファ１０３は、ＤＲＡＭ（Dynamic  Random  Access  Memory）、ＳＲＡＭ（Static  Random  Access  Memory）、またはこれらの組み合わせによって構成される。
【００３５】
ホストインタフェース１０１は、ホスト２とメモリシステム１との間の通信インタフェースの制御を実行する。ホストインタフェース１０１は、制御回路１０２による制御の下で、ホスト２とバッファ１０３との間のデータ転送を実行する。ＮＡＮＤインタフェース１０４は、制御回路１０２による制御の下で、ＮＡＮＤメモリ２００とバッファ１０３との間のデータ転送を実行する。
【００３６】
制御回路１０２は、ＣＰＵ（Central  Processing  Unit）、ＦＰＧＡ（Field-Programmable  Gate  Array）、ＡＳＩＣ（Application  Specific  Integrated  Circuit）、などのハードウェア回路によって構成される。制御回路１０２は、ホストインタフェース１０１やＮＡＮＤインタフェース１０４を制御することによって、ホスト２とＮＡＮＤメモリ２００との間のデータ転送を実現するハードウェア回路である。
【００３７】
例えば、制御回路１０２は、バッファ１０３に格納されたデータをＮＡＮＤメモリ２００に書き込む際には、書き込み先の物理アドレスを指定して当該データのＮＡＮＤメモリ２００への書き込みをＮＡＮＤインタフェース１０４に指示する。ＮＡＮＤインタフェース１０４は、制御回路１０２からの指示に基づいてＮＡＮＤメモリ２００に対するライトアクセスを実行する。
【００３８】
また、制御回路１０２は、ＮＡＮＤメモリ２００からデータを読み出す際には、読み出し元の物理アドレスを指定してデータの読み出しをＮＡＮＤインタフェース１０４に指示を送る。ＮＡＮＤインタフェース１０４は、制御回路１０２からの指示に基づいてＮＡＮＤメモリ２００に対するリードアクセスを実行する。
【００３９】
このように、制御回路１０２は、ＮＡＮＤインタフェース１０４を制御してＮＡＮＤメモリ２００にアクセスを実行することができる。制御回路１０２は、ホスト２からのアクセス要求に応じてＮＡＮＤメモリ２００に対するアクセスを実行することができるし、内部処理、即ちホスト２からのアクセス要求とは関係なく実施される処理、の一環としてＮＡＮＤメモリ２００に対するアクセスを実行することができる。
【００４０】
内部処理は、一つのブロックからデータを読み出して、当該データを他のブロックに書き込む処理（転記処理）を含む。転記処理は、有効なデータのみを他のブロックに集める前述したガベージコレクションや、書き換え回数を均一化するためにデータの移動を行うウェアレベリングや、信頼性が低下したデータを書き直すリフレッシュなどを含む。
【００４１】
制御回路１０２は、ＮＡＮＤメモリ２００に対してリードアクセスを実行する際には、アクセス先を示す物理アドレスをアクセスカウンタ１０５に通知する。
【００４２】
アクセスカウンタ１０５は、特定のブロックに対するリードアクセスの回数をカウントする。
【００４３】
ＮＡＮＤメモリに対してリードが実行されると、リードされた位置の付近のメモリセルに格納されたデータの信頼性が低下する（リードディスターブ）。特に、オープンブロックにおいては、ある回数以上のリードアクセスが実行されると、そのオープンブロックの空いているワードラインのイレース状態が悪化する。イレース状態が悪化したワードラインに対してライトアクセスが行われると、ビットエラーレートが増大してしまう。
【００４４】
そこで、第１の実施形態では、リードアクセスの回数がオープンブロック毎にカウントされ、そのカウント値が、データの信頼性を回復させるリフレッシュを実行するか否かの判断に使用されることとした。
【００４５】
図４は、第１の実施形態のアクセスカウンタ１０５の構成例を示す図である。本図に例示されるように、アクセスカウンタ１０５は、複数の第１カウント回路１０と、第２カウント回路２０と、割り込み回路３０とを備える。
【００４６】
アクセスカウンタ１０５が備える第１カウント回路１０の数は、同時にリードを開始する要素の数の最大値に等しい。
【００４７】
図５は、第１の実施形態の同時にリードを開始する要素の数の具体例を説明するための図である。例えば、制御回路１０２は、処理３００ａ、処理３００ｂ、処理３００ｃ、処理３００ｄをシリアルに実行することができる。処理３００ａ、処理３００ｂ、処理３００ｃ、処理３００ｄのそれぞれは、リードアクセスを指示する処理である。
【００４８】
処理３００ａでは、制御回路１０２は、チャネル＃０に接続されたチップ＃０へのリードアクセスを決定して、時刻ｔ１においてそのリードアクセスをＮＡＮＤインタフェース１０４に対して指示する。ＮＡＮＤインタフェース１０４は、当該指示に応じて、チップ＃０へのリードコマンドの送信を実行する（処理３０１ａ）。チップ＃０では、当該リードコマンドに応じてメモリセルアレイ２０２からのデータの読み出しが実行される（処理３０２ａ）。
【００４９】
処理３００ｂでは、制御回路１０２は、チャネル＃１に接続されたチップ＃２へのリードアクセスを決定して、時刻ｔ２においてそのリードアクセスをＮＡＮＤインタフェース１０４に対して指示する。ＮＡＮＤインタフェース１０４は、当該指示に応じて、チップ＃２へのリードコマンドの送信を実行する（処理３０１ｂ）。チップ＃２では、当該リードコマンドに応じてメモリセルアレイ２０２からのデータの読み出しが実行される（処理３０２ｂ）。
【００５０】
処理３００ｃでは、制御回路１０２は、チャネル＃０に接続されたチップ＃１へのリードアクセスを決定して、時刻ｔ３においてそのリードアクセスをＮＡＮＤインタフェース１０４に対して指示する。ＮＡＮＤインタフェース１０４は、当該指示に応じて、チップ＃１へのリードコマンドの送信を実行する（処理３０１ｃ）。チップ＃１では、当該リードコマンドに応じてメモリセルアレイ２０２からのデータの読み出しが実行される（処理３０２ｃ）。
【００５１】
処理３００ｄでは、制御回路１０２は、チャネル＃１に接続されたチップ＃３へのリードアクセスを決定して、時刻ｔ４においてそのリードアクセスをＮＡＮＤインタフェース１０４に対して指示する。ＮＡＮＤインタフェース１０４は、当該指示に応じて、チップ＃３へのリードコマンドの送信を実行する（処理３０１ｄ）。チップ＃３では、当該リードコマンドに応じてメモリセルアレイ２０２からのデータの読み出しが実行される（処理３０２ｄ）。
【００５２】
ここで処理３０１ａ〜３０１ｄで送信されるそれぞれのリードコマンドは、マルチプレーンリードのリードコマンドであってもよい。マルチプレーンリードのリードコマンドが送信された場合、対応するメモリチップ２０１では、２つのプレーンにおいて同時にリードが実行される。
【００５３】
このように、図５の例によれば、各メモリチップ２０１へのリードコマンドは、それぞれ異なるタイミングで送信される。そして、各リードコマンドは、マルチプレーンリードであってもよい。したがって、図５の場合、１つのメモリチップ２０１に含まれる２つのプレーンが、同時にリードを開始できる要素に該当する。つまり、同時にリードを開始できる要素の数は、「２」となる。
【００５４】
また、１つのメモリチップ２０１が有するプレーンの数をＮ個（但しＮは２以上の自然数）とした場合、マルチプレーンリードによって最大でＮ個のプレーンが同時にリードを開始することができる。つまり、その場合は、１つのメモリチップ２０１に含まれるＮ個のプレーンが、同時にリードを開始できる要素に該当する。つまり、同時にリードを開始できる要素の数は「Ｎ」となる。
【００５５】
さらに、仮に複数のメモリチップ２０１に同時にリードコマンドを送信可能である場合、同時にリードを開始できる要素の数はさらに増える。例えば、メモリコントローラ１００が、チャネル＃０に接続された１つのメモリチップ２０１とチャネル＃１に接続された１つのメモリチップ２０１とに同時にリードコマンドを送信することが可能に構成された場合、異なるチャネルに接続された２つのメモリチップ２０１分の合計４つのプレーンが、同時にリードを開始できる要素に該当する。つまり、同時にリードを開始できる要素の数は、「４」となる。
【００５６】
制御回路１０２は、同時にリードを開始できる要素のそれぞれのアクセス先（リードコマンドのアクセス先）を示す物理アドレスを発行して、発行した複数の物理アドレスをアクセスカウンタ１０５に通知する。アクセスカウンタ１０５では、複数の物理アドレスが同時に通知された場合には、各第１カウント回路１０が当該複数の物理アドレスのうちの１つに対応して動作する。
【００５７】
図５の例では、同時にリードを開始することができる要素は、各メモリチップ２０１の２つのプレーンである。よって、図４に例示されるように、アクセスカウンタ１０５には、２つのプレーンのうちのそれぞれ異なるプレーンをアクセス先とした物理アドレスに対応するために、２つの第１カウント回路１０が設けられる。
【００５８】
２つの第１カウント回路１０のうちの１つ（第１カウント回路１０−０）は、チップ＃０〜チップ＃３のプレーン＃０に対するリードアクセスをカウントする。２つの第１カウント回路１０のうちの他（第１カウント回路１０−１）は、チップ＃０〜チップ＃３のプレーン＃１に対するリードアクセスをカウントする。第１カウント回路１０−０および第１カウント回路１０−１のハードウェア構成は、互いに等しいため、ここでは主として第１カウント回路１０−０のハードウェア構成について説明する。
【００５９】
第１カウント回路１０−０は、判定回路４００、ブロックＲＡＭ（BLK_RAM）４２０、カウントＲＡＭ（COUNT_RAM）４３０、更新回路４４０、およびステートマシン（Finite  State  Machine  :  FSM）４５０を備える。
【００６０】
ブロックＲＡＭ４２０は、それぞれオープンブロックを示す複数の物理アドレスが格納されるメモリである。カウントＲＡＭ４３０は、オープンブロック毎にリードアクセスのカウント値が格納されるメモリである。以降、特に断りが無い限り、オープンブロック毎のリードアクセスのカウント値を、単に、カウント値と表記する。なお、ブロックＲＡＭ４２０およびカウントＲＡＭ４３０のそれぞれは、任意の種類のメモリによって構成され得る。例えば、ブロックＲＡＭ４２０およびカウントＲＡＭ４３０のそれぞれは、ＤＲＡＭ、ＳＲＡＭ、フリップフロップ、またはこれらの組み合わせによって構成される。
【００６１】
図６は、第１の実施形態のブロックＲＡＭ４２０およびカウントＲＡＭ４３０に格納される情報の一例を示す図である。ブロックＲＡＭ４２０は、それぞれ１つの物理アドレスが格納される複数のエントリを備えている。ブロックＲＡＭ４２０が備えるそれぞれのエントリは、ブロックＲＡＭ４２０の先頭から順番に昇順にナンバリングされたエントリ番号（entry番号）によって識別される。
【００６２】
同様に、カウントＲＡＭ４３０は、それぞれ１つのカウント値が格納される複数のエントリを備えている。カウントＲＡＭ４３０が備えるそれぞれのエントリは、カウントＲＡＭ４３０の先頭から順番に昇順にナンバリングされたエントリ番号によって識別される。
【００６３】
以降、各ＲＡＭ４２０，４３０のエントリ番号ｉのエントリを、エントリ＃ｉと表記する場合がある。
【００６４】
チップ＃０〜チップ＃３のプレーン＃０に含まれるオープンブロックを示す物理アドレスが、メモリチップ２０１毎にグループ化され、同じグループに属する全ての物理アドレスがブロックＲＡＭ４２０の１つの連続領域に格納されている。
【００６５】
例えば、チップ＃０のプレーン＃０に含まれる４つのオープンブロックを示す４つの物理アドレス＿０〜物理アドレス＿３は、ブロックＲＡＭ４２０の４つの連続したエントリ（エントリ＃０〜エントリ＃３）からなる連続領域に格納されている。また、チップ＃１のプレーン＃０に含まれる３つのオープンブロックを示す３つの物理アドレス＿４〜物理アドエス＿６は、ブロックＲＡＭ４２０の３つの連続したエントリ（エントリ＃４〜エントリ＃６）からなる連続領域に格納されている。
【００６６】
つまり、ブロックＲＡＭ４２０は、それぞれ異なるメモリチップ２０１の１以上の物理アドレスが格納される４つの連続領域を備えている。
【００６７】
カウントＲＡＭ４３０の各エントリには、そのエントリとエントリ番号が同じブロックＲＡＭ４２０のエントリに格納された物理アドレスが示すオープンブロックにかかるカウント値が格納される。つまり、ブロックＲＡＭ４２０のエントリ＃ｉに格納された物理アドレスが示すオープンブロックのカウント値は、カウントＲＡＭ４３０のエントリ＃ｉに格納される。
【００６８】
再び図４に説明を戻す。判定回路４００は、ブロックＲＡＭ４２０に格納された１以上の物理アドレスのそれぞれを逐次読み出して、ブロックＲＡＭ４２０から読み出した物理アドレスと制御回路１０２から受信したリードアクセスのアクセス先を示す物理アドレスとを比較することによって、リードアクセスのアクセス先がオープンブロックであるか否かを判定する。つまり、判定回路４００は、ブロックＲＡＭ４２０に格納された１以上の物理アドレスから、リードアクセスのアクセス先を示す物理アドレスと同一の物理アドレスを検索する。
【００６９】
判定回路４００は、上述した動作を実現するために、第１レジスタ群４０１と、第１マルチプレクサ４０２と、第１加算器４０３と、第２マルチプレクサ４０４と、第１レジスタ４０５と、を備える。
【００７０】
第１レジスタ群４０１は、それぞれが第１マルチプレクサ４０２のそれぞれ異なる入力端子に接続された複数のエントリを備えている。第１レジスタ群４０１の複数のエントリのそれぞれには、ブロックＲＡＭ４２０およびカウントＲＡＭ４３０のそれぞれ異なる連続領域の先頭エントリを示すエントリ番号が記録されている。
【００７１】
ここでは、チップ＃０のプレーン＃０に対応した連続領域の先頭エントリのエントリ番号と、チップ＃１のプレーン＃０に対応した連続領域の先頭エントリのエントリ番号と、チップ＃２のプレーン＃０に対応した連続領域の先頭エントリのエントリ番号と、チップ＃３のプレーン＃０に対応した連続領域の先頭エントリのエントリ番号と、が第１レジスタ群４０１に格納されている。
【００７２】
第１マルチプレクサ４０２は、制御回路１０２から通知された物理アドレスが選択信号として入力される。ここで、物理アドレスは、チップ番号とプレーン番号との両方を含んでいることとする。例えば、物理アドレスの一部は、チップ番号を示し、当該物理アドレスの他の一部は、プレーン番号を示す。第１マルチプレクサ４０２は、選択信号として入力された物理アドレスに含まれるチップ番号とプレーン番号とに基づいて、対応する連続領域の先頭エントリのエントリ番号を出力する。
【００７３】
第１マルチプレクサ４０２の出力端子は、第２マルチプレクサ４０４が備える２つの入力端子のうちの１つに接続されている。第２マルチプレクサ４０４の出力端子は、第１レジスタ４０５に接続されている。第１レジスタ４０５に格納された値は、第１加算器４０３に入力される。第１加算器４０３は、入力された値に１を加算する。第１加算器４０３の出力は、第２マルチプレクサ４０４が備える２つの入力端子のうちの他の１つに入力される。
【００７４】
第２マルチプレクサ４０４は、初期化信号が選択信号として入力される。初期化信号は、ステートマシン４５０によって操作される。初期化信号が活性化された状態である場合には、第２マルチプレクサ４０４は、第１マルチプレクサ４０２が出力したエントリ番号を第１レジスタ４０５に格納する。初期化信号が活性化されていない状態である場合には、第１レジスタ４０５に格納された内容を、第１加算器４０３が出力する１が加算されたエントリ番号で上書きする。なお、第１レジスタ４０５の内容の上書きのタイミングの詳細は後述される。
【００７５】
第１レジスタ４０５に格納されたエントリ番号は、ブロックＲＡＭ４２０およびカウントＲＡＭ４３０のリード対象のエントリを示す。第１レジスタ４０５に格納されたエントリ番号は、ブロックＲＡＭ４２０のアドレス入力端子およびカウントＲＡＭ４３０のアドレス入力端子に入力される。以降、第１レジスタ４０５に格納されたエントリ番号を、リードエントリ（ＲｅａｄＥｎｔｒｙ）と表記することがある。
【００７６】
判定回路４００は、さらに、第２レジスタ群４０６と、第３マルチプレクサ４０７と、第２レジスタ４０８と、第２加算器４０９と、第４マルチプレクサ４１０と、第３レジスタ４１１と、第１比較器４１２と、を備える。
【００７７】
第２レジスタ群４０６は、それぞれが第３マルチプレクサ４０７のそれぞれ異なる入力端子に接続された複数のエントリを備えている。第２レジスタ群４０６の複数のエントリのそれぞれには、ブロックＲＡＭ４２０およびカウントＲＡＭ４３０のそれぞれ異なる連続領域を構成するエントリの数が記録されている。
【００７８】
ここでは、チップ＃０のプレーン＃０に対応した連続領域を構成するエントリの数と、チップ＃１のプレーン＃０に対応した連続領域を構成するエントリの数と、チップ＃２のプレーン＃０に対応した連続領域を構成するエントリの数と、チップ＃３のプレーン＃０に対応した連続領域を構成するエントリの数と、が第２レジスタ群４０６に格納されている。
【００７９】
第３マルチプレクサ４０７は、第１マルチプレクサ４０２と同様に、制御回路１０２から通知された物理アドレスが選択信号として入力される。第３マルチプレクサ４０７は、選択信号として入力された物理アドレスに含まれるチップ番号とプレーン番号とに基づいて、そのチップ番号とプレーン番号とによって特定されるメモリチップ２０１のプレーンに対応する連続領域を構成するエントリの数を出力する。
【００８０】
第２レジスタ４０８には、「０」が格納されている。第２レジスタ４０８の内容は、第４マルチプレクサ４１０が備える２つの入力端子のうちの１つに接続されている。第４マルチプレクサ４１０の出力は、第３レジスタ４１１に接続されている。第３レジスタ４１１に格納された値は、第２加算器４０９に入力される。第２加算器４０９は、入力された値に１を加算する。第２加算器４０９の出力は、第４マルチプレクサ４１０が備える２つの入力端子のうちの他の１つに入力される。
【００８１】
第４マルチプレクサ４１０は、初期化信号が選択信号として入力される。初期化信号が活性化された状態である場合には、第４マルチプレクサ４１０は、第２レジスタ４０８の内容を第３レジスタ４１１に格納する。初期化信号が活性化されていない状態である場合には、第３レジスタ４１１の内容を、第３レジスタ４１１から出力された内容で上書きする。なお、第３レジスタ４１１の内容の上書きのタイミングの詳細については後述される。
【００８２】
第３レジスタ４１１の内容は、第１レジスタ４０５に先頭エントリのエントリ番号がリードエントリとして格納されてからリードエントリがインクリメントされた回数を示す。以降、第３レジスタ４１１に格納された値を、エントリカウント（ＥｎｔｒｙＣｎｔ）と表記することがある。
【００８３】
第３レジスタ４１１の内容、即ちエントリカウントは、第１比較器４１２が備える２つの入力端子のうちの１つに入力される。また、第３マルチプレクサ４０７の出力端子は、第１比較器４１２が備える２つの入力端子のうちの他の１つに接続されている。
【００８４】
第１比較器４１２は、第３レジスタ４１１から入力されたエントリカウントと、第３マルチプレクサ４０７から入力された、連続領域を構成するエントリの数とを比較する。第１比較器４１２は、エントリカウントが連続領域を構成するエントリの数より小さい場合に、ブロックＲＡＭ４２０のリードイネーブル信号（ＲｅａｄＥｎ）を活性化された状態に維持する。第１比較器４１２は、エントリカウントが連続領域を構成するエントリの数以上である場合に、ブロックＲＡＭ４２０のリードイネーブル信号（ＲｅａｄＥｎ）を活性化されていない状態に維持する。
【００８５】
判定回路４００は、さらに、第２比較器４１３を備える。ブロックＲＡＭ４２０の出力は、第２比較器４１３が備える２つの入力端子のうちの１つに入力される。また、制御回路１０２から供給された、リードアクセスのアクセス先を示す物理アドレスは、第２比較器４１３が備える２つの入力端子のうちの他の１つに入力される。
【００８６】
ブロックＲＡＭ４２０は、自身のリードイネーブル信号（ＲｅａｄＥｎ）が活性化された状態である場合に、アドレス入力端子から入力されたエントリ番号が示すエントリに格納された値、即ち物理アドレスを出力する。第２比較器４１３は、ブロックＲＡＭ４２０から出力された物理アドレスと、制御回路１０２から通知された物理アドレスと、を比較する。
【００８７】
双方の物理アドレスが一致する場合、第２比較器４１３は、カウントＲＡＭ４３０のリードイネーブル信号（ＲｅａｄＥｎ）を活性化された状態に維持する。双方の物理アドレスが異なっている場合、第２比較器４１３は、カウントＲＡＭ４３０のリードイネーブル信号（ＲｅａｄＥｎ）を活性化されていない状態に維持する。
【００８８】
ブロックＲＡＭ４２０から出力された物理アドレスがリードアクセスのアクセス先の物理アドレスと一致したとき、第２比較器４１３によってカウントＲＡＭ４３０のリードイネーブル信号（ＲｅａｄＥｎ）が活性化され、カウントＲＡＭ４３０は、その物理アドレスが示すオープンブロックにかかるカウント値を出力する。
【００８９】
判定回路４００は、上記のように構成されていることから、次のように動作することができる。
【００９０】
即ち、判定回路４００は、制御回路１０２から物理アドレスが通知された場合、第１マルチプレクサ４０２および第３マルチプレクサ４０７によって、当該物理アドレスが示す位置を含むメモリチップ２０１のプレーンに対応した連続領域の先頭エントリのエントリ番号と、当該連続領域を構成するエントリの数と、を選択する。
【００９１】
これによって、判定回路４００は、ブロックＲＡＭ４２０が備える複数のエントリのうちの、検索すべき連続領域を特定する。第１マルチプレクサ４０２から出力されたエントリ番号は、検索すべき連続領域の先頭エントリである。第３マルチプレクサ４０７から出力されたエントリの数は、検索すべき連続領域のエントリの数である。
【００９２】
制御回路１０２から物理アドレスが通知された際、後述するステートマシン４５０によって、初期化信号が活性化される。これによって、検索すべき連続領域の先頭エントリのエントリ番号は、リードエントリとして第１レジスタ４０５に格納され、第３レジスタ４１１には、ゼロがエントリカウントとして格納される。
【００９３】
エントリカウントが検索すべき連続領域のエントリの数より少ない場合、第１比較器４１２によってブロックＲＡＭ４２０のリードイネーブル信号が活性化された状態に維持され、これによって、ブロックＲＡＭ４２０は、読み出し可能な状態に維持される。その場合において、ブロックＲＡＭ４２０のリードエントリが示すエントリから物理アドレスが読み出され、読み出された物理アドレスは第２比較器４１３によって制御回路１０２から通知された物理アドレスと比較される。
【００９４】
検索すべき連続領域の先頭エントリのエントリ番号がリードエントリとして格納され、ゼロがエントリカウントとして格納された後、初期化信号は、非活性化される。すると、第２マルチプレクサ４０４は、第１加算器４０３が接続された入力端子を選択し、第４マルチプレクサ４１０は、第２加算器４０９が接続された入力端子を選択する。
【００９５】
その後、リードエントリおよびエントリカウントがそれぞれインクリメントされる。インクリメント後、依然としてカウントエントリが連続領域を構成するエントリの数より少ない場合、ブロックＲＡＭ４２０のリードエントリが示すエントリ、即ち前回に読み出しが行われたエントリに後続するエントリ、から物理アドレスが読み出され、読み出された物理アドレスは、前回同様、第２比較器４１３によって制御回路１０２から通知された物理アドレスと比較される。
【００９６】
このように、判定回路４００は、検索すべき連続領域の先頭から順番に物理アドレスを読み出して、読み出された物理アドレスと制御回路１０２から通知された物理アドレスとを比較する。判定回路４００は、検索すべき連続領域から読み出された物理アドレスが制御回路１０２から通知された物理アドレスと一致するか、または読み出し位置が検索すべき連続領域の末尾エントリに至るまで、リードエントリをインクリメントしながら物理アドレスを読み出す処理を繰り返すことができる。即ち、判定回路４００は、制御回路１０２から通知された物理アドレスが示す位置を含むメモリチップ２０１のプレーンに対応した連続領域から物理アドレスを逐次読み出すことで、当該連続領域の範囲から、制御回路１０２から通知された物理アドレスと同一の物理アドレスを検索する。
【００９７】
連続領域から読み出された物理アドレスが制御回路１０２から通知された物理アドレスと一致することは、制御回路１０２から通知された物理アドレスが示す位置を含むブロック、換言するとリードアクセスのアクセス先のブロックがオープンブロックであることが判定されたことを意味する。
【００９８】
判定回路４００は、連続領域から読み出された物理アドレスが制御回路１０２から通知された物理アドレスと一致した場合、第２比較器４１３によって、カウントＲＡＭ４３０のリードイネーブル信号を活性化する。すると、カウントＲＡＭ４３０は、そのときアドレス入力端子に入力されたリードエントリに格納されているカウント値を出力する。カウントＲＡＭ４３０から出力されたカウント値は、オープンブロックに該当すると判定されたリードアクセスのアクセス先のブロックに関するカウント値に該当する。
【００９９】
更新回路４４０は、カウントＲＡＭ４３０から出力されたカウント値を取得して、取得したカウント値をインクリメントし（即ち１だけ加算し）、インクリメント後のカウント値をカウントＲＡＭ４３０に書き戻す。即ち、更新回路４４０は、インクリメント前のカウント値を、インクリメント後のカウント値で上書きする。
【０１００】
なお、カウントＲＡＭ４３０は、ライトイネーブル信号（ＷｒｉｔｅＥｎ）が入力されるように構成されてもよい。例えば、カウントＲＡＭ４３０のライトイネーブル信号は、カウントＲＡＭ４３０のリードイネーブル信号が活性化されたことに応じて活性化され、ライトイネーブル信号が活性化されている間に更新回路４４０はインクリメント後のカウント値をカウントＲＡＭ４３０に書き戻してもよい。
【０１０１】
更新回路４４０は、さらに、インクリメント後のカウント値を割り込み回路３０に出力する。
【０１０２】
ステートマシン４５０は、初期化信号を制御したり、ブロック（ＢＬＫ）検索中信号を制御したりする。ブロック検索中信号は、第１カウント回路１０が所定の処理を実行中であるか否かを示す信号である。ステートマシン４５０の詳細については後ほど詳細に説明する。
【０１０３】
第１カウント回路１０−０は、上記の構成によって、リードアクセスのアクセス先がプレーン＃０に含まれるオープンブロックである場合に、カウントＲＡＭ４３０に格納されたそのオープンブロックに関するカウント値をインクリメントするとともにインクリメント後のカウント値を出力することができる。
【０１０４】
第１カウント回路１０−１は、第１カウント回路１０−０と同様のハードウェア構成を備えている。但し、第１カウント回路１０−１は、プレーン＃１に対応した構成を有する。
【０１０５】
具体的には、第１カウント回路１０−１では、ブロックＲＡＭ４２０には、チップ＃０〜チップ＃３のプレーン＃１に含まれるオープンブロックを示す物理アドレスが格納され、カウントＲＡＭ４３０には、チップ＃０〜チップ＃３のプレーン＃１に含まれるオープンブロックに関するカウント値が格納される。また、第１カウント回路１０−１の第１レジスタ群４０１には、第１カウント回路１０−１のブロックＲＡＭ４２０およびカウントＲＡＭ４３０が備える連続領域毎に先頭エントリのエントリ番号が格納される。また、第１カウント回路１０−１の第２レジスタ群４０６には、第１カウント回路１０−１のブロックＲＡＭ４２０およびカウントＲＡＭ４３０が備える連続領域毎に連続領域を構成するエントリの数が格納される。その他の構成は、第１カウント回路１０−０と同様である。
【０１０６】
第１カウント回路１０−１は、リードアクセスのアクセス先がプレーン＃１に含まれるオープンブロックである場合に、第１カウント回路１０−１のカウントＲＡＭ４３０に格納されたそのオープンブロックに関するカウント値をインクリメントするとともにインクリメント後のカウント値を出力することができる。
【０１０７】
第２カウント回路２０は、第１カウント回路１０とは別にカウント値が格納される第３レジスタ群４６１を備えており、第１カウント回路１０が所定の処理を実行中である間に制御回路１０２から次の物理アドレスが通知された場合、第３レジスタ群４６１に格納されたカウント値をインクリメントする。即ち、第２カウント回路２０は、第１カウント回路１０がカウント出来なかったリードアクセスの回数をカウントする回路である。
【０１０８】
具体的には、第２カウント回路２０は、デマルチプレクサ４６０と、第３レジスタ群４６１と、第５マルチプレクサ４６２と、第３加算器４６３と、第６マルチプレクサ４６４とを備える。
【０１０９】
第３レジスタ群４６１は、それぞれがデマルチプレクサ４６０のそれぞれ異なる出力端子と第５マルチプレクサ４６２のそれぞれ異なる入力端子とに接続された複数のエントリを備えている。第１カウント回路１０がカウント出来なかったリードアクセスの回数が、各メモリチップ２０１のプレーン毎に格納されている。第２カウント回路２０によってカウントされた、第１カウント回路１０がカウント出来なかったリードアクセスの回数を、ドロップカウント（ＤｒｏｐＣｎｔ）と表記する。
【０１１０】
デマルチプレクサ４６０および第５マルチプレクサ４６２には、制御回路１０２から通知された物理アドレスが選択信号として入力される。デマルチプレクサ４６０および第５マルチプレクサ４６２は、選択信号として入力された物理アドレスに含まれるチップ番号とプレーン番号とに対応するエントリを選択する。これによって、リードアクセスのアクセス先のメモリチップ２０１のプレーンに関するドロップカウントが格納されたエントリが入出力可能になる。
【０１１１】
第５マルチプレクサ４６２によって選択されたエントリに格納されている値は、第５マルチプレクサ４６２から出力される。第５マルチプレクサ４６２の出力は、第６マルチプレクサ４６４が備える２つの入力端子のうちの１つに入力される。
【０１１２】
また、第５マルチプレクサ４６２の出力は、第３加算器４６３にも入力される。第３加算器４６３は、入力された値に１を加算する。第３加算器４６３の出力は、第６マルチプレクサ４６４が備える２つの入力端子のうちの他の１つに入力される。
【０１１３】
第６マルチプレクサ４６４は、ブロック検索中信号が選択信号として入力される。ブロック検索中信号は、第１カウント回路１０が所定の処理を実行中であるか否かを示す信号であり、ステートマシン４５０によって制御される。ブロック検索中信号が活性化された状態である場合、即ち第１カウント回路１０が所定の処理を実行中である場合、第６マルチプレクサ４６４は、第３加算器４６３が接続された入力端子を選択する。
【０１１４】
すると、リードアクセスのアクセス先のメモリチップ２０１のプレーンに関するドロップカウントは、第５マルチプレクサ４６２を介して第３加算器４６３に入力され、第３加算器４６３によって１が加算され、加算後のドロップカウントが第６マルチプレクサ４６４およびデマルチプレクサ４６０を介して第３レジスタ群４６１に上書きされる。
【０１１５】
ブロック検索中信号が活性化されていない状態である場合、即ち第１カウント回路１０が所定の処理を実行中でない場合、リードアクセスのアクセス先のメモリチップ２０１のプレーンに関するドロップカウントは、第３加算器４６３を経由せずに第６マルチプレクサ４６４に入力され、第６マルチプレクサ４６４の出力端子から出力される。その場合、第３レジスタ群４６１のそれぞれのエントリに格納されたドロップカウントは変化しない。
【０１１６】
割り込み回路３０は、第１カウント回路１０から出力されたカウント値と第２カウント回路２０から出力されたドロップカウントとの合計値を演算し、演算された合計値と所定のしきい値との比較に基づいて割り込み信号ＩＮＴを出力する。
【０１１７】
より具体的には、割り込み回路３０は、第４加算器４７０と、第４レジスタ４７１と、第３比較器４７２と、を備える。
【０１１８】
第４加算器４７０は、第１カウント回路１０が備える更新回路４４０から出力されたインクリメント後のカウント値と、第２カウント回路２０が備える第６マルチプレクサ４６４から出力されたドロップカウントと、を加算する。第４加算器４７０の出力は、第３比較器４７２が備える２つの入力端子のうちの１つに入力される。
【０１１９】
第４レジスタ４７１は、割り込み信号を出力するか否かの判定のためのしきい値が格納されている。第４レジスタ４７１は、第３比較器４７２が備える２つの入力端子のうちの他の１つに接続されている。
【０１２０】
第３比較器４７２は、第４加算器４７０が演算した２つのカウント値の合計値と、第４レジスタ４７１に格納されたしきい値と、を比較する。第３比較器４７２は、第４加算器４７０から入力された合計値が当該しきい値より大きい場合には、割り込み信号ＩＮＴを出力する。第３比較器４７２は、第４加算器４７０から入力された合計値が当該しきい値を超えない場合には、割り込み信号ＩＮＴを出力しない。
【０１２１】
第３比較器４７２が出力する割り込み信号ＩＮＴは、制御回路１０２に入力される。
【０１２２】
なお、割り込み回路３０は、第１カウント回路１０から出力されたカウント値に基づいて通知を出力する出力回路の一例である。また、割り込み信号ＩＮＴは、当該通知の一例である。割り込み回路３０は、割り込み信号ＩＮＴと異なる方法で通知を出力し得る。
【０１２３】
本図の例では、１つの第４加算器４７０と１つの第３比較器４７２が図示されているが、第４加算器４７０および第３比較器４７２は、第１カウント回路１０毎に設けられ得る。各第４加算器４７０は、１つの第１カウント回路１０に接続されており、当該第１カウント回路１０から出力されたカウント値と第２カウント回路２０から出力されたドロップカウントとを加算する。各第３比較器４７２は、１つの第４加算器４７０に接続されており、当該加算器４７０が演算した合計値が第４レジスタ４７１に格納されたしきい値を超えた場合に、割り込み信号ＩＮＴを出力する。これによって、割り込み信号ＩＮＴの出力の判断を第１カウント回路１０毎に実施することが可能になっている。
【０１２４】
制御回路１０２は、ＮＡＮＤメモリ２００に対するアクセスの進捗を把握している。制御回路１０２は、ＮＡＮＤメモリ２００にリードコマンドが送信された後に割り込み信号ＩＮＴの入力を検知した場合、そのリードコマンドによるリードアクセスのアクセス先のオープンブロックは、リードアクセスの回数が所定のしきい値（第４レジスタ４７１に格納されたしきい値）を越えたことを認識する。すると、制御回路１０２は、そのオープンブロックに格納されたデータをリフレッシュすると判断する。即ち、制御回路１０２は、そのオープンブロックを転記元とした転記処理を実行すると判断する。
【０１２５】
リフレッシュでは、制御回路１０２は、例えば、リードアクセスの回数が所定のしきい値を越えた対象のオープンブロックに格納された全てのデータを別のオープンブロックに転記して、対象のオープンブロックをフリーブロックに変更する。これによって、対象のオープンブロックに格納されたデータが別のオープンブロックに退避され、その結果、そのデータの信頼性が回復する。
【０１２６】
続いて、ステートマシン４５０について説明する。ここでは、第１カウント回路１０−０が備えるステートマシン４５０について説明する。
【０１２７】
図７は、第１の実施形態のステートマシン４５０の状態遷移の一例を説明するための図である。本図に例示されるように、ステートマシン４５０の状態としては、アイドル状態（ＩＤＬＥ）、初期化状態（ＩＮＩＴ）、検索中状態（ＳＲＣＨ）、および更新中状態（ＵＰＤＡＴＥ）がある。
【０１２８】
アイドル状態は、制御回路１０２からの物理アドレスの通知に応じて第１カウント回路１０−０が動作を開始することが可能である状態である。ステートマシン４５０は、アイドル状態において制御回路１０２から物理アドレスを受信すると、アイドル状態から初期化状態に遷移する。
【０１２９】
初期化状態は、制御回路１０２から物理アドレスが通知された直後の状態である。ステートマシン４５０は、アイドル状態から初期化状態に遷移した際に、初期化信号を活性化する。
【０１３０】
ステートマシン４５０は、初期化信号を非活性化して、その後、初期化状態からアイドル状態または検索中状態に遷移することができる。
【０１３１】
具体的には、ステートマシン４５０は、第１マルチプレクサ４０２や第３マルチプレクサ４０７から何も出力されなかった場合、初期化状態からアイドル状態に戻る。例えば、プレーン＃１がアクセス先であった場合には、第１カウント回路１０−０では、第１マルチプレクサ４０２や第３マルチプレクサ４０７から何も出力されないので、ステートマシン４５０は、アイドル状態に戻る。
【０１３２】
また、ステートマシン４５０は、第１マルチプレクサ４０２からエントリ番号が出力され、第３マルチプレクサ４０７からエントリの数が出力された場合、初期化状態から検索中状態に遷移する。例えば、プレーン＃０がアクセス先であり、アクセス先のメモリチップ２０１がオープンブロックを備えている場合には、第１マルチプレクサ４０２からエントリ番号が出力され、第３マルチプレクサ４０７からエントリの数が出力される。
【０１３３】
検索中状態は、判定回路４００が検索すべき連続領域から物理アドレスを逐次読み出して、読み出された物理アドレスと制御回路１０２から通知された物理アドレスとを比較する処理（検索処理と表記する）を実行中である状態である。
【０１３４】
ステートマシン４５０は、制御回路１０２から通知された物理アドレスの検索に成功した場合、即ち連続領域に制御回路１０２から通知された物理アドレスと同一の物理アドレスが格納されていた場合、検索中状態から更新中状態に遷移する。
【０１３５】
ステートマシン４５０は、制御回路１０２から通知された物理アドレスの検索に失敗した場合、即ち連続領域に制御回路１０２から通知された物理アドレスと同一の物理アドレスが格納されていなかった場合、検索中状態からアイドル状態に遷移する。
【０１３６】
更新中状態は、更新回路４４０がカウントＲＡＭ４３０に格納されたカウント値を更新する処理（以降、更新処理）を実行中である状態である。更新処理が完了すると、ステートマシン４５０は、アイドル状態に遷移する。
【０１３７】
ステートマシン４５０は、第１カウント回路１０が所定の処理を実行中である場合に、ブロック検索中信号を活性化された状態に維持し、第１カウント回路１０が所定の処理を実行中でない場合に、ブロック検索中信号を活性化されていない状態に維持する。
【０１３８】
第１の実施形態では、所定の処理は、検索処理および更新処理を含む。つまり、判定回路４００が検索処理を実行中であるか、または更新回路４４０が更新処理を実行中であるかのいずれかである場合、ステートマシン４５０は、ブロック検索中信号を活性化された状態に維持し、判定回路４００が検索処理を実行中でなく、かつ更新回路４４０が更新処理を実行中でない場合、ステートマシン４５０は、ブロック検索中信号を活性化されていない状態に維持する。
【０１３９】
図８は、第１の実施形態のステートマシン４５０が制御する初期化信号およびブロック検索中信号の状態を含む各種信号の遷移の具体例を示すタイミングチャートである。本図には、上段から、アクセスカウンタ１０５を駆動するクロック信号、制御回路１０２からの通知（Ａｃｃｅｓｓ＿Ａｄｄｒ）、初期化信号、リードエントリ、エントリカウント、ブロック検索中信号、第３レジスタ群４６１に格納されたチップ＃１のプレーン＃１に関するドロップカウント（ＤｒｏｐＣｎｔ）、ブロックＲＡＭ４２０のリードイネーブル信号（ＲｅａｄＥｎ）、ブロックＲＡＭ４２０のアドレス入力端子に入力されるアドレス（Ａｄｄｒ）、ブロックＲＡＭ４２０から出力される物理アドレス（ＲｅａｄＤａｔａ）、カウントＲＡＭ４３０のリードイネーブル信号（ＲｅａｄＥｎ）、カウントＲＡＭ４３０のライトイネーブル信号（ＷｒｉｔｅＥｎ）、カウントＲＡＭ４３０のアドレス入力端子に入力されるアドレス（Ａｄｄｒ）、カウントＲＡＭ４３０から出力されるカウント値（ＲｅａｄＤａｔａ）、およびカウントＲＡＭ４３０に入力されるカウント値（ＷｒｉｔｅＤａｔａ）の状態がそれぞれ示されている。
【０１４０】
ステートマシン４５０は、最初は、アイドル状態になっている。判定回路４００が制御回路１０２から物理アドレス（ＲｑＡ）の通知を受信すると、ステートマシン４５０は、アイドル状態から初期化状態に遷移して（Ｓ１）、初期化信号を活性化する（Ｓ２）。
【０１４１】
ここで、ＲｑＡは、チップ＃０のプレーン＃０に含まれる、物理アドレス「ＢＬＫ２」によって特定されるオープンブロック内の位置を示す物理アドレスとする。
【０１４２】
初期化信号が活性化されると、制御回路１０２から通知された物理アドレスが示すメモリチップ２０１のプレーンに対応した連続領域の先頭エントリのエントリ番号（Ａとする）がリードエントリとして第１レジスタ４０５に格納されるとともに（Ｓ３）、第３レジスタ４１１にエントリカウントとしてゼロが格納される（Ｓ４）。また、当該連続領域を構成するエントリの数（「３」とする）が選択された状態となる。
【０１４３】
リードエントリは、ブロックＲＡＭ４２０のアドレス入力端子に供給され（Ｓ５）、供給されたリードエントリが示すエントリから物理アドレスが出力される。
【０１４４】
ステートマシン４５０は、次のクロックが供給されると、初期化信号を非活性化し、ブロック検索中信号を活性化し、検索中状態に遷移する。検索中状態では、リードエントリとエントリカウントは、クロックが供給される毎にインクリメントされる。そして、クロックが加わる毎にブロックＲＡＭ４２０のリードエントリが示すエントリから物理アドレスが出力される。
【０１４５】
例えば、ブロックＲＡＭ４２０のエントリ＃Ａ、エントリ＃Ａ＋１、エントリ＃Ａ＋２から順次、物理アドレスが読み出される。エントリ＃Ａ＋２から物理アドレス「ＢＬＫ２」が読み出されたとき、第２比較器４１３によって、エントリ＃Ａ＋２から読み出された物理アドレス「ＢＬＫ２」が、アクセス先のブロックを示す物理アドレス「ＢＬＫ２」と一致することを検知する。すると、ステートマシン４５０は、検索中状態から更新中状態に遷移する（Ｓ６）。
【０１４６】
更新中状態では、第２比較器４１３によってカウントＲＡＭ４３０のリードイネーブル信号が活性化される。また、物理アドレス「ＢＬＫ２」の読み出し元のエントリのエントリ番号「Ａ＋２」は、カウントＲＡＭ４３０のアドレス入力端子に供給される（Ｓ７）。すると、カウントＲＡＭ４３０のエントリ＃Ａ＋２からカウント値（「Ｃ」とする）が出力される。
【０１４７】
カウント値「Ｃ」が読み出された後、カウントＲＡＭ４３０のライトイネーブル信号は、１クロックの間、例えばステートマシン４５０によって活性化状態に維持される。そのタイミングで、更新回路４４０は、カウント値「Ｃ」に１を加算することで得られる新たなカウント値「Ｃ＋１」を、カウントＲＡＭ４３０のエントリ＃Ａ＋２に上書き形式で書き込む（Ｓ８）。これによって、物理アドレス「ＢＬＫ２」が示すオープンブロックにかかるカウント値のインクリメントが実現する。
【０１４８】
カウントＲＡＭ４３０のエントリ＃Ａ＋２に対する上書き処理が完了すると、ライトイネーブル信号が活性化されていない状態にされるとともに、ステートマシン４５０は、更新中状態からアイドル状態に遷移する（Ｓ９）。ステートマシン４５０は、更新中状態からアイドル状態に遷移する際に、ブロック検索中信号を非活性化する。
【０１４９】
ブロック検索中信号が活性化された状態にあるときに新たな物理アドレス（ＲｑＢ）が制御回路１０２から通知されると、第２カウント回路２０が当該通知を処理する。ＲｑＢは、チップ＃１のプレーン＃０に含まれる位置を示している場合、第２カウント回路２０では、チップ＃１のプレーン＃０に関するドロップカウントをインクリメントする（Ｓ１０）。
【０１５０】
なお、図８に示した各信号や各値の時間的な推移は一例である。各信号や各値の時間的な推移は、図８に示した例に限定されない。
【０１５１】
続いて、第１の実施形態のアクセスカウンタ１０５の動作を説明する。図９は、第１の実施形態のアクセスカウンタ１０５の動作の一例を説明するフローチャートである。
【０１５２】
メモリコントローラ１００がＮＡＮＤメモリ２００に対してリードアクセスを行う場合（Ｓ１００、Ｙｅｓ）、アクセスカウンタ１０５の動作は、ブロック検索中信号が活性化されているか否かによって異なる（Ｓ１０１）。
【０１５３】
ブロック検索中信号が活性化されていない状態である場合（Ｓ１０１、Ｎｏ）、即ち、検索処理および更新処理がともに実行されていない場合、リードアクセスのアクセス先を含むメモリチップ２０１のプレーンに対応した連続領域の先頭エントリのエントリ番号と当該連続領域に含まれるエントリの数とが特定される（Ｓ１０２）。
【０１５４】
なお、検索処理は、例えば、Ｓ１０２からＳ１０７までの処理に該当する。また、更新処理は、例えば、Ｓ１０８からＳ１１２までの処理に該当する。
【０１５５】
Ｓ１０２の処理に続いて、エントリカウントがゼロにセットされ、Ｓ１０２の処理によって特定されたエントリ番号がリードエントリとしてセットされる（Ｓ１０３）。
【０１５６】
エントリカウントがＳ１０２の処理によって特定されたエントリ数より小さい場合には（Ｓ１０４、Ｙｅｓ）、ブロックＲＡＭ４２０のリードエントリが示す位置から値（すなわち物理アドレス）が読み出される（Ｓ１０５）。
【０１５７】
Ｓ１０５の処理によって読み出された値とリードアクセスのアクセス先を示す物理アドレスとが一致しない場合（Ｓ１０６、Ｎｏ）、エントリカウントおよびリードエントリがそれぞれ１だけインクリメントされ（Ｓ１０７）、Ｓ１０４の処理が再び実行される。
【０１５８】
Ｓ１０５の処理によって読み出された値とリードアクセスのアクセス先を示す物理アドレスとが一致した場合（Ｓ１０６、Ｙｅｓ）、即ちリードアクセスのアクセス先のブロックがオープンブロックに該当する場合、カウントＲＡＭ４３０のリードエントリが示す位置から値（即ちそのオープンブロックに関するカウント値）が読み出される（Ｓ１０８）。そして、読み出された値に１が加算される（Ｓ１０９）。
【０１５９】
Ｓ１０９の処理によって得られた値と、ドロップカウントとの合計値が、しきい値（第４レジスタ４７１に格納されたしきい値）より大きい場合（Ｓ１１０、Ｙｅｓ）、割り込み信号ＩＮＴが出力される（Ｓ１１１）。制御回路１０２は、割り込み信号ＩＮＴを受信すると、リードアクセスのアクセス先のブロックを転記元とした転記処理（リフレッシュ）の実行を決定することができる。
【０１６０】
Ｓ１０９の処理によって得られた値と、ドロップカウントとの合計値が、しきい値（第４レジスタ４７１に格納されたしきい値）より大きくない場合（Ｓ１１０、Ｎｏ）、またはＳ１１１の処理の後、カウントＲＡＭ４３０のリードエントリが示す位置に、Ｓ１０９の処理によって得られた値が上書きされる（Ｓ１１２）。そして、アクセスカウンタ１０５の動作が終了する。
【０１６１】
エントリカウントがＳ１０２の処理によって特定されたエントリの数より小さくない場合（Ｓ１０４、Ｎｏ）、即ちリードアクセスのアクセス先のブロックがオープンブロックに該当しない場合、アクセスカウンタ１０５の動作が終了する。
【０１６２】
メモリコントローラ１００がＮＡＮＤメモリ２００に対してリードアクセスを行う場合において（Ｓ１００、Ｙｅｓ）、ブロック検索中信号が活性化されている状態である場合（Ｓ１０１、Ｙｅｓ）、即ち検索処理かまたは更新処理が実行中である場合、第２カウント回路２０によって、リードアクセスのアクセス先を含むメモリチップ２０１およびプレーンに関するドロップカウントがインクリメントされる（Ｓ１１３）。そして、アクセスカウンタ１０５の動作が終了する。
【０１６３】
このように、第１の実施形態によれば、アクセスカウンタ１０５は、それぞれオープンブロックを示す複数のアドレスが格納されるブロックＲＡＭ４２０と、オープンブロック毎にカウント値が格納されるカウントＲＡＭ４３０とを備える。判定回路４００は、ＮＡＮＤメモリ２００へのリードアクセスの際に、ブロックＲＡＭ４２０に格納された複数のアドレスを逐次読み出して、読み出したアドレスとリードアクセスのアクセス先のアドレスとを比較することによって、リードアクセスのアクセス先のブロックがオープンブロックであるか否かを判定する。更新回路４４０は、リードアクセスのアクセス先のブロックがオープンブロックに該当する場合に、当該ブロックに関するカウント値をインクリメントする。
【０１６４】
第１の実施形態と比較される技術（比較例）として、アクセスカウンタが、オープンブロックのアドレスとリードアクセスのアクセス先のアドレスとを比較する比較器と、カウント値をインクリメントする加算器と、を、オープンブロックの数だけ備える構成が考えられる。比較例の構成によれば、オープンブロックの数に応じて比較器および加算器の数が増大し、それによって、アクセスカウンタの回路の面積が増大する。
【０１６５】
これに対し、第１の実施形態によれば、ブロックＲＡＭ４２０にアドレスが格納された複数のオープンブロックに対するリードアクセスの回数をカウントの処理のために、１つの比較器（第２比較器４１３）と１つの加算器（更新回路４４０）とがあれば足りる。
【０１６６】
つまり、第１の実施形態によれば、比較例に比べ、比較器および加算器の数を低減することができる。したがって、第１の実施形態によれば、リードアクセスの回数のカウントを小さい回路で実現することができる。
【０１６７】
また、第１の実施形態では、判定回路４００は、ブロックＲＡＭ４２０に格納された複数の物理アドレスから、リードアクセスのアクセス先のブロックの物理アドレスを検索する。よって、リードアクセス毎に要する時間が、比較例に比べて長くなる場合がある。
【０１６８】
その時間が、リードアクセスを実行してから次のリードアクセスが実行されるまでの時間より長くなってしまう場合には、第１カウント回路１０は、当該次のリードアクセスの回数をカウントすることができない。
【０１６９】
これに対し、アクセスカウンタ１０５には、第１カウント回路１０が所定の処理を実行中にリードアクセスが発生する毎にドロップカウントをインクリメントする第２カウント回路２０が設けられた。
【０１７０】
これによって、第１カウント回路１０がカウントできなかったリードアクセスの回数を、第２カウント回路２０によってカウントすることが可能となる。即ち、リードアクセスのカウント漏れが防止される。
【０１７１】
なお、第２カウント回路２０は、メモリチップ２０１が備えるプレーン毎にドロップカウントをカウントした。第２カウント回路２０は、メモリチップ２０１毎にドロップカウントをカウントしてもよいし、プレーン毎にドロップカウントをカウントしてもよい。また、第２カウント回路２０は、全てのメモリチップ２０１で１つのドロップカウントをカウントしてもよい。つまり、ドロップカウントがカウントされる記憶領域の粒度、即ち１つのドロップカウントに対応した記憶領域の大きさは、任意に設定可能である。
【０１７２】
また、第１の実施形態では、割り込み回路３０は、第１カウント回路１０によってカウントされたリードアクセスの回数と、第２カウント回路２０によってカウントされたドロップカウントとの合計値と、第４レジスタ４７１に格納されたしきい値との比較に基づいて割り込み信号ＩＮＴを出力する。
【０１７３】
これによって、第１カウント回路１０がカウントできなかったリードアクセスがある場合であっても、第１カウント回路１０がカウントできなかったリードアクセスを考慮して割り込み信号ＩＮＴを出力することが可能となる。
【０１７４】
なお、ドロップカウントがカウントされる記憶領域の粒度が細かくなるほど、第４加算器４７０によって得られる値を各オープンブロックへのリードアクセスの実際の回数に近づけることが可能となる。つまり、各オープンブロックへのリードアクセスの回数を、より正確にカウントすることが可能となる。
【０１７５】
また、第１の実施形態では、制御回路１０２は、割り込み信号ＩＮＴが出力された場合、オープンブロックのリフレッシュを実行する。
【０１７６】
これによって、オープンブロックに書き込まれたデータの信頼性が所定のレベル以下となる前に、そのデータの信頼性を回復させることが可能となる。
【０１７７】
なお、制御回路１０２は、割り込み信号ＩＮＴが出力された場合に必ずしもオープンブロックのリフレッシュを実行しなくてもよい。制御回路１０２は、オープンブロックのリフレッシュを実行するか否かを判断するための判断基準が複数設けられ、複数の判断基準うちの１つとして、割り込み信号ＩＮＴが出力されたか否かを使用してもよい。
【０１７８】
また、割り込み回路３０は、第１カウント回路１０によってカウントされたリードアクセスの回数に必ずしもドロップカウントを加算しなくてもよい。割り込み回路３０は、第１カウント回路１０によってカウントされたリードアクセスの回数と第４レジスタ４７１に格納されたしきい値との比較に基づいて割り込み信号ＩＮＴを出力してもよい。
【０１７９】
また、第１の実施形態では、オープンブロックを示す複数の物理アドレスは、各メモリチップ２０１のプレーン毎にグループ分けされている。換言すると、オープンブロックは、それぞれチップ番号とプレーン番号とによって特定できる複数のグループに分類されている。ブロックＲＡＭ４２０は、それぞれがいずれかのグループに対応した複数の連続領域を備えている。判定回路４００は、複数の連続領域のうちのリードアクセスのアクセス先のブロックを含むメモリチップ２０１のプレーンに対応した連続領域を特定し、当該連続領域に格納された物理アドレスを先頭から順番に読み出す。
【０１８０】
これによって、ブロックＲＡＭ４２０の先頭から順番に物理アドレスを読み出す場合に比べて、リードアクセスのアクセス先のブロックの物理アドレスを検索する処理に要する時間が短縮される。
【０１８１】
また、第１の実施形態では、ブロックＲＡＭ４２０のエントリ＃ｉに格納された物理アドレスが示すオープンブロックのカウント値は、カウントＲＡＭ４３０のエントリ＃ｉに格納される。つまり、各オープンブロックに関し、ブロックＲＡＭ４２０における物理アドレスの格納位置と、カウントＲＡＭ４３０におけるカウント値の格納位置とは、静的に対応している。
【０１８２】
オープンブロックの物理アドレスの格納位置とそのオープンブロックにかかるカウント値の格納位置と対応するので、双方の格納位置の対応関係の管理が簡単になる。
【０１８３】
なお、上記では、ブロックの状態の遷移の実行については説明しなかった。例えば、制御回路１０２がブロックの状態の遷移を実行してもよい。その場合、制御回路１０２は、フリーブロックをオープンブロックにしたり、オープンブロックをアクティブブロックにした際に、ブロックＲＡＭ４２０およびカウントＲＡＭ４３０の対応するエントリの内容を更新する。
【０１８４】
具体的には、制御回路１０２が、あるメモリチップ２０１のあるプレーンに属するあるブロック（第１のブロックと表記する）の状態をオープンブロックからアクティブブロックに変更し、第１のブロックと同じメモリチップ２０１の第１のブロックと同じプレーンに属する別のブロック（第２のブロックと表記する）の状態をフリーブロックからオープンブロックに変更した場合、ブロックＲＡＭ４２０の第１のブロックの物理アドレスが格納されていたエントリの内容を、第２のブロックの物理アドレスで更新する。また、制御回路１０２は、カウントＲＡＭ４３０の第１のブロックにかかるカウント値が格納されていたエントリに、ゼロを上書きする。これによって、新しくオープンブロックとして割り当てられた第２ブロックに対するリードアクセスの回数をカウントすることが可能となる。
【０１８５】
なお、以上では、オープンブロックをリードアクセスの回数のカウント対象とした場合について説明した。リードアクセスの回数のカウント対象は、これに限定されない。設計者は、任意の記憶領域をリードアクセスの回数のカウント対象として選択することができる。
【０１８６】
（第２の実施形態）
第１の実施形態では、ステートマシン４５０は、検索処理と更新処理とのいずれかが実行中の場合に、ブロック検索中信号を活性化された状態に維持し、検索処理と更新処理とのいずれも実行中でない場合に、ブロック検索中信号を活性化されていない状態に維持した。これによって、検索処理と更新処理とのいずれかが実行中の場合において新しくリードアクセスが実行される場合には、第２カウント回路２０が、そのリードアクセスを、ドロップカウントとしてカウントした。
【０１８７】
ステートマシン４５０は、検索処理が実行中である場合には、ブロック検索中信号を活性化された状態に維持し、検索処理が実行中でない場合には、ブロック検索中信号を活性化されていない状態に維持してもよい。
【０１８８】
このように構成されることで、更新回路４４０が先行するリードアクセスに関する更新処理を実行中であっても、判定回路４００は、新しく実行されるリードアクセスに関する検索処理を開始することができる。
【０１８９】
即ち、第１カウント回路１０は、順次実行される複数のリードアクセスに対し、パイプライン処理的にカウントを実行することが可能となる。
【０１９０】
図１０は、第２の実施形態のアクセスカウンタ１０５の動作の一例を説明するためのシーケンス図である。
【０１９１】
まず、制御回路１０２から物理アドレスが通知されると（Ｓ２００）、判定回路４００は、ブロックＲＡＭ４２０の連続領域に対し、物理アドレスの読み出しを実行する（Ｓ２０１）。Ｓ２０１の処理は、１回以上実施される。
【０１９２】
判定回路４００は、ブロックＲＡＭ４２０から、制御回路１０２から通知された物理アドレスと同一の物理アドレスの応答を受領すると（Ｓ２０２）、更新回路４４０は、カウントＲＡＭ４３０のリードエントリが示す位置からカウント値を読み出す（Ｓ２０３、Ｓ２０４、Ｓ２０５）。
【０１９３】
そして、更新回路４４０は、カウント値をインクリメントした後、インクリメント後のカウント値をカウントＲＡＭ４３０に書き込む（Ｓ２０６）。
【０１９４】
ここで、更新回路４４０が動作を行っている最中（Ｓ２０４〜Ｓ２０６）に、次の物理アドレスが制御回路１０２から通知された場合、判定回路４００は、当該次の物理アドレスにかかる検索処理を開始することができる。
【０１９５】
即ち、当該次の物理アドレスが通知されると（Ｓ２１０）、判定回路４００は、Ｓ２０１〜Ｓ２０３と同様の処理を、Ｓ２１１〜Ｓ２１３において実行する。続いて、更新回路４４０は、当該次の物理アドレスに対応した更新処理を実行することができる（Ｓ２１４〜Ｓ２１６）。
【０１９６】
判定回路４００が当該次の物理アドレスにかかる検索処理を実行中（Ｓ２１１〜Ｓ２１３）に、さらに次の物理アドレスが通知されると（Ｓ２２０）、第２カウント回路２０によって、対応するドロップカウントのインクリメントが実行される（Ｓ２２１）。
【０１９７】
このように、第２の実施形態では、判定回路４００が検索処理を実行中である場合に（換言すると、判定回路４００が動作中である場合に）、リードアクセスが発生すると、第２カウント回路２０がドロップカウントをインクリメントする。また、判定回路４００が検索処理を実行中でなく（換言すると、判定回路４００が動作中でなく）、かつ更新回路４４０が更新処理を実行中である（換言すると、更新回路４４０が動作中である）場合、第２カウント回路２０はドロップカウントのインクリメントを実行しない。
【０１９８】
これによって、第１カウント回路１０は、順次実行される複数のリードアクセスに対し、パイプライン処理的にカウントを実行することが可能となり、ひいては第１カウント回路１０によるカウント漏れの発生を抑制することが可能となる。
【０１９９】
なお、何れかのオープンブロックに関するカウント値とドロップカウントとの合計値が所定のしきい値を超えた場合、割り込み回路３０は、割り込み信号ＩＮＴを送信する（Ｓ２３０）。
【０２００】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【０２０１】
１  メモリシステム、２  ホスト、１０  第１カウント回路、２０  第２カウント回路、３０  割り込み回路、１００  メモリコントローラ、１０１  ホストインタフェース、１０２  制御回路、１０３  バッファ、１０４  ＮＡＮＤインタフェース、１０５  アクセスカウンタ、２００  ＮＡＮＤメモリ、２０１  メモリチップ、２０２  メモリセルアレイ、２０３  サブアレイ、２０４  周辺回路、２０５  ブロック、４００  判定回路、４０１  第１レジスタ群、４０２  第１マルチプレクサ、４０３  第１加算器、４０４  第２マルチプレクサ、４０５  第１レジスタ、４０６  第２レジスタ群、４０７  第３マルチプレクサ、４０８  第２レジスタ、４０９  第２加算器、４１０  第４マルチプレクサ、４１１  第３レジスタ、４１２  第１比較器、４１３  第２比較器、４４０  更新回路、４５０  ステートマシン、４６０  デマルチプレクサ、４６１  第３レジスタ群、４６２  第５マルチプレクサ、４６３  第３加算器、４６４  第６マルチプレクサ、４７０  第４加算器、４７１  第４レジスタ、４７２  第３比較器。
【図１】
2020030873.tif 000003
【図２】
2020030873.tif 000004
【図３】
2020030873.tif 000005
【図４】
2020030873.tif 000006
【図５】
2020030873.tif 000007
【図６】
2020030873.tif 000008
【図７】
2020030873.tif 000009
【図８】
2020030873.tif 000010
【図９】
2020030873.tif 000011
【図１０】
2020030873.tif 000012