(57)【要約】【課題】複数ＣＰＵ間での排他制御を考慮する必要がなく、簡単な制御で、他の動作の割り込み無く複数チャネルの不揮発性メモリの消去動作を実施すること。【解決手段】複数のＣＰＵと複数チャネルの不揮発性メモリとを有する半導体記憶装置であって、複数チャネルの不揮発性メモリ毎の消去動作用のアドレスからなるアドレスリストをアドレスキュー（１４）に設定する手段（）と、いずれかのＣＰＵから発生された単一の消去動作要求に応じて前記アドレスリストに記載の各アドレスについての一連の消去動作コマンドを連続して発生するコマンド制御部（１８）と、前記一連の消去動作コマンドを各アドレスに対応したチャネルの不揮発性メモリに与える分配器（２４）とを具備する。【選択図】図１
2011159070.tif 000002
【特許請求の範囲】
【請求項１】
複数のＣＰＵと複数チャネルの不揮発性メモリとを有する半導体記憶装置であって、
複数チャネルの不揮発性メモリ毎の消去動作用のアドレスからなる消去用アドレスリストを生成する手段と、
いずれかのＣＰＵから発生された単一の消去動作要求に応じて前記消去用アドレスリストに記載の各アドレスについての一連の消去動作コマンドを連続して発生する手段と、
前記一連の消去動作コマンドを各アドレスに対応したチャネルの不揮発性メモリに与える手段と、
を具備する半導体記憶装置。
【請求項２】
前記不揮発性メモリは書き込み動作の実行前に消去動作の実行が必要なメモリからなる請求項１記載の半導体記憶装置。
【請求項３】
前記消去用アドレスリストは複数チャネルの不揮発性メモリ毎の書き込み動作用のアドレスからなる書き込み用アドレスリストと同じである請求項１記載の半導体記憶装置。
【請求項４】
複数のＣＰＵと複数チャネルの不揮発性メモリとを有する半導体記憶装置の制御方法であって、
複数チャネルの不揮発性メモリ毎の消去動作用のアドレスからなる消去用アドレスリストを生成することと、
いずれかのＣＰＵから発生された単一の消去動作要求に応じて前記消去用アドレスリストに記載の各アドレスについての一連の消去動作コマンドを連続して発生することと、
前記一連の消去動作コマンドを各アドレスに対応したチャネルの不揮発性メモリに与えることと、
を具備する制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はＮＡＮＤ型フラッシュメモリ等の不揮発性メモリを含む半導体記憶装置に関し、特に複数のＣＰＵと複数チャネルの不揮発性メモリを有し、消去要求または書き込み要求を複数チャネルの不揮発性メモリに分配し、複数チャネルの消去動作または書き込み動作を並列に実行する半導体記憶装置及びその制御方法に関する。
【背景技術】
【０００２】
不揮発性記憶装置の一例として複数のメモリバンクで並列書き込み動作や並列消去動作が可能なマルチバンクを有する装置が特許文献１に開示されている。一般に不揮発性メモリ、例えばフラッシュメモリはデータの書き込みの際に上書きができないので、データの書き込み動作を実行する前に消去動作を実行する必要がある。
【０００３】
この装置は、不揮発性メモリセルを備え夫々独立にメモリ動作可能な複数個のメモリバンクと、メモリバンクのメモリ動作を制御する制御部を有する。制御部は、一のメモリバンクを指定した動作指示に応答するメモリ動作中でも他のメモリバンクを指定した動作指示に応答してメモリ動作を開始させるインターリーブ動作と、一のメモリバンクを指定した動作指示に応答するメモリ動作の開始前に続けて他のメモリバンクを指定したメモリ動作の指示があるとき双方のメモリバンクのメモリ動作を並列に開始させる並列動作とを制御可能である。このため、複数のメモリバンクを有するマルチバンク形態のフラッシュメモリにおいて、複数のメモリバンクで並列に消去動作あるいは書き込み動作を行うことができ、消去動作または書き込み動作によるビジー状態の期間を短縮することができる。
【０００４】
セクタ消去コマンドにおいて１個のメモリバンクに対するセクタ消去を指示するコマンドは、消去対象セクタアドレスＳＡ１、ＳＡ２の後に、消去動作の開始を指示するコマンドコード“Ｂ０Ｈ”を付加すればよい。２個のメモリバンクに対して並列にセクタ消去を指示するには、第１のセクタアドレス情報ＳＡ１、ＳＡ２に続けて第２のセクタアドレス情報ＳＡ※１、ＳＡ※２を配置し、最後にコマンドコード“Ｂ０Ｈ”を付加すればよい。第２のセクタアドレス情報ＳＡ※１、ＳＡ※２が指定するメモリバンクは第１のセクタアドレス情報ＳＡ１、ＳＡ２が指定するメモリバンクとは相違することが必要である。
【０００５】
特許文献１の図８に示す２メモリバンク並列消去動作のタイミングチャートにおいては、コマンドコード“２０Ｈ”に続けて、第１のセクタアドレス情報ＳＡ（１）、ＳＡ（２）と第２のセクタアドレス情報ＳＡ（３）、ＳＡ（４）とが入力され、最後にコマンドコード“Ｂ０Ｈ”が入力される。コマンドデコーダはコマンドコード“２０Ｈ”の入力を検知した後、セクタアドレスＳＡ（１）、ＳＡ（２）に含まれるメモリバンク指定情報Ａｍで指定されるメモリバンクを認識すし、そのメモリバンクにセクタアドレスＳＡ（１）、ＳＡ（２）を供給する。次に、コマンドデコーダはその後のセクタアドレスＳＡ（３）、ＳＡ（４）に含まれるメモリバンク指定情報Ａｍで指定されるメモリバンクを認識し、そのメモリバンクにセクタアドレスＳＡ（３）、ＳＡ（４）を供給する。双方のセクタアドレスで指定されるメモリバンクが相異する場合、コマンドコード“Ｂ０Ｈ”の入力を条件に、夫々のセクタアドレスで指定されるセクタの並列消去動作をＣＰＵに実行させる。ＣＰＵ２１はＲＯＭが保有する消去動作プログラムを実行して消去動作を行う（オートイレーズ）。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００３−３６６８１号公報（段落０００５、００２２−００２３、００５４）
【発明の概要】
【発明が解決しようとする課題】
【０００７】
このように特許文献１記載の装置は、複数のメモリバンクを有するマルチバンク形態のフラッシュメモリにおいて、複数のメモリバンクで並列に消去動作あるいは書き込み動作を行うことができる。
【０００８】
特許文献１記載の装置は、消去要求、書き込み要求を発行するＣＰＵは単一であることを前提としている。近年、メモリの集積度が増加し、容量が増大しているので、半導体記憶装置をサーバ用の記憶装置として応用する要望がある。サーバ用の記憶装置では、複数のＣＰＵがマルチバンク形態の多数のフラッシュメモリに接続される。なお、複数のＣＰＵが設けられるが、いずれか１つのＣＰＵのみがメモリ管理を担当する。各バンク毎の消去動作を並列して実行するために、メモリ管理を担当するＣＰＵが一連の消去コマンドを発生する。この一連の消去コマンドは消去動作を並列実行する効率を確保するためには、コマンドキューに連続して取り込まれることが好ましい。しかしながら、メモリ管理を担当するＣＰＵ以外のＣＰＵから発行されたコマンドが割り込まれてコマンドキューに取り込まれることがある。
【０００９】
他のコマンドの割り込みがあった場合、消去動作を並列実行する効率を確保するためには、複数のＣＰＵ同士で排他制御を考慮してセマフォを調停したり、コマンドキューからコマンドを取り出す際に順番を変えて割り込みコマンドを追い越して消去コマンドを取り出したりする必要があり、制御が複雑になり、コストがかかるという問題がある。
【００１０】
本発明の目的は、消去要求を複数チャネルの不揮発性メモリに分配し、消去動作を並列実行する半導体記憶装置において、複数ＣＰＵ間での排他制御を考慮する必要がなく、簡単な制御で、他の動作の割り込み無く複数チャネルの不揮発性メモリの消去動作を並列に実施することである。
【課題を解決するための手段】
【００１１】
本発明の一態様は、複数のＣＰＵと複数チャネルの不揮発性メモリとを有する半導体記憶装置であって、複数チャネルの不揮発性メモリ毎の消去動作用のアドレスからなる消去用アドレスリストを生成する手段と、いずれかのＣＰＵから発生された単一の消去動作要求に応じて前記消去用アドレスリストに記載の各アドレスについての一連の消去動作コマンドを連続して発生する手段と、前記一連の消去動作コマンドを各アドレスに対応したチャネルの不揮発性メモリに与える手段とを具備する。
【００１２】
本発明の他の態様は、複数のＣＰＵと複数チャネルの不揮発性メモリとを有する半導体記憶装置の制御方法であって、複数チャネルの不揮発性メモリ毎の消去動作用のアドレスからなる消去用アドレスリストを生成することと、いずれかのＣＰＵから発生された単一の消去動作要求に応じて前記消去用アドレスリストに記載の各アドレスについての一連の消去動作コマンドを連続して発生することと、前記一連の消去動作コマンドを各アドレスに対応したチャネルの不揮発性メモリに与えることとを具備する。
【発明の効果】
【００１３】
本発明の一態様によれば、１つのＣＰＵからの単一の消去動作要求が発生されると、消去用アドレスリストに記載の複数のチャネルに対する複数の消去動作が、他の動作の割り込みがなく、連続して実施される。そのため、複数のＣＰＵ同士で排他制御を考慮してセマフォを調停したり、コマンドキューからコマンドを取り出す際に順番を変えて割り込みコマンドを追い越して消去コマンドを取り出したりする必要がなく、複数の消去動作を簡単な制御で低コストに実施できる。
【図面の簡単な説明】
【００１４】
【図１】本発明の一実施形態に係る半導体記憶装置のブロック図である。
【図２】本発明の一実施形態における書き込み動作の手順を示す図である。
【図３】本発明の一実施形態におけるコマンド制御部の制御フロー図である。
【図４】本発明を適用しない場合のコマンド／データの流れを示す図である。
【発明を実施するための形態】
【００１５】
以下、図面を参照して本発明の実施の形態について詳細に説明する。
【００１６】
図１は本発明による半導体記憶装置の一実施形態の構成をコマンド／データの流れとともに示すブロック図である。本実施形態は複数の不揮発性メモリ、例えば４つのＮＡＮＤ型フラッシュメモリ３００、３０１、３０２、３０３を含む。ＮＡＮＤ型フラッシュメモリ３００、３０１、３０２、３０３は例えば半導体ドライブ(Solid State Drive: ＳＳＤ)の記憶部のチャネル０、チャネル１、チャネル２、チャネル３を構成する。フラッシュメモリ（チャネル）の個数は実際にはもっと多数であるが、説明の便宜上、４つのみ示す。ＮＡＮＤ型フラッシュメモリ３００、３０１、３０２、３０３の各々は例えば２〜１６個のメモリチップからなる。ＮＡＮＤ型フラッシュメモリ３００、３０１、３０２、３０３はメモリバス２８０、２８１、２８２、２８３を介してメモリコントローラ２６０、２６１、２６２、２６３に接続される。メモリコントローラ２６０、２６１、２６２、２６３はＮＡＮＤ型フラッシュメモリ３００、３０１、３０２、３０３に接続され、アクセスを制御する。
【００１７】
一方、ホストとして複数、ここでは説明の便宜上２つのＣＰＵ１００、１０１が設けられている。ＣＰＵ１００、１０１は独自にフラッシュメモリ３００、３０１、３０２、３０３への動作要求を発行するが、メモリ管理はいずれか１つのＣＰＵ、ここではＣＰＵ１００が担当する。
【００１８】
ＣＰＵ１００、１０１は共通のＣＰＵバス１２に接続される。ＣＰＵバス１２にはメインメモリ４２、ＲＯＭ４４、アドレスリストキュー１４、コマンドキュー１６、コマンド制御部１８、アドレス生成部２２が接続される。メインメモリ４２は例えばＤＲＡＭからなる。ＲＯＭ４４にはファームウェアを含む。ファームウェアはＣＰＵ１００、１０１を使用し、メモリコントローラ２６０、２６１、２６２、２６３内部へのＩ／ＯコマンドアクセスによりＮＡＮＤ型フラッシュメモリ３００、３０１、３０２、３０３のリード動作、ライト動作等を制御する。
【００１９】
コマンドキュー１６はＣＰＵ１００、１０１から発行されるコマンド発行要求をその発行順に取り込み、取り込んだ順に取り出すＦＩＦＯ形式のレジスタである。アドレスリストキュー１４はコマンドキュー１６に取り込まれた要求毎にその要求の処理対象であるチャネル毎のフラッシュメモリのアドレスからなる消去用アドレスリストあるいは書き込み用アドレスリストを取り込むＦＩＦＯ形式のレジスタである。アドレスリストはファームウェアにより作成される。アドレスリストキュー１６はアドレスリスト毎に取り込まれるが、取り出しは個々のアドレス毎になり、その取り出しアドレスを制御するためにチャネルポインタ（ｃｈポインタ）２０が設けられている。
【００２０】
コマンド制御部１８はコマンドキュー１６から要求を取り出し、その要求の動作を実行するためのコマンドを生成する。なお、コマンド制御部１８はその要求が書き込み要求であるか消去要求であるかに応じて取り出し順序を切り替え、書き込み要求については１つずつ要求を取り出すが、消去要求についてはアドレスリストに記載のアドレスのチャネル分だけ同じ要求を繰り返し取り出す。
【００２１】
アドレス生成部２２はコマンド制御部１８で取り出した要求を実現するコマンドにアドレスリストキュー１４から読み出したアドレスを追加して消去コマンド、書き込みコマンドを発行する。発行されたコマンドは分配器２４を介して所定のチャネルのメモリコントローラ２６０、２６１、２６２、２６３に供給される。
【００２２】
次に実施形態の書き込み処理を説明する。図２はファームウェアの処理ステップの流れを示す。複数チャネル存在するメモリバスを並列に効率よく使用するために、ファームウェアは書き込みコマンド発行に先立って、チャネル毎のアドレスを指し示すアドレスリストを用意する。また、上述したように、フラッシュメモリにおいてはデータの書き込みの際に上書きができないので、データの書き込み動作を実行する前に書き込み対象となるアドレスと同一のアドレスに対して前もって消去動作を実行する必要がある。そのため、ファームウェアは書き込み要求を発行する前に、データを書き込むフラッシュメモリのチャネル毎のアドレスを指し示す書き込み用アドレスリストとデータを消去するフラッシュメモリのチャネル毎のアドレスを指し示す消去用アドレスリストからなるアドレスリスト４０００を作成し、アドレスリストキュー１６に投入する（ブロック＃１２）。なお、消去と書き込みは同じアドレスであるので、書き込み用アドレスリストだけを投入し、消去用アドレスリストは書き込み用アドレスリストで兼用してもよい。両方のアドレスリストをキュー１６に投入する理由は、ファームウェアにおける書き込み要求とイレース要求の順序の要請によっては独立に持っていた方が好適な場合があるからである。
【００２３】
ここでは、アドレスリスト４０００はチャネル０用ライトアドレス４００、チャネル１用ライトアドレス４１０、チャネル２用ライトアドレス４２０、チャネル３用ライトアドレス４３０と、チャネル０用イレースアドレス４００、チャネル１用イレースアドレス４１０、チャネル２用イレースアドレス４２０、チャネル３用イレースアドレス４３０からなる。イレースアドレスはライトアドレスの末尾に配置される。
【００２４】
次に、ブロック＃１４に示すようにメモリ管理を担当するＣＰＵ１００から消去要求（イレースコマンド）８００を発行させる。消去要求８００は消去すべきアドレス（チャネル）が複数であっても、単一の要求でよい。この後、ブロック＃１６でＣＰＵ１００、１０１からチャネル毎の書き込み要求（ライトコマンド）を適宜出力させる。この例では、ＣＰＵ１００からチャネル１、３の書き込み要求を出力させ、ＣＰＵ１０１からチャネル０、２の書き込み要求を出力させる。
【００２５】
図３はコマンド制御部１８の制御フローを示す図である。ブロック＃２２でコマンド制御部１８は消去動作の継続中であるか否か判定する。消去動作中ではない場合は、ブロック＃２４でコマンドキュー１６にコマンド発行要求が存在するか否か判定する。存在しない場合は、終了する。コマンドキュー１６にコマンド発行要求が存在する場合は、ブロック＃２６でコマンドキュー１６からコマンド発行要求を読み取る。ブロック＃２８で読み取った要求の種類（書き込みか消去か）を判定する。
【００２６】
書き込み要求の場合はブロック＃３４でコマンドリストから書き込みコマンドを取り出し、ブロック＃３６へ移る。消去要求の場合はブロック＃３０でコマンドリストから消去コマンドを取り出し、ブロック＃３２で消去フラグをセットした後、ブロック＃３６へ移る。図１の例では、先ず消去要求８００が取り出され、その後チャネル０、１、２、３に関する書き込み要求１０１、１１０、１２１、１３０が取り出される。コマンド制御部１８は１つの消去要求８００に対してチャネル毎の複数の消去コマンドをコマンドリストから取り出すが、書き込み要求に対しては要求毎に対応するチャネルの書き込みコマンドを取り出す。
【００２７】
ブロック＃３６でアドレスリストキュー１４からアドレスを取得し、ブロック＃３８でコマンドにアドレスを追加して、実際の動作命令（ライト動作、イレース動作）を発行する。アドレスリスト４０００を走査するためのチャネルポインタ２０は動作命令を発行する度にインクリメントされる。
【００２８】
動作命令発行後にブロック＃４０でチャネルポインタ２０がキュー１６の末尾を示しているか否か判定する。末尾でない場合はそのままブロック＃４４へ移り、末尾である場合はブロック＃４２で消去フラグをクリアしてからブロック＃４４へ移る。ブロック＃４４ではチャネルポインタ２０がインクリメントされる。
【００２９】
このようにコマンドキュー１６から受け取った要求の種類（書き込み要求、消去要求）によってアドレスリストキュー１４を走査するチャネルポインタ２０の加算と、コマンドキュー１６からの引き抜き順序を切り替えることによって消去動作命令７００、７１０、７２０、７３０が発行される。複数の消去動作命令７００、７１０、７２０、７３０は単一の消去要求８００から連続して生成されるため、1回の書き込み動作に関する複数のページの消去動作は他の動作（例えば、書き込み動作）が途中に割り込むことなく連続的に実行される。これにより、図２に示したように最小限（１回）の消去コマンド発行要求の出力により、アドレスリスト４０００に含まれる各チャネルに対する消去動作７００〜７３０を連続して実行することが可能となり、消去動作を並列実行する効率を向上することができる。
【００３０】
本発明を使用しない場合、ファームウェアは図４に示すようにＣＰＵ１００からチャネル毎の複数の消去要求８００、８０１、８０２、８０３を発生させるため、その期間中に、ＣＰＵ１００以外のＣＰＵ１０１からの要求（図４における書き込み要求１０１）が発生する可能性がある。この場合、コマンドキュー１６には消去要求８００、８１０、８２０、書き込み要求１０１、消去要求８３０、書き込み要求１１０、…が格納され、一連の消去要求に他の要求が割り込む可能性がある。本発明ではＣＰＵ１００からは単一の消去要求しか発生させないので、このように一連の消去要求に他の要求が割り込む可能性が無い。
【００３１】
このように、本実施形態によれば、１つのＣＰＵからの単一の消去動作要求が発生されると、消去用アドレスリストに記載の複数のチャネルに対する複数の消去動作が、他の動作の割り込みがなく、連続して実施される。そのため、複数のＣＰＵ同士で排他制御を考慮してセマフォを調停したり、コマンドキューからコマンドを取り出す際に順番を変えて割り込みコマンドを追い越して消去コマンドを取り出したりする必要がなく、複数の消去動作を簡単な制御で低コストに実施できる。
【００３２】
なお、この発明は、上記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記実施形態に開示されている複数の構成要素の適宜な組み合せにより種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。更に、異なる実施形態に亘る構成要素を適宜組み合せてもよい。例えば、書き込み用アドレスリストと消去用アドレスリストとを独立してそれぞれアドレスリストキュー１４に格納したが、両者は同じアドレスを指し示すので、書き込み用と消去用とで同じアドレスリストを共有してもよい。この場合は、アドレスリストキュー１４には書き込み用アドレスリストのみを格納する。また、両者を格納する場合でも、ファームウェアが両リストを作成せずに、消去用アドレスリストを書き込み用アドレスリストのキューの末尾に自動的に追加してもよい。
【符号の説明】
【００３３】
１０…ＣＰＵ、１２…ＣＰＵバス、１４…アドレスリストキュー、１６…コマンドキュー、１８…コマンド制御部、２０…チャネルポインタ、２２…アドレス生成部、２６…メモリコントローラ、４２…メインメモリ、４４…ＲＯＭ。
【図１】
2011159070.tif 000003
【図２】
2011159070.tif 000004
【図３】
2011159070.tif 000005
【図４】
2011159070.tif 000006