Deprecated: The each() function is deprecated. This message will be suppressed on further calls in /home/zhenxiangba/zhenxiangba.com/public_html/phproxy-improved-master/index.php on line 456
JP7705446B2 - メモリコントローラおよびフラッシュメモリシステム - Google Patents
[go: Go Back, main page]

JP7705446B2 - メモリコントローラおよびフラッシュメモリシステム - Google Patents

メモリコントローラおよびフラッシュメモリシステム Download PDF

Info

Publication number
JP7705446B2
JP7705446B2 JP2023504810A JP2023504810A JP7705446B2 JP 7705446 B2 JP7705446 B2 JP 7705446B2 JP 2023504810 A JP2023504810 A JP 2023504810A JP 2023504810 A JP2023504810 A JP 2023504810A JP 7705446 B2 JP7705446 B2 JP 7705446B2
Authority
JP
Japan
Prior art keywords
virtual
flash memory
logical
page
data
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.)
Active
Application number
JP2023504810A
Other languages
English (en)
Other versions
JPWO2023100212A1 (ja
Inventor
謙一 田窪
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
Publication of JPWO2023100212A1 publication Critical patent/JPWO2023100212A1/ja
Application granted granted Critical
Publication of JP7705446B2 publication Critical patent/JP7705446B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • G06F3/0613Improving I/O performance in relation to throughput
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Description

本発明は、メモリコントローラおよびフラッシュメモリシステムに関する。
不揮発性メモリとしてのフラッシュメモリ等を制御するメモリコントローラや、そのようなメモリコントローラと不揮発性メモリとを備えたメモリシステム(フラッシュメモリシステム等)が、提案されている(例えば、特許文献1参照)。
特表2021-520021号公報
ところで、このようなメモリコントローラ等では一般に、データの書き込み効率を向上させることが求められている。データの書き込み効率を向上させることが可能な、メモリコントローラおよびフラッシュメモリシステムを提供することが望ましい。
本発明の一実施の形態に係るメモリコントローラは、フラッシュメモリを制御するメモリコントローラであって、フラッシュメモリに対するデータのアクセス処理と、このアクセス処理に応じて所定の領域管理情報を更新する更新処理と、をそれぞれ実行するマイクロプロセッサを、備えたものである。このマイクロプロセッサは、論理ページの論理アドレスと、フラッシュメモリにおける複数のチャネルに属する複数の物理ブロックにより構成される仮想ブロック内に含まれる、仮想ページの仮想アドレスと、の間の対応関係を規定する上記領域管理情報に基づいて、上記アクセス処理の際のアクセス対象となる仮想アドレスを決定し、決定した仮想アドレスに基づいて、上記アクセス処理としてのデータの書き込み処理を実行する際には、この書き込み処理を実行するごとに、キャッシュ領域上において上記領域管理情報の編集を行うと共に、各回の書き込み処理に対して間引いた頻度にて、編集後の領域管理情報を、フラッシュメモリ上に書き込み保存することにより、領域管理情報に対する上記更新処理を実行する。また、上記仮想ブロックに含まれる複数の仮想ページにはそれぞれ、物理ページごとにスペア領域が設けられていると共に、上記マイクロプロセッサは、仮想ページ単位で書き込み処理を実行する際に、書き込み対象となる仮想ページ内のスペア領域に対して、対応する論理アドレスを示す論理アドレス情報も書き込む。更に、上記マイクロプロセッサは、フラッシュメモリ上に領域管理情報が書き込み保存される前の時点で、フラッシュメモリおよびメモリコントローラの電源が、オン状態からオフ状態へと移行した場合には、その後に電源がオフ状態からオン状態へと復帰する際の、起動処理において、書き込み途中の仮想ブロック内に含まれるスペア領域からそれぞれ、論理アドレス情報を読み出すと共に、キャッシュ領域上において、読み出した論理アドレス情報を利用して、未更新分の領域管理情報の編集を行う。
本発明の一実施の形態に係るフラッシュメモリシステムは、上記本発明の一実施の形態に係るメモリコントローラと、上記フラッシュメモリと、を備えたものである。
本発明の一実施の形態に係るメモリコントローラおよびフラッシュメモリシステムによれば、データの書き込み効率を向上させることが可能となる。
本発明の一実施の形態に係るフラッシュメモリシステム等の概略構成例を表すブロック図である。 図1に示したフラッシュメモリにおけるアドレス空間の概略構成例を表す模式図である。 実施の形態に係る論理アドレスと物理アドレスとの対応関係の一例を表す模式図である。 実施の形態に係る仮想ブロックおよび仮想ページ等の構成例を表す模式図である。 図4に示した仮想ページの詳細構成例を表す模式図である。 実施の形態に係る論理仮想変換テーブルおよび管理テーブルの構成例を表す模式図である。 実施の形態に係るテーブル全展開モード時の各テーブルの配置例を表す模式図である。 実施の形態に係るテーブルキャッシュモード時の各テーブルの配置例を表す模式図である。 実施の形態に係るライト処理(テーブル全展開モード時)の一例を表す流れ図である。 図9Aに続く処理例を表す流れ図である。 実施の形態に係るライト処理(テーブルキャッシュモード時)の一例を表す流れ図である。 図10Aに続く処理例を表す流れ図である。 実施の形態に係るリード処理(テーブル全展開モード時)の一例を表す流れ図である。 実施の形態に係るリード処理(テーブルキャッシュモード時)の一例を表す流れ図である。 実施の形態に係る起動処理(テーブル全展開モード時)の一例を表す流れ図である。 実施の形態に係る起動処理(テーブルキャッシュモード時)の一例を表す流れ図である。
以下、本発明の実施の形態について、図面を参照して詳細に説明する。なお、説明は以下の順序で行う。
1.実施の形態(論理仮想変換テーブルを間引いた頻度で書き込み保存する例)
2.変形例
<1.実施の形態>
[概略構成]
図1は、本発明の一実施の形態に係るフラッシュメモリシステム(フラッシュメモリシステム3)の概略構成例を、外部のホストシステム4とともに、ブロック図で表したものである。このフラッシュメモリシステム3は、例えば、SSD(Solid State Drive)や、eMMC(embedded Multi Media Card)等に相当するシステムである。
図1に示したように、フラッシュメモリシステム3は、フラッシュメモリ1と、メモリコントローラ2と、外部RAM(Random Access Memory)30とを、備えている。なお、ホストシステム4とメモリコントローラ2(後述するホストインタフェース26)との間は、外部バス82を介して相互に接続され、メモリコントローラ2(後述するメモリインタフェース21)とフラッシュメモリ1との間は、内部バス81を介して相互に接続されている。また、メモリコントローラ2(後述するRAMインタフェース22)と外部RAM30との間は、内部バス80を介して相互に接続されている。
(A.ホストシステム4)
ホストシステム4は、フラッシュメモリシステム3を二次記憶装置として使用する、ホストシステムである。ホストシステム4は、このホストシステム4全体の動作を制御するためのCPU(Central Processing Unit)や、フラッシュメモリシステム3と間での各種情報の授受を担うコンパニオンチップ等を、備えている。このようなホストシステム4は、例えば、パーソナルコンピュータ(PC)やデジタルスチルカメラ等の、情報処理装置である。
ホストシステム4はまた、所定のコマンドをフラッシュメモリシステム3へと供給することで、フラッシュメモリシステム3に対して各種処理の実行を指示するようになっている。具体的には、このコマンドとは、フラッシュメモリシステム3内のメモリコントローラ2がフラッシュメモリ1に対して、各種処理の実行を指示するためのコマンドである。つまり、フラッシュメモリ1は、メモリコントローラ2から与えられるコマンドに従って、各種動作を行うようになっている。
(B.フラッシュメモリ1)
フラッシュメモリ1は、不揮発性メモリであり、1または2以上のフラッシュメモリチップ(チップ)を用いて構成されている。図1の例では、フラッシュメモリ1全体として、複数(4つ)のチップ(フラッシュメモリ10,11,12,13)が、設けられている。なお、以下では、フラッシュメモリ10~13の総称として、基本的にはフラッシュメモリ1として説明する。このフラッシュメモリ1は、例えば、NAND型フラッシュメモリとなっている。このNAND型のフラッシュメモリでは、ページ単位でデータのアクセス処理(書き込み処理または読み出し処理)が行われると共に、複数ページにて構成されるブロック単位で、データの消去処理(一斉消去)が行われる。
ちなみに、フラッシュメモリ1におけるページおよびブロックはそれぞれ、一般に、物理ページ、物理ブロックとも呼ばれる。これは、ホストシステム4がデータを取り扱うときの単位である、論理ページおよび論理ブロックと区別するためである。
なお、これらの論理ページや論理ブロック、物理ページや物理ブロック等の詳細については、後述する(図2~図5等)。
このようなフラッシュメモリ1は、レジスタと、複数のメモリセルが配列されたメモリセルアレイと、を備えている。メモリセルアレイは、複数のメモリセル群と、ワード線と、を有している。各メモリセル群は、複数のメモリセルが直列に接続されたものである。ワード線は、メモリセル群のうちから特定のメモリセルを選択するためのものである。ワード線を介して選択されたメモリセルと、レジスタとの間で、レジスタから選択されたメモリセルへのデータの書き込み処理(ライト処理)、または、選択されたメモリセルからレジスタへのデータの読み出し処理(リード処理)が、行われるようになっている。
(C.メモリコントローラ2)
メモリコントローラ2は、ホストシステム4からの命令(前述したコマンド)に従って、フラッシュメモリ1を制御するものである。具体的には、メモリコントローラ2は、例えば、ホストシステム4から書き込み要求があった場合には、ホストシステム4から受信したデータを、フラッシュメモリ1に書き込むようになっている。また、メモリコントローラ2は、例えば、ホストシステム4から読み出し要求があった場合には、フラッシュメモリ1からデータを読み出して、ホストシステム4へと送信するようになっている。
また、本実施の形態では、詳細は後述するが、メモリコントローラ2とフラッシュメモリ1との間、および、メモリコントローラ2とホストシステム4との間においてそれぞれ、複数のチャネルを用いた並列データ転送が、行われるようになっている。
このようなメモリコントローラ2は、例えば図1に示したように、メモリインタフェース21、RAMインタフェース22、ECC(Error Correcting Code)ブロック23、バッファ24、テーブルRAM25、ホストインタフェース26、および、マイクロプロセッサ27を、有している。また、これらのメモリインタフェース21、RAMインタフェース22、ECCブロック23、バッファ24、テーブルRAM25、ホストインタフェース26およびマイクロプロセッサ27はそれぞれ、システムバス20を介して相互に接続されている。
メモリインタフェース21は、フラッシュメモリ1と通信するためのインタフェースである。このメモリインタフェース21は、例えば、ONFI(Open NAND Flash Interface)規格に準拠したメモリインタフェースである。
RAMインタフェース22は、外部RAM30と通信するためのインタフェースである。なお、この外部RAM30は、例えば、DRAM(Dynamic Random Access Memory)などの揮発性メモリにより構成されており、各種データが一時的に格納されるようになっている。ただし、このような外部RAM30が、フラッシュメモリシステム3内に設けられていないようにしてもよい。
ECCブロック23は、フラッシュメモリ1に書き込むデータに付加される、ECC(エラーコレクティングコード)を生成するブロックである。また、ECCブロック23は、フラッシュメモリ1から読み出したデータに付加されたエラーコレクティングコードに基づいて、その読み出したデータに含まれる誤りを、検出および訂正するようになっている。
バッファ24は、フラッシュメモリ1から読み出されたデータ、および、フラッシュメモリ1に書き込むデータをそれぞれ、一時的に保持する部分である。具体的には、フラッシュメモリ1から読み出されたデータは、ホストシステム4が受け取り可能な状態となるまで、バッファ24上に保持されるようになっている。また、フラッシュメモリ1に書き込まれるデータは、このフラッシュメモリ1が書き込み可能な状態となるまで、バッファ24上に保持されるようになっている。
テーブルRAM25は、フラッシュメモリ1の制御に必要な情報を一時的に格納する部分であり、例えばSRAM(Static Random Access Memory)などの揮発性メモリにより構成されている。具体的には、テーブルRAM25には、後述する各種テーブル(論理仮想変換テーブル51および管理テーブル52:図6参照)が一時的に格納されていると共に、このテーブルRAM25上において、これらの各種テーブルが適宜更新されるようになっている。
なお、このようなテーブルRAM25は、本発明における「キャッシュ領域」の一具体例に対応している。
ホストインタフェース26は、ホストシステム4と通信するためのインタフェースである。このホストインタフェース26は、例えば、SATA(Serial Advanced Technology Attachment)規格に準拠したインタフェース、または、PCIe(Peripheral Component Interconnect-Express)規格に準拠したインタフェースなどである。
マイクロプロセッサ27は、メモリコントローラ2の全体の動作を制御する回路である。具体的には、マイクロプロセッサ27は、フラッシュメモリ1に対するデータのアクセス処理(書き込み処理または読み出し処理)と、そのようなアクセス処理に応じて上記した各種テーブルを更新する更新処理と、をそれぞれ実行するようになっている。
なお、このようなデータのアクセス処理、および、各種テーブルの更新処理等の詳細については、後述する(図9A~図14)。
[フラッシュメモリ1のアドレス空間]
続いて、図2,図3を参照して、フラッシュメモリ1のアドレス空間(論理アドレス空間および物理アドレス空間)について、詳細に説明する。
図2は、フラッシュメモリ1におけるアドレス空間の概略構成例を、模式的に表したものである。
図2に示したように、フラッシュメモリ1は、前述した“チップ”、“ブロック(物理ブロック)”、“ページ(物理ページ)”および“セクタ(物理セクタ)”により構成されている。フラッシュメモリ1は、少なくとも1個のチップ(図1の例では、複数のチップ)を含んでおり、各チップは、複数の物理ブロックを含んでいる。
物理ブロックは、フラッシュメモリ1にて行われるデータ消去処理における、処理単位である。このデータ消去処理では、同じ物理ブロックに属する複数の物理ページに記憶されているデータが、一斉に消去されるようになっている。各物理ブロックは、例えば、64個、128個または256個の物理ページを、含んでいる。
物理ページは、フラッシュメモリ1にて行われるデータの書き込み処理および読み出し処理における、処理単位である。このようなデータの書き込み処理や読み出し処理では一般に、メモリセルが物理ページ単位で選択され、レジスタからメモリセルへのデータの書き込みや、メモリセルからレジスタへのデータの読み出しがそれぞれ、物理ページ単位で行われるようになっている。
物理ページは、例えば、4個、8個または16個の物理セクタを、含んでいる。各物理セクタは、512バイトのデータ(1セクタのデータ)を格納するために割り当てられた領域である。また、各物理セクタに格納される1セクタのデータは、そのデータのECC(エラーコレクティングコード)とともに、格納されている。
なお、物理ページには、1セクタのデータを格納する領域と、その1セクタのデータに対応するECCを格納する領域とを、交互に割り当てるようにしてもよい。また、物理ページにおいて、4セクタのデータを格納する領域を連続して割り当て、その後に、その4セクタのデータに対応するECCを格納する領域を、連続して割り当てるようにしてもよい。つまり複数セクタのデータと、そのデータのECCとを、数セクタ単位で交互に格納されるように領域を割り当てるようにしてもよい。
ここで、例えば図2に示したように、各チップ、各物理ブロック、各物理ページ、および、各物理セクタには、それぞれ、以下のような通し番号が割り当てられている。すなわち、チップ番号CHIP#0,CHIP#1,CHIP#2,…、物理ブロック番号PB#0,PB#1,PB#2,…、物理ページ番号PP#0,PP#1,PP#2,…、および、物理セクタ番号PS#0,PS#1,PS#2,…がそれぞれ、通し番号として割り当てられている。このようなチップ番号、物理ブロック番号、物理ページ番号および物理セクタ番号はそれぞれ、フラッシュメモリ1に格納されているデータの格納場所を示す情報である、物理アドレスとして用いられている。
より詳細には、チップ番号CHIP#0,CHIP#1,CHIP#2,…は、フラッシュメモリ1内における各チップを特定するための番号であり、物理ブロック番号PB#0,PB#1,PB#2,…は、チップ内における各物理ブロックを特定するための番号である。また、物理ページ番号PP#0,PP#1,PP#2,…は、物理ブロック内における各物理ページを特定するための番号であり、物理セクタ番号PS#0,PS#1,PS#2,…は、物理ページ内における各物理セクタを特定するための番号である。
更に、チップ番号と物理ブロック番号とを組み合わせることで、フラッシュメモリ1内における物理ブロックを特定することができる。例えば、チップ番号と物理ブロック番号とを組み合わせた番号である、“CHIP#0、PB#1”は、CHIP#0のチップに含まれる複数の物理ブロックのうちの、PB#1の物理ブロックに対応する。同様に、チップ番号と物理ブロック番号と物理ページ番号とを組み合わせることで、フラッシュメモリ1内における物理ページを特定することができる。また、チップ番号と物理ブロック番号と物理ページ番号と物理セクタ番号とを組み合わせることで、フラッシュメモリ1内における物理セクタを特定することができる。
次に、図3を参照して、ホストシステム4側のアドレス空間(論理アドレス空間)において定義された論理アドレスと、フラッシュメモリ1側のアドレス空間(物理アドレス空間)において定義された物理アドレスと、の対応関係について、詳細に説明する。図3は、そのような論理アドレスと物理アドレスとの対応関係の一例を、模式的に表したものである。ここで、論理アドレスは、フラッシュメモリ1に格納されているデータを特定する情報として、ホストシステム4において管理されるアドレスである。
図3に示したように、ホストシステム4側のアドレス空間において、論理アドレスは、LBA(論理ブロックアドレス:Logical Block Address)を用いて定められる。LBAは、512バイトの容量を持った論理セクタに割り当てられたアドレスである。各LBAには、LBA番号LBA#0,LBA#1,LBA#2,…が、通し番号として割り当てられている。ホストシステム4は、このようなLBAを用いて、データのアクセス領域を指定するようになっている。また、メモリコントローラ2は、LBAにより指定されたアクセス領域に基づいて、フラッシュメモリ1内のアクセス領域を特定するようになっている。
ここで、メモリコントローラ2は、LBAを複数個ずつまとめたものを、論理ページとして定義している。この論理ページは、フラッシュメモリ1側での物理ページに対応しており、ホストシステム4側でのデータの書き込み処理および読み出し処理の、処理単位である。各論理ページには、例えば図3に示したように、論理ページ番号LP#0,LP#1,LP#2,…が、通し番号として割り当てられている。このような論理ページ番号LP#0,LP#1,LP#2,…は、論理ページのアドレスに相当する。
1個の論理ページに割り当てられるLBAの個数は、例えば、以下のように設定されている。すなわち、一例として図3では、LBA#0~#7のLBAは、LP#0の論理ページに割り当てられ、LBA#8~#15のLBAは、LP#1の論理ページに割り当てられ、…というように、8個のLBAごとに1個の論理ページが割り当てられている。このようにLBAと論理ページとは番号順に割り当てられているため、LBAと論理ページとの間の対応関係は、単純計算で相互に変換することが可能となっている。
メモリコントローラ2は、このような論理アドレスと物理アドレスとを関係付けるためのアドレス変換を、論理ページ単位で行う。言い換えると、メモリコントローラ2は、ページマッピング方式を用いて、フラッシュメモリ1のアドレスを管理するようになっている。このページマッピング方式は、メモリコントローラ2が複数個のLBAを論理ページの単位にまとめて、アドレスを管理する方式である。
また、各論理ページは、フラッシュメモリ1に含まれる、いずれかの仮想サブページに割り当てられる。この仮想サブページとは、後述する仮想ページ内において、論理ページサイズで分割されたサブページのことであり、複数の物理ページに跨って配置されている(例えば、後述する図5中に示した、仮想サブページVSP参照)。なお、これらの仮想ページおよび仮想サブページ等の詳細については、後述する(図4,図5)。
[フラッシュメモリ1における仮想アドレス等]
続いて、図4,図5を参照して、フラッシュメモリ1における仮想アドレス等について、詳細に説明する。
図4は、本実施の形態に係る仮想ブロックおよび仮想ページ等の構成例を、模式的に表したものである。図5は、図4に示した仮想ページの詳細構成例を、模式的に表したものである。
まず、本実施の形態ではメモリコントローラ2は、前述した一般的な物理ページ単位ではなく、以下説明する、複数の物理ページにより構成される仮想ページ単位で、データの書き込み処理を行う。また、メモリコントローラ2は、以下説明する仮想セクタ単位で、データの読み出し処理を行うようになっている。
ここで、例えば図4に示したように、前述した複数のチャネルCH0~CH3に属する複数の物理ブロックによって、仮想ブロックが構成されている。図4の例では、この仮想ブロックには、仮想ブロック番号VB#M(M:0以上の整数)が、割り当てられている。また、この図4の例では、各チャネルCH0~CH3にはそれぞれ、2つのプレーン(プレーン#0,#1)にそれぞれ属する、2つの物理ブロックが設けられている。そして、各チャネルCH0~CH3内の2つの物理ブロックにはそれぞれ、複数の物理ページ(物理ページ番号PP#0~PP#255からなる、256個の物理ページ)が、含まれている。
ここで、例えば図4に示したように、このような仮想ブロックにおいて、複数のチャネルCH0~CH3に属する複数の物理ページによって、仮想ページが構成されている。図4の例では、この仮想ページには、仮想ページ番号VP#N(N:0~255の整数)が、割り当てられている。具体的には、チャネルCH0に属する物理ページ(プレーン#0,#1にそれぞれ属する、PP#Nの2つの物理ページ)と、チャネルCH1に属する物理ページ(PP#Nの2つの物理ページ)と、チャネルCH2に属する物理ページ(PP#Nの2つの物理ページ)と、チャネルCH3に属する物理ページ(PP#Nの2つの物理ページ)とによって、VP#Nの仮想ページが構成されている。
また、例えば図5に示したように、このVP#Nの仮想ページでは、各物理ページに、複数の仮想セクタが含まれている。この図5の例では、仮想ページ全体として、仮想セクタ番号VS#0~VS#255からなる、256個の仮想セクタが含まれている。そして、これらのVS#0~VS#255の仮想セクタは、仮想ブロック内の複数の物理ページ(図5の例では8個の物理ページ)に対して、仮想セクタ番号の順に、割り当てられている。また、この図5の例では、仮想ページ内の複数の物理ページごとに、論理ページが割り当てられている。具体的には、仮想セクタ番号の順(図5中に示した例では、8個の仮想セクタ番号VS#0~VS#7の順)に、論理ページサイズに分割された、前述した仮想サブページVSPが、割り当てられている。更に、この図5の例では、仮想ページ内の複数の物理ページごとに、後述する論理アドレス情報が書き込まれる、スペア領域Asが設けられている。
[各種テーブルの構成]
続いて、図6~図8を参照して、前述したテーブルRAM25上において一時的に格納および更新がなされる、各種テーブル(論理仮想変換テーブル51および管理テーブル52)の構成について、詳細に説明する。
図6は、本実施の形態に係る論理仮想変換テーブル51(図6(A))および管理テーブル52(図6(B))の構成例をそれぞれ、模式的に表したものである。
まず、本実施の形態では前述したように、複数の物理ページにより構成される仮想ページが、データのアクセス処理(書き込み処理および読み出し処理)の処理単位となっている。したがって、メモリコントローラ2は、各論理ページに対応するデータを、その論理ページに対応する仮想ページに書き込む。また、このような論理ページ等のアドレス(論理アドレス)と、仮想ページ等のアドレス(仮想アドレス)との対応関係は、固定ではなく、データのアクセス処理に応じて動的に変化する。
ここで、本実施の形態のメモリコントローラ2は、このように動的に変化する論理アドレスと仮想アドレスとの対応関係を、以下のような論理仮想変換テーブル51および管理テーブル52を用いて、管理している。そして、メモリコントローラ2は、これらの対応関係を規定する各テーブルを参照して、ホストシステム4から与えられた論理アドレスを仮想アドレスに変換し、変換した仮想アドレスに基づいて、フラッシュメモリ1内におけるアクセス対象のデータの格納場所を、特定するようになっている。
図6(A)に示した論理仮想変換テーブル51は、フラッシュメモリ1に格納されている複数のデータの各々について、上記した論理アドレスと仮想アドレスとの対応関係を、規定している。前述したようにメモリコントローラ2は、ページマッピング方式を用いてアドレスを管理しているため、この論理仮想変換テーブル51も、ページ単位で対応関係が規定されている。つまり、メモリコントローラ2は、論理アドレスと仮想アドレスとの対応関係を、論理ページのアドレス(前述した論理ページ番号)と仮想ページのアドレス(前述した仮想ページ番号)との対応関係により、管理している。
より詳細には、論理仮想変換テーブル51は、例えば図6(A)に示したように、フラッシュメモリ1に格納されている複数のデータの各々について、論理ページ番号と、仮想ブロック番号、仮想ページ番号および仮想セクタ番号と、の対応関係を規定している。また、例えば図6(A)に示したように、このような論理仮想変換テーブル51は、フラッシュメモリ1全体として複数個設けられており、論理仮想変換テーブル51ごとに、固有の番号(論理仮想変換テーブル番号:例えばLVTBL#0など)が付与されている。なお、この図6(A)の例では、各論理仮想変換テーブル51内には、1024個の論理アドレス(論理ページ番号)についての仮想アドレスとの対応関係が、記述されている。
ここで、このような論理仮想変換テーブル51は、本発明における「領域管理情報」の一具体例に対応している。
一方、図6(B)に示した管理テーブル52は、そのような各論理仮想変換テーブル51に固有の論理仮想変換テーブル番号と、その論理仮想変換テーブル51のアドレス(フラッシュメモリ1上での最終的な保存先の仮想アドレス)と、の対応関係を規定している。つまり、詳細には後述するが、論理仮想変換テーブル51は、テーブルRAM25上において一時的に格納および更新された後、最終的にはフラッシュメモリ1上に書き込み保存されるようになっている。
この管理テーブル52は、より詳細には、例えば図6(B)に示したように、各論理仮想変換テーブル51における論理仮想変換テーブル番号と、その論理仮想変換テーブル51の保存先の仮想アドレス(仮想ブロック番号、仮想ページ番号および仮想セクタ番号)と、の対応関係を規定している。また、例えば図6(B)に示したように、このような管理テーブル52も、フラッシュメモリ1全体として複数個設けられており、管理テーブル52ごとに、固有の番号(管理テーブル番号:例えばMNTBL#0など)が付与されている。なお、この図6(B)の例では、各管理テーブル52内には、1024個の論理仮想変換テーブル番号についての保存先の仮想アドレスとの対応関係が、記述されている。
ここで、図7は、本実施の形態に係るテーブル全展開モード時における、各テーブル(論理仮想変換テーブル51および管理テーブル52)の配置例を、模式的に表したものである。また、図8は、本実施の形態に係るテーブルキャッシュモード時における、各テーブルの配置例を、模式的に表したものである。
まず、図7に示したテーブル全展開モード時には、テーブルRAM25上において、例えば、各種の管理データ50と、131072個の論理仮想変換テーブル51(LVTBL#0~LVTBL#131071)と、128個の管理テーブル52(MNTBL#0~MNTBL#127)とが、一時的に格納されている。なお、図6(B)に示したように、各管理テーブル52内に含まれる論理仮想変換テーブル51の番号(論理仮想変換テーブル番号)は、1024個であることから、図7の例では、論理仮想変換テーブル51の個数が、(管理テーブル52の個数(128個)×1024=131072個)となっている。
したがって、各テーブル(論理仮想変換テーブル51および管理テーブル52)のデータサイズが、一例として4KBである場合、このテーブル全展開モード時における論理仮想変換テーブル51全体のデータサイズは、以下のようになる。すなわち、図7中に示したように、(4KB×131072個=512MB)となる。また、テーブル全展開モード時における管理テーブル52全体のデータサイズは、図7中に示したように、(4KB×128個=512KB)となる。
一方、図8に示したテーブルキャッシュモード時には、テーブルRAM25上において、例えば、各種の管理データ50と、256個の論理仮想変換テーブル51のキャッシュ(LVTBL#0(キャッシュ)~LVTBL#255(キャッシュ))と、128個の管理テーブル52(MNTBL#0~MNTBL#127)とが、一時的に格納されている。つまり、このテーブルキャッシュモード時には、上記したテーブル全展開モード時と比較して、論理仮想変換テーブル51に対応する個数が、(256/131072)=(1/512)倍となっている。
したがって、各テーブル(論理仮想変換テーブル51および管理テーブル52)のデータサイズが、一例として4KBである場合、このテーブルキャッシュモード時における論理仮想変換テーブル51全体のデータサイズは、以下のようになる。すなわち、上記したテーブル全展開モード時とは異なり、図8中に示したように、(4KB×256個=1MB)となる。一方、テーブルキャッシュモード時における管理テーブル52全体のデータサイズは、上記したテーブル全展開モード時と同様に、図8中に示したように、(4KB×128個=512KB)となる。
ここで、このような論理仮想変換テーブル51および管理テーブル52はそれぞれ、フラッシュメモリシステム3の起動処理時、または、データのアクセス処理時に、フラッシュメモリ1からテーブルRAM25へと、読み出されるようになっている。また、メモリコントローラ2は、このテーブルRAM25上において、論理仮想変換テーブル51および管理テーブル52をそれぞれ、適宜更新する。そして、そのようにして更新された論理仮想変換テーブル51および管理テーブル52はそれぞれ、後述する所定の時点で、最終的にフラッシュメモリ1上に書き込み保存されるようになっている。なお、このようなフラッシュメモリ1上への各テーブルの書き込みは、例えば図6(A),図6(B)にそれぞれ示した、複数に分割された各テーブル(前述した論理仮想変換テーブル番号や管理テーブル番号が付与されたテーブルごと)に、行われるようになっている。
[動作および作用・効果]
続いて、本実施の形態のフラッシュメモリシステム3における動作例について説明する。
まず、本実施の形態では、マイクロプロセッサ27は、上記した論理アドレスと仮想アドレスとの間の対応関係を規定する論理仮想変換テーブル51(および管理テーブル52)に基づいて、データのアクセス処理の際のアクセス対象となる、仮想アドレスを決定する。また、マイクロプロセッサ27は、このようなアクセス処理(書き込み処理または読み出し処理)とともに、そのアクセス処理に応じて各種テーブル(論理仮想変換テーブル51および管理テーブル52)を更新する更新処理を、実行する。
以下では、そのようなデータの書き込み処理(ライト処理)および読み出し処理(リード処理)の際の動作例について、上記したテーブル全展開モード時およびテーブルキャッシュモード時の各々に分けて、詳細に説明する。また、フラッシュメモリシステム3(フラッシュメモリ1およびメモリコントローラ2)の電源がオフ状態からオン状態へと復帰する際の、起動処理における動作例についても、これらの各モード時に分けて、詳細に説明する。
(A-1.ライト処理の際の動作例:テーブル全展開モード時)
図9A,図9Bはそれぞれ、本実施の形態に係るライト処理(テーブル全展開モード時)の一例を、流れ図で表したものである。
この図9A,図9Bに示した一連の処理では、まず、マイクロプロセッサ27は、ホストシステム4から供給されるユーザデータ(書き込みデータ)を、ホストインタフェース26を介して受信する(図9AのステップS101)。次に、マイクロプロセッサ27は、受信完了したユーザデータ(受信完了データ)を、バッファ24内における書き込みキャッシュデータに登録する(ステップS102)。続いて、マイクロプロセッサ27は、このバッファ24内の書き込みキャッシュデータのデータ量(書き込みキャッシュデータ量)が、フラッシュメモリ1における仮想ページサイズ以上であるのか否かについて、判定を行う(ステップS103)。ここで、書き込みキャッシュデータ量が仮想ページサイズ量未満であると判定された場合には(ステップS103:N)、後述するステップS112(図9B)へと進むことになる。
一方、書き込みキャッシュデータ量が仮想ページサイズ量以上であると判定された場合には(ステップS103:Y)、次にマイクロプロセッサ27は、論理仮想変換テーブル51および管理テーブル52を参照して、ユーザデータの書き込み先となる、フラッシュメモリ1上での仮想アドレスを決定する(ステップS104)。続いて、マイクロプロセッサ27は、このようにして決定した仮想アドレスに基づき、ユーザデータ(バッファ24内の書き込みキャッシュデータ)をフラッシュメモリ1上へと書込む(ステップS105)。また、この際にマイクロプロセッサ27は、書き込み対象となる仮想ページ内における、前述したスペア領域As(図5参照)に対して、対応する論理アドレスを示す論理アドレス情報も、書き込むようにする。
次に、マイクロプロセッサ27は、このようなユーザデータの書き込み処理に伴い、論理仮想変換テーブル51を、テーブルRAM25上で編集する(図9BのステップS106)。次いで、マイクロプロセッサ27は、上記した書き込み完了データを、バッファ24内の書き込みキャッシュデータから解放させる(ステップS107)。そして、マイクロプロセッサ27は、フラッシュメモリ1上における書き込み対象の仮想ブロックが、その仮想ブロック内に含まれる複数の仮想ページのうちの最終ページまで書き込み済みであるのか否かについて、判定を行う(ステップS108)。ここで、書き込み対象の仮想ブロックが、最終ページまでは書き込み済みではないと判定された場合には(ステップS108:N)、後述するステップS112(図9B)へと進むことになる。
一方、書き込み対象の仮想ブロックが、最終ページまで書き込み済みであると判定された場合には(ステップS108:Y)、以下のようになる。すなわち、次にマイクロプロセッサ27は、ステップS106において編集後の論理仮想変換テーブル51を、フラッシュメモリ1上に書き込み保存することにより、論理仮想変換テーブル51に対する更新処理を実行する(ステップS109)。また、この際にマイクロプロセッサ27は、フラッシュメモリ1上において、書き込み処理の際にユーザデータが書き込まれる仮想ブロックと、編集後の論理仮想変換テーブル51が書き込み保存される仮想ブロックとを、互いに異ならせるようにする。
続いて、マイクロプロセッサ27は、上記した論理仮想変換テーブル51のフラッシュメモリ1上への書き込み保存に伴い、管理テーブル52を、テーブルRAM25上で編集する(ステップS110)。そしてマイクロプロセッサ27は、このようにして編集後の管理テーブル52を、フラッシュメモリ1上に書き込み保存することにより、管理テーブル52に対する更新処理を実行する(ステップS111)。
次いで、マイクロプロセッサ27は、ライト処理全体のコマンドが完了したのか否かについて、判定を行う(ステップS112)。ここで、ライト処理全体のコマンドがまだ完了していないと判定された場合には(ステップS112:N)、前述したステップS101(図9A)へと戻ることになる。一方、ライト処理全体のコマンドが完了したと判定された場合には(ステップS112:Y)、図9A,図9Bに示した一連の処理が終了となる。
(A-2.ライト処理の際の動作例:テーブルキャッシュモード時)
また、図10A,図10Bはそれぞれ、本実施の形態に係るライト処理(テーブルキャッシュモード時)の一例を、流れ図で表したものである。
この図10A,図10Bに示した一連の処理は、上記した図9A,図9Bに示した一連の処理において、ステップS113~S115を更に追加したものに対応している。したがって、以下では、これらのステップS113~S115について、抜粋して説明する。
まず、ステップS113,S114は、前述したステップS105,S106の間に追加した処理となっている。具体的には、前述したステップS105(ユーザデータの書き込み)の後、次にマイクロプロセッサ27は、対象(編集対象)となる論理仮想変換テーブル51が展開済みであるのか否かについて、判定を行う(図10AのステップS113)。ここで、対象となる論理仮想変換テーブル51が、既に展開済みである判定された場合(ステップS113:Y)、前述したステップS106(論理仮想変換テーブル51の編集:図10B参照)へと進む。一方、対象となる論理仮想変換テーブル51が、まだ展開済みではない判定された場合(ステップS113:N)、次にマイクロプロセッサ27は、対象となる論理仮想変換テーブル51を展開させる(図10AのステップS114)。そして、その後はこの場合も、ステップS106(論理仮想変換テーブル51の編集:図10B参照)へと進むことになる。
また、ステップS115は、前述したステップS108において、書き込み対象の仮想ブロックが、最終ページまでは書き込み済みではないと判定された場合(ステップS108:N)に、行われる処理である。具体的には、この場合において、次にマイクロプロセッサ27は、テーブルRAM25におけるテーブルキャッシュ上での空き領域が、所定の閾値以下であるのか否かについて、判定を行う(図10BのステップS115)。ここで、テーブルキャッシュ上での空き領域が、所定の閾値超過であると判定された場合には(ステップS115:N)、前述したステップS112(コマンド完了であるのか否かの判定)へと進む。一方、テーブルキャッシュ上での空き領域が、所定の閾値以下であると判定された場合には(ステップS115:Y)、前述したステップS109(論理仮想変換テーブル51の書込み保存)へと進むことになる。
以上で、図10A,図10Bに示した一連の処理についての説明が、終了となる。
このようにして本実施の形態のライト処理では、マイクロプロセッサ27は、各回のユーザデータの書き込み処理(ステップS105)に対して間引いた頻度にて、編集後の論理仮想変換テーブル51をフラッシュメモリ上に書き込み保存する(ステップS109)ことで、論理仮想変換テーブル51に対する更新処理を実行する。具体的には、マイクロプロセッサ27は、仮想ブロック内の最終の仮想ページまで書き込み処理が完了した場合(ステップS108:Y)、または、テーブルキャッシュ上での空き領域が所定の閾値以下となった場合(ステップS115:Y)に、編集後の論理仮想変換テーブル51を、フラッシュメモリ1上に書き込み保存するようになっている。
(B-1.リード処理の際の動作例:テーブル全展開モード時)
次に、図11は、本実施の形態に係るリード処理(テーブル全展開モード時)の一例を、流れ図で表したものである。
この図11に示した一連の処理では、まず、マイクロプロセッサ27は、対象(読み出し対象)となるユーザデータが、バッファ24内の書き込みキャッシュデータに登録済みであるのか否かについて、判定を行う(ステップS201)。ここで、読み出し対象のユーザデータが、書き込みキャッシュデータに登録済みであると判定された場合には(ステップS201:Y)、後述するステップS205(ユーザデータの送信)へと進むことになる。
一方、読み出し対象のユーザデータが、書き込みキャッシュデータに登録済みではないと判定された場合には(ステップS201:N)、次にマイクロプロセッサ27は、論理仮想変換テーブル51を参照する(ステップS202)。そしてマイクロプロセッサ27は、この参照した論理仮想変換テーブル51に基づき、フラッシュメモリ1上での読み出し元となる仮想アドレスを、決定する(ステップS203)。
続いて、マイクロプロセッサ27は、このようにした決定した仮想アドレスを用いて、フラッシュメモリ1上からユーザデータの読み出しを行う(ステップS204)。そしてマイクロプロセッサ27は、このようにして読み出したユーザデータを、ホストインタフェース26を介してホストシステム4へと送信する(ステップS205)。
次いで、マイクロプロセッサ27は、リード処理全体のコマンドが完了したのか否かについて、判定を行う(ステップS206)。ここで、リード処理全体のコマンドがまだ完了していないと判定された場合には(ステップS206:N)、前述したステップS201へと戻ることになる。一方、リード処理全体のコマンドが完了したと判定された場合には(ステップS206:Y)、図11に示した一連の処理が終了となる。
(B-2.リード処理の際の動作例:テーブルキャッシュモード時)
また、図12は、本実施の形態に係るリード処理(テーブルキャッシュモード時)の一例を、流れ図で表したものである。
この図12に示した一連の処理は、上記した図11に示した一連の処理において、ステップS201,S202の間に、ステップS207~S209を更に追加したものに対応している。したがって、以下では、これらのステップS207~S209について、抜粋して説明する。
まず、ステップS207は、前述したステップS201において、読み出し対象のユーザデータが、書き込みキャッシュデータに登録済みではないと判定された場合(ステップS201:N)に、行われる処理である。具体的には、この場合において、次にマイクロプロセッサ27は、対象となる論理仮想変換テーブル51が展開済みであるのか否かについて、判定を行う(ステップS207)。ここで、対象となる論理仮想変換テーブル51が、既に展開済みである判定された場合(ステップS207:Y)、前述したステップS202(論理仮想変換テーブル51の参照)へと進むことになる。
一方、対象となる論理仮想変換テーブル51が、まだ展開済みではない判定された場合(ステップS207:N)、次にマイクロプロセッサ27は、該当する管理テーブル52を参照して(ステップS208)、対象となる論理仮想変換テーブル51を展開させる(ステップS209)。そしてその後は、前述したステップS202(論理仮想変換テーブル51の参照)へと進むことになる。
以上で、図12に示した一連の処理についての説明が、終了となる。
(C-1.起動処理の際の動作例:テーブル全展開モード時)
次に、図13は、本実施の形態に係る前述した起動処理(テーブル全展開モード時)の一例を、流れ図で表したものである。
ここで、この起動処理は、フラッシュメモリ1上に論理仮想変換テーブル51が書き込み保存される前の時点で、フラッシュメモリシステム3(フラッシュメモリ1およびメモリコントローラ2)の電源がオン状態からオフ状態へと移行した場合が、前提となっている。そして、この起動処理は、そのような前提状態の後において、フラッシュメモリシステム3の電源がオフ状態からオン状態へと復帰する際に、実行される処理となっている。
この図13に示した一連の処理では、まず、マイクロプロセッサ27は、上記した電源復帰の前に書き込み途中であった仮想ブロックの判定を行う(ステップS301)。次に、マイクロプロセッサ27は、該当する仮想ブロック内において、読み出し対象となる仮想ページの初期化(ページ=「0」)を行う(ステップS302)。そして、マイクロプロセッサ27は、読み出し対象の仮想ページにおいて、前述したスペア領域As(図5参照)の読み出しを行う(ステップS303)。
次いで、マイクロプロセッサ27は、読み出しを行ったスペア領域Asに、前述した論理アドレス情報(図9A,図10AのステップS105参照)が書き込み済みであるのか否かについて、判定を行う(ステップS304)。ここで、そのスペア領域Asに論理アドレス情報が書き込み済みではないと判定された場合には(ステップS304:N)、対象の仮想ブロックにはこれ以上は有効データが存在しないことから、図13に示した一連の処理が終了となる。
一方、そのスペア領域Asに論理アドレス情報が書き込み済みであると判定された場合(ステップS304:Y)、次にマイクロプロセッサ27は、以下の処理を行う。すなわち、この場合にマイクロプロセッサ27は、そのスペア領域Asから、書き込み済みの論理アドレス情報を読み出すと共に、その読み出した論理アドレス情報を利用して、テーブルRAM25上において、未更新分の論理仮想変換テーブル51の編集を行う(ステップS305)。
続いて、マイクロプロセッサ27は、現在の読み出し対象の仮想ページが、該当する仮想ブロック内の最終ページであるのか否かについて、判定を行う(ステップS306)。ここで、読み出し対象の仮想ページが、最終ページではないと判定された場合には(ステップS306:N)、次にマイクロプロセッサ27は、読み出し対象の仮想ページの更新(ページ:+1)を行う(ステップS307)。なお、その後は、前述したステップS303へと戻ることになる。
一方、読み出し対象の仮想ページが、最終ページであると判定された場合には(ステップS306:Y)、図13に示した一連の処理が終了となる。
(C-2.起動処理の際の動作例:テーブルキャッシュモード時)
また、図14は、本実施の形態に係る前述した起動処理(テーブルキャッシュモード時)の一例を、流れ図で表したものである。
この図14に示した一連の処理は、上記した図13に示した一連の処理において、ステップS304,S305の間に、ステップS308,S309を更に追加したものに対応している。したがって、以下では、これらのステップS308,S309について、抜粋して説明する。
まず、ステップS308は、前述したステップS304において、読み出し対象のスペア領域Asに論理アドレス情報が書き込み済みであると判定された場合(ステップS304:Y)に、行われる処理である。具体的には、この場合において、次にマイクロプロセッサ27は、対象(編集対象)となる論理仮想変換テーブル51が展開済みであるのか否かについて、判定を行う(ステップS308)。ここで、対象となる論理仮想変換テーブル51が、既に展開済みである判定された場合(ステップS308:Y)、前述したステップS305(論理仮想変換テーブル51の編集)へと進むことになる。
一方、対象となる論理仮想変換テーブル51が、まだ展開済みではない判定された場合(ステップS308:N)、次にマイクロプロセッサ27は、対象となる論理仮想変換テーブル51を展開させる(ステップS309)。そしてその後は、前述したステップS305(論理仮想変換テーブル51の編集)へと進むことになる。
以上で、図14に示した一連の処理についての説明が、終了となる。
(D.作用・効果)
このようにして本実施の形態では、データ(ユーザデータ)の書き込み処理が実行されるごとに、テーブルRAM25上にて論理仮想変換テーブル51の編集が行われる。そして、各回の書き込み処理に対して間引いた頻度にて、編集後の論理仮想変換テーブル51がフラッシュメモリ1上に書き込み保存されることで、論理仮想変換テーブル51に対する更新処理が実行される。
これにより本実施の形態では、例えば、ページマッピング方式を用いたデータの書き込み処理ごとに、論物変換テーブル(論理アドレスと物理アドレスとの間の対応関係を規定するテーブル)を編集して、フラッシュメモリ上に書き込み保存する場合(比較例)と比べて、以下のようになる。すなわち、まず、この比較例の手法では、例えばランダムアクセスによる書き込み処理の場合などに、フラッシュメモリ上への論物変換テーブルの書き込み頻度が増大することから、データの書き込み効率が悪化してしまうおそれがある。これに対して本実施の形態では、例えば、そのようなランダムアクセスによる書き込み処理の場合においても、論理仮想変換テーブル51の更新頻度が低いことから、比較例の場合と比べ、データの書き込み効率を向上させることが可能となる。
また、本実施の形態では、フラッシュメモリ1上において、書き込み処理の際にデータが書き込まれる仮想ブロックと、編集後の論理仮想変換テーブル51が書き込み保存される仮想ブロックとを、互いに異ならせるようにしたので、以下のようになる。すなわち、例えば、これらの仮想ブロック同士を一致させるようにした場合、本実施の形態では、ユーザデータと論理仮想変換テーブル51とで、更新頻度が互いに異なることから、ガベージコレクション時に不利になるおそれがある。したがって、これらの仮想ブロック同士を互いに異ならせることで、ガベージコレクション時に不利となるおそれを回避することができるため、データの書き込み効率を更に向上させることが可能となる。
更に、本実施の形態では、前述した起動処理の際に、書き込み途中の仮想ブロック内に含まれるスペア領域Asから、データの書き込み処理時に併せて書き込まれた論理アドレス情報が、読み出される。そして、読み出された論理アドレス情報を利用して、テーブルRAM25上において、未更新分の論理仮想変換テーブル51の編集が行われる。これにより本実施の形態では、例えば、フラッシュメモリ1上に論理仮想変換テーブル51が書き込み保存される前の時点で、フラッシュメモリシステム3の電源がオン状態からオフ状態へと移行してしまったような場合であっても、以下のようになる。すなわち、そのような場合であっても、その後の起動処理の際に、未更新分の論理仮想変換テーブル51の更新処理(編集)を、担保することができる。その結果、本実施の形態では、フラッシュメモリシステム3の信頼性を向上させることが可能となる。
<2.変形例>
以上、実施の形態を挙げて本発明を説明したが、本発明はこの実施の形態に限定されず、種々の変形が可能である。
例えば、上記実施の形態では、ホストシステム、フラッシュメモリおよびメモリコントローラの構成や、制御回路の構成をそれぞれ、具体的に挙げて説明したが、これらの各構成は、上記実施の形態で説明したものには限られない。具体的には、例えば上記実施の形態では、フラッシュメモリ1がNAND型フラッシュメモリである場合の例について説明したが、この例には限られず、例えばフラッシュメモリ1として、NOR型フラッシュメモリを用いるようにしてもよい。
また、上記実施の形態では、論理仮想変換テーブル51および管理テーブル52がそれぞれ、メモリコントローラ2内のテーブルRAM25上で作成および更新(編集)が行われて、フラッシュメモリ1上に書き込み保存される場合の例について、説明した。ただし、この場合の例には限られず、例えば、メモリコントローラ2の外部の別の不揮発性メモリ(例えば外部RAM30)上や、フラッシュメモリシステム3の外部にて、論理仮想変換テーブル51および管理テーブル52の作成および更新が、行われるようにしてもよい。更に、これらの論理仮想変換テーブル51および管理テーブル52における各情報の対応関係については、上記実施の形態で説明した形式には限られず、他の形式で規定されるようにしてもよい。加えて、これらの各情報の対応関係(論理アドレスと仮想アドレスとの間の対応関係など)については、テーブルという形式には限られず、他の形式で規定されるようにしてもよい。
また、上記実施の形態において説明した、各チップに含まれる物理ブロック数、各物理ブロックに含まれる物理ページ数、各物理ページに含まれる物理セクタ数、各仮想ブロックに含まれる物理ブロック数、各仮想ページに含まれる物理ページ数、各論理ページに含まれるLBA数等は、例示にすぎず、他の数値であってもよい。
更に、上記実施の形態では、マイクロプロセッサ27によるデータのアクセス処理(リード処理およびライト処理)、各テーブルの更新処理および起動処理の際の各動作例について、具体的に挙げて説明した。ただし、これらの各種の処理例は、上記実施の形態で説明したものには限られず、他の手法を用いて、これらの各種の処理例を行うようにしてもよい。
加えて、これまでに説明した各構成例や動作例等を、任意の組み合わせで適用してもよい。

Claims (4)

  1. フラッシュメモリを制御するメモリコントローラであって、
    前記フラッシュメモリに対するデータのアクセス処理と、前記アクセス処理に応じて所定の領域管理情報を更新する更新処理と、をそれぞれ実行するマイクロプロセッサを備え、
    前記マイクロプロセッサは、
    論理ページの論理アドレスと、前記フラッシュメモリにおける複数のチャネルに属する複数の物理ブロックにより構成される仮想ブロック内に含まれる、仮想ページの仮想アドレスと、の間の対応関係を規定する前記領域管理情報に基づいて、前記アクセス処理の際のアクセス対象となる前記仮想アドレスを決定し、
    決定した前記仮想アドレスに基づいて、前記アクセス処理としての前記データの書き込み処理を実行する際には、
    前記書き込み処理を実行するごとに、キャッシュ領域上において前記領域管理情報の編集を行うと共に、
    各回の前記書き込み処理に対して間引いた頻度にて、前記編集後の前記領域管理情報を、前記フラッシュメモリ上に書き込み保存することにより、
    前記領域管理情報に対する前記更新処理を実行し、
    前記仮想ブロックに含まれる複数の前記仮想ページにはそれぞれ、物理ページごとにスペア領域が設けられていると共に、
    前記マイクロプロセッサは、
    前記仮想ページ単位で前記書き込み処理を実行する際に、
    書き込み対象となる前記仮想ページ内の前記スペア領域に対して、対応する前記論理アドレスを示す論理アドレス情報も書き込み、
    前記マイクロプロセッサは、
    前記フラッシュメモリ上に前記領域管理情報が書き込み保存される前の時点で、前記フラッシュメモリおよび前記メモリコントローラの電源が、オン状態からオフ状態へと移行した場合には、
    その後に前記電源が前記オフ状態から前記オン状態へと復帰する際の、起動処理において、
    書き込み途中の前記仮想ブロック内に含まれる前記スペア領域からそれぞれ、前記論理アドレス情報を読み出すと共に、
    前記キャッシュ領域上において、読み出した前記論理アドレス情報を利用して、未更新分の前記領域管理情報の編集を行う
    メモリコントローラ。
  2. 前記マイクロプロセッサは、
    前記仮想ブロック内に含まれる複数の前記仮想ページのうちの最終ページまで、前記書き込み処理が完了した場合、または、
    前記キャッシュ領域上での空き領域が閾値以下となった場合に、
    前記編集後の前記領域管理情報を、前記フラッシュメモリ上に書き込み保存する
    請求項に記載のメモリコントローラ。
  3. 前記マイクロプロセッサは、
    前記フラッシュメモリ上において、
    前記書き込み処理の際に前記データが書き込まれる前記仮想ブロックと、前記編集後の前記領域管理情報が書き込み保存される前記仮想ブロックとを、
    互いに異ならせる
    請求項1または請求項2に記載のメモリコントローラ。
  4. 請求項1ないし請求項のいずれか1項に記載のメモリコントローラと、
    前記フラッシュメモリと
    を備えたフラッシュメモリシステム。
JP2023504810A 2021-11-30 2021-11-30 メモリコントローラおよびフラッシュメモリシステム Active JP7705446B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2021/043727 WO2023100212A1 (ja) 2021-11-30 2021-11-30 メモリコントローラおよびフラッシュメモリシステム

Publications (2)

Publication Number Publication Date
JPWO2023100212A1 JPWO2023100212A1 (ja) 2023-06-08
JP7705446B2 true JP7705446B2 (ja) 2025-07-09

Family

ID=86611643

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2023504810A Active JP7705446B2 (ja) 2021-11-30 2021-11-30 メモリコントローラおよびフラッシュメモリシステム

Country Status (3)

Country Link
US (1) US20240295964A1 (ja)
JP (1) JP7705446B2 (ja)
WO (1) WO2023100212A1 (ja)

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007249469A (ja) 2006-03-15 2007-09-27 Sony Corp 不揮発性半導体記憶装置およびメモリシステム
JP2008243156A (ja) 2007-03-29 2008-10-09 Tdk Corp メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法
JP2010086107A (ja) 2008-09-30 2010-04-15 Tdk Corp メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法
JP2013152676A (ja) 2012-01-26 2013-08-08 Hitachi Ltd 不揮発性記憶装置

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4632180B2 (ja) * 2008-10-15 2011-02-16 Tdk株式会社 メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法
US8214579B2 (en) * 2008-09-30 2012-07-03 Tdk Corporation Memory controller, flash memory system with memory controller, and method of controlling flash memory
US8219776B2 (en) * 2009-09-23 2012-07-10 Lsi Corporation Logical-to-physical address translation for solid state disks
JP2021068129A (ja) * 2019-10-21 2021-04-30 Tdk株式会社 メモリコントローラ及びフラッシュメモリシステム
US11409446B2 (en) * 2020-11-11 2022-08-09 Micro Technology, Inc. Media management on power-up

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007249469A (ja) 2006-03-15 2007-09-27 Sony Corp 不揮発性半導体記憶装置およびメモリシステム
JP2008243156A (ja) 2007-03-29 2008-10-09 Tdk Corp メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法
JP2010086107A (ja) 2008-09-30 2010-04-15 Tdk Corp メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法
JP2013152676A (ja) 2012-01-26 2013-08-08 Hitachi Ltd 不揮発性記憶装置

Also Published As

Publication number Publication date
JPWO2023100212A1 (ja) 2023-06-08
US20240295964A1 (en) 2024-09-05
WO2023100212A1 (ja) 2023-06-08

Similar Documents

Publication Publication Date Title
JP4844639B2 (ja) メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法
US8250286B2 (en) Block management method, and storage system and controller using the same
US8583860B2 (en) Block management method for flash memory and controller and storage system using the same
CN100487672C (zh) 用于分割一逻辑块的方法及设备
US8386698B2 (en) Data accessing method for flash memory and storage system and controller using the same
US8645613B2 (en) Data writing method for flash memory and control circuit and storage system using the same
US8291155B2 (en) Data access method, memory controller and memory storage system
US8055873B2 (en) Data writing method for flash memory, and controller and system using the same
US20190220396A1 (en) Data Storage Device
US8510502B2 (en) Data writing method, and memory controller and memory storage apparatus using the same
US20100042774A1 (en) Block management method for flash memory, and storage system and controller using the same
US20100057979A1 (en) Data transmission method for flash memory and flash memory storage system and controller using the same
US11513949B2 (en) Storage device, and control method and recording medium thereof
US8074128B2 (en) Block management and replacement method, flash memory storage system and controller using the same
US20100042775A1 (en) Block management method for flash memory, and storage system and controller using the same
US8037236B2 (en) Flash memory writing method and storage system and controller using the same
US20130275655A1 (en) Memory management method and memory controller and memory storage device using the same
JP4666081B2 (ja) メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法
KR20070046864A (ko) 플래쉬 화일 시스템에서 가상-물리 주소 변환 방법 및시스템
US8943264B2 (en) Data storing method, and memory controller and memory storage apparatus using the same
TWI571881B (zh) 有效資料合併方法、記憶體控制器與記憶體儲存裝置
CN110489051A (zh) 数据储存装置及系统信息的编程方法
JP7705446B2 (ja) メモリコントローラおよびフラッシュメモリシステム
CN106648443A (zh) 有效数据合并方法、存储器控制器与存储器存储装置
JP4952742B2 (ja) メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20240604

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20250415

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20250515

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: 20250603

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20250627

R150 Certificate of patent or registration of utility model

Ref document number: 7705446

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150