(57)【要約】【課題】不揮発メモリからのデータの読出しのパフォーマンスを向上する。【解決手段】メモリコントローラは、複数の読出し部と、複数のバッファ領域と、読出し制御部とを有する。複数の読出し部は、複数の部分メモリ群にそれぞれ対応しており、読出し対象データを構成する複数のデータ要素を複数の部分メモリ群から読み出す。読出し部により読み出されたデータ要素は、訂正可能なデータ要素であれば、その読出し部に関連付けられているバッファ領域に書き込まれ、アンコレクタブルエラーがあれば、その読出し部によりリードリトライが行われる。各読出し部は、他の読出し部によりリードリトライが行われているか否かに関わらず、データ要素の読出しを行う。読出し制御部は、ホストシステムへ読出し対象データが送信されるよう複数のバッファ領域からの複数のデータ要素の読出しの順序を制御する。【選択図】図２
2015215774.tif 000002
【特許請求の範囲】
【請求項１】
ホストシステムから与えられる読出しコマンドに基づいて、１以上の不揮発メモリであり複数の部分メモリ群を有する不揮発メモリ群からのデータの読出しを制御するメモリコントローラであって、
前記複数の部分メモリ群にそれぞれ対応しており、前記読出しコマンドに従う読出し対象データを構成する複数のデータ要素を前記複数の部分メモリ群から読み出す複数の読出し部と、
前記複数の読出し部により読み出された前記複数のデータ要素が一時的に書き込まれる複数のバッファ領域と、
前記ホストシステムへ前記読出し対象データが送信されるよう前記複数のバッファ領域からの前記複数のデータ要素の読出しの順序を制御する読出し制御部と
を有し、
前記複数の読出し部の各々により読み出されたデータ要素は、訂正可能なデータ要素であれば、その読出し部に関連付けられているバッファ領域に書き込まれ、アンコレクタブルエラーがあれば、その読出し部によりリードリトライが行われ、
前記複数の読出し部の各々は、他の読出し部によりリードリトライが行われているか否かに関わらず、データ要素の読出し又はリードリトライを行い、それにより読み出されたデータ要素が訂正可能なデータ要素であれば、そのデータ要素が、その読出し部に関連付けられているバッファ領域に書き込まれる、
メモリコントローラ。
【請求項２】
前記ホストシステムに送信される読出し対象データが一時記憶されるバッファを更に有し、
前記複数の読出し部が、前記複数のバッファ領域をそれぞれ有し、
前記読出し制御部が、前記複数のバッファ領域から前記バッファへの前記複数のデータ要素の読出しの順序を制御する、
請求項１記載のメモリコントローラ。
【請求項３】
前記複数の読出し部の各々を動的に前記複数のバッファ領域のうちのいずれかに関連付け、前記複数の読出し部の各々から読み出されたデータ要素を、関連付けたバッファ領域へ転送する第１の論理部と、
前記ホストシステムへ前記読出し対象データを送信するために前記複数のバッファ領域からの前記複数のデータ要素の読出しの順序を制御する第２の論理部と
を有し、
前記第２の論理部が、前記読出し制御部であり、
前記複数のバッファ領域の各々に、少なくとも１つの入力端子と少なくとも１つの出力端子が関連付けられており、前記第１及び前記第２の論理部の各々が並行して前記複数のバッファ領域へアクセス可能である、
請求項１記載のメモリコントローラ。
【請求項４】
前記一以上の不揮発メモリの各々は、複数の物理領域を有し、
前記複数の物理領域の各々は、複数のサブ物理領域を有し、
前記一以上の不揮発メモリの各々は、サブ物理領域単位でデータが入出力され物理領域単位でデータが消去されるメモリであり、
前記複数のバッファ領域の各々の容量は、２つのサブ物理領域の容量以上である、
請求項１乃至３のうちのいずれか１項に記載のメモリコントローラ。
【請求項５】
請求項１乃至４のうちのいずれか１項に記載のメモリコントローラと、
前記メモリコントローラに接続された１以上の不揮発メモリである不揮発メモリ群と
を有するメモリシステム。
【請求項６】
ホストシステムから与えられる読出しコマンドに基づいて、１以上の不揮発メモリであり複数の部分メモリ群を有する不揮発メモリ群からのデータの読出しを制御するメモリ制御方法であって、
前記複数の部分メモリ群にそれぞれ対応した複数の読出し部の各々により、前記読出しコマンドに従う読出し対象データを構成する１以上のデータ要素を、前記複数の部分メモリ群のうちの対応する部分メモリ群から、他の読出し部がリードリトライを行っているか否かに関わらず読み出し、読み出されたデータ要素が訂正可能なデータ要素であれば、複数のバッファ領域のうちの、そのデータ要素を読み出した読出し部に関連付けられているバッファ領域に、読み出されたデータ要素を書き込み、読み出されたデータ要素にアンコレクタブルエラーがあれば、その読出し部によりリードリトライを行い、
前記ホストシステムへ前記読出し対象データが送信されるよう前記複数のバッファ領域からの前記複数のデータ要素の読出しの順序を制御する、
メモリ制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、概して、不揮発メモリからのデータの読出しの制御に関する。
【背景技術】
【０００２】
不揮発メモリとして、一般に、ＮＡＮＤ型フラッシュメモリが知られている。ＮＡＮＤ型フラッシュメモリは、複数の物理ブロックにより構成され、各物理ブロックは、複数の物理ページにより構成される。ＮＡＮＤ型フラッシュメモリでは、ページ（物理ページ）単位でデータが入出力され、ブロック（物理ブロック）単位でデータが消去される。
【０００３】
ＮＡＮＤ型フラッシュメモリから読み出されたデータは、読出し元の物理ブロックの状態によっては、訂正不可能なデータであることがある。この場合、フラッシュメモリコントローラは、フラッシュメモリのベンダーが用意しているコマンドを用いて読出し閾値（例えば読出し時の電圧）を変更し、リードリトライ（再読出し）を行うことで、訂正可能なデータを取得する（例えば特許文献１及び２）。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１２−０７９４０３号公報
【特許文献２】特開２０１３−０７３６６９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
フラッシュメモリコントローラは、訂正可能なデータ取得後、読出し閾値を初期値に戻して読出しを再開する。しかし、読出し閾値の変更及びリードリトライにより、読出しパフォーマンスが低下する。
【０００６】
この種の問題は、ＮＡＮＤ型フラッシュメモリ以外の不揮発メモリについても有り得る。
【０００７】
従って、本発明の目的は、不揮発メモリからのデータの読出しのパフォーマンスを向上することにある。
【課題を解決するための手段】
【０００８】
メモリコントローラは、１以上の不揮発メモリであり複数の部分メモリ群を有する不揮発メモリ群に接続され、ホストシステムから与えられる読出しコマンドに基づいて、不揮発メモリ群からのデータの読出しを制御する。メモリコントローラは、複数の読出し部と、複数のバッファ領域と、読出し制御部とを有する。複数の読出し部は、複数の部分メモリ群にそれぞれ対応しており、読出しコマンドに従う読出し対象データを構成する複数のデータ要素を複数の部分メモリ群から読み出す。複数の読出し部の各々により読み出されたデータ要素は、訂正可能なデータ要素であれば、その読出し部に関連付けられているバッファ領域に書き込まれ、アンコレクタブルエラーがあれば、その読出し部によりリードリトライが行われる。複数の読出し部の各々は、他の読出し部によりリードリトライが行われているか否かに関わらず、データ要素の読出し又はリードリトライを行い、それにより読み出されたデータ要素が訂正可能なデータ要素であれば、そのデータ要素が、その読出し部に関連付けられているバッファ領域に書き込まれる。読出し制御部は、ホストシステムへ読出し対象データが送信されるよう複数のバッファ領域からの複数のデータ要素の読出しの順序を制御する。
【発明の効果】
【０００９】
各読出し部は他の読出し部がリードリトライを行っていてもデータ要素の読出しを行える。それにより、読出しのパフォーマンスが向上する。
【図面の簡単な説明】
【００１０】
【図１】本発明の第１の実施形態に係るフラッシュメモリシステムの構成を示す。
【図２】本発明の第１の実施形態に係る読出しの概要を示す。
【図３】比較例及び第１の実施形態のそれぞれに係るデータ読出しの流れを示す。
【図４】比較例及び第１の実施形態のそれぞれにおけるバッファに対するデータ入力を示す。
【図５】本発明の第２の実施形態に係る読出しの概要を示す。
【図６】比較例に係る読出しの概要を示す。
【図７】比較例及び第１の実施形態の前提の説明図である。
【発明を実施するための形態】
【００１１】
以下、不揮発メモリとしてＮＡＮＤ型フラッシュメモリ（以下、フラッシュメモリ）を例に取り、本発明の幾つかの実施形態を説明する。なお、本発明は以下の実施形態に限定されるものではない。また以下に記載した構成要素には、当業者が容易に想定できるもの、実質的に同一のものが含まれる。また、以下の説明では、同種の要素を区別しないで説明する場合には参照符号を使用し（例えばフラッシュメモリ２）、同種の要素を区別して説明する場合には要素に割り振った識別符号を使用することがある（例えばフラッシュメモリＡ）。
【００１２】
＜第１の実施形態＞
【００１３】
図１は、本発明の第１の実施形態に係るフラッシュメモリシステムの構成を示す。
【００１４】
フラッシュメモリシステム１は、不揮発メモリ群の一例であるフラッシュメモリ群と、それを制御するフラッシュメモリコントローラ３とで構成されている。フラッシュメモリ群は、Ｎ個のフラッシュメモリ（フラッシュメモリチップ）２で構成されている（Ｎは２以上の整数）。フラッシュメモリ２が、部分メモリ群の一例である。フラッシュメモリコントローラ３は、Ｎ個のフラッシュメモリ２に並行にアクセス可能である。本実施形態では、Ｎ＝２である。
【００１５】
フラッシュメモリシステム１は、外部バス１３を介してホストシステム４と接続されている。ホストシステム４は、ホストシステム４の全体の動作を制御するためのＣＰＵ（Central  Processing  Unit）、フラッシュメモリシステム１との情報の授受を担うコンパニオンチップ等から構成されている。ホストシステム４は、例えば、文字、音声、あるいは画像情報等の種々の情報を処理するパーソナルコンピュータやデジタルスチルカメラをはじめとする各種情報処理装置であってもよい。
【００１６】
フラッシュメモリコントローラ３は、マイクロプロセッサ６と、ホストインタフェースブロック７と、ワークエリア８と、バッファ９と、フラッシュメモリインタフェースブロック１０と、ＥＣＣ（Error  Correcting  Code）ブロック１１と、ＲＯＭ（Read  Only  Memory）１２とから構成される。フラッシュメモリコントローラ３は、内部バス１４を介してフラッシュメモリ２と接続されている。これら機能ブロックによって構成されるフラッシュメモリコントローラ３は、一つの半導体チップ上に集積される。以下、各機能ブロックについて説明する。
【００１７】
ホストインタフェースブロック７は、ホストシステム４との間でデータ、アドレス情報、ステータス情報、外部コマンド等の授受を行なう。外部コマンドとは、ホストシステム４がフラッシュメモリシステム１に対して処理の実行を指示するためのコマンドである。ホストシステム４よりフラッシュメモリシステム１に供給されるデータ等は、ホストインタフェースブロック７を入口としてフラッシュメモリシステム１の内部（例えば、バッファ９）に取り込まれる。また、フラッシュメモリシステム１からホストシステム４に供給されるデータ等は、ホストインタフェースブロック７を出口としてホストシステム４に供給される。
【００１８】
ホストインタフェースブロック７は、コマンドレジスタＲ１、セクタ数レジスタＲ２及びＬＢＡレジスタＲ３を備えている。コマンドレジスタＲ１、セクタ数レジスタＲ２及びＬＢＡレジスタＲ３には、ホストシステム４から与えられる情報が書き込まれる。コマンドレジスタＲ１には、書込みコマンド、読出しコマンド等の外部コマンドが書き込まれる。セクタ数レジスタＲ２には、アクセス対象領域のセクタ数が書き込まれる。ＬＢＡレジスタＲ３には、アクセス対象領域の先頭のＬＢＡ（Logical  Block  Address）が書き込まれる。
【００１９】
ワークエリア８は、フラッシュメモリ２の制御に必要なデータを一時的に格納する作業領域であり、例えば複数のＳＲＡＭ（Static  Random  Access  Memory）セルによって構成されている。ワークエリア８には、例えば、論理ブロックと物理ブロックとの対応関係を示したアドレス変換テーブル等が記憶される。アドレス変換テーブルを用いて、論理アドレスを物理アドレスに変換することができる（アクセス先の論理ブロックにマッピングされている物理ブロックを特定することができる）。
【００２０】
バッファ９は、フラッシュメモリ２から読み出したデータを、ホストシステム４が受け取り可能な状態となるまで保持する。また、バッファ９は、フラッシュメモリ２に書き込むデータを、フラッシュメモリ２が書込み可能な状態となるまで保持する。
【００２１】
フラッシュメモリインタフェースブロック１０は、内部バス１４を介して、フラッシュメモリ２との間でデータ、アドレス情報、ステータス情報、内部コマンド等の授受を行う。ここで、内部コマンドとは、フラッシュメモリコントローラ３がフラッシュメモリ２に処理の実行を指示するためのコマンドであり、フラッシュメモリ２は、フラッシュメモリコントローラ３から与えられる内部コマンドに従って動作する。
【００２２】
ＥＣＣブロック１１は、フラッシュメモリ２に書き込むデータに付加される誤り訂正符号（ＥＣＣ：Error  Correcting  Code）を生成するとともに、読出したデータに付加されている誤り訂正符号に基づいて、読出したデータに含まれる誤りを検出・訂正する。
【００２３】
ＲＯＭ１２は、マイクロプロセッサ６による処理の手順を定義するプログラムを格納する不揮発性の記憶素子である。例えば、アドレス変換テーブルの作成等の処理手順を定義するプログラムが格納されている。
【００２４】
マイクロプロセッサ６は、ＲＯＭ１２に記憶されているプログラムに従って、フラッシュメモリコントローラ３の全体の動作を制御する。例えば、マイクロプロセッサ６は、ＲＯＭ１２から読出した各種処理を定義したコマンドセットに基づいてフラッシュメモリインタフェースブロック１０に処理を実行させる。
【００２５】
Ｎ個のフラッシュメモリ２の各々は、ＮＡＮＤ型フラッシュメモリからなる。ＮＡＮＤ型フラッシュメモリは、レジスタと、複数のメモリセルが２次元的に配列されたメモリセルアレイを備えている。メモリセルアレイは、複数のメモリセル群と、ワード線とを備える。ここで、メモリセル群は、複数のメモリセルが直列に接続されたものである。各ワード線は、メモリセル群の特定のメモリセルを選択するためのものである。このワード線を介して選択されたメモリセルとレジスタとの間で、レジスタから選択されたメモリセルへのデータの書込み又は選択されたメモリセルからレジスタへのデータの読出しが行われる。ＮＡＮＤ型フラッシュメモリでは、データ読出し動作及びデータ書込み動作はページ（物理ページ）単位で行われ、データ消去動作はブロック（物理ブロック）単位で行われる。物理ブロックは、複数の物理ページで構成される。並行にアクセス可能なＮ個のフラッシュメモリ２がそれぞれ有するＮ個の物理ブロックを１つに纏めた仮想ブロックが、論理ブロックにマッピングされるようになっており、また、Ｎ個のフラッシュメモリ２がそれぞれ有するＮ個の物理ページである仮想ページの単位で、データ読出し動作及びデータ書込み動作が行われてもよい。論理ブロックに属する論理アドレス毎に、その論理アドレスについての最新のデータが「有効データ」であり、最新のデータより旧いデータは「無効データ」である。ガベージコレクション処理により、物理ブロック（仮想ブロック）内のデータを全て無効データとすることができる。無効データのみが記憶されている物理ブロック（仮想ブロック）に対しては、データ消去動作を行うことができ、データ消去動作が行われた物理ブロック（仮想ブロック）は、空き状態となるので、再びデータの書込み先として使用可能となる。
【００２６】
本実施形態の書込み処理では、ホストシステム４によって、コマンドレジスタＲ１に、書込みコマンドを示すコマンドコードが書き込まれ、セクタ数レジスタＲ２に、書き込むデータのセクタ数が書き込まれ、ＬＢＡレジスタＲ３には、書き込みを開始する先頭データに対応するＬＢＡが書き込まれる。セクタ数レジスタＲ２及びＬＢＡレジスタＲ３に書き込まれた情報に基づいて、アクセス対象の領域である論理アクセス領域が判別され、その論理アクセス領域が含まれる論理ブロックに対応する物理ブロック（仮想ブロック）にホストシステム４から与えられるデータが書き込まれる。ホストシステム４側のアドレス空間は、セクタ（５１２バイト）単位で分割した領域（以下、論理セクタ領域と言う）に付けた通番であるＬＢＡで管理されている。また、複数個の論理セクタ領域で構成された論理ブロックが形成され、この論理ブロックに対して、物理ブロック（仮想ブロック）が割り当てられる。論理ブロックと物理ブロック（仮想ブロック）の対応関係（仮想ブロックと物理ブロックの対応関係）等は、管理情報を用いて管理される。管理情報は、例えばワークエリア８に記憶される。
【００２７】
図２は、本発明の第１の実施形態に係る読出しの概要を示す。
【００２８】
バッファ９は、例えばＲＡＭ上の領域である。バッファ９には、所定の方式、例えばＦＩＦＯ（First  In，First  Out）でデータが入出力される。
【００２９】
２個のフラッシュメモリ２（Ａ及びＢ）の各々につき、フラッシュメモリコントローラ３の例えば、フラッシュメモリインタフェースブロック１０に、シーケンサ２２が設けられている。シーケンサ２２が、読出し部の一例である。シーケンサＡはフラッシュメモリＡに対応し、シーケンサＢはフラッシュメモリＢに対応している。シーケンサ２２は、対応するフラッシュメモリ２からのデータの読出しを実行する。シーケンサＡ及びＢは、並行に、フラッシュメモリＡ及びＢからデータを読み出すことができる。各シーケンサ２２の動作は、マイクロプロセッサ６により制御される。マイクロプロセッサ６が、読出し制御部の少なくとも一部の一例である。
【００３０】
シーケンサ２２は、対応するフラッシュメモリ２から読み出したデータが一時的に記憶されるバッファ領域２３を有する。バッファ領域２３は、例えばＲＡＭ（Random  Access  Memory）である。バッファ領域２３の容量は、フラッシュメモリ２の１つの物理ページの容量以上である。物理ページは、サブ物理領域の一例である。バッファ領域２３の容量は、物理ページの容量の倍数でよい。バッファ領域２３には、所定の方式、例えばＦＩＦＯ（First  In，First  Out）でデータが入出力される。具体的には、シーケンサ２２が読み出したデータは、シーケンサ２２内のバッファ領域２３に格納される。そのデータに付随するＥＣＣを用いてＥＣＣブロック１１（図１参照）により訂正可能かどうかチェックされ、訂正可能であればシーケンサ２２によってバッファ領域２３に格納されたデータを訂正する。また、訂正不可能であれば、アンコレクタブルエラーとしてリードリトライが行われ、エラー無し、または訂正可能であれば、シーケンサ２２内のバッファ領域２３に再度データ（リードリトライにより読み出されたデータ）が格納される。シーケンサ２２は、内部バスを介して、対応するフラッシュメモリ２との間でデータ、アドレス情報、ステータス情報及び内部コマンド等の授受を行うことができる。シーケンサ２２は、マイクロプロセッサ６の命令を受け、この命令に従って、そのシーケンサ２２が有するバッファ領域２３にデータを格納する。
【００３１】
以下、本発明の第１の実施形態を、図６に示す比較例と比較する。比較例によれば、フラッシュメモリコントローラ７３のフラッシュメモリインタフェースブロック７０に、２個のフラッシュメモリ２（Ａ及びＢ）にそれぞれ対応した２個のシーケンサ７２（Ｆ及びＧ）があるが、各シーケンサ７２は、１物理ページの容量以上の容量のバッファ領域を有していない。
【００３２】
図３は、比較例及び本実施形態のそれぞれに係るデータ読出しの流れを示す。図４は、比較例及び本実施形態のそれぞれにおけるバッファ９に対するデータ入力を示す。なお、図３及び図４の説明では、比較例でも本実施形態でも、下記を前提とする（図７参照）。
・論理ページには、仮想ページが割り当てられる。
・仮想ページは、２個のフラッシュメモリＡ及びＢがそれぞれ有する２個の物理ページの集合である。
・論理ページ（仮想ページ）に書き込まれるデータは、８個のデータ要素（例えば５１２ｂｙｔｅ）の集合であり、８個のデータ要素のうちそれぞれ２個のデータ要素が並行に２個の物理ページに書き込まれる。従って、１個の物理ページには４個のデータ要素が書き込まれる。なお、正確には、データ要素とＥＣＣの組が物理ページに書き込まれるが、説明の簡略のために、以下の説明では、ＥＣＣの説明は省略する。
・以下、フラッシュメモリコントローラ３（７３）がホストシステム４から受信した読出しコマンドで指定されているアドレスが属する論理ページである読出し元論理ページを、「論理ページＴ」と言う。
・以下、論理ページＴに割り当てられている仮想ページを「仮想ページＴ」と言う。
・以下、仮想ページＴを構成する２個の物理ページのうち、フラッシュメモリＡが有する物理ページを「物理ページＴＡ」と言い、フラッシュメモリＢが有する物理ページを「物理ページＴＢ」と言う。
・以下、論理ページＴ（仮想ページＴ）内のデータを構成する８個のデータ要素を、データ要素Ｒ０１、Ｒ１１、Ｒ０２、Ｒ１２、Ｒ０３、Ｒ１３、Ｒ０４及びＲ１４と言う。データにおけるデータ要素の並び順は、Ｒ０１、Ｒ１１、Ｒ０２、Ｒ１２、Ｒ０３、Ｒ１３、Ｒ０４及びＲ１４である。
・データ要素Ｒ０１及びＲ１１が、並行に物理ページＴＡ及びＴＢに書き込まれており、データ要素Ｒ０２及びＲ１２が、並行に物理ページＴＡ及びＴＢに書き込まれており、データ要素Ｒ０３及びＲ１３が、並行に物理ページＴＡ及びＴＢに書き込まれており、データ要素Ｒ０４及びＲ１４が、並行に物理ページＴＡ及びＴＢに書き込まれている。この結果、物理ページＴＡには、４個のデータ要素が、Ｒ０１、Ｒ０２、Ｒ０３及びＲ０４の順に並んでおり、物理ページＴＢには、４個のデータ要素が、Ｒ１１、Ｒ１２、Ｒ１３及びＲ１４の順に並んでいる。
・図３では、データ要素Ｒ０１の読出しを、「Ｒ０１」と表記し、データ要素Ｒ０１にアンコレクタブルエラーが発生しており訂正可能なデータ要素Ｒ０１を読み出すためのリードリトライを、「ＲＲ（０１）」と表記する。この表記ルールによれば、例えば、「ＲＲ（０３）」は、訂正可能なデータ要素Ｒ０３を読み出すためのリードリトライであることがわかる。リードリトライでは、アンコレクタブルエラーの発生した読出しと同一の物理ページからデータ要素が読み出される。
【００３３】
図３の上半分に示すように、比較例によれば、複数の物理ページＴＡ及びＴＢから並行にデータ要素（Ｒ０１、Ｒ１１）を読み出す場合、物理ページＴＡから読み出したデータ要素Ｒ０１にアンコレクタブルエラーがあると、そのデータ要素について、読出し閾値の変更、及び、リードリトライＲＲ（０１）が行われる。その間、他の物理ページＴＢについては、データ要素Ｒ１１の読出しに成功しても、データ要素Ｒ０１の読出しに成功するまで、次のデータ要素Ｒ１２の読出しが中断される。その理由は、下記の通りである。
・読出し対象のデータ（論理ページＴ内のデータ）をホストシステム４に返すためには、バッファ９に、読出し対象のデータを構成する８個のデータ要素が、Ｒ０１、Ｒ１１、Ｒ０２、Ｒ１２、Ｒ０３、Ｒ１３、Ｒ０４及びＲ１４の順でバッファ９から読み出されるよう並ぶ必要がある（図４の上半分参照）。
・この順番でデータ要素がバッファ９から読み出されるためには、その順番通りにデータ要素がバッファ９に入力されなければならない。なぜなら、バッファ９は、ＦＩＦＯでデータ要素が入出力されるバッファだからである。
・故に、シーケンサＦによりデータ要素Ｒ０１のリードリトライが行われると、シーケンサＧはデータ要素Ｒ１１をバッファ９へ書き込めない。
【００３４】
このように、比較例によれば、１つのシーケンサ７２によりリードリトライが行われると、他の全てのシーケンサ７２の待ち（読出し中断）となる。リードリトライの回数が多いほど、待ち時間がより長くなる。このように、比較例では、読出しのパフォーマンスが低下する。
【００３５】
一方、図３の下半分に示すように、本実施形態によれば、シーケンサＡによりリードリトライＲＲ（０１）が行われても、他のシーケンサＢは、リードリトライＲＲ（０１）と並行して（リードリトライＲＲ（０１）の終了を待つことなく）、物理ページＴＢからのデータ要素の読出し（又はリードリトライ）を行うことができる。このようなことが可能になっている原因は、各シーケンサ２２が、バッファ９とは独立し１物理ページの容量以上の容量のバッファ領域２３を有していることにある。これにより、図４の下半分に示すように、各シーケンサ２２は、他のシーケンサ２２の読出しの状況に関係無く、対応する物理ページから順次データ要素を読み出して、読み出したデータ要素を、自分のバッファ領域２３に蓄積しておくことができる。本実施形態では、バッファ領域Ａ及びＢから、並行に読出し可能な２個のデータ要素が、所定の順番で、バッファ９へと出力される。バッファ領域Ａ及びＢからバッファ９へのデータ要素の出力は、１仮想ページ分のデータ（８個のデータ要素）がバッファ領域Ａ及びＢに格納されたときに仮想ページ単位で行われてもよいし、並行に読出し可能な２個のデータ要素がバッファ領域Ａ及びＢに格納される都度にその２個のデータ要素の単位で行われてもよい。シーケンサＡ及びＢの各々の動作（物理ページからのデータ要素の読出し、及び、バッファ領域２３からのバッファ９へのデータ要素の出力）は、マイクロプロセッサ６によって制御される。また、各バッファ領域２３の容量は、物理ページを読み出すビジー時間とＥＣＣを用いた訂正の時間を考慮し、２個の物理ページ分の容量以上であることが好ましい。
【００３６】
本発明の第１の実施形態によれば、並行してアクセス可能な複数の物理ページのうちの１つの物理ページについてリードリトライが行われていても、そのリードリトライと並行して、複数の物理ページのうちの別の物理ページからデータ要素の読出し又はリードリトライが可能である。これにより、読出しのパフォーマンスが向上する。
【００３７】
＜第２の実施形態＞
【００３８】
以下、本発明の第２の実施形態を説明する。その際、第１の実施形態との相違点を主に説明し、第１の実施形態との共通点については説明を省略又は簡略する。
【００３９】
図５は、本発明の第２の実施形態に係る読出しの概要を示す。
【００４０】
バッファ５９は、例えば１個のＲＡＭであり、１つまたは複数の入出力端子、及び、複数のバッファ領域５４を有し、フラッシュ側制御論理５５にバッファ５９のアクセス調停論理を有する。本実施形態では、バッファ領域５４の数は、シーケンサ５２の数より多いが、バッファ領域５４の数は、シーケンサ５２の数と同じでもよい。また、本実施形態において、４個のバッファ領域Ａ〜Ｄの各々は、予めシーケンサＡ及びＢと固定的に対応付けられてはおらず、４個のバッファ領域Ａ〜Ｄの各々とシーケンサＡ及びＢの各々との対応関係は後述のフラッシュ側制御論理５５（アクセス調停論理）により動的に決められる。なお、バッファ５９が有する入出力端子の数が、複数のバッファ領域５４につき１つの場合は、フラッシュ側制御論理５５のアクセス調停論理により、２以上のシーケンサ５２による２以上のバッファ領域５４に対するアクセスを調停する。
【００４１】
１つのバッファ領域５４につき、少なくとも１つの入力端子と、少なくとも１つの出力端子が関連付けられる。これにより、４個のバッファ領域Ａ〜Ｄに並行してデータを入力する（書き込む）ことも、４個のバッファ領域Ａ〜Ｄから並行してデータを出力する（読み出す）ことも可能である。各バッファ領域５４は、１物理ページの容量以上の容量、好ましくは、複数個の物理ページ分の容量以上の容量を有する。各バッファ領域５４には、所定の方式、例えばＦＩＦＯでデータが入出力される。なお、上述したように、バッファ５９が有する入出力端子の数が、複数のバッファ領域５４につき１つでもよく、その場合は、フラッシュ側制御論理５５のアクセス調停論理により、２以上のシーケンサ５２による２以上のバッファ領域５４に対するアクセスを調停する。
【００４２】
フラッシュメモリインタフェースブロック５０における各シーケンサ５２は、１物理ページの容量以上の容量のバッファ領域を有しない。各シーケンサ５２は、図６に示した比較例のシーケンサ７２と同じでよい。
【００４３】
フラッシュメモリコントローラ５３は、フラッシュ側制御論理５５とホスト側制御論理５６を有する。フラッシュ側制御論理５５は、バッファ５９よりもフラッシュメモリ２側、例えばフラッシュメモリインタフェースブロック５０に設けられる。ホスト側制御論理５６は、バッファ５９よりもホストシステム４側、例えばホストインタフェースブロック５７に設けられる。制御論理５５及び５６は、それぞれ、ハードウェア回路（論理回路）である。
【００４４】
フラッシュ側制御論理５５は、第１の論理部の一例であり、シーケンサ５２からバッファ５９への転送先のアドレス（シーケンサ５２により読み出されたデータ要素の転送先のアドレス）をデコードする。例えば、フラッシュ側制御論理５５は、ホストシステム４からの第１の読出しコマンドの処理においてシーケンサＡにより読み出されたデータ要素の転送先として、バッファ領域Ａ〜Ｄのうち少なくとも１つのバッファ領域（ここではＢ及びＤ）を選択し、同様に、第１の読出しコマンドの処理においてシーケンサＢにより読み出されたデータ要素の転送先として、残りのバッファ領域のうち少なくとも１つのバッファ領域（ここではＣ及びＡ）を選択する。これにより、第１の読出しコマンドの処理について、シーケンサＡがバッファ領域Ｂ及びＤに対応付けられ、シーケンサＢがバッファ領域Ｃ及びＡに対応付けられる。どのシーケンサにどのバッファ領域が対応付けられるかは、例えばランダムに選択されても良いし、バッファ領域の空き容量に応じて対応付けられても良い。また、複数のバッファ領域が複数のシーケンサに按分されても良いし、１つのシーケンサに対応付けられるバッファ領域の数が、バッファ領域の空き容量等に応じて決められてもよい。どのシーケンサにどのバッファ領域が対応付けられるかは、フラッシュメモリコントローラ５３の仕様に応じて、適宜きめることができる。第１の読出しコマンドの処理では、フラッシュ側制御論理５５は、シーケンサＡにより読み出された複数のデータ要素を順次バッファ領域Ｂに転送し（書き込み）、同様に、シーケンサＢにより読み出された複数のデータ要素を順次バッファ領域Ｃに転送する（書き込む）。転送先は、対応するバッファ領域５４における空き領域の先頭領域である。つまり、シーケンサ５２により指定されたアドレスは、そのシーケンサ５２に対応するバッファ領域５４における空き領域の先頭アドレスにデコードされる。いずれかのシーケンサ５２により読み出されたデータ要素にアンコレクタブルエラーが発生していてリードリトライが行われたとしても、そのリードリトライと並行して別のシーケンサはデータ要素の読出し又はリードリトライを行うことができる。故に、データ要素の読出しとリードリトライの関係は、第１の実施形態と同様となる（例えば図３の下半分が示す通りとなる）。なお、シーケンサ５２が読み出したデータ要素は、そのデータ要素に付随するＥＣＣを用いてＥＣＣブロック１１（図１参照）により訂正可能かどうかチェックされ、訂正不可能であればアンコレクタブルエラーとしてリードリトライが行われ、訂正可能であればバッファ領域５４内で訂正される。
【００４５】
ホスト側制御論理５６は、第２の論理部の一例であり、バッファ５９からの読出しの順序とバッファ５９の読出し元アドレスとを制御することで、読出しコマンドに従う読出し対象のデータ（読出し対象のデータを構成する順番通りに並んだデータ要素）をホストシステム４に送信する。具体的には、例えば、上述の第１の読出しコマンドの処理を例にとれば、シーケンサＡにより読み出されたデータ要素はバッファ領域Ｂ及びＤに書き込まれており、シーケンサＢにより読み出されたデータ要素はバッファ領域Ｃ及びＡに書き込まれている。この場合、ホスト側制御論理５６は、第１の読出しコマンドに従う読出し対象のデータをホストシステム４に転送するために（具体的には、図７の論理ページＴにおけるデータ要素Ｒ０１、Ｒ１１、Ｒ１２、…の順番でデータ要素をホストシステム４に転送するために）、バッファ領域Ｂ及びＤからのデータ要素の読出しと、バッファ領域Ｃ及びＡからのデータ要素の読出しを、交互に行う。より具体的には、例えば、ホスト側制御論理５６は、バッファ領域Ｂ→Ｃ→Ｄ→Ａ→Ｂ→Ｃ…のように、読出し元のバッファ領域と読出し元のアドレスを順次切り替える。
【００４６】
以上、本発明の幾つかの実施形態を説明したが、これらは、本発明の説明のための例示であって、本発明の範囲をこれらの実施形態にのみ限定する趣旨ではない。本発明は、他の種々の形態でも実施する事が可能である。例えば、本発明は、論理ページに対して仮想ページを割り当てるフラッシュメモリシステムに限らず、読出し対象のデータが複数の部分メモリ群に分散して書きこまれている他の不揮発メモリシステムにも適用可能である。
【符号の説明】
【００４７】
１：フラッシュメモリシステム
【図１】
2015215774.tif 000003
【図２】
2015215774.tif 000004
【図３】
2015215774.tif 000005
【図４】
2015215774.tif 000006
【図５】
2015215774.tif 000007
【図６】
2015215774.tif 000008
【図７】
2015215774.tif 000009