JP2013137721A - コントローラ、記憶装置およびプログラム - Google Patents

コントローラ、記憶装置およびプログラム Download PDF

Info

Publication number
JP2013137721A
JP2013137721A JP2011289304A JP2011289304A JP2013137721A JP 2013137721 A JP2013137721 A JP 2013137721A JP 2011289304 A JP2011289304 A JP 2011289304A JP 2011289304 A JP2011289304 A JP 2011289304A JP 2013137721 A JP2013137721 A JP 2013137721A
Authority
JP
Japan
Prior art keywords
memory cell
write
cell group
data
page
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
JP2011289304A
Other languages
English (en)
Other versions
JP5674634B2 (ja
Inventor
Kazuhiro Fukutomi
和弘 福冨
Shinichi Sugano
伸一 菅野
Shigehiro Asano
滋博 浅野
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.)
Toshiba Corp
Original Assignee
Toshiba 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 Toshiba Corp filed Critical Toshiba Corp
Priority to JP2011289304A priority Critical patent/JP5674634B2/ja
Priority to US13/603,989 priority patent/US20130238838A1/en
Publication of JP2013137721A publication Critical patent/JP2013137721A/ja
Application granted granted Critical
Publication of JP5674634B2 publication Critical patent/JP5674634B2/ja
Priority to US15/215,154 priority patent/US10366003B2/en
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
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • 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/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • 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/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0844Multiple simultaneous or quasi-simultaneous cache accessing
    • G06F12/0855Overlapped cache accessing, e.g. pipeline
    • G06F12/0859Overlapped cache accessing, e.g. pipeline with reload from main memory
    • 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/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • G06F12/0868Data transfer between cache memory and other subsystems, e.g. storage devices or host systems
    • 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/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • G06F12/0871Allocation or management of cache space
    • 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/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • G06F12/0873Mapping of cache memory to specific storage devices or parts thereof
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/604Details relating to cache allocation
    • 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/7202Allocation control and policies
    • 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

Abstract

【課題】適切なタイミングで必要なデータを準備し、適切な順番で半導体記憶媒体に対して読み書き処理を実行する。
【解決手段】コントローラは、決定部と、読み込み部と、書き込み部と、を備える。決定部は、メモリセル群に含まれる第1メモリセル群の書き込み処理に必要なページが、所定の順序で実行する場合に初めて必要となる書き込みステージが開始される前までに、第1メモリセル群の書き込み処理に必要なページに転記するデータを決定する。読み込み部は、書き込みステージが開始される前までに、決定されたデータを半導体記憶装置から読み込んで外部記憶装置に記憶する。書き込み部は、書き込みステージの実行順序となった場合に、外部記憶装置に記憶されたデータを第1メモリセル群の書き込みステージの書き込み処理に必要なページのデータとして、第1メモリセル群の書き込みステージの書き込み処理を実行する。
【選択図】図1

Description

本発明の実施形態は、コントローラ、記憶装置およびプログラムに関する。
NAND型フラッシュメモリのような半導体記憶媒体を用いて記憶装置を構成しようとする場合、転記処理(コンパクション処理、ガーベージコレクション処理)が行われる。
特開2011−165063号公報
NAND型フラッシュメモリのような半導体記憶媒体は、内部のメモリセル群に複数対応付けられているページを単位としてデータを入出力する。そして、このような半導体記憶媒体では、メモリセル群へのデータ書き込み処理が完了するために、複数の書き込みステージを経る必要があったり、各書き込みステージにおいてメモリセル群の書き込み順番が規定されていたり、各書き込みステージにおいて必要なデータの対応付けが規定されていたりする。
このような半導体記憶媒体で転記処理を実現するには、適切なタイミングで必要なデータを準備し、適切な順番で半導体記憶媒体に対して読み書き処理を実行しなければならない。
実施形態のコントローラは、複数のメモリセルを含むメモリセル群をN個含む複数のブロックを含む半導体記憶装置に対するアクセスを制御する。コントローラは、決定部と、読み込み部と、書き込み部と、を備える。決定部は、メモリセル群に含まれる第1メモリセル群の書き込み処理に必要なページが、所定の順序で実行する場合に初めて必要となる書き込みステージが開始される前までに、第1メモリセル群の書き込み処理に必要なページに転記するデータを決定する。読み込み部は、書き込みステージが開始される前までに、決定されたデータを半導体記憶装置から読み込んで外部記憶装置に記憶する。書き込み部は、第1書き込みステージの実行順序となった場合に、外部記憶装置に記憶されたデータを第1メモリセル群の書き込みステージの書き込み処理に必要なページのデータとして、第1メモリセル群の書き込みステージの書き込み処理を実行する。
第1の実施形態の記憶装置のブロック図。 記憶媒体の構成例を示す図。 メモリセルに記憶される情報と強弱レベルとの対応を示す図。 メモリセル群とページとの対応を示す図。 書き込みステージで書き込みの対象となるページの例を示す図。 書き込み順序の例を示す図。 アドレス正引きテーブルの構成例を示す図。 転記位置情報の構成例を示す図。 第1の実施形態の書き込み処理のフローチャート。 第1の実施形態の読み込み処理のフローチャート。 第1の実施形態の転記処理のフローチャート。 書き込みステージで書き込みの対象となるページの他の例を示す図。 書き込み順序の他の例を示す図。 書き込みステージで書き込みの対象となるページの他の例を示す図。 第2の実施形態の記憶装置のブロック図。 第2の実施形態の転記処理のフローチャート。
以下、添付図面を参照しながら、本発明にかかるコントローラ、記憶装置およびプログラムの実施形態を詳細に説明する。なお、以下の各実施形態では、記憶装置としてSSD(Solid State Drive)を例にとり説明するが、これに限定されるものではない。
(第1の実施形態)
第1の実施形態にかかる記憶装置は、任意の転記対象データが初めて必要とされる、任意のメモリセル群の任意の書き込みステージが開始されるまでに、当該転記対象データの転記位置情報を生成し、生成した転記位置情報に従ってデータを転記する。第1の実施形態にかかる記憶装置では、メモリセル群に対するデータの書き込みは、複数回の書き込み処理が実行された時点で完了するものとする。複数回(P回、Pは2以上の整数)の書き込み処理のそれぞれを書き込みステージという。転記位置情報とは、転記元のデータの位置情報と転記先の位置情報とを対応付けた情報である(詳細は後述)。
図1は、第1の実施形態の記憶装置100の機能構成の概要の一例を示すブロック図である。図1に示すように、記憶装置100は、コントローラ110と、第1アクセス制御部151と、第1メモリ141と、第2アクセス制御部152と、第2メモリ142と、第3アクセス制御部153と、第3メモリ143と、媒体アクセス制御部131と、記憶媒体121と、ホストインタフェース部160と、を有する。
コントローラ110は、読み込み制御部111と、書き込み制御部112と、転記制御部113と、決定部114と、更新部115と、読み込み部116と、書き込み部117と、を有する。
記憶媒体121は、NAND型フラッシュメモリのような半導体記憶媒体(半導体記憶装置)である。図2は、記憶媒体121の構成例を示す図である。図2に示すように、記憶媒体121は、複数のブロック201を有する。ブロック201は、例えば記憶媒体121の消去処理の単位のような、データの読み書き処理における単位の1つである。また、図2に示すように、各ブロック201は、複数(N個、Nは2以上の整数)のメモリセル群202を有する。メモリセル群202は、記憶媒体121内部のデータ入出力単位である。各メモリセル群202は、複数(M個、Mは2以上の整数)のメモリセル203を有する。ブロック201に含まれるいずれのメモリセル群202であるかを識別するために、メモリセル群番号が設定されている。また、メモリセル群202に含まれるいずれのメモリセル203であるかを識別するために、カラム番号が設定されている。
メモリセル203には、多値の情報が記録される。図3は、メモリセル203に記憶される情報(ビット列)と強弱レベルとの対応の一例を示す図である。例えば、1セルあたり4ビット(4ビット/セル)の情報が記録される場合、図3に示すように、メモリセル203に、16通りの強弱レベルのうちいずれかの強弱レベルの電荷等が記録される。また、それぞれの強弱レベルには所定の規則に従って4ビットのビット列を対応付ける。図3には、ビット列の対応付けの例が示されている。
メモリセル群202には1つ以上のページが対応付けられている。ページは、記憶媒体121と外部とのデータの入出力単位である。図4は、メモリセル群202とページとの対応の一例を示す図である。例えば、1つのメモリセル群202に対し、4つのページが対応付けられている場合は、図4に示すように、各メモリセル群202に対して、第1ページ、第2ページ、第3ページ、および、第4ページの4つのページが対応付けられる。また、図4に示すように、ブロック201における各ページには、通しのページ番号が付与される。
また、ページのデータは、メモリセル群202に記録された強弱レベルに対応付けられたビット列と、所定の規則に従って対応付けられる。例えば、1つのメモリセル群202に対し、4つのページが対応付けられている場合は、第1ページ、第2ページ、第3ページ、および、第4ページのデータは、それぞれ、当該メモリセル群202に記録された強弱レベルに対応付けられたビット列の上位から1ビット目、2ビット目、3ビット目、および、4ビット目からなるように対応付けられる。図4のメモリセル群番号0のメモリセル群202の例では、4つのページのカラム1のビットは、第1ページ、第2ページ、第3ページ、第4ページの順番に、1、1、0、1である。このため、図3に示すようなビット列の対応付けの場合は、メモリセル群番号0のメモリセル群202のカラム1のメモリセル203には、"1101"のビット列に対応する強弱レベル2の強弱レベルが記録される。なお、ページのデータと、メモリセル群202に記録された強弱レベルに対応付けられたビット列との、対応付けの規則はこれに限られない。
記憶媒体121への書き込み処理(書き込みシーケンス)には、以下の(1)〜(3)の3点の制約が含まれる。
(1)あるメモリセル群202に対し、複数の書き込みステージを実行することで、当該メモリセル群202への書き込みシーケンスが完了する。例えば、あるメモリセル群202への書き込みシーケンスを完了するために必要な書き込みステージ数が3のときは、第1ステージ、第2ステージ、および、第3ステージの書き込みステージを実行することで、当該メモリセル群202への書き込みが完了する。書き込みシーケンスを完了するために必要な書き込みステージ数は、記憶媒体121のブロック201毎に同じでもよいし異なっていてもよい。また、書き込みシーケンスを完了するために必要な書き込みステージ数は、あるブロック201のメモリセル群202毎に同じでもよいし異なっていてもよい。
(2)各書き込みステージでは、当該メモリセル群202に対応付けられている1つ以上のページのうちの0個以上のページを含む、1つ以上のページのデータが各書き込みステージの書き込み処理において必要とされる。図5は、各書き込みステージの書き込み処理に必要となるページ(書き込みの対象となるページ(対象ページ))の例を示す図である。図5では、例えば、メモリセル群番号1のメモリセル群202の第1ステージでは、メモリセル群番号1のメモリセル群202の第1ページと、メモリセル群番号2のメモリセル群202の第1ページとが対象ページとなることが示されている。また、メモリセル群番号2のメモリセル群202の第3ステージの書き込みステージでは、メモリセル群番号2のメモリセル群202の第3ページと、メモリセル群番号2のメモリセル群202の第4ページとが対象ページとなる例を示している。図5に示すように、複数の書き込みステージの対象ページに同じページが含まれていてもよいし、書き込み対象のメモリセル群202とは異なるメモリセル群202に対応付けられているページが含まれていてもよい。また、各書き込みステージの対象ページは、記憶媒体121のブロック201毎に同じでもよいし異なっていてもよい。
(3)所定の順序で、あるブロック201における、各メモリセル群202の各書き込みステージを実行する。図6は、書き込み順序の例を示す図である。図6では、例えば、メモリセル群番号0のメモリセル群202の第1ステージを実行した後は、順に、メモリセル群番号1のメモリセル群202の第1ステージ、メモリセル群番号0のメモリセル群202の第2ステージを実行しなければならないことが示されている。図6に示すように、あるメモリセル群202のある書き込みステージと次の書き込みステージの書き込み順番の間に、別のメモリセル群202のある書き込みステージが挟まっていてもよい。また、書き込み順序は、記憶媒体121のブロック201毎に同じでもよいし異なっていてもよい。
図1の説明に戻る。媒体アクセス制御部131は、要求元から指示される記憶媒体121からの読み込み命令を受け付け、読み込み命令に対応するデータを記憶媒体121から読み込み、要求元に返却する。また、媒体アクセス制御部131は、要求元から指示される記憶媒体121への書き込み命令を受け付け、書き込み命令に対応するデータを記憶媒体121に書き込む。
第1メモリ141は、管理情報を記憶する管理情報記憶部として機能する。管理情報は、例えばアドレス正引きテーブルを含む。なお、管理情報は、以降の種々の処理を簡単にするために、アドレス正引きテーブルの情報から導出可能な情報を別途含んでいてもよい。また、以降の種々の処理において、処理を簡単にするために、アドレス正引きテーブルの情報から導出可能な情報を用いて種々の処理を実行してもよい。
アドレス正引きテーブルは、記憶装置100内部のデータの管理単位である論理アドレス情報と、論理アドレスのデータが格納されている記憶媒体121の物理的なアドレス情報とを対応付けたテーブルである。図7は、アドレス正引きテーブルの構成例を示す図である。例えば、論理アドレスのデータのサイズが記憶媒体121のページのサイズよりも小さい場合は、図7に示すように、論理アドレス情報を昇順に並べたものをテーブルのインデックスとする。そして、テーブルの要素として、記憶媒体121の物理的なアドレス情報であるブロック番号とページ番号とページ上オフセットとの組を記憶する。論理アドレスのデータのサイズは、例えば、1024バイトのように定められているが、これに限られない。
ページ上オフセットは、論理アドレスのデータのサイズが記憶媒体121のページのサイズより小さい場合に指定される。例えば、論理アドレスのデータのサイズが記憶媒体121のページのサイズの2分の1の場合、ページ上オフセットとして「0」または「1」を指定することにより、それぞれ、データがページの前半または後半に記憶されていることが表される。ページ上オフセットの指定方法は2値に限られるものではない。例えば、論理アドレスのデータのサイズがページのサイズのn分の1(nは2以上の整数)の場合に、n値でページ上オフセットを指定するように構成してもよい。
なお、アドレス正引きテーブルの構成は、図7に示される構成に限られない。例えば、論理アドレスのデータのサイズが記憶媒体121のページのサイズと同じ場合は、ページ上オフセットは不要である。また、例えば記憶媒体121に並列アクセスして速度向上を図るために記憶媒体121を複数搭載するような場合は、各記憶媒体121から選出したブロック群を束ねた論理ブロックという単位で種々の情報を管理してもよい。また、論理ブロックを構成するブロック201の同一ページ番号のページを束ねた論理ページという単位で種々の情報を管理してもよい。この場合、管理情報に、論理ブロック情報から論理ブロックを構成するブロック201の情報を導出するための論物変換表(図示せず)をさらに含ませてもよい。この場合、記憶媒体121の物理的なアドレス情報として、論理ブロック番号と、論理ページ番号と、論理ページ上オフセットとが含まれてもよい。このように、アドレス正引きテーブルの構成は種々変形可能である。以降は、記憶媒体121の物理的なアドレス情報として、ブロック番号と、ページ番号と、ページ上オフセットとが含まれる構成で説明する。物理的なアドレス情報は、アドレス正引きテーブルの種々の構成に適宜読みかえることが可能である。
第1アクセス制御部151は、要求元から指示される第1メモリ141からの読み込み命令を受け付け、読み込み命令に対応するデータを第1メモリ141から読み込み、要求元に返却する。また、第1アクセス制御部151は、要求元から指示される第1メモリ141への書き込み命令を受け付け、書き込み命令に対応するデータを第1メモリ141に書き込む。
第2メモリ142は、転記位置情報を記憶する。転記位置情報は、転記元のデータの位置情報と転記先の位置情報とを対応づけた情報である。図8は、転記位置情報の構成例を示す図である。図8は、転記先のブロック201が決定された後、当該ブロック201に含まれる各メモリセル群202に対する書き込み処理で参照される転記位置情報の例を示している。
メモリセル群番号は、転記先のメモリセル群202のメモリセル群番号を表す。対象ページは、当該メモリセル群202の各書き込みステージで書き込みの対象となるページを表す。転記元アドレス情報は、対象ページに転記するデータ(転記元データ)を特定する情報である。転記元アドレス情報は、論理アドレス情報と、ブロック番号と、ページ番号と、ページ上オフセットと、を含む。
例えば、論理アドレスのデータのサイズが記憶媒体121のページのサイズの2分の1の場合で、各書き込みステージの対象ページが図5に示されるような場合、図8に示すように、転記先のメモリセル群202の各書き込みステージの各対象ページに対して書き込む転記元データとして、2つ分の論理アドレスのデータが対応付けられる。
対応付けられる情報は、転記元データの論理アドレス情報と、物理的なアドレス情報(ブロック番号、ページ番号、ページ上オフセット)である。例えば、図8の場合、対応付けられている2つ分の論理アドレスのデータのうち、1つ目の論理アドレスのデータが対象ページのオフセット0の位置に転記され、2つ目の論理アドレスのデータが対象ページのオフセット1の位置に転記されることになる。オフセットの対応付けはこの例に限られない。なお、重複する情報は1つにまとめることで、転記位置情報のサイズを削減してもよい。なお、図8に示される転記位置情報は、論理アドレスのデータのサイズが記憶媒体121のページのサイズの2分の1の場合の構成例であり、転記位置情報の構成は種々変形可能である。以降は、論理アドレスのデータのサイズが記憶媒体121のページのサイズの2分の1の場合の構成で説明するが、転記位置情報の種々の構成に適宜読みかえることが可能である。
なお、第2メモリ142が記憶する情報には、以降の種々の処理を簡単にするために、転記位置情報の情報から導出可能な情報を別途含んでいてもよい。また、以降の種々の処理において、処理を簡単にするために、転記位置情報の情報から導出可能な情報を用いて種々の処理を実行してもよい。
第2アクセス制御部152は、要求元から指示される第2メモリ142からの読み込み命令を受け付け、読み込み命令に対応するデータを第2メモリ142から読み込み、要求元に返却する。また、第2アクセス制御部152は、要求元から指示される第2メモリ142への書き込み命令を受け付け、書き込み命令に対応するデータを第2メモリ142に書き込む。
第3メモリ143は、転記データバッファとして機能するメモリ(外部記憶装置)であり、転記するデータ(転記元データ)を一時記憶する。
第3アクセス制御部153は、要求元から指示される第3メモリ143からの読み込み命令を受け付け、読み込み命令に対応するデータを第3メモリ143から読み込み、要求元に返却する。また、第3アクセス制御部153は、要求元から指示される第3メモリ143への書き込み命令を受け付け、書き込み命令に対応するデータを第3メモリ143に書き込む。
ホストインタフェース部160は、図示しないホスト装置から、書き込み命令(書き込み要求)および読み込み命令(書き込み要求)を含む各種命令を受け付ける。書き込み命令は、記憶装置アドレス情報および書き込みデータを含む。読み込み命令は、記憶装置アドレス情報を含む。記憶装置アドレス情報は、記憶装置100がホスト装置に提供するアドレス情報である。例えば、HDD(Hard Disk Drive)やSSDでの記憶装置アドレス情報の例としては、LBA(Logical Block Address)が適用できる。記憶装置アドレスのデータのサイズは、例えば、512バイトのように定められているが、これに限られない。
ホストインタフェース部160は、受け付けた命令が書き込み命令であったときは、書き込み制御部112に書き込み命令を転送する。ホストインタフェース部160は、受け付けた命令が読み込み命令であったときは、読み込み制御部111に読み込み命令を転送する。
ホストインタフェース部160は、読み込み制御部111からデータを受信すると、受信したデータをホスト装置に転送する。
書き込み制御部112は、ホストインタフェース部160から書き込み命令を受信すると、受信した書き込み命令から記憶装置アドレス情報および書き込みデータを抽出する。書き込み制御部112は、抽出した書き込みデータを、記憶媒体121の所定の物理的なアドレスに書き込むように、媒体アクセス制御部131に書き込みを指示する。書き込み制御部112は、書き込みデータを書き込む物理的なアドレスを、任意の方法で決定すればよい。
なお、物理的なアドレス情報が示す記憶領域が含まれるブロック201、すなわち、ホスト装置からの書き込み先として使用するブロック201と、後述する転記先として使用するブロック201とは、同一のブロック201であっても異なるブロック201であってもよい。なお、同一のブロック201である場合は、書き込み制御部112は、決定する物理的なアドレスが転記先の物理的なアドレスと重複しないように、転記制御部113と連携処理する。
書き込み制御部112は、抽出した記憶装置アドレス情報を、対応する論理アドレス情報に変換する。書き込み制御部112は、予め定められた記憶装置アドレス情報と論理アドレス情報との対応関係に従い、記憶装置アドレス情報を論理アドレス情報に変換する。例えば、記憶装置アドレス情報が512バイトごとに割り当てられ、論理アドレス情報が1024バイトごとに割り当てられている場合、書き込み制御部112は、記憶装置アドレス情報を2で除算したときの商を求めることにより、記憶装置アドレス情報を論理アドレス情報に変換できる。
書き込み制御部112は、アドレス正引きテーブルにおける、変換した論理アドレス情報が示す記憶媒体121の物理的なアドレス情報を、書き込み先の記憶媒体121の物理的なアドレス情報に更新するように、第1アクセス制御部151に書き込みを指示する。
読み込み制御部111は、ホストインタフェース部160から読み込み命令を受信すると、受信した読み込み命令から記憶装置アドレス情報を抽出する。読み込み制御部111は、抽出した記憶装置アドレス情報を、対応する論理アドレス情報に変換する。
読み込み制御部111は、アドレス正引きテーブルにおける、変換した論理アドレス情報が示す記憶媒体121の物理的なアドレス情報を読み込むように、第1アクセス制御部151に読み込みを指示し、記憶媒体121の物理的なアドレス情報を取得する。
読み込み制御部111は、取得した記憶媒体121の物理的なアドレスに記録されているデータを読み込むように、媒体アクセス制御部131に読み込みを指示し、データを取得する。読み込み制御部111は、取得したデータをホストインタフェース部160に送信する。
転記制御部113と決定部114と読み込み部116と書き込み部117と更新部115とが連携して、メモリセル群に含まれる第1メモリセル群の書き込み処理に必要なページが、所定の書き込み順序で実行する場合に初めて必要となる書き込みステージが開始される前までに、第1メモリセル群の書き込み処理に必要なページに転記するデータを決定し、書き込みステージが開始される前までに、決定されたデータを半導体記憶装置から読み込んで外部記憶装置に記憶し、書き込みステージの実行順序となった場合に、外部記憶装置に記憶されたデータを第1メモリセル群の書き込みステージの書き込み処理に必要なページのデータとして、第1メモリセル群の書き込みステージの書き込み処理を実行し、書き込み部が第1メモリセル群の書き込みステージの書き込み処理に必要なページのデータとして書き込んだデータを記憶する外部記憶装置内の記憶領域を、書き込みステージの書き込み処理が完了後、解放し、第1メモリセル群における最後の(P個目の)書き込みステージの書き込み処理が完了後、決定されたデータの論理アドレスに対応する管理情報の物理アドレスを、第1メモリセル群内に対応付けられたページでのデータを書き込んだ位置を表す物理アドレスに更新する。また、必要に応じて、第1メモリセル群の書き込みステージの書き込み処理に必要なページのデータとして書き込んだデータを記憶する外部記憶装置内の記憶領域を、書き込みステージの書き込み処理が完了後、書き込みステージの次の書き込みステージの書き込み処理に必要なページのデータを読み込む処理が開始される前までに解放する。また、必要に応じて、決定されたデータが記憶されている外部記憶装置内の記憶領域が解放されていない場合は、決定されたデータを半導体記憶装置から読み込まない。また、必要に応じて、複数の第1メモリセル群における最後の(P個目の)書き込みステージに対するデータの書き込み処理が完了した後に、複数の第1メモリセル群に対応付けられたページに書き込んだデータの物理アドレスをまとめて更新する。また、必要に応じて、半導体記憶装置に対するアクセス処理等の処理と、物理アドレスの更新処理とを適宜切り替えながら実行する。以降、詳細な一例を説明する。
転記制御部113は、転記の必要性が生じると、転記処理を制御する。前述したように、各書き込みステージで書き込み対象となる対象ページは1個以上存在する。転記制御部113は、所定の順序で各書き込みステージを実行する場合に、あるページが初めて対象ページとなる書き込みステージが開始される前までに、当該対象ページに転記するデータを決定するように、決定部114に指示する。
一例として、各書き込みステージでの対象ページが図5に示される場合で、各メモリセル群202の各書き込みステージの所定の順序が図6に示される場合について説明する。この場合、書き込み順が1番目であるメモリセル群番号0のメモリセル群202の第1ステージの対象ページは、メモリセル群番号0のメモリセル群202の第1ページとメモリセル群番号1のメモリセル群202の第1ページである。そして、メモリセル群番号0のメモリセル群202の第1ページとメモリセル群番号1のメモリセル群202の第1ページの両方が、転記先のブロック201における、各メモリセル群202の各書き込みステージを所定の順序で実行する場合に初めて対象ページとなるページである。
また、書き込み順が2番目であるメモリセル群番号1のメモリセル群202の第1ステージの対象ページは、メモリセル群番号1のメモリセル群202の第1ページとメモリセル群番号2のメモリセル群202の第1ページである。このうちメモリセル群番号2のメモリセル群202の第1ページが、転記先のブロック201における、各メモリセル群202の各書き込みステージを所定の順序で実行する場合に初めて対象ページとなるページである。
したがって、書き込み順が1番目であるメモリセル群番号0のメモリセル群202の第1ステージになるまでの間に、メモリセル群番号0のメモリセル群202の第1ページとメモリセル群番号1のメモリセル群202の第1ページに転記すべきデータを決定するように、転記制御部113は決定部114に指示する。また、書き込み順が2番目であるメモリセル群番号1のメモリセル群202の第1ステージになるまでの間に、メモリセル群番号2のメモリセル群202の第1ページに転記すべきデータを決定するように、転記制御部113は決定部114に指示する。
ここで、メモリセル群番号1のメモリセル群202の第1ページに転記すべきデータ(転記データ)は、書き込み順が2番目であるメモリセル群番号1のメモリセル群202の第1ステージで必要になる。この転記データは、書き込み順が1番目であるメモリセル群番号0のメモリセル群202の第1ステージになるまでの間に決定されていることになる。
なお、図5に示す例と異なり、例えば、あるメモリセル群202へのある書き込みステージ数の書き込み処理の対象ページに、書き込み対象のメモリセル群202とは異なるメモリセル群202に対応付けられているページが含まれず、かつ、あるメモリセル群202の2番目以降の書き込みステージにおいて書き込み対象になるページがすべて、当該メモリセル群202の1番目の書き込みステージで書き込み対象になるページに含まれる場合は、ある転記先のメモリセル群202の1番目の書き込みステージになるまでの間に、ある転記先のメモリセル群202に対応付けられているページに転記すべきデータを決定するように、転記制御部113は決定部114に指示することになる。
転記制御部113は、転記先のメモリセル群202のある書き込みステージに必要なデータ(転記データ)が決定されてから、当該転記先のメモリセル群202の当該書き込みステージになるまでの間に、読み込み部116に対して当該転記データの読み込みを指示する。なお、転記データの読み込み処理は、1個以上の対象ページのそれぞれのページについて、決定部114によって転記データが全て決定されてから読み込むようにしてもよいし、決定部114によって転記データの少なくとも一部が決定され次第、適宜読み込むようにしてもよい。
転記データを格納している第3メモリ143のバッファ領域がまだ解放されていない場合は、読み込み処理を省略して、当該バッファ領域に既に読み込まれている転記データを今後の処理で利用してもよい。
転記制御部113は、転記先のあるメモリセル群202のある書き込みステージになったら、書き込み部117に、当該メモリセル群202への当該書き込みステージの実行を指示する。
転記制御部113は、転記先のブロック201における、各メモリセル群202の各書き込みステージを所定の順序で実行する場合に、転記先のあるメモリセル群202のある書き込みステージの書き込み処理の完了以降に、第3メモリ143内の転記データが格納されているバッファ領域を解放する。なお、当該バッファ領域は書き込みステージの完了後に直ちに解放してもよい。すなわち、ある書き込みステージの完了後、当該書き込みステージで使用したバッファ領域を、次の書き込みステージが開始する前までに解放してもよい。この場合、第3メモリ143のメモリ使用量を削減できる。また、当該バッファ領域の解放を遅延させてもよい。当該バッファ領域に格納されているデータが以降の書き込みステージでも必要になる場合、当該バッファ領域を、当該書き込みステージまで解放させないことで、読み込み処理のコストを削減できる。
転記制御部113は、転記先のメモリセル群202に対して定められた所定の順序の書き込みステージのうち最後の書き込みステージの書き込み処理の完了以降に、更新部115に対して、当該メモリセル群202に対応する1個以上のページに関する管理情報の更新を指示する。例えば、図4に示されるメモリセル群番号0のメモリセル群202の場合は、メモリセル群番号0のメモリセル群202に対応する第1ページ、第2ページ、第3ページ、第4ページである、ページ番号0、ページ番号1、ページ番号2、ページ番号3の4個のページの管理情報の更新が指示される。
なお、管理情報の更新には、後述するように、転記位置情報が必要となる。転記位置情報に含まれる情報のうち、管理情報の更新処理に必要な情報を別途記憶するなどして、所定のまとまった単位で管理情報を更新するように、転記制御部113は更新部115に管理情報の更新を指示してもよい。例えば、所定のまとまった単位をブロック201とする場合、転記制御部113が、転記先のブロック201への書き込みがすべて完了したタイミングで、当該ブロック201に関する管理情報の更新処理を指示してもよい。また、更新部115は、管理情報の更新処理のみを連続して実行してもよい。この場合、更新処理の制御を簡易化できる。更新処理を連続して実行する場合、例えば記憶媒体121へのアクセスが制限される場合がありうる。このため、更新部115が、記憶媒体121へのアクセス処理などの他の処理に適宜切り替えながら更新処理を実行してもよい。
転記制御部113は、ブロック201における、各メモリセル群202の各書き込みステージの所定の順序に従って、必要に応じて前述の処理群を繰り返し実行する。
決定部114は、転記制御部113によって指定された転記先のページ(対象ページ)に転記するデータ(転記データ)を決定する。より詳細には、決定部114は、第1メモリ141から管理情報を読み込むように第1アクセス制御部151に読み込みを指示し、管理情報を取得する。決定部114は、取得した管理情報から、所定の方法に基づき、転記するデータの論理アドレス情報および物理的なアドレス情報を複数抽出する。決定部114が転記するデータを抽出する所定の方法はどのような方法であってもよい。
決定部114は、抽出した複数の論理アドレス情報および物理的なアドレス情報から、転記制御部113によって指定された転記先のページのサイズになる、論理アドレスのデータの個数分、論理アドレス情報および物理的なアドレス情報を抽出する。例えば、論理アドレスのデータのサイズが記憶媒体121のページのサイズの2分の1の場合は、抽出する論理アドレス情報および物理的なアドレス情報の個数は2になる。
なお、転記先として使用するブロック201と、ホスト装置から書き込み要求されたデータの書き込み先として書き込み制御部112が使用するブロック201とが同一のブロック201である場合、転記先のページのサイズになる論理アドレスのデータのうち一部に、ホスト装置から書き込み要求されたデータに対応する論理アドレスのデータが含まれていてもよい。
決定部114は、転記位置情報の、転記制御部113によって指定された転記先のページ(対象ページ)に対応する情報として、対象ページのサイズになる個数分の論理アドレス情報および物理的なアドレス情報を登録するように、第2アクセス制御部152に書き込みを指示する。
読み込み部116は、転記制御部113によって指定されたメモリセル群202のある書き込みステージにおいて必要な1個以上の転記データを読み込む。前述したように、論理アドレスのデータのサイズが記憶媒体121のページのサイズよりも小さい場合は、1個のページに対して複数の転記データが対応付けられる。このため、読み込み部116は、転記制御部113によって指定されたメモリセル群202のある書き込みステージの1個以上の対象ページに対応する、1個以上の物理的なアドレス情報を読み込むように、第2アクセス制御部152に読み込みを指示する。そして、読み込み部116は、当該対象ページに対応する情報である1個以上の物理的なアドレス情報を取得する。
以降、読み込み部116は、取得した1個以上の物理的なアドレス情報それぞれに対して、以下の処理を実行する。なお、以降の処理では、複数の情報あるいはデータのやり取りの方法は問わない。例えば、複数の情報あるいはデータを一度にやり取りしてもよいし、一つずつやり取りしてもよい。
読み込み部116は、記憶媒体121の取得した物理的なアドレス情報が示す位置に格納されているデータを読み込むように、媒体アクセス制御部131に読み込みを指示し、取得した物理的なアドレス情報が示す位置に格納されているデータを取得する。なお、論理アドレスのデータのサイズがページのサイズよりも小さい場合、記憶媒体121の入出力単位はページであるので、さらに、記憶媒体121から読み込んだページのデータから必要なデータを抽出する処理が実行される。
読み込み部116は、取得したデータを、第3メモリ143に一時記憶するように、第3アクセス制御部153に書き込みを指示する。
書き込み部117は、転記制御部113によって指定されたメモリセル群202の各書き込みステージの書き込み処理を実行する。より詳細には、書き込み部117は、現在処理している書き込みステージにおいて必要な1個以上の転記元アドレス情報を読み込むように、第2アクセス制御部152に読み込みを指示し、1個以上の転記元アドレス情報を取得する。
書き込み部117は、取得した1個以上の転記元アドレス情報で特定される1個以上のデータを、第3メモリ143から読み込むように、第3アクセス制御部153に読み込みを指示し、1個以上のデータを取得する。
書き込み部117は、取得した1個以上のデータを、現在処理している書き込みステージの対象ページに書き込むデータとして、当該書き込みステージの書き込み処理を実行するように、媒体アクセス制御部131に書き込みを指示する。
なお、前述の処理群では、複数の情報あるいはデータのやり取りの方法は問わない。例えば、複数の情報あるいはデータを一度にやり取りしてもよいし、一つずつやり取りしてもよい。
更新部115は、転記制御部113に指定されたメモリセル群202に対応する1個以上のページに関する管理情報の更新を指示する。記憶媒体121の説明において前述したように、メモリセル群202には1個以上のページが対応付けられている。例えば、図4に示されるメモリセル群番号0のメモリセル群202の場合は、メモリセル群番号0のメモリセル群202に対応する第1ページ、第2ページ、第3ページ、第4ページである、ページ番号0、ページ番号1、ページ番号2、ページ番号3の4個のページが対応づけられている。また、前述したように、論理アドレスのデータのサイズが記憶媒体121のページのサイズよりも小さい場合は、1個のページに対して転記するデータが複数対応付けられる。
更新部115は、転記制御部113に指定されたメモリセル群202に対応する1個以上のページについて、当該ページに転記した1個以上のデータの、論理アドレス情報および物理的なアドレス情報を読み込むように、第2アクセス制御部152に読み込みを指示し、1個以上の論理アドレス情報および物理的なアドレス情報を取得する。
また、更新部115は、取得したページに転記した1個以上のデータが、それぞれ当該ページのいずれのオフセットに転記されたかを算出する。これにより、更新部115は、転記した1個以上のデータに関して、論理アドレス情報と、転記元の物理的なアドレス情報と、転記先の物理的なアドレス情報を得る。以降、更新部115は、取得した複数の論理アドレス情報と、転記元の物理的なアドレス情報と、転記先の物理的なアドレス情報と、のそれぞれに対して、以下の処理を実行する。なお、以降の処理では、複数の情報あるいはデータのやり取りの方法は問わない。例えば、複数の情報あるいはデータを一度にやり取りしてもよいし、一つずつやり取りしてもよい。
更新部115は、アドレス正引きテーブルにおける、取得した論理アドレス情報が示す記憶媒体121の物理的なアドレス情報を、転記先の記憶媒体121の物理的なアドレス情報に更新するように、第1アクセス制御部151に書き込みを指示する。ここでは、記憶媒体121の物理的なアドレス情報として、ブロック番号と、ページ番号と、ページ上オフセットとが含まれる構成で説明している。このため、転記先の記憶媒体121の物理的なアドレス情報は、転記制御部113に指定されたメモリセル群202のブロック番号と、当該論理アドレスのデータを転記したページ番号と、当該論理アドレスのデータを転記したページ上オフセットとなる。物理的なアドレス情報は、アドレス正引きテーブルの種々の構成に適宜読みかえることが可能である。
次に、第1の実施形態の記憶装置の動作について説明する。
まず、ホスト装置からの書き込み命令に応じて、記憶装置100が行う書き込み処理の手順について、図9を参照して説明する。図9は、第1の実施形態の記憶装置100で行われる書き込み処理の流れの一例を示すフローチャートである。
ホストインタフェース部160は、ホスト装置から書き込み命令を受け付ける(ステップS11)。ホストインタフェース部160は、書き込み制御部112に書き込み命令を転送する。書き込み制御部112は、ホストインタフェース部160から書き込み命令を受信すると、受信した書き込み命令から記憶装置アドレス情報および書き込みデータを抽出する。
書き込み制御部112は、書き込み要求されたデータを記憶媒体121に書き込む(ステップS12)。より詳細には、書き込み制御部112は、抽出した書き込みデータを、記憶媒体121の所定の物理的なアドレスに書き込むように、媒体アクセス制御部131に書き込みを指示する。媒体アクセス制御部131は、書き込みデータを、書き込み要求された記憶媒体121の所定の物理的なアドレスに書き込む。
なお、書き込みデータの書き込み先であって、所定の物理的なアドレス情報が示す記憶領域が含まれるブロック201、すなわち、ホスト装置からの書き込み先として使用するブロック201と、後述する転記先として使用するブロック201とは、同一のブロック201であっても異なるブロック201であってもよい。
書き込み制御部112は、管理情報を更新する(ステップS13)。より詳細には、書き込み制御部112は、抽出した記憶装置アドレス情報を、対応する論理アドレス情報に変換する。書き込み制御部112は、アドレス正引きテーブルにおける、変換した論理アドレス情報が示す記憶媒体121の物理的なアドレス情報を、書き込み先の記憶媒体121の物理的なアドレス情報に更新するように、第1アクセス制御部151に書き込みを指示する。第1アクセス制御部151は、変換した論理アドレス情報が示す記憶媒体121の物理的なアドレス情報を、書き込み先の記憶媒体121の物理的なアドレス情報に更新(書き込み処理)する。
次に、ホスト装置からの読み込み命令に応じて、記憶装置100が行う読み込み処理の手順について、図10を参照して説明する。図10は、記憶装置100で行われる読み込み処理の流れの一例を示すフローチャートである。
ホストインタフェース部160は、ホスト装置から読み込み命令を受け付ける(ステップS21)。ホストインタフェース部160は、読み込み制御部111に読み込み命令を転送する。読み込み制御部111は、ホストインタフェース部160から読み込み命令を受信すると、受信した読み込み命令から記憶装置アドレス情報を抽出する。
読み込み制御部111は、読み込み要求されたデータを読み込む(ステップS22)。より詳細には、読み込み制御部111は、抽出した記憶装置アドレス情報を、対応する論理アドレス情報に変換する。読み込み制御部111は、アドレス正引きテーブルにおける、変換した論理アドレス情報が示す記憶媒体121の物理的なアドレス情報を読み込むように、第1アクセス制御部151に読み込みを指示する。第1アクセス制御部151は、アドレス正引きテーブルにおける、変換した論理アドレス情報が示す記憶媒体121の物理的なアドレス情報を読み込み、読み込み制御部111に返却する。読み込み制御部111は、記憶媒体121の物理的なアドレス情報を取得する。
読み込み制御部111は、取得した記憶媒体121の物理的なアドレスに記録されているデータを読み込むように、媒体アクセス制御部131に読み込みを指示する。媒体アクセス制御部131は、取得した記憶媒体121の物理的なアドレスに記録されているデータを読み込み、読み込み制御部111に返却する。読み込み制御部111は、媒体アクセス制御部131からデータを取得する。
読み込み制御部111は、読み込んだデータを返却する(ステップS23)。より詳細には、読み込み制御部111は、取得したデータを、ホストインタフェース部160に送信する。ホストインタフェース部160は、読み込み制御部111からデータを受信すると、受信したデータをホスト装置に転送する。
次に、記憶装置100が行う転記処理の手順について、図11を参照して説明する。図11は、記憶装置100で行われる転記処理の流れの一例を示すフローチャートである。なお、転記制御部113は、転記の必要性が生じると、図11に示される転記処理を制御する。転記の必要性が生じたか否かは、例えば、従来の転記処理(コンパクション処理、ガーベージコレクション処理)と同様の方法で判断できる。
最初に、転記するデータが決定される(ステップS31)。前述のように、あるメモリセル群202へのある書き込みステージの書き込み処理の対象ページは1個以上存在する。転記制御部113は、転記先のブロック201における、各メモリセル群202の各書き込みステージを所定の順序で実行する場合に、あるページが初めて対象ページとなる書き込みステージになるまでの間に、当該対象ページに転記するデータの決定を決定部114に指示する。
決定部114は、転記制御部113によって指定された転記先のページに転記するデータを決定する。より詳細には、決定部114は、第1メモリ141から管理情報を読み込むように第1アクセス制御部151に読み込みを指示する。第1アクセス制御部151は、第1メモリ141から読み込みを指示された管理情報を読み込み、要求元に返却する。決定部114は、管理情報を取得する。決定部114は、取得した管理情報から、所定の方法に基づき、転記するデータの論理アドレス情報および物理的なアドレス情報を複数抽出する。転記するデータを抽出する所定の方法は問わない。
決定部114は、抽出した複数の論理アドレス情報および物理的なアドレス情報から、転記制御部113によって指定された転記先のページのサイズになる、論理アドレスのデータの個数分、論理アドレス情報および物理的なアドレス情報を抽出する。例えば、論理アドレスのデータのサイズが記憶媒体121のページのサイズの2分の1の場合は、抽出する論理アドレス情報および物理的なアドレス情報の個数は2になる。
なお、転記先として使用するブロック201と、ホスト装置から書き込み要求されたデータの書き込み先として書き込み制御部112が使用するブロック201とが同一のブロック201である場合、転記先のページのサイズになる論理アドレスのデータのうち一部に、ホスト装置から書き込み要求されたデータに対応する論理アドレスのデータが含まれていてもよい。
決定部114は、転記位置情報の、転記制御部113によって指定された転記先のページ(対象ページ)に対応する情報として、対象ページのサイズになる個数分の論理アドレス情報および物理的なアドレス情報を登録するように、第2アクセス制御部152に書き込みを指示する。第2アクセス制御部152は、指示された情報を第2メモリ142が有する転記位置情報に登録(書き込み)する。
一例として、各書き込みステージでの対象ページが図5に示される場合で、各メモリセル群202の各書き込みステージの所定の順序が図6に示される場合について説明する。この場合、書き込み順が1番目であるメモリセル群番号0のメモリセル群202の第1ステージの対象ページは、メモリセル群番号0のメモリセル群202の第1ページとメモリセル群番号1のメモリセル群202の第1ページである。そして、メモリセル群番号0のメモリセル群202の第1ページとメモリセル群番号1のメモリセル群202の第1ページの両方が、転記先のブロック201における、各メモリセル群202の各書き込みステージを所定の順序で実行する場合に初めて対象ページとなるページである。
また、書き込み順が2番目であるメモリセル群番号1のメモリセル群202の第1ステージの対象ページは、メモリセル群番号1のメモリセル群202の第1ページとメモリセル群番号2のメモリセル群202の第1ページである。このうちメモリセル群番号2のメモリセル群202の第1ページが、転記先のブロック201における、各メモリセル群202の各書き込みステージを所定の順序で実行する場合に初めて対象ページとなるページである。
したがって、書き込み順が1番目であるメモリセル群番号0のメモリセル群202の第1ステージになるまでの間に、メモリセル群番号0のメモリセル群202の第1ページとメモリセル群番号1のメモリセル群202の第1ページに転記すべきデータを決定するように、転記制御部113は決定部114に指示する。また、書き込み順が2番目であるメモリセル群番号1のメモリセル群202の第1ステージになるまでの間に、メモリセル群番号2のメモリセル群202の第1ページに転記すべきデータを決定するように、転記制御部113は決定部114に指示する。
ここで、メモリセル群番号1のメモリセル群202の第1ページに転記すべきデータ(転記データ)は、書き込み順が2番目であるメモリセル群番号1のメモリセル群202の第1ステージで必要になる。この転記データは、書き込み順が1番目であるメモリセル群番号0のメモリセル群202の第1ステージになるまでの間に決定されていることになる。
なお、図5に示す例と異なり、例えば、あるメモリセル群202へのある書き込みステージ数の書き込み処理の対象ページに、書き込み対象のメモリセル群202とは異なるメモリセル群202に対応付けられているページが含まれず、かつ、あるメモリセル群202の2番目以降の書き込みステージにおいて書き込み対象になるページがすべて、当該メモリセル群202の1番目の書き込みステージで書き込み対象になるページに含まれる場合は、ある転記先のメモリセル群202の1番目の書き込みステージになるまでの間に、ある転記先のメモリセル群202に対応付けられているページに転記すべきデータを決定するように、転記制御部113は決定部114に指示することになる。
次に、転記するデータが読み込まれる(ステップS32)。より詳細には、転記制御部113は、転記先のメモリセル群202のある書き込みステージに必要なデータ(転記データ)が決定されてから、当該転記先のメモリセル群202の当該書き込みステージになるまでの間に、読み込み部116に対して当該転記データの読み込みを指示する。なお、転記データの読み込み処理は、1個以上の対象ページのそれぞれのページについて、決定部114によって転記データが全て決定されてから読み込むようにしてもよいし、決定部114によって転記データの少なくとも一部が決定され次第、適宜読み込むようにしてもよい。
読み込み部116は、転記制御部113によって指定されたメモリセル群202のある書き込みステージにおいて必要な1個以上の転記データを読み込む。前述したように、論理アドレスのデータのサイズが記憶媒体121のページのサイズよりも小さい場合は、1個のページに対して複数の転記データが対応付けられる。このため、読み込み部116は、転記制御部113によって指定されたメモリセル群202のある書き込みステージの1個以上の対象ページに対応する、1個以上の物理的なアドレス情報を読み込むように、第2アクセス制御部152に読み込みを指示する。
第2アクセス制御部152は、転記位置情報を有する第2メモリ142から、指定された情報を読み込み、要求元に返却する。読み込み部116は、それぞれの対象ページに対応する1個以上の物理的なアドレス情報を取得する。以降、読み込み部116は、取得した1個以上の物理的なアドレス情報それぞれに対して、以下の処理を実行する。なお、以降の処理では、複数の情報あるいはデータのやり取りの方法は問わない。例えば、複数の情報あるいはデータを一度にやり取りしてもよいし、一つずつやり取りしてもよい。
読み込み部116は、記憶媒体121の取得した物理的なアドレス情報が示す位置に格納されているデータを読み込むように、媒体アクセス制御部131に読み込みを指示する。媒体アクセス制御部131は、記憶媒体121から読み込みを指示されたデータを読み込み、要求元に返却する。読み込み部116は、取得した物理的なアドレス情報が示す位置に格納されているデータを取得する。なお、論理アドレスのデータのサイズがページのサイズよりも小さい場合、記憶媒体121の入出力単位はページであるので、さらに、記憶媒体121から読み込んだページのデータから必要なデータを抽出する処理が実行される。
読み込み部116は、取得したデータを、第3メモリ143に一時記憶するように、第3アクセス制御部153に書き込みを指示する。第3アクセス制御部153は、指示されたデータを第3メモリ143に書き込む。
なお、転記データを格納している第3メモリ143のバッファ領域がまだ解放されていない場合は、読み込み処理を省略して、当該バッファ領域に既に読み込まれている転記データを今後の処理で利用してもよい。
次に、転記するデータが記憶媒体121に書き込まれる(ステップS33)。より詳細には、転記制御部113は、転記先のあるメモリセル群202のある書き込みステージになったら、書き込み部117に、当該メモリセル群202への当該書き込みステージの実行を書き込み部117に対して指示する。
書き込み部117は、転記制御部113によって指定されたメモリセル群202の各書き込みステージの書き込み処理を実行する。より詳細には、書き込み部117は、現在処理している書き込みステージにおいて必要な1個以上の転記元アドレス情報を読み込むように、第2アクセス制御部152に読み込みを指示する。第2アクセス制御部152は、転記位置情報を有する第2メモリ142から、読み込みを指示された情報を読み込み、要求元に返却する。書き込み部117は、1個以上の転記元アドレス情報を取得する。
書き込み部117は、取得した1個以上の転記元アドレス情報で特定される1個以上のデータを、第3メモリ143から読み込むように、第3アクセス制御部153に読み込みを指示する。第3アクセス制御部153は、読み込みが指示されたデータを第3メモリ143から読み込み、要求元に返却する。書き込み部117は、1個以上のデータを取得する。
書き込み部117は、取得した1個以上のデータを、現在処理している書き込みステージの対象ページに書き込むデータとして、当該書き込みステージの書き込み処理を実行するように、媒体アクセス制御部131に書き込みを指示する。
媒体アクセス制御部131は、現在処理している書き込みステージの対象ページに書き込むデータとして、書き込みを指示されたデータを用いて、現在処理している書き込みステージの書き込み処理を実行する。
なお、前述の処理群では、複数の情報あるいはデータのやり取りの方法は問わない。例えば、複数の情報あるいはデータを一度にやり取りしてもよいし、一つずつやり取りしてもよい。
転記制御部113は、転記先のブロック201における、各メモリセル群202の各書き込みステージを所定の順序で実行する場合に、転記先のあるメモリセル群202のある書き込みステージの書き込み処理の完了以降に、第3メモリ143内の転記データが格納されているバッファ領域を解放する。なお、当該バッファ領域は書き込みステージの完了後に直ちに解放してもよい。この場合、第3メモリ143のメモリ使用量を削減できる。また、当該バッファ領域の解放を遅延させてもよい。当該バッファ領域に格納されているデータが以降の書き込みステージでも必要になる場合、当該バッファ領域を、当該書き込みステージまで解放させないことで、読み込み処理のコストを削減できる。
次に、管理情報が更新される(ステップS34)。より詳細には、転記制御部113は、転記先のメモリセル群202に対して定められた所定の順序の書き込みステージのうち最後の書き込みステージの書き込み処理の完了以降に、更新部115に対して、当該メモリセル群202に対応する1個以上のページに関する管理情報の更新を指示する。例えば、図4に示されるメモリセル群番号0のメモリセル群202の場合は、メモリセル群番号0のメモリセル群202に対応する第1ページ、第2ページ、第3ページ、第4ページである、ページ番号0、ページ番号1、ページ番号2、ページ番号3の4個のページの管理情報の更新が指示される。
なお、管理情報の更新には、後述するように、転記位置情報が必要となる。転記位置情報に含まれる情報のうち、管理情報の更新処理に必要な情報を別途記憶するなどして、所定のまとまった単位で管理情報を更新するように、転記制御部113は更新部115に管理情報の更新を指示してもよい。例えば、所定のまとまった単位をブロック201とする場合、転記制御部113が、転記先のブロック201への書き込みがすべて完了したタイミングで、当該ブロック201に関する管理情報の更新処理を指示してもよい。また、更新部115は、管理情報の更新処理のみを連続して実行してもよい。更新部115が、記憶媒体121へのアクセス処理などの他の処理に適宜切り替えながら更新処理を実行してもよい。
更新部115は、転記制御部113に指定されたメモリセル群202に対応する1個以上のページに関する管理情報の更新を指示する。記憶媒体121の説明において前述したように、メモリセル群202には1個以上のページが対応付けられている。例えば、図4に示されるメモリセル群番号0のメモリセル群202の場合は、メモリセル群番号0のメモリセル群202に対応する第1ページ、第2ページ、第3ページ、第4ページである、ページ番号0、ページ番号1、ページ番号2、ページ番号3の4個のページが対応づけられている。また、前述したように、論理アドレスのデータのサイズが記憶媒体121のページのサイズよりも小さい場合は、1個のページに対して転記するデータが複数対応付けられる。
更新部115は、転記制御部113に指定されたメモリセル群202に対応する1個以上のページについて、当該ページに転記した1個以上のデータの、論理アドレス情報および物理的なアドレス情報を読み込むように、第2アクセス制御部152に読み込みを指示する。
第2アクセス制御部152は、転記位置情報を有する第2メモリ142から読み込みを指示された情報を読み込み、要求元に返却する。更新部115は、1個以上の論理アドレス情報および物理的なアドレス情報を取得する。また、更新部115は、取得したページに転記した1個以上のデータが、それぞれ当該ページのいずれのオフセットに転記されたかを算出する。これにより、更新部115は、転記した1個以上のデータに関して、論理アドレス情報と、転記元の物理的なアドレス情報と、転記先の物理的なアドレス情報を得る。以降、更新部115は、取得した複数の論理アドレス情報と、転記元の物理的なアドレス情報と、転記先の物理的なアドレス情報と、のそれぞれに対して、以下の処理を実行する。なお、以降の処理では、複数の情報あるいはデータのやり取りの方法は問わない。例えば、複数の情報あるいはデータを一度にやり取りしてもよいし、一つずつやり取りしてもよい。
更新部115は、アドレス正引きテーブルにおける、取得した論理アドレス情報が示す記憶媒体121の物理的なアドレス情報を、転記先の記憶媒体121の物理的なアドレス情報に更新するように、第1アクセス制御部151に書き込みを指示する。第1アクセス制御部151は、第1メモリ141が有するアドレス正引きテーブルに登録されている情報を、指示された情報に更新(書き込み)する。
ここでは、記憶媒体121の物理的なアドレス情報として、ブロック番号と、ページ番号と、ページ上オフセットとが含まれる構成で説明している。このため、転記先の記憶媒体121の物理的なアドレス情報は、転記制御部113に指定されたメモリセル群202のブロック番号と、当該論理アドレスのデータを転記したページ番号と、当該論理アドレスのデータを転記したページ上オフセットとなる。物理的なアドレス情報は、アドレス正引きテーブルの種々の構成に適宜読みかえることが可能である。
この後、必要に応じてステップS31〜ステップS34までの処理が繰り返される(ステップS35)。より詳細には、転記制御部113は、ブロック201における、各メモリセル群202の各書き込みステージの所定の順序に従って、必要に応じて、ステップS31〜ステップS34の処理群を繰り返し実行する。処理を繰り返す必要がなくなったら処理を終了する。
このように、第1の実施形態にかかる記憶装置では、複数の書き込みステージおよびメモリセル群の書き込み順番等が規定されている場合であっても、適切なタイミングで必要なデータを準備し、適切な順番で半導体記憶媒体に対して転記処理を実行することができる。
ところで、半導体記憶媒体の微細化に伴い、あるメモリセル群へのデータの書き込みによって、隣接するメモリセル群に記録されているデータに影響が出るようになってきている。下記参考文献に示されるようなNANDフラッシュメモリでは、以下に説明するような書き込みシーケンスを採用することで、この影響を打ち消している。
(参考文献)"A 5.6MB/s 64Gb 4b/Cell NAND Flash memory in 43nm CMOS", Solid-State Circuits Conference - Digest of Technical Papers, 2009. ISSCC 2009. IEEE International, 8-12 Feb. 2009, pp.246 - 247, 247a.
すなわち、このようなNANDフラッシュメモリでは、各書き込みステージで必要になるページの対応付けは、例えば、図12に示されるようになっている。図12は、各書き込みステージで書き込みの対象となるページ(対象ページ)の他の例を示す図である。例えば、図12に示されるように、あるメモリセル群202の全ての書き込みステージでは同じページが必要であり、また、書き込み対象のメモリセル群202とは異なるメモリセル群202に対応付けられているページは含まれていない。
また、このようなNANDフラッシュメモリでは、各メモリセル群202の各書き込みステージを実行する順序は、例えば、図13に示されるようになっている。図13は、書き込み順序の他の例を示す図である。図13では、例えば、メモリセル群番号0のメモリセル群202の第1ステージの書き込み処理を実行した後は、順に、メモリセル群番号1のメモリセル群202の第1ステージ、メモリセル群番号0のメモリセル群202の第2ステージの書き込み処理を実行しなければならないことが示されている。このような順序にすることで、あるメモリセル群へのデータの書き込みによって、隣接するメモリセル群に記録されているデータに生ずる影響を打ち消している。
このような書き込みシーケンスを有するNANDフラッシュメモリを記憶媒体121として使用する場合、本実施形態では、第3メモリ143に、4ページ分×3=12ページ分以上の容量を確保し、読み込んだデータが必要な間は読み込んだデータが格納されているバッファ領域を解放しないように構成してもよい。これにより、同一データを複数回読み込むことなく転記処理が実現できる。しかし、半導体記憶媒体の微細化および大容量化に伴い、ページの容量が増大してきており、転記処理で使用するメモリ容量を削減する必要がある。
一方、本実施形態では、各書き込みステージの書き込み処理が完了した直後に、各書き込みステージで必要なデータが格納されているバッファ領域を解放し、各書き込みステージになった時に、当該メモリセル群の当該書き込みステージで必要なデータを記憶媒体121から読み込むように構成することもできる。これにより、第3メモリ143の容量を4ページ分の容量に抑えることが可能になり、転記処理で使用するメモリ容量を削減できる。
また、例示した書き込みシーケンスと同様の書き込みシーケンスを有する3ビット/セルのNANDフラッシュメモリを記憶媒体121として使用する場合でも同様のことが言える。図14は、この場合の各書き込みステージで書き込みの対象となるページ(対象ページ)の例を示す図である。
例えば、各書き込みステージで必要になるページの対応付けが、図14に示されるようなものであるとする。また、各メモリセル群202の各書き込みステージを実行する順序は、例えば、図13に示されるようなものであるとする。このような書き込みシーケンスを有するNANDフラッシュメモリを記憶媒体121として使用する場合、本実施形態では、第3メモリ143に、3ページ分×3=9ページ分以上の容量を確保し、読み込んだデータが必要な間は読み込んだデータが格納されているバッファ領域を解放しないように構成してもよい。これにより、同一データを複数回読み込むことなく転記処理が実現できる。一方、本実施形態では、各書き込みステージの書き込み処理が完了した直後に、各書き込みステージで必要なデータが格納されているバッファ領域を解放し、各書き込みステージになった時に、当該メモリセル群の当該書き込みステージで必要なデータを記憶媒体121から読み込むように構成することもできる。これにより、第3メモリ143の容量を3ページ分の容量に抑えることが可能になり、転記処理で使用するメモリ容量を削減できる。
(第2の実施形態)
ところで、同一の論理アドレスのデータに対してホスト装置から書き込み要求されたデータを書き込む処理と転記処理とが重なる可能性があり、管理情報の整合性を担保する必要がある。そこで、第2の実施形態では、転記処理における管理情報の更新処理において、管理情報の整合性を担保する例について説明する。
まず、第2の実施形態の記憶装置の構成について説明する。なお、第1の実施形態と同様の機能を有する構成要素については、第1の実施形態と同様の名称および符号を付し、その説明を省略する。
図15は、第2の実施形態の記憶装置100−2の機能構成の概要の一例を示すブロック図である。図15に示すように、記憶装置100−2は、コントローラ110−2と、第1アクセス制御部151と、第1メモリ141と、第2アクセス制御部152と、第2メモリ142と、第3アクセス制御部153と、第3メモリ143と、媒体アクセス制御部131と、記憶媒体121と、ホストインタフェース部160と、を有する。コントローラ110−2は、転記制御部113−2と、決定部114と、読み込み部116と、書き込み部117と、更新部115−2と、書き込み制御部112と、読み込み制御部111と、を有する。
転記制御部113−2は、連携先の複数の構成要素のうち、更新部115が更新部115−2に置き換わる点が第1の実施形態の転記制御部113と異なるのみであるので、詳細な説明は省略する。
更新部115−2は、メモリセル群に含まれる第1メモリセル群に対応付けられたページに書き込む前のデータのメモリセル群内に対応付けられたページでの書き込み位置を表す物理アドレスと、データの論理アドレスに対応する管理情報の物理アドレスと、が一致する場合に、データの論理アドレスに対応する管理情報の物理アドレスを、第1メモリセル群内に対応付けられたページでのデータを書き込んだ位置を表す物理アドレスに更新する。以降、詳細な一例を説明する。
更新部115−2は、第1の実施形態の更新部115が実行する処理の一部の処理と同様な以下の処理を実行する。
更新部115−2は、転記制御部113−2に指定されたメモリセル群202に対応する1個以上のページに関する管理情報の更新を指示する。
記憶媒体121の説明において前述したように、メモリセル群202には1個以上のページが対応付けられている。例えば、図4に示されるメモリセル群番号0のメモリセル群202の場合は、メモリセル群番号0のメモリセル群202に対応する第1ページ、第2ページ、第3ページ、第4ページである、ページ番号0、ページ番号1、ページ番号2、ページ番号3の4個のページが対応づけられている。また、前述したように、論理アドレスのデータのサイズが記憶媒体121のページのサイズよりも小さい場合は、1個のページに対して転記するデータが複数対応付けられる。
更新部115−2は、転記制御部113−2に指定されたメモリセル群202に対応する1個以上のページについて、当該ページに転記した1個以上のデータの、論理アドレス情報および物理的なアドレス情報を読み込むように、第2アクセス制御部152に読み込みを指示し、1個以上の論理アドレス情報および物理的なアドレス情報を取得する。
また、更新部115−2は、取得したページに転記した1個以上のデータが、それぞれ当該ページのいずれのオフセットに転記されたかを算出する。これにより、更新部115−2は、転記した1個以上のデータに関して、論理アドレス情報と、転記元の物理的なアドレス情報と、転記先の物理的なアドレス情報を得る。以降、更新部115−2は、取得した複数の論理アドレス情報と、転記元の物理的なアドレス情報と、転記先の物理的なアドレス情報それぞれに対して、以下の処理を実行する。なお、以降の処理では、複数の情報あるいはデータのやり取りの方法は問わない。例えば、複数の情報あるいはデータを一度にやり取りしてもよいし、一つずつやり取りしてもよい。
また、更新部115−2は、アドレス正引きテーブルにおける、取得した論理アドレス情報が対応する記憶媒体121の物理的なアドレス情報(以降、更新前の物理的なアドレス情報と呼ぶ)を読み込むように、第1アクセス制御部151に指示し、アドレス正引きテーブルにおける、更新前の物理的なアドレス情報を取得する。更新部115−2は、転記元の物理的なアドレス情報と、更新前の物理的なアドレス情報を比較する。
比較結果が一致していなかった場合は、同一の論理アドレスのデータに対してホスト装置から書き込み要求されたデータを書き込む処理と転記処理とが重なっており、かつ、ホスト装置から書き込み要求されたデータを書き込む処理において実行される、アドレス正引きテーブルの更新処理が、少なくとも比較時点で終了していることを示している。したがって、更新部115−2は、比較結果が一致していなかった場合は更新部115−2の処理を終える。
一方、比較結果が一致していた場合は、仮に、同一の論理アドレスのデータに対してホスト装置から書き込み要求されたデータを書き込む処理と転記処理とが重なっていた場合であっても、ホスト装置から書き込み要求されたデータを書き込む処理において実行される、アドレス正引きテーブルの更新処理が、少なくとも比較時点では開始されていないことを示している。したがって、更新部115−2は、更新部115が実行する処理の一部の処理と同様な以下の処理を実行する。
更新部115−2は、アドレス正引きテーブルにおける、取得した論理アドレス情報が示す記憶媒体121の物理的なアドレス情報を、転記先の記憶媒体121の物理的なアドレス情報に更新するように、第1アクセス制御部151に書き込みを指示する。ここでは、記憶媒体121の物理的なアドレス情報として、ブロック番号と、ページ番号と、ページ上オフセットとが含まれる構成で説明している。このため、転記先の記憶媒体121の物理的なアドレス情報は、転記制御部113−2に指定されたメモリセル群202のブロック番号と、当該論理アドレスのデータを転記したページ番号と、当該論理アドレスのデータを転記したページ上オフセットとなる。物理的なアドレス情報は、アドレス正引きテーブルの種々の構成に適宜読みかえることが可能である。
以上のように、転記元の物理的なアドレス情報と、更新前の物理的なアドレス情報を比較し、一致していたらアドレス正引きテーブルの情報を更新し、一致していなかったらアドレス正引きテーブルの情報を更新しない。これにより、同一の論理アドレスのデータに対してホスト装置から書き込み要求されたデータを書き込む処理と転記処理とが重なる場合において、管理情報の整合性を担保することができる。
次に、第2の実施形態の記憶装置の動作について説明する。図16は、第2の実施形態の記憶装置100−2で行われる転記処理の流れの一例を示すフローチャートである。
転記制御部113−2は、転記の必要性が生じると、図16に示される転記処理を制御する。
ステップS41からステップS43までは、第1の実施形態にかかる記憶装置100におけるステップS31からステップS33(図11)までと同様の処理なので、その説明を省略する。
転記制御部113−2は、転記元の物理的なアドレス情報と、更新前の物理的なアドレス情報を比較する(ステップS44)。より詳細には、転記制御部113−2は、転記先のメモリセル群202に対して定められた所定の順序の書き込みステージのうち最後の書き込みステージの書き込み処理の完了以降に、更新部115−2に、当該メモリセル群202に対応する1個以上のページに関する管理情報の更新を指示する。例えば、図4に示されるメモリセル群番号0のメモリセル群202の場合は、メモリセル群番号0のメモリセル群202に対応する第1ページ、第2ページ、第3ページ、第4ページである、ページ番号0、ページ番号1、ページ番号2、ページ番号3の4個のページの管理情報の更新が指示される。
なお、管理情報の更新には、転記位置情報が必要である。転記位置情報に含まれる情報のうち、管理情報の更新処理に必要な情報を別途記憶するなどして、所定のまとまった単位で管理情報を更新するように、転記制御部113−2は更新部115−2に管理情報の更新を指示してもよい。例えば、所定のまとまった単位をブロック201とする場合、転記制御部113−2が、転記先のブロック201への書き込みがすべて完了したタイミングで、当該ブロック201に関する管理情報の更新処理を指示してもよい。また、更新部115−2は、管理情報の更新処理のみを連続して実行してもよい。更新部115−2が、記憶媒体121へのアクセス処理などの他の処理に適宜切り替えながら更新処理を実行してもよい。
更新部115−2は、転記制御部113−2に指定されたメモリセル群202に対応する1個以上のページに関する管理情報の更新を指示する。記憶媒体121の説明において前述したように、メモリセル群202には1個以上のページが対応付けられている。例えば、図4に示されるメモリセル群番号0のメモリセル群202の場合は、メモリセル群番号0のメモリセル群202に対応する第1ページ、第2ページ、第3ページ、第4ページである、ページ番号0、ページ番号1、ページ番号2、ページ番号3の4個のページが対応づけられている。また、前述したように、論理アドレスのデータのサイズが記憶媒体121のページのサイズよりも小さい場合は、1個のページに対して転記するデータが複数対応付けられる。
更新部115−2は、転記制御部113−2に指定されたメモリセル群202に対応する1個以上のページについて、当該ページに転記した1個以上のデータの、論理アドレス情報および物理的なアドレス情報を読み込むように、第2アクセス制御部152に読み込みを指示する。第2アクセス制御部152は、転記位置情報を有する第2メモリ142から読み込みを指示された情報を読み込み、要求元に返却する。更新部115−2は、1個以上の論理アドレス情報および物理的なアドレス情報を取得する。
また、更新部115−2は、取得したページに転記した1個以上のデータが、それぞれ当該ページのいずれのオフセットに転記されたかを算出する。これにより、更新部115−2は、転記した1個以上のデータに関して、論理アドレス情報と、転記元の物理的なアドレス情報と、転記先の物理的なアドレス情報とを得る。以降、更新部115−2は、取得した複数の論理アドレス情報と、転記元の物理的なアドレス情報と、転記先の物理的なアドレス情報と、のそれぞれに対して、以下の処理を実行する。なお、以降の処理では、複数の情報あるいはデータのやり取りの方法は問わない。例えば、複数の情報あるいはデータを一度にやり取りしてもよいし、一つずつやり取りしてもよい。
また、更新部115−2は、アドレス正引きテーブルにおける、取得した論理アドレス情報が対応する記憶媒体121の物理的なアドレス情報(以降、更新前の物理的なアドレス情報と呼ぶ)を読み込むように、第1アクセス制御部151に指示し、アドレス正引きテーブルにおける、更新前の物理的なアドレス情報を取得する。更新部115−2は、転記元の物理的なアドレス情報と、更新前の物理的なアドレス情報を比較する。
更新部115−2は、転記元の物理的なアドレス情報と、更新前の物理的なアドレス情報とが一致しているか否かを判断する(ステップS45)。一致しない場合(ステップS45:No)、同一の論理アドレスのデータに対してホスト装置から書き込み要求されたデータを書き込む処理と転記処理とが重なっており、かつ、ホスト装置から書き込み要求されたデータを書き込む処理において実行される、アドレス正引きテーブルの更新処理が、少なくとも比較時点で終了していることを示している。したがって、ステップS47に進む。
一方、転記元の物理的なアドレス情報と、更新前の物理的なアドレス情報とが一致する場合(ステップS45:Yes)、仮に、同一の論理アドレスのデータに対してホスト装置から書き込み要求されたデータを書き込む処理と転記処理とが重なっていた場合であっても、ホスト装置から書き込み要求されたデータを書き込む処理において実行される、アドレス正引きテーブルの更新処理が、少なくとも比較時点では開始されていないことを示している。したがって、ステップS46に進む。
ステップS46では、更新部115−2が管理情報を更新する(ステップS46)。より詳細には、更新部115−2は、アドレス正引きテーブルにおける、取得した論理アドレス情報が示す記憶媒体121の物理的なアドレス情報を、転記先の記憶媒体121の物理的なアドレス情報に更新するように、第1アクセス制御部151に書き込みを指示する。第1アクセス制御部151は、第1メモリ141が有するアドレス正引きテーブルに登録されている情報を、指示された情報に更新(書き込み)する。
ここでは、記憶媒体121の物理的なアドレス情報として、ブロック番号と、ページ番号と、ページ上オフセットと、が含まれる構成で説明している。このため、転記先の記憶媒体121の物理的なアドレス情報は、転記制御部113−2に指定されたメモリセル群202のブロック番号と、当該論理アドレスのデータを転記したページ番号と、当該論理アドレスのデータを転記したページ上オフセットとなる。物理的なアドレス情報は、アドレス正引きテーブルの種々の構成に適宜読みかえることが可能である。
ステップS47では、必要に応じて処理が繰り返される。より詳細には、転記制御部113−2は、ブロック201における、各メモリセル群202の各書き込みステージの所定の順序に従って、必要に応じて、ステップS41〜ステップS46の処理群を繰り返し実行する。処理を繰り返す必要がなくなったら処理を終了する。
以上説明したとおり、第1から第2の実施形態によれば、適切なタイミングで必要なデータを準備し、適切な順番で半導体記憶媒体に対して読み書き処理を実行する転記処理が実現できる。
第1または第2の実施形態にかかる記憶装置で実行されるプログラムは、ROM等に予め組み込まれて提供される。
第1または第2の実施形態にかかる記憶装置で実行されるプログラムは、インストール可能な形式又は実行可能な形式のファイルでCD−ROM(Compact Disk Read Only Memory)、フレキシブルディスク(FD)、CD−R(Compact Disk Recordable)、DVD(Digital Versatile Disk)等のコンピュータで読み取り可能な記録媒体に記録してコンピュータプログラムプロダクトとして提供されるように構成してもよい。
さらに、第1または第2の実施形態にかかる記憶装置で実行されるプログラムを、インターネット等のネットワークに接続されたコンピュータ上に格納し、ネットワーク経由でダウンロードさせることにより提供するように構成してもよい。また、第1または第2の実施形態にかかる記憶装置で実行されるプログラムをインターネット等のネットワーク経由で提供または配布するように構成してもよい。
第1または第2の実施形態にかかる記憶装置で実行されるプログラムは、コンピュータを前述した記憶装置の各部(読み込み制御部、書き込み制御部、転記制御部、決定部、更新部、読み込み部、書き込み部)として機能させうる。このコンピュータは、CPUがコンピュータ読取可能な記憶媒体からプログラムを主記憶装置上に読み出して実行することができる。
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
100、100−2 記憶装置
110、110−2 コントローラ
111 読み込み制御部
112 書き込み制御部
113、113−2 転記制御部
114 決定部
115、115−2 更新部
116 読み込み部
117 書き込み部
121 記憶媒体
131 媒体アクセス制御部
141 第1メモリ
142 第2メモリ
143 第3メモリ
151 第1アクセス制御部
152 第2アクセス制御部
153 第3アクセス制御部
160 ホストインタフェース部

Claims (13)

  1. データを記憶する外部記憶装置に接続され、複数のメモリセルを含むメモリセル群をN個(Nは2以上の整数)含む複数のブロックを含む半導体記憶装置に対するアクセスを制御するコントローラであって、
    前記ブロックは複数のページを有し、
    前記ページは所定の単位の記憶領域であり、
    前記メモリセル群には複数のページが対応付けられており、
    前記メモリセル群に対する書き込み処理は、前記メモリセル群に対してデータを書き込む処理の単位である書き込みステージをP個(Pは2以上の整数)含み、
    前記書き込みステージのそれぞれは、書き込み対象となる前記メモリセル群の書き込み処理に必要なページが予め定められており、
    前記書き込みステージのそれぞれは、実行する順序が予め定められており、
    前記メモリセル群に含まれる第1メモリセル群の書き込み処理に必要なページが、前記順序で実行する場合に初めて必要となる前記書き込みステージが開始される前までに、前記第1メモリセル群の書き込み処理に必要なページに転記するデータを決定する決定部と、
    前記書き込みステージが開始される前までに、決定された前記データを前記半導体記憶装置から読み込んで前記外部記憶装置に記憶する読み込み部と、
    前記書き込みステージの実行順序となった場合に、前記外部記憶装置に記憶された前記データを前記第1メモリセル群の前記書き込みステージの書き込み処理に必要なページのデータとして、前記第1メモリセル群の前記書き込みステージの書き込み処理を実行する書き込み部と、
    を備えることを特徴とするコントローラ。
  2. 前記書き込み部が前記第1メモリセル群の前記書き込みステージの書き込み処理に必要なページのデータとして書き込んだ前記データを記憶する前記外部記憶装置内の記憶領域を、前記書き込みステージの書き込み処理が完了後、解放する転記制御部をさらに備えること、
    を特徴とする請求項1に記載のコントローラ。
  3. 前記転記制御部は、前記書き込み部が前記第1メモリセル群の前記書き込みステージの書き込み処理に必要なページのデータとして書き込んだ前記データを記憶する前記外部記憶装置内の記憶領域を、前記書き込みステージの書き込み処理が完了後、前記書き込みステージの次の前記書き込みステージの書き込み処理に必要なページのデータを読み込む処理が開始される前までに解放すること、
    を特徴とする請求項2に記載のコントローラ。
  4. 前記読み込み部は、決定された前記データが記憶されている前記外部記憶装置内の記憶領域が解放されていない場合は、決定された前記データを前記半導体記憶装置から読み込まないこと、
    を特徴とする請求項2に記載のコントローラ。
  5. 前記半導体記憶装置に記憶されるデータの論理アドレスと物理アドレスとを対応づけた管理情報を記憶する管理情報記憶部に接続され、
    前記第1メモリセル群における最後の書き込みステージの書き込み処理が完了後、前記決定部により決定された前記データの前記論理アドレスに対応する前記管理情報の前記物理アドレスを、前記第1メモリセル群内に対応付けられたページでの前記データを書き込んだ位置を表す前記物理アドレスに更新する更新部をさらに備えること、
    を特徴とする請求項1〜4のいずれか1つに記載のコントローラ。
  6. 前記更新部は、複数の前記第1メモリセル群における最後の書き込みステージの書き込み処理が完了した後に、複数の前記第1メモリセル群に対応付けられたページに書き込んだ前記データの前記物理アドレスをまとめて更新すること、
    を特徴とする請求項5に記載のコントローラ。
  7. 前記更新部は、前記半導体記憶装置に対するアクセス処理と、前記物理アドレスの更新処理とを適宜切り替えながら実行すること、
    を特徴とする請求項5に記載のコントローラ。
  8. 前記更新部は、前記第1メモリセル群に対応付けられたページに書き込む前の前記データの前記メモリセル群内に対応付けられたページでの書き込み位置を表す前記物理アドレスと、前記データの前記論理アドレスに対応する前記管理情報の前記物理アドレスと、が一致する場合に、前記データの前記論理アドレスに対応する前記管理情報の前記物理アドレスを、前記第1メモリセル群内に対応付けられたページでの前記データを書き込んだ位置を表す前記物理アドレスに更新すること、
    を特徴とする請求項5〜7のいずれか1つに記載のコントローラ。
  9. 前記論理アドレスに変換可能なアドレス情報である記憶装置アドレスに対するデータの書き込み要求を外部装置から受付けるインタフェース部と、
    前記書き込み要求が受付けられた前記データを前記メモリセル群に対応付けられたページに書き込むように前記メモリセル群の書き込みステージの書き込み処理を実施する書き込み制御部と、をさらに備えること、
    を特徴とする請求項1〜8のいずれか1つに記載のコントローラ。
  10. 前記書き込み制御部が前記データを書き込む前記メモリセル群が属するブロックと、前記第1メモリセル群が属するブロックとが異なること、
    を特徴とする請求項9に記載のコントローラ。
  11. 前記書き込み制御部が前記データを書き込む前記メモリセル群が属するブロックと、前記第1メモリセル群が属するブロックとが同一であること、
    を特徴とする請求項9に記載のコントローラ。
  12. データを記憶する外部記憶装置と、
    複数のメモリセルを含むメモリセル群をN個(Nは2以上の整数)含む複数のブロックを含む半導体記憶装置と、
    前記半導体記憶装置に対するアクセスを制御するコントローラと、を備え、
    前記ブロックは複数のページを有し、
    前記ページは所定の単位の記憶領域であり、
    前記メモリセル群には複数のページが対応付けられており、 前記メモリセル群に対する書き込み処理は、前記メモリセル群に対してデータを書き込む処理の単位である書き込みステージをP個(Pは2以上の整数)含み、
    前記書き込みステージのそれぞれは、書き込み対象となる前記メモリセル群の書き込み処理に必要なページが予め定められており、
    前記書き込みステージのそれぞれは、実行する順序が予め定められており、
    前記コントローラは、
    前記メモリセル群に含まれる第1メモリセル群の書き込み処理に必要なページが、前記順序で実行する場合に初めて必要となる前記書き込みステージが開始される前までに、前記第1メモリセル群の書き込み処理に必要なページに転記するデータを決定する決定部と、
    前記書き込みステージが開始される前までに、決定された前記データを前記半導体記憶装置から読み込んで前記外部記憶装置に記憶する読み込み部と、
    前記書き込みステージの実行順序となった場合に、前記外部記憶装置に記憶された前記データを前記第1メモリセル群の前記書き込みステージの書き込み処理に必要なページのデータとして、前記第1メモリセル群の前記書き込みステージの書き込み処理を実行する書き込み部と、
    を備えることを特徴とする記憶装置。
  13. データを記憶する外部記憶装置に接続され、複数のメモリセルを含むメモリセル群をN個(Nは2以上の整数)含む複数のブロックを含む半導体記憶装置に対するアクセスを制御するコンピュータで実行されるプログラムであって、
    前記ブロックは複数のページを有し、
    前記ページは所定の単位の記憶領域であり、
    前記メモリセル群には複数のページが対応付けられており、
    前記メモリセル群に対する書き込み処理は、前記メモリセル群に対してデータを書き込む処理の単位である書き込みステージをP個(Pは2以上の整数)含み、
    前記書き込みステージのそれぞれは、書き込み対象となる前記メモリセル群の書き込み処理に必要なページが予め定められており、
    前記書き込みステージのそれぞれは、実行する順序が予め定められており、
    前記コンピュータを、
    前記メモリセル群に含まれる第1メモリセル群の書き込み処理に必要なページが、前記順序で実行する場合に初めて必要となる前記書き込みステージが開始される前までに、前記第1メモリセル群の書き込み処理に必要なページに転記するデータを決定する決定部と、
    前記書き込みステージが開始される前までに、決定された前記データを前記半導体記憶装置から読み込んで前記外部記憶装置に記憶する読み込み部と、
    前記書き込みステージの実行順序となった場合に、前記外部記憶装置に記憶された前記データを前記第1メモリセル群の前記書き込みステージの書き込み処理に必要なページのデータとして、前記第1メモリセル群の前記書き込みステージの書き込み処理を実行する書き込み部、
    として機能させるためのプログラム。
JP2011289304A 2011-12-28 2011-12-28 コントローラ、記憶装置およびプログラム Expired - Fee Related JP5674634B2 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2011289304A JP5674634B2 (ja) 2011-12-28 2011-12-28 コントローラ、記憶装置およびプログラム
US13/603,989 US20130238838A1 (en) 2011-12-28 2012-09-05 Controller, storage device, and computer program product
US15/215,154 US10366003B2 (en) 2011-12-28 2016-07-20 Controller, storage device, and computer program product for writing and transfer process

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2011289304A JP5674634B2 (ja) 2011-12-28 2011-12-28 コントローラ、記憶装置およびプログラム

Publications (2)

Publication Number Publication Date
JP2013137721A true JP2013137721A (ja) 2013-07-11
JP5674634B2 JP5674634B2 (ja) 2015-02-25

Family

ID=48913375

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2011289304A Expired - Fee Related JP5674634B2 (ja) 2011-12-28 2011-12-28 コントローラ、記憶装置およびプログラム

Country Status (2)

Country Link
US (2) US20130238838A1 (ja)
JP (1) JP5674634B2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2016091260A (ja) * 2014-11-04 2016-05-23 富士通株式会社 起動制御プログラム、起動制御方法および起動制御装置

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6034183B2 (ja) * 2012-12-27 2016-11-30 株式会社東芝 半導体記憶装置
US9170939B1 (en) * 2013-09-26 2015-10-27 Western Digital Technologies, Inc. Early de-allocation of write buffer in an SSD
US9588701B2 (en) * 2014-09-09 2017-03-07 Sandisk Technologies Llc Multi-stage programming at a storage device using multiple instructions from a host
KR20160070920A (ko) * 2014-12-10 2016-06-21 에스케이하이닉스 주식회사 맵 테이블을 갖는 컨트롤러 및 반도체 메모리 장치를 포함하는 메모리 시스템 및 그것의 동작 방법
US20160321010A1 (en) 2015-04-28 2016-11-03 Kabushiki Kaisha Toshiba Storage system having a host directly manage physical data locations of storage device
US9946596B2 (en) 2016-01-29 2018-04-17 Toshiba Memory Corporation Global error recovery system
US10101939B2 (en) 2016-03-09 2018-10-16 Toshiba Memory Corporation Storage system having a host that manages physical data locations of a storage device
US10116051B2 (en) * 2017-03-17 2018-10-30 Isotropic Systems Ltd. Lens antenna system
CN109062822B (zh) * 2018-07-18 2021-09-07 北京世纪东方通讯设备有限公司 一种机车无线通信数据的存储方法及装置
JP2020154525A (ja) 2019-03-19 2020-09-24 キオクシア株式会社 メモリシステムおよび情報処理システム

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004310477A (ja) * 2003-04-08 2004-11-04 Renesas Technology Corp メモリカード
JP2006228394A (ja) * 2004-11-12 2006-08-31 Toshiba Corp 半導体記憶装置のデータ書き込み方法
JP2006294126A (ja) * 2005-04-11 2006-10-26 Toshiba Corp 半導体記憶装置
US20110320684A1 (en) * 2010-06-23 2011-12-29 Sergey Anatolievich Gorobets Techniques of Maintaining Logical to Physical Mapping Information in Non-Volatile Memory Systems

Family Cites Families (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7797064B2 (en) * 2002-12-13 2010-09-14 Stephen Loomis Apparatus and method for skipping songs without delay
JP2005085011A (ja) * 2003-09-09 2005-03-31 Renesas Technology Corp 不揮発性メモリ制御装置
JP5130646B2 (ja) * 2005-06-06 2013-01-30 ソニー株式会社 記憶装置
CN101194238B (zh) * 2005-06-24 2010-05-19 松下电器产业株式会社 存储器控制器、非易失性存储装置、非易失性存储系统及数据写入方法
US7725437B2 (en) * 2007-07-31 2010-05-25 Hewlett-Packard Development Company, L.P. Providing an index for a data store
KR101077339B1 (ko) * 2007-12-28 2011-10-26 가부시끼가이샤 도시바 반도체 기억 장치
JP4519923B2 (ja) * 2008-02-29 2010-08-04 株式会社東芝 メモリシステム
JP4498426B2 (ja) * 2008-03-01 2010-07-07 株式会社東芝 メモリシステム
JP4439569B2 (ja) * 2008-04-24 2010-03-24 株式会社東芝 メモリシステム
JP2010015195A (ja) * 2008-06-30 2010-01-21 Toshiba Corp 記憶制御装置及び記憶制御方法
CN101673245B (zh) * 2008-09-09 2016-02-03 株式会社东芝 包括存储器管理装置的信息处理装置和存储器管理方法
JP4461187B1 (ja) 2008-12-24 2010-05-12 株式会社東芝 不揮発性半導体メモリドライブ装置、情報処理装置および不揮発性半導体メモリドライブ装置における記憶領域の管理方法
TWI379194B (en) * 2009-01-15 2012-12-11 Phison Electronics Corp Block management method for flash memory, and storage system and controller using the same
JP5341584B2 (ja) * 2009-03-17 2013-11-13 株式会社東芝 コントローラ、及びメモリシステム
US8219776B2 (en) 2009-09-23 2012-07-10 Lsi Corporation Logical-to-physical address translation for solid state disks
US8166258B2 (en) * 2009-07-24 2012-04-24 Lsi Corporation Skip operations for solid state disks
US8478945B2 (en) * 2010-02-01 2013-07-02 International Business Machines Corporation Dynamic management of destage tasks in a storage controller
JP5066199B2 (ja) 2010-02-12 2012-11-07 株式会社東芝 半導体記憶装置
JP2011192260A (ja) 2010-02-16 2011-09-29 Toshiba Corp 半導体記憶装置
JP4901968B2 (ja) * 2010-03-01 2012-03-21 株式会社東芝 半導体記憶装置
JP5066209B2 (ja) 2010-03-18 2012-11-07 株式会社東芝 コントローラ、データ記憶装置、及びプログラム
JP5066241B2 (ja) 2010-09-24 2012-11-07 株式会社東芝 メモリシステム
US9129699B2 (en) * 2011-04-28 2015-09-08 Hitachi, Ltd. Semiconductor storage apparatus and method including executing refresh in a flash memory based on a reliability period using degree of deterioration and read frequency
US9037753B2 (en) * 2013-08-29 2015-05-19 International Business Machines Corporation Automatic pinning and unpinning of virtual pages for remote direct memory access

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004310477A (ja) * 2003-04-08 2004-11-04 Renesas Technology Corp メモリカード
JP2006228394A (ja) * 2004-11-12 2006-08-31 Toshiba Corp 半導体記憶装置のデータ書き込み方法
JP2006294126A (ja) * 2005-04-11 2006-10-26 Toshiba Corp 半導体記憶装置
US20110320684A1 (en) * 2010-06-23 2011-12-29 Sergey Anatolievich Gorobets Techniques of Maintaining Logical to Physical Mapping Information in Non-Volatile Memory Systems

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2016091260A (ja) * 2014-11-04 2016-05-23 富士通株式会社 起動制御プログラム、起動制御方法および起動制御装置

Also Published As

Publication number Publication date
US20170004070A1 (en) 2017-01-05
JP5674634B2 (ja) 2015-02-25
US20130238838A1 (en) 2013-09-12
US10366003B2 (en) 2019-07-30

Similar Documents

Publication Publication Date Title
JP5674634B2 (ja) コントローラ、記憶装置およびプログラム
TWI515561B (zh) 使用快閃記憶體之頁結構的資料樹儲存方法、系統以及電腦產品
JP5687639B2 (ja) コントローラ、データ記憶装置及びプログラム
JP5708216B2 (ja) フラッシュメモリ装置、メモリ制御装置、メモリ制御方法、ストレージシステム
TWI657338B (zh) 用來管理一記憶裝置之方法
JP4740216B2 (ja) 不揮発性メモリ管理方法及び装置
US8423709B2 (en) Controller
US9983794B2 (en) Memory device and host device
US20080320211A1 (en) Nonvolatile memory control device, nonvolatile memory control method, and storage device
US11455112B2 (en) Non-volatile memory device, non-volatile memory control device, and non-volatile memory control method
US20170017395A1 (en) Storage apparatus, data processing method and storage system
US20120290772A1 (en) Storage control apparatus for controlling data writing and deletion to and from semiconductor storage device, and control method and storage medium therefor
JP4751037B2 (ja) メモリカード
CN112463055B (zh) 一种优化并使用固态硬盘l2p表的方法、系统、设备及介质
TWI463495B (zh) 資料寫入方法、記憶體控制器與儲存裝置
CN107203479B (zh) 层级化存储系统、存储控制器及层级化控制方法
US8589620B2 (en) Data writing method, memory controller, and memory storage apparatus
US20130297859A1 (en) Control device, storage device, and storage control method
JP2017027507A (ja) バイナリイメージをメモリデバイスに転写する方法および装置
US20130304973A1 (en) Control device, storage device, and storage control method
WO2020039927A1 (ja) 不揮発性記憶装置、ホスト装置、及びデータ記憶システム
JP4888333B2 (ja) フラッシュディスク装置
JP4898252B2 (ja) 不揮発性記憶装置及びそのデータ管理方法
JP2020170477A (ja) 記憶装置、その制御方法、及びプログラム
JP2013101455A (ja) 記憶制御装置、記憶装置、情報処理システム、および、それらにおける処理方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20140129

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20140813

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20140909

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20141107

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20141222

LAPS Cancellation because of no payment of annual fees