(57)【特許請求の範囲】
【請求項１】
第１のサブセットの第１のデータおよび第１のサブセットの第２のデータを受信する段階と、
前記第１のサブセットの前記第１のデータを第１のページバッファに格納し、且つ、前記第１のサブセットの前記第２のデータを第２のページバッファに格納する段階であって、前記第１のページバッファは、１のメモリプレーンの１ページに対応するサイズを有し、前記第２のページバッファは、１のメモリプレーンの１ページに対応するサイズを有し、
マルチプレーン型メモリデバイスの第１のメモリプレーンに対応付けられている第１のページに、格納されている前記第１のサブセットの前記第１のデータをプログラミングする段階と、
格納されている前記第１のサブセットの前記第１のデータをプログラミングする段階と並行して、前記第１のメモリプレーンに対応付けられている第２のページに、格納されている前記第１のサブセットの前記第２のデータをプログラミングする段階と、
前記マルチプレーン型メモリデバイスの前記第１のメモリプレーンに対応付けられている前記第１のページに、格納されている前記第１のサブセットの前記第１のデータをプログラミングする段階の間に、第２のサブセットの第１のデータを受信し、前記第２のサブセットの前記第１のデータを前記第１のページバッファに格納する段階と、
前記第１のメモリプレーンに対応付けられている前記第２のページに、格納されている前記第１のサブセットの前記第２のデータをプログラミングする段階の間に、第２のサブセットの第２のデータを受信し、前記第２のサブセットの前記第２のデータを前記第２のページバッファに格納する段階と、
前記第１のメモリプレーンに対応付けられている前記第２のページに、格納されている前記第１のサブセットの前記第２のデータをプログラミングする段階の後に、前記マルチプレーン型メモリデバイスの第２のメモリプレーンに対応付けられている第１のページに、格納されている前記第２のサブセットの前記第１のデータをプログラミングする段階と、
前記第２のメモリプレーンに対応付けられている第２のページに、格納されている前記第２のサブセットの前記第２のデータをプログラミングする段階と
を備える方法。
【請求項２】
前記第１のデータを受信する段階は、第１のチャネルを介して前記第１のデータを受信する段階を有し、
前記第２のデータを受信する段階は、前記第１のチャネルとは異なる第２のチャネルを介して前記第２のデータを受信する段階を有する請求項１に記載の方法。
【請求項３】
格納されている前記第１のサブセットの前記第１のデータをプログラミングする段階と並行して、前記第１のメモリプレーンに対応付けられている前記第２のページに、格納されている前記第１のサブセットの前記第２のデータをプログラミングする段階は、前記第１のメモリプレーンに対応付けられている前記第１のページに、格納されている前記第１のサブセットの前記第１のデータをプログラミングする段階を完了する前に、格納されている前記第１のサブセットの前記第２のデータに対応付けられているプログラミング動作を開始する段階を有する請求項１または２に記載の方法。
【請求項４】
前記第２のメモリプレーンに対応付けられている前記第２のページに、格納されている前記第２のサブセットの前記第２のデータをプログラミングする段階は、前記第２のメモリプレーンに対応付けられている前記第１のページに、格納されている前記第２のサブセットの前記第１のデータをプログラミングする段階と並行して実行される請求項１から３のいずれか１項に記載の方法。
【請求項５】
第１のチャネルから第１のサブセットの第１のデータを受信して前記第１のサブセットの前記第１のデータを格納する第１のページバッファと、
第２のチャネルから第１のサブセットの第２のデータを受信して前記第１のサブセットの前記第２のデータを格納する第２のページバッファと、
マルチプレーン型メモリデバイスの第１のメモリプレーンに対応付けられている第１のページに、格納されている前記第１のサブセットの前記第１のデータをプログラミングするのと並行して、前記マルチプレーン型メモリデバイスの前記第１のメモリプレーンに対応付けられている第２のページに、格納されている前記第１のサブセットの前記第２のデータをプログラミングする回路と
を備え、
前記第１のページバッファは、前記マルチプレーン型メモリデバイスの前記第１のメモリプレーンに対応付けられている前記第１のページに、格納されている前記第１のサブセットの前記第１のデータをプログラミングする間に、前記第１のチャネルから第２のサブセットの第１のデータを受信して、前記第２のサブセットの前記第１のデータを格納し、
前記第２のページバッファは、前記マルチプレーン型メモリデバイスの前記第１のメモリプレーンに対応付けられている前記第２のページに、格納されている前記第１のサブセットの前記第２のデータをプログラミングする間に、前記第２のチャネルから第２のサブセットの第２のデータを受信して、前記第２のサブセットの前記第２のデータを格納し、
前記回路は、前記マルチプレーン型メモリデバイスの前記第１のメモリプレーンに対応付けられている前記第２のページに、格納されている前記第１のサブセットの前記第２のデータがプログラミングされた後に、前記マルチプレーン型メモリデバイスの第２のメモリプレーンに対応付けられている第１のページに、格納されている前記第２のサブセットの前記第１のデータをプログラミングし、前記マルチプレーン型メモリデバイスの前記第２のメモリプレーンに対応付けられている第２のページに、格納されている前記第２のサブセットの前記第２のデータをプログラムするデバイス。
【請求項６】
前記回路は、格納されている前記第１のサブセットの前記第１のデータのプログラミングに対応付けられているプログラミング動作を完了する前に、格納されている前記第１のサブセットの前記第２のデータのプログラミングに対応付けられているプログラミング動作を開始する請求項５に記載のデバイス。
【請求項７】
前記回路は、前記マルチプレーン型メモリデバイスの前記第２のメモリプレーンに対応付けられている前記第１のページに、格納されている前記第２のサブセットの前記第１のデータをプログラミングするのと並行して、前記マルチプレーン型メモリデバイスの前記第２のメモリプレーンに対応付けられている前記第２のページに、格納されている前記第２のサブセットの前記第２のデータをプログラムする請求項５または６に記載のデバイス。
【請求項８】
前記第１のページバッファは、前記マルチプレーン型メモリデバイスの１のメモリプレーンの１のページに対応するサイズを有し、前記第２のページバッファは、前記マルチプレーン型メモリデバイスの１のメモリプレーンの１のページに対応するサイズを有する請求項５から７のいずれか１項に記載のデバイス。
【請求項９】
第１のメモリプレーンおよび第２のメモリプレーンを有するメモリデバイスと、
第１のチャネルから第１のサブセットの第１のデータを受信して前記第１のサブセットの前記第１のデータを格納する第１のページバッファと、
第２のチャネルから第１のサブセットの第２のデータを受信して前記第１のサブセットの前記第２のデータを格納する第２のページバッファと、
前記メモリデバイスの前記第１のメモリプレーンに対応付けられている第１のページに、格納されている前記第１のサブセットの前記第１のデータをプログラミングすることに並行して、前記メモリデバイスの前記第１のメモリプレーンに対応付けられている第２のページに、格納されている前記第１のサブセットの前記第２のデータをプログラミングするコントローラと
を備え、
前記第１のページバッファは、前記メモリデバイスの前記第１のメモリプレーンに対応付けられている前記第１のページに、格納されている前記第１のサブセットの前記第１のデータをプログラミングする間に、前記第１のチャネルから第２のサブセットの第１のデータを受信して、前記第２のサブセットの前記第１のデータを格納し、
前記第２のページバッファは、前記メモリデバイスの前記第１のメモリプレーンに対応付けられている前記第２のページに、格納されている前記第１のサブセットの前記第２のデータをプログラミングする間に、前記第２のチャネルから第２のサブセットの第２のデータを受信して、前記第２のサブセットの前記第２のデータを格納し、
前記コントローラは、前記メモリデバイスの前記第１のメモリプレーンに対応付けられている前記第２のページに、格納されている前記第１のサブセットの前記第２のデータがプログラミングされた後に、前記メモリデバイスの前記第２のメモリプレーンに対応付けられている第１のページに、格納されている前記第２のサブセットの前記第１のデータをプログラミングし、前記メモリデバイスの前記第２のメモリプレーンに対応付けられている第２のページに、格納されている前記第２のサブセットの前記第２のデータをプログラミングするシステム。
【請求項１０】
前記コントローラは、前記メモリデバイスの前記第１のメモリプレーンに対応付けられている前記第１のページに、格納されている前記第１のサブセットの前記第１のデータのプログラミングを完了する前に、格納されている前記第１のサブセットの前記第２のデータに対応付けられているプログラミング動作を開始する請求項９に記載のシステム。
【請求項１１】
前記コントローラはさらに、格納されている前記第２のサブセットの前記第１のデータに対応付けられているプログラミング動作を開始する前、且つ、格納されている前記第１のサブセットの前記第１のデータに対応付けられているプログラミング動作を開始した後に、格納されている前記第１のサブセットの前記第２のデータに対応付けられているプログラミング動作を開始する請求項９に記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本願の主題は概して、メモリデバイスに関する。
【背景技術】
【０００２】
［関連出願］
本願は、米国特許仮出願第６１／０９３，８７２号（発明の名称：「マルチプレーン型データオーダ（ＭＵＬＴＩ−ＰＬＡＮＥ  ＤＡＴＡ  ＯＲＤＥＲ）、出願日：２００８年９月３日」）に基づく優先権を主張する。当該仮出願の開示内容は全て、参照により本願に組み込まれる。
【０００３】
フラッシュメモリは、消費者向け電子機器で格納デバイスとして一般的に利用されている不揮発性メモリの一種である。フラッシュメモリは、デジタルオーディオ／ビデオプレーヤー、携帯電話、および、デジタルカメラ等の人気の高い消費者向け製品においてアプリケーションデータおよび／またはメディアデータを格納するために広く利用されている。フラッシュメモリは、電力供給がなくても格納されたデータを保持する機能を有し、消費者向け製品において電力節約と言う利点が得られる。フラッシュメモリはさらに、専用ストレージデバイスとしても利用することができる。一例として、パーソナルコンピュータのユニバーサル・シリアル・バス（ＵＳＢ）ポートに着脱可能なポータブル・フラッシュ・ドライブ、および、磁気ハード・ディスク・ドライブ（ＨＤＤ）代替品としても利用することができる。
【０００４】
近年、複数のメモリアレイまたはメモリプレーンを含む構成のフラッシュメモリデバイスがさまざまなメーカーから発表されている。マルチプレーン型メモリデバイスは、シングルレベルセル（ＳＬＣ）メモリデバイスおよびマルチレベルセル（ＭＬＣ）メモリデバイスで実装されている。しかし、マルチプレーン型メモリデバイスは、読出し、プログラミング、および、消去の速度が遅いことが多い。マルチプレーン型メモリデバイスの速度は、メモリプレーンの数が多くなるにつれて、性能を左右する重要な問題となり得る。マルチプレーン構成によれば、あるチャネルに対応付けられているデータ転送時間を改善するべく、読出／プログラミング待機間隔の間に、このチャネルからのデータをバッファに転送することが可能になる一方、複数のチャネルからデータが転送される場合にはシステム性能が低減する可能性がある。
【発明の概要】
【課題を解決するための手段】
【０００５】
マルチプレーン型メモリデバイスへデータをプログラミングするシステム、方法、および、コンピュータプログラム製品は、マルチプレーンデータオーダを利用する。ページバッファのサイズを大きくすることなく複数のデータページをプログラミングできるように、一部の実施例によると、データページをプログラミングするデータ転送方式を操作するとしてよい。具体的には、全てのチャネルにわたるデータを最初に、マルチプレーン型フラッシュメモリデバイスの第１のプレーンに並行にプログラミングすることができる。データ転送プログラミング動作の進行中、次のプレーン（例えば、プレーン「１」）にプログラミングされるべきデータを読み出して１以上のページバッファにキャッシュすることができる。第１のプレーンについてデータ転送プログラミングが完了した後、ページバッファにキャッシュされているデータを即座にラッチしてマルチプレーン型フラッシュメモリデバイスにプログラミングすることができる。
【０００６】
一部の実施例によると、第１のデータおよび第２のデータを受信する段階と、第１のデータを第１のページバッファに格納し、且つ、第２のデータを第２のページバッファに格納する段階と、マルチプレーン型メモリデバイスの１のメモリプレーンに対応付けられている第１のページに、格納されている第１のデータをプログラミングする段階と、格納されている第１のデータをプログラミングする段階と並行して、メモリプレーンに対応付けられている第２のページに、格納されている第２のデータをプログラミングする段階とを備える方法が利用され得る。
【０００７】
一部の実施例によると、第１のデータは、第１のサブセットの第１のデータおよび第２のサブセットの第１のデータを含むとしてよく、第２のデータは、第１のサブセットの第２のデータおよび第２のサブセットの第２のデータを含むとしてよい。
【０００８】
一部の実施例によると、メモリプレーンに対応付けられている第１のページに、第１のサブセットの第１のデータをプログラミングしてよく、メモリプレーンに対応付けられている第２のページに、第１のサブセットの第２のデータをプログラミングするとしてよい。
【０００９】
一部の実施例によると、メモリプレーンは第１のメモリプレーンであってよく、マルチプレーン型メモリデバイスの第２のメモリプレーンに対応付けられている第１のページに、第２のサブセットの第１のデータをプログラミングしてよく、第２のメモリプレーンに対応付けられている第２のページに、第２のサブセットの第２のデータをプログラミングするとしてよい。
【００１０】
一部の実施例によると、第２のメモリプレーンに対応付けられている第１のページに、第２のサブセットの第１のデータをプログラミングする段階は、第１のメモリプレーンに対応付けられている第２のページに、第１のサブセットの第２のデータをプログラミングする段階の後に実行されるとしてよい。
【００１１】
一部の実施例によると、第２のメモリプレーンに対応付けられている第２のページに、第２のサブセットの第２のデータをプログラミングする段階は、第２のメモリプレーンに対応付けられている第１のページに、第２のサブセットの第１のデータをプログラミングする段階の後に実行されるとしてよい。
【００１２】
一部の実施例によると、第１のチャネルから第１のデータを受信して第１のデータを格納する第１のページバッファと、第２のチャネルから第２のデータを受信して第２のデータを格納する第２のページバッファと、第１のメモリプレーンに対応付けられている第１のページに格納されている第１のデータをプログラミングするのと並行して、メモリプレーンに対応付けられている第２のページに格納されている第２のデータをプログラミングする回路とを備えるデバイスが利用され得る。
【００１３】
一部の実施例によると、第１のデータは、第１のサブセットの第１のデータおよび第２のサブセットの第１のデータを含むとしてよく、第２のデータは、第１のサブセットの第２のデータおよび第２のサブセットの第２のデータを含むとしてよい。
【００１４】
一部の実施例によると、回路は、メモリプレーンに対応付けられている第１のページに第１のサブセットの第１のデータをプログラミングし、且つ、メモリプレーンに対応付けられている第２のページに第１のサブセットの第２のデータをプログラミングする。
【００１５】
一部の実施例によると、メモリプレーンは、第１のメモリプレーンであってよく、回路は、第２のメモリプレーンに対応付けられている第１のページに第２のサブセットの第１のデータをプログラミングしてよく、且つ、第２のメモリプレーンに対応付けられている第２のページに第２のサブセットの第２のデータをプログラミングするとしてよい
【００１６】
一部の実施例によると、回路は、第１のメモリプレーンに対応付けられている第２のページに第１のサブセットの第２のデータがプログラミングされた後、第２のメモリプレーンに対応付けられている第１のページに第２のサブセットの第１のデータをプログラミングするとしてよい。
【００１７】
一部の実施例によると、回路は、第２のメモリプレーンに対応付けられている第１のページに第２のサブセットの第１のデータがプログラミングされた後、第２のメモリプレーンに対応付けられている第２のページに第２のサブセットの第２のデータをプログラミングするとしてよい。
【００１８】
一部の実施例によると、１のメモリプレーンを有するメモリアレイと、第１のチャネルから第１のデータを受信して第１のデータを格納する第１のページバッファと、第２のチャネルから第２のデータを受信して第２のデータを格納する第２のページバッファと、メモリプレーンに対応付けられている第１のページに格納されている第１のデータをプログラミングすることに並行して、格納されている第２のデータをメモリプレーンに対応付けられている第２のページにプログラミングするコントローラとを備えるシステムが利用され得る。
【００１９】
一部の実施例によると、コントローラは、格納されている第１のデータのプログラミングを完了する前に、格納されている第２のデータに対応付けられているプログラミング動作を初期化するとしてよい。
【００２０】
一部の実施例によると、メモリプレーンは、第１のメモリプレーンであってよく、メモリアレイは、第２のメモリプレーンを有してよく、第１のデータは、第１のサブセットおよび第２のサブセットを含み、コントローラは、第１のメモリプレーンに対応付けられている第１のページに第１のサブセットをプログラミングし、且つ、第２のメモリプレーンに対応付けられている第１のページに第２のサブセットをプログラミングするとしてよい。
【００２１】
一部の実施例によると、第２のデータは、第１のサブセットおよび第２のサブセットを含むとしてよく、コントローラは、第１のメモリプレーンに対応付けられている第２のページに第１のサブセットの第２のデータをプログラミングし、且つ、第２のメモリプレーンに対応付けられている第２のページに第２のサブセットの第２のデータをプログラミングするとしてよい。
【００２２】
一部の実施例によると、コントローラは、第２のサブセットの第１のデータに対応付けられているプログラミング動作を初期化する前、且つ、第１のサブセットの第１のデータに対応付けられているプログラミング動作を初期化した後に、第１のサブセットの第２のデータに対応付けられているプログラミング動作を初期化するとしてよい。
【００２３】
本発明の一以上の実施形態の詳細な内容を添付図面および以下の部分に記載する。本発明の上記以外の特徴、目的、および利点は、以下に記載する説明、図面、および、請求項から明らかとなる。
【図面の簡単な説明】
【００２４】
【図１Ａ】ソリッドステートドライブシステムの一例を示す図である。
【００２５】
【図１Ｂ】マルチプレーン型フラッシュメモリデバイスの一例を示す図である。
【００２６】
【図２Ａ】読出動作について、ＮＡＮＤ型フラッシュインターフェースの各ピンに対応付けられているタイミングチャートの一例を示す図である。
【００２７】
【図２Ｂ】プログラミング動作について、ＮＡＮＤ型フラッシュインターフェースの各ピンに対応付けられているタイミングチャートの一例を示す図である。
【００２８】
【図２Ｃ】消去動作について、ＮＡＮＤ型フラッシュインターフェースの各ピンに対応付けられているタイミングチャートの一例を示す図である。
【００２９】
【図３Ａ】プレーンを２つ有するフラッシュメモリデバイスの水平データ転送方式の一例を示す図である。
【００３０】
【図３Ｂ】図３Ａに示す水平データ転送方式に対応付けられるタイミングチャートの一例を示す図である。
【００３１】
【図４Ａ】垂直データ転送方式の一例を示す図である。
【００３２】
【図４Ｂ】図４Ａに示す垂直データ転送方式に対応付けられるタイミングチャートの一例を示す図である。
【００３３】
【図５】垂直データ転送方式を実行する方法の一例を示す図である。
【００３４】
複数の図面にわたって同様の参照符号を使用している場合、同様の構成要素を指し示すものとする。
【発明を実施するための形態】
【００３５】
不揮発性ソリッドステートメモリ、特に、フォームファクターの小さいカードとしてパッケージングされた電気的消去可能およびプログラム可能リードオンリーメモリ（ＥＥＰＲＯＭ）およびフラッシュＥＥＰＲＯＭは、電気的にデータを消去して、新しいデータをプログラミングまたは再プログラミングすることができる。ＥＥＰＲＯＭメモリの動作には一般的に、メモリセルにデータを書き込むプログラミングモード、メモリセルに格納されているデータを読み出す読出モード、および、格納されているデータを消去する消去モードが含まれる。
【００３６】
フラッシュメモリデバイスにおいて、消去動作は、メモリブロックまたはメモリセクタ毎に実行され、プログラミング動作は、通常１本のワードラインに結合されている複数のメモリセルに対応するページ毎に実行され得る。フラッシュメモリデバイスは、ビットラインと接地電極との間で複数のセルトランジスタが並列に結合されるＮＡＮＤ型フラッシュメモリデバイスとして構成され得る。
【００３７】
フラッシュメモリデバイスは、マルチプレーン型メモリデバイスとして構成され得る。具体的に説明すると、マルチプレーン型メモリデバイスは、複数のメモリプレーンを有することができる（例えば、１つのメモリプレーンは、対応する行デコーダ、ページバッファ、および、列デコーダを備える１つのメモリアレイを含むとしてよい）。各メモリプレーンは、列方向に並べられた１以上のメモリブロックを含むとしてよく、各ブロックはメモリプレーンに対応するとしてよい。
【００３８】
マルチプレーン型フラッシュメモリデバイスは、マルチプレーンプログラミングコマンドまたはマルチプレーン読出コマンドをサポートすることができる。このようなコマンドは、複数の異なるプレーンに対応付けられている複数のページとの間でデータのプログラミングまたはデータの読出を実行するためのコマンドである。例えば、マルチプレーン型フラッシュメモリデバイスは、８個のデータページを８個の対応するメモリプレーンに書き込むマルチプレーンコマンドをサポートすることができる。複数のプレーンおよびマルチプレーンプログラミングコマンドを利用することによって、マルチプレーン型メモリデバイスは複数のプログラミング動作を並行して実行することができるようになり、マルチプレーン型メモリデバイスのプログラミング速度が高まる。
【００３９】
複数のチャネルを介して受信したデータをマルチプレーン型メモリデバイスのそれぞれのページにプログラミングする場合、データの各メモリプレーンへのロードおよびプログラミングは一度に１つとされ得る。例えば、第１のチャネルからのデータをあるプレーンのページにプログラミングした後、第２のチャネルからのデータを同じ手順でマルチプレーン型メモリデバイスへとロードおよびプログラミングすることができる。しかし、このような方法では、複数のチャネルにわたって並列に処理することが出来ないので、プログラミング動作時間が長くなってしまう可能性がある。具体的には、この方法では一度にプログラミングが可能なのは１個のデータページのみであり、他のチャネルのプログラミング動作は、先行するチャネルのプログラミング動作が終了した後でのみ開始され得る。このような制限が課されているために、プログラミング動作が長くなってしまい、マルチプレーン型メモリデバイスの速度に悪影響を及ぼしかねない。
【００４０】
さらに、マルチプレーン型メモリデバイスは通常、処理中のデータを一時的に格納するためのページバッファを備えている。プログラミングの対象となるデータページの数が増えるに従って、データ負荷の増加に対応するべくページバッファのサイズを大きくする必要性も高くなる。しかし、ページバッファのサイズを大きくすると、ページバッファのコストが高くなると共にマルチプレーン型メモリデバイスの構成が複雑になってしまう可能性があり、製造コストが全体的に値上がりしてしまう。
【００４１】
ページバッファのサイズを大きくすることなく複数のデータページにプログラミングするためには、一部の実施例によると、垂直データ転送順序を規定している垂直データ転送方式をプログラミング動作で利用することができる。具体的には、全てのチャネルにわたるデータを最初に、マルチプレーン型フラッシュメモリデバイスの第１のプレーン（例えば、プレーン「０」）に対応付けられている複数のページに並行してプログラミングすることができる。プログラミング動作が実行されている間、次のプレーン（例えば、プレーン「１」）に対応付けられている複数のページにプログラミングされるべきデータを読み出して１以上のページバッファにキャッシュしておくことができる。第１のプレーンに対するプログラミング動作が完了すると、次のプレーンに対するデータをページバッファからロードして、ラッチして、マルチプレーン型メモリデバイスにプログラミングすることができる。このような「垂直」データ転送方式によれば、プレーン毎（チャネル毎、に対して）に他のプレーンとは無関係に「垂直方向に」プログラミングすることができるようになり、特定のチャネルに対応付けられるページバッファのサイズが格納する必要があるページは、複数のプレーンの複数のページではなく、１つのみである。以下でより詳細に説明する。
【００４２】
図１Ａは、ソリッドステートドライブシステム１００の一例を示す図である。図１Ａに示すように、システム１００は、ホスト１０２およびソリッドステートドライブ１０４を備える。ソリッドステートドライブ１０４は、ホストインターフェース１１０、中央演算処理装置（ＣＰＵ）１２３、メモリインターフェース１２８、メモリコントローラ１３０、ならびに、フラッシュメモリデバイス１０６ａ、１０６ｂ、１０６ｃおよび１０６ｄを有するとしてよい。
【００４３】
ホスト１０２は、ホストインターフェース１１０を介してソリッドステートドライブ１０４と通信を行うことができる。ホストインターフェース１１０は、一部の実施例によると、シリアル・アドバンスド・テクノロジー・アタッチメント（ＳＡＴＡ）インターフェースまたはパラレル・アドバンスド・テクノロジー・アタッチメント（ＰＡＴＡ）インターフェースを有するとしてよい。ＳＡＴＡインターフェースまたはＰＡＴＡインターフェースは、シリアルデータまたはパラレルデータをそれぞれ、パラレルデータまたはシリアルデータに変換するべく利用され得る。例えば、ホストインターフェース１１０がＳＡＴＡインターフェースを有する場合、ＳＡＴＡインターフェースは、バス１０３（例えば、ＳＡＴＡバス）を介してホスト１０２から転送されたシリアルデータを受信して、受信したシリアルデータをパラレルデータに変換することができる。別の実施例によると、ホストインターフェース１１０は、ハイブリッドインターフェースを有することもできる。このような実施例によると、ハイブリッドインターフェースは、例えば、シリアルインターフェースと組み合わせて利用することができる。
【００４４】
ホストインターフェース１１０は、一部の実施例によると、ホスト１０２からの動作コマンドおよびアドレスが一時的に格納される１以上のレジスタを含むとしてよい。ホストインターフェース１１０は、レジスタに格納されている情報に応じて、ソリッドステートコントローラ１０８にプログラミングコマンドまたは読出コマンドを通知するとしてよい。
【００４５】
一部の実施例によると、ソリッドステートドライブ１０４は、１以上のチャネル１２６ａ、１２６ｂ、１２６ｃ、および１２６ｄを有するとしてよく、各チャネル１２６ａ−１２６ｄは、１以上の制御信号（例えば、４つのチップイネーブル信号）、または、読出、プログラミングあるいは消去の対象となるデータ、あるいは、読出、プログラミングあるいは消去用のコマンドをホスト１０２またはフラッシュメモリ１０６ａ−１０６ｄから受信することができる。
【００４６】
ソリッドステートコントローラ１０８は、フラッシュメモリデバイス１０６ａ−１０６ｄへのアクセスについての任意のコマンド、ステータス、または、制御要求を処理し得る。例えば、ソリッドステートコントローラ１０８は、フラッシュメモリデバイス１０６ａ−１０６ｄにおけるデータの格納および検索を管理および制御し得る。読出動作、プログラミング動作、または、消去動作を初期化する場合、ソリッドステートコントローラ１０８は、ホスト１０２（または、メモリコントローラ１３０）から１以上のサービス要求またはサービスコマンド（例えば、読出要求、プログラミング要求、および、消去要求）を受信し得る。
【００４７】
一部の実施例によると、ソリッドステートコントローラ１０８は、マイクロプロセッサ（不図示）の制御下にあるマイクロコンピュータシステムの一部であってよい。ソリッドステートコントローラ１０８は、ホスト１０２とソリッドステートドライブ１０４との間におけるコマンドおよびデータの流れを制御し得る。一部の実施例によると、ソリッドステートコントローラ１０８は、リードオンリーメモリ（ＲＯＭ）、ランダムアクセスメモリ（ＲＡＭ）、および、その他の内部回路を含み得る。ソリッドステートコントローラ１０８は、一部の実施例によると、フラッシュメモリデバイス１０６ａ−１０６ｄに対応付けられているさまざまな機能をサポートし得る。例えば、これらに限定されないが、フラッシュメモリデバイス１０６ａ−１０６ｄの診断、フラッシュメモリデバイス１０６ａ−１０６ｄへのコマンドの送信（例えば、アクティブ化コマンド、読出コマンド、プログラミングコマンド、消去コマンド、プリチャージコマンド、および、リフレッシュコマンド）、および、フラッシュメモリデバイス１０６ａ−１０６ｄからのステータスの受信が挙げられる。ソリッドステートコントローラ１０８は、フラッシュメモリデバイス１０６ａ−１０６ｄと同じまたは異なるチップに形成され得る。また、ソリッドステートコントローラ１０８は、ソリッドステートドライブ１０４と同じまたは異なるチップに形成され得る。
【００４８】
フラッシュメモリデバイス１０６ａ−１０６ｄは、メモリインターフェース１２８に結合され得る。一部の実施例によると、フラッシュメモリデバイス１０６ａ−１０６ｄがＮＡＮＤ型メモリデバイスを含む場合、メモリインターフェース１２８はＮＡＮＤ型フラッシュ入出力インターフェースであってよい。
【００４９】
図１Ａに示すように、ソリッドステートコントローラ１０８は、エラーチェックコード（ＥＣＣ）モジュール１１２、インターフェースロジック１１４、シーケンサ１１６、および、フォーマッタ１１８を含むとしてよい。一部の実施例によると、ソリッドステートコントローラ１０８は、組み込みファームウェア１２４を含むＣＰＵ１２３に結合され得る。尚、組み込みファームウェア１２４によって、ソリッドステートコントローラ１０８が制御され得る。ＣＰＵ１２３は、マイクロプロセッサ、シグナルプロセッサ（例えば、デジタルシグナルプロセッサ）、または、マイクロコントローラを含むとしてよい。一部の実施例によると、組み込むファームウェア１２４を有するＣＰＵ１２３は、ソリッドステートドライブ１０４の外部にあるとしてよい。
【００５０】
一部の実施例によると、ソリッドステートドライブ１０４（および／または、ホスト１０２）は、システムオンチップ（ＳＯＣ）に搭載され得る。このような実施例では、ＳＯＣは、例えばデジタルプロセスを用いて製造することができる。ＳＯＣは、ソリッドステートドライブ１０４に含まれるＣＰＵ１２３とは別個に設けられる組み込みプロセスシステム（例えば、組み込みＣＰＵ）を含むとしてよい。ＳＯＣはさらに、プログラミング用のコードおよびデータを処理するＳＲＡＭ（スタティック・ランダム・アクセス・メモリ）、システムロジック、キャッシュメモリ、および、キャッシュコントローラを含むとしてよい。組み込みプロセスシステムに対応付けられるプログラミング用のコードおよびデータは、フラッシュメモリデバイス１０６ａ−１０６ｄに格納され、例えば、ＳＯＣインターフェース（不図示）を介してＳＯＣに送られるとしてよい。ＳＯＣインターフェースは、ＳＯＣの内部バス構造とインターフェースとの間を流れる情報を変換するべく変換器によって利用されるとしてよい。読出動作においては、制御信号がＳＯＣからフラッシュメモリデバイス１０６ａ−１０６ｄに送信される一方、命令およびデータはフラッシュメモリデバイス１０６ａ−１０６ｄからＳＯＣに送信される。命令およびデータはさらに、プログラミング動作時には、フラッシュメモリデバイス１０６ａ−１０６ｄに送信され得る。
【００５１】
一部の実施例によると、フラッシュメモリデバイス１０６ａ−１０６ｄはメモリコントローラ１３０によって制御され得る。ホスト１０２は、メモリコントローラ１３０を介してフラッシュメモリデバイス１０６ａ−１０６ｄと通信し得る。メモリコントローラ１３０は、対応するピンまたは端末を介して、フラッシュメモリデバイス１０６ａ−１０６ｄに接続され得る。このような実施例によると、メモリコントローラ１３０は、特定用途向け集積回路（ＡＳＩＣ）またはＳＯＣとして実現され得る。
【００５２】
これに代えて、ホスト１０２は、ソリッドステートコントローラ１０８を介して、フラッシュメモリデバイス１０６ａ−１０６ｄと通信するとしてもよい。例えば、ホスト１０２は、ソリッドステートコントローラ１０８に１以上のコマンドを送信することができ、メモリインターフェース１２８を介して、ソリッドステートコントローラ１０８は、ホストからのコマンドをフラッシュメモリデバイス１０６ａ−１０６ｄに送ることができる。メモリインターフェース１２８は、ＮＡＮＤ型フラッシュ入出力インターフェースであってよい。ＮＡＮＤ型フラッシュインターフェースは、１以上のピンを含むとしてよく、各ピンが特定の機能に対応している。この点については以下でより詳細に説明する。
【００５３】
一部の実施例によると、フラッシュメモリデバイス１０６ａ−１０６ｄは、複数のページバッファ１３２ａ、１３２ｂ、１３２ｃ、および１３２ｄに結合され得る。一部の実施例によると、フラッシュメモリデバイス１０６ａ−１０６ｄはそれぞれ、ページバッファ１３２ａ−１３２ｄのうち１つに対応付けられているとしてよい。例えば、図１Ａに示すように、フラッシュメモリデバイス１０６ａはページバッファ１３２ａに対応付けられており、フラッシュメモリデバイス１０６ｂはページバッファ１３２ｂに対応付けられており、フラッシュメモリデバイス１０６ｃはページバッファ１３２ｃに対応付けられており、フラッシュメモリデバイス１０６ｄはページバッファ１３２ｄに対応付けられている。所望される場合は、フラッシュメモリデバイス１０６ａ−１０６ｄをそれぞれ、複数のページバッファに対応付けることも可能である。
【００５４】
以下でより詳細に説明するが、ページバッファ１３２ａ−１３２ｄは、選択されたページのメモリセルに対するプログラミング動作／読出動作において、一時的な格納部として利用され得る。ページバッファ１３２ａ−１３２ｄのそれぞれの格納容量は少なくとも、１つのメモリページの格納容量（例えば、２ｋＢ）に等しいとしてよい。
【００５５】
ページバッファ１３２ａ−１３２ｄはそれぞれ、１ページ分のフラッシュメモリセルにプログラミングされるべき１ページ分の書込みデータを格納することができる。ページバッファ１３２ａ−１３２ｄはそれぞれ、これらに限定されないが、レジスタ、１ページ分のフラッシュメモリセルから読み出したデータをセンスするセンス回路、確認ロジック、ラッチ回路、または、書込みドライバを含むとしてよい。プログラミング動作において、ページバッファ１３２ａ−１３２ｄはそれぞれ、チャネル１２６ａ−１２６ｄのうち対応する１つを介して受信したプログラミングデータをラッチして、ラッチしたデータをフラッシュメモリデバイス１０６ａ−１０６ｄのうち対応する１つに転送するとしてよい。さらに、ページバッファ１３２ａ−１３２ｄはそれぞれ、プログラミングされたデータがフラッシュメモリデバイス１０６ａ−１０６ｄに適切にプログラミングされたことを確認するべく、プログラミング確認動作を実行することができる。
【００５６】
上述したように、ページバッファ１３２ａ−１３２ｄは、対応するチャネル１２６ａ−１２６ｄを介して、ソリッドステートコントローラ１０８に接続され得る。一部の実施例によると、ページバッファ１３２ａ−１３２ｄはさらに、対応するチャネル１３４ａ、１３４ｂ、１３４ｃ、および１３４ｄを介してメモリインターフェース１２８に接続し得ると共に、チャネル１３６ａ、１３６ｂ、１３６ｃ、および１３６ｄを介してフラッシュメモリデバイス１０６ａ−１０６ｄに接続され得る。一部の実施例によると、メモリインターフェース１２８およびページバッファ１３２ａ−１３２ｄは共に、ソリッドステートドライブ１０４またはソリッドステートコントローラ１０８の内部構成要素として形成され得る。その他の実施例によると、ページバッファ１３２ａ−１３２ｄは、ソリッドステートドライブ１０４またはソリッドステートコントローラ１０８の外部構成要素として形成され得る。
【００５７】
プログラミングデータを格納する目的で１つの特定のページバッファ１３２ａ−１３２ｄを選択する場合、入力（例えば、ユーザ入力またはソフトウェアプログラムからの入力）は、ダブル・データ・レート（ＤＤＲ）インターフェース（不図示）を介して受信されるとしてよく、ＥＣＣモジュール１１２によってエラーチェックが行われるとしてよい。読出データについては、フラッシュメモリデバイス１０６ａ−１０６ｄから取り出した読出データに含まれ得るエラーを訂正するべくＥＣＣモジュール１１２を用いるとしてよい。プログラミングデータについては、１以上の冗長ビットをプログラミングデータに追加するべくＥＣＣモジュール１１２を用いるとしてよい。プログラミングデータが書き込まれると、冗長ビットによって、書き込まれたプログラミングデータのその後の読出サイクルにおいてエラー訂正が実行され得る。ＥＣＣモジュール１１２は、最初にフラッシュメモリデバイス１０６ａ−１０６ｄに書き込まれるべきデータセットを選択して、選択されたデータセットに冗長データを追加して、冗長情報を含む選択されたデータセットを、対応するチャネル１２６ａ−１２６ｄを介して（例えば、ファームウェア１２４が発行したファームウェア要求命令に続いて）、フラッシュメモリデバイス１０６ａ−１０６ｄに渡す。ＥＣＣモジュール１１２の出力は、特定のプログラミング動作についてページバッファ１３２ａ−１３２ｄのうち１つを指定する選択信号として利用され得る。
【００５８】
一部の実施例によると、フラッシュメモリデバイス１０６ａ−１０６ｄは、例えば４つのプレーンを持つマルチプレーン型メモリデバイスであってよい。図１Ｂは、マルチプレーン型フラッシュメモリデバイス１３８の一例を示す図である。図１Ｂを参照しつつ説明すると、マルチプレーン型メモリデバイス１３８は、４つのメモリプレーン、つまり、プレーン「０」、プレーン「１」、プレーン「２」、および、プレーン「３」を持つとしてよい。図示されているのは４つのプレーンであるが、プレーンの数は用途に応じて変更可能であり、図示されているプレーン数よりも増減し得る。
【００５９】
プレーン「０」、プレーン「１」、プレーン「２」、および、プレーン「３」はそれぞれ、１以上のメモリセルブロックを含み得る。各メモリセルブロックは、１以上のページを含み得る（例えば、各ページは１以上のワードラインで制御されている）。図示されているように、プレーン「０」は、メモリセルブロック１４０を含み、メモリセルブロック１４０の最初のページとしてページ１４８を含むとしてよい。プレーン「１」は、メモリセルブロック１４２を含み、メモリセルブロック１４２の最初のページとしてページ１５０を含むとしてよい。プレーン「２」は、メモリセルブロック１４４を含み、メモリセルブロック１４４の最初のページとしてページ１５２を含むとしてよい。プレーン「３」は、メモリセルブロック１４６を含み、メモリセルブロック１４６の最初のページとしてページ１５４を含むとしてよい。
【００６０】
一部の実施例によると、各プレーンは内部バッファ（例えば、フラッシュメモリデバイスの内部にあるバッファ）と対応付けられているとしてよい。例えば、プレーン「０」は内部バッファ１６２ａに対応付けられているとしてよく、プレーン「１」は内部バッファ１６２ｂに対応付けられているとしてよく、プレーン「２」は内部バッファ１６２ｃに対応付けられているとしてよく、プレーン「３」は内部バッファ１６２ｄに対応付けられているとしてよい。図示されている内部バッファ１６２ａ−１６２ｄは４つのみであるが、当業者であれば、プレーン「０」、プレーン「１」、プレーン「２」、および、プレーン「３」はそれぞれ、複数の内部バッファ、または、ビットライン対と同数の内部バッファに対応付けられ得ることに容易に想到するであろう。
【００６１】
データは、プレーン「０」、プレーン「１」、プレーン「２」、および、プレーン「３」のそれぞれに対応付けられている内部バッファ１６２ａ−１６２ｄのそれぞれに順次ロードされ得る。垂直データ転送方式は、例えば、ソリッドステートコントローラ１０８によって実行され、プレーン「０」、プレーン「１」、プレーン「２」、および、プレーン「３」のそれぞれのページをプログラミングするべく利用され得る。具体的には、第１のチャネル「ＣＨ０」（例えば、チャネル１２６ａ）を介して受信されたデータは、内部バッファ１６２ａにロードされ、プレーン「０」の第１のページ１４８にプログラミングされるとしてよい。第１のチャネル「ＣＨ０」についてのプログラミング動作が実行されている間、第２のチャネル「ＣＨ１」（例えば、チャネル１２６ｂ）を介して受信されるデータが内部バッファ１６２ａにロードされ、プレーン「０」の第２のページ１５６にプログラミングされるとしてよい。同様に、第１のチャネル「ＣＨ０」および第２のチャネル「ＣＨ１」についてのプログラミング動作が実行されている間、第３のチャネル「ＣＨ２」（例えば、チャネル１２６ｃ）を介して受信されるデータが内部バッファ１６２ａにロードされ、プレーン「０」の第３のページ１５８にプログラミングされるとしてよい。上述したプログラミング処理は、（例えば、最後のチャネル「ＣＨ７」までの）全てのチャネルから受信したデータがプレーン「０」のそれぞれのページ（例えば、ページ１６０）にプログラミングされるまで繰り返されるとしてよい。
【００６２】
各フラッシュメモリデバイス１０６ａ−１０６ｄは、不揮発性（または、揮発性）メモリ（例えば、シングルレベルフラッシュメモリまたはマルチレベルフラッシュメモリ）を含むとしてよい。一部の実施例によると、不揮発性メモリは、ＮＡＮＤ型フラッシュメモリモジュールを含むとしてよい。ＮＡＮＤ型フラッシュメモリモジュールは、コマンド、データ、および、アドレスが対応する入出力ピンから供給されるように、コマンド／アドレス／データ多重化インターフェースを含むとしてよい。ＮＡＮＤ型フラッシュメモリデバイスをフラッシュメモリデバイス１０６ａ−１０６ｄとして利用する利点としては、これらに限定されないが、ブート時間およびレジューム時間が高速化されること、電池が長寿命化すること、および、データの信頼性が高まることが挙げられる。
【００６３】
フラッシュメモリデバイス１０６ａ−１０６ｄはそれぞれ、チャネル１２６ａ−１２６ｄのうち対応する１つに接続され得る。チャネル１２６ａ−１２６ｄはそれぞれ、例えば、１以上の入力ラインおよび出力ライン、チップ選択信号ライン、チップイネーブル信号ライン等をサポートするとしてよい。チャネルはさらに、その他の信号ライン、例えば、これらに限定されないが、書込イネーブル信号ライン、読出イネーブル信号ライン、レディ／ビジー出力信号ライン、および、リセット信号ラインをサポートするとしてよい。並列処理の度合いを高めるべく、フラッシュメモリデバイス１２６ａ−１２６ｄはそれぞれ、図１Ａに示すように、ソリッドステートドライブ１０４に接続されている独自のチャネルを持つとしてよい。例えば、フラッシュメモリデバイス１０６ａはチャネル１２６ａを用いてソリッドステートドライブ１０４に接続されているとしてよく、フラッシュメモリデバイス１０６ｂはチャネル１２６ｂを用いてソリッドステートドライブ１０４に接続されているとしてよく、フラッシュメモリデバイス１０６ｃはチャネル１２６ｃを用いてソリッドステートドライブ１０４に接続されているとしてよく、フラッシュメモリデバイス１０６ｄはチャネル１２６ｄを用いてソリッドステートドライブ１０４に接続されているとしてよい。他の実施例によると、フラッシュメモリデバイス１０６ａ−１０６ｄは、共通のチャネルを持つとしてもよい。
【００６４】
フラッシュメモリデバイス１０６ａ−１０６ｄは、標準的なコネクタを用いてソリッドステートドライブ１０４に接続されているとしてよい。標準的なコネクタの例を挙げると、これらに限定されないが、ＳＡＴＡ、ＵＳＢ（ユニバーサル・シリアル・バス）、ＳＣＳＩ（スモール・コンピュータ・システム・インターフェース）、ＰＣＭＣＩＡ（パーソナル・コンピュータ・メモリ・カード・インターナショナル・アソシエーション）、および、ＩＥＥＥ−１３９４（ファイヤワイヤ）が含まれるとしてよい。一部の実施例によると、フラッシュメモリデバイス１０６ａ−１０６ｄは標準的なコネクタにより離脱可能に構成されてよい。
【００６５】
フラッシュメモリデバイス１０６ａ−１０６ｄはそれぞれ、１つのバンク内に配列されている１以上のソリッドステート記憶素子（またはセル）を含むとしてよい。ソリッドステート記憶素子は、複数のページに分割されるとしてよい。一部の実施例によると、ソリッドステート記憶素子は、１ページに対応する２０００バイトの容量を持つとしてよい。ソリッドステート記憶素子は、一部の実施例によると、合計容量が４０００バイト（つまり、４ｋＢ）になるとしてよい。フラッシュメモリデバイス１０６ａ−１０６ｄはそれぞれ、さらに１以上のバンクを含むとしてよく、各バンクはチップイネーブル信号またはチップ選択信号を用いて選択される。チップイネーブル信号またはチップ選択信号は、ホストコマンドに応じて、１以上のソリッドステート記憶素子を選択するとしてよい。
【００６６】
一部の実施例によると、各ソリッドステート記憶素子は、１以上のシングルレベルセル（ＳＬＣ）デバイスおよび／またはマルチレベルセル（ＭＬＣ）デバイスを含むとしてよい。具体的には、フラッシュメモリデバイス１０６ａ−１０６ｄのそれぞれに含まれる各記憶素子は、１セル当たり１ビットまたは複数ビットとしてプログラミングされるとしてよい。各セルのしきい値電圧は一般的に、当該セルに格納されるデータの種類を決定する要因となる。例えば、ＳＬＣメモリデバイスでは、しきい値電圧が０．５Ｖの場合、プログラミングされたセル（例えば、論理状態「０」）であることを指し示す一方、しきい値電圧が−０．５Ｖは消去済みのセル（例えば、論理状態「１」）であることを指し示す。ＳＬＣデバイスまたはＭＬＣデバイスのいずれであるかは、チップイネーブル信号またはチップ選択信号を用いて選択されるとしてよい。チップイネーブル信号またはチップ選択信号は、ホスト１０２から受信する制御情報およびアドレス情報の組み合わせに基づきソリッドステートコントローラ１０８によって生成されるとしてよい。
【００６７】
複数のソリッドステート記憶素子から成るバンクが複数用いられる場合、一部の実施例によると、ソリッドステートドライブ１０４は、同じフラッシュメモリデバイス内の複数のバンクのソリッドステート記憶素子に同時にアクセスすることができる。ソリッドステートドライブ１０４はさらに、複数の異なるフラッシュメモリデバイスに含まれる複数の異なるバンクに同時にアクセスすることもできる。ソリッドステートドライブ１０４は、複数のバンクにアクセスすることができるので、利用可能なリソースおよびチャネル１２６ａ−１２６ｄを十分に利用して、ソリッドステートドライブ１０４の性能を全体的に向上させることができる。さらに、フラッシュメモリデバイス１０６ａ−１０６ｄがメモリ入出力ラインおよび制御信号（例えば、チップイネーブル信号）を共有している場合、ソリッドステートコントローラ１０８のピンの数は減少し、ソリッドステートドライブ１０４の製造コストがさらに抑えられる。
【００６８】
フラッシュメモリデバイス１０６ａ−１０６ｄのそれぞれのフラッシュメモリアレイは通常、ビットで編成することができる。例えば、メモリアレイは８ビットの深さを持つことができる。フラッシュメモリアレイはさらに、バイトでも編成することができる。例えば、フラッシュメモリアレイは、２ｋバイト（または２ｋＢ）を持つ部分と、６４バイトを持つ部分とを含むことができる。メモリアレイはさらに、ページ単位でも編成することができる。例えば、フラッシュメモリアレイは、５１２Ｋのページを含むことができる。１つのページは、２つの部分から編成することができ、第１の部分（例えば、２ｋＢを表す部分）と、第２の部分（例えば、６４バイトを表す部分）とから編成することができる。第２の部分は通常、８ビットの幅を持つデータ入出力（Ｉ／Ｏ）経路（例えば、Ｉ／Ｏ［０］からＩ／Ｏ［７］）に対応するとしてよい。またさらに、フラッシュメモリアレイは、ブロック単位でも配列され得る。例えば、フラッシュメモリアレイは、６４ページに等しい１ブロックを含むとしてよい。まとめると、フラッシュメモリデバイスは、上述したビット、バイト、ページ、および、ブロックを用いて編成することができる。
【００６９】
フラッシュメモリデバイス１０６ａ−１０６ｄはそれぞれ、マルチプレーンＮＡＮＤ型フラッシュメモリデバイスであってよい。ＮＡＮＤ型フラッシュメモリデバイスは通常、ＮＯＲ型フラッシュメモリデバイスに比べて、プログラミング時間、読出時間および消去時間が短く、高密度化されており、１ビット当たりのコストが低く、耐久性が高い。ＮＡＮＤ型フラッシュメモリは、データへのシーケンシャルアクセスを可能とするＮＡＮＤ型フラッシュＩ／Ｏインターフェースに結合され得る。ＮＡＮＤ型フラッシュＩ／Ｏインターフェースは、複数のピンを含むとしてよく、各ピンが特定の機能に対応している。インターフェースの一例を表１に示す。
【表１】
0005360214.tif 000002
【００７０】
上の表１に示すように、インターフェースのピンにはさまざまなピン機能が対応するとしてよい。一部の実施例によると、上述したＮＡＮＤ型フラッシュＩ／Ｏインターフェースはメモリインターフェース１２８として利用され得る。
【００７１】
本明細書においてフラッシュメモリデバイス１０６ａ−１０６ｄはＮＡＮＤ型メモリデバイスとして説明されているが、フラッシュメモリデバイス１０６ａ−１０６ｄは、ＮＯＲフラッシュＥＥＰＲＯＭ、ＡＮＤフラッシュＥＥＰＲＯＭ、ＤｉＮＯＲフラッシュＥＥＰＲＯＭ、シリアルフラッシュＥＥＰＲＯＭ、ＤＲＡＭ、ＳＲＡＭ、ＲＯＭ、ＥＰＲＯＭ、ＦＲＡＭ（登録商標）、ＭＲＡＭ、または、ＰＣＲＡＭのうちいずれの形式であってもよい。
【００７２】
図２Ａは、読出動作について、ＮＡＮＤ型フラッシュインターフェースの各ピンに対応付けられているタイミングチャートの一例を示す図である。図２Ａを参照しつつ説明すると、領域２０２は、１以上のコマンドがＮＡＮＤ型フラッシュメモリデバイスに送られている期間を表すとしてよい。一方、領域２０４は、ＮＡＮＤ型フラッシュメモリデバイスとの間でデータがやり取りされている期間を表すとしてよい。図示しているように、書込イネーブル信号「ＷＥ＿」のパルスが（例えば、２５ｎｓ周期で）発生しており、行アドレス（例えば、ＲＡ１、ＲＡ２、および、ＲＡ３）および列アドレス（例えば、ＣＡ１およびＣＡ２）の情報をＮＡＮＤ型フラッシュメモリデバイスにラッチさせている。データ入出力Ｉ／Ｏ［７：０］ピンに現れているコマンド「００ｈ」は読出アドレス入力を示している一方、コマンド「３０ｈ」は読出開始を表しているとしてよい。
【００７３】
その他のコマンドも利用可能である。例えば、その他のメモリコマンドとしては、これらに限定されないが、読出動作、プログラミング動作、消去動作、読出ステータス動作、読出ＩＤ動作、書込設定登録動作、書込アドレス動作、および、リセット動作が挙げることができる。例を挙げると、コマンド「０５ｈ」はランダムデータ読出コマンドを表し、コマンド「１０ｈ」はページプログラミングコマンドを表し、コマンド「２０ｈ」はチップ消去コマンドを表し、コマンド「２１ｈ」はセクタ消去コマンドを表し、コマンド「３０ｈ」は読出開始コマンドを表し、コマンド「３５ｈ」はコピー用ページ読出コマンドを表し、コマンド「３９ｈ」は書込デバイスアドレスコマンドを表し、コマンド「６０ｈ」はブロック消去コマンドを表し、コマンド「７０ｈ」は読出ステータスコマンドを表し、コマンド「８０ｈ」はシリアルデータ入力（バッファへの書込）コマンドを表し、コマンド「８５ｈ」はランダムデータ入力コマンドを表し、コマンド「８Ｆｈ」はコピー用ターゲットアドレス入力コマンドを表し、コマンド「９０ｈ」は読出デバイス種類コマンドを表し、コマンド「Ａ０ｈ」は書込設定レジスタコマンドを表し、コマンド「Ｃ０ｈ」はプログラミング／消去一時停止コマンドを表し、コマンド「Ｄ０ｈ」はプログラミング／消去コマンドを表し、コマンド「ＦＦｈ」はリセットコマンドを表すとしてよい。
【００７４】
読出イネーブル信号「ＲＥ＿」のパルスが発生することによって、ＤｏｕｔＮ、ＤｏｕｔＮ＋１、ＤｏｕｔＮ＋２、・・・、ＤｏｕｔＭ等のデータをＮＡＮＤフラッシュメモリデバイスから読み出すことができる。レディ／ビジー出力信号「Ｒ／Ｂ＿」が特定の論理状態にあると、出力がビジー状態であるか否かを示すとしてよい。例えば、レディ／ビジー出力信号「Ｒ／Ｂ＿」の論理状態がＬｏｗの場合、出力がビジー状態であることを示すとしてよい。この例では、書込イネーブル信号「ＷＥ＿」の最後の立ち上がりエッジの後所定時間が経過すると、レディ／ビジー出力信号「Ｒ／Ｂ＿」の論理状態がＨｉｇｈ（つまり、レディ状態を示す論理Ｈｉｇｈ）になるとしてよい。
【００７５】
図２Ａに示すように、セルから内部ページバッファへの読出データのデータ転送時間を示す「ｔＲ」期間は、読出開始コマンド「３０ｈ」からレディ／ビジー出力信号「Ｒ／Ｂ＿」の立ち上がりエッジまでの期間であり、読出データの読出時間を示す。一部の実施例によると、「ｔＲ」期間によって、特定の読出動作に関するソリッドステートドライブシステム（例えば、ソリッドステートドライブシステム１００）の性能が決まり得る。一部の実施例によると、「ｔＲ」期間が長くなると、読出データがソリッドステートコントローラにおいて利用可能となるまでのソリッドステートコントローラ（例えば、ソリッドステートコントローラ１０８）の待機時間が長くなる可能性がある。
【００７６】
データの準備が整う前に、ＮＡＮＤ型フラッシュＩ／Ｏインターフェースはアイドル状態となり不要な帯域幅を消費する可能性がある。このため、帯域幅を最大にするためにはＮＡＮＤ型フラッシュＩ／Ｏインターフェースを常にビジー状態に維持することが望ましい。例えば、ＮＡＮＤ型フラッシュＩ／ＯインターフェースがｔＲＣ＝２５ｎｓで動作している場合、実現可能な帯域幅の上限は４０ＭＢ／ｓであってよい（例えば、８ビットデータバスが利用され、ＮＡＮＤ型フラッシュメモリからソリッドステートコントローラへと常にデータが送信されるようにＮＡＮＤ型フラッシュメモリの帯域幅は無制限であるという仮定に基づく）。しかし、読出データをソリッドステートコントローラ（例えば、ソリッドステートコントローラ１０８）に渡す前にＮＡＮＤ型フラッシュメモリ内のメモリセルから内部バッファにページを読み出す「ｔＲ」期間があることを考えると、このような値は実現が難しいと考えられる。
【００７７】
このため、一部の実施例によると、同じＮＡＮＤ型フラッシュＩ／Ｏインターフェースを共有しつつ複数のデバイス（例えば、複数のチップイネーブル信号を１つのチャネルにまとめることができるので、同じチャネルの少なくとも１つのデバイスからデータを利用可能な状態としつつ「ｔＲ」時間をできるかぎりカバーすることができる。
【００７８】
一部の実施例によると、データ転送時間は、ＳＬＣデバイスについては約２５μｓであり、ＭＬＣデバイスについては約６０μｓとなり得る。「ｔＲ」期間中、レディ／ビジー出力信号「Ｒ／Ｂ＿」は論理「０」でアサートすることができ、フラッシュメモリデバイスが、例えばデータの書込または消去ができない期間であるビジー状態にあることを示す。
【００７９】
図２Ｂは、プログラミング動作について、ＮＡＮＤ型フラッシュインターフェースの各ピンに対応付けられているタイミングチャートの一例を示す図である。図２Ｂを参照しつつ説明すると、領域２０６は、１以上のコマンドをフラッシュメモリデバイスに送ることができる期間を表し、期間２０８は、プログラミングデータをフラッシュメモリデバイスに送ることができる期間を表し、領域２１０はフラッシュメモリデバイスのステータスをチェックするべくステータスチェックをフラッシュメモリデバイスに送ることができる期間を表すとしてよい。
【００８０】
図示しているように、データ入出力Ｉ／Ｏ［７：０］ピンに現れているコマンド「８０ｈ」は、シリアルデータ入力（例えば、ＤｉｎＮ、・・・、ＤｉｎＭ）を示すとしてよい。コマンド「１０ｈ」は、自動プログラミングを示すとしてよく、その後にはコマンド「７０ｈ」で示されるステータス読出が続く。Ｉ／Ｏ［０］＝「０」はエラー無し状態を示す一方、Ｉ／Ｏ［０］＝「１」は自動プログラミングにおいてエラーが発生したことを示すとしてよい。
【００８１】
また、既に説明したように、レディ／ビジー出力信号「Ｒ／Ｂ＿」は、論理値がＬｏｗの場合にビジー状態を示すとしてよい。一部の実施形態によると、レディ／ビジー出力信号「Ｒ／Ｂ＿」の論理状態がＬｏｗの期間は数百μｓのオーダの範囲であってよい。また、読出イネーブル信号「ＲＥ＿」の立ち上がりエッジは、書込イネーブル信号「ＷＥ＿」の立ち上がりエッジから所定期間が経過すると発生するとしてよい。一部の実施例によると、この所定期間は、約６０ｎｓであるとしてよい。
【００８２】
また、図２Ｂに示すように、レディ／ビジー出力信号「Ｒ／Ｂ＿」の立ち下がりエッジから立ち上がりエッジまでの期間「ｔＰＲＧ」は、データをプログラミングするためのプログラミング時間を示すとしてよい。一部の実施例によると、プログラミング時間「ｔＰＲＧ」は、ＳＬＣデバイスの場合約２００μｓから約７００μｓの範囲内であるとしてよく、ＭＬＣデバイスの場合約８００μｓから約３ｍｓの範囲内であるとしてよい。
【００８３】
一部の実施例によると、プログラミング期間「ｔＰＲＧ」は、「ｔＲ」期間と同様であるとしてよく、データを読み出す代わりにデータをプログラミングする期間であるとしてよい。「ｔＰＲＧ」期間中、レディ／ビジー出力信号「Ｒ／Ｂ＿」は論理「０」でアサートすることができ、フラッシュメモリが、例えばデータの読出または消去ができない期間であるビジー状態にあることを示す。プログラミング期間「ｔＰＲＧ」が長くなると、当該期間中は通常であればフラッシュメモリデバイスに対するアクセスが許可されないので、フラッシュメモリデバイスの性能が低減してしまう。
【００８４】
図２Ｃは、ブロック消去動作について、ＮＡＮＤ型フラッシュインターフェースの各ピンに対応付けられているタイミングチャートの一例を示す図である。図２Ｃを参照しつつ説明すると、領域２１２は、１以上のコマンドをフラッシュメモリデバイスに送ることが出来る期間を表し、領域２１４は、フラッシュメモリデバイス１０６ａ−１０６ｄのステータスをチェックするためにフラッシュメモリデバイスにステータスチェックが送られる期間を表すとしてよい。
【００８５】
図示しているように、データ入出力Ｉ／Ｏ［７：０］ピンに現れているコマンド「６０ｈ」は、ブロック消去動作を示すとしてよく、行アドレス（例えば、ＲＡ１、ＲＡ２、およびＲＡ３が順次供給される。コマンド「Ｄ０ｈ」は、２サイクルブロック消去動作を示すとしてよい。ブロック消去動作は、ステータス読出（コマンド「７０ｈ」）によってチェックすることができ、Ｉ／Ｏ［０］＝「０」はエラー無し状態を示す一方、Ｉ／Ｏ［０］＝「１」はブロック消去においてエラーが発生したことを示すとしてよい。
【００８６】
本例では、レディ／ビジー出力信号「Ｒ／Ｂ＿」は、約１ミリ秒（例えば、所定の最大値を持つ）等、所定の期間にわたって論理Ｌｏｗとすることができる。同様に、読出イネーブル信号「ＲＥ＿」の立ち上がりエッジは、書込イネーブル信号「ＷＥ＿」の立ち上がりエッジから所定期間が経過すると発生するとしてよい。別の例を挙げると、「Ｄ０ｈ」コマンドに対応する書込イネーブル信号「ＷＥ＿」の立ち上がりエッジ、および／または、レディ／ビジー出力信号「Ｒ／Ｂ＿」の立ち下がりエッジは、約１００ｎｓであってよい。
【００８７】
また、図２Ｃに示すように、レディ／ビジー出力信号「Ｒ／Ｂ＿」の立ち下がりエッジから立ち上がりエッジまでの期間「ｔＢＥＲＳ」は、ブロックデータを消去するためのブロック消去期間を示すとしてよい。
【００８８】
一部の場合、ブロック消去動作では、１以上のブロック消去コマンドを送る（または、レディ／ビジー出力信号「Ｒ／Ｂ＿」を利用しない場合は、ステータスコマンドを読出す）以外はＮＡＮＤ型フラッシュＩ／Ｏインターフェースにアクセスする必要がない。ソリッドステートドライブシステム１００の性能と、ブロック消去動作との間には間接的な関係があるとしてよい。ある場合には、ソリッドステートドライブシステム１００は、ブロック消去動作の最初の時点において、複数の消去されたページがデータプログラミング用に利用可能であると判断するとしてよい。この結果、ソリッドステートドライブシステム１００は、ブロック消去動作を実行することなく、プログラミング動作を継続することができる。しかし、ソリッドステートドライブシステム１００に格納されているデータがソリッドステートドライブシステム１００の動作に応じて変更されると、データプログラミングに利用できるページが少なくなり、ソリッドステートドライブシステム１００は、データプログラミング用に空いたページを得るために１以上のブロック消去動作を実行する必要が出てくる。このため、「ｔＢＥＲＳ」期間が長くなると、ソリッドステートドライブシステム１００がプログラミングコマンドを引き受けるまでの待機期間が長くなってしまう。言い換えると、ブロック消去動作がドライブの全体的な性能に与える影響は、ファームウェア（例えば、ファームウェア１２４）が処理するガベージコレクションメカニズムに大きく左右される。
【００８９】
一部の実施例によると、ブロック消去時間「ｔＢＥＲＳ」は、ＳＬＣデバイスについて、約１．５ｍｓから約２ｍｓの範囲内であり、ＭＬＣデバイスについて約１．５ｍｓから約１０ｍｓの範囲内である。「ｔＢＥＲＳ」期間中、レディ／ビジー出力信号「Ｒ／Ｂ＿」は論理「０」でアサートすることができ、フラッシュメモリが、例えばデータの読出または書込ができない期間であるビジー状態にあることを示す。
【００９０】
図３Ａは、プレーンを２つ有するフラッシュメモリデバイスの水平データ転送方式の一例を示す図である。図３Ａに示すように、フラッシュメモリデバイスユニット３００は、プレーンを２つ有するフラッシュメモリデバイスを４つ（３００ａ、３００ｂ、３００ｃ、および、３００ｄ）備える。プレーンを２つ有するフラッシュメモリデバイス３００ａ、３００ｂ、３００ｃ、および、３００ｄはそれぞれ、図１Ａに示すフラッシュメモリデバイス１０６ａ−１０６ｄに対応するとしてよい。
【００９１】
プレーンを２つ有するフラッシュメモリデバイス３００ａ−３００ｄはそれぞれ、プレーン「０」およびプレーン「１」を有し、４つの異なるチャネル、つまり、「ＣＨ０」、「ＣＨ１」、「ＣＨ２」、および、「ＣＨ３」を介してデータを受信する。ページバッファ３０２、３０４、３０６、および、３０８はそれぞれ、先行する期間に開始されたプログラミング動作を実行している間、対応するチャネル「ＣＨ０」、「ＣＨ１」、「ＣＨ２」、および、「ＣＨ３」を介して受信するデータを格納するための一時的な格納部として利用され得る。
【００９２】
ページバッファ３０２−３０８はそれぞれ、１ページが１プレーンに対応するページサイズに設定され得る（例えば、ページバッファ３０２−３０８はそれぞれ、ページバッファサイズがメモリセルサイズに等しいとしてよい）。ページバッファ３０２、３０４、３０６、および、３０８は、プレーン「０」およびプレーン「１」でのデータのプログラミング、読出、または、消去に対応付けられているプログラミング／読出／消去動作を制御するソリッドステートコントローラ（例えば、ソリッドステートコントローラ１０８）の構成要素であってよく、メモリインターフェース（例えば、メモリインターフェース１２８）を介して、２つのプレーンを有するフラッシュメモリデバイス３００ａ−３００ｄと通信するとしてよい。
【００９３】
プログラミング動作において、チャネル「ＣＨ０」、「ＣＨ１」、「ＣＨ２」、および、「ＣＨ３」から受信するデータワードは、ページバッファ３０２−３０８にロードされる。書き込むべき各データワードは、シリアルに（例えば、ビット群単位で）受信するとしてよく、ページバッファ３０２−３０８には一連のステップによってデータが入れられるとしてよい。
【００９４】
図３Ａに示すような２プレーンメモリアレイ構成では、１ページ分のデータは、ページバッファ３０２−３０８にデータをロードして、ロードされたデータをプレーン「０」およびプレーン「１」の対応するページにプログラミングすることによって、「水平に」プログラミングされるとしてよい。例えば、ホスト１０２から合計８ｋＢのデータを受信する場合に、４ｋＢのデータはチャネル「ＣＨ０」を介して受信し、４ｋＢのデータはチャネル「ＣＨ１」を介して受信すると仮定すると、データの半分（例えば、４ｋＢ）は、チャネル「ＣＨ０」に対応付けられているページバッファ３０２に格納され（例えば、２ｋＢのデータがプレーン「０」に、２ｋＢのデータがプレーン「１」に格納される）、残りの半分（例えば、４ｋＢ）はチャネル「ＣＨ１」に対応付けられているページバッファ３０４に格納され得る（例えば、２ｋＢのデータがプレーン「０」に、２ｋＢのデータがプレーン「１」に格納される）。
【００９５】
図３Ａに示すように、水平データ転送方式（点線の矢印で示す）は、チャネル「ＣＨ０」から受信する第１のデータ群（例えば、最大４ｋＢ）をページバッファ３０２にロードして、ロードされたデータをプレーン「０」のページ３１０に書き込むことから開始される。第１のデータ群の書込と同時またはその後に、チャネル「ＣＨ０」からの第２のデータ群もまたページバッファ３０２にロードするとしてよい。第１のデータ群のプログラミング動作が完了した後、第２のデータ群をページバッファ３０２からラッチしてプレーン「１」のページ３１２にプログラミングするとしてよい。この時点において、ページバッファ３０４はチャネル「ＣＨ１」からデータを受信するべく利用することができる。チャネル「ＣＨ０」から受信した第２のデータ群のプログラミング動作が完了すると、チャネル「ＣＨ１」からのデータをページバッファ３０４から取得してプレーン「０」のページ３１４にプログラミングするとしてよい。この後、残りのデータをページバッファ３０４からロードしてプレーン「１」のページ３１６にプログラミングするとしてよい。同様に、チャネル「ＣＨ１」からの第２のデータ群のプログラミング動作が完了すると、チャネル「ＣＨ２」からのデータをページバッファ３０６から取得して、プレーン「０」のページ３１８にプログラミングするとしてよい。この後、残りのデータをページバッファ３０６からロードしてプレーン「１」のページ３２０にプログラミングするとしてよい。上述したプログラミング動作は、チャネル「ＣＨ３」から受信したデータがプレーン「０」のページ３２２およびプレーン「１」のページ３２４に無事にロードおよびプログラミングされるまで繰り返される。
【００９６】
図３Ｂは、図３Ａに示す水平データ転送方式に対応付けられるタイミングチャートの一例を示す図である。図３Ｂに示すように、チャネル「ＣＨ１」のプレーン「０」およびプレーン「１」のデータは、チャネル「ＣＨ０」のプレーン「０」およびプレーン「１」のデータのプログラミング動作がそれぞれ完了した後でのみ、プログラミングすることができる。同様に、チャネル「ＣＨ２」のプレーン「０」およびプレーン「１」のデータは、チャネル「ＣＨ１」のプレーン「０」およびプレーン「１」のデータのプログラミング動作がそれぞれ完了した後でのみ、プログラミングすることができ、チャネル「ＣＨ３」のプレーン「０」のデータは、チャネル「ＣＨ２」のプレーン「０」およびプレーン「１」のデータのプログラミング動作がそれぞれ完了した後でのみ、プログラミングすることができる。水平データ転送方式ではこのようにタイミングに制約があるので、チャネル「ＣＨ０」、「ＣＨ１」、「ＣＨ２」、および、「ＣＨ３」にわたってプログラミング動作を同時に並行して開始することはできず、プログラミング時間「ｔＰＲＧ」が長くなってしまう可能性がある。しかし、プログラミング時間が長くなると、ファームウェア（例えば、ファームウェア１２４）が、フラッシュメモリデバイスへアクセスするよう求めるアクセス要求を処理中であっても、フラッシュメモリデバイスにアクセスできない期間が長くなってしまう可能性がある。
【００９７】
さらに、ページ３１０−３２４のサイズならびにチャネル「ＣＨ０」、「ＣＨ１」、「ＣＨ２」、および、「ＣＨ３」を介して送信されるデータ負荷によっては、厳しいチャネルバッファサイズ要求に対応するべく、ページバッファ３０２−３０８のサイズを大きくする必要性が高まり得る。例えば、各ページを４ｋＢとすると、ページバッファ３０２−３０８のそれぞれのサイズは、プレーンを２つ有するフラッシュメモリデバイス３００ａ−３００ｄのそれぞれについて最低でも８ｋＢは必要となり（例えば、各ページ／プレーンについて４ｋＢ）、合計で３２ｋＢのフラッシュページバッファサイズが必要となる。別の例を挙げると、１つのプレーンが４ｋＢの１ページに対応し、プレーンを８個有するフラッシュメモリデバイスの場合、合計で１２８ｋＢのフラッシュページバッファサイズが必要となるであろう（例えば、各チャネルが３２ｋＢに対応し、４つのチャネルが設けられる）。
【００９８】
ページバッファ３０２−３０８がこのようなフラッシュページバッファサイズに対応できない場合、図３Ａに示す水平データ転送順序に応じてプログラミング動作を十分且つ効率的に実行するためには、ページバッファ３０２−３０８のサイズを大きくする必要がある。しかし、ページバッファのサイズを大きくしたとしても、フラッシュメモリデバイスの性能が必ずしも改善するわけではない場合もある。図３Ａに示すプレーンを２つ有するフラッシュメモリデバイス３００ａ−３００ｄを一例として説明すると、ページバッファ３０２−３０８のサイズを大きくしても（例えば、ページバッファ３０２−３０８のそれぞれのサイズを１ページバッファサイズの４ｋＢから２ページバッファサイズの８ｋＢに大きくしても）、水平データ転送方式における制約のために、プレーンを２つ有するフラッシュメモリデバイス３００ａ−３００ｄのプログラミング速度が全体的に必ずしも向上するわけではない。チャネル「ＣＨ１」からのデータは、チャネル「ＣＨ０」からのデータのプログラミング動作が完了するまではプログラミングできないので、チャネル「ＣＨ０」、「ＣＨ１」、「ＣＨ２」、および、「ＣＨ３」のプログラミング動作を完了するためにかかる時間「ｔＰＲＧ」は長いままである。「ｔＰＲＧ」期間が長くなると、ソリッドステートコントローラがプログラミングデータにアクセスできるようになるまでの期間であるソリッドステートコントローラ（例えば、ソリッドステートコントローラ１０８）の待機時間が長くなる可能性があり、フラッシュメモリデバイスにアクセスするアクセス速度が遅くなるという問題点がある。
【００９９】
ページバッファ３０２−３０８のサイズを大きくすることなくページ３１０−３２４にプログラミングを行うべく、一部の実施例によると、垂直データ転送方式を用いてプレーン「０」およびプレーン「１」のページ３１０−３２４をプログラミングするとしてよい。一部の実施例によると、垂直データ転送方式では、第１のプレーンのページに対するプログラミングを、他のプレーンのページに対するプログラミングより前に実行することができる。第１のプレーンのページに対してプログラミングを実行した後、次のプレーンのページに対するプログラミングを開始することができる。図４Ａは、垂直データ転送方式の一例を示す図である。
【０１００】
図４Ａを参照しつつ説明すると、プレーンを２つ有するフラッシュメモリデバイス４００は、プレーン「０」およびプレーン「１」を持つとしてよい。図示しているのは２つのプレーンのみであるが、当業者であれば、フラッシュメモリデバイス４００が３つ以上のプレーンを有し得ること、および、その場合でも以下に記載する垂直データ転送方式が同様に利用可能であることを認めるであろう。
【０１０１】
図３Ａに示したプレーンを２つ有するフラッシュメモリデバイス３００ａ−３００ｄと同様に、プレーンを２つ有するフラッシュメモリデバイス４００は、チャネル「ＣＨ０」、「ＣＨ１」、「ＣＨ２」、および、「ＣＨ３」を介してデータを受信するとしてよい。ページバッファ４０２、４０４、４０６、および、４０８はそれぞれ、チャネル「ＣＨ０」、「ＣＨ１」、「ＣＨ２」、および、「ＣＨ３」を介して受信するデータを格納するための一時的な格納部として利用され得る。
【０１０２】
データはページバッファ４０２−４０８のそれぞれに順次ロードされるとしてよい。具体的に説明すると、ページバッファ４０２は、プレーン「０」のページ４１０ａにプログラミングされるべきチャネル「ＣＨ０」からの第１のデータ群、および、プレーン「１」のページ４１０ｂにプログラミングされるべきチャネル「ＣＨ０」からの第２のデータ群を受信するとしてよく、ページバッファ４０４は、プレーン「０」のページ４１２ａにプログラミングされるべきチャネル「ＣＨ１」からの第１のデータ群、および、プレーン「１」のページ４１２ｂにプログラミングされるべきチャネル「ＣＨ１」からの第２のデータ群を受信するとしてよく、ページバッファ４０６は、プレーン「０」のページ４１４ａにプログラミングされるべきチャネル「ＣＨ２」からの第１のデータ群、および、プレーン「１」のページ４１４ｂにプログラミングされるべきチャネル「ＣＨ２」からの第２のデータ群を受信するとしてよく、ページバッファ４０８は、プレーン「０」のページ４１６ａにプログラミングされるべきチャネル「ＣＨ３」からの第１のデータ群、および、プレーン「１」のページ４１６ｂにプログラミングされるべきチャネル「ＣＨ３」からの第２のデータ群を受信するとしてよい。
【０１０３】
上述したように、ページバッファ４０２−４０８に格納されたデータは、垂直データ転送方式に従って、プレーン「０」およびプレーン「１」のそれぞれのページにプログラミングされるとしてよい。点線で示しているように、チャネル「ＣＨ０」からの第１のデータ群がページバッファ４０２にロードされた後、チャネル「ＣＨ０」からの第１のデータ群をプレーン「０」のページ４１０ａにプログラミングするとしてよい。このプログラミング動作が実行されている間に、ページバッファ４０４−４０８に格納されているデータもまた、プレーン「０」の対応するページ４１２ａ、４１４ａ、および、４１６ａにロードおよびプログラミングされるとしてよい。一例を挙げると、チャネル「ＣＨ１」からの第１のデータ群をページバッファ４０４にロードした後、チャネル「ＣＨ１」からの第１のデータ群は即座に、チャネル「ＣＨ０」に対応付けられているプログラミング動作と並行して、プレーン「０」のページ４１２ａにプログラミングされるとしてよい。同様に、チャネル「ＣＨ２」および「ＣＨ３」からの第１のデータ群も即座に、プレーン「０」の対応するページ４１４ａおよび４１６ａにロードおよびプログラミングされるとしてよい。
【０１０４】
チャネル「ＣＨ０」、「ＣＨ１」、「ＣＨ２」、および、「ＣＨ３」からの第１のデータ群をプレーン「０」の対応するページ４１０ａ、４１２ａ、４１４ａ、および、４１６ａにプログラミングした後、チャネル「ＣＨ０」、「ＣＨ１」、「ＣＨ２」、および、「ＣＨ３」からの第２のデータ群をページバッファ４０２−４０８にロードして、プレーン「１」の対応するページ４１０ｂ、４１２ｂ、４１４ｂ、および、４１６ｂにプログラミングするとしてよい。例えば、チャネル「ＣＨ３」からの第１のデータ群をプレーン「０」のページ４１６ａにプログラミングした後、チャネル「ＣＨ０」からの第２のデータ群をロードして、プレーン「１」のページ４１０ｂにプログラミングするとしてよい。この時点において、チャネル「ＣＨ１」、「ＣＨ２」、および、「ＣＨ３」からの第２のデータ群もまたそれぞれ、ページバッファ４０４−４０８にロードされている。ページバッファ４０４−４０８から第２のデータ群をロードした後、第２のデータ群をプレーン「１」のページ４１２ｂ、４１４ｂ、および、４１６ｂにプログラミングする。垂直データ転送方式によって、第２のデータ群をプレーン「１」のページにプログラミングする前に、第１のデータ群をプレーン「０」のページにプログラミングすることができる。
【０１０５】
一部の実施例によると、プレーン「０」のページ４１０ａ、４１２ａ、４１４ａ、および、４１６ａは並行してプログラミングされ、プレーン「１」のページ４１０ｂ、４１２ｂ、４１４ｂ、および、４１６ｂは並行してプログラミングされるとしてよい。当業者であれば、このように複数のページにプログラミングするといってもそれぞれのプログラミング動作が全く同時に開始するわけではないことに想到するであろう。例えば、プレーン「０」のページ４１０ａ、４１２ａ、４１４ａ、および、４１６ａに対するプログラミングに対応付けられているプログラミング動作はそれぞれ、所定のタイミングオフセットが経過すると、初期化されるとしてよい。一例を挙げると、ページ４１０ａに対するプログラミングに対応付けられているプログラミング動作は、特定の基準時間に初期化されるとしてよい。（例えば、基準時間から）所定の時間が経過すると、ページ４１２ａに対するプログラミングに対応付けられているプログラミング動作が開始するとしてよい。一部の実施例によると、この所定のタイミングオフセットは、各ページバッファへのデータのロードに対応する時間によって決まるとしてよい。例えば、ページ４１０ａのプログラミングに対応付けられているプログラミング動作の初期化とページ４１２ａのプログラミングに対応付けられているプログラミング動作との時間差は、ページバッファ４０２からのデータのロードが開始された後にページバッファ４０４からのデータのロードを初期化するのにソリッドステートドライブが必要な時間である。同様に、プレーン「１」のページ４１０ｂ、４１２ｂ、４１４ｂ、および、４１６ｂのそれぞれのプログラミングに対応付けられているプログラミング動作も、所定のタイミングオフセットが経過した後、初期化されるとしてよい。
【０１０６】
図４Ｂは、図４Ａに示す垂直データ転送方式に対応付けられるタイミングチャートの一例を示す図である。図４Ｂに示すように、チャネル「ＣＨ０」、「ＣＨ１」、「ＣＨ２」、および「ＣＨ３」から受信したデータのプログラミング動作は並列に実行されるとしてよい。具体的には、チャネル「ＣＨ０」、「ＣＨ１」、「ＣＨ２」、および「ＣＨ３」から受信したデータは、プレーン「０」に並列にプログラミングされるとしてよい。プレーン「０」のページのプログラミングの後、ソリッドステートコントローラ１０８は、図４Ａに示す垂直データ転送方式に従って、プレーン「１」のページに対するプログラミングを開始するとしてよい。垂直データ転送方式では、図３Ｂに示す水平データ転送方式のタイミングチャートと比べると、全てのチャネルを並行してプログラミングすることができるので、プログラミング期間「ｔＰＲＧ」が大幅に短くなり、プログラミング動作の速度が全体的に改善している。垂直データ転送方式によれば、プログラミング期間「ｔＰＲＧ」を、ＳＬＣデバイスの倍は２００μｓ未満、ＭＬＣデバイスについては８００μｓ未満に短縮することができる。
【０１０７】
図５は、垂直データ転送方式を実行する方法５００の一例を示す図である。方法５００は、例えば、ソリッドステートシステム１００またはソリッドステートコントローラ１０４によって実行することができ、説明の便宜上、以下の方法５００の説明では基本的にソリッドステートコントローラ１０４を例として用いる。しかし、別のシステム、または、デバイスおよびシステムの別の組み合わせもまた、方法５００を実行するべく利用され得る。
【０１０８】
図５を参照しつつ説明すると、５０２において、第１のデータおよび第２のデータを受信するとしてよい。５０４において、第１のデータを第１のページバッファに格納して、第２のデータを第２のページバッファに格納するとしてよい。５０６において、第１のページバッファに格納されている第１のデータを第１のメモリプレーンに対応付けられている第１のページにプログラミングするとしてよい。５０８において、第１のデータをプログラミングしつつ、第２のページバッファに格納されている第２のデータを第１のメモリプレーンに対応付けられている第２のページにプログラミングするとしてよい。
【０１０９】
一部の実施例によると、動作５０２−５０８は、図示されている順序で実行されるとしてもよいし、並行して実行されるとしてもよく（例えば、実質的に、または、非シリアル方式で同一プロセスまたは異なるプロセスで実行するとしてよい）どちらの場合も同じ結果が得られる。また、動作５０２−５０８を実施する実体またはシステムはそれぞれ、同じであってもよいし、別々であってもよい。
【０１１０】
上述した実施例ではチャネル「ＣＨ０」、「ＣＨ１」、「ＣＨ２」、および「ＣＨ３」からのデータを並列してプログラミングするものして説明したが、先行するチャネルのプログラミング動作が終了した後で、プログラミング動作を開始するとしてもよい。例えば、チャネル「ＣＨ１」からの第１のデータ群は、チャネル「ＣＨ０」からのデータを用いたページ４１０ａのプログラミング動作が完了すると、開始されるとしてよい。別の例を挙げると、チャネル「ＣＨ２」からの第１のデータ群は、チャネル「ＣＨ１」からのデータを用いたページ４１２ａのプログラミング動作が完了すると、開始されるとしてよい。さらに別の例を挙げると、チャネル「ＣＨ３」からの第１のデータ群は、チャネル「ＣＨ２」からのデータを用いたページ４１４ａのプログラミング動作が完了すると、開始されるとしてよい。
【０１１１】
図４Ａおよび図４Ｂに図示しているプレーンは２つのみであるが、垂直データ転送方式は、プレーンの数が３つ以上であるマルチプレーン型メモリデバイスにも適用可能であるとしてよい。例えば、垂直データ転送方式は、４つのプレーンを有するマルチプレーン型メモリデバイスに適用可能である。本例では、垂直データ転送方式によると、ページ４１６ｂのプログラミング動作が完了した後、チャネル「ＣＨ０」からの第３のデータ群を第３のプレーンの第１のページにプログラミングするとしてよい（つまり、プレーン「２」）。
【０１１２】
図１Ａに示す一例であるソリッドステートドライブシステム１００は、概念を分かりやすく説明することのみを目的としており、システム構成の一例である。ほかの任意の適切なメモリシステム構成を利用することもできる。本明細書に記載する主題の原理を理解するために不要な構成要素、例えば、さまざまなインターフェース、アドレス指定回路、タイミング回路および配列決定回路、ならびに、デバッグ回路は、分かりやすいように図示されていない。
【０１１３】
ソリッドステートコントローラ１０８およびメモリコントローラ１３０を含むソリッドステートドライブ１０４またはソリッドステートドライブシステム１００は、パッケージ内に搭載されているとしてよい。当該パッケージにはさらに、機能ブロックおよび周辺回路が含まれるとしてよい。例えば、ソリッドステートドライブシステム１００またはソリッドステートドライブ１０４は、パッケージ・オン・パッケージ（ＰｏＰ）、ボール・グリッド・アレイ（ＢＧＡ）、チップ・スケール・パッケージ（ＣＳＰ）、プラスチック・リーデッド・チップ・キャリア（ＰＬＣＣ）、プラスチック・デュアル・インライン・パッケージ（ＰＤＩＰ）、ダイ・イン・ワッフル・パッケージ、ダイ・イン・ウェハ・フォーム、チップ・オン・ボード（ＣＯＢ）、セラミック・デュアル・インライン・パッケージ（ＣＥＲＤＩＰ）、プラスチック・メトリック・クワッド・フラット・パッケージ（ＭＱＦＰ）、シン・クワッド・フラット・パッケージ（ＴＱＦＰ）、スモール・アウトライン・インテグレーテッド・サーキット（ＳＯＩＣ）、シュリンク・スモール・アウトライン・パッケージ（ＳＳＯＰ）、シン・スモール・アウトライン・パッケージ（ＴＳＯＰ）、シン・クワッド・フラット・パッケージ（ＴＱＦＰ）、システム・イン・パッケージ（ＳＩＰ）、マルチ・チップ・パッケージ（ＭＣＰ）、ウェハレベル・ファブリケーテッド・パッケージ（ＷＦＰ）、ウェハレベル・プロセスド・スタック・パッケージ（ＷＳＰ）等のパッケージに搭載されるとしてよい。
【０１１４】
ソリッドステートコントローラ１０８およびメモリコントローラ１３０を含むソリッドステートドライブ１０４またはソリッドステートドライブシステム１００は、メモリカード内に設けられるとしてもよい。メモリカードは、ユニバーサル・シリアル・バス（ＵＳＢ）、マルチメディアカード（ＭＭＣ）、ペリフェラル・コンポーネント・インターコネクト・エクスプレス（ＰＣＩ−Ｅ）、シリアル・アドバンスド・テクノロジー・アタッチメント（ＳＡＴＡ）、パラレル・アドバンスド・テクノロジー・アタッチメント（ＰＡＴＡ）、スモール・コンピュータ・システム・インターフェース（ＳＣＳＩ）、エンハンスド・スモール・デバイス・インターフェース（ＥＳＤＩ）、インテグレーテッド・ドライブ・エレクトロニクス（ＩＤＥ）等のうち少なくとも１つのインターフェースを介して外部デバイス（例えば、ホスト）と通信するとしてよい。
【０１１５】
ソリッドステートコントローラ１０８およびメモリコントローラ１３０を含むソリッドステートドライブ１０４またはソリッドステートドライブシステム１００は、携帯電話、携帯情報端末（ＰＤＡ）、デジタルカメラ、ポータブルゲーム機、および、ＭＰ３プレーヤ等のモバイルデバイスに設けられるとしてもよい。ソリッドステートドライブシステム１００またはソリッドステートドライブ１０４がモバイルデバイスで実装される場合、フラッシュメモリデバイス１０６ａ−１０６ｄは当該モバイルデバイスの内部に設けられるとしてもよいし、外部に設けられるとしてもよく、当該モバイルデバイスを動作させるためのコードおよびデータを格納するとしてよい。
【０１１６】
ソリッドステートコントローラ１０８およびメモリコントローラ１３０を含むソリッドステートドライブ１０４またはソリッドステートドライブシステム１００は、高精細テレビ（ＨＤＴＶ）、デジタルビデオディスク、デジタル・バーサティル・ディスク（ＤＶＤ）、ルータ、グローバル・ポジショニング・システム（ＧＰＳ）等、家庭向け用途に適応可能であるとしてよい。
【０１１７】
ソリッドステートコントローラ１０８およびメモリコントローラ１３０を含むソリッドステートドライブ１０４またはソリッドステートドライブシステム１００は、コンピューティングシステム用に適応可能であるとしてよい。ソリッドステートドライブシステム１００またはソリッドステートドライブ１０４がコンピューティングシステムで実装される場合、ソリッドステートドライブシステム１００またはソリッドステートドライブ１０４はさらに、バスに電気的に結合されているマイクロプロセッサ、ユーザインターフェース、および、ベースバンドチップセット等のモデムを含むとしてよい。フラッシュメモリデバイス１０６ａ−１０６ｄは、コンピューティングシステムの内部構成要素または外部構成要素として設けられるとしてよく、メモリコントローラ１３０を介してマイクロプロセッサが処理するデータを格納するとしてよい。コンピューティングシステムがモバイルデバイスの場合、コンピューティングシステムの動作電圧を供給する電池をさらに備えるとしてよい。当業者であれば、コンピューティングシステムはさらに、アプリケーションチップセット、カメライメージプロセッサ（ＣＩＳ）、および／または、モバイルＤＲＡＭを備えるものと理解するであろう。
【０１１８】
フラッシュメモリデバイス１０６ａ−１０６ｄは、電力供給が停止してもデータを格納し続けることが可能な不揮発性メモリデバイスである。このため、当業者であれば、フラッシュメモリデバイス１０６ａ−１０６ｄはさまざまなデバイス、装置、および、システムと同様にアプリケーションに応じて変更され得るものと理解するであろう。
【０１１９】
上述したように、フラッシュメモリデバイスが備える複数のプレーンに対して、プログラミング時間「ｔＰＲＧ」を短縮するべく、垂直データ転送方式を用いてプログラミングを実行して、ページバッファ１３２ａ−１３２ｄのサイズを大きくすることなく、フラッシュメモリデバイス１０６ａ−１０６ｄおよびソリッドステートシステム１００の性能を改善するとしてよい。
【０１２０】
幾つかの実施例を詳細に説明してきたが、さまざまな点で変更が可能である。開示された主題は、本明細書に記載された機能的動作も含め、電子回路、コンピュータハードウェア、ファームウェア、ソフトウェア、または、これらの組み合わせ、例えば、本明細書で開示された構造的手段およびそれらの構造的均等物で実装されるとしてよい。１以上のデータ処理装置に上述した動作を実行させるプログラム（メモリデバイス、ストレージデバイス、機械可読格納基板あるいはその他の物理的な機械可読媒体、または、これらのうち１以上の組み合わせであるコンピュータ可読媒体において符号化されたプログラム等）を含むとしてよい。
【０１２１】
「システム」という用語は、データを処理する全ての装置、デバイス、および、機械を含むものとし、一例として、プログラミング可能プロセッサ、コンピュータ、または、複数のプロセッサあるいはコンピュータを含む。システムは、ハードウェアに加えて、問題のコンピュータプログラムのための実行環境を形成するコードを含むとしてよい。例えば、プロセッサファームウェア、プロトコルスタック、データベース管理システム、オペレーティングシステム、または、これらのうち１以上の組み合わせを構成するコードを含むとしてよい。
【０１２２】
プログラム（または、コンピュータプログラム、ソフトウェア、ソフトウェアアプリケーション、スクリプト、または、コードとも呼ばれる）は、コンパイラ型言語あるいはインタプリタ型言語、または、宣言型言語あるいはプロシージャ型言語を含む任意の形式のプログラミング言語で書き込まれるとしてよい。また、スタンドアロン型プログラムあるいはモジュール、コンポーネント、サブルーチン、または、コンピューティング環境での利用に適したその他のユニット等として、任意の形式で展開するとしてよい。プログラムは必ずしも、ファイルシステムのファイルに対応するものではない。プログラムは、他のプログラムまたはデータを保持するファイルの一部分に格納されるとしてよく（例えば、１以上のスクリプトがマークアップ言語ドキュメントに格納される）、問題のプログラムに専用の１つのファイルに格納されるとしてもよく、または、複数の協働するファイル（例えば、１以上のモジュール、サブプログラム、または、コードの一部分を格納する複数のファイル）に格納されるとしてもよい。プログラムは、１つのコンピュータで実行されるように展開されるとしてもよいし、一箇所にまとめられている複数のコンピュータまたは複数の箇所に分散して設けられ、通信ネットワークで相互接続されている複数のコンピュータによって実行されるように展開されるとしてもよい。
【０１２３】
本明細書では数多く具体的な内容を含むが、請求の対象となる範囲を限定するものと解釈されるべきではなく、特定の実施例に固有の特徴を説明しているものと解釈されたい。複数の別個の実施例の特徴として本明細書で説明したものは、組み合わせて１つの実施例で実施するとしてもよい。逆に、１つの実施例の特徴として説明したさまざまな特徴を、複数の実施例で別々に実施するとしてもよいし、適切なサブコンビネーションで実施するとしてもよい。さらに、複数の特徴が特定の組み合わせで実施されるものとして上述され、その組み合わせで請求されているとしても、請求されている組み合わせから１以上の特徴を除外して、請求の対象をサブコンビネーションまたはサブコンビネーションの変形とするとしてもよい。
【０１２４】
同様に、図面では特定の順序で実行されるものとして複数の動作を説明しているが、所望の結果を得るためには、これらの動作を図示されている特定の順序または順次実行する必要がある、または、図示されている動作を全て実行する必要があるものと理解されるべきではない。状況によっては、マルチタスキングおよび並列処理が効果的であるとしてよい。また、上述した実施例においてさまざまなシステム構成要素を分割することは、全ての実施例においてそのように分割する必要があるものと理解されるべきではない。
【０１２５】
上記以外の実施例も特許請求の範囲に含まれるものとする。
【図１Ａ】
0005360214.tif 000003
【図１Ｂ】
0005360214.tif 000004
【図２Ａ】
0005360214.tif 000005
【図２Ｂ】
0005360214.tif 000006
【図２Ｃ】
0005360214.tif 000007
【図３Ａ】
0005360214.tif 000008
【図３Ｂ】
0005360214.tif 000009
【図４Ａ】
0005360214.tif 000010
【図４Ｂ】
0005360214.tif 000011
【図５】
0005360214.tif 000012