図面 (/)

技術 メモリシステム

出願人 東芝メモリ株式会社
発明者 押山直人
出願日 2018年8月21日 (2年4ヶ月経過) 出願番号 2018-154833
公開日 2020年2月27日 (10ヶ月経過) 公開番号 2020-030873
状態 未査定
技術分野
  • -
主要キーワード 各連続領域 転記元 転記処理 割り込み回路 カウント対象 ブロック検索 リード位置 アクティブブロック
関連する未来課題
重要な関連分野

この項目の情報は公開日時点(2020年2月27日)のものです。
また、この項目は機械的に抽出しているため、正しく解析できていない場合があります

図面 (11)

課題

小さい回路によってリードアクセス回数カウントを実現すること。

解決手段

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

概要

背景

NAND型フラッシュメモリNANDメモリ)を搭載したメモリシステムがある。NANDメモリに対してリードが実行されると、リードされた位置の付近メモリセルに格納されたデータの信頼性が低下する。この現象は、NANDメモリのリードディスターブとして知られている。

概要

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

目的

一つの実施形態は、小さい回路によってリードアクセスの回数をカウントすることができるメモリシステムを提供する

効果

実績

技術文献被引用数
0件
牽制数
0件

この技術が所属する分野

(分野番号表示ON)※整理標準化データをもとに当社作成

該当するデータがありません

ライセンス契約や譲渡などの可能性がある特許掲載中! 開放特許随時追加・更新中 詳しくはこちら

請求項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に記載のメモリシステム。

技術分野

0001

本実施形態は、メモリシステムに関する。

背景技術

0002

NAND型フラッシュメモリNANDメモリ)を搭載したメモリシステムがある。NANDメモリに対してリードが実行されると、リードされた位置の付近メモリセルに格納されたデータの信頼性が低下する。この現象は、NANDメモリのリードディスターブとして知られている。

先行技術

0003

国際公開第2012/081165号
特開2012−146129号公報
米国特許出願公開第2014−0098600号明細書

発明が解決しようとする課題

0004

データの信頼性が所定レベル以下となることを防止するために、リードアクセス回数所定値を越えた場合には、リード位置周辺のデータを他の位置に退避する処理が実施される場合がある。

0005

一つの実施形態は、小さい回路によってリードアクセスの回数をカウントすることができるメモリシステムを提供することを目的とする。

課題を解決するための手段

0006

一つの実施形態によれば、メモリシステムは、第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カウント値をインクリメントする。

図面の簡単な説明

0007

図1は、第1の実施形態のメモリシステムの構成例を示す図である。
図2は、第1の実施形態のメモリチップの構成を示す模式的かつ例示的な図である。
図3は、第1の実施形態のブロックの状態遷移の一例を示す図である。
図4は、第1の実施形態のアクセスカウンタの構成例を示す図である。
図5は、第1の実施形態の同時にリードを開始する要素の数の具体例を説明するための図である。
図6は、第1の実施形態のブロックRAMおよびカウントRAMに格納される情報の一例を示す図である。
図7は、第1の実施形態のステートマシンの状態遷移の一例を説明するための図である。
図8は、第1の実施形態のステートマシンが制御する初期化信号およびブロック検索中信号の状態を含む各種信号遷移の具体例を示すタイミングチャートである。
図9は、第1の実施形態のアクセスカウンタの動作の一例を説明するフローチャートである。
図10は、第2の実施形態のアクセスカウンタの動作の一例を説明するためのシーケンス図である。

実施例

0008

以下に添付図面を参照して、実施形態にかかるメモリシステムを詳細に説明する。なお、これらの実施形態により本発明が限定されるものではない。

0009

(第1の実施形態)
図1は、第1の実施形態のメモリシステムの構成例を示す図である。メモリシステム1は、ホスト2と所定の通信インタフェースで接続される。ホスト2は、例えばパーソナルコンピュータ携帯情報端末、またはサーバなどが該当する。メモリシステム1は、ホスト2からアクセス要求リード要求およびライト要求)を受け付けることができる。各アクセス要求は、アクセス先を示す論理アドレスを伴う。論理アドレスは、メモリシステム1がホスト2に提供する論理アドレス空間内の位置を示すアドレス情報である。メモリシステム1は、ライト要求とともに、書き込み対象のデータを受け付ける。

0010

メモリシステム1は、メモリコントローラ100と、NAND型のフラッシュメモリ(NANDメモリ)200と、を備える。なお、メモリシステム1は、NANDメモリ200の代わりに任意の不揮発性メモリ具備することができる。例えば、メモリシステム1は、NANDメモリ200の代わりにNOR型のフラッシュメモリを具備することができる。

0011

NANDメモリ200は、1以上のメモリチップ201を含む。ここでは一例として、NANDメモリ200は4つのメモリチップ201を含む。各メモリチップ201は、チップ番号によって識別され得る。各メモリチップ201を区別する場合には、各メモリチップ201を、チップ番号0〜3を用いて、チップ#0〜チップ#3(Chip #0 〜 Chip #3)と表記することとする。

0012

NANDメモリ200は、メモリコントローラ100と、1以上のチャネルで接続されている。ここでは一例として、NANDメモリ200とメモリコントローラ100とは、2つのチャネル(Ch #0、Ch #1)で接続される。

0013

より具体的には、チップ#0およびチップ#1は、チャネル#0(Ch #0)に接続され、チップ#2およびチップ#3は、チャネル#1(Ch #1)に接続されている。メモリコントローラ100は、チャネル#0とチャネル#1とを独立に制御することができる。

0014

図2は、第1の実施形態のメモリチップ201の構成を示す模式的かつ例示的な図である。

0015

本図に例示されるように、メモリチップ201は、2つのサブアレイ203に分割されたメモリセルアレイ202と、2つの周辺回路204とを備える。各サブアレイ203は、2つの周辺回路204のうちの1つと対を構成している。サブアレイ203と周辺回路204との対は、プレーン(Plane)と称される。各メモリチップ201内の各プレーンは、プレーン番号によって識別される。

0016

ここでは、各メモリチップ201が備える2つのプレーンのうちの1つを、プレーン番号0を用いて、プレーン#0(Plane #0)と表記する。また、各メモリチップ201が備える2つのプレーンのうちの他のプレーンを、プレーン番号1を用いて、プレーン#1(Plane #1)と表記する。

0017

各サブアレイ203は、複数のブロック205を備える。ブロック205は、イレースが実行される最小単位の記憶領域である。つまり、1つのブロック205に格納された全てのデータは、一括にイレースされる。なお、各ブロック205は、複数のページを備える。ページは、一括にデータのリードおよびデータのライトが可能な記憶領域である。

0018

周辺回路204は、例えば、ロウデコーダカラムデコーダセンスアンプページバッファ等を含む。周辺回路204がプレーン毎に設けられていることにより、2つのプレーンのそれぞれは、互いに独立にリードを実行することが可能である。

0019

第1の実施形態では、1つのメモリチップ201に含まれる2つのプレーンは同じタイミングでリードを開始することができる。このような、1つのメモリチップ201に含まれる複数のプレーンが同時にリードを開始する処理は、マルチプレーンリードと称され得る。マルチプレーンリードの場合、複数のプレーンのそれぞれのアクセス先の物理アドレスが、1つのリードコマンドによって指定され得る。

0020

なお、メモリチップ201が備えるプレーンの数は2つに限定されない。

0021

ここで、ブロックの状態遷移について説明する。図3は、第1の実施形態のブロックの状態遷移の一例を示す図である。ハッチングされた矢印は、ブロックの状態遷移を示しており、実線の矢印は、データの移動を示している。

0022

ブロックの状態としては、少なくとも、オープンブロック、アクティブブロック、およびフリーブロックがある。1以上のアクティブブロックは、アクティブブロックプールを構成し、1以上のフリーブロックは、フリーブロックプールを構成する。

0023

オープンブロックとは、データの書き込み途中のブロックである。即ち、オープンブロックは、データが書き込まれ得る領域を残した状態にあるブロックである。

0024

アクティブブロックは、データの書き込みが終了したブロックのうちの、まだ再利用できないブロックである。データの書き込みが終了したブロックのうちの、有効なユーザデータが格納されているブロックは、アクティブブロックとして管理される。再利用とは、オープンブロックに遷移させることをいう。

0025

フリーブロックは、有効なユーザデータが格納されていないブロックである。フリーブロックは、再利用可能なブロックである。

0026

例えば、オープンブロックに1ブロック分のデータがライトされた後、そのオープンブロックはアクティブブロックに遷移する。アクティブブロックに格納されているライトデータの状態は、有効な状態と無効な状態とのうちの何れかである。

0027

アクティブブロックにあるデータ(第1のデータと表記する)が格納されている状態でホスト2から第1のデータと同一の論理アドレスを指定して第2のデータが送られてきた場合、メモリコントローラ100は、オープンブロックの空のページに第2のデータを書き込み、アクティブブロックに格納されている第1のデータを無効なデータとして管理する。

0028

アクティブブロックは、ガベージコレクションによってフリーブロックに遷移する。ガベージコレクションは、アクティブブロックであるブロックに格納されている有効なデータを他のブロック(オープンブロック)に転記(transcribe)して、転記元のブロックに格納されている全てのデータを無効化する処理をいう。これによって、転記元のブロックは、アクティブブロックからフリーブロックに遷移する。

0029

フリーブロックは、格納されているデータがイレースされた後、オープンブロックに遷移する。

0030

なお、データが有効とは、そのデータが格納されている位置の物理アドレスが論物変換テーブル(後述する)によって何れかの論理アドレスに対応付けられていることをいう。データが無効とは、そのデータが格納されている位置の物理アドレスが論物変換テーブルによって何れの論理アドレスにも対応付けられていないことをいう。また、「空の」状態とは、ここでは、無効なデータおよび有効なデータの何れも記憶されていない状態をいう。即ち、空のページは、データの書き込みが可能な空き領域である。

0031

図1に説明を戻す。メモリコントローラ100は、ホストインタフェース(I/F)101、制御回路102、バッファ103、NANDインタフェース(I/F)104、およびアクセスカウンタ105を備えている。メモリコントローラ100は、例えばSoC(System-On-a-Chip)として構成され得る。これらの構成要素は、不図示のクロック生成回路から供給されるクロックによって駆動される。なお、メモリコントローラ100の各機能は、ハードウェアソフトウェア、またはそれらの組み合わせによって実現され得る。

0032

バッファ103は、ホスト2とNANDメモリ200との間で転送中のデータや管理情報バッファリングされるメモリである。管理情報は、例えば、論物変換テーブルを含む。

0033

論物変換テーブルは、メモリシステム1がホスト2に提供する論理アドレス空間内の位置を示すアドレス情報(論理アドレス)とNANDメモリ200内の物理的な位置(メモリセルアレイ202内の位置)を示すアドレス情報(物理アドレス)とを対応付ける情報である。特定の論理アドレスに書き込みが集中した場合に、NANDメモリ200内の特定の位置の疲弊が進行することを避けるために、論物変換テーブルを更新することによって論理アドレスと物理アドレスとの関連付けが動的に変更可能になっている。

0034

なお、バッファ103を構成するメモリの種類は、特定の種類に限定されない。例えば、バッファ103は、DRAM(Dynamic Random Access Memory)、SRAM(Static Random Access Memory)、またはこれらの組み合わせによって構成される。

0035

ホストインタフェース101は、ホスト2とメモリシステム1との間の通信インタフェースの制御を実行する。ホストインタフェース101は、制御回路102による制御の下で、ホスト2とバッファ103との間のデータ転送を実行する。NANDインタフェース104は、制御回路102による制御の下で、NANDメモリ200とバッファ103との間のデータ転送を実行する。

0036

制御回路102は、CPU(Central Processing Unit)、FPGA(Field-Programmable Gate Array)、ASIC(Application Specific IntegratedCircuit)、などのハードウェア回路によって構成される。制御回路102は、ホストインタフェース101やNANDインタフェース104を制御することによって、ホスト2とNANDメモリ200との間のデータ転送を実現するハードウェア回路である。

0037

例えば、制御回路102は、バッファ103に格納されたデータをNANDメモリ200に書き込む際には、書き込み先の物理アドレスを指定して当該データのNANDメモリ200への書き込みをNANDインタフェース104に指示する。NANDインタフェース104は、制御回路102からの指示に基づいてNANDメモリ200に対するライトアクセスを実行する。

0038

また、制御回路102は、NANDメモリ200からデータを読み出す際には、読み出し元の物理アドレスを指定してデータの読み出しをNANDインタフェース104に指示を送る。NANDインタフェース104は、制御回路102からの指示に基づいてNANDメモリ200に対するリードアクセスを実行する。

0039

このように、制御回路102は、NANDインタフェース104を制御してNANDメモリ200にアクセスを実行することができる。制御回路102は、ホスト2からのアクセス要求に応じてNANDメモリ200に対するアクセスを実行することができるし、内部処理、即ちホスト2からのアクセス要求とは関係なく実施される処理、の一環としてNANDメモリ200に対するアクセスを実行することができる。

0040

内部処理は、一つのブロックからデータを読み出して、当該データを他のブロックに書き込む処理(転記処理)を含む。転記処理は、有効なデータのみを他のブロックに集める前述したガベージコレクションや、書き換え回数を均一化するためにデータの移動を行うウェアレベリングや、信頼性が低下したデータを書き直すリフレッシュなどを含む。

0041

制御回路102は、NANDメモリ200に対してリードアクセスを実行する際には、アクセス先を示す物理アドレスをアクセスカウンタ105に通知する。

0042

アクセスカウンタ105は、特定のブロックに対するリードアクセスの回数をカウントする。

0043

NANDメモリに対してリードが実行されると、リードされた位置の付近のメモリセルに格納されたデータの信頼性が低下する(リードディスターブ)。特に、オープンブロックにおいては、ある回数以上のリードアクセスが実行されると、そのオープンブロックの空いているワードラインイレース状態が悪化する。イレース状態が悪化したワードラインに対してライトアクセスが行われると、ビットエラーレートが増大してしまう。

0044

そこで、第1の実施形態では、リードアクセスの回数がオープンブロック毎にカウントされ、そのカウント値が、データの信頼性を回復させるリフレッシュを実行するか否かの判断に使用されることとした。

0045

図4は、第1の実施形態のアクセスカウンタ105の構成例を示す図である。本図に例示されるように、アクセスカウンタ105は、複数の第1カウント回路10と、第2カウント回路20と、割り込み回路30とを備える。

0046

アクセスカウンタ105が備える第1カウント回路10の数は、同時にリードを開始する要素の数の最大値に等しい。

0047

図5は、第1の実施形態の同時にリードを開始する要素の数の具体例を説明するための図である。例えば、制御回路102は、処理300a、処理300b、処理300c、処理300dをシリアルに実行することができる。処理300a、処理300b、処理300c、処理300dのそれぞれは、リードアクセスを指示する処理である。

0048

処理300aでは、制御回路102は、チャネル#0に接続されたチップ#0へのリードアクセスを決定して、時刻t1においてそのリードアクセスをNANDインタフェース104に対して指示する。NANDインタフェース104は、当該指示に応じて、チップ#0へのリードコマンドの送信を実行する(処理301a)。チップ#0では、当該リードコマンドに応じてメモリセルアレイ202からのデータの読み出しが実行される(処理302a)。

0049

処理300bでは、制御回路102は、チャネル#1に接続されたチップ#2へのリードアクセスを決定して、時刻t2においてそのリードアクセスをNANDインタフェース104に対して指示する。NANDインタフェース104は、当該指示に応じて、チップ#2へのリードコマンドの送信を実行する(処理301b)。チップ#2では、当該リードコマンドに応じてメモリセルアレイ202からのデータの読み出しが実行される(処理302b)。

0050

処理300cでは、制御回路102は、チャネル#0に接続されたチップ#1へのリードアクセスを決定して、時刻t3においてそのリードアクセスをNANDインタフェース104に対して指示する。NANDインタフェース104は、当該指示に応じて、チップ#1へのリードコマンドの送信を実行する(処理301c)。チップ#1では、当該リードコマンドに応じてメモリセルアレイ202からのデータの読み出しが実行される(処理302c)。

0051

処理300dでは、制御回路102は、チャネル#1に接続されたチップ#3へのリードアクセスを決定して、時刻t4においてそのリードアクセスをNANDインタフェース104に対して指示する。NANDインタフェース104は、当該指示に応じて、チップ#3へのリードコマンドの送信を実行する(処理301d)。チップ#3では、当該リードコマンドに応じてメモリセルアレイ202からのデータの読み出しが実行される(処理302d)。

0052

ここで処理301a〜301dで送信されるそれぞれのリードコマンドは、マルチプレーンリードのリードコマンドであってもよい。マルチプレーンリードのリードコマンドが送信された場合、対応するメモリチップ201では、2つのプレーンにおいて同時にリードが実行される。

0053

このように、図5の例によれば、各メモリチップ201へのリードコマンドは、それぞれ異なるタイミングで送信される。そして、各リードコマンドは、マルチプレーンリードであってもよい。したがって、図5の場合、1つのメモリチップ201に含まれる2つのプレーンが、同時にリードを開始できる要素に該当する。つまり、同時にリードを開始できる要素の数は、「2」となる。

0054

また、1つのメモリチップ201が有するプレーンの数をN個(但しNは2以上の自然数)とした場合、マルチプレーンリードによって最大でN個のプレーンが同時にリードを開始することができる。つまり、その場合は、1つのメモリチップ201に含まれるN個のプレーンが、同時にリードを開始できる要素に該当する。つまり、同時にリードを開始できる要素の数は「N」となる。

0055

さらに、仮に複数のメモリチップ201に同時にリードコマンドを送信可能である場合、同時にリードを開始できる要素の数はさらに増える。例えば、メモリコントローラ100が、チャネル#0に接続された1つのメモリチップ201とチャネル#1に接続された1つのメモリチップ201とに同時にリードコマンドを送信することが可能に構成された場合、異なるチャネルに接続された2つのメモリチップ201分の合計4つのプレーンが、同時にリードを開始できる要素に該当する。つまり、同時にリードを開始できる要素の数は、「4」となる。

0056

制御回路102は、同時にリードを開始できる要素のそれぞれのアクセス先(リードコマンドのアクセス先)を示す物理アドレスを発行して、発行した複数の物理アドレスをアクセスカウンタ105に通知する。アクセスカウンタ105では、複数の物理アドレスが同時に通知された場合には、各第1カウント回路10が当該複数の物理アドレスのうちの1つに対応して動作する。

0057

図5の例では、同時にリードを開始することができる要素は、各メモリチップ201の2つのプレーンである。よって、図4に例示されるように、アクセスカウンタ105には、2つのプレーンのうちのそれぞれ異なるプレーンをアクセス先とした物理アドレスに対応するために、2つの第1カウント回路10が設けられる。

0058

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のハードウェア構成について説明する。

0059

第1カウント回路10−0は、判定回路400、ブロックRAM(BLK_RAM)420、カウントRAM(COUNT_RAM)430、更新回路440、およびステートマシン(Finite State Machine :FSM)450を備える。

0060

ブロックRAM420は、それぞれオープンブロックを示す複数の物理アドレスが格納されるメモリである。カウントRAM430は、オープンブロック毎にリードアクセスのカウント値が格納されるメモリである。以降、特に断りが無い限り、オープンブロック毎のリードアクセスのカウント値を、単に、カウント値と表記する。なお、ブロックRAM420およびカウントRAM430のそれぞれは、任意の種類のメモリによって構成され得る。例えば、ブロックRAM420およびカウントRAM430のそれぞれは、DRAM、SRAM、フリップフロップ、またはこれらの組み合わせによって構成される。

0061

図6は、第1の実施形態のブロックRAM420およびカウントRAM430に格納される情報の一例を示す図である。ブロックRAM420は、それぞれ1つの物理アドレスが格納される複数のエントリを備えている。ブロックRAM420が備えるそれぞれのエントリは、ブロックRAM420の先頭から順番昇順ナンバリングされたエントリ番号(entry番号)によって識別される。

0062

同様に、カウントRAM430は、それぞれ1つのカウント値が格納される複数のエントリを備えている。カウントRAM430が備えるそれぞれのエントリは、カウントRAM430の先頭から順番に昇順にナンバリングされたエントリ番号によって識別される。

0063

以降、各RAM420,430のエントリ番号iのエントリを、エントリ#iと表記する場合がある。

0064

チップ#0〜チップ#3のプレーン#0に含まれるオープンブロックを示す物理アドレスが、メモリチップ201毎にグループ化され、同じグループに属する全ての物理アドレスがブロックRAM420の1つの連続領域に格納されている。

0065

例えば、チップ#0のプレーン#0に含まれる4つのオープンブロックを示す4つの物理アドレス_0〜物理アドレス_3は、ブロックRAM420の4つの連続したエントリ(エントリ#0〜エントリ#3)からなる連続領域に格納されている。また、チップ#1のプレーン#0に含まれる3つのオープンブロックを示す3つの物理アドレス_4〜物理アドエス_6は、ブロックRAM420の3つの連続したエントリ(エントリ#4〜エントリ#6)からなる連続領域に格納されている。

0066

つまり、ブロックRAM420は、それぞれ異なるメモリチップ201の1以上の物理アドレスが格納される4つの連続領域を備えている。

0067

カウントRAM430の各エントリには、そのエントリとエントリ番号が同じブロックRAM420のエントリに格納された物理アドレスが示すオープンブロックにかかるカウント値が格納される。つまり、ブロックRAM420のエントリ#iに格納された物理アドレスが示すオープンブロックのカウント値は、カウントRAM430のエントリ#iに格納される。

0068

再び図4に説明を戻す。判定回路400は、ブロックRAM420に格納された1以上の物理アドレスのそれぞれを逐次読み出して、ブロックRAM420から読み出した物理アドレスと制御回路102から受信したリードアクセスのアクセス先を示す物理アドレスとを比較することによって、リードアクセスのアクセス先がオープンブロックであるか否かを判定する。つまり、判定回路400は、ブロックRAM420に格納された1以上の物理アドレスから、リードアクセスのアクセス先を示す物理アドレスと同一の物理アドレスを検索する。

0069

判定回路400は、上述した動作を実現するために、第1レジスタ群401と、第1マルチプレクサ402と、第1加算器403と、第2マルチプレクサ404と、第1レジスタ405と、を備える。

0070

第1レジスタ群401は、それぞれが第1マルチプレクサ402のそれぞれ異なる入力端子に接続された複数のエントリを備えている。第1レジスタ群401の複数のエントリのそれぞれには、ブロックRAM420およびカウントRAM430のそれぞれ異なる連続領域の先頭エントリを示すエントリ番号が記録されている。

0071

ここでは、チップ#0のプレーン#0に対応した連続領域の先頭エントリのエントリ番号と、チップ#1のプレーン#0に対応した連続領域の先頭エントリのエントリ番号と、チップ#2のプレーン#0に対応した連続領域の先頭エントリのエントリ番号と、チップ#3のプレーン#0に対応した連続領域の先頭エントリのエントリ番号と、が第1レジスタ群401に格納されている。

0072

第1マルチプレクサ402は、制御回路102から通知された物理アドレスが選択信号として入力される。ここで、物理アドレスは、チップ番号とプレーン番号との両方を含んでいることとする。例えば、物理アドレスの一部は、チップ番号を示し、当該物理アドレスの他の一部は、プレーン番号を示す。第1マルチプレクサ402は、選択信号として入力された物理アドレスに含まれるチップ番号とプレーン番号とに基づいて、対応する連続領域の先頭エントリのエントリ番号を出力する。

0073

第1マルチプレクサ402の出力端子は、第2マルチプレクサ404が備える2つの入力端子のうちの1つに接続されている。第2マルチプレクサ404の出力端子は、第1レジスタ405に接続されている。第1レジスタ405に格納された値は、第1加算器403に入力される。第1加算器403は、入力された値に1を加算する。第1加算器403の出力は、第2マルチプレクサ404が備える2つの入力端子のうちの他の1つに入力される。

0074

第2マルチプレクサ404は、初期化信号が選択信号として入力される。初期化信号は、ステートマシン450によって操作される。初期化信号が活性化された状態である場合には、第2マルチプレクサ404は、第1マルチプレクサ402が出力したエントリ番号を第1レジスタ405に格納する。初期化信号が活性化されていない状態である場合には、第1レジスタ405に格納された内容を、第1加算器403が出力する1が加算されたエントリ番号で上書きする。なお、第1レジスタ405の内容の上書きのタイミングの詳細は後述される。

0075

第1レジスタ405に格納されたエントリ番号は、ブロックRAM420およびカウントRAM430のリード対象のエントリを示す。第1レジスタ405に格納されたエントリ番号は、ブロックRAM420のアドレス入力端子およびカウントRAM430のアドレス入力端子に入力される。以降、第1レジスタ405に格納されたエントリ番号を、リードエントリ(ReadEntry)と表記することがある。

0076

判定回路400は、さらに、第2レジスタ群406と、第3マルチプレクサ407と、第2レジスタ408と、第2加算器409と、第4マルチプレクサ410と、第3レジスタ411と、第1比較器412と、を備える。

0077

第2レジスタ群406は、それぞれが第3マルチプレクサ407のそれぞれ異なる入力端子に接続された複数のエントリを備えている。第2レジスタ群406の複数のエントリのそれぞれには、ブロックRAM420およびカウントRAM430のそれぞれ異なる連続領域を構成するエントリの数が記録されている。

0078

ここでは、チップ#0のプレーン#0に対応した連続領域を構成するエントリの数と、チップ#1のプレーン#0に対応した連続領域を構成するエントリの数と、チップ#2のプレーン#0に対応した連続領域を構成するエントリの数と、チップ#3のプレーン#0に対応した連続領域を構成するエントリの数と、が第2レジスタ群406に格納されている。

0079

第3マルチプレクサ407は、第1マルチプレクサ402と同様に、制御回路102から通知された物理アドレスが選択信号として入力される。第3マルチプレクサ407は、選択信号として入力された物理アドレスに含まれるチップ番号とプレーン番号とに基づいて、そのチップ番号とプレーン番号とによって特定されるメモリチップ201のプレーンに対応する連続領域を構成するエントリの数を出力する。

0080

第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つに入力される。

0081

第4マルチプレクサ410は、初期化信号が選択信号として入力される。初期化信号が活性化された状態である場合には、第4マルチプレクサ410は、第2レジスタ408の内容を第3レジスタ411に格納する。初期化信号が活性化されていない状態である場合には、第3レジスタ411の内容を、第3レジスタ411から出力された内容で上書きする。なお、第3レジスタ411の内容の上書きのタイミングの詳細については後述される。

0082

第3レジスタ411の内容は、第1レジスタ405に先頭エントリのエントリ番号がリードエントリとして格納されてからリードエントリがインクリメントされた回数を示す。以降、第3レジスタ411に格納された値を、エントリカウント(EntryCnt)と表記することがある。

0083

第3レジスタ411の内容、即ちエントリカウントは、第1比較器412が備える2つの入力端子のうちの1つに入力される。また、第3マルチプレクサ407の出力端子は、第1比較器412が備える2つの入力端子のうちの他の1つに接続されている。

0084

第1比較器412は、第3レジスタ411から入力されたエントリカウントと、第3マルチプレクサ407から入力された、連続領域を構成するエントリの数とを比較する。第1比較器412は、エントリカウントが連続領域を構成するエントリの数より小さい場合に、ブロックRAM420のリードイネーブル信号(ReadEn)を活性化された状態に維持する。第1比較器412は、エントリカウントが連続領域を構成するエントリの数以上である場合に、ブロックRAM420のリードイネーブル信号(ReadEn)を活性化されていない状態に維持する。

0085

判定回路400は、さらに、第2比較器413を備える。ブロックRAM420の出力は、第2比較器413が備える2つの入力端子のうちの1つに入力される。また、制御回路102から供給された、リードアクセスのアクセス先を示す物理アドレスは、第2比較器413が備える2つの入力端子のうちの他の1つに入力される。

0086

ブロックRAM420は、自身のリードイネーブル信号(ReadEn)が活性化された状態である場合に、アドレス入力端子から入力されたエントリ番号が示すエントリに格納された値、即ち物理アドレスを出力する。第2比較器413は、ブロックRAM420から出力された物理アドレスと、制御回路102から通知された物理アドレスと、を比較する。

0087

双方の物理アドレスが一致する場合、第2比較器413は、カウントRAM430のリードイネーブル信号(ReadEn)を活性化された状態に維持する。双方の物理アドレスが異なっている場合、第2比較器413は、カウントRAM430のリードイネーブル信号(ReadEn)を活性化されていない状態に維持する。

0088

ブロックRAM420から出力された物理アドレスがリードアクセスのアクセス先の物理アドレスと一致したとき、第2比較器413によってカウントRAM430のリードイネーブル信号(ReadEn)が活性化され、カウントRAM430は、その物理アドレスが示すオープンブロックにかかるカウント値を出力する。

0089

判定回路400は、上記のように構成されていることから、次のように動作することができる。

0090

即ち、判定回路400は、制御回路102から物理アドレスが通知された場合、第1マルチプレクサ402および第3マルチプレクサ407によって、当該物理アドレスが示す位置を含むメモリチップ201のプレーンに対応した連続領域の先頭エントリのエントリ番号と、当該連続領域を構成するエントリの数と、を選択する。

0091

これによって、判定回路400は、ブロックRAM420が備える複数のエントリのうちの、検索すべき連続領域を特定する。第1マルチプレクサ402から出力されたエントリ番号は、検索すべき連続領域の先頭エントリである。第3マルチプレクサ407から出力されたエントリの数は、検索すべき連続領域のエントリの数である。

0092

制御回路102から物理アドレスが通知された際、後述するステートマシン450によって、初期化信号が活性化される。これによって、検索すべき連続領域の先頭エントリのエントリ番号は、リードエントリとして第1レジスタ405に格納され、第3レジスタ411には、ゼロがエントリカウントとして格納される。

0093

エントリカウントが検索すべき連続領域のエントリの数より少ない場合、第1比較器412によってブロックRAM420のリードイネーブル信号が活性化された状態に維持され、これによって、ブロックRAM420は、読み出し可能な状態に維持される。その場合において、ブロックRAM420のリードエントリが示すエントリから物理アドレスが読み出され、読み出された物理アドレスは第2比較器413によって制御回路102から通知された物理アドレスと比較される。

0094

検索すべき連続領域の先頭エントリのエントリ番号がリードエントリとして格納され、ゼロがエントリカウントとして格納された後、初期化信号は、非活性化される。すると、第2マルチプレクサ404は、第1加算器403が接続された入力端子を選択し、第4マルチプレクサ410は、第2加算器409が接続された入力端子を選択する。

0095

その後、リードエントリおよびエントリカウントがそれぞれインクリメントされる。インクリメント後、依然としてカウントエントリが連続領域を構成するエントリの数より少ない場合、ブロックRAM420のリードエントリが示すエントリ、即ち前回に読み出しが行われたエントリに後続するエントリ、から物理アドレスが読み出され、読み出された物理アドレスは、前回同様、第2比較器413によって制御回路102から通知された物理アドレスと比較される。

0096

このように、判定回路400は、検索すべき連続領域の先頭から順番に物理アドレスを読み出して、読み出された物理アドレスと制御回路102から通知された物理アドレスとを比較する。判定回路400は、検索すべき連続領域から読み出された物理アドレスが制御回路102から通知された物理アドレスと一致するか、または読み出し位置が検索すべき連続領域の末尾エントリに至るまで、リードエントリをインクリメントしながら物理アドレスを読み出す処理を繰り返すことができる。即ち、判定回路400は、制御回路102から通知された物理アドレスが示す位置を含むメモリチップ201のプレーンに対応した連続領域から物理アドレスを逐次読み出すことで、当該連続領域の範囲から、制御回路102から通知された物理アドレスと同一の物理アドレスを検索する。

0097

連続領域から読み出された物理アドレスが制御回路102から通知された物理アドレスと一致することは、制御回路102から通知された物理アドレスが示す位置を含むブロック、換言するとリードアクセスのアクセス先のブロックがオープンブロックであることが判定されたことを意味する。

0098

判定回路400は、連続領域から読み出された物理アドレスが制御回路102から通知された物理アドレスと一致した場合、第2比較器413によって、カウントRAM430のリードイネーブル信号を活性化する。すると、カウントRAM430は、そのときアドレス入力端子に入力されたリードエントリに格納されているカウント値を出力する。カウントRAM430から出力されたカウント値は、オープンブロックに該当すると判定されたリードアクセスのアクセス先のブロックに関するカウント値に該当する。

0099

更新回路440は、カウントRAM430から出力されたカウント値を取得して、取得したカウント値をインクリメントし(即ち1だけ加算し)、インクリメント後のカウント値をカウントRAM430に書き戻す。即ち、更新回路440は、インクリメント前のカウント値を、インクリメント後のカウント値で上書きする。

0100

なお、カウントRAM430は、ライトイネーブル信号(WriteEn)が入力されるように構成されてもよい。例えば、カウントRAM430のライトイネーブル信号は、カウントRAM430のリードイネーブル信号が活性化されたことに応じて活性化され、ライトイネーブル信号が活性化されている間に更新回路440はインクリメント後のカウント値をカウントRAM430に書き戻してもよい。

0101

更新回路440は、さらに、インクリメント後のカウント値を割り込み回路30に出力する。

0102

ステートマシン450は、初期化信号を制御したり、ブロック(BLK)検索中信号を制御したりする。ブロック検索中信号は、第1カウント回路10が所定の処理を実行中であるか否かを示す信号である。ステートマシン450の詳細については後ほど詳細に説明する。

0103

第1カウント回路10−0は、上記の構成によって、リードアクセスのアクセス先がプレーン#0に含まれるオープンブロックである場合に、カウントRAM430に格納されたそのオープンブロックに関するカウント値をインクリメントするとともにインクリメント後のカウント値を出力することができる。

0104

第1カウント回路10−1は、第1カウント回路10−0と同様のハードウェア構成を備えている。但し、第1カウント回路10−1は、プレーン#1に対応した構成を有する。

0105

具体的には、第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と同様である。

0106

第1カウント回路10−1は、リードアクセスのアクセス先がプレーン#1に含まれるオープンブロックである場合に、第1カウント回路10−1のカウントRAM430に格納されたそのオープンブロックに関するカウント値をインクリメントするとともにインクリメント後のカウント値を出力することができる。

0107

第2カウント回路20は、第1カウント回路10とは別にカウント値が格納される第3レジスタ群461を備えており、第1カウント回路10が所定の処理を実行中である間に制御回路102から次の物理アドレスが通知された場合、第3レジスタ群461に格納されたカウント値をインクリメントする。即ち、第2カウント回路20は、第1カウント回路10がカウント出来なかったリードアクセスの回数をカウントする回路である。

0108

具体的には、第2カウント回路20は、デマルチプレクサ460と、第3レジスタ群461と、第5マルチプレクサ462と、第3加算器463と、第6マルチプレクサ464とを備える。

0109

第3レジスタ群461は、それぞれがデマルチプレクサ460のそれぞれ異なる出力端子と第5マルチプレクサ462のそれぞれ異なる入力端子とに接続された複数のエントリを備えている。第1カウント回路10がカウント出来なかったリードアクセスの回数が、各メモリチップ201のプレーン毎に格納されている。第2カウント回路20によってカウントされた、第1カウント回路10がカウント出来なかったリードアクセスの回数を、ドロップカウント(DropCnt)と表記する。

0110

デマルチプレクサ460および第5マルチプレクサ462には、制御回路102から通知された物理アドレスが選択信号として入力される。デマルチプレクサ460および第5マルチプレクサ462は、選択信号として入力された物理アドレスに含まれるチップ番号とプレーン番号とに対応するエントリを選択する。これによって、リードアクセスのアクセス先のメモリチップ201のプレーンに関するドロップカウントが格納されたエントリが入出力可能になる。

0111

第5マルチプレクサ462によって選択されたエントリに格納されている値は、第5マルチプレクサ462から出力される。第5マルチプレクサ462の出力は、第6マルチプレクサ464が備える2つの入力端子のうちの1つに入力される。

0112

また、第5マルチプレクサ462の出力は、第3加算器463にも入力される。第3加算器463は、入力された値に1を加算する。第3加算器463の出力は、第6マルチプレクサ464が備える2つの入力端子のうちの他の1つに入力される。

0113

第6マルチプレクサ464は、ブロック検索中信号が選択信号として入力される。ブロック検索中信号は、第1カウント回路10が所定の処理を実行中であるか否かを示す信号であり、ステートマシン450によって制御される。ブロック検索中信号が活性化された状態である場合、即ち第1カウント回路10が所定の処理を実行中である場合、第6マルチプレクサ464は、第3加算器463が接続された入力端子を選択する。

0114

すると、リードアクセスのアクセス先のメモリチップ201のプレーンに関するドロップカウントは、第5マルチプレクサ462を介して第3加算器463に入力され、第3加算器463によって1が加算され、加算後のドロップカウントが第6マルチプレクサ464およびデマルチプレクサ460を介して第3レジスタ群461に上書きされる。

0115

ブロック検索中信号が活性化されていない状態である場合、即ち第1カウント回路10が所定の処理を実行中でない場合、リードアクセスのアクセス先のメモリチップ201のプレーンに関するドロップカウントは、第3加算器463を経由せずに第6マルチプレクサ464に入力され、第6マルチプレクサ464の出力端子から出力される。その場合、第3レジスタ群461のそれぞれのエントリに格納されたドロップカウントは変化しない。

0116

割り込み回路30は、第1カウント回路10から出力されたカウント値と第2カウント回路20から出力されたドロップカウントとの合計値演算し、演算された合計値と所定のしきい値との比較に基づいて割り込み信号INTを出力する。

0117

より具体的には、割り込み回路30は、第4加算器470と、第4レジスタ471と、第3比較器472と、を備える。

0118

第4加算器470は、第1カウント回路10が備える更新回路440から出力されたインクリメント後のカウント値と、第2カウント回路20が備える第6マルチプレクサ464から出力されたドロップカウントと、を加算する。第4加算器470の出力は、第3比較器472が備える2つの入力端子のうちの1つに入力される。

0119

第4レジスタ471は、割り込み信号を出力するか否かの判定のためのしきい値が格納されている。第4レジスタ471は、第3比較器472が備える2つの入力端子のうちの他の1つに接続されている。

0120

第3比較器472は、第4加算器470が演算した2つのカウント値の合計値と、第4レジスタ471に格納されたしきい値と、を比較する。第3比較器472は、第4加算器470から入力された合計値が当該しきい値より大きい場合には、割り込み信号INTを出力する。第3比較器472は、第4加算器470から入力された合計値が当該しきい値を超えない場合には、割り込み信号INTを出力しない。

0121

第3比較器472が出力する割り込み信号INTは、制御回路102に入力される。

0122

なお、割り込み回路30は、第1カウント回路10から出力されたカウント値に基づいて通知を出力する出力回路の一例である。また、割り込み信号INTは、当該通知の一例である。割り込み回路30は、割り込み信号INTと異なる方法で通知を出力し得る。

0123

本図の例では、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毎に実施することが可能になっている。

0124

制御回路102は、NANDメモリ200に対するアクセスの進捗を把握している。制御回路102は、NANDメモリ200にリードコマンドが送信された後に割り込み信号INTの入力を検知した場合、そのリードコマンドによるリードアクセスのアクセス先のオープンブロックは、リードアクセスの回数が所定のしきい値(第4レジスタ471に格納されたしきい値)を越えたことを認識する。すると、制御回路102は、そのオープンブロックに格納されたデータをリフレッシュすると判断する。即ち、制御回路102は、そのオープンブロックを転記元とした転記処理を実行すると判断する。

0125

リフレッシュでは、制御回路102は、例えば、リードアクセスの回数が所定のしきい値を越えた対象のオープンブロックに格納された全てのデータを別のオープンブロックに転記して、対象のオープンブロックをフリーブロックに変更する。これによって、対象のオープンブロックに格納されたデータが別のオープンブロックに退避され、その結果、そのデータの信頼性が回復する。

0126

続いて、ステートマシン450について説明する。ここでは、第1カウント回路10−0が備えるステートマシン450について説明する。

0127

図7は、第1の実施形態のステートマシン450の状態遷移の一例を説明するための図である。本図に例示されるように、ステートマシン450の状態としては、アイドル状態(IDLE)、初期化状態(INIT)、検索中状態(SRCH)、および更新中状態(UPDATE)がある。

0128

アイドル状態は、制御回路102からの物理アドレスの通知に応じて第1カウント回路10−0が動作を開始することが可能である状態である。ステートマシン450は、アイドル状態において制御回路102から物理アドレスを受信すると、アイドル状態から初期化状態に遷移する。

0129

初期化状態は、制御回路102から物理アドレスが通知された直後の状態である。ステートマシン450は、アイドル状態から初期化状態に遷移した際に、初期化信号を活性化する。

0130

ステートマシン450は、初期化信号を非活性化して、その後、初期化状態からアイドル状態または検索中状態に遷移することができる。

0131

具体的には、ステートマシン450は、第1マルチプレクサ402や第3マルチプレクサ407から何も出力されなかった場合、初期化状態からアイドル状態に戻る。例えば、プレーン#1がアクセス先であった場合には、第1カウント回路10−0では、第1マルチプレクサ402や第3マルチプレクサ407から何も出力されないので、ステートマシン450は、アイドル状態に戻る。

0132

また、ステートマシン450は、第1マルチプレクサ402からエントリ番号が出力され、第3マルチプレクサ407からエントリの数が出力された場合、初期化状態から検索中状態に遷移する。例えば、プレーン#0がアクセス先であり、アクセス先のメモリチップ201がオープンブロックを備えている場合には、第1マルチプレクサ402からエントリ番号が出力され、第3マルチプレクサ407からエントリの数が出力される。

0133

検索中状態は、判定回路400が検索すべき連続領域から物理アドレスを逐次読み出して、読み出された物理アドレスと制御回路102から通知された物理アドレスとを比較する処理(検索処理と表記する)を実行中である状態である。

0134

ステートマシン450は、制御回路102から通知された物理アドレスの検索に成功した場合、即ち連続領域に制御回路102から通知された物理アドレスと同一の物理アドレスが格納されていた場合、検索中状態から更新中状態に遷移する。

0135

ステートマシン450は、制御回路102から通知された物理アドレスの検索に失敗した場合、即ち連続領域に制御回路102から通知された物理アドレスと同一の物理アドレスが格納されていなかった場合、検索中状態からアイドル状態に遷移する。

0136

更新中状態は、更新回路440がカウントRAM430に格納されたカウント値を更新する処理(以降、更新処理)を実行中である状態である。更新処理が完了すると、ステートマシン450は、アイドル状態に遷移する。

0137

ステートマシン450は、第1カウント回路10が所定の処理を実行中である場合に、ブロック検索中信号を活性化された状態に維持し、第1カウント回路10が所定の処理を実行中でない場合に、ブロック検索中信号を活性化されていない状態に維持する。

0138

第1の実施形態では、所定の処理は、検索処理および更新処理を含む。つまり、判定回路400が検索処理を実行中であるか、または更新回路440が更新処理を実行中であるかのいずれかである場合、ステートマシン450は、ブロック検索中信号を活性化された状態に維持し、判定回路400が検索処理を実行中でなく、かつ更新回路440が更新処理を実行中でない場合、ステートマシン450は、ブロック検索中信号を活性化されていない状態に維持する。

0139

図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)の状態がそれぞれ示されている。

0140

ステートマシン450は、最初は、アイドル状態になっている。判定回路400が制御回路102から物理アドレス(RqA)の通知を受信すると、ステートマシン450は、アイドル状態から初期化状態に遷移して(S1)、初期化信号を活性化する(S2)。

0141

ここで、RqAは、チップ#0のプレーン#0に含まれる、物理アドレス「BLK2」によって特定されるオープンブロック内の位置を示す物理アドレスとする。

0142

初期化信号が活性化されると、制御回路102から通知された物理アドレスが示すメモリチップ201のプレーンに対応した連続領域の先頭エントリのエントリ番号(Aとする)がリードエントリとして第1レジスタ405に格納されるとともに(S3)、第3レジスタ411にエントリカウントとしてゼロが格納される(S4)。また、当該連続領域を構成するエントリの数(「3」とする)が選択された状態となる。

0143

リードエントリは、ブロックRAM420のアドレス入力端子に供給され(S5)、供給されたリードエントリが示すエントリから物理アドレスが出力される。

0144

ステートマシン450は、次のクロックが供給されると、初期化信号を非活性化し、ブロック検索中信号を活性化し、検索中状態に遷移する。検索中状態では、リードエントリとエントリカウントは、クロックが供給される毎にインクリメントされる。そして、クロックが加わる毎にブロックRAM420のリードエントリが示すエントリから物理アドレスが出力される。

0145

例えば、ブロックRAM420のエントリ#A、エントリ#A+1、エントリ#A+2から順次、物理アドレスが読み出される。エントリ#A+2から物理アドレス「BLK2」が読み出されたとき、第2比較器413によって、エントリ#A+2から読み出された物理アドレス「BLK2」が、アクセス先のブロックを示す物理アドレス「BLK2」と一致することを検知する。すると、ステートマシン450は、検索中状態から更新中状態に遷移する(S6)。

0146

更新中状態では、第2比較器413によってカウントRAM430のリードイネーブル信号が活性化される。また、物理アドレス「BLK2」の読み出し元のエントリのエントリ番号「A+2」は、カウントRAM430のアドレス入力端子に供給される(S7)。すると、カウントRAM430のエントリ#A+2からカウント値(「C」とする)が出力される。

0147

カウント値「C」が読み出された後、カウントRAM430のライトイネーブル信号は、1クロックの間、例えばステートマシン450によって活性化状態に維持される。そのタイミングで、更新回路440は、カウント値「C」に1を加算することで得られる新たなカウント値「C+1」を、カウントRAM430のエントリ#A+2に上書き形式で書き込む(S8)。これによって、物理アドレス「BLK2」が示すオープンブロックにかかるカウント値のインクリメントが実現する。

0148

カウントRAM430のエントリ#A+2に対する上書き処理が完了すると、ライトイネーブル信号が活性化されていない状態にされるとともに、ステートマシン450は、更新中状態からアイドル状態に遷移する(S9)。ステートマシン450は、更新中状態からアイドル状態に遷移する際に、ブロック検索中信号を非活性化する。

0149

ブロック検索中信号が活性化された状態にあるときに新たな物理アドレス(RqB)が制御回路102から通知されると、第2カウント回路20が当該通知を処理する。RqBは、チップ#1のプレーン#0に含まれる位置を示している場合、第2カウント回路20では、チップ#1のプレーン#0に関するドロップカウントをインクリメントする(S10)。

0150

なお、図8に示した各信号や各値の時間的な推移は一例である。各信号や各値の時間的な推移は、図8に示した例に限定されない。

0151

続いて、第1の実施形態のアクセスカウンタ105の動作を説明する。図9は、第1の実施形態のアクセスカウンタ105の動作の一例を説明するフローチャートである。

0152

メモリコントローラ100がNANDメモリ200に対してリードアクセスを行う場合(S100、Yes)、アクセスカウンタ105の動作は、ブロック検索中信号が活性化されているか否かによって異なる(S101)。

0153

ブロック検索中信号が活性化されていない状態である場合(S101、No)、即ち、検索処理および更新処理がともに実行されていない場合、リードアクセスのアクセス先を含むメモリチップ201のプレーンに対応した連続領域の先頭エントリのエントリ番号と当該連続領域に含まれるエントリの数とが特定される(S102)。

0154

なお、検索処理は、例えば、S102からS107までの処理に該当する。また、更新処理は、例えば、S108からS112までの処理に該当する。

0155

S102の処理に続いて、エントリカウントがゼロにセットされ、S102の処理によって特定されたエントリ番号がリードエントリとしてセットされる(S103)。

0156

エントリカウントがS102の処理によって特定されたエントリ数より小さい場合には(S104、Yes)、ブロックRAM420のリードエントリが示す位置から値(すなわち物理アドレス)が読み出される(S105)。

0157

S105の処理によって読み出された値とリードアクセスのアクセス先を示す物理アドレスとが一致しない場合(S106、No)、エントリカウントおよびリードエントリがそれぞれ1だけインクリメントされ(S107)、S104の処理が再び実行される。

0158

S105の処理によって読み出された値とリードアクセスのアクセス先を示す物理アドレスとが一致した場合(S106、Yes)、即ちリードアクセスのアクセス先のブロックがオープンブロックに該当する場合、カウントRAM430のリードエントリが示す位置から値(即ちそのオープンブロックに関するカウント値)が読み出される(S108)。そして、読み出された値に1が加算される(S109)。

0159

S109の処理によって得られた値と、ドロップカウントとの合計値が、しきい値(第4レジスタ471に格納されたしきい値)より大きい場合(S110、Yes)、割り込み信号INTが出力される(S111)。制御回路102は、割り込み信号INTを受信すると、リードアクセスのアクセス先のブロックを転記元とした転記処理(リフレッシュ)の実行を決定することができる。

0160

S109の処理によって得られた値と、ドロップカウントとの合計値が、しきい値(第4レジスタ471に格納されたしきい値)より大きくない場合(S110、No)、またはS111の処理の後、カウントRAM430のリードエントリが示す位置に、S109の処理によって得られた値が上書きされる(S112)。そして、アクセスカウンタ105の動作が終了する。

0161

エントリカウントがS102の処理によって特定されたエントリの数より小さくない場合(S104、No)、即ちリードアクセスのアクセス先のブロックがオープンブロックに該当しない場合、アクセスカウンタ105の動作が終了する。

0162

メモリコントローラ100がNANDメモリ200に対してリードアクセスを行う場合において(S100、Yes)、ブロック検索中信号が活性化されている状態である場合(S101、Yes)、即ち検索処理かまたは更新処理が実行中である場合、第2カウント回路20によって、リードアクセスのアクセス先を含むメモリチップ201およびプレーンに関するドロップカウントがインクリメントされる(S113)。そして、アクセスカウンタ105の動作が終了する。

0163

このように、第1の実施形態によれば、アクセスカウンタ105は、それぞれオープンブロックを示す複数のアドレスが格納されるブロックRAM420と、オープンブロック毎にカウント値が格納されるカウントRAM430とを備える。判定回路400は、NANDメモリ200へのリードアクセスの際に、ブロックRAM420に格納された複数のアドレスを逐次読み出して、読み出したアドレスとリードアクセスのアクセス先のアドレスとを比較することによって、リードアクセスのアクセス先のブロックがオープンブロックであるか否かを判定する。更新回路440は、リードアクセスのアクセス先のブロックがオープンブロックに該当する場合に、当該ブロックに関するカウント値をインクリメントする。

0164

第1の実施形態と比較される技術(比較例)として、アクセスカウンタが、オープンブロックのアドレスとリードアクセスのアクセス先のアドレスとを比較する比較器と、カウント値をインクリメントする加算器と、を、オープンブロックの数だけ備える構成が考えられる。比較例の構成によれば、オープンブロックの数に応じて比較器および加算器の数が増大し、それによって、アクセスカウンタの回路の面積が増大する。

0165

これに対し、第1の実施形態によれば、ブロックRAM420にアドレスが格納された複数のオープンブロックに対するリードアクセスの回数をカウントの処理のために、1つの比較器(第2比較器413)と1つの加算器(更新回路440)とがあれば足りる。

0166

つまり、第1の実施形態によれば、比較例に比べ、比較器および加算器の数を低減することができる。したがって、第1の実施形態によれば、リードアクセスの回数のカウントを小さい回路で実現することができる。

0167

また、第1の実施形態では、判定回路400は、ブロックRAM420に格納された複数の物理アドレスから、リードアクセスのアクセス先のブロックの物理アドレスを検索する。よって、リードアクセス毎に要する時間が、比較例に比べて長くなる場合がある。

0168

その時間が、リードアクセスを実行してから次のリードアクセスが実行されるまでの時間より長くなってしまう場合には、第1カウント回路10は、当該次のリードアクセスの回数をカウントすることができない。

0169

これに対し、アクセスカウンタ105には、第1カウント回路10が所定の処理を実行中にリードアクセスが発生する毎にドロップカウントをインクリメントする第2カウント回路20が設けられた。

0170

これによって、第1カウント回路10がカウントできなかったリードアクセスの回数を、第2カウント回路20によってカウントすることが可能となる。即ち、リードアクセスのカウント漏れが防止される。

0171

なお、第2カウント回路20は、メモリチップ201が備えるプレーン毎にドロップカウントをカウントした。第2カウント回路20は、メモリチップ201毎にドロップカウントをカウントしてもよいし、プレーン毎にドロップカウントをカウントしてもよい。また、第2カウント回路20は、全てのメモリチップ201で1つのドロップカウントをカウントしてもよい。つまり、ドロップカウントがカウントされる記憶領域の粒度、即ち1つのドロップカウントに対応した記憶領域の大きさは、任意に設定可能である。

0172

また、第1の実施形態では、割り込み回路30は、第1カウント回路10によってカウントされたリードアクセスの回数と、第2カウント回路20によってカウントされたドロップカウントとの合計値と、第4レジスタ471に格納されたしきい値との比較に基づいて割り込み信号INTを出力する。

0173

これによって、第1カウント回路10がカウントできなかったリードアクセスがある場合であっても、第1カウント回路10がカウントできなかったリードアクセスを考慮して割り込み信号INTを出力することが可能となる。

0174

なお、ドロップカウントがカウントされる記憶領域の粒度が細かくなるほど、第4加算器470によって得られる値を各オープンブロックへのリードアクセスの実際の回数に近づけることが可能となる。つまり、各オープンブロックへのリードアクセスの回数を、より正確にカウントすることが可能となる。

0175

また、第1の実施形態では、制御回路102は、割り込み信号INTが出力された場合、オープンブロックのリフレッシュを実行する。

0176

これによって、オープンブロックに書き込まれたデータの信頼性が所定のレベル以下となる前に、そのデータの信頼性を回復させることが可能となる。

0177

なお、制御回路102は、割り込み信号INTが出力された場合に必ずしもオープンブロックのリフレッシュを実行しなくてもよい。制御回路102は、オープンブロックのリフレッシュを実行するか否かを判断するための判断基準が複数設けられ、複数の判断基準うちの1つとして、割り込み信号INTが出力されたか否かを使用してもよい。

0178

また、割り込み回路30は、第1カウント回路10によってカウントされたリードアクセスの回数に必ずしもドロップカウントを加算しなくてもよい。割り込み回路30は、第1カウント回路10によってカウントされたリードアクセスの回数と第4レジスタ471に格納されたしきい値との比較に基づいて割り込み信号INTを出力してもよい。

0179

また、第1の実施形態では、オープンブロックを示す複数の物理アドレスは、各メモリチップ201のプレーン毎にグループ分けされている。換言すると、オープンブロックは、それぞれチップ番号とプレーン番号とによって特定できる複数のグループに分類されている。ブロックRAM420は、それぞれがいずれかのグループに対応した複数の連続領域を備えている。判定回路400は、複数の連続領域のうちのリードアクセスのアクセス先のブロックを含むメモリチップ201のプレーンに対応した連続領域を特定し、当該連続領域に格納された物理アドレスを先頭から順番に読み出す。

0180

これによって、ブロックRAM420の先頭から順番に物理アドレスを読み出す場合に比べて、リードアクセスのアクセス先のブロックの物理アドレスを検索する処理に要する時間が短縮される。

0181

また、第1の実施形態では、ブロックRAM420のエントリ#iに格納された物理アドレスが示すオープンブロックのカウント値は、カウントRAM430のエントリ#iに格納される。つまり、各オープンブロックに関し、ブロックRAM420における物理アドレスの格納位置と、カウントRAM430におけるカウント値の格納位置とは、静的に対応している。

0182

オープンブロックの物理アドレスの格納位置とそのオープンブロックにかかるカウント値の格納位置と対応するので、双方の格納位置の対応関係の管理が簡単になる。

0183

なお、上記では、ブロックの状態の遷移の実行については説明しなかった。例えば、制御回路102がブロックの状態の遷移を実行してもよい。その場合、制御回路102は、フリーブロックをオープンブロックにしたり、オープンブロックをアクティブブロックにした際に、ブロックRAM420およびカウントRAM430の対応するエントリの内容を更新する。

0184

具体的には、制御回路102が、あるメモリチップ201のあるプレーンに属するあるブロック(第1のブロックと表記する)の状態をオープンブロックからアクティブブロックに変更し、第1のブロックと同じメモリチップ201の第1のブロックと同じプレーンに属する別のブロック(第2のブロックと表記する)の状態をフリーブロックからオープンブロックに変更した場合、ブロックRAM420の第1のブロックの物理アドレスが格納されていたエントリの内容を、第2のブロックの物理アドレスで更新する。また、制御回路102は、カウントRAM430の第1のブロックにかかるカウント値が格納されていたエントリに、ゼロを上書きする。これによって、新しくオープンブロックとして割り当てられた第2ブロックに対するリードアクセスの回数をカウントすることが可能となる。

0185

なお、以上では、オープンブロックをリードアクセスの回数のカウント対象とした場合について説明した。リードアクセスの回数のカウント対象は、これに限定されない。設計者は、任意の記憶領域をリードアクセスの回数のカウント対象として選択することができる。

0186

(第2の実施形態)
第1の実施形態では、ステートマシン450は、検索処理と更新処理とのいずれかが実行中の場合に、ブロック検索中信号を活性化された状態に維持し、検索処理と更新処理とのいずれも実行中でない場合に、ブロック検索中信号を活性化されていない状態に維持した。これによって、検索処理と更新処理とのいずれかが実行中の場合において新しくリードアクセスが実行される場合には、第2カウント回路20が、そのリードアクセスを、ドロップカウントとしてカウントした。

0187

ステートマシン450は、検索処理が実行中である場合には、ブロック検索中信号を活性化された状態に維持し、検索処理が実行中でない場合には、ブロック検索中信号を活性化されていない状態に維持してもよい。

0188

このように構成されることで、更新回路440が先行するリードアクセスに関する更新処理を実行中であっても、判定回路400は、新しく実行されるリードアクセスに関する検索処理を開始することができる。

0189

即ち、第1カウント回路10は、順次実行される複数のリードアクセスに対し、パイプライン処理的にカウントを実行することが可能となる。

0190

図10は、第2の実施形態のアクセスカウンタ105の動作の一例を説明するためのシーケンス図である。

0191

まず、制御回路102から物理アドレスが通知されると(S200)、判定回路400は、ブロックRAM420の連続領域に対し、物理アドレスの読み出しを実行する(S201)。S201の処理は、1回以上実施される。

0192

判定回路400は、ブロックRAM420から、制御回路102から通知された物理アドレスと同一の物理アドレスの応答受領すると(S202)、更新回路440は、カウントRAM430のリードエントリが示す位置からカウント値を読み出す(S203、S204、S205)。

0193

そして、更新回路440は、カウント値をインクリメントした後、インクリメント後のカウント値をカウントRAM430に書き込む(S206)。

0194

ここで、更新回路440が動作を行っている最中(S204〜S206)に、次の物理アドレスが制御回路102から通知された場合、判定回路400は、当該次の物理アドレスにかかる検索処理を開始することができる。

0195

即ち、当該次の物理アドレスが通知されると(S210)、判定回路400は、S201〜S203と同様の処理を、S211〜S213において実行する。続いて、更新回路440は、当該次の物理アドレスに対応した更新処理を実行することができる(S214〜S216)。

0196

判定回路400が当該次の物理アドレスにかかる検索処理を実行中(S211〜S213)に、さらに次の物理アドレスが通知されると(S220)、第2カウント回路20によって、対応するドロップカウントのインクリメントが実行される(S221)。

0197

このように、第2の実施形態では、判定回路400が検索処理を実行中である場合に(換言すると、判定回路400が動作中である場合に)、リードアクセスが発生すると、第2カウント回路20がドロップカウントをインクリメントする。また、判定回路400が検索処理を実行中でなく(換言すると、判定回路400が動作中でなく)、かつ更新回路440が更新処理を実行中である(換言すると、更新回路440が動作中である)場合、第2カウント回路20はドロップカウントのインクリメントを実行しない。

0198

これによって、第1カウント回路10は、順次実行される複数のリードアクセスに対し、パイプライン処理的にカウントを実行することが可能となり、ひいては第1カウント回路10によるカウント漏れの発生を抑制することが可能となる。

0199

なお、何れかのオープンブロックに関するカウント値とドロップカウントとの合計値が所定のしきい値を超えた場合、割り込み回路30は、割り込み信号INTを送信する(S230)。

0200

本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。

0201

1メモリシステム、2 ホスト、10 第1カウント回路、20 第2カウント回路、30割り込み回路、100メモリコントローラ、101ホストインタフェース、102制御回路、103バッファ、104NANDインタフェース、105アクセスカウンタ、200NANDメモリ、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比較器。

ページトップへ

この技術を出願した法人

この技術を発明した人物

ページトップへ

関連する挑戦したい社会課題

該当するデータがありません

関連する公募課題

該当するデータがありません

ページトップへ

技術視点だけで見ていませんか?

この技術の活用可能性がある分野

分野別動向を把握したい方- 事業化視点で見る -

(分野番号表示ON)※整理標準化データをもとに当社作成

該当するデータがありません

ページトップへ

おススメ サービス

おススメ astavisionコンテンツ

この 技術と関連性が強い技術

該当するデータがありません

この 技術と関連性が強い法人

該当するデータがありません

この 技術と関連性が強い人物

該当するデータがありません

この 技術と関連する社会課題

該当するデータがありません

この 技術と関連する公募課題

該当するデータがありません

astavision 新着記事

サイト情報について

本サービスは、国が公開している情報(公開特許公報、特許整理標準化データ等)を元に構成されています。出典元のデータには一部間違いやノイズがあり、情報の正確さについては保証致しかねます。また一時的に、各データの収録範囲や更新周期によって、一部の情報が正しく表示されないことがございます。当サイトの情報を元にした諸問題、不利益等について当方は何ら責任を負いかねることを予めご承知おきのほど宜しくお願い申し上げます。

主たる情報の出典

特許情報…特許整理標準化データ(XML編)、公開特許公報、特許公報、審決公報、Patent Map Guidance System データ