JP2010097333A - メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法 - Google Patents

メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法 Download PDF

Info

Publication number
JP2010097333A
JP2010097333A JP2008266409A JP2008266409A JP2010097333A JP 2010097333 A JP2010097333 A JP 2010097333A JP 2008266409 A JP2008266409 A JP 2008266409A JP 2008266409 A JP2008266409 A JP 2008266409A JP 2010097333 A JP2010097333 A JP 2010097333A
Authority
JP
Japan
Prior art keywords
data
page
data storage
storage area
flash memory
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2008266409A
Other languages
English (en)
Other versions
JP4632180B2 (ja
Inventor
Yukio Terasaki
幸夫 寺▲崎▼
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
TDK Corp
Original Assignee
TDK Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by TDK Corp filed Critical TDK Corp
Priority to JP2008266409A priority Critical patent/JP4632180B2/ja
Priority to US12/585,911 priority patent/US8214579B2/en
Priority to US12/574,768 priority patent/US8239615B2/en
Priority to US12/588,311 priority patent/US8219742B2/en
Publication of JP2010097333A publication Critical patent/JP2010097333A/ja
Application granted granted Critical
Publication of JP4632180B2 publication Critical patent/JP4632180B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7203Temporary buffering, e.g. using volatile buffer or dedicated buffer blocks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7208Multiple device management, e.g. distributing data over multiple flash devices

Abstract

【課題】複数セクタの領域が含まれる論理ページ単位のデータが格納されるデータ格納領域を複数個備えたフラッシュメモリシステムにおいて、フラッシュメモリに対するデータ書込みの効率やフラッシュメモリの寿命を向上させる。
【解決手段】メモリコントローラは、論理ページ単位のデータが格納されるデータ格納領域を複数個備えたデータ格納手段を有しており、複数個のデータ格納領域のうち、ホストシステムから与えられたデータが格納されている領域のセクタ数が多いデータ格納領域を優先して、データ格納領域に格納されているデータをフラッシュメモリに書き込む。
【選択図】図1

Description

本発明は、メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法に関する。
フラッシュメモリを記憶媒体として用いた記憶装置は、特許文献1に記載されているように、記憶装置が接続されるホストシステムの動作速度とフラッシュメモリの動作速度(書き込み速度又は読み出し速度)との違いを吸収するために、フラッシュメモリに書き込まれるデータ又はフラッシュメモリから読み出されたデータを保持するためのバッファメモリを備えている。
更に、このような記憶装置では、ホストシステム側から見た実質的な動作速度を向上させるために、複数個のフラッシュメモリに対して並行したデータの書き込みや読み出しを行っている場合が多い。例えば、特許文献2には、異なるフラッシュメモリ内の物理ブロックを仮想的に結合した仮想ブロックを形成し、この仮想ブロック単位で、複数個のフラッシュメモリに対して並行したデータの書き込みや読み出しを行う技術が開示されている。
特開2003−233529号公報 国際公開第2002/046929号パンフレット
ホストシステム側では、セクタ単位(512バイト単位)の領域に付けられたアドレスに基づいて、上記のような記憶装置に格納されるデータを管理している。一方、記憶媒体として用いられているフラッシュメモリでは、ページ単位でデータの書き込みや読み出しが行われる。この書き込みや読み出しの処理単位であるページ(物理ページ)には、通常、複数セクタのデータが格納される。
更に、複数個のフラッシュメモリに対して並行したデータの書き込みや読み出しを行う場合には、異なるフラッシュメモリ内の複数個の物理ブロックで仮想ブロックが形成され、同じ仮想ブロックに属する物理ブロック内の物理ページが仮想的に結合された1個のページとして管理される。
従って、通常、バッファメモリからフラッシュメモリへのデータの書き込みでは、複数セクタのデータがまとめてフラッシュメモリに書き込まれる。また、ホストシステム側で管理されているアドレスとフラッシュメモリ内の記憶領域(物理ページ内の領域)のアドレスとの対応関係を管理するために、ホストシステム側でアドレスが管理されているセクタ単位の領域を複数個集めた論理ページが形成され、この論理ページと物理ページとの対応関係、又は論理ページと仮想ページとの対応関係が管理されている。
又、上述のように複数セクタのデータがまとめて物理ページ又は仮想ページに書き込まれるため、物理ページ又は仮想ページに書き込まれる複数セクタのデータは、まとめて管理される必要がある。例えば、バッファメモリ上の領域が物理ページ又は仮想ページに対応するセクタ数単位で管理され、この単位領域にいずれかの論理ページに対応するデータが格納されるようにフラッシュメモリシステム(フラッシュメモリを記憶媒体として用いた記憶装置内のメモリシステム)が構成される。そして、論理ページと物理ページとの対応関係、又は論理ページと仮想ページとの対応関係に従って、論理ページ単位のデータが物理ページ又は仮想ページに書き込まれるようにすればよい。このような構成のメモリシステムでは、通常、複数個分の論理ページに対応するデータがバッファメモリに格納されるため、どの論理ページに対応するデータを優先してフラッシュメモリに書き込むかを決定する必要がある。この優先順位の管理が、記憶媒体であるフラッシュメモリに対するデータ書込みの効率やフラッシュメモリの寿命に与える影響は大きいため、これらを考慮してバッファメモリの構成や管理方法を決定する必要がある。
そこで、本発明は、複数セクタの領域が含まれる論理ページ単位のデータが格納されるデータ格納領域を複数個備えたフラッシュメモリシステムにおいて、フラッシュメモリに対するデータ書込みの効率やフラッシュメモリの寿命を向上させることを目的とする。
本発明の第1の観点に従うメモリコントローラは、ホストシステムから与えられる指示情報に基づいて、物理ページ単位でデータの書き込み及び読み出しが行われ、複数個の物理ページを含む物理ブロック単位でデータの消去が行われるフラッシュメモリに対するアクセスを制御するメモリコントローラであって、
ホストシステムから与えられるセクタ単位のアドレスが割り当てられている論理セクタ領域を複数個集めた論理ページを形成する論理ページ形成手段と、
前記論理ページ単位のデータが格納されるデータ格納領域を複数個備えたデータ格納手段と、
前記論理ページと前記データ格納領域との対応関係を管理する対応管理手段と、
前記対応管理手段により管理されている前記論理ページと前記データ格納領域との対応関係に従って、ホストシステムから与えられるデータを前記データ格納領域に格納する制御手段と、
前記データ格納領域内のホストシステムから与えられたデータが格納されている領域のセクタ数を、前記データ格納領域毎に管理する領域管理手段と、
前記データ格納領域に格納されているデータをフラッシュメモリに書き込むデータ書き込み手段とを備える。前記データ書き込み手段は、複数個の前記データ格納領域のうち、ホストシステムから与えられたデータが格納されている領域のセクタ数が多い前記データ格納領域を優先して、前記データ格納領域に格納されているデータをフラッシュメモリに書き込む。
本発明の第2の観点に従うメモリコントローラは、前記第1の観点において、フラッシュメモリに格納されているデータを読み出し、前記データ格納領域に格納するデータ読み出し手段と、異なる前記データ格納領域間で、一方の前記データ格納領域から他方の前記データ格納領域へのデータ転送を制御するデータ転送手段とを備える。前記データ読み出し手段は、前記制御手段が、いずれかの前記論理ページに対応するデータである第1のデータを、いずれかの前記データ格納領域である第1のデータ格納領域に格納するのに並行して、前記第1のデータと同じ前記論理ページに対応する第2のデータをフラッシュメモリから読み出し、読み出した前記第2のデータを、前記第1のデータ格納領域とは異なる前記データ格納領域である第2のデータ格納領域に格納する。前記データ転送手段は、前記第1のデータ格納領域と前記第2のデータ格納領域との間でデータ転送を行うことにより、前記第2のデータの一部を前記第1のデータで置き換えたデータを作成する。
本発明の第3の観点に従うメモリコントローラは、前記第2の観点において、前記データ転送手段は、前記第1のデータの容量が前記論理ページの容量の1/2未満のときは、前記第1のデータを前記第2のデータ格納領域に転送し、前記第1のデータの容量が前記論理ページの容量の1/2以上のときは、前記第2のデータの一部を前記第1のデータ格納領域に転送する。
本発明の第4の観点に従うメモリコントローラは、前記第1乃至第3の観点のいずれかのメモリコントローラと、このメモリコントローラにより制御されるフラッシュメモリとを備える。
本発明の第5の観点に従うフラッシュメモリの制御方法は、ホストシステムから与えられる指示情報に基づいて、物理ページ単位でデータの書き込み及び読み出しが行われ、複数個の物理ページを含む物理ブロック単位でデータの消去が行われるフラッシュメモリに対するアクセスを制御するフラッシュメモリの制御方法であって、
ホストシステムから与えられるセクタ単位のアドレスが割り当てられている論理セクタ領域を複数個集めた論理ページを形成する論理ページ形成ステップと、
前記論理ページ単位のデータが格納されるデータ格納領域と、前記論理ページとの対応関係を管理する対応管理ステップと、
前記対応管理ステップにより管理されている前記論理ページと前記データ格納領域との対応関係に従って、ホストシステムから与えられるデータを前記データ格納領域に格納する制御ステップと、
前記データ格納領域内のホストシステムから与えられたデータが格納されている領域のセクタ数を、前記データ格納領域毎に管理する領域管理ステップと、
前記データ格納領域に格納されているデータをフラッシュメモリに書き込むデータ書き込みステップとを備える。前記データ書き込みステップでは、複数個の前記データ格納領域のうち、ホストシステムから与えられたデータが格納されている領域のセクタ数が多い前記データ格納領域を優先して、前記データ格納領域に格納されているデータがフラッシュメモリに書き込まれる。
本発明の第6の観点に従うフラッシュメモリの制御方法は、前記第5の観点において、フラッシュメモリに格納されているデータを読み出し、前記データ格納領域に格納するデータ読み出しステップと、異なる前記データ格納領域間で、一方の前記データ格納領域から他方の前記データ格納領域へのデータ転送を制御するデータ転送ステップとを備える。前記データ読み出しステップでは、前記制御ステップにより、いずれかの前記論理ページに対応するデータである第1のデータが、いずれかの前記データ格納領域である第1のデータ格納領域に格納されるのに並行して、前記第1のデータと同じ前記論理ページに対応する第2のデータをフラッシュメモリから読み出し、読み出した前記第2のデータを前記第1のデータの格納先になっている前記データ格納領域とは異なる前記データ格納領域である第2のデータ格納領域に格納する。前記データ転送ステップでは、前記第1のデータ格納領域と前記第2のデータ格納領域との間でデータ転送を行うことにより、前記第2のデータの一部を前記第1のデータで置き換えたデータを作成する。
本発明の第7の観点に従うフラッシュメモリの制御方法は、前記第6の観点において、前記データ転送ステップでは、前記第1のデータの容量が前記論理ページの容量の1/2未満のときは、前記第1のデータを前記第2のデータ格納領域に転送し、前記第1のデータの容量が前記論理ページの容量の1/2以上のときは、前記第2のデータの一部を前記第1のデータ格納領域に転送する。
本発明によれば、複数セクタの領域が含まれる論理ページ単位のデータが格納されるデータ格納領域を複数個備えたフラッシュメモリシステムにおいて、フラッシュメモリに対するデータ書込みの効率やフラッシュメモリの寿命を向上させることができる。
図1は、本発明の一実施形態に係るフラッシュメモリシステム1を概略的に示すブロック図である。本実施形態のフラッシュメモリシステム1では、記憶媒体として複数個のフラッシュメモリを使用している。更に、互いに異なるフラッシュメモリに属する複数個の物理ブロックで仮想ブロックを形成している。
図1に示すように、フラッシュメモリシステム1は、フラッシュメモリ2と、フラッシュメモリ2を制御するメモリコントローラ3とで構成されている。尚、図1では、複数個のフラッシュメモリを、「フラッシュメモリ2」として図示している。以下の説明では、複数個のフラッシュメモリ2を総称して「フラッシュメモリ2」と言うことがある。以下、各機能ブロックについて説明する。
ホストインターフェースブロック7は、ホストシステム4との間でデータ、アドレス情報、ステータス情報、外部コマンド等の授受を行う。外部コマンドとは、ホストシステム4がフラッシュメモリシステム1に対して処理の実行を指示するためのコマンドである。ホストシステム4よりフラッシュメモリシステム1に供給されるデータ等は、ホストインターフェースブロック7を入口としてフラッシュメモリシステム1の内部(例えば、バッファ9)に取り込まれる。また、フラッシュメモリシステム1からホストシステム4に供給されるデータ等は、ホストインターフェースブロック7を出口としてホストシステム4に供給される。
SRAM(Static Random Access Memory)8は、揮発性の記憶素子であり、フラッシュメモリ2の制御に必要なデータを一時的に格納するために使用される。例えば、不良ブロックテーブル、アドレス変換テーブル及び空きブロックテーブル等は、SRAM8上で作成又は更新される。ここで、不良ブロックテーブルは、不良ブロックを示す情報を保持するテーブルである。アドレス変換テーブルは、論理ブロックと仮想ブロック(又は物理ブロック)との対応関係を示したテーブルである。空きブロックテーブルは、消去状態の仮想ブロック(又は物理ブロック)又は有効なデータが書き込まれていない仮想ブロック(又は物理ブロック)を検索するためのテーブルである。これらのテーブルは、フラッシュメモリ2に保存してもよいが、これらのテーブルを格納するために、FeRAM(Ferroelectric Random Access Memory)等の不揮発性RAM(Random Access Memory)を用いるようにしてもよい。
ROM12は、不揮発性の記憶素子である。ROM12には、フラッシュメモリ2の制御に必要なファームウェアが格納されている。なお、起動時に必要な最低限のファームウェアだけがROM12に格納され、その他のファームウェアはフラッシュメモリ2に格納されるようにしてもよい。
バッファ9は、ホストシステム4から与えられたデータやフラッシュメモリ2から読み出されたデータが一時的に格納される揮発性の記憶素子である。本本実施形態では、この揮発性の記憶素子としてDRAM(Dynamic Random Access Memory)を用いている。このバッファ9の詳細については後述する。
フラッシュメモリインターフェースブロック10は、ROM12又はフラッシュメモリ2にファームウェアとして格納されているシーケンスコード(各種の処理を規定したコード)を読み込み、読込んだシーケンスコードに従って、フラッシュメモリ2に対する各種の処理を実行する。このシーケンスコードは、フラッシュメモリインターフェースブロック10が実行するシーケンス処理毎に設定されたコードセットであり、それぞれのコードセットが複数個のコードで構成されている。このシーケンスコードに基づいて実行される処理では、フラッシュメモリインターフェースブロック10とフラッシュメモリ2との間で、データ、アドレス情報、ステータス情報、内部コマンド等の授受が、内部バス14を介して行なわれる。ここで、内部コマンドとは、メモリコントローラ3がフラッシュメモリ2に処理の実行を指示するためのコマンドであり、フラッシュメモリ2は、メモリコントローラ3から与えられる内部コマンドに従って動作する。尚、フラッシュメモリ2にファームウェアとして格納されているシーケンスコードについては、処理の実行前にフラッシュメモリ2から読み出されSRAM8に格納される。
ECCブロック11は、フラッシュメモリ2に書き込むデータに付加される誤り訂正符号(ECC:Error-Correcting Code))を生成するとともに、読み出したデータに付加されている誤り訂正符号に基づいて、読み出したデータに含まれる誤りを検出・訂正する。
マイクロプロセッサ6は、ROM12又はフラッシュメモリ2にファームウェアとして格納されているプログラムコードを読み込み、読み込んだプログラムコードに従って、メモリコントローラ3の全体の動作を制御する。このプログラムコードは、マイクロプロセッサ6の動作を規定したプログラムであり、マイクロプロセッサ6は、読込んだプログラムコードに基づいて、フラッシュメモリ2に対するアクセスを制御する。尚、フラッシュメモリ2にファームウェアとして格納されているプログラムコードについては、起動時にフラッシュメモリ2から読み出されSRAM8に格納される。
フラッシュメモリ2は、NAND型フラッシュメモリであり、レジスタと、複数のメモリセルが配列されたメモリセルアレイを備えている。メモリセルアレイは、複数のメモリセル群と、ワード線とを備える。ここで、メモリセル群は、複数のメモリセルが直列に接続されたものである。各ワード線は、メモリセル群の特定のメモリセルを選択するためのものである。このワード線を介して選択されたメモリセルとレジスタとの間で、レジスタから選択されたメモリセルへのデータの書き込み、又は選択されたメモリセルからレジスタへのデータの読み出しが行われる。尚、一般的に使用されているNAND型フラッシュメモリには、SLC(single level cell)タイプのメモリセルで構成されているものと、MLC(multi level cell)タイプのメモリセルで構成されているものとがある。
NAND型フラッシュメモリでは、データの読み出し及び書き込みはページ(物理ページ)単位で行われ、データの消去は複数のページ(物理ページ)で構成されたブロック(物理ブロック)単位で行われる。尚、物理ページは、主にホストシステム4から与えられるユーザーデータが書き込まれるユーザー領域と、付加データが記憶される冗長領域とで構成されている。一般的に使用されているNAND型フラッシュメモリには、ユーザー領域の容量が4セクタ(2048バイト)や8セクタ(4096バイト)のものがある。冗長領域については、メーカー、メモリセルのタイプ(SLC又はMLC)及び物理ページの容量等の違いによりその容量が異なり、種々の容量のものがある。また、1個の物理ブロックを構成する物理ページの個数については、64個のものや128個のもの等がある。本実施形態では、1個の物理ページのユーザー領域の容量が8セクタ(4096バイト)で、1個の物理ブロックが64個の物理ページで構成されているNAND型フラッシュメモリを用いた場合について説明する。
冗長領域に書き込まれる付加データとしては、誤り訂正符号(ECC:Error-Correcting Code)、論理アドレス情報、ブロックステータス(フラグ)等がある。論理アドレス情報は、その物理ブロックに割り当てられた論理ブロックを示す情報であり、この情報に基づいて物理ブロックと論理ブロックの対応関係が判別される。ブロックステータス(フラグ)は、物理ブロックの良否を示すフラグであり、このブロックステータス(フラグ)に基づいて、正常にデータの書き込み等を行うことができない物理ブロックである不良ブロックが判別される。尚、不良ブロックには、出荷時から不良である初期不良の物理ブロック(以下、「初期不良ブロック」と言う)と、使用開始後に劣化して不良ブロックになった後発不良の物理ブロック(以下、「後発不良ブロック」と言う)があり、初期不良ブロックについては、不良ブロックであることを示すブロックステータス(フラグ)がメーカーによって予め書き込まれている。また、この初期不良ブロックを示すブロックステータス(フラグ)を、ユーザー領域に書き込んでいるメーカーもある。後発不良ブロックの判断基準については、設計の際に設計者が適宜設定することができる。例えば、書き込み又は消去が行われた際にフラッシュメモリから出力される処理ステータスがフェイルであった場合、読み出されたデータに予め定められた閾値以上の誤りが含まれていた場合、又はこれらの組合せ等により、後発不良理ブロックであるとの判断が行われてもよい。
本実施形態では、図2に示すように、8個のフラッシュメモリ2a〜2hが並行してアクセスされるように、つまり、並行してデータの書き込みや読み出しが行われるようにフラッシュメモリインターフェース10が構成されている。8個のフラッシュメモリ2a〜2hに書き込まれるデータは、時分割でバッファ9から出力され、ラッチ回路21a〜21hを介して、フラッシュメモリ2a〜2hに供給される。8個のフラッシュメモリ2a〜2hから読み出されるデータは、ラッチ回路21a〜21hを介して、時分割でバッファ9に入力される。尚、バッファ9のホストシステム4側のデータ入出力と、バッファ9のフラッシュメモリ2a〜2h側のデータ入出力についても、時分割で動作するように回路が構成されている。
上記のように8個のフラッシュメモリ2a〜2hに並行してアクセスする際に、メモリコントローラ3は、互いに異なるフラッシュメモリ2a〜2hに属する8個の物理ブロックを1個の仮想ブロックとして取り扱い、この仮想ブロックに対して1個の論理ブロックを割り当てている。この仮想ブロックは、例えば、図3に示したような仮想ブロック管理テーブルにより管理されている。仮想ブロック管理テーブルは、図3に示すように、仮想ブロックに付けられた通し番号である仮想ブロック番号(VBN)と、それぞれの仮想ブロックを構成する物理ブロックの物理ブロックアドレス(VBA)との対応関係を示している。この仮想ブロック管理テーブルを参照することにより、例えば、VBN#0の仮想ブロックは、
フラッシュメモリ2a内のPBA#0の物理ブロックと
フラッシュメモリ2b内のPBA#0の物理ブロックと
フラッシュメモリ2c内のPBA#0の物理ブロックと
フラッシュメモリ2d内のPBA#0の物理ブロックと
フラッシュメモリ2e内のPBA#0の物理ブロックと
フラッシュメモリ2f内のPBA#0の物理ブロックと
フラッシュメモリ2g内のPBA#0の物理ブロックと
フラッシュメモリ2h内のPBA#0の物理ブロックと
で構成されていることが分かる。それぞれの仮想ブロックを構成する物理ブロックのPBAは、同一でなくてもよいが、仮想ブロックの管理等を考慮すれば、同じPBAの物理ブロックで仮想ブロックが構成されることが好ましい。但し、PBAが同一の8個の物理ブロック(互いに異なるフラッシュメモリ2a〜2hに属する物理ブロック)の中に不良ブロックが含まれている場合には、その不良ブロックに代えて、別の物理ブロック(PBAが異なる物理ブロック)が割り当てられる。例えば、フラッシュメモリ2c内のPBA#7の物理ブロックが不良ブロックの場合には、このPBA#7の物理ブロックに代えて、PBA#1016の物理ブロックがVBN#7の仮想ブロックに割り当てられる。
尚、それぞれの仮想ブロックに割り当てられているフラッシュメモリ2a〜2hに属する8個の物理ブロックについては、その物理ブロックが不良ブロックにならない限り他の物理ブロックに変更されないことが好ましい。また、仮想ブロック管理テーブルには、予め定められている同一のPBAの物理ブロックだけで構成された仮想ブロック以外の仮想ブロックについてだけ、その仮想ブロックを構成する物理ブロックのPBAを記述するようにしても良い。つまり、図3に示した、VBN#7の仮想ブロックやVBN#15の仮想ブロックのような仮想ブロックについてだけ、その仮想ブロックを構成する物理ブロックのPBAを仮想ブロック管理テーブルに記述するようにしても良い。
ホストシステム4側のアドレス空間は、セクタ(512バイト)単位で分割した領域(以下、「論理セクタ領域」と言う)に付けた通番であるLBA(Logical Block Address)で管理されている。メモリコントローラ3内で行われるアドレス管理では、複数個の論理セクタ領域で論理ブロックが形成され、この論理ブロックに対して、仮想ブロックが割り当てられる。本実施形態では、1個の物理ブロックが、512セクタのユーザー領域で構成されており、1個の仮想ブロックが、8個の物理ブロックで形成されている。このため、LBAが連続する4096個の論理セクタ領域をまとめたものが論理ブロックとされ(例えば、LBA#0〜#4095の4096個の論理セクタ領域がLBN#0の論理ブロックとされる)、この論理ブロックに対して、仮想ブロックが割り当てられる。この論理ブロックと仮想ブロックとの対応関係は、論理ブロックに付けられた通し番号である論理ブロック番号(LBN)と仮想ブロックの仮想ブロック番号(VBN)との対応関係を示したアドレス変換テーブルで管理されている。図4は、アドレス変換テーブルの一例であり、このアドレス変換テーブルには、例えば、LBN#0の論理ブロックにVBN#11の仮想ブロックが割り当てられ、LBN#1の論理ブロックにVBN#0の仮想ブロックが割り当てられていることが示されている。尚、ここでは、論理ブロックに含まれる領域の容量と、仮想ブロックに含まれ記憶領域(ユーザー領域)の容量を同じにしたが、論理ブロックに含まれる領域の容量を仮想ブロックに含まれ記憶領域(ユーザー領域)の容量よりも小さくしても良い。
本実施形態では、ホストシステム4から与えられるデータは、一旦、バッファ9に格納される。メモリコントローラ3は、バッファ9に格納されているデータをフラッシュメモリ2に書き込む必要が生じたときに、フラッシュメモリ2へのデータの書き込みを実行する。メモリコントローラ3は、バッファ9に格納されているデータをフラッシュメモリ2に書き込むときには、論理ブロックと仮想ブロックの対応関係に基づいて、書き込み先の仮想ブロックを特定する。なお、それぞれの論理ブロックと対応関係にある仮想ブロック
は、アドレス変換テーブルに基づいて特定される。また、それぞれの仮想ブロックを構成する物理ブロックは、仮想ブロック管理テーブルに基づいて特定される。そして、メモリコントローラ3は、このようにして特定された互いに異なるフラッシュメモリ2a〜2hに属する物理ブロック対して並行してデータの書き込みを行う。
メモリコントローラ3は、バッファ9に格納されているデータをフラッシュメモリ2に書き込むときに、書き込むデータに対応する論理ブロックに仮想ブロックが割り当てられていない場合、又はその論理ブロックと対応関係にある仮想ブロックを構成する物理ブロック内にデータを書き込むための空き領域(データが書き込まれていない物理ページ)が無い場合には、その論理ブロックに対してデータが書き込まれていない仮想ブロック(以下、データが書き込まれていない仮想ブロックを「空き仮想ブロック」と言う)を新たに割り当てる。つまり、このような場合、メモリコントローラ3は、空き仮想ブロックの検索を行い、検出された空き仮想ブロックを、書き込むデータに対応する論理ブロックに新たに割り当てる。
尚、それぞれの仮想ブロックを構成する8個の物理ブロックについては予め定められているので、空き仮想ブロックの検索も仮想ブロック単位で行われる。この検索は、例えば、図5に示したような検索テーブルを用いて行われる。この検索テーブルでは、各ビットに1個の仮想ブロックが割り当てられている。そして、各ビットの論理値(“0”又は“1”)は、そのビットに割り当てられている仮想ブロックが空き仮想ブロックであるか否かを示している。例えば、空き仮想ブロックが論理値の“1”に割り当てられている場合について説明する(この場合、図5で、1番上の行の8ビットに下位ビット側から順番にVBN#0〜#7の仮想ブロックが割り当てられているとすれば、VBN#7の仮想ブロックは空き仮想ブロックであるが、VBN#0〜#6の仮想ブロックは空き仮想ブロックではない)。空き仮想ブロックの検索では、論理値が“1”のビットの検索が検索テーブル上で行われる。また、空き仮想ブロックにデータが書き込まれたときは、その仮想ブロックに対応する検索テーブル上のビットの論理値が“1”から“0”に変更される。一方、データが格納されていた仮想ブロックが空き仮想ブロックになったときは、その仮想ブロックに対応する検索テーブル上のビットの論理値が“0”から“1”に変更される。
次に、仮想ブロック内の仮想ページについて説明する。メモリコントローラ3は、仮想ブロックが複数の仮想ページで構成されているものとして、仮想ブロック内の仮想ページを管理している。尚、仮想ブロック内の仮想ページと物理ブロック内の物理ページとの対応関係は予め定められている。つまり、それぞれの仮想ブロック内の仮想ページに付けられた通し番号(それぞれの仮想ブロック内での通し番号)である仮想ページ番号(VPN)と、それぞれの物理ブロック内の物理ページに付けられた通し番号(それぞれの物理ブロック内での通し番号)である物理ページ番号(PPN)との対応関係は予め定められている。図6は、本実施形態における仮想ページと物理ページとの対応関係を示している。それぞれの仮想ページは、8個の物理ページで構成されている。例えば、VPN#0の仮想ページは8個のフラッシュメモリ2a〜2h内のPPN#0の物理ページで構成され、VPN#1の仮想ページは8個のフラッシュメモリ2a〜2h内のPPN#1の物理ページで構成され、以下同様に、VPN#63の仮想ページは8個のフラッシュメモリ2a〜2h内のPPN#63の物理ページで構成されている。
また、メモリコントローラ3は、論理ブロック内の論理セクタ領域を複数個まとめた領域(複数セクタの領域)を論理ページとして管理している。つまり、論理ブロックは複数個の論理ページで構成され、論理ページは複数個の論理セクタ領域で構成されている。本実施形態では、64個の論理セクタ領域をまとめた64セクタの領域が1個の論理ページとして管理されている。メモリコントローラ3は、論理ページと仮想ページとの対応関係を、論理ブロック内の論理ページに付けられた通し番号(それぞれの論理ブロック内での通し番号)である論理ページ番号(LPN)と、仮想ブロック内の仮想ページに付けられた通し番号(それぞれの仮想ブロック内での通し番号)である仮想ページ番号(VPN)との対応関係を示すページ情報テーブルに基づいて把握する。図7は、ページ情報テーブルの一例であり、例えば、LPN#0の論理ページがVPN#0の仮想ページに対応し、LPN#1の論理ページがVPN#1の仮想ページに対応することを示している。また、この論理ページと仮想ページとの対応関係を管理するため、それぞれの仮想ページを構成する8個の物理ページの冗長領域には、これらの物理ページに書き込まれたデータに対応する論理ページのLPNが書き込まれるようにすることが好ましい。尚、仮想ページと、その仮想ページを構成する物理ページとの対応関係は予め定められているので、8個の物理ページのうち、いずれか1個の物理ページの冗長領域にだけLPNを書き込むようにしてもよい。
本実施形態では、1個の物理ページのユーザー領域が8個のセクタ領域(第1〜8セクタ領域)に分割されて使用されている。ここで、仮想ページを構成するそれぞれの物理ページに含まれる第1〜8セクタ領域と、それぞれの論理ページに含まれる64個の論理セクタ領域との対応関係について説明する。図8に示したように1個の論理ブロックは、LPN#0〜#63の論理ページで構成されており、それぞれ論理ページには64個の論理セクタ領域が含まれている。ここで、説明の便宜のため、それぞれ論理ページに含まれている論理セクタ領域に、その論理ページ内での通し番号を付ける。以下、この通し番号をセクタ番号(SN)と言う。図9は、それぞれ論理ページに含まれているSN#0〜#63の論理セクタ領域と、それぞれの物理ページに含まれる第1〜8セクタ領域との対応関係を示している。仮想ページは、8個のフラッシュメモリ2a〜2hにそれぞれ属する8個の物理ページで構成されている。本実施形態では、SN#0の論理セクタ領域がフラッシュメモリ2aに属する物理ページ内の第1セクタ領域に対応し、SN#1の論理セクタ領域がフラッシュメモリ2bに属する物理ページ内の第1セクタ領域に対応し、以下同様に、SN#2〜#7の論理セクタ領域がフラッシュメモリ2c〜2hに属するそれぞれの物理ページページ内の第1セクタ領域に対応している。続いて、SN#8の論理セクタ領域がフラッシュメモリ2aに属する物理ページ内の第2セクタ領域に対応し、SN#9の論理セクタ領域がフラッシュメモリ2bに属する物理ページ内の第2セクタ領域に対応し、以下同様に、SN#10〜#15の論理セクタ領域がフラッシュメモリ2c〜2hに属するそれぞれの物理ページページ内の第2セクタ領域に対応している。このようにして、SN#0〜#63の論理セクタ領域が、8個の物理ページ内の第1〜8セクタ領域に対応している。
次に、本実施形態におけるバッファ9について説明する。本実施形態では、論理ページと同じ容量の領域に分割して、バッファ9上の領域を使用している。以下、論理ページと同じ容量に分割された領域を「バッファページ」と言い、バッファページに付けられた通し番号をバッファページ番号(BPN)と言う。
図10は、本実施形態のバッファ9(図10(a))及びバッファ9上の領域を管理するためのバッファ管理テーブル(図10(b))を示している。バッファ9はBPN#0〜#31のバッファページで構成され、BPN#0〜#15のバッファページは書き込み用のバッファページに、BPN#16〜#31のバッファページは読み出し用のバッファページに割り当てられている。つまり、BPN#0〜#15のバッファページには、ホストシステム4から与えられたデータが格納され、BPN#16〜#31のバッファページには、フラッシュメモリ2から読み出されたデータが格納される。それぞれのバッファページに格納されているデータに対応する論理ページは、バッファ管理テーブルで管理されている。つまり、バッファページに格納されるデータは、バッファ管理テーブルに基づいて論理ページ単位で管理されている。
このバッファ管理テーブルには、それぞれのバッファページに格納されているデータに対応する論理ページを示す情報(例えば、論理ページのLPN及びその論理ページが属する論理ブロックのLBNを示す情報)が書き込まれている。言い換えれば、それぞれのバッファページに割り当てられている論理ページを示す情報が書き込まれている。例えば、図10(b)のバッファ管理テーブルには、BPN#0のバッファページに、LBN#0の論理ブロックに属するLPN#4の論理ページが割り当てられていることが示されている。更に、BPN#1のバッファページには、LBN#2の論理ブロックに属するLPN#0の論理ページが割り当てられ、BPN#2のバッファページには、LBN#0の論理ブロックに属するLPN#5の論理ページが割り当てられていることが示されている。尚、BPN#4及びBPN7のバッファページには、いずれの論理ページも割り当てられておらず、空き領域になっている。
ホストシステム4から与えられるデータをバッファ9に格納するときには、そのデータに対応する論理ページが割り当てられているバッファページの有無が判断される。そのデータに対応する論理ページが割り当てられているバッファページが有る場合には、そのバッファページにホストシステム4から与えられるデータが格納される。従って、ホストシステム4から与えられるデータと同じ論理ページに対応する旧データ(更新前のデータ)がバッファページに格納されている場合に、旧データに対してホストシステム4から与えられるデータが上書きされる。
ホストシステム4から与えられるデータに対応する論理ページが割り当てられているバッファページが無い場合には、空き領域になっているバッファページ(以下、空き領域になっているバッファページを「空きバッファページ」と言う)に、そのデータに対応する論理ページが新たに割り当てられる。そして、そのデータに対応する論理ページが新たに割り当てられたバッファページに、そのデータが書き込まれる。また、新たに割り当てられた論理ページが属する論理ブロックのLBN及びその論理ページのLPNを示す情報が、バッファ管理テーブル上の、その論理ページが割り当てられた空きバッファページに対応する箇所に書き込まれる。
メモリコントローラ3は、それぞれのバッファページの優先順位を管理している。この優先順位管理では、書き込み用のバッファページ(BPN#0〜#15のバッファページ)の優先順位と、読み出し用のバッファページ(BPN#16〜#31のバッファページ)の優先順位とが別々に管理されている。
書き込み用のバッファページの優先順位管理では、優先順位を管理するために、それぞれの書き込み用のバッファページ(BPN#0〜#15のバッファページ)内の領域について、ホストシステム4から与えられた書き込みデータが格納されているか否かがセクタ単位で管理されている。本実施形態のバッファページは64セクタの領域で構成されているので、それぞれのバッファページには、セクタ単位の領域が64個含まれている。従って、セクタ単位の領域毎に、ホストシステム4から与えられた書き込みデータが格納されているか否かが管理されている。更に、64個のセクタ単位の領域(つまりバッファページ)のうち書き込みデータが格納されている領域(以下、「書込み済み領域」と言う)の個数が、バッファページ毎に管理されている。メモリコントローラ3は、書込み済み領域の個数が多いバッファページを優先して、バッファページからフラッシュメモリへのデータの書き込みを行う。言い換えれば、データの書込み元とされるバッファページとして、書込み済み領域の個数が多い(例えば最も多い)バッファページが優先される。書き込み用のバッファページの優先順位管理では、書込み済み領域の個数が多いバッファページの優先順位を高くし、書込み済み領域の個数が少ないバッファページの優先順位を低くする優先順位の管理が行われる。このような優先順位管理が行われることにより、書き換えられるデータが多く格納されているバッファページから順番にバッファページに格納されているデータがフラッシュメモリに書き込まれることになる。つまり、この優先順位管理では、BPN#0〜#15のバッファページに格納されているいずれかの論理ページに対応するデータのうち、書き換えるデータを多く含んでいる論理ページに対応するデータが格納されているバッファページの優先順位が高くなる。尚、バッファページの64個のセクタ単位の領域のうち書き込みデータが格納されていない領域(以下、「非書込み済み領域」と言う)には、そのバッファページ(以下、この段落において「対象バッファページ」と言う)に割り当てられた論理ページ(以下、この段落において「対象論理ページ」と言う)に対応するデータであって、フラッシュメモリに書き込まれているデータが補充されなければならない。つまり、対象論理ページに対応するデータがフラッシュメモリに書き込まれている場合には、そのデータがフラッシュメモリから読み出され、読み出されたデータのうちの、非書込み済み領域に対応するデータ(具体的には、対象論理ページ内の、非書込み済み領域に対応する領域に対応したデータ)、要するに書き換えられないデータが、対象ページバッファ内の非書込み済み領域に格納されなければならない。この書き換えられないデータの補充は何時行われてもよいが、対象バッファページからフラッシュメモリへのデータの書き込みが行われる前に完了させておかなければならない。
読み出し用のバッファページの優先順位管理では、バッファページに格納されているデータがホストシステム4から読み出されたときに(バッファページに格納されているデータがホストシステム4に供給されたときに)、そのバッファページの優先順位が最上位になるように、優先順位が管理されている。つまり、この優先順位管理では、データが読み出された時点が現在時刻に近い方から遠い方に向かって、優先順位が順次低くなっていく。従って、現在時刻から最も近い時点にデータが読み出されたバッファページの優先順位が最上位になり、現在時刻から最も遠い時点にデータが読み出されたバッファページの優先順位が最下位になる。
本実施形態における書き込み用のバッファページの管理では、常に所定個数の空きバッファページが存在するようにバッファページの管理が行われている。従って、空きバッファページに論理ページが新たに割り当てられ、空きバッファページの個数が減少するときは、減少する個数と同じ個数のバッファページを新たな空きバッファページにするために、バッファページからフラッシュメモリ2へのデータの書き込みが行われる。このデータ書き込みでは、優先順位が高いバッファページの方から順番に、バッファページからフラッシュメモリ2へのデータの書き込みが行われる。例えば、2個のバッファページを新たな空きバッファページにする場合には、優先順位が上位側から1番目と2番目のバッファページに格納されているデータがフラッシュメモリ2に書き込まれ、これらのバッファページが新たな空きバッファページになる。また、バッファ管理テーブル上の新たに空きバッファページになったバッファページに対応する箇所には、対応する論理ページが存在しないことを示す情報が書き込まれる。
このような書き込み用のバッファページの管理が行われているため、通常の動作状態においては、新たな空きバッファページを確保するときにだけ、書き込み用のバッファページからフラッシュメモリ2へのデータの書き込みが行われる。又、バッファページに格納されているデータをフラッシュメモリ2に退避する必要が生じたときにも、バッファページからフラッシュメモリ2へのデータの書き込みが行われる。例えば、ホストシステム4がシャットダウンされるときには、書き込み用のバッファページに格納されているデータがフラッシュメモリ2に書き込まれる。
本実施形態における読み出し用のバッファページの管理では、優先順位が低いバッファページの方から順番に、格納されているデータの置き換えが行われる。尚、空きバッファページが存在する場合には、その空きバッファページにフラッシュメモリ2から読み出されたデータが保存されるため、空きバッファページが存在しないときの動作について説明する。
ホストシステム4から読み出しを指示するアクセス指示が与えられた場合、メモリコントローラ3は、そのアクセス指示で指定されたアクセス対象の領域が属する論理ページに対応するデータが、書き込み用のバッファページ又は読み出し用のバッファページに格納されているか否かを、バッファ管理テーブルに基づいて判断する。アクセス対象の領域が属する論理ページに対応するデータが、いずれかのバッファページに格納されている場合には、そのバッファページに格納されているデータがホストシステム4に供給される。尚、アクセス対象の領域が属する論理ページに対応するデータが、書き込み用のバッファページと読み出し用のバッファページの双方に格納されている場合は、書き込み用のバッファページに格納されているデータが優先される。
アクセス対象の領域が属する論理ページに対応するデータが、いずれのバッファページにも格納されていない場合には、その論理ページに対応するデータがフラッシュメモリ2から読み出され、優先順位が最下位の読み出し用のバッファページに格納される。そして、その読み出し用のバッファページに格納されたデータがホストシステム4に供給される。また、その読み出し用のバッファページに格納されたデータに対応する論理ページが属する論理ブロックのLBN及びその論理ページのLPNを示す情報が、バッファ管理テーブル上の、その読み出し用のバッファページに対応する箇所に書き込まれる。尚、その読み出し用のバッファページに格納されたデータがホストシステム4に供給されることにより、その読み出し用のバッファページの優先順位が最上位に変更される。
例えば、ホストシステム4から与えられた読み出しを指示するアクセス指示で指定されたアクセス対象の領域が属する論理ページが、LBN#3の論理ブロックに属するLPN#7の論理ページであったときに、その論理ページ対応するデータが、いずれのバッファページにも格納されていない場合には、その論理ページに対応するデータがフラッシュメモリ2から読み出され、優先順位が最下位の読み出し用のバッファページに格納される。このとき、優先順位が最下位の読み出し用のバッファページがBPN#20のバッファページであった場合には、BPN#20のバッファページに、LBN#3の論理ブロックに属するLPN#7の論理ページに対応するデータが格納される。また、BPN#20のバッファページに、LBN#3の論理ブロックに属するLPN#7の論理ページに対応するデータが格納されることにより、バッファ管理テーブル上の、BPN#20のバッファページに対応する箇所に、その論理ページが属する論理ブロックのLBNである#3と、その論理ページのLPNである#7を示す情報が書き込まれる。尚、BPN#20のバッファページに格納されているデータがホストシステム4に供給されることにより、BPN#20のバッファページの優先順位が最上位に変更される。
次に、ホストシステム4から供給されるデータをバッファ9に格納する動作、及びバッファ9に格納されているデータをフラッシュメモリ2に書き込む動作について具体的に説明する。例えば、ホストシステム4から書き込みを指示するアクセス指示が与えられ、そのアクセス指示で指定されたLBAの範囲が、LBN#1の論理ブロック内のLPN#8〜#11に対応する場合について説明する。つまり、LBN#1の論理ブロック内のLPN#8〜#11の論理ページに対応するデータがホストシステム4から供給され、そのデータが書き込み用のバッファページに格納される場合について説明する。尚、以下の説明では、2個の空きバッファページが常に存在するように書き込み用のバッファページの管理が行われているものとして説明する。
書き込みを指示するアクセス指示が与えられたときに、メモリコントローラ3は、LBN#1の論理ブロック内のLPN#8〜#11の論理ページに割り当てられている書き込み用のバッファページが存在するか否かを判断する。図10(b)に示したように、LBN#1の論理ブロック内のLPN#8の論理ページがBPN#3のバッファページに、LBN#1の論理ブロック内のLPN#9の論理ページがBPN#5のバッファページに割り当てられている場合、LPN#8の論理ページに対応するデータはBPN#3のバッファページに、LPN#9の論理ページに対応するデータはBPN#5のバッファページに格納される。また、LBN#1の論理ブロック内のLPN#10の論理ページとLPN#11の論理ページに割り当てられている書き込み用のバッファページが存在しない場合、これらの論理ページに対応するデータは、空きバッファページであるBPN#4のバッファページとBPN#7のバッファページに格納される。つまり、LBN#1の論理ブロック内のLPN#10の論理ページにBPN#4のバッファページが割り当てられ、LBN#1の論理ブロック内のLPN#11の論理ページにBPN#7のバッファページが割り当てられる。
本実施形態のメモリコントローラ3は、ホストシステム4から供給されるデータの格納先のバッファページを管理するために、格納先管理テーブルを備えている。図11(a)は、この格納先管理テーブルの一例であり、格納先のバッファページを示すBPNを設定するための16個のエントリーを備えている。これらのエントリーに格納先のバッファページを示すBPNが順次設定され、ポインタによって指定されているエントリーに設定されているBPNに基づいて、ホストシステム4から供給されるデータの格納先のバッファページが選択される。
LBN#1の論理ブロック内のLPN#8〜#11の論理ページに対応するデータは、ホストシステム4からLPNの順番で供給される。従って、ホストシステム4から最初に供給される1論理ページ分のデータ(LPN#8の論理ページに対応するデータ)はBPN#3のバッファページに、2番目に供給される1論理ページ分のデータ(LPN#9の論理ページに対応するデータ)はBPN#5のバッファページに、3番目に供給される1論理ページ分のデータ(LPN#10の論理ページに対応するデータ)はBPN#4のバッファページに、4番目に供給される1論理ページ分のデータ(LPN#11の論理ページに対応するデータ)はBPN#7のバッファページに格納されるように格納先管理テーブルの設定が行われる。つまり、図11(a)に示したように、#4のエントリーにBPNとして#3が設定され、#5のエントリーにBPNとして#5が設定され、#6のエントリーにBPNとして#4が設定され、#7のエントリーにBPNとして#7が設定される。このようにエントリーに格納先のバッファページを示すBPNを設定するときには、ポインタにより指定されているエントリーから順番にBPNの設定が行われる。従って、図11(a)に示したように、ポインタにエントリーを指定する番号として#4が設定される場合には、#4のエントリーからBPNの設定が行われる。尚、ポインタに設定されている番号は、1論理ページ分のデータがバッファページに格納される毎に次の番号に進められる。
本実施形態のメモリコントローラ3は、ホストシステム4から供給されるデータをバッファ9に格納する処理と、バッファ9に格納されているデータをフラッシュメモリ2に書き込む処理とを並行して実行する。つまり、バッファ9へのデータ入力(ホストシステム4から供給されるデータのデータ入力)とバッファ9からのデータ出力(フラッシュメモリ2に供給するデータのデータ出力)とが時分割で実行される。ここでは、空きバッファページであったBPN#4のバッファページとBPN#7のバッファページにホストシステム4から供給されるデータ格納されるため、新たに2個の空きバッファページを確保しなければならない。そこで、優先順位が最上位のバッファページ(書き込み用のバッファページ)と上位側から2番目のバッファページ(書き込み用のバッファページ)に格納されているデータをフラッシュメモリ2に書き込む処理が実行される。
優先順位が最上位のバッファページがBPN#6のバッファページで、上位側から2番目のバッファページがBPN#9のバッファページであった場合には、BPN#6のバッファページとBPN#9のバッファページを空きバッファページにするために、BPN#6のバッファページとBPN#9のバッファページに格納されているデータをフラッシュメモリ2に書き込む処理が実行される。尚、バッファページに、そのバッファページに対応する論理ページ内の全ての論理セクタ領域に対応するデータが格納されている場合には、バッファページに格納されているデータが、そのままフラッシュメモリ2に書き込まれる。一方、論理ページ内の一部の論理セクタ領域に対応するデータが、そのバッファページに格納されていないときには、その一部の論理セクタ領域に対応するデータがフラッシュメモリ2から読み出され、読み出されたデータにより、そのバッファページに格納されていないデータが補充される。但し、その一部の論理セクタ領域に対応するデータがフラッシュメモリ2にも格納されていない場合には、バッファページに格納されていないデータの補充は行われない。このように一部の論理セクタ領域に対応するデータが、フラッシュメモリ2から読み出されたデータにより補充される場合には、補充が行われた後にバッファページに格納されているデータが、フラッシュメモリ2に書き込まれる。
本実施形態のメモリコントローラ3は、書き込み処理の際に、フラッシュメモリ2に供給するデータの格納元のバッファページを管理するために、格納元管理テーブルを備えている。図11(b)は、この格納元管理テーブルの一例であり、格納元のバッファページを示すBPNを設定するための16個のエントリーを備えている。これらのエントリーに格納元のバッファページを示すBPNが順次設定され、ポインタによって指定されているエントリーに設定されているBPNに基づいて、フラッシュメモリ2に供給されるデータの格納元のバッファページが選択される。
BPN#6のバッファページとBPN#9のバッファページに格納されているデータをフラッシュメモリ2に書き込む処理を実行する場合には、図11(b)に示したように、#1のエントリーにBPNとして#6が設定され、#2のエントリーにBPNとして#9が設定される。格納元のバッファページを示すBPNを設定するときにも、ポインタにより指定されているエントリーから順番にBPNの設定が行われる。従って、図11(b)に示したように、ポインタにエントリーを指定する番号として#1が設定される場合には、#1のエントリーからBPNの設定が行われる。尚、ポインタに設定されている番号は、1論理ページ分のデータがバッファページからフラッシュメモリ2に供給される毎に次の番号に進められる。
バッファ9に格納されているデータがフラッシュメモリ2に書き込まれ、ホストシステム4から供給されるデータがバッファ9に格納されることにより、いずれかのバッファページについて、論理ページとの対応関係が変化した場合には、バッファ管理テーブルの更新が行われる。ここでは、空きバッファページであったBPN#4のバッファページとBPN#7のバッファページが、LBN#1の論理ブロック内のLPN#10の論理ページとLPN#11の論理ページに割り当てられる。また、BPN#6のバッファページとBPN#9のバッファページが空きバッファページになる。従って、この変更に対応したバッファ管理テーブルの更新が行われる。
このバッファ管理テーブルの更新では、図12に示したように、BPN#4のバッファページに対応する個所に書き込まれている空きバッファページを示す情報(NA)が、LBN#1の論理ブロック内のLPN#10の論理ページ示す情報に変更される。BPN#7のバッファページに対応する個所に書き込まれている空きバッファページを示す情報(NA)が、LBN#1の論理ブロック内のLPN#11の論理ページ示す情報に変更される。BPN#6のバッファページ及びBPN#9のバッファページに対応する個所は、空きバッファページを示す情報(NA)に変更される。
次に、それぞれ仮想ブロックを構成する物理ブロックを設定する方法について説明する。本実施形態では、まず、互いに異なるフラッシュメモリ2a〜2bに属するPBAが同一の8個の物理ブロックで暫定的に仮想ブロックを構成する。つまり、フラッシュメモリ2a〜2bのいずれかに属するPBA#0の物理ブロック8個でVBN#0の仮想ブロックが構成され、PBA#1の物理ブロック8個でVBN#1の仮想ブロックが構成され、以下同様にしてフラッシュメモリ2a〜2b内の先頭から末尾までの物理ブロックで仮想ブロックが構成される。以下、このようにして構成された暫定的な仮想ブロックを「暫定仮想ブロック」と言う。
このようにして構成された暫定仮想ブロックについて、それぞれの暫定仮想ブロックを構成する8個の物理ブロックの中に不良ブロックが含まれているか否かが判断され、8個の物理ブロックの中に1個以上の不良ブロックが含まれている暫定仮想ブロックが抽出される。この抽出処理で抽出されなかった暫定仮想ブロックについては、実際に使用可能な仮想ブロックとして確定される。ここで確定された仮想ブロックについては、PBAが同一の8個の物理ブロックで構成されている。
上記の抽出処理で抽出された暫定仮想ブロックについては、それぞれの暫定仮想ブロックを構成する8個の物理ブロックの中に少なくとも1個の不良ブロックが含まれている。これらの暫定仮想ブロックのうち、一部の暫定仮想ブロックを実際に使用可能な仮想ブロックにするため、暫定仮想ブロック間で不良ブロックと良品ブロックとを交換する暫定仮想ブロックの組み換えが行われる。この暫定仮想ブロックの組み換えを、図13を参照して説明する。図13は、上記の抽出処理で抽出された暫定仮想ブロックを示しており、不良ブロックに該当する物理ブロックのPBNは鉤括弧(「」)で括られている。この例では、VBN#7の暫定仮想ブロックに属するフラッシュメモリ2c内のPBA#7の物理ブロック、VBN#15の暫定仮想ブロックに属するフラッシュメモリ2f内のPBA#15の物理ブロック、VBN#101の暫定仮想ブロックに属するフラッシュメモリ2b内のPBA#101の物理ブロック等が不良ブロックとして示されている。
本実施形態では、VBNが小さい暫定仮想ブロックに属する不良ブロックから優先的に良品ブロックと交換される。一方、この不良ブロックと良品ブロックとの交換で、良品ブロックを提供する側になる暫定仮想ブロックは、VBNが大きい側の暫定仮想ブロックが優先的に選択される。また、この不良ブロックと良品ブロックとの交換は、同一のフラッシュメモリチップ内で行われる。つまり、ラッシュメモリ2a内の不良ブロックはラッシュメモリ2a内の良品ブロックと交換され、ラッシュメモリ2b内の不良ブロックはラッシュメモリ2b内の良品ブロックと交換され、以下同様にして、ラッシュメモリ2h内の不良ブロックはラッシュメモリ2h内の良品ブロックと交換される。
図13に示した例では、VBN#7の暫定仮想ブロックに属するフラッシュメモリ2c内のPBA#7の物理ブロック(不良ブロック)が、VBN#1016の暫定仮想ブロックに属するフラッシュメモリ2c内のPBA#1016の物理ブロック(良品ブロック)と交換される。この交換により、VBN#7の暫定仮想ブロックが実際に使用可能な仮想ブロックになる。次に、VBN#15の暫定仮想ブロックに属するフラッシュメモリ2f内のPBA#15の物理ブロック(不良ブロック)が、VBN#1016の暫定仮想ブロックに属するフラッシュメモリ2f内のPBA#1016の物理ブロック(良品ブロック)と交換される。この交換により、VBN#15の暫定仮想ブロックが実際に使用可能な仮想ブロックになる。この不良ブロックと良品ブロックとの交換は、交換を行っても暫定仮想ブロックを実際に使用可能な仮想ブロックにすることができなくなるまで続けられる。そして、この不良ブロックと良品ブロックとの交換により、良品ブロックの提供を受けた暫定仮想ブロック(その暫定仮想ブロックに属していた不良ブロックが他の暫定仮想ブロックに属していた不良ブロックと交換されることにより、実際に使用することができるようになった暫定仮想ブロック)が、実際に使用可能な仮想ブロックとして確定される。
実際に使用可能な仮想ブロックとして確定されなかった暫定仮想ブロックについては、使用しない仮想ブロック(以下、「保留仮想ブロック」と言う)として管理される。この保留仮想ブロックは、図14に示したような保留仮想ブロック管理テーブルで管理(登録)されている。この保留仮想ブロック管理テーブルには、保留仮想ブロックとして管理される仮想ブロックのVBNを示す情報と、それぞれの保留仮想ブロックに属する良品ブロックのPBAを示す情報が記載されている。図14に示した保留仮想ブロック管理テーブルには、#690、#740、#773、#862、#900、#997及び#773の番号を示す情報が、保留仮想ブロックのVBNを示す情報として記載されている。従って、この保留仮想ブロック管理テーブルを参照することにより、VBN#690、#740、#773、#862、#900、#997及び#773の仮想ブロックが保留仮想ブロックであることが分かる。また、それぞれの保留仮想ブロックに属する良品ブロックのPBAを示す情報が、その良品ブロックが属する保留仮想ブロックに関連付けて記載されている。尚、それぞれの保留仮想ブロックに属する不良ブロック(その保留仮想ブロックに初めから属していた不良ブロックと、不良ブロックと良品ブロックとの交換により、その保留仮想ブロックに属するようになった不良ブロックを含む)については、不良ブロックであることを示す情報(DB)が記載される。
また、保留仮想ブロック管理テーブルに登録されている保留仮想ブロックに属する良品ブロックの個数をフラッシュメモリチップ毎(フラッシュメモリ2a〜2hについて)に集計した集計値がメモリコントローラ3によって保持される。例えば、図14に示したような7個の保留仮想ブロックが保留仮想ブロック管理テーブルに登録されているときに、良品ブロックの個数をフラッシュメモリチップ毎に集計した場合について説明する。
フラッシュメモリ2aについては、VBN#690、#740及び#773の保留仮想ブロックに属する物理ブロックが良品ブロックなので、フラッシュメモリ2aに関する良品ブロックの集計値は3個になる。フラッシュメモリ2bについては、VBN#690、#740及び#773及び#900の保留仮想ブロックに属する物理ブロックが良品ブロックなので、フラッシュメモリ2bに関する良品ブロックの集計値は4個になる。以下同様に、フラッシュメモリ2cに関する良品ブロックの集計値は4個になり、フラッシュメモリ2dに関する良品ブロックの集計値は5個になり、フラッシュメモリ2eに関する良品ブロックの集計値は0個になり、フラッシュメモリ2fに関する良品ブロックの集計値は2個になり、フラッシュメモリ2gに関する良品ブロックの集計値は4個になり、フラッシュメモリ2hに関する良品ブロックの集計値は3個になる。ここで、フラッシュメモリチップ毎の良品ブロックの集計値の最小値が0個でなければ、保留仮想ブロック間で不良ブロックと良品ブロックとの交換を行うことにより、実際に使用可能な仮想ブロックを再構成することができる。
また、使用されていた仮想ブロックに属するいずれかの物理ブロックが不良ブロックになった場合には、その仮想ブロックが保留仮想ブロックとして、保留仮想ブロック管理テーブルに追加登録される。保留仮想ブロック管理テーブルに保留仮想ブロックが追加登録されたときには、フラッシュメモリチップ毎の良品ブロックの集計値が更新される。この更新の結果、フラッシュメモリチップ毎の良品ブロックの集計値の最小値が1個以上になった場合、この例では、フラッシュメモリ2eに関する良品ブロックの集計値が1個以上になった場合、保留仮想ブロック間で不良ブロックと良品ブロックとの交換を行うことにより、実際に使用可能な仮想ブロックを再構成することができる。
保留仮想ブロック間で不良ブロックと良品ブロックとの交換を行うことにより、実際に使用可能な仮想ブロックを再構成した場合には、その再構成された仮想ブロックの登録(保留仮想ブロック管理テーブルへの登録)が取消される。この登録の取消では、登録が取消された仮想ブロックに関する情報が、保留仮想ブロック管理テーブルから削除される。
尚、仮想ブロックの再構成は、保留仮想ブロック管理テーブルに登録されている保留仮想ブロックに関するフラッシュメモリチップ毎の良品ブロックの集計値のうち、一番小さい集計値が1個以上になったときに、逐次行っても良いが、その集計値に対して閾値を設定し、その集計値が閾値以上になったときに仮想ブロックの再構成を行うようにしてもよい。
ここで、保留仮想ブロック管理テーブルに登録されている保留仮想ブロックに関するフラッシュメモリチップ毎の良品ブロックの集計値のうち、一番小さい集計値が閾値以上になったときには、それぞれのフラッシュメモリチップ毎の良品ブロックの集計値は、いずれも閾値以上になる。従って、フラッシュメモリ2aの集計値、フラッシュメモリ2bの集計値、フラッシュメモリ2cの集計値、フラッシュメモリ2dの集計値、フラッシュメモリ2eの集計値、フラッシュメモリ2fの集計値、フラッシュメモリ2gの集計値及びフラッシュメモリ2hの集計値のうちで一番小さい集計値が閾値以上になったか否かを判断することと、これの集計値が全て閾値以上になったか否かを判断することは、実質的に同じことを判断しているこことになる。例えば、閾値が“5”であり、フラッシュメモリ2eの集計値が一番小さい場合に、フラッシュメモリ2eの集計値が5以上になったときには、他の集計値はフラッシュメモリ2eの集計値以上なので、当然、他の集計値も5以上になっている。
例えば、閾値を“5”とした場合の実際の処理では、メモリコントローラ3は、フラッシュメモリ2aの集計値からフラッシュメモリ2hの集計値までの8個の集計値から一番小さい集計値を見つけ、その集計値が閾値である“5”以上であるか否かを判断して仮想ブロックの再構成を実行するか否かを決定してもよいが、フラッシュメモリ2aの集計値からフラッシュメモリ2hの集計値までの8個の集計値を、閾値である“5”と順次比較していき、8個の集計値が全て5以上であったときに仮想ブロックの再構成を実行してもよい。
次に、バッファ9の構成について詳細に説明する。本実施形態では、論理ページの容量を仮想ページに含まれるユーザー領域と同じ容量とし、論理ページ単位でバッファ9に格納されるデータを管理している。つまり、本実施形態では、1個の仮想ページに含まれるユーザー領域の容量が64セクタであるため、バッファ9が64セクタの領域が含まれるバッファページに分割され、それぞれのバッファページに格納されるデータに対応する論理ページが管理されている。
図15は、1個のバッファページに含まれる64セクタの領域を示している。この64セクタの領域には、論理ページに含まれるSN#0〜#63の論理セクタ領域が、SNの順番で割り当てられている。つまり、バッファページ内の先頭領域から末尾領域に向かって、SN#0〜#63の論理セクタ領域が、SNの順番で割り当てられている。尚、それぞれ論理ページは、ホストシステム4側で管理されているアドレス空間のLBAが連続する64セクタの領域が対応している。従って、LBA#n〜#(n+63)が対応している論理ページの場合、この論理ページ内のSN#0の論理セクタ領域はLBA#nに対応し、SN#1の論理セクタ領域はLBA#(n+1)に対応し、以下同様にSN#63の論理セクタ領域はLBA#(n+63)に対応する。
図16は、BPN#0〜#15のバッファページに格納されているデータを示している。メモリコントローラ3は、論理ページが割り当てられたバッファページ内の領域にホストシステム4から与えられた書き込みデータ(WD)が格納されているか否かをセクタ単位で管理している。例えば、図16に示したBPN#0のバッファページの場合、SN#0〜#3の論理セクタ領域、SN#12〜#15の論理セクタ領域、SN#44〜#47の論理セクタ領域及びSN#60〜#63の論理セクタ領域に対応するバッファページ内の領域には書き込みデータ(WD)が格納されていない。この書き込みデータ(WD)が格納されているか否かの管理については、例えば、それぞれのビットが64セクタの領域のいずれかに対応する64ビットの情報を保持し、それぞれのビットの論理値(“0”又は“1”)で書き込みデータ(WD)が格納されているか否かを示すようにすればよい。
また、フラッシュメモリ2に対するデータの書き込みが仮想ページ単位で行われるため、フラッシュメモリ2に格納されているデータの更新は、論理ページ単位で行われる。つまり、論理ページ単位で旧データが新データに置き換えられる。従って、バッファページからフラッシュメモリ2内の仮想ページへのデータの書き込みを行うときには、バッファページ内の書き込みデータ(WD)が格納されていない領域に、更新されないデータが補充される。そして、このデータ補充が完了した後に、バッファページから仮想ページへのデータの書き込みが実行される。
例えば、BPN#3のバッファページに格納されている書き込みデータ(WD)を仮想ページに書き込む場合について説明する。図16に示した例では、BPN#3のバッファページ内のSN#0〜#3の論理セクタ領域及びSN#60〜#63の論理セクタ領域に対応する領域には書き込みデータ(WD)が格納されていない。従って、BPN#3のバッファページに割り当てられている論理ページに対応するデータがフラッシュメモリ2から読み出され、この読み出されたデータのうち、SN#0〜#3の論理セクタ領域に対応するデータ及びSN#60〜#63の論理セクタ領域に対応する読み出しデータ(RD)が、それぞれの読み出しデータ(RD)に対応するバッファページ内の領域に格納される。そして、図17に示したように、BPN#3のバッファページ内のSN#0〜#3の論理セクタ領域及びSN#60〜#63の論理セクタ領域に対応する領域に、読み出しデータ(RD)が格納された後に、BPN#3のバッファページに格納されている書き込みデータ(WD)及び読み出しデータ(RD)がフラッシュメモリ2に書き込まれる。
次に、図18を参照して、バッファページ内の書き込みデータ(WD)が格納されていない領域に、更新されないデータを効率良く補充する方法について説明する。ホストシステム4から書き込みを指示するアクセス指示が与えられたときに、そのアクセス指示で指定されたアクセス対象の領域が属する論理ページが割り当てられているバッファページが無いとき(そのアクセス指示で指定されたアクセス対象のLBAに対応する論理ページに割り当てられているバッファページが無いとき)、空きバッファページに対してその論理ページが新たに割り当てられる。ここでは、アクセス対象の領域が属する論理ページ(論理ページA)が、空きバッファページであるBPN#4のバッファページに割り当てられる。
ホストシステム4から与えられる論理ページAに対応する書き込みデータ(WD)は、図18(a)に示したように、BPN#4のバッファページに格納される。この処理に並行して、フラッシュメモリ2に格納されている論理ページAに対応するデータが読み出され、この読み出しデータ(RD)は、図18(b)に示したように、空きバッファページであるBPN#7のバッファページに格納される。つまり、論理ページAに対応する新データである書き込みデータ(WD)は、BPN#4のバッファページに格納され、論理ページAに対応する旧データである読み出しデータ(RD)は、BPN#7のバッファページに格納される。
図18(a)に示した例では、論理ページAに対応する書き込みデータ(WD)は、SN#12〜#47の論理セクタ領域に対応する領域には格納されているが、SN#0〜#11の論理セクタ領域及びSN#48〜#63の論理セクタ領域に対応する領域には格納されていない。このため、SN#0〜#11の論理セクタ領域及びSN#48〜#63の論理セクタ領域に対応する領域には、論理ページAに対応する旧データである読み出しデータ(RD)が格納される。この論理ページAに対応する旧データである読み出しデータ(RD)は、BPN#7のバッファページに格納されているので、BPN#7のバッファページからBPN#4のバッファページへのデータ転送により、SN#0〜#11の論理セクタ領域及びSN#48〜#63の論理セクタ領域に対応する領域に、論理ページAに対応する旧データである読み出しデータ(RD)が格納される。つまり、このデータ転送では、図18(c)に示したように、BPN#7のバッファページのSN#0〜#11の論理セクタ領域及びSN#48〜#63の論理セクタ領域に対応する領域に格納されている読み出しデータ(RD)が、BPN#4のバッファページのSN#0〜#11の論理セクタ領域及びSN#48〜#63の論理セクタ領域に対応する領域に転送される。
尚、旧データである読み出しデータ(RD)のデータ転送については、アクセス指示で指定されるアクセス対象の領域が属する論理ページが変わった後に行うことが好ましい。つまり、論理ページAに対応するデータの書き込みを指示するアクセス指示が与えられている間は、このデータ転送を行わずに、論理ページA以外の論理ページに対応するデータの書き込みを指示するアクセス指示が与えられた後に、このデータ転送を開始するようにすることが好ましい。また、上記の説明では、読み出しデータ(RD)の格納先のバッファページから、書き込みデータ(WD)の格納先のバッファページにデータ転送を行ったが、書き込みデータ(WD)の格納先のバッファページから、読み出しデータ(RD)の格納先のバッファページにデータ転送を行った方が、データ転送するデータの容量が小さい場合には、書き込みデータ(WD)の格納先のバッファページから、読み出しデータ(RD)の格納先のバッファページにデータ転送を行うようにしてもよい。例えば、図18(a)に示した例で、BPN#4のバッファページに格納された書き込みデータ(WD)の容量が32セクタ未満の場合には、BPN#4のバッファページからBPN#7のバッファページにデータ転送(書き込みデータ(WD)を転送するデータ転送)を行うようにしてもよい。このようにBPN#4のバッファページからBPN#7のバッファページにデータ転送が行われた場合には、データ転送が完了した後に、論理ページAをBPN#7のバッファページに割り当てる割り当ての変更が行われる。
このように、書き込みデータ(WD)の格納先のバッファページと読み出しデータ(RD)の格納先のバッファページに同じ論理ページに対応するデータを格納する処理を並行して行い、その後、書き込みデータ(WD)の格納先のバッファページと読み出しデータ(RD)の格納先のバッファページとの間でデータ転送を行うことにより、バッファページ内の書き込みデータ(WD)が格納されていない領域に、更新されないデータを効率良く補充することができる。言い換えれば、このデータ転送により、旧データの1部が新データで置き換えられた更新データが効率良く作成される。更に、書き込みデータ(WD)の格納先のバッファページに格納されたデータのセクタ数(容量)をカウントし、そのセクタ数がバッファページに含まれる領域のセクタ数(容量)の1/2以上であるか否かを判断し、1/2以上である場合には、読み出しデータ(RD)の格納先のバッファページから書き込みデータ(WD)の格納先のバッファページへのデータ転送を行い、1/2未満である場合には、書き込みデータ(WD)の格納先のバッファページから読み出しデータ(RD)の格納先のバッファページへのデータ転送を行うことにより、更に効率が向上する。
以上、本発明の実施形態を説明したが、これは本発明の説明のための例示であって、本発明の範囲をこの実施形態にのみ限定する趣旨ではない。本発明の要旨を逸脱しない範囲内において種々変更を加え得ることは勿論である。例えば、仮想ブロック管理テーブル、バッファ管理テーブル、格納先管理テーブル、格納元管理テーブル及び保留仮想ブロック管理テーブルの構成については、それぞれのテーブルで管理している情報を管理することができる範囲で適宜変更することができる。また、仮想ブロックを構成する物理ブロックの個数や、論理ページ内の論理セクタ領域と仮想ページを構成する物理ページ内のセクタ領域との対応関係は適宜設定することができる。また、保留仮想ブロック管理テーブルに登録されている保留仮想ブロックについて、仮想ブロックの再構成を実行するときの条件についても適宜設定することができる。
本発明の一実施形態によるフラッシュメモリシステムの概略構成を示すブロック図である。 8個のフラッシュメモリとバッファとの間のデータ入出力を説明するための図である。 仮想ブロック管理テーブルの構成例を示す図である。 アドレス変換テーブルの構成例を示す図である。 検索テーブルの構成例を示す図である。 仮想ページと物理ページとの対応関係を示す図である。 ページ情報テーブルの構成例を示す図である。 論理ページと論理セクタ領域を説明するための図である。 仮想ページを構成する物理ページ内のセクタ領域と論理ページ内の論理セクタ領域との対応関係を示す図である。 バッファ及びバッファ管理テーブルの構成例を示す図である。 格納先管理テーブルと格納元管理テーブルの構成例を示す図である。 バッファ管理テーブルの更新を説明するための図である。 暫定仮想ブロックの組み換えを説明するための図である。 保留仮想ブロック管理テーブルの構成例を示す図である。 バッファページを説明するための図である。 バッファを説明するための図である。 バッファページに格納されているデータを示す図である。 バッファページ間のデータ転送を説明するための図である。
符号の説明
1…フラッシュメモリシステム、2…フラッシュメモリ、3…メモリコントローラ、6…マイクロプロセッサ

Claims (7)

  1. ホストシステムから与えられる指示情報に基づいて、物理ページ単位でデータの書き込み及び読み出しが行われ、複数個の物理ページを含む物理ブロック単位でデータの消去が行われるフラッシュメモリに対するアクセスを制御するメモリコントローラであって、
    ホストシステムから与えられるセクタ単位のアドレスが割り当てられている論理セクタ領域を複数個集めた論理ページを形成する論理ページ形成手段と、
    前記論理ページ単位のデータが格納されるデータ格納領域を複数個備えたデータ格納手段と、
    前記論理ページと前記データ格納領域との対応関係を管理する対応管理手段と、
    前記対応管理手段により管理されている前記論理ページと前記データ格納領域との対応関係に従って、ホストシステムから与えられるデータを前記データ格納領域に格納する制御手段と、
    前記データ格納領域内のホストシステムから与えられたデータが格納されている領域のセクタ数を、前記データ格納領域毎に管理する領域管理手段と、
    前記データ格納領域に格納されているデータをフラッシュメモリに書き込むデータ書き込み手段とを備え、
    前記データ書き込み手段は、複数個の前記データ格納領域のうち、ホストシステムから与えられたデータが格納されている領域のセクタ数が多い前記データ格納領域を優先して、前記データ格納領域に格納されているデータをフラッシュメモリに書き込むことを特徴とするメモリコントローラ。
  2. フラッシュメモリに格納されているデータを読み出し、前記データ格納領域に格納するデータ読み出し手段と、
    異なる前記データ格納領域間で、一方の前記データ格納領域から他方の前記データ格納領域へのデータ転送を制御するデータ転送手段とを備え、
    前記データ読み出し手段は、前記制御手段が、いずれかの前記論理ページに対応するデータである第1のデータを、いずれかの前記データ格納領域である第1のデータ格納領域に格納するのに並行して、前記第1のデータと同じ前記論理ページに対応する第2のデータをフラッシュメモリから読み出し、読み出した前記第2のデータを、前記第1のデータ格納領域とは異なる前記データ格納領域である第2のデータ格納領域に格納し、
    前記データ転送手段は、前記第1のデータ格納領域と前記第2のデータ格納領域との間でデータ転送を行うことにより、前記第2のデータの一部を前記第1のデータで置き換えたデータを作成することを特徴とする請求項1に記載のメモリコントローラ。
  3. 前記データ転送手段は、前記第1のデータの容量が前記論理ページの容量の1/2未満のときは、前記第1のデータを前記第2のデータ格納領域に転送し、前記第1のデータの容量が前記論理ページの容量の1/2以上のときは、前記第2のデータの一部を前記第1のデータ格納領域に転送することを特徴とする請求項2に記載のメモリコントローラ。
  4. 請求項1乃至3のいずれか1項に記載のメモリコントローラと、このメモリコントローラにより制御されるフラッシュメモリを備えるフラッシュメモリシステム。
  5. ホストシステムから与えられる指示情報に基づいて、物理ページ単位でデータの書き込み及び読み出しが行われ、複数個の物理ページを含む物理ブロック単位でデータの消去が行われるフラッシュメモリに対するアクセスを制御するフラッシュメモリの制御方法であって、
    ホストシステムから与えられるセクタ単位のアドレスが割り当てられている論理セクタ領域を複数個集めた論理ページを形成する論理ページ形成ステップと、
    前記論理ページ単位のデータが格納されるデータ格納領域と、前記論理ページとの対応関係を管理する対応管理ステップと、
    前記対応管理ステップにより管理されている前記論理ページと前記データ格納領域との対応関係に従って、ホストシステムから与えられるデータを前記データ格納領域に格納する制御ステップと、
    前記データ格納領域内のホストシステムから与えられたデータが格納されている領域のセクタ数を、前記データ格納領域毎に管理する領域管理ステップと、
    前記データ格納領域に格納されているデータをフラッシュメモリに書き込むデータ書き込みステップとを備え、
    前記データ書き込みステップでは、複数個の前記データ格納領域のうち、ホストシステムから与えられたデータが格納されている領域のセクタ数が多い前記データ格納領域を優先して、前記データ格納領域に格納されているデータがフラッシュメモリに書き込まれることを特徴とするフラッシュメモリの制御方法。
  6. フラッシュメモリに格納されているデータを読み出し、前記データ格納領域に格納するデータ読み出しステップと、
    異なる前記データ格納領域間で、一方の前記データ格納領域から他方の前記データ格納領域へのデータ転送を制御するデータ転送ステップとを備え、
    前記データ読み出しステップでは、前記制御ステップにより、いずれかの前記論理ページに対応するデータである第1のデータが、いずれかの前記データ格納領域である第1のデータ格納領域に格納されるのに並行して、前記第1のデータと同じ前記論理ページに対応する第2のデータをフラッシュメモリから読み出し、読み出した前記第2のデータを前記第1のデータの格納先になっている前記データ格納領域とは異なる前記データ格納領域である第2のデータ格納領域に格納し、
    前記データ転送ステップでは、前記第1のデータ格納領域と前記第2のデータ格納領域との間でデータ転送を行うことにより、前記第2のデータの一部を前記第1のデータで置き換えたデータを作成することを特徴とする請求項5に記載のフラッシュメモリの制御方法。
  7. 前記データ転送ステップでは、前記第1のデータの容量が前記論理ページの容量の1/2未満のときは、前記第1のデータを前記第2のデータ格納領域に転送し、前記第1のデータの容量が前記論理ページの容量の1/2以上のときは、前記第2のデータの一部を前記第1のデータ格納領域に転送することを特徴とする請求項6に記載のフラッシュメモリの制御方法。
JP2008266409A 2008-09-30 2008-10-15 メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法 Expired - Fee Related JP4632180B2 (ja)

Priority Applications (4)

Application Number Priority Date Filing Date Title
JP2008266409A JP4632180B2 (ja) 2008-10-15 2008-10-15 メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法
US12/585,911 US8214579B2 (en) 2008-09-30 2009-09-29 Memory controller, flash memory system with memory controller, and method of controlling flash memory
US12/574,768 US8239615B2 (en) 2008-09-30 2009-10-07 Memory controller, flash memory system with memory controller, and method of controlling flash memory
US12/588,311 US8219742B2 (en) 2008-10-15 2009-10-13 Memory controller, flash memory system with memory controller, and method of controlling flash memory

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2008266409A JP4632180B2 (ja) 2008-10-15 2008-10-15 メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法

Publications (2)

Publication Number Publication Date
JP2010097333A true JP2010097333A (ja) 2010-04-30
JP4632180B2 JP4632180B2 (ja) 2011-02-16

Family

ID=42099931

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008266409A Expired - Fee Related JP4632180B2 (ja) 2008-09-30 2008-10-15 メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法

Country Status (2)

Country Link
US (1) US8219742B2 (ja)
JP (1) JP4632180B2 (ja)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011242833A (ja) * 2010-05-14 2011-12-01 Tdk Corp メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法
JP2011258071A (ja) * 2010-06-10 2011-12-22 Sony Corp 通信装置、及び、通信方法
JP2014530420A (ja) * 2011-09-20 2014-11-17 アップル インコーポレイテッド ソリッドステートドライブのメモリ装置への論理的アドレスの適応マッピング
JP2016509325A (ja) * 2013-03-14 2016-03-24 マイクロン テクノロジー, インク. トレーニング、データ再構築および/またはシャドウィングを含むメモリシステムおよび方法

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9390049B2 (en) * 2011-06-03 2016-07-12 Micron Technology, Inc. Logical unit address assignment
US10515014B1 (en) 2015-06-10 2019-12-24 EMC IP Holding Company LLC Non-uniform memory access (NUMA) mechanism for accessing memory with cache coherence
US11010054B1 (en) 2015-06-10 2021-05-18 EMC IP Holding Company LLC Exabyte-scale data processing system
US10713334B1 (en) 2015-06-10 2020-07-14 EMC IP Holding Company LLC Data processing system with a scalable architecture over ethernet
US10496284B1 (en) * 2015-06-10 2019-12-03 EMC IP Holding Company LLC Software-implemented flash translation layer policies in a data processing system
US10503416B1 (en) 2015-06-10 2019-12-10 EMC IP Holdings Company LLC Flash memory complex with a replication interface to replicate data to another flash memory complex of a data processing system
TWI615770B (zh) * 2015-11-17 2018-02-21 群聯電子股份有限公司 資料存取方法、記憶體控制電路單元與記憶體儲存裝置
US11288007B2 (en) * 2019-05-16 2022-03-29 Western Digital Technologies, Inc. Virtual physical erase of a memory of a data storage device

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH06349286A (ja) * 1993-06-04 1994-12-22 Matsushita Electric Ind Co Ltd フラッシュメモリ用書き込み制御方法および制御装置
JPH0784886A (ja) * 1993-09-13 1995-03-31 Matsushita Electric Ind Co Ltd キャッシュメモリ制御方法およびキャッシュメモリ制御装置
JP2000305860A (ja) * 1999-04-23 2000-11-02 Toshiba Corp 情報記憶システム及び同システムに於ける記憶制御方法
JP2007034944A (ja) * 2005-07-29 2007-02-08 Sony Corp コンピュータシステム
JP2008197981A (ja) * 2007-02-14 2008-08-28 Toshiba Corp 半導体記憶装置
JP2010086107A (ja) * 2008-09-30 2010-04-15 Tdk Corp メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6370619B1 (en) * 1998-06-22 2002-04-09 Oracle Corporation Managing partitioned cache
US6658533B1 (en) * 2000-09-21 2003-12-02 Intel Corporation Method and apparatus for write cache flush and fill mechanisms
US7020739B2 (en) 2000-12-06 2006-03-28 Tdk Corporation Memory controller, flash memory system having memory controller and method for controlling flash memory device
US7073048B2 (en) * 2002-02-04 2006-07-04 Silicon Lease, L.L.C. Cascaded microcomputer array and method
JP4082913B2 (ja) 2002-02-07 2008-04-30 株式会社ルネサステクノロジ メモリシステム
US20050144516A1 (en) 2003-12-30 2005-06-30 Gonzalez Carlos J. Adaptive deterministic grouping of blocks into multi-block units
US7328317B2 (en) * 2004-10-21 2008-02-05 International Business Machines Corporation Memory controller and method for optimized read/modify/write performance
US7877552B2 (en) * 2005-05-24 2011-01-25 Marathon Technologies Corporation Symmetric multiprocessor fault tolerant computer system
JP4946102B2 (ja) 2006-03-10 2012-06-06 ソニー株式会社 不揮発性メモリシステムおよび不揮発性メモリの管理方法

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH06349286A (ja) * 1993-06-04 1994-12-22 Matsushita Electric Ind Co Ltd フラッシュメモリ用書き込み制御方法および制御装置
JPH0784886A (ja) * 1993-09-13 1995-03-31 Matsushita Electric Ind Co Ltd キャッシュメモリ制御方法およびキャッシュメモリ制御装置
JP2000305860A (ja) * 1999-04-23 2000-11-02 Toshiba Corp 情報記憶システム及び同システムに於ける記憶制御方法
JP2007034944A (ja) * 2005-07-29 2007-02-08 Sony Corp コンピュータシステム
JP2008197981A (ja) * 2007-02-14 2008-08-28 Toshiba Corp 半導体記憶装置
JP2010086107A (ja) * 2008-09-30 2010-04-15 Tdk Corp メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011242833A (ja) * 2010-05-14 2011-12-01 Tdk Corp メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法
US8316208B2 (en) 2010-05-14 2012-11-20 Tdk Corporation Memory controller, flash memory system with memory controller, and method of controlling flash memory
JP2011258071A (ja) * 2010-06-10 2011-12-22 Sony Corp 通信装置、及び、通信方法
JP2014530420A (ja) * 2011-09-20 2014-11-17 アップル インコーポレイテッド ソリッドステートドライブのメモリ装置への論理的アドレスの適応マッピング
US9417803B2 (en) 2011-09-20 2016-08-16 Apple Inc. Adaptive mapping of logical addresses to memory devices in solid state drives
JP2016509325A (ja) * 2013-03-14 2016-03-24 マイクロン テクノロジー, インク. トレーニング、データ再構築および/またはシャドウィングを含むメモリシステムおよび方法
US10664171B2 (en) 2013-03-14 2020-05-26 Micron Technology, Inc. Memory systems and methods including training, data organizing, and/or shadowing
US11487433B2 (en) 2013-03-14 2022-11-01 Micron Technology, Inc. Memory systems and methods including training, data organizing, and/or shadowing

Also Published As

Publication number Publication date
US8219742B2 (en) 2012-07-10
US20100095054A1 (en) 2010-04-15
JP4632180B2 (ja) 2011-02-16

Similar Documents

Publication Publication Date Title
JP4632180B2 (ja) メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法
JP4844639B2 (ja) メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法
JP4666080B2 (ja) メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法
US8214579B2 (en) Memory controller, flash memory system with memory controller, and method of controlling flash memory
US9639475B2 (en) Buffer memory management method, memory control circuit unit and memory storage device
US8694748B2 (en) Data merging method for non-volatile memory module, and memory controller and memory storage device using the same
JP4666081B2 (ja) メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法
US20140075099A1 (en) Control method and memory system of non-volatile semiconductor memory
JP4702387B2 (ja) メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法
US8074128B2 (en) Block management and replacement method, flash memory storage system and controller using the same
JP2011242833A (ja) メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法
JP4737223B2 (ja) メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法
JP4582232B2 (ja) メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法
JP4720891B2 (ja) メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法
JP4636005B2 (ja) メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法
JP4840415B2 (ja) メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法
JP2012068765A (ja) メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法
JP4710918B2 (ja) メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法
JP2010092200A (ja) メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法
JP4952741B2 (ja) メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法
JP2012068764A (ja) メモリコントローラ及びメモリコントローラを備える不揮発性メモリシステム、並びに不揮発性メモリの制御方法
JP4952742B2 (ja) メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法
JP4636046B2 (ja) メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法
JP6260395B2 (ja) メモリコントローラ、メモリシステム及びメモリ制御方法
JP2009301491A (ja) メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20100728

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100803

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100929

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20101025

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

R150 Certificate of patent or registration of utility model

Ref document number: 4632180

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20101107

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20131126

Year of fee payment: 3

LAPS Cancellation because of no payment of annual fees