(57)【要約】      （修正有）【課題】データ読み出しの信頼性向上を図った不揮発性半導体記憶装置を提供する。【解決手段】半導体記憶装置３０は、データを記憶する不揮発性メモリ１１と、前記不揮発性メモリにおけるコマンドによる動作の終了時間を求め、終了時間情報を出力する計測部４０と、アドレスを取得するアドレス取得部３３，３４と、コマンドを記憶する第１のバッファ３８と、前記アドレス取得部により取得されたアドレスを受け取り、前記計測部から出力された前記終了時間情報に応じてコマンドを発行するコマンド発行部３５と、前記コマンド発行部から発行された前記コマンドを記憶し処理するコマンド処理部３６，３７と、前記コマンド処理部により処理された前記コマンドを前記不揮発性メモリへ出力すると共に、前記不揮発性メモリの動作を制御するメモリコントローラ３９と、を備える。【選択図】図８
2014174849.tif 000002
【特許請求の範囲】
【請求項１】
データを記憶する不揮発性メモリと、
前記不揮発性メモリにおけるコマンドによる動作の終了時間を求め、終了時間情報を出力する計測部と、
アドレスを取得するアドレス取得部と、
コマンドを記憶する第１のバッファと、
前記アドレス取得部により取得されたアドレスを受け取り、前記計測部から出力された前記終了時間情報に応じてコマンドを発行するコマンド発行部と、
前記コマンド発行部から発行された前記コマンドを記憶し処理するコマンド処理部と、
前記コマンド処理部により処理された前記コマンドを前記不揮発性メモリへ出力すると共に、前記不揮発性メモリの動作を制御するメモリコントローラと、
を備え、
前記第１のバッファに第１のコマンドを記憶させ、前記第１のバッファに記憶された前記第１のコマンドを前記不揮発性メモリへ出力させた後、前記計測部から出力され、前記第１のコマンドの前記終了時間情報に応じて、前記第１のコマンドの次に実行するべき第２のコマンドを前記第１のバッファに記憶させる半導体記憶装置。
【請求項２】
データを記憶する不揮発性メモリと、
前記不揮発性メモリにおけるコマンドによる動作の終了時間を求め、終了時間情報を出力する計測部と、
コマンドを記憶する第１のバッファと、
を備え、
前記第１のバッファに第１のコマンドを記憶させ、前記第１のバッファに記憶された前記第１のコマンドを前記不揮発性メモリへ出力させた後、前記計測部から出力され、前記第１のコマンドの前記終了時間情報に応じて、前記第１のコマンドの次に実行するべき第２のコマンドを前記第１のバッファに記憶させる半導体記憶装置。
【請求項３】
データを記憶する不揮発性メモリと、
前記不揮発性メモリにおけるコマンドによる動作の終了時間を求め、終了時間情報を出力する計測部と、
コマンドを記憶する第１のバッファを含むコマンド処理部と、
前記不揮発性メモリの動作を制御するメモリコントローラと、
前記メモリコントローラはコマンドを記憶する第２のバッファと、
を備え、
前記第１のバッファに記憶された第１のコマンドを前記第２のバッファに記憶させ、前記第２のバッファに記憶された前記第１のコマンドを前記不揮発性メモリへ出力させた後、前記計測部から出力され、前記第１のコマンドの前記終了時間情報に応じて、前記第１のコマンドの次に実行するべき第２のコマンドを前記第１のバッファに記憶させる半導体記憶装置。
【請求項４】
前記コマンド発行部は、前記複数の不揮発性メモリに対して発行するべきコマンドとの対応を示すコマンド対応情報と、前記複数の不揮発性メモリの状態を示すメモリ情報と、前記コマンドテーブルと前記状態テーブルに基づいてコマンドを発行するスケジューラと、を備える請求項３に記載の半導体記憶装置。
【請求項５】
前記メモリコントローラは、前記メモリ情報と前記コマンドに加えて、前記複数の不揮発性メモリにおける温度及び消費電力のいずれかの情報を前記計測部へ通知する請求項４に記載の半導体記憶装置。
【請求項６】
前記計測部は、前記コマンドと、前記コマンドを受け取ってから前記コマンドによる動作が終了するまでの処理時間を示す処理時間情報と、
前記温度及び消費電力のいずれかの情報と、
コマンド発行時の待機時間のオフセットとの対応を示す対応情報と、
前記コマンド発行部から前記コマンドが発行されてから、前記コマンドが前記不揮発性メモリに出力されるまでの準備時間を示す準備時間情報と、
を有し、
前記終了情報は、前記処理時間と前記オフセットとを加算し、加算値から前記準備時間を減算して求められる請求項５に記載の半導体記憶装置。
【請求項７】
データが格納される不揮発性メモリと、
前記不揮発性メモリにアクセスし、コマンドを実行するコマンド実行部と、
前記コマンド実行部に第１コマンドを出力し、前記第１コマンドに対応したコマンド情報から得た前記第１コマンド実行に要する時間に基づき、第２コマンドを出力するコマンド出力部と、
を備える半導体記憶装置。
【請求項８】
データを記憶する不揮発性メモリと、
前記不揮発性メモリに出力されたコマンドによる動作の終了時間を求め、終了時間情報をコマンド発行部に出力する計測部と、
前記終了情報に基づいてコマンドを発行するコマンド発行部と、
当該受信した前記コマンドを前記不揮発性メモリに転送するメモリコントローラと、
を備える半導体記憶装置。
【請求項９】
前記コマンドは、リードコマンド、ライトコマンド、及びイレーズコマンドのいずれかを有する請求項１又は３に記載の半導体記憶装置。
【請求項１０】
前記第１、第２のコマンドは、リードコマンド、ライトコマンド、及びイレーズコマンドのいずれかを有する請求項１又は３に記載の半導体記憶装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、半導体記憶装置に関する。
【背景技術】
【０００２】
ＮＡＮＤ型フラッシュメモリが知られている。このＮＡＮＤ型フラッシュメモリのデータ記憶容量を大きくするための技術として、メモリセルの閾値分布を細分化し、メモリセルが複数ビットデータ（多値データ）を記憶可能とする多値記憶方式が用いられる。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１１−２２７６６４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
本発明が解決しようとする課題は、データの読み出しの信頼性向上を図った不揮発性半導体記憶装置を提供する。
【課題を解決するための手段】
【０００５】
実施形態の半導体記憶装置は、データを記憶する不揮発性メモリと、前記不揮発性メモリにおけるコマンドによる動作の終了時間を求め、終了時間情報を出力する計測部と、アドレスを取得するアドレス取得部と、コマンドを記憶する第１のバッファと、前記アドレス取得部により取得されたアドレスを受け取り、前記計測部から出力された前記終了時間情報に応じてコマンドを発行するコマンド発行部と、前記コマンド発行部から発行された前記コマンドを記憶し処理するコマンド処理部と、前記コマンド処理部により処理された前記コマンドを前記不揮発性メモリへ出力すると共に、前記不揮発性メモリの動作を制御するメモリコントローラとを備える。
【図面の簡単な説明】
【０００６】
【図１】第１実施形態の半導体記憶装置の構成を示すブロック図。
【図２】第１実施形態の半導体記憶装置のリードにおけるＮＡＮＤコントローラと不揮発性半導体メモリの構成を示すブロック図。
【図３】第１実施形態における不揮発性半導体メモリのリードの動作を示すタイムダイアグラム。
【図４】第１実施形態における不揮発性半導体メモリの他の動作を示すタイムダイアグラム。
【図５】前記第１実施形態のリード及びイレーズにおける不揮発性半導体メモリの動作を示すタイムダイアグラム。
【図６】前記第１実施形態のライト及びリードにおける不揮発性半導体メモリの動作を示すタイムダイアグラム。
【図７】前記第１実施形態のリードにおける不揮発性半導体メモリの他の動作を示すタイムダイアグラム。
【図８】第２実施形態の半導体記憶装置の構成を示すブロック図。
【図９】第２実施形態のＳＳＤコントローラにおけるコマンドの流れとバッファを示すブロック図。
【図１０】第２実施形態のＳＳＤコントローラにおけるタイマーの構成を示すブロック図。
【図１１】第２実施形態のＳＳＤコントローラにおけるコマンド発行部の構成を示すブロック図。
【図１２】第３実施形態のＳＳＤコントローラにおけるタイマーの構成を示すブロック図。
【図１３】第４実施形態の半導体記憶装置を搭載したパーソナルコンピュータの一例を示す斜視図。
【図１４】第４実施形態の半導体記憶装置を搭載したパーソナルコンピュータの構成例を示すブロック図。
【図１５】第５実施形態の半導体記憶装置の構成を示すブロック図。
【図１６】パーソナルコンピュータにおいてデバイススリープが実行されるＳＳＤの構成を示すブロック図。
【図１７】リードにおいて前記デバイススリープが起動した場合の一例を示すタイムダイアグラム。
【図１８】第４実施形態のＳＳＤを搭載したサーバの使用例を示す概念図。
【発明を実施するための形態】
【０００７】
以下、図面を参照して実施形態のメモリシステムについて説明する。ここでは、メモリシステムとして、ＳＯｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ（ＳＳＤ）を例に挙げ説明するが、本実施形態の適用対象はＳＳＤに限定されるものではない。なお、以下の説明において、同一の機能及び構成を有する構成要素については、同一符号を付し、重複説明は必要な場合にのみ行う。
【０００８】
メモリシステムは、不揮発性メモリ、コマンド管理部、コマンド発行部、データ制御部、及びコマンド監視部を備える。前記不揮発性メモリはデータを記憶する。コマンド管理部はコマンドを受け取り管理する。前記コマンド発行部は、前記コマンド管理部が受け取った前記コマンドを前記不揮発性メモリに発行する。前記データ制御部は、前記不揮発性メモリに対してデータのリード及びライトのいずれかを行う。前記コマンド監視部は、前記コマンド管理部を監視し、前記コマンド管理部がコマンドを受け取ったとき、前記データ制御部に受信信号を出力する。前記データ制御部は、前記コマンド監視部から前記受信信号を受け取ったとき、データのリード及びライトのいずれかを中断させ、前記コマンド発行部から前記不揮発性メモリへ前記コマンドを発行させ、前記コマンドの発行後に、データのリード及びライトの前記いずれかを再開させる。
【０００９】
［第１実施形態］
第１実施形態の半導体記憶装置３０について説明する。半導体記憶装置３０は例えば、a solid state drive（ＳＳＤ）である。
【００１０】
図１は、第１実施形態の半導体記憶装置の構成を示すブロック図である。
【００１１】
a solid state drive（ＳＳＤ）１０は、ホスト装置（以下、ホストと記す）１００、例えばパーソナルコンピュータ、サーバ等とAdvanced Technology Attachment（ＡＴＡ）規格などの通信インタフェースで接続される。ＳＳＤ１０はホスト１００の外部記憶装置として機能する。
【００１２】
ＳＳＤ１０は、不揮発性半導体メモリ１１、ＳＳＤコントローラ１２、ホストインタフェース（Ｉ／Ｆ）１３、及び揮発性半導体メモリ（例えば、ＤＲＡＭ）１４などを備える。
【００１３】
不揮発性半導体メモリ１１は、ホスト１００からリード／ライトされ、データを記憶する。不揮発性半導体メモリ１１は、例えば、ＮＡＮＤ型フラッシュメモリ（以下、ＮＡＮＤメモリと記す）、ＮＯＲ型フラッシュメモリ、Ｍａｇｎｅｔｉｃ Ｒａｎｄｏｍ Ａｃｃｅｓｓ Ｍｅｍｏｒｙ（ＭＲＡＭ）、Ｒｅｓｉｓｔｉｖｅ Ｒａｎｄｏｍ ａｃｃｅｓｓ ｍｅｍｏｒｙ（ＲｅＲＡＭ）などを含む。さらに、不揮発性半導体メモリ１１は、例えば、単一あるいは複数の半導体チップを含む単一のパッケージであってもよいし、単一あるいは複数の半導体チップをそれぞれ含む複数のパッケージであってもよい。また、単一の半導体チップのフリップチップであってもよい。
【００１４】
本実施形態では、不揮発性半導体メモリ１１は、複数のＮＡＮＤメモリ１１Ａ，１１Ｂ，１１Ｃ，１１Ｄを含み、各々が単一の半導体チップを含むパッケージであるとする。ＮＡＮＤメモリ１１Ａは、メモリ回路１１Ａ１とバッファ１１Ａ２を有する。同様に、ＮＡＮＤメモリ１１Ｂはメモリ回路１１Ｂ１とバッファ１１Ｂ２を、ＮＡＮＤメモリ１１Ｃはメモリ回路１１Ｃ１とバッファ１１Ｃ２を、ＮＡＮＤメモリ１１Ｄはメモリ回路１１Ｄ１とバッファ１１Ｄ２をそれぞれ有する。前記メモリ回路は、データを記憶する複数の不揮発性のメモリセルを含む。前記バッファは、メモリ回路に入出力するためのデータを一時的に保持する。
【００１５】
ＳＳＤコントローラ１２は、ホスト１００からホストインタフェース１３を介して入力される信号にしたがって、不揮発性半導体メモリ１１、揮発性半導体メモリ１４などのＳＳＤ全体の動作を制御する。ＳＳＤコントローラ１２は、バス２６によって接続された、ＣＰＵ２１、インタフェース（Ｉ／Ｆ）回路２２、ＤＲＡＭコントローラ２３、データバッファ２４、及びＮＡＮＤコントローラ２５を有する。
【００１６】
ＣＰＵ２１は、各種プログラム及び演算の処理を行うと共に、ＳＳＤコントローラ１２内の動作を制御する。インタフェース回路２２は、ホストインタフェース１３とＳＳＤコントローラ１２との間の信号の授受を行う。ＤＲＡＭコントローラ２３は揮発性半導体メモリ（ＤＲＡＭ）１４の動作を制御する。データバッファ２４は、ホスト１００や不揮発性半導体メモリ１１に対する転送データを一時的に格納する際などに使用される。さらに、ＮＡＮＤコントローラ２５は、不揮発性半導体メモリ１１内のＮＡＮＤメモリ１１Ａ，１１Ｂ，１１Ｃ，１１Ｄの動作を制御する。
【００１７】
ホストインタフェース１３は、ＳＳＤ１０とホスト１００との間の信号の授受を行う。揮発性半導体メモリ１４は、不揮発性半導体メモリ１１の管理情報の保管やデータのキャッシュなど、転送データを一時的に格納する際などに使用される。揮発性半導体メモリ１４は、例えば、ＤＲＡＭ、ＳＲＡＭなどを含む。
【００１８】
ホスト１００からホストインタフェース１３へ送信されたデータは、ＣＰＵ２１の制御に従って、一旦データバッファ２４に格納される。その後、データバッファ２４から転送されて不揮発性半導体メモリ１１内のＮＡＮＤメモリに書き込まれる。一方、ＮＡＮＤメモリから読み出されたデータは、一旦データバッファ２４に格納される。その後、データバッファ２４からホストインタフェース１３を介してホスト１００へ送信される。
【００１９】
図２は、第１実施形態のリードにおけるＮＡＮＤコントローラ２５と不揮発性半導体メモリ１１の構成を示すブロック図である。
【００２０】
図示するように、ＮＡＮＤコントローラ２５は、コマンドキュー部２５１（第１のバッファ）、コマンド引き抜き部２５２、コマンド発行部２５３、コマンド監視部２５４、データ制御部２５５、及びデコーダ２５６を有する。ホストインタフェース１３は、コマンドキュー部２５１及びデータバッファ２４に接続されている。さらに、コマンド発行部２５３及びデータ制御部２５５は、デコーダ２５６を介してＮＡＮＤメモリ１１Ａ，１１Ｂ，１１Ｃ，１１Ｄにそれぞれ接続されている。デコーダ２５６は、アドレスに基づいて不揮発性半導体メモリ１１内のＮＡＮＤメモリ１１Ａ，１１Ｂ，１１Ｃ，１１Ｄのいずれかを選択する。
【００２１】
まず、ホスト１００からホストインタフェース１３を介してコマンドキュー部２５１にコマンドが入力される。コマンドキュー部２５１は、受け取ったコマンドを記憶し管理する。コマンド引き抜き部２５２は、コマンドキュー部２５１からコマンドを引き抜き、コマンド発行部２５３に転送する。コマンド発行部２５３は、コマンド引き抜き部２５２から受け取ったコマンドを、デコーダ２５６を介して不揮発性半導体メモリ１１内のＮＡＮＤメモリへ発行する。デコーダは、コマンド発行部２５３から発行されたコマンドを、アドレスに基づいて選択したＮＡＮＤメモリへ出力する。なお、コマンドキュー部２５１とコマンド引き抜き部２５２はコマンド管理部を形成している。
【００２２】
図３は、第１実施形態のリードにおける不揮発性半導体メモリの動作を示すタイムダイアグラムである。ここでは、リードにおけるＮＡＮＤメモリ１１Ａ及びＮＡＮＤメモリ１１Ｂの動作制御を示す。
【００２３】
コマンド引き抜き部２５２はコマンドキュー部２５１からコマンドを引き抜き、コマンド発行部２５３は、コマンド引き抜き部２５２から受け取ったコマンドを、デコーダ２５６を介してＮＡＮＤメモリ１１Ａへ発行する。一方、データ制御部２５５は各ＮＡＮＤメモリのコマンド投入状況、ビジー状況を監視し、データの引き抜きが可能になったものを発見次第、データ引き抜き動作に移行する。
【００２４】
コマンド監視部２５４は、コマンドキュー部２５１への新たなコマンドの到着を監視し、コマンド引き抜き部２５２が引き抜いていない新たなコマンドを発見次第、コマンド引き抜き部２５２へ通知する。データ制御部２５５は、データ引き抜き中も含む期間中、一定間隔でコマンド監視部２５４の通知を確認し、新たなコマンドがあり、かつそのコマンドがＮＡＮＤメモリへ投入可能であれば、データの引き抜きを中断し、コマンドを発行させる。
【００２５】
以下に、図３を参照して、ＮＡＮＤメモリ１１Ａ，１１ＢへリードコマンドＣ０，Ｃ１をそれぞれ投入する場合を詳述する。
【００２６】
まず、コマンド発行部２５３は、デコーダ２５６を介してＮＡＮＤメモリ１１ＡにリードコマンドＣ０を発行する。期間Ｃ０にて、ＮＡＮＤメモリ１１ＡはリードコマンドＣ０を受け取る。続いて、ＮＡＮＤメモリ１１Ａは、期間ＢＵＳＹ0にて、ＮＡＮＤメモリ１１Ａ内においてメモリ回路１１Ａ１からバッファ１１Ａ２にデータを取り出す。次に、期間ＯＵＴ0にて、ＮＡＮＤメモリ１１Ａ内のバッファ１１Ａ２のデータがデータ制御部２５５によって引き抜かれる。
【００２７】
上記期間中、コマンド監視部２５４は、コマンドキュー部２５１への新たなコマンドの到着を監視し、リードコマンドＣ１の到着を発見すると、コマンド引き抜き部２５２及びデータ制御部２５５へ通知する。コマンド引き抜き部２５２は、コマンド監視部２５４の通知を受け取ると、コマンドキュー部２５１からリードコマンドＣ１を引き抜き、コマンド発行部２５３へ出力する。
【００２８】
データ制御部２５５は、コマンド監視部２５４の通知を確認し、新たなコマンドとしてリードコマンドＣ１があり、かつそのリードコマンドＣ１がＮＡＮＤメモリ１１Ｂへ投入可能であれば、期間ＯＵＴ0におけるデータの引き抜きを中断する。コマンド発行部２５３は、データ制御部２５５によるデータの引き抜きが中断したことを確認すると、リードコマンドＣ１をＮＡＮＤメモリ１１Ｂへ発行する。その後、データ制御部２５５は、コマンド発行部２５３によるリードコマンドＣ１の発行が終了したことを確認し、ＮＡＮＤメモリ１１Ａ内のバッファ１１Ａ２からデータの引き抜きを再開する。
【００２９】
すなわち、ＮＡＮＤメモリ１１Ａでは、期間ＯＵＴ0におけるデータの引き抜きが中断され、期間Ｃ１にて、ＮＡＮＤメモリ１１ＢはリードコマンドＣ１を受け取る。リードコマンドＣ１の受け取りが終了すると、ＮＡＮＤメモリ１１Ａでは、期間ＯＵＴ0におけるデータの引き抜きが再開される。ＮＡＮＤメモリ１１Ｂは、リードコマンドＣ１を受け取った後、期間ＢＵＳＹ1にて、ＮＡＮＤメモリ１１Ｂ内でメモリ回路１１Ｂ１からバッファ１１Ｂ２にデータを取り出す。
【００３０】
ここで、ＮＡＮＤメモリ１１Ａでの期間ＯＵＴ0におけるデータの引き抜きと、ＮＡＮＤメモリ１１Ｂでの期間ＢＵＳＹ1におけるデータの取り出しとが並行して実行される。これにより、リードコマンドＣ０とＣ１による、ＮＡＮＤメモリ１１Ａ，１１ＢからＮＡＮＤコントローラ２５へのデータの引き抜きを短期間で行うことができる。すなわち、複数のＮＡＮＤメモリからＮＡＮＤコントローラへのデータの引き抜きに要する時間を短縮することができる。この結果、リードにおける複数のＮＡＮＤメモリの使用効率を高めることが可能である。
【００３１】
なお、ＮＡＮＤメモリへのコマンドの投入は、ＮＡＮＤメモリ内のバッファからＮＡＮＤコントローラへのデータ引き抜き時や、別のコマンドの投入時は不可となっている。すなわち、図３において、期間Ｃ０や期間ＯＵＴ0では、ＮＡＮＤコントローラ２５とＮＡＮＤメモリ１１Ａ間の配線が使用されているため、ＮＡＮＤメモリ１１Ｂへコマンドを投入することはできない。
【００３２】
次に、図３では別々のＮＡＮＤメモリ１１Ａ，１１ＢへリードコマンドＣ０，Ｃ１を投入する場合を説明したが、以下では１つのＮＡＮＤメモリ１１ＡへリードコマンドＣ０，Ｃ１を投入する例を説明する。
【００３３】
図４は、第１実施形態における不揮発性半導体メモリの他の動作を示すタイムダイアグラムである。ここでは、リードにおけるＮＡＮＤメモリ１１Ａの動作制御を示す。
【００３４】
まず、コマンド発行部２５３は、デコーダ２５６を介してＮＡＮＤメモリ１１ＡにリードコマンドＣ０を発行する。期間Ｃ０にて、ＮＡＮＤメモリ１１ＡはリードコマンドＣ０を受け取る。続いて、ＮＡＮＤメモリ１１Ａは、期間ＢＵＳＹ0にて、ＮＡＮＤメモリ１１Ａ内においてメモリ回路１１Ａ１からバッファ１１Ａ２にデータを取り出す。次に、期間ＯＵＴ0にて、ＮＡＮＤメモリ１１Ａ内のバッファ１１Ａ２のデータがデータ制御部２５５によって引き抜かれる。
【００３５】
上記期間中、コマンド監視部２５４は、コマンドキュー部２５１への新たなコマンドの到着を監視し、リードコマンドＣ１の到着を発見すると、コマンド引き抜き部２５２及びデータ制御部２５５へ通知する。コマンド引き抜き部２５５は、コマンド監視部２５４の通知を受け取ると、コマンドキュー部２５１からリードコマンドＣ１を引き抜き、コマンド発行部２５３へ出力する。
【００３６】
データ制御部２５５は、コマンド監視部２５４の通知を確認し、新たなコマンドとしてリードコマンドＣ１があり、かつそのリードコマンドＣ１がＮＡＮＤメモリ１１Ａへ投入可能であれば、期間ＯＵＴ0におけるデータの引き抜きを中断する。コマンド発行部２５３は、データ制御部２５５によるデータの引き抜きが中断したことを確認すると、リードコマンドＣ１をＮＡＮＤメモリ１１Ａへ発行する。その後、データ制御部２５５は、コマンド発行部２５３によるリードコマンドＣ１の発行が終了したことを確認し、ＮＡＮＤメモリ１１Ａ内のバッファ１１Ａ２からデータの引き抜きを再開する。
【００３７】
すなわち、ＮＡＮＤメモリ１１Ａでは、期間ＯＵＴ0におけるデータの引き抜きが中断され、期間Ｃ１にて、ＮＡＮＤメモリ１１ＡはリードコマンドＣ１を受け取る。リードコマンドＣ１の受け取りが終了すると、ＮＡＮＤメモリ１１Ａでは、期間ＯＵＴ0におけるデータの引き抜きが再開される。ＮＡＮＤメモリ１１Ａは、リードコマンドＣ１を受け取った後、期間ＢＵＳＹ1にて、ＮＡＮＤメモリ１１Ａ内でメモリ回路１１Ａ１からバッファ１１Ａ２にデータを取り出す。
【００３８】
ここで、ＮＡＮＤメモリ１１Ａにおいて、期間ＯＵＴ0におけるデータの引き抜きと、期間ＢＵＳＹ1におけるデータの取り出しとが並行して実行される。これにより、リードコマンドＣ０による、ＮＡＮＤメモリ１１ＡからＮＡＮＤコントローラ２５へのデータの引き抜きと、リードコマンドＣ１による、ＮＡＮＤメモリ１１Ａ内でのメモリ回路１１Ａ１からバッファ１１Ａ２へのデータ取り出しとを短期間で行うことができる。すなわち、ＮＡＮＤメモリからＮＡＮＤコントローラへのデータの引き抜きに要する時間を短縮することができる。この結果、リードにおけるＮＡＮＤメモリの使用効率を高めることが可能である。
【００３９】
次に、図５を参照して、ＮＡＮＤメモリ１１ＡへリードコマンドＣ０を投入し、ＮＡＮＤメモリ１１ＢへイレーズコマンドＣ２を投入する例を説明する。
【００４０】
図５は、第１実施形態のリード及びイレーズにおける不揮発性半導体メモリの動作を示すタイムダイアグラムである。ここでは、リード及びイレーズにおけるＮＡＮＤメモリ１１Ａ，１１Ｂの動作制御を示す。
【００４１】
まず、コマンド発行部２５３は、デコーダ２５６を介してＮＡＮＤメモリ１１ＡにリードコマンドＣ０を発行する。期間Ｃ０にて、ＮＡＮＤメモリ１１ＡはリードコマンドＣ０を受け取る。続いて、ＮＡＮＤメモリ１１Ａは、期間BUSY0にて、ＮＡＮＤメモリ１１Ａ内においてメモリ回路１１Ａ１からバッファ１１Ａ２にデータを取り出す。次に、期間OUT0にて、ＮＡＮＤメモリ１１Ａ内のバッファ１１Ａ２のデータがデータ制御部２５５によって引き抜かれる。
【００４２】
上記期間中、コマンド監視部２５４は、コマンドキュー部２５１への新たなコマンドの到着を監視し、イレーズコマンドＣ２の到着を発見すると、コマンド引き抜き部２５２及びデータ制御部２５５へ通知する。コマンド引き抜き部２５５は、コマンド監視部２５４の通知を受け取ると、コマンドキュー部２５１からイレーズコマンドＣ２を引き抜き、コマンド発行部２５３へ出力する。
【００４３】
データ制御部２５５は、コマンド監視部２５４の通知を確認し、新たなコマンドとしてイレーズコマンドＣ２があり、かつそのイレーズコマンドＣ２がＮＡＮＤメモリ１１Ｂへ投入可能であれば、期間ＯＵＴ0におけるデータの引き抜きを中断する。コマンド発行部２５３は、データ制御部２５５によるデータの引き抜きが中断したことを確認すると、イレーズコマンドＣ２をＮＡＮＤメモリ１１Ｂへ発行する。その後、データ制御部２５５は、コマンド発行部２５３によるイレーズコマンドＣ２の発行が終了したことを確認し、ＮＡＮＤメモリ１１Ａ内のバッファ１１Ａ２からデータの引き抜きを再開する。
【００４４】
すなわち、ＮＡＮＤメモリ１１Ａでは、期間ＯＵＴ0におけるデータの引き抜きが中断され、期間Ｃ２にて、ＮＡＮＤメモリ１１ＢはイレーズコマンドＣ２を受け取る。イレーズコマンドＣ２の受け取りが終了すると、ＮＡＮＤメモリ１１Ａでは、期間ＯＵＴ0にてデータの引き抜きが再開される。ＮＡＮＤメモリ１１Ｂでは、イレーズコマンドＣ２を受け取った後、期間ＥＲＡＳＥ2にて、メモリ回路１１Ｂ１内のブロックからデータが消去される。
【００４５】
ここで、ＮＡＮＤメモリ１１Ａでの期間ＯＵＴ0におけるデータの引き抜きと、ＮＡＮＤメモリ１１Ｂでの期間ＥＲＡＳＥ2におけるデータの消去とが並行して実行される。これにより、リードコマンドＣ０による、ＮＡＮＤメモリ１１ＡからＮＡＮＤコントローラ２５へのデータの引き抜きと、イレーズコマンドＣ２による、ＮＡＮＤメモリ１１Ｂ内でのデータの消去を短期間で行うことができる。すなわち、複数のＮＡＮＤメモリに対するデータの引き抜きと消去に要する時間を短縮することができる。この結果、リード及びイレーズにおける、複数のＮＡＮＤメモリの使用効率を高めることが可能である。
【００４６】
次に、図６を参照して、ＮＡＮＤメモリ１１ＡへライトコマンドＣ３を投入し、ＮＡＮＤメモリ１１ＢへリードコマンドＣ４を投入する例を説明する。
【００４７】
図６は、第１実施形態のライト及びリードにおける不揮発性半導体メモリの動作を示すタイムダイアグラムである。ここでは、ライト及びリードにおけるＮＡＮＤメモリ１１Ａ，１１Ｂの動作制御を示す。
【００４８】
まず、コマンド発行部２５３は、デコーダ２５６を介してＮＡＮＤメモリ１１ＡにライトコマンドＣ３を発行する。期間Ｃ３にて、ＮＡＮＤメモリ１１ＡはライトコマンドＣ３を受け取る。続いて、ＮＡＮＤメモリ１１Ａは、期間IN3にて、データ制御部２５５からＮＡＮＤメモリ１１Ａ内のバッファ１１Ａ２にデータを受け取る。次に、ＮＡＮＤメモリ１１Ａは、期間ＰＲＯＧＲＡＭ3にて、ＮＡＮＤメモリ１１Ａ内でバッファ１１Ａ２からメモリ回路１１Ａ１にデータを書き込む。
【００４９】
上記期間中、コマンド監視部２５４は、コマンドキュー部２５１への新たなコマンドの到着を監視し、リードコマンドＣ４の到着を発見すると、コマンド引き抜き部２５２及びデータ制御部２５５へ通知する。コマンド引き抜き部２５５は、コマンド監視部２５４の通知を受け取ると、コマンドキュー部２５１からリードコマンドＣ４を引き抜き、コマンド発行部２５３へ出力する。
【００５０】
データ制御部２５５は、コマンド監視部２５４の通知を確認し、新たなコマンドとしてリードコマンドＣ４があり、かつそのリードコマンドＣ４がＮＡＮＤメモリ１１Ｂへ投入可能であれば、期間IN3におけるデータの転送を中断する。コマンド発行部２５３は、データ制御部２５５によるデータの転送が中断したことを確認すると、リードコマンドＣ４をＮＡＮＤメモリ１１Ｂへ発行する。その後、データ制御部２５５は、コマンド発行部２５３によるリードコマンドＣ４の発行が終了したことを確認し、ＮＡＮＤメモリ１１Ａ内のバッファ１１Ａ２へデータの転送を再開する。
【００５１】
すなわち、ＮＡＮＤメモリ１１Ａでは、期間IN3におけるデータの転送が中断され、期間Ｃ４にて、ＮＡＮＤメモリ１１ＢはリードコマンドＣ４を受け取る。リードコマンドＣ４の受け取りが終了すると、ＮＡＮＤメモリ１１Ａでは、期間IN3におけるデータの転送が再開される。ＮＡＮＤメモリ１１Ｂは、リードコマンドＣ４を受け取った後、期間BUSY4にて、ＮＡＮＤメモリ１１Ｂ内でメモリ回路１１Ｂ１からバッファ１１Ｂ２にデータを取り出す。
【００５２】
ここで、ＮＡＮＤメモリ１１Ａでの期間IN3におけるデータの転送と、ＮＡＮＤメモリ１１Ｂでの期間ＢＵＳＹ４におけるデータの取り出しとが並行して実行される。これにより、ライトコマンドＣ３による、ＮＡＮＤコントローラ２５からＮＡＮＤメモリ１１Ａへのデータ転送と、リードコマンドＣ４による、ＮＡＮＤメモリ１１Ｂ内でのメモリ回路１１Ｂ１からバッファ１１Ｂ２へのデータ取り出しとを短期間で行うことができる。すなわち、複数のＮＡＮＤメモリに対するデータのライトとリードに要する時間を短縮することができる。この結果、ライト及びリードにおける、複数のＮＡＮＤメモリの使用効率を高めることが可能である。
【００５３】
また、図３，４では、ＮＡＮＤメモリ１１Ａ内のバッファのデータがデータ制御部２５５によって引き抜かれている期間に、コマンドＣ１がホスト１００から入力された場合を説明したが、ＮＡＮＤメモリ１１Ａの動作中で、その動作を中断せずにコマンドを入力できる期間に、ホスト１００がコマンドＣ１を入力するようにしてもよい。例えば、ＮＡＮＤメモリ１１Ａ内でメモリ回路１１Ａ１からバッファ１１Ａ２にデータを取り出している期間に、ホスト１００がコマンドＣ１をコマンドキュー部２５１に投入するようにしてもよい。
【００５４】
図７は、第１実施形態のリードにおける不揮発性半導体メモリの他の動作を示すタイムダイアグラムである。ここでは、リードにおけるＮＡＮＤメモリ１１Ａ，１１Ｂの動作制御を示す。
【００５５】
まず、コマンド発行部２５３は、デコーダ２５６を介してＮＡＮＤメモリ１１ＡにリードコマンドＣ０を発行する。期間Ｃ０にて、ＮＡＮＤメモリ１１ＡはリードコマンドＣ０を受け取る。続いて、ＮＡＮＤメモリ１１Ａは、期間ＢＵＳＹ０にて、ＮＡＮＤメモリ１１Ａ内においてメモリ回路１１Ａ１からバッファ１１Ａ２にデータを取り出す。次に、期間ＯＵＴ0にて、ＮＡＮＤメモリ１１Ａ内のバッファ１１Ａ２のデータがデータ制御部２５５によって引き抜かれる。
【００５６】
上述したＮＡＮＤメモリ１１Ａの動作期間中において、ホスト１００は期間BUSY0中にリードコマンドＣ１を、ホストインタフェース１３を介してコマンドキュー部２５１へ投入する。コマンド監視部２５２はコマンドキュー部２５１への新たなコマンドの到着を監視し、リードコマンドＣ１の到着を発見すると、コマンド引き抜き部２５２及びデータ制御部２５５へ通知する。コマンド引き抜き部２５２は、コマンド監視部２５４の通知を受け取ると、リードコマンドＣ１を引き抜き、コマンド発行部２５３へ出力する。
【００５７】
上述したように、期間BUSY0中に、ホスト１００からリードコマンドＣ１がコマンドキュー部２５１へ入力されるため、コマンド発行部２５３は受け取ったリードコマンドＣ１をそのままＮＡＮＤメモリ１１Ｂへ発行する。その後、データ制御部２５５は、ＮＡＮＤメモリ１１Ａ内のバッファ１１Ａ２からデータの引き抜きを開始する。一方、ＮＡＮＤメモリ１１Ｂは、リードコマンドＣ１を受け取った後、期間BUSY1にて、メモリ回路１１Ｂ１からバッファ１１Ｂ２にデータを取り出す。その後、データ制御部２５５は、ＮＡＮＤメモリ１１Ｂ内のバッファ１１Ｂ２からデータの引き抜きを開始する。
【００５８】
すなわち、ＮＡＮＤメモリ１１Ａは、コマンドＣ０を受け取った後、期間BUSY0にて、メモリ回路１１Ａ１からバッファ１１Ａ２にデータを取り出す。この期間BUSY0中に、ＮＡＮＤメモリ１１Ｂは、ホスト１００から入力されたコマンドＣ１を受け取る。このように、ホスト１００が期間ＢＵＳＹ０中にコマンドＣ１を投入することにより、ＮＡＮＤメモリ１１Ａ，１１Ｂにおいて、期間ＢＵＳＹ０の動作と期間ＢＵＳＹ１の動作とが並行して実行され、さらに、期間ＯＵＴ０の動作と期間ＢＵＳＹ１の動作とが並行して実行される。
【００５９】
これにより、リードコマンドＣ０とＣ１による、ＮＡＮＤメモリ１１Ａ，１１ＢからＮＡＮＤコントローラ２５へのデータの引き抜きを短期間で行うことができる。すなわち、複数のＮＡＮＤメモリからＮＡＮＤコントローラへのデータの引き抜きに要する時間を短縮することができる。この結果、リードにおける複数のＮＡＮＤメモリの使用効率を高めることが可能である。
【００６０】
従来のＮＡＮＤコントローラは、用意されたデータの引き抜き中に、新規コマンドが投入されたかのチェックを行わないため、新規コマンドが投入された場合、データ引き抜き後に新規コマンドを処理するようになっている。このため、本来、データの引き抜きと並行してＮＡＮＤメモリに対して処理を進められるような場合も、並行処理が実現せず性能の低下を招いていた。
【００６１】
例えば、２つのＮＡＮＤチップ、ｃｈｉｐＡとｃｈｉｐＢを用いて並行してリード処理を進める場合、ｃｈｉｐＡがＢｕｓｙ中にｃｈｉｐＢのコマンドが投入可能な時期が訪れたとき、ｃｈｉｐＡとｃｈｉｐＢのリード処理を並行して進めることができる。一方、ｃｈｉｐＡからデータ引き抜き中にｃｈｉｐＢのコマンドが投入可能な時期が訪れたとき、データ引き抜き中はコマンドが投入できないため、コントローラはデータ引き抜きを待ってコマンド投入を行う必要がある。このため、ｃｈｉｐＢの使用効率がその分落ちてしまう。
【００６２】
上述した第１実施形態によれば、期間ＯＵＴ０においてＮＡＮＤメモリ１１Ａからのデータの引き抜きが中断され、ＮＡＮＤメモリ１１ＢにリードコマンドＣ１が投入される。リードコマンドＣ１の投入が終了すると、期間ＯＵＴ０におけるＮＡＮＤメモリ１１Ａからのデータの引き抜きが再開される。ＮＡＮＤメモリ１１Ｂは、リードコマンドＣ１を受け取った後、期間ＢＵＳＹ１にて、ＮＡＮＤメモリ１１Ｂ内でメモリ回路からバッファにデータを取り出す。
【００６３】
ここで、ＮＡＮＤメモリ１１Ａでの期間ＯＵＴ０におけるデータの引き抜きと、ＮＡＮＤメモリ１１Ｂでの期間ＢＵＳＹ１におけるデータの取り出しとが並行して実行される。このため、リードコマンドＣ０とＣ１による、ＮＡＮＤメモリ１１Ａ，１１ＢからＮＡＮＤコントローラ２５へのデータの引き抜きに要する時間を短縮することができる。
【００６４】
以上説明したように第１実施形態によれば、不揮発性メモリに対するリード、ライト、及びイレーズの動作性能を高めることができ、ＳＳＤの使用効率を向上させることができる。
【００６５】
［第２実施形態］
第２実施形態の半導体記憶装置３０について説明する。半導体記憶装置３０は例えばＳＳＤ３０である。図８は、第２実施形態の半導体記憶装置の３０構成を示すブロック図である。
【００６６】
図示するように、ＳＳＤ３０は不揮発性半導体メモリ１１とＳＳＤコントローラ３２を備える。ＳＳＤコントローラ３２は、リードコマンドアドレス取得部３３、ライトコマンドアドレス取得部３４、コマンド発行部３５、リードコマンド処理部３６、ライトコマンド処理部３７、コマンドキュー部３８、ＮＡＮＤコントローラ３９、及びタイマー４０（計測部）を備える。不揮発性半導体メモリ１１は、例えば、複数のＮＡＮＤ型フラッシュメモリ（以下、ＮＡＮＤメモリと記す）１１Ａ，１１Ｂ，１１Ｃを含む。
【００６７】
リードコマンドアドレス取得部３３は、ホストから入力された信号に基づいてアドレスを取得する。リードコマンドアドレス取得部３３にてアドレスが取得されると、リードコマンドは、コマンド発行部３５に入力され、さらにコマンド発行部３５からリードコマンド処理部３６へ発行される。
【００６８】
次に、リードコマンドはリードコマンド処理部３６にて処理され、コマンドキュー部３８に出力される。コマンドキュー部３８は、受け取ったリードコマンドを記憶し管理する。さらに、リードコマンドは、コマンドキュー部３８からＮＡＮＤコントローラ３９に出力される。
【００６９】
同様に、ライトコマンドアドレス取得部３４は、ホストから入力された信号に基づいてアドレスを取得する。ライトコマンドアドレス取得部３４にてアドレスが取得されると、ライトコマンドは、コマンド発行部３５に入力され、さらにコマンド発行部３５からライトコマンド処理部３７へ発行される。
【００７０】
次に、ライトコマンドはライトコマンド処理部３７にて処理され、コマンドキュー部３８に出力される。コマンドキュー部３８は、受け取ったライトコマンドを記憶し管理する。さらに、ライトコマンドは、コマンドキュー部３８からＮＡＮＤコントローラ３９に出力される。
【００７１】
ＮＡＮＤコントローラ３９は、コマンドキュー部３８から受け取ったコマンドをＮＡＮＤメモリ１１Ａ，１１Ｂ，１１Ｃのいずれかに発行する。ＮＡＮＤコントローラ３９は、また、発行情報として、発行したコマンドと発行先のＮＡＮＤメモリ情報をタイマー（計測部）４０に出力する。
【００７２】
タイマー４０は、発行情報に基づいて、終了するコマンドとそのＮＡＮＤメモリを含む先行終了時間情報をコマンド発行部３５へ出力する。コマンド発行部３５は、先行終了時間情報に従って、コマンドを発行し、コマンド処理部によるコマンド処理を進める。このように、コマンドの終了時間を求め、終了前に次のコマンドの処理を進めることにより、前記コマンドが終了したとき、直ぐに、ＮＡＮＤコントローラ３９から次のコマンドがＮＡＮＤメモリに投入できるようにする。
【００７３】
図９は、第２実施形態のＳＳＤコントローラ３２におけるコマンドの流れとバッファを示すブロック図である。
【００７４】
リードコマンドアドレス取得部３３にてアドレスが取得されると、リードコマンドR-Comがコマンド発行部３５から発行され、リードコマンド処理部３６のバッファ３６Ａに記憶される。リードコマンド処理部３６は、リードコマンドを記憶するためのバッファ３６Ａを１段有している。
【００７５】
次に、リードコマンドＲ−Ｃｏｍは、バッファ３６Ａからコマンドキュー部３８を介してＮＡＮＤコントローラ３９へ出力され、ＮＡＮＤコントローラ３９のバッファ３９Ａに記憶される。その後、リードコマンドＲ−Ｃｏｍは、例えばＮＡＮＤメモリ１１Ａへ投入される。
【００７６】
同様に、ライトコマンドアドレス取得部３４にてアドレスが取得されると、ライトコマンドW-Comがコマンド発行部３５から出力され、ライトコマンド処理部３７のバッファ３７Ａに記憶される。これと同時に、ホストからライトデータがライトコマンド処理部３７に入力され、ライトコマンド処理部３７のバッファ３７Ａに記憶される。ライトコマンド処理部３７は、ライトコマンドＲ−Ｃｏｍ及びライトデータを記憶するためのバッファ３７Ａを１段有している。
【００７７】
次に、ライトコマンドＲ−Ｃｏｍは、バッファ３７Ａからコマンドキュー部３８を介してＮＡＮＤコントローラ３９へ出力され、ＮＡＮＤコントローラ３９のバッファ３９Ａに記憶される。その後、ライトコマンドＲ−Ｃｏｍは、例えばＮＡＮＤメモリ１１Ａへ投入される。これと共に、ライトデータもＮＡＮＤメモリ１１Ａへ出力される。
【００７８】
ここで、アドレス取得部３３，３４におけるアドレス取得からＮＡＮＤメモリ１１Ａへコマンドを発行できるようになるまで、リードコマンド処理とライトコマンド処理にそれぞれ時間ｔ１、ｔ２が掛かるものとする。すなわち、アドレス取得後からＮＡＮＤメモリ１１Ａへリードコマンドを投入できるまでの準備時間をｔ１とし、アドレス取得後からＮＡＮＤメモリ１１Ａへライトコマンドを投入できるまでの準備時間をｔ２とする。さらにここでは、ｔ１＜ｔ２とする。
【００７９】
次に、第２実施形態の半導体記憶装置３０の動作について説明する。
【００８０】
図１０は、第２実施形態のＳＳＤコントローラ３２におけるタイマー４０の構成を示すブロック図である。
【００８１】
図１０に示すように、タイマー４０は、対応テーブル４０１、コマンド毎の準備時間４０２、及びカウンタ４０３を備える。
【００８２】
対応テーブル４０１は、コマンド（リード、ライト、イレーズ等）と処理時間との対応を示す。対応テーブル４０１内の処理時間は、リードコマンドでは時間Ｘ、ライトコマンドでは時間Ｙ、イレーズでは時間Ｚである。対応テーブル４０１には、設定インタフェースにより、コマンド種別と処理時間が予め設定されている。
【００８３】
コマンド毎の準備時間４０２は、上述したように、リードコマンドでは時間ｔ１、ライトコマンドでは時間ｔ２であり、イレーズでは時間ｔ３とする。
【００８４】
カウンタ４０３は、対応テーブル４０１と準備時間４０２から算出した待機時間をカウントして、先行終了情報として終了を迎えるコマンドとＮＡＮＤメモリ情報（例えば、ＮＡＮＤメモリチップの番号等）を出力する。
【００８５】
図１１は、第２実施形態のＳＳＤコントローラ３２におけるコマンド発行部３５の構成を示すブロック図である。
【００８６】
図１１に示すように、コマンド発行部３５は、チップステータステーブル３５１、コマンド受信テーブル３５２、及びスケジューラ３５３を備える。
【００８７】
チップステータステーブル３５１は、ＮＡＮＤメモリ１１Ａ，１１Ｂ，１１Ｃと状態との対応を示す。すなわち、ＮＡＮＤメモリ毎にコマンドが投入可能か投入不可かを示すものである。
【００８８】
コマンド受信テーブル３５２は、アドレス取得部３３，３４から出力されるコマンドとその対象のＮＡＮＤメモリを示すものである。スケジューラ３５３は、チップステータステーブル３５１とコマンド受信テーブル３５２から実行可能なコマンドを求め、そのコマンドをコマンド処理部３６，３７へ発行する。
【００８９】
第２実施形態の半導体記憶装置３０の動作は以下のようになる。
【００９０】
まず、ＮＡＮＤコントローラ３９は、コマンドキュー部３８から受け取ったコマンドをＮＡＮＤメモリ１１Ａに発行する。これと共に、ＮＡＮＤコントローラ３９は、発行したコマンドと発行先のＮＡＮＤメモリ情報を発行情報として、タイマー４０に出力する。
【００９１】
タイマー４０は、対応テーブル４０１とコマンド毎の準備時間４０２を参照して、前記先行情報から待機時間を算出し、カウンタ４０３を起動する。タイマー４０にて算出される待機時間は、コマンドの前記処理時間から準備時間を減算することによって求められる。例えば、リードコマンドの場合、Ｘ−ｔ１であり、ライトコマンドの場合、Ｙ−ｔ２、イレーズコマンドの場合、Ｚ−ｔ３である。カウンタ４０３は、待機時間を計時して待機時間が経過したら、終了を迎えるコマンドとＮＡＮＤメモリ情報をコマンド発行部３５へ出力する。
【００９２】
コマンド発行部３５は、前記終了を迎えるコマンドとＮＡＮＤメモリ情報に従って、チップステータステーブル３５１内の情報を更新する。スケジューラ３５３は、チップステータステーブル３５１とコマンド受信テーブル３５２を参照し、適切なコマンドとＮＡＮＤメモリ、すなわち実行可能なコマンドとその対象のＮＡＮＤメモリを選択する。さらに、スケジューラ３５３は、コマンド種別に応じて、選択したコマンドをリードコマンド処理部３６あるいはライトコマンド処理部３７へ発行する。
【００９３】
従来のＳＳＤコントローラは、ＮＡＮＤメモリがいつ使用可能になるか、すなわち、ＮＡＮＤメモリにおけるコマンドがいつ終了するかが分からないため、動作速度を低下させないために、コマンドを記憶するための少なくとも２段のバッファを配置していた。初段のバッファで即座のコマンド要求に応じつつ、２段目のバッファを用いて次のコマンド要求に備えておく必要があった。第２実施形態の半導体記憶装置３０では、不揮発性メモリにおけるコマンドの終了を推定し、コマンド発行部へ先行してコマンドの終了を通知することにより、２段必要だったコマンドバッファを１段に減らすことが可能となる。
【００９４】
上述した第２実施形態では、ＮＡＮＤメモリにおけるコマンドの終了を算出し、事前にコマンド発行部にコマンドの終了を通達することができる。これにより、コマンド発行部がコマンド要求を受信してからコマンドの準備動作に入っても間に合うため、２段目のバッファにコマンドを記憶しておき、次の要求に備えておく必要がない。これにより、２段必要だったコマンドバッファとデータバッファ（ライトデータを記憶するバッファ）を１段に減らすことができる。また、設定インタフェースによって対応テーブル４０１を書き換えることにより、コマンド毎の処理時間を変更することもできる。
【００９５】
［第３実施形態］
第３実施形態の半導体記憶装置３０について説明する。この第３実施形態では、コマンド毎の処理時間、及びＮＡＮＤメモリの温度あるいは消費電力の情報に応じたオフセットに基づいて、待機時間を算出する例を述べる。
【００９６】
図１２は、第３実施形態のＳＳＤコントローラ３２におけるタイマー４０の構成を示すブロック図である。
【００９７】
図１２に示すように、タイマー４０は、対応テーブル４０４、コマンド毎の準備時間４０２、及びカウンタ４０３を備える。対応テーブル４０４は、コマンド（リード、ライト、イレーズ等）と処理時間、及びコマンドと温度情報あるいは消費電力情報に応じたオフセットとの対応を示す。対応テーブル４０４には、設定インタフェースにより、コマンド種別、処理時間、温度情報あるいは消費電力情報、及び待機時間オフセットが予め設定されている。
【００９８】
温度情報あるいは消費電力情報に応じたオフセットは、ＮＡＮＤメモリの温度（例えば、２５℃、５０℃、８５℃等）あるいは消費電力によって、コマンド毎に、例えば３つの条件Ｉ、Ｊ、Ｋが設定されている。さらに、コマンド毎の条件Ｉ、Ｊ、Ｋに、オフセットＬ、Ｍ、Ｎ、Ｏ、Ｐ、Ｑ、Ｒ、Ｓ、Ｐがそれぞれ対応付けられている。オフセットは、コマンド発行間隔に加えられる時間であり、対応するコマンドを発行するとき、発行までの待機時間に加えられる。
【００９９】
第３実施形態の半導体記憶装置３０の動作は以下のようになる。
【０１００】
まず、ＮＡＮＤコントローラ３９は、コマンドキュー部３８から受け取ったコマンドをＮＡＮＤメモリ１１Ａに発行する。これと共に、ＮＡＮＤコントローラ３９は、発行情報として、発行したコマンドと発行先のＮＡＮＤメモリ情報、及び温度情報または消費電力情報をタイマー４０に出力する。
【０１０１】
タイマー４０は、対応テーブル４０４に記述されたコマンド毎の処理時間と、温度情報または消費電力情報のオフセットと、コマンド毎の準備時間４０２を参照して、前記先行情報から待機時間を算出する。詳述すると、タイマー４０は、コマンドの処理時間と、温度情報または消費電力情報のオフセットとを加算し、この加算値からコマンドの準備時間を減算する。これにより、待機時間を算出する。さらに、算出した待機時間によりカウンタ４０３を起動する。カウンタ４０３は、待機時間を計時して待機時間が経過したら、終了を迎えるコマンドとＮＡＮＤメモリ情報をコマンド発行部３５へ出力する。
【０１０２】
コマンド発行部３５は、前記終了を迎えるコマンドとＮＡＮＤメモリ情報に従って、チップステータステーブル３５１内の情報を更新する。スケジューラ３５３は、チップステータステーブル３５１とコマンド受信テーブル３５２を参照し、適切なコマンドとＮＡＮＤメモリ、すなわち実行可能なコマンドとその対象のＮＡＮＤメモリを選択する。さらに、スケジューラ３５３は、コマンド種別に応じて、選択したコマンドをリードコマンド処理部３６あるいはライトコマンド処理部３７へ発行する。
【０１０３】
第３実施形態では、第２実施形態と同様に、ＮＡＮＤメモリにおけるコマンドの終了を算出し、事前にコマンド発行部にコマンドの終了を通達することができる。これにより、２段必要だったコマンドバッファとデータバッファ（ライトデータを記憶するバッファ）を１段に減らすことができる。
【０１０４】
さらに、第３実施形態では、温度情報あるいは消費電力情報に応じて、コマンド発行時に待機すべき時間（オフセット）を変更することにより、ＮＡＮＤメモリの動作性能と温度あるいは消費電力とのバランスを取ることが可能となる。また、第３実施形態を用いれば、ＮＡＮＤメモリへ投入するコマンドの間隔を細やかに制御することが可能になるため、状況に応じた動作性能と、消費電力及び温度の制御も可能である。
【０１０５】
また、設定インタフェースによって対応テーブル４０４を書き換えることにより、外部環境や顧客要求に応じて動作性能と温度あるいは消費電力のどちらに重きを置くかの設定も可能である。
【０１０６】
［第４実施形態］
図１３は、第４実施形態の半導体記憶装置３０を搭載したパーソナルコンピュータの一例を示す斜視図である。第４実施形態では、上述したＳＳＤを用いた適用例について説明する。
【０１０７】
パーソナルコンピュータ２００は、本体２０１、及び表示ユニット２０２を備えている。表示ユニット２０２は、ディスプレイハウジング２０３と、このディスプレイハウジング２０３に収容された表示装置２０４とを備える。
【０１０８】
本体２０１は、筐体２０５と、キーボード２０６と、ポインティングデバイスであるタッチパッド２０７とを備えている。筐体２０５の内部には、メイン回路基板、Optical Disk Device（ＯＤＤ）ユニット、カードスロット、及びＳＳＤ１０等が収容されている。
【０１０９】
カードスロットは、筐体２０５の周壁に隣接して設けられている。周壁には、カードスロットに対向する開口部２０８が設けられている。ユーザは、この開口部２０８を通じて筐体２０５の外部から追加デバイスをカードスロットに挿抜することが可能である。
【０１１０】
ＳＳＤ１０は、従来のa hard disk drive（ＨＤＤ）の置き換えとして、パーソナルコンピュータ２００内部に実装された状態として使用してもよいし、パーソナルコンピュータ２００が備えるカードスロットに挿入した状態で、追加デバイスとして使用してもよい。
【０１１１】
図１４は、第４実施形態の半導体記憶装置３０を搭載したパーソナルコンピュータの構成例を示すブロック図である。
【０１１２】
パーソナルコンピュータ２００は、ＣＰＵ３０１、ノースブリッジ３０２、主メモリ３０３、ビデオコントローラ３０４、オーディオコントローラ３０５、サウスブリッジ３０９、ＢＩＯＳ−ＲＯＭ３１０、ＳＳＤ１０、ＯＤＤユニット３１１、エンベデッドコントローラ／キーボードコントローラＩＣ（ＥＣ／ＫＢＣ）３１２、及びネットワークコントローラ３１３等を備えている。
【０１１３】
ＣＰＵ３０１は、パーソナルコンピュータ２００の動作を制御するために設けられたプロセッサであり、ＳＳＤ１０から主メモリ３０３にロードされるオペレーティングシステム（ＯＳ）を実行する。更に、ＯＤＤユニット３１１が、装填された光ディスクに対してリード処理及びライト処理の少なくとも１つの処理の実行を可能にした場合に、ＣＰＵ３０１は、それらの処理を実行する。
【０１１４】
また、ＣＰＵ３０１は、ＢＩＯＳ−ＲＯＭ３１０に格納された Basic Input Output System（ＢＩＯＳ）も実行する。なお、ＢＩＯＳは、パーソナルコンピュータ２００内のハードウェア制御のためのプログラムである。
【０１１５】
ノースブリッジ３０２は、ＣＰＵ３０１のローカルバスとサウスブリッジ３０９との間を接続するブリッジデバイスである。ノースブリッジ３０２には、主メモリ３０３をアクセス制御するメモリコントローラも内蔵されている。
【０１１６】
また、ノースブリッジ３０２は、Ａｃｃｅｌｅｒａｔｅｄ Ｇｒａｐｈｉｃｓ Ｐｏｒｔ（ＡＧＰ）バス３１４等を介してビデオコントローラ３０４との通信、及びオーディオコントローラ３０５との通信を実行する機能も有している。
【０１１７】
主メモリ３０３は、プログラムやデータを一時的に記憶し、ＣＰＵ３０１のワークエリアとして機能する。主メモリ３０３は、例えばＲＡＭから構成される。
【０１１８】
ビデオコントローラ３０４は、パーソナルコンピュータ２００のディスプレイモニタとして使用される表示ユニット２０２を制御するビデオ再生コントローラである。
【０１１９】
オーディオコントローラ３０５は、パーソナルコンピュータ２００のスピーカ３０６を制御するオーディオ再生コントローラである。
【０１２０】
サウスブリッジ３０９は、Ｌｏｗ Ｐｉｎ Ｃｏｕｎｔ（ＬＰＣ）バス上の各デバイス、及びＰｅｒｉｐｈｅｒａｌ Ｃｏｍｐｏｎｅｎｔ Ｉｎｔｅｒｃｏｎｎｅｃｔ（ＰＣＩ）バス３１５上の各デバイスを制御する。また、サウスブリッジ３０９は、各種ソフトウェア及びデータを格納する記憶装置であるＳＳＤ１０を、ＡＴＡインタフェースを介して制御する。
【０１２１】
パーソナルコンピュータ２００は、セクタ単位でＳＳＤ１０へのアクセスを行う。ＡＴＡインタフェースを介して、ライトコマンド、リードコマンド、及びキャッシュフラッシュコマンド等がＳＳＤ１０に入力される。
【０１２２】
また、サウスブリッジ３０９は、ＢＩＯＳ−ＲＯＭ３１０、及びＯＤＤユニット３１１をアクセス制御するための機能も有している。
【０１２３】
ＥＣ／ＫＢＣ３１２は、電力管理のためのエンベデッドコントローラと、キーボード（ＫＢ）２０６及びタッチパッド２０７を制御するためのキーボードコントローラとが集積された１チップマイクロコンピュータである。
【０１２４】
このＥＣ／ＫＢＣ３１２は、ユーザによるパワーボタンの操作に応じてパーソナルコンピュータ２００の電源をＯＮ／ＯＦＦする機能を有している。ネットワークコントローラ３１３は、例えばインターネット等の外部ネットワークとの通信を実行する通信装置である。
【０１２５】
図１５は、第５実施形態の半導体記憶装置の構成を示すブロック図である。
【０１２６】
本実施形態の半導体記憶装置は、データが格納される不揮発性メモリ４０９と、コマンド実行部４０２とコマンド出力部４０８を有するＮＡＮＤコントローラ４０６とを備える。
【０１２７】
コマンド出力部４０８は、コマンドをコマンド実行部４０２に出力すると同時に、出力したコマンド毎の処理時間情報と、コマンド毎の準備時間情報を参照して、次にコマンドを出力するまでの待機時間を算出する。
【０１２８】
ここで、リードコマンド処理とライトコマンド処理にそれぞれ時間ｔ１、ｔ２が掛かるものとする。すなわち、アドレス取得後から不揮発性メモリ４０９へリードコマンドを投入できるまでの準備時間をｔ１とし、アドレス取得後から不揮発性メモリ４０９へライトコマンドを投入できるまでの準備時間をｔ２とする。さらにここでは、ｔ１＜ｔ２とする。
【０１２９】
算出される待機時間は、コマンドの処理時間から準備時間を減算することによって求められる。例えば、リードコマンド、ライトコマンド、イレーズコマンドの準備時間をＸ、Ｙ及びＺとするとリードコマンドの場合、Ｘ−ｔ１であり、ライトコマンドの場合、Ｙ−ｔ２、イレーズコマンドの場合、Ｚ−ｔ３である。
【０１３０】
算出した待機時間により、待機時間を計時して待機時間が経過したら、次のコマンドをコマンド実行部４０７に出力する。ＮＡＮＤコントローラ４０６はこの動作が繰り返し行う。
【０１３１】
以上説明したように本実施形態によれば、不揮発性メモリに対するリード、ライト、及びイレーズの動作性能を高めることができ、ＳＳＤの使用効率を向上させることができる。さらには、ユーザの利便性を高めることができるメモリシステムを提供することが可能である。なお、コマンド出力部４０８及びコマンド実行部４０７を備えているのは、ＮＡＮＤコントローラ４０６に限らない。
【０１３２】
図１２，１３に示したパーソナルコンピュータにおいて、第１実施形態のＳＳＤの動作が実行される適用例について説明する。ここでは、ＳＳＤ１０を省電力状態に遷移するデバイススリープについて述べる。
【０１３３】
図１６は、パーソナルコンピュータにおいてデバイススリープが実行されるＳＳＤの構成を示すブロック図である。
【０１３４】
ＳＳＤ１０の電源端子１５には、電源電圧ＶＤＤが供給されている。さらに、電源電圧ＶＤＤは、電源端子１５から電源制御回路１６と電源スイッチ回路１７に供給されている。電源制御回路１６は、ＣＰＵ３０１から出力される信号に従って、電源スイッチ回路１７の動作を制御する制御信号を電源スイッチ回路１７へ出力する。電源スイッチ回路１７は、前記制御信号によってオン状態あるいはオフ状態に切り換えられる。電源スイッチ回路１７は、オン状態にあるとき、電源電圧ＶＤＤをＳＳＤコントローラ１２及び不揮発性半導体メモリ（例えば、ＮＡＮＤメモリ等）１１に供給する。一方、オフ状態にあるとき、ＳＳＤコントローラ１２及び不揮発性半導体メモリ１１への電源電圧ＶＤＤの供給を停止する。
【０１３５】
以下に、デバイススリープが実行される動作の一例を述べる。
【０１３６】
パーソナルコンピュータ２００内のＣＰＵ３０１から電源制御回路１６に省電力状態への遷移要求が出される。省電力状態とは、ＳＳＤ１０内で電源電圧ＶDDの供給を制御する回路（例えば、電源制御回路１６と電源スイッチ回路１７）のみに電源電圧が供給され、ＳＳＤ１０内のその他の回路（例えば、ＳＳＤコントローラ１２や不揮発性半導体メモリ１１）には電源電圧が供給されていない状態を指す。
【０１３７】
省電力状態への遷移要求を受け取ると、電源制御回路１６は、電源電圧ＶDDの供給遮断を指示する制御信号（オフ要求）を電源スイッチ回路１７へ出力する。電源スイッチ回路１７は、制御信号（オフ要求）を受け取るとオフ状態となり、ＳＳＤコントローラ１２と不揮発性半導体メモリ１１への電源電圧ＶＤＤの供給を遮断する。これにより、ＳＳＤ１０は省電力状態に遷移する。
【０１３８】
一方、ＳＳＤ１０を省電力状態から通常状態へ復帰させる場合、ＣＰＵ３０１から電源制御回路１６に、省電力状態から通常状態への復帰要求が出される。通常状態とは、ＳＳＤ１０内の電源電圧ＶＤＤの供給を制御する回路以外の回路（例えば、ＳＳＤコントローラ１２と不揮発性半導体メモリ１１）にも電源電圧が供給され、動作が通常に行われる状態を指す。
【０１３９】
通常状態への復帰要求を受け取ると、電源制御回路１６は、電源電圧ＶDDの供給を指示する制御信号（オン要求）を電源スイッチ回路１７へ出力する。電源スイッチ回路１７は、制御信号（オン要求）を受け取るとオン状態となり、ＳＳＤコントローラ１２と不揮発性半導体メモリ１１への電源電圧ＶＤＤの供給を開始する。これにより、ＳＳＤ１０は通常状態に復帰する。
【０１４０】
上述したＳＳＤ１０の省電力状態と通常状態の遷移において、前記第１実施形態が適用されると以下のようになる。例えば、ユーザが図１３に示したノート型パーソナルコンピュータ２００を使用中に、表示ユニット２０２を一瞬閉じて、直ぐに開いたとき、上述したデバイススリープが一瞬起動し、直ぐに通常状態に復帰する場合がある。
【０１４１】
図１７は、リードにおいてデバイススリープが起動した場合の一例を示すタイムダイアグラムである。
【０１４２】
図１７に示すように、期間ＯＵＴ０にて、不揮発性半導体メモリ１１内のバッファに保持されたデータがＳＳＤコントローラ１２のデータ制御部によって引き抜かれているとき、デバイススリープが起動してデータの引き抜きが一旦停止する。その後、直ぐデバイススリープから通常状態に復帰する。通常状態への復帰により、バッファのデータの引き抜きが再開される（後部の期間ＯＵＴ０）。
【０１４３】
上述したように、不揮発性半導体メモリ１１内のバッファのデータがＳＳＤコントローラ１２へ引き抜かれているときに、省電力状態、例えばデバイススリープに遷移して、直ぐに通常状態に復帰した場合、不揮発性半導体メモリ１１内のバッファからのデータ引き抜きを一旦中断して、再開すれば、データ引き抜きを始めからやり直す場合に比べて、リードに要する時間を短縮することができる。これにより、不揮発性半導体メモリの使用効率を向上させることが可能である。
【０１４４】
図１８は、第４実施形態のＳＳＤを搭載したサーバの使用例を示す概念図である。
【０１４５】
インターネット４０１にはサーバ４００が接続されている。サーバ４００には、ＳＳＤ１０が搭載されている。さらに、インターネット４０１には端末、例えばコンピュータ４０２が接続されている。ユーザは、コンピュータ４０２からインターネット４０１を介してサーバ４００内のＳＳＤ１０にアクセスする。ＳＳＤ１０の構成及び動作については前述した実施形態と同様である。
【０１４６】
本発明のいくつかの実施例を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これらの新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【０１４７】
１０…ＳＳＤ
１１…不揮発性半導体メモリ
１２…ＳＳＤコントローラ
２４…半導体記憶装置
２５…ＮＡＮＤコントローラ
３０…半導体記憶装置
３４…アドレス取得部
３９…ＮＡＮＤコントローラ
４０…タイマー
１００…ホスト
２００…パーソナルコンピュータ
２０２…表示ユニット
２０４…タッチパッド
２５１…コマンドキュー部
２５３…コマンド発行部
２５４…コマンド監視部
２５５…コマンド発行部
２５６…デコーダ
３０１…ＣＰＵ
３５３…スケジューラ
４０１…不揮発性メモリ
４０２…コマンド実行部
４０６…ＮＡＮＤコントローラ
【図１】
2014174849.tif 000003
【図２】
2014174849.tif 000004
【図３】
2014174849.tif 000005
【図４】
2014174849.tif 000006
【図５】
2014174849.tif 000007
【図６】
2014174849.tif 000008
【図７】
2014174849.tif 000009
【図８】
2014174849.tif 000010
【図９】
2014174849.tif 000011
【図１０】
2014174849.tif 000012
【図１１】
2014174849.tif 000013
【図１２】
2014174849.tif 000014
【図１３】
2014174849.tif 000015
【図１４】
2014174849.tif 000016
【図１５】
2014174849.tif 000017
【図１６】
2014174849.tif 000018
【図１７】
2014174849.tif 000019
【図１８】
2014174849.tif 000020