JP2020030873A - メモリシステム - Google Patents

メモリシステム Download PDF

Info

Publication number
JP2020030873A
JP2020030873A JP2018154833A JP2018154833A JP2020030873A JP 2020030873 A JP2020030873 A JP 2020030873A JP 2018154833 A JP2018154833 A JP 2018154833A JP 2018154833 A JP2018154833 A JP 2018154833A JP 2020030873 A JP2020030873 A JP 2020030873A
Authority
JP
Japan
Prior art keywords
count
circuit
memory
state
read
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2018154833A
Other languages
English (en)
Inventor
直人 押山
Naoto Oshiyama
直人 押山
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Kioxia Corp
Original Assignee
Kioxia Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Kioxia Corp filed Critical Kioxia Corp
Priority to JP2018154833A priority Critical patent/JP2020030873A/ja
Priority to US16/418,422 priority patent/US10685720B2/en
Publication of JP2020030873A publication Critical patent/JP2020030873A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/08Address circuits; Decoders; Word-line control circuits
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0688Non-volatile semiconductor memory arrays
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/10Programming or data input circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/34Determination of programming status, e.g. threshold voltage, overprogramming or underprogramming, retention
    • G11C16/3418Disturbance prevention or evaluation; Refreshing of disturbed memory data
    • G11C16/3431Circuits or methods to detect disturbed nonvolatile memory cells, e.g. which still read as programmed but with threshold less than the program verify threshold or read as erased but with threshold greater than the erase verify threshold, and to reverse the disturbance via a refreshing programming or erasing step
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/34Determination of programming status, e.g. threshold voltage, overprogramming or underprogramming, retention
    • G11C16/349Arrangements for evaluating degradation, retention or wearout, e.g. by counting erase cycles
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1032Reliability improvement, data loss prevention, degraded operation etc
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7201Logical to physical mapping or translation of blocks or pages
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7208Multiple device management, e.g. distributing data over multiple flash devices
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/26Sensing or reading circuits; Data output circuits

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Read Only Memory (AREA)

Abstract

【課題】小さい回路によってリードアクセスの回数のカウントを実現すること。【解決手段】第1メモリは、複数の第1記憶領域を備える。第2メモリは、複数の第1アドレスが格納される。複数の第1アドレスのそれぞれは第1状態にある第1記憶領域である第2記憶領域のアドレス情報である。判定回路は、第1メモリへのリードアクセスの際に、複数の第1アドレスのそれぞれを第2メモリから読み出して読み出した第1アドレスである第2アドレスとリードアクセスのアクセス先の第1記憶領域である第3記憶領域を示すアドレス情報である第3アドレスとを比較することによって、第3記憶領域が第1状態にあるか否かを判定する。更新回路は、第3記憶領域が第1状態にあると判定された場合に第3記憶領域にかかるカウント値をインクリメントする。【選択図】図4

Description

本実施形態は、メモリシステムに関する。
NAND型のフラッシュメモリ(NANDメモリ)を搭載したメモリシステムがある。NANDメモリに対してリードが実行されると、リードされた位置の付近のメモリセルに格納されたデータの信頼性が低下する。この現象は、NANDメモリのリードディスターブとして知られている。
国際公開第2012/081165号 特開2012−146129号公報 米国特許出願公開第2014−0098600号明細書
データの信頼性が所定レベル以下となることを防止するために、リードアクセスの回数が所定値を越えた場合には、リード位置の周辺のデータを他の位置に退避する処理が実施される場合がある。
一つの実施形態は、小さい回路によってリードアクセスの回数をカウントすることができるメモリシステムを提供することを目的とする。
一つの実施形態によれば、メモリシステムは、第1メモリと、第2メモリと、第3メモリと、判定回路と、更新回路とを備える。第1メモリは、複数の第1記憶領域を備える。第2メモリは、複数の第1アドレスが格納される。複数の第1アドレスのそれぞれは第1状態にある第1記憶領域である第2記憶領域のアドレス情報である。第3メモリは、第2記憶領域毎に第1カウント値が格納される。判定回路は、第1メモリへのリードアクセスの際に、複数の第1アドレスのそれぞれを第2メモリから読み出して読み出した第1アドレスである第2アドレスとリードアクセスのアクセス先の第1記憶領域である第3記憶領域を示すアドレス情報である第3アドレスとを比較することによって、第3記憶領域が第1状態にあるか否かを判定する。更新回路は、第3記憶領域が第1状態にあると判定された場合に第3メモリに格納された第3記憶領域にかかる第1カウント値をインクリメントする。
図1は、第1の実施形態のメモリシステムの構成例を示す図である。 図2は、第1の実施形態のメモリチップの構成を示す模式的かつ例示的な図である。 図3は、第1の実施形態のブロックの状態遷移の一例を示す図である。 図4は、第1の実施形態のアクセスカウンタの構成例を示す図である。 図5は、第1の実施形態の同時にリードを開始する要素の数の具体例を説明するための図である。 図6は、第1の実施形態のブロックRAMおよびカウントRAMに格納される情報の一例を示す図である。 図7は、第1の実施形態のステートマシンの状態遷移の一例を説明するための図である。 図8は、第1の実施形態のステートマシンが制御する初期化信号およびブロック検索中信号の状態を含む各種信号の遷移の具体例を示すタイミングチャートである。 図9は、第1の実施形態のアクセスカウンタの動作の一例を説明するフローチャートである。 図10は、第2の実施形態のアクセスカウンタの動作の一例を説明するためのシーケンス図である。
以下に添付図面を参照して、実施形態にかかるメモリシステムを詳細に説明する。なお、これらの実施形態により本発明が限定されるものではない。
(第1の実施形態)
図1は、第1の実施形態のメモリシステムの構成例を示す図である。メモリシステム1は、ホスト2と所定の通信インタフェースで接続される。ホスト2は、例えばパーソナルコンピュータ、携帯情報端末、またはサーバなどが該当する。メモリシステム1は、ホスト2からアクセス要求(リード要求およびライト要求)を受け付けることができる。各アクセス要求は、アクセス先を示す論理アドレスを伴う。論理アドレスは、メモリシステム1がホスト2に提供する論理アドレス空間内の位置を示すアドレス情報である。メモリシステム1は、ライト要求とともに、書き込み対象のデータを受け付ける。
メモリシステム1は、メモリコントローラ100と、NAND型のフラッシュメモリ(NANDメモリ)200と、を備える。なお、メモリシステム1は、NANDメモリ200の代わりに任意の不揮発性メモリを具備することができる。例えば、メモリシステム1は、NANDメモリ200の代わりにNOR型のフラッシュメモリを具備することができる。
NANDメモリ200は、1以上のメモリチップ201を含む。ここでは一例として、NANDメモリ200は4つのメモリチップ201を含む。各メモリチップ201は、チップ番号によって識別され得る。各メモリチップ201を区別する場合には、各メモリチップ201を、チップ番号0〜3を用いて、チップ#0〜チップ#3(Chip #0 〜 Chip #3)と表記することとする。
NANDメモリ200は、メモリコントローラ100と、1以上のチャネルで接続されている。ここでは一例として、NANDメモリ200とメモリコントローラ100とは、2つのチャネル(Ch #0、Ch #1)で接続される。
より具体的には、チップ#0およびチップ#1は、チャネル#0(Ch #0)に接続され、チップ#2およびチップ#3は、チャネル#1(Ch #1)に接続されている。メモリコントローラ100は、チャネル#0とチャネル#1とを独立に制御することができる。
図2は、第1の実施形態のメモリチップ201の構成を示す模式的かつ例示的な図である。
本図に例示されるように、メモリチップ201は、2つのサブアレイ203に分割されたメモリセルアレイ202と、2つの周辺回路204とを備える。各サブアレイ203は、2つの周辺回路204のうちの1つと対を構成している。サブアレイ203と周辺回路204との対は、プレーン(Plane)と称される。各メモリチップ201内の各プレーンは、プレーン番号によって識別される。
ここでは、各メモリチップ201が備える2つのプレーンのうちの1つを、プレーン番号0を用いて、プレーン#0(Plane #0)と表記する。また、各メモリチップ201が備える2つのプレーンのうちの他のプレーンを、プレーン番号1を用いて、プレーン#1(Plane #1)と表記する。
各サブアレイ203は、複数のブロック205を備える。ブロック205は、イレースが実行される最小単位の記憶領域である。つまり、1つのブロック205に格納された全てのデータは、一括にイレースされる。なお、各ブロック205は、複数のページを備える。ページは、一括にデータのリードおよびデータのライトが可能な記憶領域である。
周辺回路204は、例えば、ロウデコーダ、カラムデコーダ、センスアンプ、ページバッファ等を含む。周辺回路204がプレーン毎に設けられていることにより、2つのプレーンのそれぞれは、互いに独立にリードを実行することが可能である。
第1の実施形態では、1つのメモリチップ201に含まれる2つのプレーンは同じタイミングでリードを開始することができる。このような、1つのメモリチップ201に含まれる複数のプレーンが同時にリードを開始する処理は、マルチプレーンリードと称され得る。マルチプレーンリードの場合、複数のプレーンのそれぞれのアクセス先の物理アドレスが、1つのリードコマンドによって指定され得る。
なお、メモリチップ201が備えるプレーンの数は2つに限定されない。
ここで、ブロックの状態遷移について説明する。図3は、第1の実施形態のブロックの状態遷移の一例を示す図である。ハッチングされた矢印は、ブロックの状態遷移を示しており、実線の矢印は、データの移動を示している。
ブロックの状態としては、少なくとも、オープンブロック、アクティブブロック、およびフリーブロックがある。1以上のアクティブブロックは、アクティブブロックプールを構成し、1以上のフリーブロックは、フリーブロックプールを構成する。
オープンブロックとは、データの書き込み途中のブロックである。即ち、オープンブロックは、データが書き込まれ得る領域を残した状態にあるブロックである。
アクティブブロックは、データの書き込みが終了したブロックのうちの、まだ再利用できないブロックである。データの書き込みが終了したブロックのうちの、有効なユーザデータが格納されているブロックは、アクティブブロックとして管理される。再利用とは、オープンブロックに遷移させることをいう。
フリーブロックは、有効なユーザデータが格納されていないブロックである。フリーブロックは、再利用可能なブロックである。
例えば、オープンブロックに1ブロック分のデータがライトされた後、そのオープンブロックはアクティブブロックに遷移する。アクティブブロックに格納されているライトデータの状態は、有効な状態と無効な状態とのうちの何れかである。
アクティブブロックにあるデータ(第1のデータと表記する)が格納されている状態でホスト2から第1のデータと同一の論理アドレスを指定して第2のデータが送られてきた場合、メモリコントローラ100は、オープンブロックの空のページに第2のデータを書き込み、アクティブブロックに格納されている第1のデータを無効なデータとして管理する。
アクティブブロックは、ガベージコレクションによってフリーブロックに遷移する。ガベージコレクションは、アクティブブロックであるブロックに格納されている有効なデータを他のブロック(オープンブロック)に転記(transcribe)して、転記元のブロックに格納されている全てのデータを無効化する処理をいう。これによって、転記元のブロックは、アクティブブロックからフリーブロックに遷移する。
フリーブロックは、格納されているデータがイレースされた後、オープンブロックに遷移する。
なお、データが有効とは、そのデータが格納されている位置の物理アドレスが論物変換テーブル(後述する)によって何れかの論理アドレスに対応付けられていることをいう。データが無効とは、そのデータが格納されている位置の物理アドレスが論物変換テーブルによって何れの論理アドレスにも対応付けられていないことをいう。また、「空の」状態とは、ここでは、無効なデータおよび有効なデータの何れも記憶されていない状態をいう。即ち、空のページは、データの書き込みが可能な空き領域である。
図1に説明を戻す。メモリコントローラ100は、ホストインタフェース(I/F)101、制御回路102、バッファ103、NANDインタフェース(I/F)104、およびアクセスカウンタ105を備えている。メモリコントローラ100は、例えばSoC(System-On-a-Chip)として構成され得る。これらの構成要素は、不図示のクロック生成回路から供給されるクロックによって駆動される。なお、メモリコントローラ100の各機能は、ハードウェア、ソフトウェア、またはそれらの組み合わせによって実現され得る。
バッファ103は、ホスト2とNANDメモリ200との間で転送中のデータや管理情報がバッファリングされるメモリである。管理情報は、例えば、論物変換テーブルを含む。
論物変換テーブルは、メモリシステム1がホスト2に提供する論理アドレス空間内の位置を示すアドレス情報(論理アドレス)とNANDメモリ200内の物理的な位置(メモリセルアレイ202内の位置)を示すアドレス情報(物理アドレス)とを対応付ける情報である。特定の論理アドレスに書き込みが集中した場合に、NANDメモリ200内の特定の位置の疲弊が進行することを避けるために、論物変換テーブルを更新することによって論理アドレスと物理アドレスとの関連付けが動的に変更可能になっている。
なお、バッファ103を構成するメモリの種類は、特定の種類に限定されない。例えば、バッファ103は、DRAM(Dynamic Random Access Memory)、SRAM(Static Random Access Memory)、またはこれらの組み合わせによって構成される。
ホストインタフェース101は、ホスト2とメモリシステム1との間の通信インタフェースの制御を実行する。ホストインタフェース101は、制御回路102による制御の下で、ホスト2とバッファ103との間のデータ転送を実行する。NANDインタフェース104は、制御回路102による制御の下で、NANDメモリ200とバッファ103との間のデータ転送を実行する。
制御回路102は、CPU(Central Processing Unit)、FPGA(Field-Programmable Gate Array)、ASIC(Application Specific Integrated Circuit)、などのハードウェア回路によって構成される。制御回路102は、ホストインタフェース101やNANDインタフェース104を制御することによって、ホスト2とNANDメモリ200との間のデータ転送を実現するハードウェア回路である。
例えば、制御回路102は、バッファ103に格納されたデータをNANDメモリ200に書き込む際には、書き込み先の物理アドレスを指定して当該データのNANDメモリ200への書き込みをNANDインタフェース104に指示する。NANDインタフェース104は、制御回路102からの指示に基づいてNANDメモリ200に対するライトアクセスを実行する。
また、制御回路102は、NANDメモリ200からデータを読み出す際には、読み出し元の物理アドレスを指定してデータの読み出しをNANDインタフェース104に指示を送る。NANDインタフェース104は、制御回路102からの指示に基づいてNANDメモリ200に対するリードアクセスを実行する。
このように、制御回路102は、NANDインタフェース104を制御してNANDメモリ200にアクセスを実行することができる。制御回路102は、ホスト2からのアクセス要求に応じてNANDメモリ200に対するアクセスを実行することができるし、内部処理、即ちホスト2からのアクセス要求とは関係なく実施される処理、の一環としてNANDメモリ200に対するアクセスを実行することができる。
内部処理は、一つのブロックからデータを読み出して、当該データを他のブロックに書き込む処理(転記処理)を含む。転記処理は、有効なデータのみを他のブロックに集める前述したガベージコレクションや、書き換え回数を均一化するためにデータの移動を行うウェアレベリングや、信頼性が低下したデータを書き直すリフレッシュなどを含む。
制御回路102は、NANDメモリ200に対してリードアクセスを実行する際には、アクセス先を示す物理アドレスをアクセスカウンタ105に通知する。
アクセスカウンタ105は、特定のブロックに対するリードアクセスの回数をカウントする。
NANDメモリに対してリードが実行されると、リードされた位置の付近のメモリセルに格納されたデータの信頼性が低下する(リードディスターブ)。特に、オープンブロックにおいては、ある回数以上のリードアクセスが実行されると、そのオープンブロックの空いているワードラインのイレース状態が悪化する。イレース状態が悪化したワードラインに対してライトアクセスが行われると、ビットエラーレートが増大してしまう。
そこで、第1の実施形態では、リードアクセスの回数がオープンブロック毎にカウントされ、そのカウント値が、データの信頼性を回復させるリフレッシュを実行するか否かの判断に使用されることとした。
図4は、第1の実施形態のアクセスカウンタ105の構成例を示す図である。本図に例示されるように、アクセスカウンタ105は、複数の第1カウント回路10と、第2カウント回路20と、割り込み回路30とを備える。
アクセスカウンタ105が備える第1カウント回路10の数は、同時にリードを開始する要素の数の最大値に等しい。
図5は、第1の実施形態の同時にリードを開始する要素の数の具体例を説明するための図である。例えば、制御回路102は、処理300a、処理300b、処理300c、処理300dをシリアルに実行することができる。処理300a、処理300b、処理300c、処理300dのそれぞれは、リードアクセスを指示する処理である。
処理300aでは、制御回路102は、チャネル#0に接続されたチップ#0へのリードアクセスを決定して、時刻t1においてそのリードアクセスをNANDインタフェース104に対して指示する。NANDインタフェース104は、当該指示に応じて、チップ#0へのリードコマンドの送信を実行する(処理301a)。チップ#0では、当該リードコマンドに応じてメモリセルアレイ202からのデータの読み出しが実行される(処理302a)。
処理300bでは、制御回路102は、チャネル#1に接続されたチップ#2へのリードアクセスを決定して、時刻t2においてそのリードアクセスをNANDインタフェース104に対して指示する。NANDインタフェース104は、当該指示に応じて、チップ#2へのリードコマンドの送信を実行する(処理301b)。チップ#2では、当該リードコマンドに応じてメモリセルアレイ202からのデータの読み出しが実行される(処理302b)。
処理300cでは、制御回路102は、チャネル#0に接続されたチップ#1へのリードアクセスを決定して、時刻t3においてそのリードアクセスをNANDインタフェース104に対して指示する。NANDインタフェース104は、当該指示に応じて、チップ#1へのリードコマンドの送信を実行する(処理301c)。チップ#1では、当該リードコマンドに応じてメモリセルアレイ202からのデータの読み出しが実行される(処理302c)。
処理300dでは、制御回路102は、チャネル#1に接続されたチップ#3へのリードアクセスを決定して、時刻t4においてそのリードアクセスをNANDインタフェース104に対して指示する。NANDインタフェース104は、当該指示に応じて、チップ#3へのリードコマンドの送信を実行する(処理301d)。チップ#3では、当該リードコマンドに応じてメモリセルアレイ202からのデータの読み出しが実行される(処理302d)。
ここで処理301a〜301dで送信されるそれぞれのリードコマンドは、マルチプレーンリードのリードコマンドであってもよい。マルチプレーンリードのリードコマンドが送信された場合、対応するメモリチップ201では、2つのプレーンにおいて同時にリードが実行される。
このように、図5の例によれば、各メモリチップ201へのリードコマンドは、それぞれ異なるタイミングで送信される。そして、各リードコマンドは、マルチプレーンリードであってもよい。したがって、図5の場合、1つのメモリチップ201に含まれる2つのプレーンが、同時にリードを開始できる要素に該当する。つまり、同時にリードを開始できる要素の数は、「2」となる。
また、1つのメモリチップ201が有するプレーンの数をN個(但しNは2以上の自然数)とした場合、マルチプレーンリードによって最大でN個のプレーンが同時にリードを開始することができる。つまり、その場合は、1つのメモリチップ201に含まれるN個のプレーンが、同時にリードを開始できる要素に該当する。つまり、同時にリードを開始できる要素の数は「N」となる。
さらに、仮に複数のメモリチップ201に同時にリードコマンドを送信可能である場合、同時にリードを開始できる要素の数はさらに増える。例えば、メモリコントローラ100が、チャネル#0に接続された1つのメモリチップ201とチャネル#1に接続された1つのメモリチップ201とに同時にリードコマンドを送信することが可能に構成された場合、異なるチャネルに接続された2つのメモリチップ201分の合計4つのプレーンが、同時にリードを開始できる要素に該当する。つまり、同時にリードを開始できる要素の数は、「4」となる。
制御回路102は、同時にリードを開始できる要素のそれぞれのアクセス先(リードコマンドのアクセス先)を示す物理アドレスを発行して、発行した複数の物理アドレスをアクセスカウンタ105に通知する。アクセスカウンタ105では、複数の物理アドレスが同時に通知された場合には、各第1カウント回路10が当該複数の物理アドレスのうちの1つに対応して動作する。
図5の例では、同時にリードを開始することができる要素は、各メモリチップ201の2つのプレーンである。よって、図4に例示されるように、アクセスカウンタ105には、2つのプレーンのうちのそれぞれ異なるプレーンをアクセス先とした物理アドレスに対応するために、2つの第1カウント回路10が設けられる。
2つの第1カウント回路10のうちの1つ(第1カウント回路10−0)は、チップ#0〜チップ#3のプレーン#0に対するリードアクセスをカウントする。2つの第1カウント回路10のうちの他(第1カウント回路10−1)は、チップ#0〜チップ#3のプレーン#1に対するリードアクセスをカウントする。第1カウント回路10−0および第1カウント回路10−1のハードウェア構成は、互いに等しいため、ここでは主として第1カウント回路10−0のハードウェア構成について説明する。
第1カウント回路10−0は、判定回路400、ブロックRAM(BLK_RAM)420、カウントRAM(COUNT_RAM)430、更新回路440、およびステートマシン(Finite State Machine : FSM)450を備える。
ブロックRAM420は、それぞれオープンブロックを示す複数の物理アドレスが格納されるメモリである。カウントRAM430は、オープンブロック毎にリードアクセスのカウント値が格納されるメモリである。以降、特に断りが無い限り、オープンブロック毎のリードアクセスのカウント値を、単に、カウント値と表記する。なお、ブロックRAM420およびカウントRAM430のそれぞれは、任意の種類のメモリによって構成され得る。例えば、ブロックRAM420およびカウントRAM430のそれぞれは、DRAM、SRAM、フリップフロップ、またはこれらの組み合わせによって構成される。
図6は、第1の実施形態のブロックRAM420およびカウントRAM430に格納される情報の一例を示す図である。ブロックRAM420は、それぞれ1つの物理アドレスが格納される複数のエントリを備えている。ブロックRAM420が備えるそれぞれのエントリは、ブロックRAM420の先頭から順番に昇順にナンバリングされたエントリ番号(entry番号)によって識別される。
同様に、カウントRAM430は、それぞれ1つのカウント値が格納される複数のエントリを備えている。カウントRAM430が備えるそれぞれのエントリは、カウントRAM430の先頭から順番に昇順にナンバリングされたエントリ番号によって識別される。
以降、各RAM420,430のエントリ番号iのエントリを、エントリ#iと表記する場合がある。
チップ#0〜チップ#3のプレーン#0に含まれるオープンブロックを示す物理アドレスが、メモリチップ201毎にグループ化され、同じグループに属する全ての物理アドレスがブロックRAM420の1つの連続領域に格納されている。
例えば、チップ#0のプレーン#0に含まれる4つのオープンブロックを示す4つの物理アドレス_0〜物理アドレス_3は、ブロックRAM420の4つの連続したエントリ(エントリ#0〜エントリ#3)からなる連続領域に格納されている。また、チップ#1のプレーン#0に含まれる3つのオープンブロックを示す3つの物理アドレス_4〜物理アドエス_6は、ブロックRAM420の3つの連続したエントリ(エントリ#4〜エントリ#6)からなる連続領域に格納されている。
つまり、ブロックRAM420は、それぞれ異なるメモリチップ201の1以上の物理アドレスが格納される4つの連続領域を備えている。
カウントRAM430の各エントリには、そのエントリとエントリ番号が同じブロックRAM420のエントリに格納された物理アドレスが示すオープンブロックにかかるカウント値が格納される。つまり、ブロックRAM420のエントリ#iに格納された物理アドレスが示すオープンブロックのカウント値は、カウントRAM430のエントリ#iに格納される。
再び図4に説明を戻す。判定回路400は、ブロックRAM420に格納された1以上の物理アドレスのそれぞれを逐次読み出して、ブロックRAM420から読み出した物理アドレスと制御回路102から受信したリードアクセスのアクセス先を示す物理アドレスとを比較することによって、リードアクセスのアクセス先がオープンブロックであるか否かを判定する。つまり、判定回路400は、ブロックRAM420に格納された1以上の物理アドレスから、リードアクセスのアクセス先を示す物理アドレスと同一の物理アドレスを検索する。
判定回路400は、上述した動作を実現するために、第1レジスタ群401と、第1マルチプレクサ402と、第1加算器403と、第2マルチプレクサ404と、第1レジスタ405と、を備える。
第1レジスタ群401は、それぞれが第1マルチプレクサ402のそれぞれ異なる入力端子に接続された複数のエントリを備えている。第1レジスタ群401の複数のエントリのそれぞれには、ブロックRAM420およびカウントRAM430のそれぞれ異なる連続領域の先頭エントリを示すエントリ番号が記録されている。
ここでは、チップ#0のプレーン#0に対応した連続領域の先頭エントリのエントリ番号と、チップ#1のプレーン#0に対応した連続領域の先頭エントリのエントリ番号と、チップ#2のプレーン#0に対応した連続領域の先頭エントリのエントリ番号と、チップ#3のプレーン#0に対応した連続領域の先頭エントリのエントリ番号と、が第1レジスタ群401に格納されている。
第1マルチプレクサ402は、制御回路102から通知された物理アドレスが選択信号として入力される。ここで、物理アドレスは、チップ番号とプレーン番号との両方を含んでいることとする。例えば、物理アドレスの一部は、チップ番号を示し、当該物理アドレスの他の一部は、プレーン番号を示す。第1マルチプレクサ402は、選択信号として入力された物理アドレスに含まれるチップ番号とプレーン番号とに基づいて、対応する連続領域の先頭エントリのエントリ番号を出力する。
第1マルチプレクサ402の出力端子は、第2マルチプレクサ404が備える2つの入力端子のうちの1つに接続されている。第2マルチプレクサ404の出力端子は、第1レジスタ405に接続されている。第1レジスタ405に格納された値は、第1加算器403に入力される。第1加算器403は、入力された値に1を加算する。第1加算器403の出力は、第2マルチプレクサ404が備える2つの入力端子のうちの他の1つに入力される。
第2マルチプレクサ404は、初期化信号が選択信号として入力される。初期化信号は、ステートマシン450によって操作される。初期化信号が活性化された状態である場合には、第2マルチプレクサ404は、第1マルチプレクサ402が出力したエントリ番号を第1レジスタ405に格納する。初期化信号が活性化されていない状態である場合には、第1レジスタ405に格納された内容を、第1加算器403が出力する1が加算されたエントリ番号で上書きする。なお、第1レジスタ405の内容の上書きのタイミングの詳細は後述される。
第1レジスタ405に格納されたエントリ番号は、ブロックRAM420およびカウントRAM430のリード対象のエントリを示す。第1レジスタ405に格納されたエントリ番号は、ブロックRAM420のアドレス入力端子およびカウントRAM430のアドレス入力端子に入力される。以降、第1レジスタ405に格納されたエントリ番号を、リードエントリ(ReadEntry)と表記することがある。
判定回路400は、さらに、第2レジスタ群406と、第3マルチプレクサ407と、第2レジスタ408と、第2加算器409と、第4マルチプレクサ410と、第3レジスタ411と、第1比較器412と、を備える。
第2レジスタ群406は、それぞれが第3マルチプレクサ407のそれぞれ異なる入力端子に接続された複数のエントリを備えている。第2レジスタ群406の複数のエントリのそれぞれには、ブロックRAM420およびカウントRAM430のそれぞれ異なる連続領域を構成するエントリの数が記録されている。
ここでは、チップ#0のプレーン#0に対応した連続領域を構成するエントリの数と、チップ#1のプレーン#0に対応した連続領域を構成するエントリの数と、チップ#2のプレーン#0に対応した連続領域を構成するエントリの数と、チップ#3のプレーン#0に対応した連続領域を構成するエントリの数と、が第2レジスタ群406に格納されている。
第3マルチプレクサ407は、第1マルチプレクサ402と同様に、制御回路102から通知された物理アドレスが選択信号として入力される。第3マルチプレクサ407は、選択信号として入力された物理アドレスに含まれるチップ番号とプレーン番号とに基づいて、そのチップ番号とプレーン番号とによって特定されるメモリチップ201のプレーンに対応する連続領域を構成するエントリの数を出力する。
第2レジスタ408には、「0」が格納されている。第2レジスタ408の内容は、第4マルチプレクサ410が備える2つの入力端子のうちの1つに接続されている。第4マルチプレクサ410の出力は、第3レジスタ411に接続されている。第3レジスタ411に格納された値は、第2加算器409に入力される。第2加算器409は、入力された値に1を加算する。第2加算器409の出力は、第4マルチプレクサ410が備える2つの入力端子のうちの他の1つに入力される。
第4マルチプレクサ410は、初期化信号が選択信号として入力される。初期化信号が活性化された状態である場合には、第4マルチプレクサ410は、第2レジスタ408の内容を第3レジスタ411に格納する。初期化信号が活性化されていない状態である場合には、第3レジスタ411の内容を、第3レジスタ411から出力された内容で上書きする。なお、第3レジスタ411の内容の上書きのタイミングの詳細については後述される。
第3レジスタ411の内容は、第1レジスタ405に先頭エントリのエントリ番号がリードエントリとして格納されてからリードエントリがインクリメントされた回数を示す。以降、第3レジスタ411に格納された値を、エントリカウント(EntryCnt)と表記することがある。
第3レジスタ411の内容、即ちエントリカウントは、第1比較器412が備える2つの入力端子のうちの1つに入力される。また、第3マルチプレクサ407の出力端子は、第1比較器412が備える2つの入力端子のうちの他の1つに接続されている。
第1比較器412は、第3レジスタ411から入力されたエントリカウントと、第3マルチプレクサ407から入力された、連続領域を構成するエントリの数とを比較する。第1比較器412は、エントリカウントが連続領域を構成するエントリの数より小さい場合に、ブロックRAM420のリードイネーブル信号(ReadEn)を活性化された状態に維持する。第1比較器412は、エントリカウントが連続領域を構成するエントリの数以上である場合に、ブロックRAM420のリードイネーブル信号(ReadEn)を活性化されていない状態に維持する。
判定回路400は、さらに、第2比較器413を備える。ブロックRAM420の出力は、第2比較器413が備える2つの入力端子のうちの1つに入力される。また、制御回路102から供給された、リードアクセスのアクセス先を示す物理アドレスは、第2比較器413が備える2つの入力端子のうちの他の1つに入力される。
ブロックRAM420は、自身のリードイネーブル信号(ReadEn)が活性化された状態である場合に、アドレス入力端子から入力されたエントリ番号が示すエントリに格納された値、即ち物理アドレスを出力する。第2比較器413は、ブロックRAM420から出力された物理アドレスと、制御回路102から通知された物理アドレスと、を比較する。
双方の物理アドレスが一致する場合、第2比較器413は、カウントRAM430のリードイネーブル信号(ReadEn)を活性化された状態に維持する。双方の物理アドレスが異なっている場合、第2比較器413は、カウントRAM430のリードイネーブル信号(ReadEn)を活性化されていない状態に維持する。
ブロックRAM420から出力された物理アドレスがリードアクセスのアクセス先の物理アドレスと一致したとき、第2比較器413によってカウントRAM430のリードイネーブル信号(ReadEn)が活性化され、カウントRAM430は、その物理アドレスが示すオープンブロックにかかるカウント値を出力する。
判定回路400は、上記のように構成されていることから、次のように動作することができる。
即ち、判定回路400は、制御回路102から物理アドレスが通知された場合、第1マルチプレクサ402および第3マルチプレクサ407によって、当該物理アドレスが示す位置を含むメモリチップ201のプレーンに対応した連続領域の先頭エントリのエントリ番号と、当該連続領域を構成するエントリの数と、を選択する。
これによって、判定回路400は、ブロックRAM420が備える複数のエントリのうちの、検索すべき連続領域を特定する。第1マルチプレクサ402から出力されたエントリ番号は、検索すべき連続領域の先頭エントリである。第3マルチプレクサ407から出力されたエントリの数は、検索すべき連続領域のエントリの数である。
制御回路102から物理アドレスが通知された際、後述するステートマシン450によって、初期化信号が活性化される。これによって、検索すべき連続領域の先頭エントリのエントリ番号は、リードエントリとして第1レジスタ405に格納され、第3レジスタ411には、ゼロがエントリカウントとして格納される。
エントリカウントが検索すべき連続領域のエントリの数より少ない場合、第1比較器412によってブロックRAM420のリードイネーブル信号が活性化された状態に維持され、これによって、ブロックRAM420は、読み出し可能な状態に維持される。その場合において、ブロックRAM420のリードエントリが示すエントリから物理アドレスが読み出され、読み出された物理アドレスは第2比較器413によって制御回路102から通知された物理アドレスと比較される。
検索すべき連続領域の先頭エントリのエントリ番号がリードエントリとして格納され、ゼロがエントリカウントとして格納された後、初期化信号は、非活性化される。すると、第2マルチプレクサ404は、第1加算器403が接続された入力端子を選択し、第4マルチプレクサ410は、第2加算器409が接続された入力端子を選択する。
その後、リードエントリおよびエントリカウントがそれぞれインクリメントされる。インクリメント後、依然としてカウントエントリが連続領域を構成するエントリの数より少ない場合、ブロックRAM420のリードエントリが示すエントリ、即ち前回に読み出しが行われたエントリに後続するエントリ、から物理アドレスが読み出され、読み出された物理アドレスは、前回同様、第2比較器413によって制御回路102から通知された物理アドレスと比較される。
このように、判定回路400は、検索すべき連続領域の先頭から順番に物理アドレスを読み出して、読み出された物理アドレスと制御回路102から通知された物理アドレスとを比較する。判定回路400は、検索すべき連続領域から読み出された物理アドレスが制御回路102から通知された物理アドレスと一致するか、または読み出し位置が検索すべき連続領域の末尾エントリに至るまで、リードエントリをインクリメントしながら物理アドレスを読み出す処理を繰り返すことができる。即ち、判定回路400は、制御回路102から通知された物理アドレスが示す位置を含むメモリチップ201のプレーンに対応した連続領域から物理アドレスを逐次読み出すことで、当該連続領域の範囲から、制御回路102から通知された物理アドレスと同一の物理アドレスを検索する。
連続領域から読み出された物理アドレスが制御回路102から通知された物理アドレスと一致することは、制御回路102から通知された物理アドレスが示す位置を含むブロック、換言するとリードアクセスのアクセス先のブロックがオープンブロックであることが判定されたことを意味する。
判定回路400は、連続領域から読み出された物理アドレスが制御回路102から通知された物理アドレスと一致した場合、第2比較器413によって、カウントRAM430のリードイネーブル信号を活性化する。すると、カウントRAM430は、そのときアドレス入力端子に入力されたリードエントリに格納されているカウント値を出力する。カウントRAM430から出力されたカウント値は、オープンブロックに該当すると判定されたリードアクセスのアクセス先のブロックに関するカウント値に該当する。
更新回路440は、カウントRAM430から出力されたカウント値を取得して、取得したカウント値をインクリメントし(即ち1だけ加算し)、インクリメント後のカウント値をカウントRAM430に書き戻す。即ち、更新回路440は、インクリメント前のカウント値を、インクリメント後のカウント値で上書きする。
なお、カウントRAM430は、ライトイネーブル信号(WriteEn)が入力されるように構成されてもよい。例えば、カウントRAM430のライトイネーブル信号は、カウントRAM430のリードイネーブル信号が活性化されたことに応じて活性化され、ライトイネーブル信号が活性化されている間に更新回路440はインクリメント後のカウント値をカウントRAM430に書き戻してもよい。
更新回路440は、さらに、インクリメント後のカウント値を割り込み回路30に出力する。
ステートマシン450は、初期化信号を制御したり、ブロック(BLK)検索中信号を制御したりする。ブロック検索中信号は、第1カウント回路10が所定の処理を実行中であるか否かを示す信号である。ステートマシン450の詳細については後ほど詳細に説明する。
第1カウント回路10−0は、上記の構成によって、リードアクセスのアクセス先がプレーン#0に含まれるオープンブロックである場合に、カウントRAM430に格納されたそのオープンブロックに関するカウント値をインクリメントするとともにインクリメント後のカウント値を出力することができる。
第1カウント回路10−1は、第1カウント回路10−0と同様のハードウェア構成を備えている。但し、第1カウント回路10−1は、プレーン#1に対応した構成を有する。
具体的には、第1カウント回路10−1では、ブロックRAM420には、チップ#0〜チップ#3のプレーン#1に含まれるオープンブロックを示す物理アドレスが格納され、カウントRAM430には、チップ#0〜チップ#3のプレーン#1に含まれるオープンブロックに関するカウント値が格納される。また、第1カウント回路10−1の第1レジスタ群401には、第1カウント回路10−1のブロックRAM420およびカウントRAM430が備える連続領域毎に先頭エントリのエントリ番号が格納される。また、第1カウント回路10−1の第2レジスタ群406には、第1カウント回路10−1のブロックRAM420およびカウントRAM430が備える連続領域毎に連続領域を構成するエントリの数が格納される。その他の構成は、第1カウント回路10−0と同様である。
第1カウント回路10−1は、リードアクセスのアクセス先がプレーン#1に含まれるオープンブロックである場合に、第1カウント回路10−1のカウントRAM430に格納されたそのオープンブロックに関するカウント値をインクリメントするとともにインクリメント後のカウント値を出力することができる。
第2カウント回路20は、第1カウント回路10とは別にカウント値が格納される第3レジスタ群461を備えており、第1カウント回路10が所定の処理を実行中である間に制御回路102から次の物理アドレスが通知された場合、第3レジスタ群461に格納されたカウント値をインクリメントする。即ち、第2カウント回路20は、第1カウント回路10がカウント出来なかったリードアクセスの回数をカウントする回路である。
具体的には、第2カウント回路20は、デマルチプレクサ460と、第3レジスタ群461と、第5マルチプレクサ462と、第3加算器463と、第6マルチプレクサ464とを備える。
第3レジスタ群461は、それぞれがデマルチプレクサ460のそれぞれ異なる出力端子と第5マルチプレクサ462のそれぞれ異なる入力端子とに接続された複数のエントリを備えている。第1カウント回路10がカウント出来なかったリードアクセスの回数が、各メモリチップ201のプレーン毎に格納されている。第2カウント回路20によってカウントされた、第1カウント回路10がカウント出来なかったリードアクセスの回数を、ドロップカウント(DropCnt)と表記する。
デマルチプレクサ460および第5マルチプレクサ462には、制御回路102から通知された物理アドレスが選択信号として入力される。デマルチプレクサ460および第5マルチプレクサ462は、選択信号として入力された物理アドレスに含まれるチップ番号とプレーン番号とに対応するエントリを選択する。これによって、リードアクセスのアクセス先のメモリチップ201のプレーンに関するドロップカウントが格納されたエントリが入出力可能になる。
第5マルチプレクサ462によって選択されたエントリに格納されている値は、第5マルチプレクサ462から出力される。第5マルチプレクサ462の出力は、第6マルチプレクサ464が備える2つの入力端子のうちの1つに入力される。
また、第5マルチプレクサ462の出力は、第3加算器463にも入力される。第3加算器463は、入力された値に1を加算する。第3加算器463の出力は、第6マルチプレクサ464が備える2つの入力端子のうちの他の1つに入力される。
第6マルチプレクサ464は、ブロック検索中信号が選択信号として入力される。ブロック検索中信号は、第1カウント回路10が所定の処理を実行中であるか否かを示す信号であり、ステートマシン450によって制御される。ブロック検索中信号が活性化された状態である場合、即ち第1カウント回路10が所定の処理を実行中である場合、第6マルチプレクサ464は、第3加算器463が接続された入力端子を選択する。
すると、リードアクセスのアクセス先のメモリチップ201のプレーンに関するドロップカウントは、第5マルチプレクサ462を介して第3加算器463に入力され、第3加算器463によって1が加算され、加算後のドロップカウントが第6マルチプレクサ464およびデマルチプレクサ460を介して第3レジスタ群461に上書きされる。
ブロック検索中信号が活性化されていない状態である場合、即ち第1カウント回路10が所定の処理を実行中でない場合、リードアクセスのアクセス先のメモリチップ201のプレーンに関するドロップカウントは、第3加算器463を経由せずに第6マルチプレクサ464に入力され、第6マルチプレクサ464の出力端子から出力される。その場合、第3レジスタ群461のそれぞれのエントリに格納されたドロップカウントは変化しない。
割り込み回路30は、第1カウント回路10から出力されたカウント値と第2カウント回路20から出力されたドロップカウントとの合計値を演算し、演算された合計値と所定のしきい値との比較に基づいて割り込み信号INTを出力する。
より具体的には、割り込み回路30は、第4加算器470と、第4レジスタ471と、第3比較器472と、を備える。
第4加算器470は、第1カウント回路10が備える更新回路440から出力されたインクリメント後のカウント値と、第2カウント回路20が備える第6マルチプレクサ464から出力されたドロップカウントと、を加算する。第4加算器470の出力は、第3比較器472が備える2つの入力端子のうちの1つに入力される。
第4レジスタ471は、割り込み信号を出力するか否かの判定のためのしきい値が格納されている。第4レジスタ471は、第3比較器472が備える2つの入力端子のうちの他の1つに接続されている。
第3比較器472は、第4加算器470が演算した2つのカウント値の合計値と、第4レジスタ471に格納されたしきい値と、を比較する。第3比較器472は、第4加算器470から入力された合計値が当該しきい値より大きい場合には、割り込み信号INTを出力する。第3比較器472は、第4加算器470から入力された合計値が当該しきい値を超えない場合には、割り込み信号INTを出力しない。
第3比較器472が出力する割り込み信号INTは、制御回路102に入力される。
なお、割り込み回路30は、第1カウント回路10から出力されたカウント値に基づいて通知を出力する出力回路の一例である。また、割り込み信号INTは、当該通知の一例である。割り込み回路30は、割り込み信号INTと異なる方法で通知を出力し得る。
本図の例では、1つの第4加算器470と1つの第3比較器472が図示されているが、第4加算器470および第3比較器472は、第1カウント回路10毎に設けられ得る。各第4加算器470は、1つの第1カウント回路10に接続されており、当該第1カウント回路10から出力されたカウント値と第2カウント回路20から出力されたドロップカウントとを加算する。各第3比較器472は、1つの第4加算器470に接続されており、当該加算器470が演算した合計値が第4レジスタ471に格納されたしきい値を超えた場合に、割り込み信号INTを出力する。これによって、割り込み信号INTの出力の判断を第1カウント回路10毎に実施することが可能になっている。
制御回路102は、NANDメモリ200に対するアクセスの進捗を把握している。制御回路102は、NANDメモリ200にリードコマンドが送信された後に割り込み信号INTの入力を検知した場合、そのリードコマンドによるリードアクセスのアクセス先のオープンブロックは、リードアクセスの回数が所定のしきい値(第4レジスタ471に格納されたしきい値)を越えたことを認識する。すると、制御回路102は、そのオープンブロックに格納されたデータをリフレッシュすると判断する。即ち、制御回路102は、そのオープンブロックを転記元とした転記処理を実行すると判断する。
リフレッシュでは、制御回路102は、例えば、リードアクセスの回数が所定のしきい値を越えた対象のオープンブロックに格納された全てのデータを別のオープンブロックに転記して、対象のオープンブロックをフリーブロックに変更する。これによって、対象のオープンブロックに格納されたデータが別のオープンブロックに退避され、その結果、そのデータの信頼性が回復する。
続いて、ステートマシン450について説明する。ここでは、第1カウント回路10−0が備えるステートマシン450について説明する。
図7は、第1の実施形態のステートマシン450の状態遷移の一例を説明するための図である。本図に例示されるように、ステートマシン450の状態としては、アイドル状態(IDLE)、初期化状態(INIT)、検索中状態(SRCH)、および更新中状態(UPDATE)がある。
アイドル状態は、制御回路102からの物理アドレスの通知に応じて第1カウント回路10−0が動作を開始することが可能である状態である。ステートマシン450は、アイドル状態において制御回路102から物理アドレスを受信すると、アイドル状態から初期化状態に遷移する。
初期化状態は、制御回路102から物理アドレスが通知された直後の状態である。ステートマシン450は、アイドル状態から初期化状態に遷移した際に、初期化信号を活性化する。
ステートマシン450は、初期化信号を非活性化して、その後、初期化状態からアイドル状態または検索中状態に遷移することができる。
具体的には、ステートマシン450は、第1マルチプレクサ402や第3マルチプレクサ407から何も出力されなかった場合、初期化状態からアイドル状態に戻る。例えば、プレーン#1がアクセス先であった場合には、第1カウント回路10−0では、第1マルチプレクサ402や第3マルチプレクサ407から何も出力されないので、ステートマシン450は、アイドル状態に戻る。
また、ステートマシン450は、第1マルチプレクサ402からエントリ番号が出力され、第3マルチプレクサ407からエントリの数が出力された場合、初期化状態から検索中状態に遷移する。例えば、プレーン#0がアクセス先であり、アクセス先のメモリチップ201がオープンブロックを備えている場合には、第1マルチプレクサ402からエントリ番号が出力され、第3マルチプレクサ407からエントリの数が出力される。
検索中状態は、判定回路400が検索すべき連続領域から物理アドレスを逐次読み出して、読み出された物理アドレスと制御回路102から通知された物理アドレスとを比較する処理(検索処理と表記する)を実行中である状態である。
ステートマシン450は、制御回路102から通知された物理アドレスの検索に成功した場合、即ち連続領域に制御回路102から通知された物理アドレスと同一の物理アドレスが格納されていた場合、検索中状態から更新中状態に遷移する。
ステートマシン450は、制御回路102から通知された物理アドレスの検索に失敗した場合、即ち連続領域に制御回路102から通知された物理アドレスと同一の物理アドレスが格納されていなかった場合、検索中状態からアイドル状態に遷移する。
更新中状態は、更新回路440がカウントRAM430に格納されたカウント値を更新する処理(以降、更新処理)を実行中である状態である。更新処理が完了すると、ステートマシン450は、アイドル状態に遷移する。
ステートマシン450は、第1カウント回路10が所定の処理を実行中である場合に、ブロック検索中信号を活性化された状態に維持し、第1カウント回路10が所定の処理を実行中でない場合に、ブロック検索中信号を活性化されていない状態に維持する。
第1の実施形態では、所定の処理は、検索処理および更新処理を含む。つまり、判定回路400が検索処理を実行中であるか、または更新回路440が更新処理を実行中であるかのいずれかである場合、ステートマシン450は、ブロック検索中信号を活性化された状態に維持し、判定回路400が検索処理を実行中でなく、かつ更新回路440が更新処理を実行中でない場合、ステートマシン450は、ブロック検索中信号を活性化されていない状態に維持する。
図8は、第1の実施形態のステートマシン450が制御する初期化信号およびブロック検索中信号の状態を含む各種信号の遷移の具体例を示すタイミングチャートである。本図には、上段から、アクセスカウンタ105を駆動するクロック信号、制御回路102からの通知(Access_Addr)、初期化信号、リードエントリ、エントリカウント、ブロック検索中信号、第3レジスタ群461に格納されたチップ#1のプレーン#1に関するドロップカウント(DropCnt)、ブロックRAM420のリードイネーブル信号(ReadEn)、ブロックRAM420のアドレス入力端子に入力されるアドレス(Addr)、ブロックRAM420から出力される物理アドレス(ReadData)、カウントRAM430のリードイネーブル信号(ReadEn)、カウントRAM430のライトイネーブル信号(WriteEn)、カウントRAM430のアドレス入力端子に入力されるアドレス(Addr)、カウントRAM430から出力されるカウント値(ReadData)、およびカウントRAM430に入力されるカウント値(WriteData)の状態がそれぞれ示されている。
ステートマシン450は、最初は、アイドル状態になっている。判定回路400が制御回路102から物理アドレス(RqA)の通知を受信すると、ステートマシン450は、アイドル状態から初期化状態に遷移して(S1)、初期化信号を活性化する(S2)。
ここで、RqAは、チップ#0のプレーン#0に含まれる、物理アドレス「BLK2」によって特定されるオープンブロック内の位置を示す物理アドレスとする。
初期化信号が活性化されると、制御回路102から通知された物理アドレスが示すメモリチップ201のプレーンに対応した連続領域の先頭エントリのエントリ番号(Aとする)がリードエントリとして第1レジスタ405に格納されるとともに(S3)、第3レジスタ411にエントリカウントとしてゼロが格納される(S4)。また、当該連続領域を構成するエントリの数(「3」とする)が選択された状態となる。
リードエントリは、ブロックRAM420のアドレス入力端子に供給され(S5)、供給されたリードエントリが示すエントリから物理アドレスが出力される。
ステートマシン450は、次のクロックが供給されると、初期化信号を非活性化し、ブロック検索中信号を活性化し、検索中状態に遷移する。検索中状態では、リードエントリとエントリカウントは、クロックが供給される毎にインクリメントされる。そして、クロックが加わる毎にブロックRAM420のリードエントリが示すエントリから物理アドレスが出力される。
例えば、ブロックRAM420のエントリ#A、エントリ#A+1、エントリ#A+2から順次、物理アドレスが読み出される。エントリ#A+2から物理アドレス「BLK2」が読み出されたとき、第2比較器413によって、エントリ#A+2から読み出された物理アドレス「BLK2」が、アクセス先のブロックを示す物理アドレス「BLK2」と一致することを検知する。すると、ステートマシン450は、検索中状態から更新中状態に遷移する(S6)。
更新中状態では、第2比較器413によってカウントRAM430のリードイネーブル信号が活性化される。また、物理アドレス「BLK2」の読み出し元のエントリのエントリ番号「A+2」は、カウントRAM430のアドレス入力端子に供給される(S7)。すると、カウントRAM430のエントリ#A+2からカウント値(「C」とする)が出力される。
カウント値「C」が読み出された後、カウントRAM430のライトイネーブル信号は、1クロックの間、例えばステートマシン450によって活性化状態に維持される。そのタイミングで、更新回路440は、カウント値「C」に1を加算することで得られる新たなカウント値「C+1」を、カウントRAM430のエントリ#A+2に上書き形式で書き込む(S8)。これによって、物理アドレス「BLK2」が示すオープンブロックにかかるカウント値のインクリメントが実現する。
カウントRAM430のエントリ#A+2に対する上書き処理が完了すると、ライトイネーブル信号が活性化されていない状態にされるとともに、ステートマシン450は、更新中状態からアイドル状態に遷移する(S9)。ステートマシン450は、更新中状態からアイドル状態に遷移する際に、ブロック検索中信号を非活性化する。
ブロック検索中信号が活性化された状態にあるときに新たな物理アドレス(RqB)が制御回路102から通知されると、第2カウント回路20が当該通知を処理する。RqBは、チップ#1のプレーン#0に含まれる位置を示している場合、第2カウント回路20では、チップ#1のプレーン#0に関するドロップカウントをインクリメントする(S10)。
なお、図8に示した各信号や各値の時間的な推移は一例である。各信号や各値の時間的な推移は、図8に示した例に限定されない。
続いて、第1の実施形態のアクセスカウンタ105の動作を説明する。図9は、第1の実施形態のアクセスカウンタ105の動作の一例を説明するフローチャートである。
メモリコントローラ100がNANDメモリ200に対してリードアクセスを行う場合(S100、Yes)、アクセスカウンタ105の動作は、ブロック検索中信号が活性化されているか否かによって異なる(S101)。
ブロック検索中信号が活性化されていない状態である場合(S101、No)、即ち、検索処理および更新処理がともに実行されていない場合、リードアクセスのアクセス先を含むメモリチップ201のプレーンに対応した連続領域の先頭エントリのエントリ番号と当該連続領域に含まれるエントリの数とが特定される(S102)。
なお、検索処理は、例えば、S102からS107までの処理に該当する。また、更新処理は、例えば、S108からS112までの処理に該当する。
S102の処理に続いて、エントリカウントがゼロにセットされ、S102の処理によって特定されたエントリ番号がリードエントリとしてセットされる(S103)。
エントリカウントがS102の処理によって特定されたエントリ数より小さい場合には(S104、Yes)、ブロックRAM420のリードエントリが示す位置から値(すなわち物理アドレス)が読み出される(S105)。
S105の処理によって読み出された値とリードアクセスのアクセス先を示す物理アドレスとが一致しない場合(S106、No)、エントリカウントおよびリードエントリがそれぞれ1だけインクリメントされ(S107)、S104の処理が再び実行される。
S105の処理によって読み出された値とリードアクセスのアクセス先を示す物理アドレスとが一致した場合(S106、Yes)、即ちリードアクセスのアクセス先のブロックがオープンブロックに該当する場合、カウントRAM430のリードエントリが示す位置から値(即ちそのオープンブロックに関するカウント値)が読み出される(S108)。そして、読み出された値に1が加算される(S109)。
S109の処理によって得られた値と、ドロップカウントとの合計値が、しきい値(第4レジスタ471に格納されたしきい値)より大きい場合(S110、Yes)、割り込み信号INTが出力される(S111)。制御回路102は、割り込み信号INTを受信すると、リードアクセスのアクセス先のブロックを転記元とした転記処理(リフレッシュ)の実行を決定することができる。
S109の処理によって得られた値と、ドロップカウントとの合計値が、しきい値(第4レジスタ471に格納されたしきい値)より大きくない場合(S110、No)、またはS111の処理の後、カウントRAM430のリードエントリが示す位置に、S109の処理によって得られた値が上書きされる(S112)。そして、アクセスカウンタ105の動作が終了する。
エントリカウントがS102の処理によって特定されたエントリの数より小さくない場合(S104、No)、即ちリードアクセスのアクセス先のブロックがオープンブロックに該当しない場合、アクセスカウンタ105の動作が終了する。
メモリコントローラ100がNANDメモリ200に対してリードアクセスを行う場合において(S100、Yes)、ブロック検索中信号が活性化されている状態である場合(S101、Yes)、即ち検索処理かまたは更新処理が実行中である場合、第2カウント回路20によって、リードアクセスのアクセス先を含むメモリチップ201およびプレーンに関するドロップカウントがインクリメントされる(S113)。そして、アクセスカウンタ105の動作が終了する。
このように、第1の実施形態によれば、アクセスカウンタ105は、それぞれオープンブロックを示す複数のアドレスが格納されるブロックRAM420と、オープンブロック毎にカウント値が格納されるカウントRAM430とを備える。判定回路400は、NANDメモリ200へのリードアクセスの際に、ブロックRAM420に格納された複数のアドレスを逐次読み出して、読み出したアドレスとリードアクセスのアクセス先のアドレスとを比較することによって、リードアクセスのアクセス先のブロックがオープンブロックであるか否かを判定する。更新回路440は、リードアクセスのアクセス先のブロックがオープンブロックに該当する場合に、当該ブロックに関するカウント値をインクリメントする。
第1の実施形態と比較される技術(比較例)として、アクセスカウンタが、オープンブロックのアドレスとリードアクセスのアクセス先のアドレスとを比較する比較器と、カウント値をインクリメントする加算器と、を、オープンブロックの数だけ備える構成が考えられる。比較例の構成によれば、オープンブロックの数に応じて比較器および加算器の数が増大し、それによって、アクセスカウンタの回路の面積が増大する。
これに対し、第1の実施形態によれば、ブロックRAM420にアドレスが格納された複数のオープンブロックに対するリードアクセスの回数をカウントの処理のために、1つの比較器(第2比較器413)と1つの加算器(更新回路440)とがあれば足りる。
つまり、第1の実施形態によれば、比較例に比べ、比較器および加算器の数を低減することができる。したがって、第1の実施形態によれば、リードアクセスの回数のカウントを小さい回路で実現することができる。
また、第1の実施形態では、判定回路400は、ブロックRAM420に格納された複数の物理アドレスから、リードアクセスのアクセス先のブロックの物理アドレスを検索する。よって、リードアクセス毎に要する時間が、比較例に比べて長くなる場合がある。
その時間が、リードアクセスを実行してから次のリードアクセスが実行されるまでの時間より長くなってしまう場合には、第1カウント回路10は、当該次のリードアクセスの回数をカウントすることができない。
これに対し、アクセスカウンタ105には、第1カウント回路10が所定の処理を実行中にリードアクセスが発生する毎にドロップカウントをインクリメントする第2カウント回路20が設けられた。
これによって、第1カウント回路10がカウントできなかったリードアクセスの回数を、第2カウント回路20によってカウントすることが可能となる。即ち、リードアクセスのカウント漏れが防止される。
なお、第2カウント回路20は、メモリチップ201が備えるプレーン毎にドロップカウントをカウントした。第2カウント回路20は、メモリチップ201毎にドロップカウントをカウントしてもよいし、プレーン毎にドロップカウントをカウントしてもよい。また、第2カウント回路20は、全てのメモリチップ201で1つのドロップカウントをカウントしてもよい。つまり、ドロップカウントがカウントされる記憶領域の粒度、即ち1つのドロップカウントに対応した記憶領域の大きさは、任意に設定可能である。
また、第1の実施形態では、割り込み回路30は、第1カウント回路10によってカウントされたリードアクセスの回数と、第2カウント回路20によってカウントされたドロップカウントとの合計値と、第4レジスタ471に格納されたしきい値との比較に基づいて割り込み信号INTを出力する。
これによって、第1カウント回路10がカウントできなかったリードアクセスがある場合であっても、第1カウント回路10がカウントできなかったリードアクセスを考慮して割り込み信号INTを出力することが可能となる。
なお、ドロップカウントがカウントされる記憶領域の粒度が細かくなるほど、第4加算器470によって得られる値を各オープンブロックへのリードアクセスの実際の回数に近づけることが可能となる。つまり、各オープンブロックへのリードアクセスの回数を、より正確にカウントすることが可能となる。
また、第1の実施形態では、制御回路102は、割り込み信号INTが出力された場合、オープンブロックのリフレッシュを実行する。
これによって、オープンブロックに書き込まれたデータの信頼性が所定のレベル以下となる前に、そのデータの信頼性を回復させることが可能となる。
なお、制御回路102は、割り込み信号INTが出力された場合に必ずしもオープンブロックのリフレッシュを実行しなくてもよい。制御回路102は、オープンブロックのリフレッシュを実行するか否かを判断するための判断基準が複数設けられ、複数の判断基準うちの1つとして、割り込み信号INTが出力されたか否かを使用してもよい。
また、割り込み回路30は、第1カウント回路10によってカウントされたリードアクセスの回数に必ずしもドロップカウントを加算しなくてもよい。割り込み回路30は、第1カウント回路10によってカウントされたリードアクセスの回数と第4レジスタ471に格納されたしきい値との比較に基づいて割り込み信号INTを出力してもよい。
また、第1の実施形態では、オープンブロックを示す複数の物理アドレスは、各メモリチップ201のプレーン毎にグループ分けされている。換言すると、オープンブロックは、それぞれチップ番号とプレーン番号とによって特定できる複数のグループに分類されている。ブロックRAM420は、それぞれがいずれかのグループに対応した複数の連続領域を備えている。判定回路400は、複数の連続領域のうちのリードアクセスのアクセス先のブロックを含むメモリチップ201のプレーンに対応した連続領域を特定し、当該連続領域に格納された物理アドレスを先頭から順番に読み出す。
これによって、ブロックRAM420の先頭から順番に物理アドレスを読み出す場合に比べて、リードアクセスのアクセス先のブロックの物理アドレスを検索する処理に要する時間が短縮される。
また、第1の実施形態では、ブロックRAM420のエントリ#iに格納された物理アドレスが示すオープンブロックのカウント値は、カウントRAM430のエントリ#iに格納される。つまり、各オープンブロックに関し、ブロックRAM420における物理アドレスの格納位置と、カウントRAM430におけるカウント値の格納位置とは、静的に対応している。
オープンブロックの物理アドレスの格納位置とそのオープンブロックにかかるカウント値の格納位置と対応するので、双方の格納位置の対応関係の管理が簡単になる。
なお、上記では、ブロックの状態の遷移の実行については説明しなかった。例えば、制御回路102がブロックの状態の遷移を実行してもよい。その場合、制御回路102は、フリーブロックをオープンブロックにしたり、オープンブロックをアクティブブロックにした際に、ブロックRAM420およびカウントRAM430の対応するエントリの内容を更新する。
具体的には、制御回路102が、あるメモリチップ201のあるプレーンに属するあるブロック(第1のブロックと表記する)の状態をオープンブロックからアクティブブロックに変更し、第1のブロックと同じメモリチップ201の第1のブロックと同じプレーンに属する別のブロック(第2のブロックと表記する)の状態をフリーブロックからオープンブロックに変更した場合、ブロックRAM420の第1のブロックの物理アドレスが格納されていたエントリの内容を、第2のブロックの物理アドレスで更新する。また、制御回路102は、カウントRAM430の第1のブロックにかかるカウント値が格納されていたエントリに、ゼロを上書きする。これによって、新しくオープンブロックとして割り当てられた第2ブロックに対するリードアクセスの回数をカウントすることが可能となる。
なお、以上では、オープンブロックをリードアクセスの回数のカウント対象とした場合について説明した。リードアクセスの回数のカウント対象は、これに限定されない。設計者は、任意の記憶領域をリードアクセスの回数のカウント対象として選択することができる。
(第2の実施形態)
第1の実施形態では、ステートマシン450は、検索処理と更新処理とのいずれかが実行中の場合に、ブロック検索中信号を活性化された状態に維持し、検索処理と更新処理とのいずれも実行中でない場合に、ブロック検索中信号を活性化されていない状態に維持した。これによって、検索処理と更新処理とのいずれかが実行中の場合において新しくリードアクセスが実行される場合には、第2カウント回路20が、そのリードアクセスを、ドロップカウントとしてカウントした。
ステートマシン450は、検索処理が実行中である場合には、ブロック検索中信号を活性化された状態に維持し、検索処理が実行中でない場合には、ブロック検索中信号を活性化されていない状態に維持してもよい。
このように構成されることで、更新回路440が先行するリードアクセスに関する更新処理を実行中であっても、判定回路400は、新しく実行されるリードアクセスに関する検索処理を開始することができる。
即ち、第1カウント回路10は、順次実行される複数のリードアクセスに対し、パイプライン処理的にカウントを実行することが可能となる。
図10は、第2の実施形態のアクセスカウンタ105の動作の一例を説明するためのシーケンス図である。
まず、制御回路102から物理アドレスが通知されると(S200)、判定回路400は、ブロックRAM420の連続領域に対し、物理アドレスの読み出しを実行する(S201)。S201の処理は、1回以上実施される。
判定回路400は、ブロックRAM420から、制御回路102から通知された物理アドレスと同一の物理アドレスの応答を受領すると(S202)、更新回路440は、カウントRAM430のリードエントリが示す位置からカウント値を読み出す(S203、S204、S205)。
そして、更新回路440は、カウント値をインクリメントした後、インクリメント後のカウント値をカウントRAM430に書き込む(S206)。
ここで、更新回路440が動作を行っている最中(S204〜S206)に、次の物理アドレスが制御回路102から通知された場合、判定回路400は、当該次の物理アドレスにかかる検索処理を開始することができる。
即ち、当該次の物理アドレスが通知されると(S210)、判定回路400は、S201〜S203と同様の処理を、S211〜S213において実行する。続いて、更新回路440は、当該次の物理アドレスに対応した更新処理を実行することができる(S214〜S216)。
判定回路400が当該次の物理アドレスにかかる検索処理を実行中(S211〜S213)に、さらに次の物理アドレスが通知されると(S220)、第2カウント回路20によって、対応するドロップカウントのインクリメントが実行される(S221)。
このように、第2の実施形態では、判定回路400が検索処理を実行中である場合に(換言すると、判定回路400が動作中である場合に)、リードアクセスが発生すると、第2カウント回路20がドロップカウントをインクリメントする。また、判定回路400が検索処理を実行中でなく(換言すると、判定回路400が動作中でなく)、かつ更新回路440が更新処理を実行中である(換言すると、更新回路440が動作中である)場合、第2カウント回路20はドロップカウントのインクリメントを実行しない。
これによって、第1カウント回路10は、順次実行される複数のリードアクセスに対し、パイプライン処理的にカウントを実行することが可能となり、ひいては第1カウント回路10によるカウント漏れの発生を抑制することが可能となる。
なお、何れかのオープンブロックに関するカウント値とドロップカウントとの合計値が所定のしきい値を超えた場合、割り込み回路30は、割り込み信号INTを送信する(S230)。
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
1 メモリシステム、2 ホスト、10 第1カウント回路、20 第2カウント回路、30 割り込み回路、100 メモリコントローラ、101 ホストインタフェース、102 制御回路、103 バッファ、104 NANDインタフェース、105 アクセスカウンタ、200 NANDメモリ、201 メモリチップ、202 メモリセルアレイ、203 サブアレイ、204 周辺回路、205 ブロック、400 判定回路、401 第1レジスタ群、402 第1マルチプレクサ、403 第1加算器、404 第2マルチプレクサ、405 第1レジスタ、406 第2レジスタ群、407 第3マルチプレクサ、408 第2レジスタ、409 第2加算器、410 第4マルチプレクサ、411 第3レジスタ、412 第1比較器、413 第2比較器、440 更新回路、450 ステートマシン、460 デマルチプレクサ、461 第3レジスタ群、462 第5マルチプレクサ、463 第3加算器、464 第6マルチプレクサ、470 第4加算器、471 第4レジスタ、472 第3比較器。

Claims (13)

  1. 複数の第1記憶領域を備える不揮発性の第1メモリと、
    複数の第1アドレスが格納され、前記複数の第1アドレスのそれぞれは第1状態にある前記第1記憶領域である第2記憶領域のアドレス情報である、第2メモリと、前記第2記憶領域毎に第1カウント値が格納される第3メモリと、前記第1メモリへのリードアクセスの際に、前記複数の第1アドレスのそれぞれを前記第2メモリから読み出して前記読み出した第1アドレスである第2アドレスと前記リードアクセスのアクセス先の前記第1記憶領域である第3記憶領域を示すアドレス情報である第3アドレスとを比較することによって、前記第3記憶領域が前記第1状態にあるか否かを判定する判定回路と、前記第3記憶領域が前記第1状態にあると判定された場合に前記第3メモリに格納された前記第3記憶領域にかかる前記第1カウント値をインクリメントする更新回路と、を備える第1カウント回路と、
    を備えるメモリシステム。
  2. 前記複数の第1記憶領域のそれぞれは、ブロックであり、
    前記第1状態は、データが書き込まれ得る領域を残した状態である、
    請求項1に記載のメモリシステム。
  3. 前記第3記憶領域にかかる前記第1カウント値に基づいて通知を出力する出力回路をさらに備える請求項1に記載のメモリシステム。
  4. 前記第3記憶領域の内容を前記複数の第1記憶領域のうちの前記第3記憶領域と異なる第1記憶領域に転記するか否かを前記通知に基づいて判断する制御回路をさらに備える、
    請求項3に記載のメモリシステム。
  5. 同時に開始される2以上の数である第1の数のリードアクセスのそれぞれについて前記第3アドレスを発行する制御回路をさらに備え、
    前記第1カウント回路の数は、前記第1の数と等しい、
    請求項1に記載のメモリシステム。
  6. 前記第1カウント回路が所定の処理を実行中に前記第1メモリへのリードアクセスが発生する毎に第2カウント値をインクリメントする第2カウント回路をさらに備える、
    請求項1に記載のメモリシステム。
  7. 前記更新回路によってインクリメントされた前記第1カウント値と、前記第2カウント値と、の合計である第3カウント値を演算し、前記第3カウント値に基づいて通知を出力する出力回路をさらに備える、
    請求項6に記載のメモリシステム。
  8. 前記第3記憶領域の内容を前記複数の第1記憶領域のうちの前記第3記憶領域と異なる第1記憶領域に転記するか否かを前記通知に基づいて判断する制御回路をさらに備える、
    請求項7に記載のメモリシステム。
  9. 前記判定回路が動作中であることは、前記第1カウント回路が前記所定の処理を実行中であることに該当し、
    前記判定回路が動作中でなくかつ前記更新回路が動作中であることは、前記第1カウント回路が前記所定の処理を実行中であることに該当しない、
    請求項6に記載のメモリシステム。
  10. 前記複数の第1記憶領域は、複数のグループに分類され、
    前記第2メモリは、それぞれ前記複数のグループのいずれかに対応した複数の連続領域を備え、各連続領域には対応するグループに含まれる第2記憶領域をそれぞれ示す1以上の前記第1アドレスが格納され、
    前記判定回路は、前記複数の連続領域のうちの前記第3記憶領域が属するグループに対応した連続領域を特定し、当該連続領域に格納された前記第1アドレスを当該連続領域の先頭から順番に読み出す、
    請求項1に記載のメモリシステム。
  11. 各第2記憶領域に関し、前記第2メモリにおける前記第1アドレスの格納位置と前記第3メモリにおける前記第1カウント値の格納位置とが対応する、
    請求項1に記載のメモリシステム。
  12. 前記第1記憶領域の状態を前記第1状態と異なる第2状態から前記第1状態に遷移させたり前記第1状態から前記第1状態と異なる第3状態に遷移させたりする制御回路をさらに備え、
    前記制御回路は、前記第1記憶領域の状態を前記第2状態から前記第1状態に遷移させたり前記第1状態から前記第3状態に遷移させたりした際に前記第2メモリおよび前記第3メモリの内容を更新する、
    請求項2に記載のメモリシステム。
  13. 前記第1メモリは、それぞれが1つの第1記憶領域より大きい複数の第4記憶領域を含み、
    前記第2カウント回路、前記第2カウント値を第4記憶領域毎に管理する、
    請求項7に記載のメモリシステム。
JP2018154833A 2018-08-21 2018-08-21 メモリシステム Pending JP2020030873A (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2018154833A JP2020030873A (ja) 2018-08-21 2018-08-21 メモリシステム
US16/418,422 US10685720B2 (en) 2018-08-21 2019-05-21 Memory system

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2018154833A JP2020030873A (ja) 2018-08-21 2018-08-21 メモリシステム

Publications (1)

Publication Number Publication Date
JP2020030873A true JP2020030873A (ja) 2020-02-27

Family

ID=69586565

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2018154833A Pending JP2020030873A (ja) 2018-08-21 2018-08-21 メモリシステム

Country Status (2)

Country Link
US (1) US10685720B2 (ja)
JP (1) JP2020030873A (ja)

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101205056B1 (ko) * 2010-11-29 2012-11-26 에스케이하이닉스 주식회사 반도체 메모리의 블록 제어 장치 및 방법
WO2012081165A1 (ja) 2010-12-16 2012-06-21 日本電気株式会社 データベース管理装置及びデータベース管理方法
JP5604313B2 (ja) 2011-01-12 2014-10-08 株式会社メガチップス メモリアクセス制御装置
KR101962784B1 (ko) 2012-10-09 2019-03-27 삼성전자주식회사 온도에 따라 차별화된 리드 동작 및 라이트 동작을 갖는 반도체 메모리 장치
US9703669B2 (en) * 2014-11-14 2017-07-11 Cavium, Inc. Apparatus and method for distributed instruction trace in a processor system
JP6198992B2 (ja) * 2015-04-08 2017-09-20 株式会社日立製作所 計算機システム、及び、データベース管理方法
US9812185B2 (en) * 2015-10-21 2017-11-07 Invensas Corporation DRAM adjacent row disturb mitigation
WO2018134317A1 (de) * 2017-01-18 2018-07-26 Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. Ausleseanordnung für einen bildsensor, bildsensor-system und verfahren zum auslesen eines bildsensors

Also Published As

Publication number Publication date
US10685720B2 (en) 2020-06-16
US20200066357A1 (en) 2020-02-27

Similar Documents

Publication Publication Date Title
US10761780B2 (en) Memory system
KR100881052B1 (ko) 플래시 메모리의 매핑 테이블 검색 시스템 및 그에 따른검색방법
US7076598B2 (en) Pipeline accessing method to a large block memory
US10956060B2 (en) Memory system dynamically allocating memory spaces and method of operating the same
KR101300657B1 (ko) 비휘발성 메모리 및 버퍼 메모리를 포함하는 메모리 시스템및 그것의 데이터 읽기 방법
US8417872B2 (en) Write and merge methods in memory card systems for reducing the number of page copies
US20110208901A1 (en) Memory Systems and Methods of Operating the Same
US11086568B2 (en) Memory system for writing fractional data into nonvolatile memory
KR20190101095A (ko) 키-밸류 스토리지 장치 및 이의 동작 방법
US20150127886A1 (en) Memory system and method
US9122586B2 (en) Physical-to-logical address map to speed up a recycle operation in a solid state drive
CN112506438B (zh) 一种映射表管理方法及固态硬盘
US10997073B2 (en) Memory system
KR20100114381A (ko) 동작 수행 중 다른 요청을 우선 처리할 수 있는 비휘발성 메모리 컨트롤러, 이를 포함하는 시스템 및 그 관리 방법
US20170285953A1 (en) Data Storage Device and Data Maintenance Method thereof
US11086795B2 (en) Memory system, memory controller and operating method thereof
US20170147231A1 (en) Storage device and operating method of storage device
US12086426B2 (en) Memory system, information processing system, and host device
US20150339069A1 (en) Memory system and method
US10977144B2 (en) Memory system and method of operating the same
US7765367B2 (en) Control device for accelerating memory to execute iterant command
JP2020030873A (ja) メモリシステム
JP2022047854A (ja) メモリシステム
US11954357B2 (en) Memory system and memory system control method
US11966327B2 (en) Memory system