(57)【特許請求の範囲】
【請求項１】
不揮発性のメモリセルアレイを備え、複数のバンクを構成するメモリチップと、
ホスト装置からの要求に基づいてバンク毎に複数のメモリアクセス命令を生成する命令生成部と、
前記複数のメモリアクセス命令の夫々に対応するバンクにメモリアクセスをメモリアクセス命令毎に実行するメモリ制御部と、
を備え、
前記複数のバンクの夫々に対するメモリアクセスは、ともに単一のバンクに対して排他的に実行されるコマンドシーケンスであって、実行完了の直後にメモリアクセス対象のバンクにバンク内処理を実行せしめる第１コマンドシーケンスと、前記バンク内処理の実行完了後に実行せしめられる第２コマンドシーケンスと、を備え、
前記メモリ制御部は、前記複数のバンクのうちの第１のバンクに対してｉ番目のメモリアクセス命令にかかる第２コマンドシーケンスとｉ＋１番目のメモリアクセス命令にかかる第１コマンドシーケンスとを連続して実行した後で、かつ、前記第１のバンクがバンク内処理を実行している最中に、第２のバンクに対するメモリアクセスの実行を開始し、
前記ｉ＋１番目のメモリアクセス命令は、連続した実行を許可するか非許可するかを示すフラグ情報を備え、
前記メモリ制御部は、
前記フラグ情報が許可を示す場合には、前記第１のバンクに対して前記ｉ番目のメモリアクセス命令にかかる第２コマンドシーケンスと前記ｉ＋１番目のメモリアクセス命令にかかる第１コマンドシーケンスとを連続して実行した後で、かつ、前記第１のバンクがバンク内処理を実行している最中に、前記第２のバンクに対する第１コマンドシーケンスの実行を開始し、
前記フラグ情報が非許可を示す場合には、前記第１のバンクに対してｉ番目のメモリアクセス命令にかかる第２コマンドシーケンスを実行した後に、前記ｉ＋１番目のメモリアクセス命令にかかる第１コマンドシーケンスの実行を開始せずに、前記第２のバンクに対する第１コマンドシーケンスまたは第２コマンドシーケンスの実行を開始する、
ことを特徴とするメモリシステム。
【請求項２】
前記複数のメモリアクセス命令は、リードアクセス命令を含み、
前記リードアクセス命令にかかる第１コマンドシーケンスは、リードアドレスの送信を含み、
前記リードアクセス命令にかかるバンク内処理は、前記メモリアクセス対象のバンクを構成するメモリチップが、前記メモリセルアレイにおける前記リードアドレスにより指定された番地からリードデータを読み出して、読み出したリードデータを自メモリチップが備えるデータキャッシュに格納する処理であって、
前記リードアクセス命令にかかる第２コマンドシーケンスは、前記データキャッシュに格納されたリードデータの取得を含む、
ことを特徴とする請求項１に記載のメモリシステム。
【請求項３】
前記複数のメモリアクセス命令は、ライトアクセス命令を含み、
前記ライトアクセス命令にかかる第１コマンドシーケンスは、ライトアドレスおよびライトデータの送信を含み、
前記ライトアクセス命令にかかるバンク内処理は、前記メモリアクセス対象のバンクを構成するメモリチップが、前記送信されてきたライトデータをメモリセルアレイにおける前記ライトアドレスにより指定された番地にプログラムする処理であって、
前記ライトアクセス命令にかかる第２コマンドシーケンスは、前記バンク内処理の成否情報の取得を含む、
ことを特徴とする請求項１に記載のメモリシステム。
【請求項４】
前記複数のメモリアクセス命令は、イレースアクセス命令を含み、
前記イレースアクセス命令にかかる第１コマンドシーケンスは、イレースアドレスの送信を含み、
前記イレースアクセス命令にかかるバンク内処理は、前記メモリアクセス対象のバンクを構成するメモリチップが、メモリセルアレイにおける前記イレースアドレスにより指定された番地に格納されているデータを消去する処理であって、
前記イレースアクセス命令にかかる第２コマンドシーケンスは、前記バンク内処理の成否情報の取得を含む、
ことを特徴とする請求項１に記載のメモリシステム。
【請求項５】
不揮発性のメモリセルアレイを備え、複数のバンクを構成するメモリチップに対するバンク毎のメモリアクセスをインターリーブするバンクインターリーブ方法であって、
ホスト装置からの要求に基づいてバンク毎に複数のメモリアクセス命令を生成する命令生成ステップと、
前記複数のメモリアクセス命令の夫々に基づいて、実行完了の直後にメモリアクセス対象のバンクにバンク内処理を実行せしめる第１コマンドシーケンスと、前記バンク内処理の実行完了後に実行せしめられる第２コマンドシーケンスと、をメモリアクセス命令毎に生成するコマンドシーケンス生成ステップと、
前記生成された第１コマンドシーケンスおよび第２コマンドシーケンスをバンク毎に排他的に実行するコマンドシーケンス実行ステップと、
前記複数のバンクのうちの第１のバンクに対してｉ番目のメモリアクセス命令にかかる第２コマンドシーケンスとｉ＋１番目のメモリアクセス命令にかかる第１コマンドシーケンスとを連続して実行した後で、かつ、前記第１のバンクがバンク内処理を実行している最中に、メモリアクセスの実行対象を第２のバンクに切り替える、第１のバンク切り替えステップと、
を備え、
前記ｉ＋１番目のメモリアクセス命令は、前記第１のバンク切り替えステップの実行を許可するか非許可するかを示すフラグ情報を備え、
前記ｉ＋１番目のメモリアクセス命令が備えるフラグ情報が許可を示すか非許可を示すかを判定するフラグ確認ステップと、
前記フラグ情報が非許可を示す場合には、前記第１のバンクに対してｉ番目のメモリアクセス命令にかかる第２コマンドシーケンスを実行した後に、前記ｉ＋１番目のメモリアクセス命令にかかる第１コマンドシーケンスの実行を開始せずに、前記第２のバンクに対する第１コマンドシーケンスまたは第２コマンドシーケンスの実行を開始する、第２のバンク切り替えステップと、
をさらに備えることを特徴とするバンクインターリーブ方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、メモリシステムおよびバンクインターリーブ方法に関する。
【背景技術】
【０００２】
コンピュータシステムに用いられるメモリシステムとして、ＮＡＮＤ型の記憶セルを備えるメモリチップを搭載したＳＳＤ（Solid  State  Drive）が注目されている。ＳＳＤは、磁気ディスク装置に比べ、高速、軽量などの利点を有している。
【０００３】
近年、ＳＳＤは、複数のメモリチップを並列駆動することで転送効率を向上させている。並列動作の一つの方法として、同一チャネルに接続されている複数のメモリチップをバンク単位でインターリーブさせる技術（バンクインターリーブ）がある。バンクインターリーブによれば、データ転送装置とメモリチップとの間のデータ（コマンド、アドレス、リードデータ、ライトデータを含む）の転送にかかる時間がメモリチップ内部の処理にかかる時間によって隠蔽される結果、メモリシステムの転送効率が向上する。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１１−１８２２２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
本発明の一つの実施形態は、できるだけ転送効率がよいメモリシステムを提供することを目的とする。
【課題を解決するための手段】
【０００６】
本発明の一つの実施形態によれば、メモリシステムは、メモリチップと、命令生成部と、メモリ制御部とを備える。メモリチップは、不揮発性のメモリセルアレイを備え、複数のバンクを構成する。命令生成部は、ホスト装置からの要求に基づいてバンク毎に複数のメモリアクセス命令を生成する。メモリ制御部は、前記複数のメモリアクセス命令の夫々に対応するバンクにメモリアクセスをメモリアクセス命令毎に実行する。前記複数のバンクの夫々に対するメモリアクセスは、実行完了の直後にメモリアクセス対象のバンクにバンク内処理を実行せしめる第１コマンドシーケンスと、前記バンク内処理の実行完了後に実行せしめられる第２コマンドシーケンスと、を備える。第１コマンドシーケンスおよび第２コマンドシーケンスは、ともに単一のバンクに対して排他的に実行されるコマンドシーケンスである。ここで、前記メモリ制御部は、前記複数のバンクのうちの第１のバンクに対してｉ番目のメモリアクセス命令にかかる第２コマンドシーケンスとｉ＋１番目のメモリアクセス命令にかかる第１コマンドシーケンスとを連続して実行した後で、かつ、前記第１のバンクがバンク内処理を実行している最中に、第２のバンクに対するメモリアクセスの実行を開始する。前記ｉ＋１番目のメモリアクセス命令は、連続した実行を許可するか非許可するかを示すフラグ情報を備える。前記フラグ情報が許可を示す場合には、前記メモリ制御部は、前記第１のバンクに対して前記ｉ番目のメモリアクセス命令にかかる第２コマンドシーケンスと前記ｉ＋１番目のメモリアクセス命令にかかる第１コマンドシーケンスとを連続して実行した後で、かつ、前記第１のバンクがバンク内処理を実行している最中に、前記第２のバンクに対する第１コマンドシーケンスの実行を開始する。前記フラグ情報が非許可を示す場合には、前記メモリ制御部は、前記第１のバンクに対してｉ番目のメモリアクセス命令にかかる第２コマンドシーケンスを実行した後に、前記ｉ＋１番目のメモリアクセス命令にかかる第１コマンドシーケンスの実行を開始せずに、前記第２のバンクに対する第１コマンドシーケンスまたは第２コマンドシーケンスの実行を開始する。
【図面の簡単な説明】
【０００７】
【図１】図１は、本発明の第１の実施形態のメモリシステムが適用されたＳＳＤの構成を説明する図である。
【図２】図２は、ＮＡＮＤコントローラとＮＡＮＤメモリとの間の接続関係をさらに詳しく説明する図である。
【図３】図３は、メモリチップの構成を説明する図である。
【図４】図４は、Ｉ／ＯおよびＲｙ／Ｂｙの状態遷移を説明する概念図である。
【図５−１】図５−１は、コマンドシーケンスの一例を説明する図である。
【図５−２】図５−２は、コマンドシーケンスの一例を説明する図である。
【図５−３】図５−３は、コマンドシーケンスの一例を説明する図である。
【図６】図６は、比較例および第１の実施形態を適用した場合の夫々において、連続してリードが実行される場合の各バンクの動作時間を説明するタイミングチャートである。
【図７】図７は、ＮＡＮＤコントローラが備えるチャネル毎のコントローラの構成を説明する図である。
【図８】図８は、ＭＰＵの動作を説明するフローチャートである。
【図９】図９は、ＮＡＮＤコントローラが備えるチャネル毎のコントローラの動作を説明するフローチャートである。
【図１０】図１０は、比較例および第１の実施形態を適用した場合の夫々において、連続してライトが実行される場合の各バンクの動作時間を説明するタイミングチャートである。
【図１１】図１１は、比較例および第１の実施形態を適用した場合の夫々において、連続してイレースが実行される場合の各バンクの動作時間を説明するタイミングチャートである。
【図１２−１】図１２−１は、比較例および第１の実施形態を適用した場合の夫々において、バンク毎のメモリアクセスのアクセスモードがランダムに構成されたときの各バンクの動作時間を説明するタイミングチャートである。
【図１２−２】図１２−２は、比較例および第１の実施形態を適用した場合の夫々において、バンク毎のメモリアクセスのアクセスモードがランダムに構成されたときの各バンクの動作時間を説明するタイミングチャートである。
【図１２−３】図１２−３は、比較例および第１の実施形態を適用した場合の夫々において、バンク毎のメモリアクセスのアクセスモードがランダムに構成されたときの各バンクの動作時間を説明するタイミングチャートである。
【図１３】図１３は、第１の実施形態のＳＳＤを搭載したパーソナルコンピュータの一例を示す斜視図である。
【図１４】図１４は、ＳＳＤを搭載したパーソナルコンピュータのシステム構成例を示している。
【発明を実施するための形態】
【０００８】
以下に添付図面を参照して、実施形態にかかるメモリシステムおよびバンクインターリーブ方法を詳細に説明する。なお、これらの実施形態により本発明が限定されるものではない。
【０００９】
（第１の実施形態）
図１は、本発明の第１の実施形態のメモリシステムが適用されたＳＳＤの構成を説明する図である。
【００１０】
ＳＳＤ１００は、パーソナルコンピュータなどのホスト装置２００とシリアルインターフェースであるＳＡＴＡ（Ｓｅｒｉａｌ  Ａｄｖａｎｃｅｄ  Ｔｅｃｈｎｏｌｏｇｙ  Ａｔｔａｃｈｍｅｎｔ）規格に準拠した通信インタフェースで接続され、ホスト装置２００の外部記憶装置として機能する。なお、ＳＳＤ１００とホスト装置２００との間の通信インタフェースの規格として、ＳＡＴＡ以外の規格を採用することができる。例えば、ＳＡＳ（Ｓｅｒｉａｌ  Ａｔｔａｃｈｅｄ  ＳＣＳＩ）規格やＰＣＩ（Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔｓ  Ｉｎｔｅｒｃｏｎｎｅｃｔ）  Ｅｘｐｒｅｓｓ規格を採用することができる。
【００１１】
ＳＳＤ１００は、ホスト装置２００からリード／ライトされるデータを記憶する不揮発性メモリであるＮＡＮＤメモリ１と、ＳＳＤ１００のデータ転送制御を実行するデータ転送装置２と、該データ転送装置２がデータ転送のための転送データを一時格納するためのメモリであるＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）３と、を備えている。ＲＡＭ３は、ＮＡＮＤメモリ１のデータキャッシュメモリとして機能し、例えば、ＤＲＡＭ（Ｄｙｎａｍｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）、ＦｅＲＡＭ（Ｆｅｒｒｏｅｌｅｃｔｒｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）、ＭＲＡＭ（Ｍａｇｎｅｔｏｒｅｓｉｓｔｉｖｅ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）などを採用することができる。 
【００１２】
データ転送装置２は、さらに、ＭＰＵ（命令生成部）４と、ＳＡＴＡコントローラ５と、ＲＡＭコントローラ６と、ＮＡＮＤコントローラ７と、を備えている。ＭＰＵ４、ＳＡＴＡコントローラ５、ＲＡＭコントローラ６およびＮＡＮＤコントローラ７は、夫々バスに接続されている。
【００１３】
ＭＰＵ４は、ファームウェアを実行することによって、データ転送装置２全体の制御を実行する。ＳＡＴＡコントローラ５は、ホスト装置２００とＲＡＭ３との間のデータ転送の制御を実行する。ＲＡＭコントローラ６は、ＲＡＭ３に対するデータのリード／ライトを制御する。ＮＡＮＤコントローラ７は、ＮＡＮＤメモリ１のリード／ライト制御およびＮＡＮＤメモリ１とＲＡＭ３との間のデータ転送の制御を実行する。 
【００１４】
ＮＡＮＤメモリ１は、複数個（ここでは２個）の並列動作要素１ａ、１ｂによって構成されている。並列動作要素１ａ、１ｂは、夫々個別にＮＡＮＤコントローラ７に接続されている。具体的には、並列動作要素１ａは、チャネル（ｃｈ）０の配線で、並列動作要素１ｂはｃｈ１の配線で、夫々ＮＡＮＤインタフェース７に接続されている。各並列動作要素１ａ、１ｂは、バンクインターリーブが可能な複数のバンク（図１では２バンク、バンク０およびバンク１）によって構成されている。チャネル並列動作要素１ａ、１ｂ内の各々のバンクは、夫々１つのメモリチップによって構成されている。即ち、メモリチップ１０はバンク０、メモリチップ１１はバンク１を構成している。なお、夫々のバンクは、複数個のメモリチップにより構成される場合もある。
【００１５】
図２は、ＮＡＮＤコントローラ７とＮＡＮＤメモリ１との間の接続関係をさらに詳しく説明する図である。ＮＡＮＤコントローラ７は、並列動作要素１ａを制御するｃｈ０コントローラ（メモリ制御部）７０と、並列動作要素１ｂを制御するｃｈ１コントローラ（メモリ制御部）７１とを備えている。ｃｈ０コントローラ７０は、１つのＩ／Ｏ信号線（Ｉ／Ｏ）を備えている。このＩ／Ｏには、並列動作要素１ａが備えるメモリチップ１０、１１が共通接続されている。また、ｃｈ０コントローラ７０は、メモリチップ１０、１１の夫々と、チップイネーブル信号（ＣＥ）およびレディービジー信号（Ｒｙ／Ｂｙ）で個別に接続されている。これにより、ｃｈ０コントローラ７０は、ＣＥを個別に操作することによってアクセス先のバンクを指定することができる。また、Ｒｙ／Ｂｙの状態を確認することによって、バンクの動作中／非動作中を認識することができる。なお、ｃｈ１コントローラ７１と並列動作要素１ｂが備えるメモリチップ１０、１１との間の接続関係は、ｃｈ０コントローラ７０と並列動作要素１ａが備えるメモリチップ１０、１１との間の接続関係と同様であるので、重複する説明を省略する。
【００１６】
図３は、メモリチップ１０、１１の構成を説明する図である。なお、メモリチップ１０およびメモリチップ１１は同じ構成を備えているので、ここでは代表としてメモリチップ１０について説明する。
【００１７】
メモリチップ１０は、メモリセルアレイ１１５及びその周辺回路を備える。メモリセルアレイ１１５は、複数のブロックBLOCK1-BLOCKnを備えて構成されている。各ブロックの構成は、複数のメモリセルトランジスタＭＣ、ワード線ＷＬ、ビット線ＢＬ等を含むものである。各ブロック中のメモリセルトランジスタＭＣ中のデータは、一括して消去される。メモリセルトランジスタ単位及びページ単位でのデータ消去はできない。すなわち、個々のブロックが最小の消去単位となる。
【００１８】
周辺回路は、センスアンプ１１４、入出力制御回路１０４、ロジックコントロール回路１０５等を備える。
【００１９】
センスアンプ１１４は、ビット線ＢＬを介してメモリセルアレイ１１５内のメモリセル（メモリセルトランジスタＭＣ）のデータを読み出し、ビット線ＢＬを介してメモリセルアレイ１１５内のメモリセルの状態を検出する。
【００２０】
データキャッシュ１１３は、センスアンプ１１４から読み出されたデータまたはセンスアンプ１１４に供給されるデータを一時的に保持する。
【００２１】
カラムデコーダ１１２は、メモリチップ１０の外部からＩ／Ｏを介して供給されたアドレス信号に基づいて、特定のビット線ＢＬ、センスアンプ等を選択する。
【００２２】
カラムアドレスバッファ１１１は、アドレス信号を一時的に保持し、カラムデコーダ１１２に供給する。
【００２３】
ロウアドレスデコーダ１１６は、データ読み出し、書き込み、あるいは消去に必要な種々の電圧を電圧生成回路１０６から受け取り、そのような電圧をアドレス信号に基づいて特定のワード線ＷＬに印加する。
【００２４】
ロウアドレスバッファデコーダ１１７は、アドレス信号を一時的に保持し、ロウアドレスデコーダ１１６に供給する。
【００２５】
電圧生成回路１０６は、基準電源電圧ＶＳＳ、ＶＣＣ、電圧ＶＳＳＱ、ＶＣＣＱ等を受け取り、これらからデータ書き込み、読み出し、消去等に必要な電圧を生成する。
【００２６】
入出力制御回路１０４は、ＩＯ端子を介して、メモリチップ１０の動作を制御する種々のコマンド、アドレス信号、書き込みデータを受け取り、また読み出しデータを出力する。入出力制御回路１０４から出力されたアドレス信号は、アドレスレジスタ１０２によってラッチされる。ラッチされたアドレス信号は、カラムアドレスバッファ１１１及びロウアドレスバッファデコーダ１１７に供給される。入出力制御回路１０４から出力されたコマンドは、コマンドレジスタ１０３によってラッチされる。ステータスレジスタ１０１は、入出力制御回路１０４のための種々のステータスについての値を保持する。
【００２７】
メモリチップ１０は、外部インターフェイス（ＮＡＮＤ  Ｉ／Ｆ）として、コマンド、アドレス、データ入出力用のＩＯ端子、動作を制御するための種々の制御信号を外部から受け取る。制御信号には、例えばＣＥ、コマンドラッチイネーブル（ＣＬＥ）、アドレスラッチイネーブル（ＡＬＥ）、リードイネーブル（ＲＥ及び／ＲＥ）、ライトイネーブル（ＷＥ及び／ＷＥ）、ライトプロテクト（ＷＰ）、クロック（ＤＱＳ、／ＤＱＳ）が含まれる。なお、ＣＬＥ、ＡＬＥ、ＲＥ、／ＲＥ、ＷＥ、／ＷＥ、ＷＰ、ＤＱＳ、および／ＤＱＳは、ＣＥやＲｙ／Ｂｙと同様に、ｃｈ０コントローラ７０と一対一で接続されている。
【００２８】
これらの制御信号は、対応する端子において受け取られ、ロジックコントロール回路１０５に供給される。ロジックコントロール回路１０５は、制御信号に基づいて、入出力制御回路１０４を制御して、端子ＩＯ上の信号をコマンド、アドレス、またはデータとして入出力制御回路１０４を介してアドレスレジスタ１０２、コマンドレジスタ１０３、データキャッシュ１１３等に到達することを許可したり禁止したりする。また、ロジックコントロール回路１０５は、コマンドレジスタ１０３から、ラッチされたコマンドを受け取る。
【００２９】
制御信号のうち、ＷＥ端子はデータ入力用クロックを供給し、ＲＥ端子はデータ出力用クロックを供給し、ＤＱＳ端子はデータ入出力用クロックを伝送し、ＣＬＥ端子はデータ入力をコマンドとして入力するイネーブル用であり、ＡＬＥ端子はデータ入力をアドレスとして入力するイネーブル用であり、ＣＥ端子はデータ入出力等全般の機能を有効化するためである。
【００３０】
また、Ｒｙ／Ｂｙ端子はメモリチップ１０の内部動作状態を示し、ＷＰ端子は誤書き込み防止用の書き込み防止信号を伝送し、Ｖｃｃ／Ｖｓｓ／Ｖｃｃｑ／Ｖｓｓｑ端子等は電力供給用である。また、本実施形態では、高速インタフェースにてデータ伝送を実現する際に利用される端子（Toggle）として、ＲＥ端子、ＷＥ端子、ＤＱＳ端子には、各々相補信号を伝送する／ＲＥ端子、／ＷＥ端子、／ＤＱＳ端子が存在する。
【００３１】
なお、ロジックコントロール回路１０５は、レディ／ビジー信号（Ｒｙ／Ｂｙ）の出力を司る。具体的には、ロジックコントロール回路１０５は、メモリチップ１０がビジー状態の間、ビジー信号を出力する。
【００３２】
レディ／ビジー回路（ＲＹ／ＢＹ）１０７は、ロジックコントロール回路１０５の制御を受けて、スイッチトランジスタを介して、Ｒｙ／Ｂｙ信号をメモリチップ１０の外部に通知する。
【００３３】
図４は、並列動作要素１ａに属するメモリチップ１０に対するメモリアクセスが実行される際のｃｈ０コントローラ７０とメモリチップ１０とを接続するＩ／ＯおよびＲｙ／Ｂｙ０の状態遷移を説明する概念図である。本図の上段は、Ｉ／Ｏの状態遷移、下段はＲｙ／Ｂｙ０の状態遷移を示している。なお、ＨｉのＲｙ／Ｂｙ０はＲｙ状態を示し、ＬｏｗのＲｙ／ＢｙはＢｙ状態を示すものとする。図示するように、メモリチップ１０に対するメモリアクセスは、第１コマンドシーケンス２１と第２コマンドシーケンス２２とを含んで構成される。第１コマンドシーケンス２１が実行完了すると、メモリチップ１０は、内部で、第１コマンドシーケンス２１に対応する内部処理（バンク内処理）２３を実行する。メモリチップ１０は、内部処理を実行している最中には、Ｒｙ／ＢｙをＬｏｗに遷移せしめる。第１コマンドシーケンス２１および第２コマンドシーケンス２２が夫々どのようなコマンドによって構成されるかは、アクセスモード（リード、ライト、イレース）毎に予め定められている。
【００３４】
図５−１〜図５−３は、コマンドシーケンスの一例を説明する図である。図５−１はリードを実行するためのコマンドシーケンスを示している。リードモードにおいては、ｃｈ０コントローラ７０は、メモリチップ１０に対し、アクセスモードがリードであることを示すリードコマンドＣ０と、リードアドレス（ａｄｒ）と、リードデータ準備コマンドＣ１とを順次発行する。リードコマンドＣ０、リードアドレス、およびリードデータ準備コマンドＣ１は、リードを実行するための第１コマンドシーケンス２１を構成する。メモリチップ１０は、リードデータ準備コマンドＣ１を受信すると、メモリセルアレイ１１５におけるリードアドレスにより指定された位置からリードデータを読み出して、読み出したリードデータをデータキャッシュ１１３に格納する。なお、このメモリチップ１０による内部処理をリードデータ準備処理ということとする。メモリチップ１０は、リードデータ準備処理を実行中の期間（ｔＲ）だけ、Ｒｙ／Ｂｙ０をＢｙに遷移せしめる。
【００３５】
リードデータ準備処理が完了したことによってメモリチップ１０がＲｙ／Ｂｙ０をＲｙに遷移せしめると、ｃｈ０コントローラ７０は、メモリチップ１０にデータ転送コマンドＣ２を入力し、データ転送コマンドＣ２を受信したメモリチップ１０は、データキャッシュ１１３上のリードデータ（ｄａｔａ）をＩ／Ｏに確保されたデータ転送用の帯域幅毎に区切ってメモリチップ１０に逐次送信する。なお、データの送信は、具体的には、ｃｈ０コントローラ７０がＲＥをトグルし、メモリチップ１０は、ＲＥに同期して入出力制御回路１０４が有するバッファをデータ転送用の帯域幅毎のリードデータで更新することによって実現される。ｃｈ０コントローラ７０は、ＤＱＳをラッチ信号として用いてリードデータをラッチする。データ転送コマンドＣ２およびＲＥのトグル処理は、リードを実行するための第２コマンドシーケンス２２を構成する。
【００３６】
図５−２は、ライトを実行するためのコマンドシーケンスを示している。ライトモードにおいては、ｃｈ０コントローラ７０は、アクセスモードがライトモードであることを示すライトコマンドＣ３と、ライトアドレス（ａｄｒ）と、ライトデータ（ｄａｔａ）と、プログラム処理開始コマンドＣ４と、をメモリチップ１０に送信する。メモリチップ１０は、送られてきたライトデータをデータキャッシュ１１３に格納する。そして、メモリチップ１０は、プログラム処理開始コマンドＣ４を受信すると、データキャッシュ１１３に格納されたライトデータをメモリセルアレイ１１５におけるライトアドレスにより指定されたページにプログラムし、プログラムされたリードデータをベリファイする。なお、このメモリチップ１０による内部処理をプログラム処理ということとする。メモリチップ１０は、プログラム処理を実行中の期間（ｔＰｒｏｇ）だけ、Ｒｙ／Ｂｙ０をＢｙに遷移せしめる。
【００３７】
プログラム処理が完了したことによってメモリチップ１０がＲｙ／Ｂｙ０をＲｙに遷移せしめると、ｃｈ０コントローラ７０は、メモリチップ１０にステータスリードコマンドＣ５を送信するとともに、ＲＥをトグルする。メモリチップ１０は、ＲＥを使用して、プログラム処理が成功したか否かを示すステータス情報（ｓｔａｔｕｓ）を入出力制御回路１０４のバッファに格納する。ｃｈ０コントローラ７０は、バッファに格納されたステータス情報を読み、プログラム処理の完了／非完了を認識する。ステータスリードコマンドＣ５およびステータス情報をバッファに用意せしめるためのＲＥのトグル処理は、ライトを実行するための第２コマンドシーケンス２２を構成する。
【００３８】
図５−３は、イレースを実行するためのコマンドシーケンスを示している。イレースモードにおいては、ｃｈ０コントローラ７０は、アクセスモードがイレースモードであることを示すイレースコマンドＣ６と、イレースアドレス（ａｄｒ）と、イレース処理開始コマンドＣ７とをメモリチップ１０に送信する。イレースコマンドＣ５、イレースアドレス、イレース処理開始コマンドＣ７は、イレースを実行するための第１コマンドシーケンス２１を構成する。メモリチップ１０は、イレース処理開始コマンドＣ７を受信すると、イレースアドレスにより指定されたブロックをイレースするイレース処理を実行する。メモリチップ１０は、プログラム処理を実行中の期間（ｔＥｒａｓｅ）だけ、Ｒｙ／Ｂｙ０をＢｙに遷移せしめる。
【００３９】
イレース処理が完了したことによってメモリチップ１０がＲｙ／Ｂｙ０をＲｙに遷移せしめると、ｃｈ０コントローラ７０は、ライトモード時と同じように、ステータスリードコマンドＣ５をメモリチップ１０に送信し、メモリチップ１０は、ステータス情報（ｓｔａｔｕｓ）をｃｈ０コントローラ７０に送信する。ステータスリードコマンドＣ５およびステータス情報をバッファに用意せしめるためのＲＥのトグル処理は、イレースを実行するための第２コマンドシーケンス２２を構成する。
【００４０】
ここで、本発明の実施形態と比較される技術（以降、比較例）によれば、ｃｈ０コントローラ７０は、第２コマンドシーケンス２２の実行が完了したタイミングをバンク切り替えのタイミングとしてバンクインターリーブを実行する。これに対して、本発明の実施形態では、ｃｈ０コントローラ７０は、あるバンクに対する第２コマンドシーケンス２２を実行した後、同一のバンクに対する次のメモリアクセスにかかる第１コマンドシーケンス２１を連続して実行し、第１コマンドシーケンス２１が完了したタイミングをバンク切り替えのタイミングとする。例えば、メモリチップ１０に対する第１コマンドシーケンス２１が完了した後、メモリチップ１０において第１コマンドシーケンス２１に対応する内部処理２３が開始されるが、ｃｈ０コントローラ７０は、この内部処理が実行されている最中に、メモリチップ１１に対して第１コマンドシーケンス２１の実行を開始することができる。
【００４１】
図６は、比較例にかかるバンクインターリーブ方法を実行した場合と第１の実施形態にかかるバンクインターリーブ方法を実行した場合の夫々において、連続してリードが実行される場合の各バンクの動作時間を説明するタイミングチャートである。この図の例においては、バンク０、１の夫々に対し、２回のリードが実行されている。リードモードにおいては、第２コマンドシーケンス２２は、リードデータの転送を含んでいるため、第１コマンドシーケンス２１よりも長い時間を必要とする。比較例にかかるバンクインターリーブ方法は、一方のバンクにかかる第１コマンドシーケンス２１の実行時間を他方のバンクにかかるリードデータ準備処理の実行時間（ｔＲ）とを重ねることで転送効率の向上を図っている。これに対して、第１の実施形態のバンクインターリーブ方法は、一方のバンクにかかる第２コマンドシーケンス２２の実行時間と他方のバンクにかかるリードデータ準備処理の実行時間（ｔＲ）とを重ねることができる。その結果、バンク０、１の実行時間が、ともに、比較例に比べて短縮されている。即ち、第１の実施形態のバンクインターリーブ方法を実行することによって、比較例に比べて、バンク０およびバンク１の転送効率を共に向上せしめることができる。
【００４２】
図７は、ｃｈ０コントローラ７０およびｃｈ１コントローラ７１の構成を説明する図である。なお、ｃｈ０コントローラ７０およびｃｈ１コントローラ７１は共に同じ構成を備えているので、ここではｃｈ０コントローラ７０について説明し、重複する説明を省略する。
【００４３】
図示するように、ｃｈ０コントローラ７０は、バンク０用キュー９０、バンク１用キュー９１、バンク制御部９２、およびＮＡＮＤインタフェース（Ｉ／Ｆ）制御部９３を備えている。
【００４４】
バンク０用キュー９０は、並列動作要素１ａのバンク０に対する命令９００が、バンク１用キュー９１は、並列動作要素１ａのバンク１に対する命令９１０が、夫々エンキューされる。キュー９０、９１にエンキューされる個々の命令９００、９１０は、アクセスモードの指定およびアクセス先のアドレスの他に、第１の実施形態のバンクインターリーブを実行するか否かを指定する連続投入フラグ１０００を備えている。なお、命令９００、９１０は、ＭＰＵ４によってホスト装置２００からの要求に基づいて生成される。ＭＰＵは、生成した命令９００、９１０をキュー９０またはキュー９１に振り分けて投入する。
【００４５】
バンク制御部９２は、キュー切り替え部９４および進捗管理部９５を備えている。また、ＮＡＮＤ  Ｉ／Ｆ制御部９３は、ＮＡＮＤコマンド生成部９６およびコマンドシーケンス管理部９７を備えている。
【００４６】
キュー切り替え部９４は、例えばデマルチプレクサによって構成される。キュー切り替え部９４は、進捗管理部９５からの選択信号に基づいて、進捗管理部９５の接続先のキューをバンク０用のキュー９０とバンク１用のキュー９１との間で切り替える。
【００４７】
進捗管理部９５は、キュー９０、９１に格納されている命令９００、９１０の読み出し、消去、命令の有無の確認を行う。進捗管理部９５は、アクセス先のキューを変更する際には、キュー切り替え部９４に供給する選択信号を切り替える。進捗管理部９５は、キュー９０、９１から読み出した命令９００、９１０に基づいて、第１コマンドシーケンス２１を示す第１識別子と第２コマンドシーケンス２２を示す第２識別子とを生成し、生成した第１識別子および第２識別子を、順次、ＮＡＮＤコマンド生成部９６に入力する。進捗管理部９５は、バンク毎のＲｙ／Ｂｙ信号と、コマンドシーケンス管理部９７からのコマンドシーケンス完了信号と、キュー９０、９１に命令９００、９１０が格納されているか否かの判断と、実行中の命令９００、９１０に後続する命令９００、９１０の連続投入フラグ１０００とに基づいて、コマンドシーケンス毎の入力タイミングを調整する。
【００４８】
ＮＡＮＤコマンド生成部９６は、進捗管理部９５から識別子が入力されたとき、入力された識別子に対応するコマンドシーケンスを生成し、生成したコマンドシーケンスをコマンドシーケンス管理部９７に入力する。
【００４９】
コマンドシーケンス管理部９７は、入力されたコマンドシーケンスをメモリチップ１０、１に送信する。コマンドシーケンスがリードデータの受信を伴う場合には、リードデータの受信も実行する。コマンドシーケンス管理部９７は、入力されたコマンドシーケンスを実行完了すると、コマンドシーケンス完了信号を進捗管理部９５に入力する。
【００５０】
図８は、ＭＰＵ４の動作を説明するフローチャートである。ＭＰＵ４は、ＳＡＴＡコントローラ５がホスト装置２００から要求（リード要求、ライト要求、イレース要求）を受信したか否かを判定する（ステップＳ１）。ＳＡＴＡコントローラ５が要求を受信していない場合には（ステップＳ１、Ｎｏ）、ＭＰＵ４は、ステップＳ１の処理を再び実行する。ＳＡＴＡコントローラ５が要求を受信した場合（ステップＳ１、Ｙｅｓ）、ＭＰＵ４は、ＳＡＴＡコントローラ５が受信した要求に応じた命令を生成し（ステップＳ２）、生成した命令をバンク０用キュー９０およびバンク１用キュー９１に振り分けて格納する（ステップＳ３）。そして、ＭＰＵ４は、ステップＳ１の処理を再び実行する。
【００５１】
図９は、ＮＡＮＤコントローラ７が備えるチャネル毎のコントローラ７０、７１の動作を説明するフローチャートである。ｃｈ０コントローラ７０およびｃｈ１コントローラ７１は共に同じ構成を備えているので、ここではｃｈ０コントローラ７０について説明し、重複する説明を省略する。
【００５２】
まず、進捗管理部９５は、キュー切り替え部９４に入力する選択信号を操作して、バンク０用キュー９０を選択する（ステップＳ１１）。そして、進捗管理部９５は、バンク０用キュー９０に命令９００があるか否かを判定する（ステップＳ１２）。バンク０用キュー９０に命令９００がある場合（ステップＳ１２、Ｙｅｓ）、その命令９００が読み出し済みでない場合には、進捗管理部９５は、その命令９００を読み出して命令９００に対応する第１識別子および第２識別子を生成しておく。
【００５３】
続いて、進捗管理部９５は、Ｒｙ／Ｂｙ０がＢｙを示しているか否かを判定する（ステップＳ１３）。Ｒｙ／Ｂｙ０がＢｙではなくＲｙを示している場合（ステップＳ１３、Ｎｏ）、進捗管理部９５は、メモリチップ１０が第１コマンドシーケンス２１を実行済みであるか否かを判定する（ステップＳ１４）。メモリチップ１０が第１コマンドシーケンス２１を実行していない場合（ステップＳ１４、Ｎｏ）、進捗管理部９５は、メモリチップ１０に第１コマンドシーケンス２１を実行せしめる（ステップＳ１５）。具体的には、進捗管理部９５は、生成した第１識別子をＮＡＮＤコマンド生成部９６に入力し、ＮＡＮＤコマンド生成部９６は入力された第１識別子に基づいて第１コマンドシーケンス２１を生成する。コマンドシーケンス管理部９７は、メモリチップ１０に対し、ＮＡＮＤコマンド生成部９６が生成した第１コマンドシーケンス２１を実行し、第１コマンドシーケンス２１の実行を完了すると、シーケンス実行完了信号を進捗管理部９５に送信する。進捗管理部９５は、第１識別子を送信した後にシーケンス実行完了信号を受信したか否かを判定することによって、第１コマンドシーケンス２１が実行済みであるか否かを判定することができる。
【００５４】
メモリチップ１０が第１コマンドシーケンス２１を実行済みである場合（ステップＳ１４、Ｙｅｓ）、進捗管理部９５は、メモリチップ１０に第２コマンドシーケンス２２を実行せしめる（ステップＳ１６）。具体的には、進捗管理部９５は、生成した第２識別子をＮＡＮＤコマンド生成部９６に入力し、ＮＡＮＤコマンド生成部９６は入力された第２識別子に基づいて第２コマンドシーケンス２２を生成する。コマンドシーケンス管理部９７は、メモリチップ１０に対し、ＮＡＮＤコマンド生成部９６が生成した第２コマンドシーケンス２１を実行し、第２コマンドシーケンス２１の実行を完了すると、シーケンス実行完了信号を進捗管理部９５に送信する。進捗管理部９５は、第２識別子を送信した後にシーケンス実行完了信号を受信したか否かを判定することによって、第１コマンドシーケンス２１が実行済みであるか否かを判定することができる。
【００５５】
進捗管理部９５は、第２コマンドシーケンス２２の実行が完了した後、バンク０用キュー９０から、ステップＳ１６の処理により実行済みとなった命令９００を削除し（ステップＳ１７）、別のキュー、即ちバンク１用キュー９１に、命令９１０が存在するか否かを判定する（ステップＳ１８）。ステップＳ１８を実行する際には、進捗管理部９５は、一時的にキュー切り替え部９４にキューを切り替えさせる。バンク１用キュー９１に命令９１０が存在する場合（ステップＳ１８、Ｙｅｓ）、進捗管理部９５は、バンク０用キュー９０に次の命令９００が存在するか否かを判定する（ステップＳ１９）。
【００５６】
バンク０用キュー９０に次の命令９００が存在する場合（ステップＳ１９、Ｙｅｓ）、進捗管理部９５は、当該次の命令９００の連続投入が許可されているか否かを判定する（ステップＳ２０）。進捗管理部９５は、前記次の命令９００に付随している連続投入フラグ１０００を確認することによって、命令９００の連続投入が許可されているか否かを判定することができる。
【００５７】
前記次の命令９００の連続投入が許可されている場合（ステップＳ２０、Ｙｅｓ）、進捗管理部９５は、当該次の命令９００を読み出して、この命令９００に対応する第１識別子および第２識別子を生成しておく。そして、ステップＳ１５の処理により、進捗管理部９５は、前記次の命令９００に対応する第１コマンドシーケンス２１をメモリチップ１０に実行せしめる。
【００５８】
Ｒｙ／Ｂｙ０がＢｙを示している場合（ステップＳ１３、Ｙｅｓ）、バンク０用キュー９０に命令９００が存在しない場合（ステップＳ１２、Ｎｏ）、バンク１用キュー９１に命令９１０が存在しない場合（ステップＳ１８、Ｎｏ）、バンク０用キュー９０に命令９００が存在しない場合（ステップＳ１９、Ｎｏ）、前記次の命令９００の連続投入が許可されていない場合（ステップＳ２０、Ｎｏ）、またはステップＳ１５の処理を完了した後、進捗管理部９５は、バンク切り替え部９４に供給している選択信号を切り替えて、バンク１用キュー９１を選択する（ステップＳ２１）。
【００５９】
ステップＳ２１の処理の後、進捗管理部９５は、バンク１用キュー９１に命令９１０があるか否かを判定する（ステップＳ２２）。バンク１用キュー９１に命令９１０がある場合（ステップＳ２２、Ｙｅｓ）、その命令９１０が読み出し済みでない場合には、進捗管理部９５は、その命令９１０を読み出して命令９１０に対応する第１識別子および第２識別子を生成しておく。
【００６０】
続いて、進捗管理部９５は、Ｒｙ／Ｂｙ１がＢｙを示しているか否かを判定する（ステップＳ２３）。Ｒｙ／Ｂｙ１がＢｙではなくＲｙを示している場合（ステップＳ２３、Ｎｏ）、進捗管理部９５は、メモリチップ１１が第１コマンドシーケンス２１を実行済みであるか否かを判定する（ステップＳ２４）。メモリチップ１０が第１コマンドシーケンス２１を実行していない場合（ステップＳ２４、Ｎｏ）、進捗管理部９５は、メモリチップ１に第１コマンドシーケンス２１を実行せしめる（ステップＳ２５）。具体的には、進捗管理部９５は、生成した第１識別子をＮＡＮＤコマンド生成部９６に入力し、ＮＡＮＤコマンド生成部９６は入力された第１識別子に基づいて第１コマンドシーケンス２１を生成する。コマンドシーケンス管理部９７は、メモリチップ１１に対し、ＮＡＮＤコマンド生成部９６が生成した第１コマンドシーケンス２１を実行し、第１コマンドシーケンス２１の実行を完了すると、シーケンス実行完了信号を進捗管理部９５に送信する。進捗管理部９５は、第１識別子を送信した後にシーケンス実行完了信号を受信したか否かを判定することによって、第１コマンドシーケンス２１が実行済みであるか否かを判定することができる。
【００６１】
メモリチップ１１が第１コマンドシーケンス２１を実行済みである場合（ステップＳ２４、Ｙｅｓ）、進捗管理部９５は、メモリチップ１１に第２コマンドシーケンス２２を実行せしめる（ステップＳ２６）。具体的には、進捗管理部９５は、生成した第２識別子をＮＡＮＤコマンド生成部９６に入力し、ＮＡＮＤコマンド生成部９６は入力された第２識別子に基づいて第２コマンドシーケンス２２を生成する。コマンドシーケンス管理部９７は、メモリチップ１１に対し、ＮＡＮＤコマンド生成部９６が生成した第２コマンドシーケンス２１を実行し、第２コマンドシーケンス２１の実行を完了すると、シーケンス実行完了信号を進捗管理部９５に送信する。進捗管理部９５は、第２識別子を送信した後にシーケンス実行完了信号を受信したか否かを判定することによって、第１コマンドシーケンス２１が実行済みであるか否かを判定することができる。
【００６２】
進捗管理部９５は、第２コマンドシーケンス２２の実行が完了した後、バンク１用キュー９１から、ステップＳ２６の処理により実行済みとなった命令９１０を削除し（ステップＳ２７）、別のキュー、即ちバンク０用キュー９０に、命令９００が存在するか否かを判定する（ステップＳ２８）。ステップＳ２８を実行する際には、進捗管理部９５は、一時的にキュー切り替え部９４にキューを切り替えさせる。バンク０用キュー９０に命令９００が存在する場合（ステップＳ２８、Ｙｅｓ）、進捗管理部９５は、バンク１用キュー９１に次の命令９１０が存在するか否かを判定する（ステップＳ２９）。
【００６３】
バンク１用キュー９１に次の命令９１０が存在する場合（ステップＳ２９、Ｙｅｓ）、進捗管理部９５は、当該次の命令９１０の連続投入が許可されているか否かを判定する（ステップＳ３０）。進捗管理部９５は、前記次の命令９００に付随している連続投入フラグ１０００を確認することによって、命令９００の連続投入が許可されているか否かを判定することができる。
【００６４】
前記次の命令９１０の連続投入が許可されている場合（ステップＳ３０、Ｙｅｓ）、進捗管理部９５は、当該次の命令９１０を読み出して、この命令９１０に対応する第１識別子および第２識別子を生成しておく。そして、ステップＳ２５の処理により、進捗管理部９５は、前記次の命令９１０に対応する第１コマンドシーケンス２１をメモリチップ１１に実行せしめる。
【００６５】
Ｒｙ／Ｂｙ０がＢｙを示している場合（ステップＳ２３、Ｙｅｓ）、バンク１用キュー９１に命令９１０が存在しない場合（ステップＳ２２、Ｎｏ）、バンク０用キュー９０に命令９００が存在しない場合（ステップＳ２８、Ｎｏ）、バンク１用キュー９１に命令９１０が存在しない場合（ステップＳ２９、Ｎｏ）、前記次の命令９１０の連続投入が許可されていない場合（ステップＳ３０、Ｎｏ）、またはステップＳ２５の処理を完了した後、進捗管理部９５は、キュー９０、９１の何れかに命令９００、９１０があるか否かを判定する（ステップＳ３１）。キュー９０、９１の何れかに命令９００、９１０がある場合（ステップＳ３１、Ｙｅｓ）、ステップＳ１１の処理が実行され、キュー９０、９１の何れにも命令９００、９１０がない場合（ステップＳ３１、Ｎｏ）、ＮＡＮＤコントローラ７の動作が終了となる。
【００６６】
このように、ｃｈ０コントローラ７０は、バンク０（メモリチップ１０）に対してｉ番目の命令９００にかかる第２コマンドシーケンス２２とｉ＋１番目の命令９００にかかる第１コマンドシーケンス２１とを連続して実行した後で、かつ、メモリチップ１０が内部処理２３を実行している最中に、バンク１（メモリチップ１１）に対するメモリアクセスの実行を開始する。
【００６７】
図１０は、比較例にかかるバンクインターリーブ方法を実行した場合と第１の実施形態にかかるバンクインターリーブ方法を実行した場合の夫々において、連続してライトが実行される場合の各バンクの動作時間を説明するタイミングチャートである。ライトモードにおいては、第１コマンドシーケンス２１は、ライトデータの転送を含んでいるため、第２コマンドシーケンス２２よりも長い時間を必要とする。第１の実施形態のバンクインターリーブ方法は、コマンドシーケンスのうちの実行時間が長くかかる第１コマンドシーケンス２１の実行時間を比較例に比べて効率的に隠蔽できるので、ライトモードにおいても、バンク０およびバンク１の転送効率を共に向上せしめることができることがわかる。
【００６８】
図１１は、比較例にかかるバンクインターリーブ方法を実行した場合と第１の実施形態にかかるバンクインターリーブ方法を実行した場合の夫々において、連続してイレースが実行される場合の各バンクの動作時間を説明するタイミングチャートである。イレースモードにおいては、第１コマンドシーケンス２１および第２コマンドシーケンス２２は、ともに、同程度の実行時間を必要とする。この場合には、図示するように、第１の実施形態によれば、バンク０の転送効率を向上せしめることができる。
【００６９】
図１２−１〜図１２−３は、比較例にかかるバンクインターリーブ方法を実行した場合と第１の実施形態にかかるバンクインターリーブ方法を実行した場合の夫々において、バンク毎のメモリアクセスのアクセスモードがランダムに構成されたときの各バンクの動作時間を説明するタイミングチャートである。
【００７０】
図１２−１は、バンク０に、２回のイレースアクセスが、バンク１に２回のリードアクセスがなされる場合を示している。この図の例のように、バンク０の１回目のメモリアクセスがバンク１の１回目のメモリアクセスの内部処理の終了タイミングよりも以前に終了する場合には、バンク０の２回目のメモリアクセスにかかる第１コマンドシーケンス２１の実行時間を隠蔽することができない。したがって、第１の実施形態によれば、比較例に比べ、バンク０の転送効率を向上させることができる。
【００７１】
図１２−２は、バンク０に、イレースアクセスとライトアクセスとが、バンク１に２回のリードアクセスがなされる場合を示している。この図の例のように、バンク１の１回目のメモリアクセスの内部処理の終了タイミングが、バンク０の１回目のメモリアクセスの終了タイミングよりも以降で、かつ、バンク０の２回目のメモリアクセスにかかる第１コマンドシーケンス２１の終了タイミングよりも以前である場合、バンク０の２回目のメモリアクセスにかかる第１コマンドシーケンス２１の実行時間のうちの一部を隠蔽することができる。したがって、第１の実施形態によれば、比較例に比べ、バンク０およびバンク１の転送効率をともに向上させることができる。
【００７２】
図１２−３は、バンク０に、イレースアクセスとリードアクセスとが、バンク１にライトアクセスとリードアクセスとがなされる場合を示している。この図の例のように、バンク１の１回目のメモリアクセスの内部処理の終了タイミングが、バンク０の２回目のメモリアクセスにかかる第１コマンドシーケンス２１の終了タイミングよりも以降である場合、バンク０の２回目のメモリアクセスにかかる第１コマンドシーケンス２１の実行時間を完全に隠蔽することができる。したがって、第１の実施形態によれば、比較例に比べ、バンク０およびバンク１の転送効率をともに向上させることができる。
【００７３】
なお、以上の説明においては、ＭＰＵ４は、命令毎に、連続投入フラグ１０００をどのように設定するかについては特に言及しなかったが、ＭＰＵ４は、連続投入フラグ１０００を任意に設定することができる。例えば、ＭＰＵ４は、図６に示した例のように連続してリードアクセスを実行する際にはリードアクセス毎の命令の連続投入フラグ１０００に、連続投入を許可する値を設定することができる。また、図１２−２および図１２−３に示したように、バンク１の１回目のメモリアクセスの内部処理の終了タイミングがバンク０の１回目のメモリアクセスの終了タイミングよりも以降となる場合には、バンク０およびバンク１の転送効率をともに向上させることができる。ＭＰＵ４は、バンク０およびバンク１の転送効率をともに向上させることができる場合、即ちバンク１の１回目のメモリアクセスの内部処理の終了タイミングがバンク０の１回目のメモリアクセスの終了タイミングよりも以降となる場合に、バンク０の２回目のメモリアクセスにかかる命令の連続投入フラグ１０００に、連続投入を許可する値を設定することができる。
【００７４】
また、以上の説明においては、並列動作要素１ａ、１ｂは、夫々２つのバンク０、１を備えているものとして説明したが、並列動作要素１ａ、１ｂは、夫々３以上のバンクを備えるように構成してもよい。その場合には、ＮＡＮＤコントローラ７が備えるチャネル毎のコントローラ７０、７１は、ステップＳ１〜ステップＳ２０の処理をバンク毎にシリアルに実行することができる。
【００７５】
このように、本発明の第１の実施形態によれば、ｃｈ０コントローラ７０は、バンク０（メモリチップ１０）に対してｉ番目の命令９００にかかる第２コマンドシーケンス２２とｉ＋１番目の命令９００にかかる第１コマンドシーケンス２１とを連続して実行した後で、かつ、メモリチップ１０が内部処理２３を実行している最中に、バンク１（メモリチップ１１）に対するメモリアクセスの実行を開始するようにしたので、ＳＳＤ１００の転送効率を向上させることができる。
【００７６】
また、ｃｈ０コントローラ７０は、ｉ＋１番目の命令９００に付随する連続投入フラグ１０００に基づいて、ｉ＋１番目の命令９００にかかる第１コマンドシーケンス２１をｉ番目の命令９００にかかる第２コマンドシーケンス２２の直後に連続して実行するか否かを判定する、ようにしたので、ｉ＋１番目の命令９００にかかる第１コマンドシーケンス２１をｉ番目の命令９００にかかる第２コマンドシーケンス２２の直後に連続して実行する制御を実行するか否かを切り替えることが可能になる。
【００７７】
（第２の実施形態）
図１３は、第１の実施形態のＳＳＤ１００を搭載したパーソナルコンピュータ１２００の一例を示す斜視図である。パーソナルコンピュータ１２００は、本体１２０１、及び表示ユニット１２０２を備えている。表示ユニット１２０２は、ディスプレイハウジング１２０３と、このディスプレイハウジング１２０３に収容された表示装置１２０４とを備えている。
【００７８】
本体１２０１は、筐体１２０５と、キーボード１２０６と、ポインティングデバイスであるタッチパッド１２０７とを備えている。筐体１２０５内部には、メイン回路基板、ＯＤＤ（Optical  Disk  Device）ユニット、カードスロット、及びＳＳＤ１００等が収容されている。
【００７９】
カードスロットは、筐体１２０５の周壁に隣接して設けられている。周壁には、カードスロットに対向する開口部１２０８が設けられている。ユーザは、この開口部１２０８を通じて筐体１２０５の外部から追加デバイスをカードスロットに挿抜することが可能である。
【００８０】
ＳＳＤ１００は、従来のＨＤＤの置き換えとして、パーソナルコンピュータ１２００内部に実装された状態として使用してもよいし、パーソナルコンピュータ１２００が備えるカードスロットに挿入した状態で、追加デバイスとして使用してもよい。
【００８１】
図１４は、ＳＳＤを搭載したパーソナルコンピュータのシステム構成例を示している。パーソナルコンピュータ１２００は、ＣＰＵ１３０１、ノースブリッジ１３０２、主メモリ１３０３、ビデオコントローラ１３０４、オーディオコントローラ１３０５、サウスブリッジ１３０９、ＢＩＯＳ−ＲＯＭ１３１０、ＳＳＤ１００、ＯＤＤユニット１３１１、エンベデッドコントローラ／キーボードコントローラＩＣ（ＥＣ／ＫＢＣ）１３１２、及びネットワークコントローラ１３１３等を備えている。
【００８２】
ＣＰＵ１３０１は、パーソナルコンピュータ１２００の動作を制御するために設けられたプロセッサであり、ＳＳＤ１００から主メモリ１３０３にロードされるオペレーティングシステム（ＯＳ）を実行する。更に、ＯＤＤユニット１３１１が、装填された光ディスクに対して読出し処理及び書込み処理の少なくとも１つの処理の実行を可能にした場合に、ＣＰＵ１３０１は、それらの処理の実行をする。
【００８３】
また、ＣＰＵ１３０１は、ＢＩＯＳ−ＲＯＭ１３１０に格納されたシステムＢＩＯＳ（Basic  Input  Output  System）も実行する。尚、システムＢＩＯＳは、パーソナルコンピュータ１２００内のハードウェア制御のためのプログラムである。
【００８４】
ノースブリッジ１３０２は、ＣＰＵ１３０１のローカルバスとサウスブリッジ１３０９との間を接続するブリッジデバイスである。ノースブリッジ１３０２には、主メモリ１３０３をアクセス制御するメモリコントローラも内蔵されている。
【００８５】
また、ノースブリッジ１３０２は、ＡＧＰ（Accelerated  Graphics  Port）バス等を介してビデオコントローラ１３０４との通信、及びオーディオコントローラ１３０５との通信を実行する機能も有している。
【００８６】
主メモリ１３０３は、プログラムやデータを一時的に記憶し、ＣＰＵ１３０１のワークエリアとして機能する。主メモリ１３０３は、例えばＲＡＭから構成される。
【００８７】
ビデオコントローラ１３０４は、パーソナルコンピュータ１２００のディスプレイモニタとして使用される表示ユニット１２０２を制御するビデオ再生コントローラである。
【００８８】
オーディオコントローラ１３０５は、パーソナルコンピュータ１２００のスピーカ１３０６を制御するオーディオ再生コントローラである。
【００８９】
サウスブリッジ１３０９は、ＬＰＣ（Low  Pin  Count）バス１３１４上の各デバイス、及びＰＣＩ（Peripheral  Component  Interconnect）バス１３１５上の各デバイスを制御する。また、サウスブリッジ１３０９は、各種ソフトウェア及びデータを格納する記憶装置であるＳＳＤ１００を、ＳＡＴＡインタフェースを介して制御する。
【００９０】
パーソナルコンピュータ１２００は、セクタ単位でＳＳＤ１００へのアクセスを行う。ＳＡＴＡインタフェースを介して、書き込みコマンド、読出しコマンド、キャッシュフラッシュコマンド等がＳＳＤ１００に入力される。
【００９１】
また、サウスブリッジ１３０９は、ＢＩＯＳ−ＲＯＭ１３１０、及びＯＤＤユニット１３１１をアクセス制御するための機能も有している。
【００９２】
ＥＣ／ＫＢＣ１３１２は、電力管理のためのエンベデッドコントローラと、キーボード（ＫＢ）１２０６及びタッチパッド１２０７を制御するためのキーボードコントローラとが集積された１チップマイクロコンピュータである。
【００９３】
このＥＣ／ＫＢＣ１３１２は、ユーザによるパワーボタンの操作に応じてパーソナルコンピュータ１２００の電源をＯＮ／ＯＦＦする機能を有している。ネットワークコントローラ１３１３は、例えばインターネット等の外部ネットワークとの通信を実行する通信装置である。
【００９４】
パーソナルコンピュータ１２００が搭載するＳＳＤ１００は、上述した通り、ＮＡＮＤメモリ１とデータ転送装置２との間の転送効率を可及的に向上させることができる構成であるので、転送効率の向上に応じてＳＳＤ１００に対するアクセス速度が向上する。
【００９５】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【００９６】
１  ＮＡＮＤメモリ、２  データ転送装置、４  ＭＰＵ、１０〜１３  メモリチップ、２１  第１コマンドシーケンス、２２  第２コマンドシーケンス、２３  内部処理、７０ ｃｈ０コントローラ、７１  ｃｈ１コントローラ、９０  バンク０用キュー、９１  バンク１用キュー、９４  キュー切り替え部、９５  進捗管理部、９６  ＮＡＮＤコマンド生成部、９７  コマンドシーケンス管理部、２００  ホスト装置、９００、９１０  命令、１０００  連続投入フラグ、１２００  パーソナルコンピュータ。
【図１】
0005925549.tif 000002
【図２】
0005925549.tif 000003
【図３】
0005925549.tif 000004
【図４】
0005925549.tif 000005
【図５−１】
0005925549.tif 000006
【図５−２】
0005925549.tif 000007
【図５−３】
0005925549.tif 000008
【図６】
0005925549.tif 000009
【図７】
0005925549.tif 000010
【図８】
0005925549.tif 000011
【図９】
0005925549.tif 000012
【図１０】
0005925549.tif 000013
【図１１】
0005925549.tif 000014
【図１２−１】
0005925549.tif 000015
【図１２−２】
0005925549.tif 000016
【図１２−３】
0005925549.tif 000017
【図１３】
0005925549.tif 000018
【図１４】
0005925549.tif 000019