(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2023170516
(43)【公開日】2023-12-01
(54)【発明の名称】メモリシステム
(51)【国際特許分類】
G06F 12/06 20060101AFI20231124BHJP
G06F 12/00 20060101ALI20231124BHJP
G06F 13/22 20060101ALI20231124BHJP
G06F 13/366 20060101ALI20231124BHJP
【FI】
G06F12/06 550A
G06F12/00 560B
G06F13/22
G06F13/366
【審査請求】未請求
【請求項の数】10
【出願形態】OL
(21)【出願番号】P 2022082335
(22)【出願日】2022-05-19
(71)【出願人】
【識別番号】318010018
【氏名又は名称】キオクシア株式会社
(74)【代理人】
【識別番号】110002147
【氏名又は名称】弁理士法人酒井国際特許事務所
(72)【発明者】
【氏名】森 悠
(72)【発明者】
【氏名】田所 三徳
【テーマコード(参考)】
5B160
【Fターム(参考)】
5B160HA00
(57)【要約】
【課題】性能低下を防ぎつつ回路規模の増大を抑制したメモリシステムを提供すること。
【解決手段】メモリシステムは、コントローラと、チャネルを介してコントローラに接続された第1の数のメモリ要素と、を備える。コントローラは、第2の数のポーリング回路と、第1プロセッサと、を含む。各ポーリング回路は、ひとつのメモリ要素の指定を受信して、指定されたメモリ要素のステータスがレディー状態であることを検出するまで指定されたメモリ要素への問い合わせを繰り返すポーリング動作を実行する。第1プロセッサは、第2の数のポーリング回路のうちのポーリング動作を非実行中のポーリング回路を選択し、選択されたポーリング回路に第1の数のメモリ要素のうちのひとつのメモリ要素を指定してポーリング動作を実行させる。
【選択図】
図10
【特許請求の範囲】
【請求項1】
チャネルと、
コントローラと、
前記チャネルを介して前記コントローラに接続された第1の数のメモリ要素と、備え、
前記コントローラは、
それぞれは前記第1の数のメモリ要素のうちのひとつのメモリ要素の指定を受信して、前記指定されたメモリ要素のステータスがレディー状態であることを検出するまで前記指定されたメモリ要素への問い合わせを繰り返すポーリング動作を実行するように構成された第2の数のポーリング回路と、
前記第2の数のポーリング回路のうちの前記ポーリング動作を非実行中のポーリング回路を選択し、前記選択されたポーリング回路に前記第1の数のメモリ要素のうちのひとつのメモリ要素を指定して前記ポーリング動作を実行させる、ように構成された第1プロセッサと、を含む
メモリシステム。
【請求項2】
前記第1プロセッサは、前記第2の数のポーリング回路のうちの第1ポーリング回路が前記第1の数のメモリ要素のうちの第1メモリ要素に対する前記ポーリング動作を実行中に、前記第1の数のメモリ要素のうちの前記第1メモリ要素と異なるひとつのメモリ要素である第2メモリ要素に対し、内部動作の実行を指示する第1コマンドを発行し、前記第2の数のポーリング回路のうちの前記ポーリング動作を非実行中のポーリング回路のうちのひとつを選択し、前記選択されたポーリング回路である第2ポーリング回路に前記第2メモリ要素を指定して前記ポーリング動作を実行させる、ように構成された
請求項1に記載のメモリシステム。
【請求項3】
前記第1プロセッサは、前記第1ポーリング回路が前記第1メモリ要素に対する前記ポーリング動作を完了した後、前記第1の数のメモリ要素のうちの前記第2メモリ要素と異なるひとつのメモリ要素である第3メモリ要素に対し、内部動作の実行を指示する第2コマンドを発行し、前記第1ポーリング回路に前記第3メモリ要素を指定して前記ポーリング動作を実行させる、ように構成された
請求項2に記載のメモリシステム。
【請求項4】
前記第1の数のメモリ要素のそれぞれは、データのストレージであるメモリセルアレイと、前記メモリセルアレイに対してライトされるデータがバッファされ前記メモリセルアレイからリードされたデータがバッファされる第1バッファメモリと、前記コントローラとの間の転送データがバッファされる第2バッファメモリと、を含み、
前記ポーリング動作は、
前記指定されたメモリ要素が内部動作を実行していない第1レディー状態であることを前記選択されたポーリング回路が検出するまで前記指定されたメモリ要素への問い合わせを繰り返す第1ポーリング動作と、
前記第2バッファメモリがアクセス可能である第2レディー状態であることを前記選択されたポーリング回路が検出するまで前記指定されたメモリ要素への問い合わせを繰り返す第2ポーリング動作と、
を含み、
前記第1プロセッサは、
前記第1の数のメモリ要素のうちのひとつである第4メモリ要素に対し、内部動作の実行を指示する第3コマンドを発行し、
前記第2の数のポーリング回路のうちの前記ポーリング動作を非実行中のポーリング回路のうちのひとつを選択し、前記選択されたポーリング回路である第3ポーリング回路に前記第4メモリ要素を指定して前記第1ポーリング動作を実行させ、
前記第2の数のポーリング回路のうちの前記ポーリング動作を非実行中のポーリング回路のうちの前記第3ポーリング回路と異なるひとつを選択し、前記選択されたポーリング回路である第4ポーリング回路に前記第4メモリ要素を指定して前記第2ポーリング動作を実行させる、
ように構成された
請求項1から請求項3の何れか一項に記載のメモリシステム。
【請求項5】
前記第2の数のポーリング回路のそれぞれは、前記ポーリング動作の開始後、前記指定されたメモリ要素の前記ステータスが前記レディー状態であることを検出した場合、前記第1プロセッサに通知を送信する、ように構成された
請求項1から請求項3の何れか一項に記載のメモリシステム。
【請求項6】
前記問い合わせは、前記指定されたメモリ要素に対してステータスリードコマンドを発行することと、前記ステータスリードコマンドに応じて受信するステータス情報に基づいて前記指定されたメモリ要素のステータスが前記レディー状態であるか否かを判定することと、を含む
請求項1に記載のメモリシステム。
【請求項7】
前記第2の数のポーリング回路のそれぞれは、
タイマ回路と、
前記ステータスリードコマンドのコマンドシーケンスが格納されるメモリと、
前記タイマ回路を制御することによって設定された時間の経過を計測し、前記メモリに格納された前記コマンドシーケンスに従って前記時間の間隔で前記問い合わせを行うように構成された第2プロセッサと、を含む
請求項6に記載のメモリシステム。
【請求項8】
前記第1の数は前記第2の数と異なる
請求項1から請求項3の何れか一項に記載のメモリシステム。
【請求項9】
前記第1の数は前記第2の数より大きい
請求項8に記載のメモリシステム。
【請求項10】
前記コントローラは、前記第1の数のメモリ要素をバンクインターリーブの方式で並列に動作させるように構成された
請求項1から請求項3の何れか一項に記載のメモリシステム。
【発明の詳細な説明】
【技術分野】
【0001】
本実施形態は、メモリシステムに関する。
【背景技術】
【0002】
従来、複数のメモリ要素と、当該複数のメモリ要素を制御するメモリコントローラと、を備え、メモリコントローラが当該複数のメモリ要素をバンクインターリーブの方式で並列に動作させるメモリシステムが知られている。各メモリ要素は、例えばNAND型のフラッシュメモリのメモリチップである。
【先行技術文献】
【特許文献】
【0003】
【発明の概要】
【発明が解決しようとする課題】
【0004】
一つの実施形態は、性能低下を防ぎつつ回路規模の増大を抑制したメモリシステムを提供することを目的とする。
【課題を解決するための手段】
【0005】
一つの実施形態によれば、メモリシステムは、チャネルと、コントローラと、前記チャネルを介して前記コントローラに接続された第1の数のメモリ要素と、を備える。前記コントローラは、第2の数のポーリング回路と、第1プロセッサと、を含む。前記第2の数のポーリング回路のそれぞれは、第1の数のメモリ要素のうちのひとつのメモリ要素の指定を受信して、前記指定されたメモリ要素のステータスがレディー状態であることを検出するまで前記指定されたメモリ要素への問い合わせを繰り返すポーリング動作を実行するように構成される。前記第1プロセッサは、前記第2の数のポーリング回路のうちの前記ポーリング動作を非実行中のポーリング回路を選択し、前記選択されたポーリング回路に前記第1の数のメモリ要素のうちのひとつのメモリ要素を指定して前記ポーリング動作を実行させる、ように構成される。
【図面の簡単な説明】
【0006】
【
図1】第1の実施形態のメモリシステムのハードウェア構成の一例を示す模式的な図。
【
図2】第1の実施形態にかかるNANDパッケージの構成の一例を示す模式的な図。
【
図3】第1の実施形態にかかるメモリチップの構成の一例を示す模式的な図。
【
図4】第1の実施形態にかかるNAND I/Fコントローラの構成の一例を示す模式的な図。
【
図5】第1の実施形態にかかるポーリング指示のデータ構造の一例を示す模式的な図。
【
図6】第1の実施形態にかかるポーリング回路の構成の一例を示す模式的な図。
【
図7】1つのバンクにリード動作を実行させる第1の実施形態にかかる手順の一例を示す図。
【
図8】1つのバンクにリード動作を実行させる第1の実施形態にかかる手順の一例を示す図。
【
図9】1つのバンクにリード動作を実行させる第1の実施形態にかかる手順の一例を示す図。
【
図10】第1の実施形態にかかるNAND I/F CPUによるポーリング回路の制御の手順の一例を示す図。
【
図11】第1の実施形態にかかるポーリング回路の動作の手順の一例を示す図。
【
図12】第1の実施形態にかかる4個のポーリング回路の並列動作の一例を説明するための模式的な図。
【
図13】第2の実施形態にかかるNAND I/Fコントローラおよび当該NAND I/Fコントローラに1つのチャネルを介して接続された1つのNANDパッケージPKGの構成の一例を示す模式的な図。
【
図14】第2の実施形態にかかるキャッシュライト動作を説明するための模式的な図。
【
図15】第2の実施形態にかかるキャッシュリード動作を説明するための模式的な図。
【
図16】第2の実施形態にかかるキャッシュライト動作におけるポーリング動作の実行タイミングの一例を説明するためのタイミングチャート。
【発明を実施するための形態】
【0007】
実施形態にかかるメモリシステムは、メモリコントローラが複数のメモリ要素をバンクインターリーブの方式で並列に動作させる。複数のメモリ要素がバンクインターリーブの方式で並列に動作される場合、各メモリ要素はバンクと称される。メモリコントローラは、各メモリ要素がレディー状態であるかビジー状態であるかを知るために、各メモリ要素に対してポーリングを行う機能を有する。レディー状態は、データの入出力または内部動作の実行を指示するコマンドをメモリ要素が受信可能な状態である。ビジー状態は、データの入出力および内部動作の実行を指示するコマンドの何れもメモリ要素が受信不可能な状態である。各メモリ要素に対してポーリングを行う機能は、ハードウェア回路として実装される。ポーリングを行う機能を有するハードウェア回路は、ポーリング回路、と表記される。
【0008】
実施形態と比較される技術について説明する。実施形態と比較される技術は、比較例と表記される。比較例では、メモリコントローラは、複数のポーリング回路を有する。各ポーリング回路と各バンクとはハードウェアコーディングによって一対一に対応付けられ、各ポーリング回路と各バンクとの対応関係は固定されている。各ポーリング回路は、自身に対応付けられた1つのバンクに対してのみポーリングを行う。よって、例えば、メモリコントローラが備えるポーリング回路の数より少ない数のバンクがメモリシステムに実装された場合、余剰のポーリング回路が無駄になる。メモリコントローラが備えるポーリング回路の数より多い数のバンクがメモリシステムに実装された場合、余剰のバンクをポーリング回路により制御することが難しくなる。
【0009】
一般的に、メモリシステムにおいては、各バンクを等価に扱うことが求められている。よって、ポーリング回路による管理が行われるバンクと、ポーリング回路による管理が行われないバンクと、が存在する不等価な構成よりも、ハードウェア回路に頼らずにポーリングを制御する構成が採用される傾向がある。比較例において、ハードウェア回路に頼らずにポーリングを制御する構成が採用された場合、メモリコントローラが有するポーリング回路が無駄になってしまう。
【0010】
そこで、実施形態では、メモリコントローラは、複数のポーリング回路のそれぞれにバンクを動的に割り当てることが可能に構成される。この構成により、たとえポーリング回路の数よりも多い数のバンクがメモリシステムに実装された場合であっても、各バンクに対して複数のポーリング回路を用いた等価な制御を行うことが可能である。
【0011】
また、バンクインターリーブでは、各時点において複数のバンクの全てが動作せしめられるとは限らない。例えば、メモリシステムは、8個のバンクを有していたとしても、各時点において並列に動作できるバンクの最大数は8個に満たない場合がある。各時点において並列に動作できるバンクの最大数が4個である場合、実施形態によれば、設計者は、メモリコントローラに4個のポーリング回路を設けておけば、それぞれはひとつのバンクに一対一に対応付けられた8個のポーリング回路を有する場合と同等の性能を実現することが可能である。つまり、実施形態によれば、性能低下を抑制しつつ回路規模(具体的にはポーリング回路の数)の増大を抑制することが可能である。
【0012】
以下に添付図面を参照して、実施形態にかかるメモリシステムを詳細に説明する。なお、これらの実施形態により本発明が限定されるものではない。
【0013】
(第1の実施形態)
図1は、第1の実施形態のメモリシステムのハードウェア構成の一例を示す模式的な図である。
【0014】
メモリシステム1は、ホスト2と接続可能に構成される。メモリシステム1とホスト2との間の接続の規格は、特定の規格に限定されない。ホスト2は、例えばパーソナルコンピュータ、携帯情報端末、またはサーバなどである。
【0015】
ホスト2は、メモリシステム1にアクセスする際に、メモリシステム1にアクセス要求を送信する。アクセス要求は、ライト要求またはリード要求などである。
【0016】
メモリシステム1は、メモリコントローラ10と、1以上のNANDパッケージPKGと、RAM(Random Access Memory)30と、を備える。ここでは一例として、メモリシステム1は1以上のNANDパッケージPKGとして、NANDパッケージPKG0、NANDパッケージPKG1、NANDパッケージPKG2、およびNANDパッケージPKG3を備える。
【0017】
各NANDパッケージPKGは、複数のメモリチップ(後述されるメモリチップMC)をまとめて樹脂などで封止したものである。各メモリチップMCは、例えばNAND型のフラッシュメモリであり、入力されたデータを不揮発に記憶することができる。4個のNANDパッケージPKGは、ホスト2から受信したデータのストレージとして機能する。
【0018】
メモリコントローラ10は、ホスト2と4個のNANDパッケージPKGとの間のデータの転送の制御を含めた、メモリシステム1全体の制御を実行する。
【0019】
RAM30は、ホスト2と4個のNANDパッケージPKGとの間で転送されるデータがバッファされる領域、およびメモリコントローラ10が制御に使用する各種の管理データがバッファまたはキャッシュされる領域を備える。管理データは、例えば、論理アドレスと物理アドレスとの対応関係が記録されたL2P(Logical To Physical)翻訳情報を含む。
【0020】
メモリコントローラ10と4個のNANDパッケージPKGとは、それぞれ異なるチャネルによって接続される。具体的には、メモリシステム1は、チャネルCH0、チャネルCH1、チャネルCH2、およびチャネルCH3を備える。メモリコントローラ10とNANDパッケージPKG0とはチャネルCH0を介して相互に接続される。メモリコントローラ10とNANDパッケージPKG1とはチャネルCH1を介して相互に接続される。メモリコントローラ10とNANDパッケージPKG2とはチャネルCH2を介して相互に接続される。メモリコントローラ10とNANDパッケージPKG3とはチャネルCH3を介して相互に接続される。
【0021】
メモリコントローラ10は、4個のチャネルを独立に制御することができる。メモリコントローラ10は、4個のチャネルを並列に動作させることによって、4個のNANDパッケージPKGに対して並列にアクセスを行うことが可能である。
【0022】
メモリコントローラ10は、CPU11、ホストインタフェース(I/F)コントローラ12、およびそれぞれ個別にチャネルに接続される1以上のNANDインタフェース(I/F)コントローラ13を備える。ここでは、メモリコントローラ10は、1以上のNAND I/Fコントローラ13として、NAND I/Fコントローラ13-0、NAND I/Fコントローラ13-1、NAND I/Fコントローラ13-2、およびNAND I/Fコントローラ13-3を備える。
【0023】
NAND I/Fコントローラ13-0は、チャネルCH0が接続され、メモリコントローラ10とNANDパッケージPKG0との間のチャネルCH0を介した通信を制御する。NAND I/Fコントローラ13-1は、チャネルCH1が接続され、メモリコントローラ10とNANDパッケージPKG1との間のチャネルCH1を介した通信を制御する。NAND I/Fコントローラ13-2は、チャネルCH2が接続され、メモリコントローラ10とNANDパッケージPKG2との間のチャネルCH2を介した通信を制御する。NAND I/Fコントローラ13-3は、チャネルCH3が接続され、メモリコントローラ10とNANDパッケージPKG3との間のチャネルCH3を介した通信を制御する。
【0024】
ホストI/Fコントローラ12は、ホスト2とメモリコントローラ10との間の通信路3を介した通信を制御する。
【0025】
CPU11は、ファームウェアプログラムに基づいてメモリコントローラ10の制御を実行する。ファームウェアプログラムは、例えば何れかのNANDパッケージPKGのうちの何れかのメモリチップMCに予め格納されており、メモリシステム1の起動時にメモリチップMCからRAM30にロードされる。CPU11は、RAM30内のファームウェアプログラムを実行する。なお、ファームウェアプログラムの格納位置はメモリチップMCに限定されない。メモリコントローラ10の各部の機能は、専用ハードウェア、ファームウェアプログラムを実行するCPU11、またはこれらの組み合わせ、により実現され得る。
【0026】
図2は、第1の実施形態にかかるNANDパッケージPKGの構成の一例を示す模式的な図である。なお、4個のNANDパッケージPKGは共通した構成を備える。
図2には、4個のNANDパッケージPKGの代表として、NANDパッケージPKG0の構成が描画されている。また、
図2には、NANDパッケージPKG0に接続されたチャネルCH0の構成の一例が描画されている。なお、他の3個のチャネルは、チャネルCH0と同じ構成を備える。
【0027】
チャネルCH0は、データ信号DQ0~DQ7を転送する信号線、データストローブ信号DQSおよびDQSnを転送する一対の信号線、リードイネーブル信号REnおよびREを転送する一対の信号線、ライトイネーブル信号WEnを転送する信号線、コマンドラッチイネーブル信号CLEを転送する信号線、アドレスラッチイネーブル信号ALEを転送する信号線、チップイネーブル信号CE0を転送する信号線、およびチップイネーブル信号CE1を転送する信号線、を含む。なお、信号を表す符号の末尾に記された「n」は、負論理で動作せしめられる信号であることを表す。各信号が負論理で動作せしめられるか正論理で動作せしめられるかは任意に設計され得る。また、ここではデータ信号は8ビット幅の信号DQ0~DQ7として転送されることとしているが、データ信号のビット幅は8ビットに限定されない。また、チャネルCH0は、これら以外の任意の信号を転送する信号線を含んでいてもよい。また、チャネルCH0は、これらの信号線のいくつかを含んでいなくてもよい。
【0028】
チップイネーブル信号CE0およびCE1のそれぞれは、アクセス対象のメモリチップMCを含む1以上のメモリチップMCを一括にイネーブル状態とするための信号である。データストローブ信号DQSおよびDQSnは、データ信号DQ0~DQ7として送信されるデータを相手装置に取り込むように指示する信号である。なお、データストローブ信号DQSおよびDQSnは、差動信号を構成する。リードイネーブル信号REnおよびREは、データ信号DQ0~DQ7を出力するように相手装置に指示する信号である。なお、リードイネーブル信号REnおよびREは、差動信号を構成する。ライトイネーブル信号WEnは、データ信号DQ0~DQ7で送信されるコマンドまたはアドレスを取り込むように相手装置に指示する信号である。コマンドラッチイネーブル信号CLEは、データ信号DQ0~DQ7がコマンドであることを相手装置に示す信号である。アドレスラッチイネーブル信号ALEは、データ信号DQ0~DQ7がアドレスであることを相手装置に示す信号である。
【0029】
NANDパッケージPKG0は、インタフェース(I/F)チップIFCと、複数のメモリチップMCと、を備える。ここでは一例として、NANDパッケージPKG0は、複数のメモリチップMCとして、4個のメモリチップMC0~MC3を備える。なお、NANDパッケージPKG0は、必ずしもI/FチップIFCを備えていなくてもよい。
【0030】
I/FチップIFCには、チャネルCH0が接続される。つまり、インタフェースチップIFCは、チャネルCH0を介してNAND I/Fコントローラ13-0に接続される。インタフェースチップIFCは、NAND I/Fコントローラ13-0と4個のメモリチップMC0~MC3との間で、信号DQ0~DQ7,DQS,DQSn,REn,RE,WEn,CLE,ALE,CE0,CE1を転送する。
【0031】
NANDパッケージPKG0の内部には、チップイネーブル信号CE0を転送する信号線およびチップイネーブル信号CE1を転送する信号線が設けられ、これらの信号線がI/FチップIFCに接続される。そして、チップイネーブル信号CE0を転送する信号線にはメモリチップMC0およびメモリチップMC1が共通接続され、チップイネーブル信号CE1を転送する信号線にはメモリチップMC2およびメモリチップMC3が共通接続される。つまり、チップイネーブル信号CE0によってメモリチップMC0およびMC1が一括に選択され、チップイネーブル信号CE1によってメモリチップMC2およびMC3が一括に選択されるよう、NANDパッケージPKG0が構成されている。
【0032】
NANDパッケージPKG0の内部には、さらに、信号DQ0~DQ7,DQS,DQSn,REn,RE,WEn,CLE,ALEを転送する信号線群が設けられ、この信号線群がI/FチップIFCに接続される。また、これらの信号線群には、4個のメモリチップMC0~MC3が共通接続される。
【0033】
チップイネーブル信号CE0によって選択される2個のメモリチップMC0,MC1には、2個のメモリチップMC0,MC1の範囲でユニークな識別番号としてLUN(Logical Unit Number)が与えられている。ここでは一例として、メモリチップMC0にはLUN0が与えられており、メモリチップMC1にはLUN1が与えられている。
【0034】
同様に、チップイネーブル信号CE1よって選択される2個のメモリチップMC2,MC3には、2個のメモリチップMC2,MC3の範囲でユニークな識別番号としてLUNが与えられている。ここでは一例として、メモリチップMC2にはLUN0が与えられており、メモリチップMC3にはLUN1が与えられている。
【0035】
よって、NANDパッケージPKG0内の4個のメモリチップMC0~MC3のそれぞれは、チップイネーブル信号とLUNとの組み合わせによって特定できるよう、NANDパッケージPKG0が構成されている。
【0036】
図3は、第1の実施形態にかかるメモリチップMCの構成の一例を示す模式的な図である。なお、NANDパッケージPKG0~PKG3に具備されるメモリチップMC0~MC3は、共通した構成を備える。
図3には、これらのメモリチップMCの代表として、或るNANDパッケージPKGに具備されるメモリチップMC0の構成が描画されている。
【0037】
図3に示される例によれば、メモリチップMC0は、2つのサブアレイ23に分割されたメモリセルアレイ22と、2つのページバッファ24と、2つのデータキャッシュ25と、を備える。ページバッファ24と、データキャッシュ25は、例えば、サブアレイ23よりも高速なアクセスが可能、且つ、サブアレイ23と並列にアクセス可能な、揮発性のメモリで構成される。ページバッファ24と、データキャッシュ25は、例えば、それぞれSRAM(Static Random Access Memory)で構成される。ページバッファ24と、データキャッシュ25は、フリップフロップで構成されてもよい。メモリセルアレイ22に対するアクセスは、ライト(プログラムとも称される)、リード、およびイレースを含む。各サブアレイ23は、2つのページバッファ24のうちの1つと、2つのデータキャッシュ25のうちの1つとともに、1つのプレーンを構成する。つまり、メモリチップMC0は、2つのプレーンを備える。2つのプレーンは、互いに独立に動作可能である。各メモリチップMC0内の各プレーンは、プレーン番号によって識別される。なお、メモリチップMC0が備えるプレーンの数は2に限定されない。メモリチップMC0は、複数のプレーンに分割されていなくてもよい。
【0038】
メモリコントローラ10から入力されたデータをメモリチップMCが受け取り、入力されたデータをメモリチップMCがメモリセルアレイ22にライトする一連の動作は、本明細書では、ライト動作と表記される。メモリコントローラ10からメモリチップMCに入力されるデータは、ライトデータとも表記される。メモリチップMCがメモリセルアレイ22からデータをリードしてメモリコントローラ10に出力する一連の動作は、リード動作と表記される。メモリチップMCからメモリコントローラ10に出力されるデータは、リードデータとも表記される。
【0039】
ライト動作では、メモリチップMC0は、メモリコントローラ10から入力されたライトデータをデータキャッシュ25に受ける。メモリコントローラ10からデータキャッシュ25にライトデータを入力する動作は、データイン動作とも称される。データイン動作の後、メモリチップMC0は、データキャッシュ25に受けたライトデータをページバッファ24に転送し、転送完了後に、ページバッファ24からメモリセルアレイ22にライトデータをライトする。ページバッファ24からメモリセルアレイ22にデータをライトする動作は、プログラム動作とも称される。
【0040】
リード動作では、メモリチップMC0は、まず、リードデータをメモリセルアレイ22からページバッファ24に転送する。メモリセルアレイ22からページバッファ24にリードデータを転送する動作は、センス動作とも称される。メモリチップMC0は、センス動作によってページバッファ24に格納されたリードデータを、ページバッファ24からデータキャッシュ25に転送する。そして、メモリチップMC0は、データキャッシュ25からメモリコントローラ10にリードデータを出力する。データキャッシュ25からメモリコントローラ10にリードデータを出力する動作は、データアウト動作とも称される。
【0041】
このように、ページバッファ24には、メモリセルアレイ22に対してライトされるデータがバッファされ、かつメモリセルアレイ22からリードされたデータがバッファされるように構成されている。また、データキャッシュ25は、メモリコントローラ10との間の転送データがバッファまたはキャッシュされるように構成されている。
【0042】
各サブアレイ23は、複数の物理ブロック26を備える。1つの物理ブロック26にライトされたデータは、一括にイレースされる。
【0043】
なお、各物理ブロック26は、複数のページを備える。ページは、サブアレイ23に対するライト動作によるデータのライトおよびリード動作によるデータのリードの単位の記憶領域である。サブアレイ23に対してページ単位でリード動作およびライト動作が実行できるよう、各データキャッシュ25および各ページバッファ24は、少なくとも1ページ分の記憶容量を有する。
【0044】
このように、1個のNANDパッケージPKGは、4個のメモリチップMCを備え、4個のメモリチップMCのそれぞれは、2個のプレーンを備える。よって、1個のNANDパッケージPKGは、合計8個のプレーンを備える。メモリコントローラ10は、各NANDパッケージPKGが備える8個のプレーンをバンクインターリーブの方式で並列に動作させる。つまり、各プレーンは、バンクインターリーブの方式で並列に動作せしめられる複数のメモリ要素のうちのひとつのメモリ要素、つまりバンクに相当する。
【0045】
図1~
図3に示された構成によれば、各バンクは、チップイネーブル信号CE、LUN、およびプレーン番号によって特定される。LUNおよびプレーン番号のそれぞれは、アドレスの一部としてDQ0~DQ7を転送される。以降、プレーン番号はPL#と表記される場合がある。また、プレーン番号がX(Xは整数)のプレーンは、プレーンPL#Xと表記すされることがある。
【0046】
図4は、第1の実施形態にかかるNAND I/Fコントローラ13の構成の一例を示す模式的な図である。なお、NAND I/Fコントローラ13-0~13-3は、共通した構成を備える。
図4には、NAND I/Fコントローラ13-0~13-3の代表として、NAND I/Fコントローラ13-0の構成が描画されている。
【0047】
NAND I/Fコントローラ13-0は、NANDインタフェース(I/F)CPU130と、マルチプレクサMUX0,MUX1と、4個のポーリング回路131-0~131-3と、コマンドインタフェース(I/F)回路132と、PHY回路133と、端子群134と、を備える。
【0048】
端子群134は、チャネルCH0を構成する信号線群が接続される端子の群である。PHY回路133は、端子群134を介した通信を制御する回路である。
【0049】
NAND I/F CPU130は、上位のCPU(例えばCPU11)からの要求に応じたNANDパッケージPKG0に対するアクセスの制御を実行する。
【0050】
例えば、ライト動作が要求された場合、NAND I/F CPU130は、最初に、データインコマンドとライトデータとをNANDパッケージPKG0が備える8個のバンクのうちのターゲットのバンクに宛てて送信する。データインコマンドは、データイン動作によるライトデータの受信を指示するコマンドである。データイン動作の完了後、NAND I/F CPU130は、ターゲットのバンクに宛ててプログラムコマンドを送信する。プログラムコマンドは、プログラム動作の実行を指示するコマンドである。ターゲットのバンクは、プログラムコマンドに応じてプログラム動作を開始し、ターゲットのバンクのステータスはレディー状態からビジー状態に遷移する。ターゲットのバンクがプログラム動作を完了すると、ターゲットのバンクのステータスはビジー状態からレディー状態に遷移する。ターゲットのバンクのステータスがビジー状態からレディー状態に遷移すると、NAND I/F CPU130は、ターゲットのバンクに次の任意のコマンドを送信することが可能になる。
【0051】
リード動作が要求された場合、NAND I/F CPU130は、最初に、NANDパッケージPKG0が備える8個のバンクのうちのターゲットのバンクに宛ててセンスコマンドを送信する。センスコマンドは、バンクにセンス動作の実行を指示するコマンドである。ターゲットのバンクがセンスコマンドに応じてセンス動作を開始すると、ターゲットのバンクのステータスはレディー状態からビジー状態に遷移する。ターゲットのバンクがセンス動作を完了するとターゲットのバンクのステータスはビジー状態からレディー状態に遷移する。NAND I/F CPU130は、ターゲットのバンクがセンス動作を完了してレディー状態に遷移した後、ターゲットのバンクに宛ててデータアウトコマンドを送信する。データアウトコマンドは、バンクにデータアウト動作の実行を指示するコマンドである。ターゲットのバンクから出力されたリードデータは、RAM30に格納される。リードデータのRAM30への格納が完了すると、NAND I/F CPU130は、上位のCPUに対し、リード動作の完了を通知する。
【0052】
このように、NAND I/F CPU130が或るバンクにコマンドを送信すると、コマンドを受信したバンクは、コマンドに応じた内部動作(例えばセンス動作、プログラム動作など)を開始し、バンクのステータスはビジー状態に遷移する。バンクが内部動作を完了すると、バンクのステータスはレディー状態となり、NAND I/F CPU130は、バンクに対して次の動作の実行を指示することが可能になる。
【0053】
NAND I/F CPU130は、内部動作の実行を指示したバンクが内部動作を完了したか否かを知るために、ポーリング回路131を使用する。NAND I/F CPU130は、ターゲットのバンクに対して内部動作を実行させるためのコマンドを送信した後、4個のポーリング回路131のうちのひとつのポーリング回路131をターゲットのバンクにアサインして、当該ポーリング回路131にターゲットのバンクのステータスを監視させる。ターゲットのバンクにアサインされたポーリング回路131は、ターゲットのバンクのステータスがレディー状態であることを検出するまでターゲットのバンクに対してステータスを繰り返し問い合わせるポーリング動作を実行する。ポーリング回路131は、ポーリング動作では、ステータスリードコマンドを送信する。バンクは、内部動作を実行中であるか否かに関わらず、ステータスリードコマンドに応じてステータス情報を応答することが可能である。ポーリング回路131は、ステータスリードコマンドに応じてターゲットのバンクから受信するステータス情報に基づき、ターゲットのバンクのステータスがビジー状態であるかレディー状態であるかを判定する。ポーリング回路131は、ターゲットのバンクのステータスがビジー状態からレディー状態に遷移し、ターゲットのバンクのステータスがレディー状態であることをポーリング回路131が検出するまで、ステータスリードコマンドの送信とステータスの受信とのサイクルを繰り返し実行する。ターゲットのバンクのステータスがレディー状態であることをポーリング回路131が検出すると、ポーリング回路131は、NAND I/F CPU130に対し、ポーリング動作が完了したことを通知してポーリング動作を終了する。ポーリング回路131は、ポーリング動作が完了すると、同一または別のバンクのポーリング動作が可能な状態となる。
【0054】
NAND I/F CPU130は、マルチプレクサMUX0を介して4個のポーリング回路131およびコマンドI/F回路132に接続される。4個のポーリング回路131およびコマンドI/F回路132は、マルチプレクサMUX1を介してPHY回路133に接続される。
【0055】
NAND I/F CPU130は、各バンクに宛てたコマンド(例えば、データインコマンド、プログラムコマンド、センスコマンド、データアウトコマンド)をマルチプレクサMUX0を介してコマンドI/F回路132に入力する。コマンドI/F回路132は、受信したコマンドをマルチプレクサMUX1、PHY回路133、および端子群134を介して宛先のバンクへ送信する。
【0056】
また、NAND I/F CPU130は、4個のポーリング回路131の一部または全部に対し、それぞれ異なるバンクに対するポーリング動作の実行をマルチプレクサMUX0を介して指示することができる。4個のポーリング回路131のうちのポーリング動作の実行が指示された各ポーリング回路131は、マルチプレクサMUX1、PHY回路133、および端子群134を介してステータスリードコマンドの送信およびステータスの受信を行う。以降、ポーリング動作の実行の指示はポーリング指示と表記される。
【0057】
なお、マルチプレクサMUX1は、各瞬間において、4個のポーリング回路131およびコマンドI/F回路132のうちのひとつのみを選択中とすることができる。よって、チャネルCH0を介したコマンド、コマンドに応じたレスポンス、およびデータの転送は、各瞬間においては、4個のポーリング回路131およびコマンドI/F回路132のうちのひとつのみが実行することができる。つまり、NAND I/Fコントローラ13-0にマルチプレクサMUX1が具備されたことで、チャネルCH0の使用権の調停が可能になっている。
【0058】
図5は、第1の実施形態にかかるポーリング指示のデータ構造の一例を示す模式的な図である。
【0059】
ポーリング指示は、バンク情報と、第1インターバル情報と、第2インターバル情報と、を含む。
【0060】
バンク情報は、ターゲットのバンクを示す情報であり、具体的には、チップイネーブル信号CEの指定、LUNの指定、およびプレーン番号の指定の組み合わせである。
【0061】
第1インターバル情報は、ポーリング指示を受信してから最初にステータスリードコマンドを送信するまでのインターバルを指定する数値情報である。ポーリング回路131は、ポーリング指示を受信してから第1インターバル情報が示す時間が経過すると、初回のステータスリードコマンドの送信を行う。
【0062】
第2インターバル情報は、2回目以降のステータスリードコマンドの送信のインターバルを指定する数値情報である。ポーリング回路131は、初回のステータスリードコマンドの送信を行った後、第2インターバル情報が示す時間の間隔で、2回目以降のステータスリードコマンドの送信を行う。
【0063】
なお、
図5に示された例によれば、ポーリング指示は、2種類のインターバル情報(即ち第1インターバル情報および第2インターバル情報)を含んだ構成を有する。ポーリング指示は、必ずしも2種類のインターバル情報を含んでいなくてもよい。ポーリング指示は、1種類のインターバル情報を含み、ポーリング回路131は、当該インターバル情報が示す時間の間隔でステータスリードコマンドの送信を行うように構成されてもよい。
【0064】
図6は、第1の実施形態にかかるポーリング回路131の構成の一例を示す模式的な図である。なお、ポーリング回路131-0~131-3は、共通した構成を備える。
図6には、ポーリング回路131-0~131-3の代表として、ポーリング回路131-0の構成が描画されている。
【0065】
ポーリング回路131-0は、プロセッサ135、メモリ136、およびタイマ回路137を備える。
【0066】
メモリ136には、ステータスリードコマンドのコマンドシーケンスが格納される。なお、メモリ136は、特定の種類のメモリに限定されない。例えば、メモリ136は、SRAM、ROM(Read Only Memory)、またはフリップフロップなどで実装される。
【0067】
プロセッサ135は、メモリ136に格納されたコマンドシーケンスに従ってステータスリードコマンドの送信を行う。また、プロセッサ135は、タイマ回路137を、ポーリング指示に含まれるインターバル情報(第1インターバル情報および第2インターバル情報)が示す時間の経過の計測に使用する。プロセッサ135は、タイマ回路137を制御することによって、インターバル情報によって設定された時間の経過を繰り返し計測し、メモリ136に格納されたコマンドシーケンスに従って時間の間隔でバンクに対して問い合わせを行う。なお、プロセッサ135は、ファームウェアプログラムに従って動作する演算装置であってもよいし、FPGA(Field-Programmable Gate Array)またはASIC(Application Specific Integrated Circuit)などのハードウェア回路によって構成されてもよい。
【0068】
続いて、第1の実施形態のメモリシステム1の動作を説明する。メモリコントローラ10は、NANDパッケージPKG0~PKG3のそれぞれに個別のチャネルを介して接続されている。よって、メモリコントローラ10は、NANDパッケージPKG0~PKG3のそれぞれに対して互いに独立にアクセスすることができる。以降では一例として、NANDパッケージPKG0に着目して動作の説明を行う。
【0069】
NAND I/Fコントローラ13-0は、NANDパッケージPKG0に具備される8個のバンクのそれぞれに対し、リード動作およびライト動作を指示することができる。1つのバンクを動作させる手順の一例として、1つのバンクにリード動作を実行させる手順について説明する。
【0070】
図7、
図8、および
図9は、1つのバンクにリード動作を実行させる第1の実施形態にかかる手順の一例を示す図である。ここでは一例として、メモリチップMC1が備えるプレーンPL#0がリードのターゲットのバンクであることとする。
【0071】
図7に示されるように、NAND I/Fコントローラ13-0は、CPU11からリード要求を受信すると(S101)、リードのターゲットのバンクに宛てたセンスコマンドを発行する(S102)。
【0072】
センスコマンドは、マルチプレクサMUX0、コマンドI/F回路132、マルチプレクサMUX1、PHY回路133、および端子群134を介してNANDパッケージPKG0に送信される。このとき、チップイネーブル信号CE0がアサートされる。よって、センスコマンドは、メモリチップMC0およびMC1に送信される。
【0073】
また、リードのターゲットのバンクである、メモリチップMC1が備えるプレーンPL#0は、CE0、LUN1、およびPL#0の組み合わせによって特定される。よって、センスコマンドに含まれるアドレスを構成するビット群は、その一部にLUN1およびPL#0を含む。センスコマンドを受信したメモリチップMC0およびMC1のうち、LUN#1が与えられたメモリチップMC1は、センスコマンドに含まれるアドレスに基づき、自身が備えるプレーンPL#0がターゲットであることを認識する。そして、プレーンPL#0において、センスコマンドに応じたセンス動作が開始され、センス動作の開始に応じてプレーンPL#0のステータスはレディー状態からビジー状態に遷移する。
【0074】
NAND I/F CPU130は、センスコマンドの発行後、4個のポーリング回路131のうちの1個を選択して、メモリチップMC1が備えるプレーンPL#0のステータスを監視するためのポーリング指示を、選択されたポーリング回路131に送信する(S103)。ポーリング回路131の選択の手順については後述される。
【0075】
ポーリング指示は、バンク情報として、CE0、LUN1、およびPL#0の組み合わせを含む。また、
図7に示される例では、ポーリング回路131-0にポーリング指示が送信されている。ポーリング指示を受信したポーリング回路131-0は、ポーリング指示が含むバンク情報によって指定されたバンク、即ちメモリチップMC1が備えるプレーンPL#0のステータスの監視を開始する(S104)。具体的には、ポーリング回路131-0は、メモリチップMC1が備えるプレーンPL#0のステータスがレディー状態であることを検出するまで、ステータスリードコマンドの送信とステータス情報の受信との組み合わせを繰り返し実行する。ステータスの監視の手順の詳細については後述される。
【0076】
図8に説明を移す。ポーリング回路131-0は、ステータスの監視の開始後、メモリチップMC1が備えるプレーンPL#0のステータスがレディー状態であることを検出すると(S105)、NAND I/F CPU130にポーリング動作の完了を通知する(S106)。
【0077】
NAND I/F CPU130は、ポーリング動作の完了の通知によって、メモリチップMC1が備えるプレーンPL#0においてはセンス動作が完了したことを認識する。そこで、センス動作によってサブアレイ23からページバッファ24に転送されたリードデータを取得するために、NAND I/F CPU130は、データアウトコマンドを発行する(S107)。データアウトコマンドは、センスコマンドと同様の経路でメモリチップMC1に転送される。
【0078】
図9に説明を移す。メモリチップMC1は、データアウトコマンドに応じてリードデータの出力を開始する。リードデータは、NAND I/F CPU130の制御の元で、RAM30に転送される(S108)。リードデータのRAM30への転送が完了すると、NAND I/F CPU130は、CPU11にリード要求の実行完了を通知する(S109)。
【0079】
図7~
図9を用いて説明されたように、NAND I/F CPU130は、ターゲットのバンクにリード動作を実行させる場合、リード動作における内部動作であるセンス動作を実行させるためのコマンドとしてセンスコマンドを発行して、1個のポーリング回路131にターゲットのバンクのステータスの監視を指示する。ポーリング回路131は、ターゲットのバンクのステータスがレディー状態であることを検出すると、ポーリング動作を完了する。NAND I/F CPU130は、ポーリング動作の完了の通知を受信すると、リード動作におけるセンス動作の次の動作としてデータアウト動作をターゲットのバンクに実行させる。
【0080】
NAND I/F CPU130は、ターゲットのバンクにライト動作を実行させる場合においても、内部動作を実行させるためのコマンドの発行と、ターゲットのバンクのステータスの監視の指示とを実行する。ライト動作においては、プログラム動作が内部動作に相当する。ポーリング回路131は、ターゲットのバンクのステータスがレディー状態であることを検出すると、ポーリング動作を完了する。NAND I/F CPU130は、ポーリング動作の完了の通知を受信すると、プログラム動作が完了したことを認識する。NAND I/F CPU130は、ターゲットのバンクに対する次の動作の要求をCPU11からすでに受信していた場合には、当該次の動作をターゲットのバンクに実行させることが可能である。
【0081】
このように、NAND I/Fコントローラ13-0は、内部動作を実行させるためのコマンドを送信し、1個のポーリング回路131にターゲットのバンクのステータスを監視させることによってターゲットのバンクが内部動作を完了したか否かを判断する。
【0082】
図10は、第1の実施形態にかかるNAND I/F CPU130によるポーリング回路131の制御の手順の一例を示す図である。
【0083】
NAND I/F CPU130は、内部動作の実行を指示するコマンドの発行の前に、ポーリング動作を非実行中のポーリング回路131があるか否かを判定する(S201)。ポーリング動作を非実行中のポーリング回路131がない場合(S201:No)、NAND I/F CPU130は、ステップS201の判定処理を再び実行する。
【0084】
ポーリング動作を非実行中のポーリング回路131がある場合(S201:Yes)、NAND I/F CPU130は、内部動作の実行を指示するコマンドを発行する(S202)。そして、NAND I/F CPU130は、ポーリング動作を非実行中のポーリング回路131のうちのひとつを選択し(S203)、選択されたポーリング回路131にポーリング指示を送信する(S204)。
【0085】
続いて、NAND I/F CPU130は、ポーリング回路131からポーリング動作の完了の通知を受信したか否かを判定する(S205)。ポーリング回路131からポーリング動作の完了の通知を受信していない場合(S205:No)、NAND I/F CPU130は、再びステップS205の判定処理を実行する。ポーリング回路131からポーリング動作の完了の通知を受信した場合(S205:Yes)、NAND I/F CPU130は、ポーリング回路131に対する制御を終了し、NAND I/F CPU130は、内部動作の実行の対象のバンクに対する次のコマンドの送信が可能になる。
【0086】
図11は、第1の実施形態にかかるポーリング回路131の動作の手順の一例を示す図である。
【0087】
ポーリング回路131がポーリング指示を受信すると(S301)、ポーリング回路131に具備されるプロセッサ135は、タイマ回路137に時間の計測をスタートさせる。そして、プロセッサ135は、タイマ回路137による計測値に基づき、ポーリング指示に含まれる第1インターバル情報が示す時間がポーリング指示を受信してから経過したか否かを判定する(S302)。第1インターバル情報が示す時間が経過していない場合(S302:No)、プロセッサ135は、ステップS302の処理を再び実行する。
【0088】
第1インターバル情報が示す時間が経過した場合(S302:Yes)、プロセッサ135は、バンク情報によって指定されたターゲットのバンクにステータスリードコマンドを送信する(S303)。そして、プロセッサ135は、ターゲットのバンクのステータス情報を受信する(S304)。
【0089】
プロセッサ135は、ターゲットのバンクがレディー状態であることをステータス情報が示すか否かを判定する(S305)。ターゲットのバンクはレディー状態であることをステータス情報が示していない場合(S305:No)、プロセッサ135は、タイマ回路137をリセットして時間の計測を再スタートさせる。そして、プロセッサ135は、タイマ回路137による計測値に基づき、ポーリング指示に含まれる第2インターバル情報が示す時間がステータスリードコマンドを最後に送信してから経過したか否かを判定する(S306)。第2インターバル情報が示す時間が経過していない場合(S306:No)、プロセッサ135は、ステップS306の処理を再び実行する。
【0090】
第2インターバル情報が示す時間が経過した場合(S306:Yes)、プロセッサ135は、ステップS303の処理を再び実行する。
【0091】
ターゲットのバンクがレディー状態であることをステータス情報が示す場合(S305:Yes)、プロセッサ135は、NAND I/F CPU130にポーリング動作の完了を通知して(S307)、一連の動作が終了する。
【0092】
このように、各ポーリング回路131は、インターバル情報によって指定された時間が経過する毎にターゲットのバンクに対して問い合わせを繰り返し実行することが可能に構成される。
【0093】
NAND I/F CPU130は、4個のポーリング回路131に並列にポーリング動作を実行させることができる。よって、各時点において最大で4個のバンクが同時に動作するように、8個のバンクを制御することが可能である。例えば、NAND I/F CPU130は、内部動作を実行させるためのコマンドを、8個のバンクのうちの4個のバンクに対して送信のタイミングが重ならないように調整しながら順次送信する。そして、NAND I/F CPU130は、ひとつのポーリング回路131において4個のバンクのうちの或るバンクにかかるポーリング動作が終了すると、当該バンクに内部動作を実行させるためのコマンドを、残りの3個のバンクにかかるポーリング動作と並行して送信するように、当該ポーリング回路131に対して指示し得る。
【0094】
図12は、第1の実施形態にかかる4個のポーリング回路131の並列動作の一例を説明するための模式的な図である。本図において、横軸は時間を示し、各矩形は縦軸に示されたポーリング回路131がポーリング動作を行っている期間を示す。各矩形には、ステータスの監視対象のバンクの番号が記載されている。なお、NANDパッケージPKG0が備える8個のバンクには、0番から7番までのいずれか1つの識別番号が付されていることとしている。
【0095】
図12に示される例では、ポーリング回路131-0によるバンク#0に対するポーリング動作、ポーリング回路131-1によるバンク#1に対するポーリング動作、ポーリング回路131-2によるバンク#2に対するポーリング動作、およびポーリング回路131-3によるバンク#3に対するポーリング動作がこの順番で開始される。そして、ポーリング回路131-0によるバンク#0に対するポーリング動作、ポーリング回路131-1によるバンク#1に対するポーリング動作、ポーリング回路131-2によるバンク#2に対するポーリング動作、およびポーリング回路131-3によるバンク#3に対するポーリング動作がこの順番で完了する。
【0096】
ポーリング回路131-0によるバンク#0に対するポーリング動作が完了すると、ポーリング回路131-0によるバンク#4に対するポーリング動作が開始される。ポーリング回路131-1によるバンク#1に対するポーリング動作が完了すると、ポーリング回路131-1によるバンク#5に対するポーリング動作が開始される。ポーリング回路131-2によるバンク#2に対するポーリング動作が完了すると、ポーリング回路131-2によるバンク#6に対するポーリング動作が開始される。ポーリング回路131-3によるバンク#3に対するポーリング動作が完了すると、ポーリング回路131-3によるバンク#7に対するポーリング動作が開始される。そして、ポーリング回路131-0によるバンク#4に対するポーリング動作、ポーリング回路131-1によるバンク#5に対するポーリング動作、ポーリング回路131-2によるバンク#6に対するポーリング動作、およびポーリング回路131-3によるバンク#7に対するポーリング動作がこの順番で完了する。
【0097】
ポーリング回路131-0によるバンク#4に対するポーリング動作が完了すると、ポーリング回路131-0によるバンク#0に対するポーリング動作が開始される。ポーリング回路131-1によるバンク#5に対するポーリング動作が完了すると、ポーリング回路131-1によるバンク#1に対するポーリング動作が開始される。ポーリング回路131-2によるバンク#6に対するポーリング動作が完了すると、ポーリング回路131-2によるバンク#2に対するポーリング動作が開始される。ポーリング回路131-3によるバンク#7に対するポーリング動作が完了すると、ポーリング回路131-3によるバンク#3に対するポーリング動作が開始される。
【0098】
このように、各ポーリング回路131は、監視対象のバンクが動的にアサインされるよう構成されたことで、4個のポーリング回路131によって8個のバンクの並列動作を制御することが可能になる。つまり、第1の実施形態によれば、比較例のように8個のポーリング回路131を必要とすることなく、8個よりも少ない数のポーリング回路131で8個のバンクの並列動作を制御することが可能である。
【0099】
以上述べたように、第1の実施形態によれば、NAND I/Fコントローラ13は、複数のポーリング回路131およびNAND I/F CPU130を備える。各ポーリング回路131は、指定されたバンクのステータスがレディー状態であることを検出するまで当該バンクへの問い合わせを繰り返す、ポーリング動作を実行するように構成されている。NAND I/F CPU130は、ひとつのバンクに対し、内部動作の実行を指示するコマンドを発行する。また、NAND I/F CPU130は、ポーリング動作を非実行中のポーリング回路131のうちからひとつを選択し、選択されたポーリング回路131にコマンドのターゲットのバンクを指定してポーリング動作を実行させる。
【0100】
よって、複数のポーリング回路131によってポーリング回路131の数よりも多い数のバンクの並列動作を制御することが可能である。これにより、性能低下を防ぎつつ回路規模の増大を抑制することが可能である。
【0101】
また、第1の実施形態によれば、NAND I/F CPU130は、ひとつのポーリング回路131がひとつのバンクに対するポーリング動作を実行中に、他のポーリング回路131に対し、他のバンクに対してステータスを繰り返し問い合わせるポーリング動作を実行させることができる。
【0102】
よって、複数のポーリング回路131にそれぞれ異なるバンクに対するポーリング動作を並列に実行させることが可能になる。
【0103】
また、第1の実施形態によれば、NAND I/F CPU130は、ひとつのポーリング回路131が或るバンクに対するポーリング動作を完了した後、当該ポーリング回路131に、当該バンクと同じバンクまたは異なるバンクに対するポーリング動作を実行させることができる。
【0104】
よって、各ポーリング回路131にバンクを動的に割り当てることが可能である。
【0105】
(第2の実施形態)
第1の実施形態では、複数のポーリング回路131によってポーリング回路131より多い数のバンクの並列動作を制御する構成を説明した。第2の実施形態では、複数のポーリング回路131によってポーリング回路131より少ない数のバンクの並列動作を制御する構成について説明する。なお、以降では、主に第1の実施形態と異なる部分について説明される。第1の実施形態と同様の部分については、説明が省略されるか、または簡略的に説明される。
【0106】
図13は、第2の実施形態にかかるNAND I/Fコントローラ13aおよび当該NAND I/Fコントローラ13に1つのチャネルを介して接続された1つのNANDパッケージPKGの構成の一例を示す模式的な図である。
図13には、メモリコントローラ10に含まれる複数のNAND I/Fコントローラ13a、および複数のNANDパッケージPKGを代表して、チャネルCH0を介して相互に接続されるNAND I/Fコントローラ13a-0およびNANDパッケージPKG0の構成が描画されている。
【0107】
NAND I/Fコントローラ13a-0は、NAND I/F CPU130aと、マルチプレクサMUX0,MUX1と、16個のポーリング回路131-0~131-15と、コマンドI/F回路132と、PHY回路133と、端子群134と、を備える。
【0108】
NANDパッケージPKG0は、第1の実施形態と同様の構成を備える。即ち、NANDパッケージPKG0は、8個のバンクを備える。
【0109】
NAND I/F CPU130aは、各バンクに対し、キャッシュアクセス動作を実行させることが可能である。キャッシュアクセス動作は、キャッシュライト動作およびキャッシュリード動作を含む。
【0110】
図14は、第2の実施形態にかかるキャッシュライト動作を説明するための模式的な図である。ここでは一例として、メモリチップMC0のプレーンPL#0に対するキャッシュライト動作を説明するが、NAND I/F CPU130aは、他のバンクに対しても同様のキャッシュライト動作を実行させることができる。
【0111】
キャッシュライト動作においては、まず、データキャッシュ25にライトデータを入力するデータイン動作が実行される(S401)。このライトデータは、ブロックUのページnがライト先であることとする。
【0112】
続いて、データキャッシュ25に入力されたライトデータは、ページバッファ24に転送される(S402)。ページバッファ24に転送されたライトデータは、プログラム動作によって、ブロックUのページnにライトされる(S403)。
【0113】
ライトデータがデータキャッシュ25からページバッファ24に転送されると、データキャッシュ25は、たとえステップS403のプログラム動作が実行中であっても、次にライトされるライトデータの入力を受け付けることが可能になる。よって、ステップS403のプログラム動作が実行中に、新たなライトデータをデータキャッシュ25に入力するデータイン動作が実行される(S404)。
【0114】
ステップS403のプログラム動作が完了すると、ページバッファ24は利用可能になる。よって、ステップS404によってデータキャッシュ25に入力された新たなライトデータは、ステップS402およびステップS403と同様の手順で、データキャッシュ25からページバッファ24に転送され、その後、プログラム動作によって、サブアレイ23の別の位置にライトされる。
【0115】
このように、キャッシュライト動作によれば、あるライトデータをサブアレイ23にライトするプログラム動作中に次のライトデータをデータキャッシュ25に入力するデータイン動作が実行される。よって、複数ページ分のデータを順次ライトする場合に、複数ページ分のライト動作に要するトータルの時間を短縮することができる。
【0116】
図15は、第2の実施形態にかかるキャッシュリード動作を説明するための模式的な図である。ここでは一例として、メモリチップMC0のプレーンPL#0に対するキャッシュリード動作を説明するが、NAND I/F CPU130aは、他のバンクに対しても同様のキャッシュリード動作を実行させることができる。
【0117】
キャッシュリード動作においては、まず、センス動作が実行される(S501)。ここではセンス動作によってブロックXのページiからページバッファ24にリードデータが転送されている。ページバッファ24に格納されたリードデータは、データキャッシュ25に転送される(S502)。そして、データキャッシュ25に格納されたリードデータは、データアウト動作によってNAND I/Fコントローラ13a-0に出力される(S503)。
【0118】
ステップS503のデータアウト動作と並行して、別のリードデータのセンス動作が実行される(S504)。ここでは、ブロックYのページjからページバッファ24にリードデータが転送されるセンス動作が実行される。ステップS504の処理の実行期間は、ステップS503の処理の実行期間と一部または全部で重複する。ステップS503およびステップS504の後、ページバッファ24に格納されたリードデータがデータキャッシュ25に転送される(S505)。そして、データキャッシュ25に格納されたリードデータは、データアウト動作によってNAND I/Fコントローラ13a-0に出力される(S506)。
【0119】
ステップS506のデータアウト動作と並行して、さらに別のリードデータのセンス動作が実行される(S507)。ここでは、ブロックZのページkからページバッファ24にリードデータが転送されるセンス動作が実行される。ステップS507の処理の実行期間は、ステップS506の処理の実行期間と一部または全部で重複する。
【0120】
このように、キャッシュリード動作では、あるリードデータをデータキャッシュ25から出力させるデータアウト動作中に次のリードデータをサブアレイ23からリードするセンス動作が実行される。よって、複数ページ分のデータを順次リードする場合に、複数ページ分のリード動作に要するトータルの時間を短縮することができる。
【0121】
キャッシュライト動作およびキャッシュリード動作では、NAND I/Fコントローラ13a-0がデータキャッシュ25にアクセス可能な場合には、内部動作(プログラム動作またはセンス動作)が実行中であるか否かに関わらずデータキャッシュ25へのアクセス(データイン動作またはデータアウト動作)が実行される。
【0122】
第2の実施形態では、ステータスリードコマンドに応じてメモリチップMCが出力するステータス情報には、トゥルーレディー/トゥルービジー情報と、キャッシュレディー/キャッシュビジー情報と、が含まれる。
【0123】
トゥルーレディー/トゥルービジー情報は、バンクのステータスが、内部動作が完了した状態(即ちトゥルーレディー状態)であるか否かを示す。トゥルービジー状態は、内部動作が完了していない状態である。
【0124】
キャッシュレディー/キャッシュビジー情報は、バンクのステータスが、データキャッシュ25へのアクセス(例えばデータキャッシュ25へのデータの入力動作)が可能である状態(即ちキャッシュレディー状態)であるか否かを示す。キャッシュビジー状態は、データキャッシュ25へのアクセスが可能でない状態である。
【0125】
メモリチップMCは、ステータスリードコマンドに応じてステータス情報を出力する。ステータス情報は、例えば、8ビット幅を有し、データ信号DQ0~DQ7として送信される。例えば、ステータス情報のうちのDQ5を送信されるビットが、キャッシュレディー/キャッシュビジー情報を示す。また、DQ6を送信されるビットが、トゥルーレディー/トゥルービジー情報を示す。
【0126】
図13に示された構成例によれば、ポーリング回路131の数は、パッケージPKG0に含まれるバンクの数よりも多い。そこで、第2の実施形態によれば、余剰のポーリング回路131を利用することで、キャッシュレディー/キャッシュビジー情報およびトゥルーレディー/トゥルービジー情報は、それぞれ異なるポーリング回路131によって個別に監視される。
【0127】
一例として、キャッシュライト動作におけるポーリング動作の実行タイミングについて説明する。
図16は、第2の実施形態にかかるキャッシュライト動作におけるポーリング動作の実行タイミングの一例を説明するためのタイミングチャートである。
図16には、コマンドの送信タイミング、トゥルーレディー状態とトゥルービジー状態との間の遷移タイミング、キャッシュレディー状態とキャッシュビジー状態との間の遷移タイミング、およびデータイン動作の実行タイミングが描画されている。また、
図16に示される例では、ライトデータD0、ライトデータD1、およびライトデータD2がこの順番でバンクに入力されることとしている。トゥルーレディー状態とトゥルービジー状態との間の遷移タイミングを示すチャートにおいて、H(High)レベルはトゥルーレディー状態を示し、L(Low)レベルはトゥルービジー状態を示すこととする。キャッシュレディー状態とキャッシュビジー状態との間の遷移タイミング示すチャートにおいて、Hレベルはキャッシュレディー状態を示し、Lレベルはキャッシュビジー状態を示すこととする。
【0128】
まず、時刻t0においては、ターゲットのバンクのステータスはトゥルーレディー状態かつキャッシュレディー状態である。よって、時刻t0において、NAND I/F CPU130aは、ライトデータD0をターゲットのバンクのデータキャッシュ25に入力するデータイン動作を開始する。データイン動作の終了時(時刻t1)には、NAND I/F CPU130aは、プログラム動作の開始を指示するプログラムコマンドC0を発行し、プログラムコマンドC0はターゲットのバンクに入力される。
【0129】
時刻t1にライトデータD0の入力が完了すると、データキャッシュ25からページバッファ24にライトデータD0が転送された後、ライトデータD0のプログラム動作が開始される。データキャッシュ25からページバッファ24へのライトデータD0の転送が開始したタイミング(即ち時刻t1)に、ターゲットのバンクのステータスはトゥルーレディー状態からトゥルービジー状態に遷移する。また、時刻t1において、データキャッシュ25がアクセス可能でなくなり、これによってターゲットのバンクのステータスはキャッシュレディー状態からキャッシュビジー状態に遷移する。
【0130】
データキャッシュ25からページバッファ24へのライトデータD0の転送が完了すると(時刻t2)、データキャッシュ25は再びアクセス可能になる。よって、ターゲットのバンクのステータスはキャッシュビジー状態からキャッシュレディー状態に遷移する。ただし、時刻t2においては、ライトデータD0のプログラム動作が完了していないので、ターゲットのバンクのステータスはトゥルービジー状態に維持されている。
【0131】
時刻t2において、ターゲットのバンクのステータスがキャッシュビジー状態からキャッシュレディー状態に遷移すると、NAND I/F CPU130a-0は、次のライトデータであるライトデータD1をターゲットのバンクのデータキャッシュ25に入力するデータイン動作を開始する。データイン動作の終了時(時刻t3)には、NAND I/F CPU130aは、プログラム動作の開始を指示するプログラムコマンドC0を発行し、プログラムコマンドC0はターゲットのバンクに入力される。また、時刻t3において、データキャッシュ25がアクセス可能でなくなり、これによってターゲットのバンクのステータスはキャッシュレディー状態からキャッシュビジー状態に遷移する。
【0132】
時刻t4において、ターゲットのバンクは、ライトデータD0のプログラム動作を完了する。すると、ターゲットのバンクは、ライトデータD0に続いて入力されたライトデータD1のプログラム動作を開始する。よって、ターゲットのバンクのステータスは依然としてトゥルービジー状態に維持される。
【0133】
なお、ひとつのライトデータのプログラム動作に要する時間は、時間tProgと表記される。時刻t1から時刻t4は、ライトデータD0のプログラム動作に要した時間tProgである。
【0134】
時刻t5において、ターゲットのバンクのステータスがキャッシュビジー状態からキャッシュレディー状態に遷移すると、NAND I/F CPU130aは、次のライトデータであるライトデータD2をターゲットのバンクのデータキャッシュ25に入力するデータイン動作を開始する。データイン動作の終了時(時刻t6)には、NAND I/F CPU130aは、プログラム動作の開始を指示するプログラムコマンドC0を発行し、プログラムコマンドC0はターゲットのバンクに入力される。また、時刻t6においては、データキャッシュ25がアクセス可能でなくなり、これによってターゲットのバンクのステータスはキャッシュレディー状態からキャッシュビジー状態に遷移する。
【0135】
時刻t7において、ターゲットのバンクは、ライトデータD1のプログラム動作を完了する。すると、ターゲットのバンクは、ライトデータD1に続いて入力されたライトデータD2のプログラム動作を開始する。よって、ターゲットのバンクのステータスは依然としてトゥルービジー状態に維持される。
【0136】
時刻t4から時刻t7は、ライトデータD1のプログラム動作に要した時間tProgである。
【0137】
時刻t8において、ターゲットのバンクのステータスがキャッシュビジー状態からキャッシュレディー状態に遷移する。しかしながら、
図16に示される例では、後続して入力されるライトデータが存在しないため、データイン動作が実行されない。
【0138】
時刻t9において、ターゲットのバンクは、ライトデータD2のプログラム動作を完了する。よって、ターゲットのバンクのステータスはトゥルービジー状態からトゥルーレディー状態に遷移する。NAND I/F CPU130aは、後続して入力するライトデータが依然存在しないため、キャッシュライト動作の終了を指示するキャッシュライト終了コマンドC1をターゲットのバンクに送信する。
【0139】
時刻t7から時刻t9は、ライトデータD2のプログラム動作に要した時間tProgである。
【0140】
図16に示された一連の動作において、時刻t1~t2の期間、時刻t3~t5の期間、および時刻t6~t8の期間のそれぞれは、ターゲットのバンクのステータスがキャッシュビジー状態に維持された期間である。NAND I/F CPU130aは、時刻t1~t2の期間、時刻t3~t5の期間、および時刻t6~t8の期間のそれぞれを、或るポーリング回路131(
図16の例ではポーリング回路131-0)に監視させる。
【0141】
ポーリング回路131-0は、インターバル情報によって指定された時間間隔でステータスリードコマンドをターゲットのバンクに送信し、レスポンスとして受信したステータス情報を構成するビット群のうちのDQ5として受信したビットを参照することによって、ターゲットのバンクのステータスがキャッシュレディー状態であるか否かを判定する。
【0142】
ターゲットのバンクのステータスがキャッシュレディー状態であることをポーリング回路131-0が検出すると、ポーリング回路131-0はポーリング動作の完了をNAND I/F CPU130aに通知する。NAND I/F CPU130aは、ポーリング動作の完了の通知によって、ターゲットのバンクのデータキャッシュ25がアクセス可能になったことを認識し、次のライトデータの入力およびコマンドC0の入力を行う。
【0143】
図16に示された一連の動作において、時刻t1~t9の期間は、ターゲットのバンクのステータスがトゥルービジー状態に維持された期間である。NAND I/F CPU130aは、時刻t1~t9の期間を、ポーリング動作を非実行中のポーリング回路131(
図16の例ではポーリング回路131-1)に監視させる。
【0144】
ポーリング回路131-1は、インターバル情報によって指定された時間間隔でステータスリードコマンドをターゲットのバンクに送信し、レスポンスとして受信したステータス情報を構成するビット群のうちのDQ6として受信したビットを参照することによって、ターゲットのバンクのステータスがトゥルーレディー状態であるか否かを判定する。
【0145】
ターゲットのバンクのステータスがトゥルーレディー状態であることをポーリング回路131-1が検出すると、ポーリング回路131-1はポーリング動作の完了をNAND I/F CPU130aに通知する。NAND I/F CPU130aは、ポーリング動作の完了の通知によって、ターゲットのバンクはまったく動作を行っていない状態になったことを認識する。このとき、ライトデータD2に後続する、ターゲットのバンクを宛先としたライトデータが存在しなければ、NAND I/F CPU130aは、キャッシュライト動作を終了すべく、キャッシュライト終了コマンドC1をターゲットのバンクに送信する。
【0146】
ここで、第2の比較例について説明する。第2の比較例によれば、ひとつのポーリング回路に、ターゲットのバンクのキャッシュレディー状態およびキャッシュビジー状態の監視を実行させる。そして、ターゲットのバンクのステータスがキャッシュレディー状態になったことを当該ポーリング回路が検出したタイミングで、当該ポーリング回路に、ターゲットのバンクのトゥルーレディー状態/トゥルービジー状態の監視を実行させる。このような構成によれば、メモリコントローラの視点では、ターゲットのバンクのステータスがキャッシュレディー状態に遷移し、次のデータイン動作ができる状態になったとしても、明示的に監視をかけ直さない限りはそれを検出することができない。よって、キャッシュライト動作の効率が悪化する。
【0147】
これに対し、第2の実施形態によれば、NAND I/F CPU130aは、ターゲットのバンクに対し、内部動作の実行を指示するコマンドを送信すると、複数のポーリング回路131のうちのひとつのポーリング回路131に、ターゲットのバンクのステータスがトゥルーレディー状態であるか否かを監視するポーリング動作を指示し、複数のポーリング回路131のうちの他のひとつのポーリング回路131に、ターゲットのバンクのステータスがキャッシュレディー状態であるか否かを監視するポーリング動作を指示する。
【0148】
よって、監視をかけ直しが必要ないので、効率よくキャッシュアクセス動作を行うことが可能になる。よって、キャッシュライト動作の効率の悪化が抑制される。
【0149】
また、第2の実施形態によれば、NAND I/F CPU130aは、ひとつのポーリング回路131によるキャッシュレディー状態の監視の結果に基づいてキャッシュプログラム動作の制御を行いながら、別のポーリング回路131によるトゥルーレディー状態の監視の結果に基づいてキャッシュプログラム動作の終了の判断を行うことが可能になる。よって、NAND I/F CPU130aの負荷が抑制され、これによって複数のメモリチップMCの利用効率が向上する。
【0150】
なお、第1の実施形態では、各NAND I/Fコントローラ13は、バンクの数よりも少ない数のポーリング回路131を備えることとした。各NAND I/Fコントローラ13がバンクの数と同じまたは多い数のポーリング回路131を備える場合であっても第1の実施形態を適用することが可能である。
【0151】
また、第2の実施形態では、各NAND I/Fコントローラ13aは、バンクの数よりも多い数のポーリング回路131を備えることとした。各NAND I/Fコントローラ13aがバンクの数と同じまたは少ない数のポーリング回路131を備える場合であっても第2の実施形態を適用することが可能である。
【0152】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【0153】
1 メモリシステム、2 ホスト、3 通信路、10 メモリコントローラ、11 CPU、12 ホストI/Fコントローラ、13 NANDI/Fコントローラ、22 メモリセルアレイ、23 サブアレイ、24 ページバッファ、25 データキャッシュ、26 物理ブロック、130 CPU、131 ポーリング回路、132 コマンドI/F回路、133 PHY回路、134 端子群、135 プロセッサ、136 メモリ、137 タイマ回路。