JP6076506B2 - ストレージ装置 - Google Patents
ストレージ装置 Download PDFInfo
- Publication number
- JP6076506B2 JP6076506B2 JP2015559660A JP2015559660A JP6076506B2 JP 6076506 B2 JP6076506 B2 JP 6076506B2 JP 2015559660 A JP2015559660 A JP 2015559660A JP 2015559660 A JP2015559660 A JP 2015559660A JP 6076506 B2 JP6076506 B2 JP 6076506B2
- Authority
- JP
- Japan
- Prior art keywords
- physical
- page
- flash memory
- logical
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1009—Address translation using page tables, e.g. page table structures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0614—Improving the reliability of storage systems
- G06F3/0616—Improving the reliability of storage systems in relation to life time, e.g. increasing Mean Time Between Failures [MTBF]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/0644—Management of space entities, e.g. partitions, extents, pools
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0656—Data buffering arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0683—Plurality of storage devices
- G06F3/0688—Non-volatile semiconductor memory arrays
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/65—Details of virtual memory and virtual address translation
- G06F2212/657—Virtual address space management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7201—Logical to physical mapping or translation of blocks or pages
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7204—Capacity control, e.g. partitioning, end-of-life degradation
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 (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Description
本発明は、不揮発性半導体メモリを用いたストレージ装置とその制御方法に関する。
不揮発性半導体メモリは、磁気記憶デバイスに比べて省電力・高性能であり、高価格であった。このような不揮発性半導体メモリは、例えばNAND型のフラッシュメモリである。近年は半導体技術の進歩に伴って低価格化が進み、HDDに替わるメインストリームの記憶デバイスとして注目されてきている。
フラッシュメモリにおいて、ブロックは、データの消去単位であり、ページは、データを読み書きする単位の記憶領域である。今後特に断りがない限り、単にブロック/ページと記述した場合はフラッシュメモリのものを指す。後述のように1つのブロック内に複数のページが設けられる。またフラッシュメモリは、特性上、記憶しているデータを直接書き換えることができない。つまり、フラッシュメモリは、記憶しているデータを書き換える場合、記憶している有効なデータを他のブロックに退避させる。次に、フラッシュメモリは、記憶しているデータをブロック単位で消去する。そして、フラッシュメモリは、消去したブロックにデータを書き込む。このように、フラッシュメモリにおけるデータの書き換えは、ブロックごとのデータの消去を伴う。しかし、フラッシュメモリの1ブロック分のデータ消去にかかる時間は、1ページ分のデータを書き込むのに要する時間と比べて約1桁長い。従って、1ページ分のデータの書換えのために毎回1ブロック分のデータ消去を行なうようにすると、フラッシュメモリのデータ書換え性能が低下する。このような問題に対応するため、フラッシュメモリからデータを消去する時間を隠蔽するアルゴリズムを用いてデータをフラッシュメモリへ書き込むことが知られている。
通常、フラッシュメモリに対するデータの書換え動作は、未使用領域へデータを追記する方式で行う。しかし、データの書き換え量が増えると、フラッシュメモリ内の未使用領域が少なくなるため、フラッシュメモリに書き込まれている不要なデータを消去して記憶領域を再利用可能な状態にする必要が生ずる。そこで、旧データを含むブロック内の、有効なデータのみを未使用領域にコピーし、コピー元のブロックを消去して再利用可能な状態にするブロック再生処理が知られている。以下、これをリクラメーションと呼ぶ。場合によってはRCと省略して表記する。このリクラメーションは、無効データが多くなったブロックを対象に実行することで効率よく空き領域を作成可能である。
フラッシュメモリは、使用とともに特性が劣化する。劣化は、セルの消去回数に相関があるとされ、一般的にSSDベンダはデータ保持保証可能な、最大の消去回数を提示している。従って、特定のブロックにデータの書換えが集中し、消去回数が増大して使用不可能となった場合、最悪、他の領域が健全な状態にも関わらず、一部のブロックが書き換え限界に達したために、装置容量を満足できなくなる問題が発生する。そのため、劣化が特定ブロックに集中しないように、各ブロックの消去回数を平準化する技術が知られている。
またフラッシュメモリは、一度書き込んだページでも、時間とともに読み出しエラー率が増加する。このように保持しておくだけでも発生するエラーは、リテンションエラーと呼ばれる。これを回避するために、書き込んでから一定時間経過したページを、別ページにコピーする処理が知られている。この処理は、リフレッシュと呼ばれる。場合によってはRFと省略して表記する。リフレッシュにおいても、既に述べた平準化の問題や性能影響を考慮する必要がある。
以上で述べたデータ消去時間の隠蔽とデータ消去回数の平準化のため、フラッシュストレージは、データ書込みの際に、論理アドレスを物理アドレスへ変換する論理物理アドレス変換処理を行う。フラッシュメモリモジュールは、1つ以上のフラッシュメモリチップと、フラッシュメモリチップに対するデータの読み書きを制御するフラッシュメモリコントローラとを有する。このフラッシュメモリコントローラが、論理物理アドレス変換処理を行なう。さらにフラッシュメモリコントローラは、論理物理アドレス変換処理のための情報を、論理物理アドレス変換テーブルとして保存する。以下、論理物理アドレス変換処理を論物変換、論理物理アドレス変換テーブルを論物変換テーブルと呼ぶことがある。
論物変換は、フラッシュメモリを効率的に使用するために重要な役割を有している。低い自由度の論物変換を用いる場合、論物変換テーブルのサイズを抑えられる代わりに、リクラメーションが頻発するなどにより性能が低下する。一方、高い自由度の論物変換を用いる場合、論物変換テーブルのサイズが膨大になるとともに、制御コストが大幅に増大する。
上記論物変換方式は、目的とする動作に応じて様々な方式が提案されているが、その中でも広く知られているものとして、上位装置に提供するアドレス空間をフラッシュメモリのページサイズで区切って形成される各論理単位を、フラッシュメモリの各ページに対応付ける方式がある。これは、ページサイズが2KB(キロバイト)、4KB、8KBといった、ホストOSやファイルシステム又はアプリケーションプログラムからのIOパタンによくマッチした格納単位であり最適化がしやすいこと、論理単位とページを1対1対応させることで管理を簡易化できること、また、論理単位のページ跨がりを抑止することで、複数ページリードの頻度を減らすなどの利点がある。この論理単位を論理ページ、フラッシュメモリのページを、これと区別するために物理ページと呼ぶことがある。
一方で、論理ページサイズと物理ページサイズが一致しないケースが考えられる。まずは、圧縮などのデータ変換処理により、最終的なサイズが変動する場合である。フラッシュメモリのビットコスト低減は、HDDの代替を目指す上で大きな目標であり、データ圧縮のフラッシュストレージへの適用は広く行われている。
続いて考えられるのは、物理ページ内のECC等のデータ保護情報の割合が増加することで、格納できるデータ量が減少する場合である。従来は、物理ページの余剰領域にECCを格納することで、データ格納領域については2の冪乗サイズを維持していたが、微細化に伴い高いエラー訂正能力が必要となってきており、要求されるECCサイズも拡大している。
また、フラッシュメモリの特性は、全ての物理ページについて均一ではなく、先天的な差もあれば、物理的なロケーションによる違いも存在する。従って、全ての物理ページに対して同じECCを使用するのではなく、状況に合わせて最適な格納方式を採ることも考えられる。その場合、論理ページと物理ページのサイズ不一致はより顕著となる。
論理・物理のページサイズが異なる場合でも、論理ページと物理ページの1対1対応付けを行おうとすると、まず論理ページサイズは物理ページサイズより小さい必要がある。また、複数の論理ページを物理ページに格納できないため、場合によっては無効なデータで物理ページをパディングする必要が出てくるため、格納効率が低下する。
一方で、論理ページが物理ページを跨がることを許容する場合、パディングを最小化し、格納効率を上げることができるが、より複雑な管理方式が必要となる。例えば特許文献1では、複数の物理ページに跨がった論理ページをサブブロックに分割し、それぞれの分割された論理ページの格納情報を管理することで、1つの論理ページを複数の物理ページに跨がって格納される態様を許容している。
フラッシュメモリにおける物理ページの様に、書き込み単位が存在するデバイスにおいて、論理ページと物理ページのサイズを一致させることは利点が大きい。しかし、圧縮などのデータ変換、デバイスの物理特性に由来するECCサイズの拡大、などの理由により、論理ページサイズと物理ページサイズが不一致となることを考慮する必要がある。論理ページの物理ページ跨がりを許容しなかった場合、物理ページ中に使用されない領域が増えて格納効率が低下する。一方で跨がりを許容する場合、何らかの形で跨がり情報を保持する必要がある。特許文献1に開示されているように、論理ページ毎に跨がり情報を保持する方法が考えられるが、その場合、それぞれの論理ページ毎に2以上のアドレス情報が必要となり、管理情報サイズの増大を招く。
本発明の一実施形態に係るフラッシュメモリストレージ装置は、コントローラと複数のフラッシュメモリチップを備える。コントローラは、上位装置に対して提供する論理記憶空間を、所定サイズの領域である論理ページ単位に分割して管理するとともに、複数のフラッシュメモリチップの有する複数の物理ブロックが対応付けられた線形なアドレス空間である仮想アドレス空間を有している。上位装置から論理ページに対する書き込みがあった場合には、前記仮想アドレス空間上の未使用領域を選択し、この選択した前記仮想アドレス空間上の未使用領域のアドレスと論理ページとの対応関係をページマッピングテーブルに記録する。仮想アドレス空間から領域を選択する際、未使用領域であれば任意の領域を選択することができ、物理ページ境界を意識する必要はない。
本発明によれば、書き込み単位を有する記憶デバイスにおいて、書き込み単位とは異なる論理管理単位のデータを、書き込み単位境界を跨いで格納することが可能になり、格納効率が向上する。また、論理管理単位のデータを、書き込み単位境界を跨いで格納しても、管理情報のサイズを増大させることなく、論理管理単位データの記憶デバイス上格納位置の情報を管理することができる。
以下、本発明のいくつかの実施例を、図面を用いて説明する。なお、これらの実施例は本発明を実現するための一例に過ぎず、本発明の技術的範囲を限定するものではない。
なお、以後の説明では「aaaテーブル」、「aaaリスト」等の表現にて本発明の情報を表記している箇所があるが、これら情報はテーブル、キュー等のデータ構造以外で表現されていてもよい。そのため、データ構造に依存しないことを示すために「aaaテーブル」、「aaaキュー」、「aaaリスト」等について「aaa情報」と呼ぶことがある。
以後の説明では「プログラム」を主語として説明を行う場合もあるが、プログラムはプロセッサによって実行されることで定められた処理をメモリ及び通信ポートを用いながら行うため、これは実際にはプロセッサが動作主体となって所定の処理を実行していることを表している。また、プログラムの一部または全ては専用ハードウェアによって実現されてもよい。
また、各図において共通の構成物については、同一の参照番号を付して説明する。また、共通の構成物に関し、各構成物を識別する場合には、999a、999bなど、数字の最後に英文字を付すか、又は、#1、#2等の個別の番号を付して説明する。ただし、必要に応じて英文字又は番号を省略して説明する場合がある。
また、本明細書に記載の各種プログラムは、プログラム配布サーバや、計算機が読み取り可能な記憶メディアによって提供されるようにしてもよい。
本発明は、以下の実施例に限定されない。以下の実施例における不揮発性メモリは、FM(Flash Memory)である。本実施例におけるFMは、ブロック単位で消去が行われ、ページ単位でリード及びライトが行われる種類のFM、典型的にはNAND型のフラッシュメモリである。しかし、FMは、NAND型に代えて他種のフラッシュメモリ(例えばNOR型)でも良い。また、FMに代えて、他種の不揮発性メモリ、例えば、磁気抵抗メモリであるMRAM(Magnetoresistive Random Access Memory)や、抵抗変化型メモリであるReRAM(Resistance Random Access Memory)、強誘電体メモリであるFeRAM(Ferroelectric Random Access Memory)等の半導体メモリや、相変化メモリが使用されても良い。
図1は、本発明の実施例1に係る計算機システムの構成を示す。
計算機システムは、ストレージシステム(ストレージ装置)101と、1つ以上のホスト計算機(図中では「ホスト」と略記する)103と、管理端末104とを有する。ホスト計算機103a、103bのそれぞれは、SAN(Storage Area Network)105を介して、ストレージシステム101に接続される。
ストレージシステム101は、ストレージコントローラ102と、不揮発メモリ記憶装置である複数のフラッシュメモリストレージ装置112とを有する。なお、図面及び以下の説明では、フラッシュメモリストレージ装置をFMPKG(Flash Memory Package)と呼ぶことがある。また、本実施例では、ストレージコントローラ102は1つであるが、複数のストレージコントローラ102で冗長構成されても良い。
ストレージコントローラ102は、CPU(Central Processing Unit)108と、メモリ109と、複数のホストインターフェイス(以下、「ホストIF」と略記する)107と複数のドライブインターフェイス(以下、「ドライブIF」と略記する)110と、保守インターフェイス(以下、「保守IF」と略記する)106とを有する。ストレージコントローラ102内の各部は、バスを介して接続される。メモリ109は、ストレージシステム101を制御するためのプログラムを格納する領域及びデータを一時的に格納するキャッシュメモリとしての領域を有する。CPU108は、メモリ109に格納されたプログラムに従ってストレージシステム101を制御する。
ホストIF107は、計算機103との通信を行うためのインターフェイスである。ドライブIF110は、ストレージコントローラ102とFMPKG112との通信を行うためのインターフェイスである。保守IF106は、管理端末104と接続され管理端末104との通信を行うためのインターフェイスである。
なお、管理者は、管理端末104からストレージコントローラ102の管理やメンテナンスを行う。しかし、管理端末104は必須要素ではなく、ストレージコントローラ102の管理やメンテナンスなどを、例えば、ホスト計算機103から行うようにすることも可能である。
上記の計算機のシステムでは、ホスト計算機103とFMPKG112とが、ストレージコントローラ102を介して接続されているが、例えば、ストレージコントローラ102を省き、ホスト計算機103とFMPKG112とが直接接続されても良い。
以下、FMPKG112の構成を説明する。なお、各FMPKG112の基本的な構成は同じである。
図2は、FMPKG112の構成を示す。
FMPKG112は、フラッシュメモリ制御装置201と1つ以上のフラッシュメモリチップ(FMチップとも呼ばれる。また図中では「FM Chip」と表記)209a〜hにより構成される。また、先に述べたとおり、FMチップに代えて他種の不揮発性メモリ素子を用いることも可能である。
フラッシュメモリ制御装置201は、図1におけるストレージコントローラ102あるいはホスト計算機103のように、FMPKG112に対してデータアクセス要求を発行する上位装置(以下、ストレージコントローラ102またはホスト計算機103を、「上位装置102」と呼ぶ)とFMPKG112とを接続するためのストレージインターフェイス202、ASIC203、バッファ204、非常時に給電を行うバッテリ205、CPU206、メインメモリ207、フラッシュメモリとの接続を行うフラッシュメモリインターフェイス208により構成される。
CPU206は、フラッシュメモリ制御装置201の全体を制御するプロセッサであり、メインメモリ207に格納されたマイクロプログラムに基づき動作する。例えば、受領したI/Oに対して、メインメモリ207に格納してある論物変換テーブルを参照してフラッシュメモリチップ209にデータを読み書きする。また、フラッシュメモリの使用状況に応じて、リクラメーションやウェアレベリングを実施する。
ASIC203は、CPU206によって制御され、フラッシュメモリチップ209に対してデータの読み書きを実施する。また、フラッシュメモリチップ209に対するものと同様にストレージインターフェイス202を通じて上位装置との通信を制御する。
本図では、ASIC203に対してCPU206は外付けとなっているが、ASIC203は、CPU206や、ストレージインターフェイス202、フラッシュメモリインターフェイス208を含む1つのLSIで構成されていてもよい。
メインメモリ207とバッファ204は、より高速なアクセスが可能な、揮発性の記憶領域であり、例えばDRAMである。メインメモリ207はCPU206が直接制御に用いるワークスペースであり、バッファ204より短いレイテンシを提供する。一方、バッファ204は、ユーザデータのバッファ用や、メインメモリ207に格納しきれない大サイズテーブルを格納する。
本図では、メインメモリ207とバッファ204は分離した構成物としているが、これらを1つの記憶素子で実現してもよい。
ストレージインターフェイス202は、上位装置とフラッシュメモリ制御装置201を接続し、通信を行う。このインターフェイスには、例えばSATAやSAS、FCなどのストレージインターフェイスが採用されてもよいし、PCI-Expressなどのインターフェイスが採用されてもよい。
フラッシュメモリ制御装置201の内部アーキテクチャは必ずしも図の通りである必要は無く、それぞれの機能を1つないしは複数のデバイスによって代用してもよい。
図3は、FMPKG112のメインメモリ207に格納される情報の一例を示す。
メインメモリ207は、例えば、オペレーティングシステム303、フラッシュストレージ制御プログラム302、データ転送制御部制御プログラム301、入出力制御部制御プログラム304、論物変換プログラム306及び論物変換情報305を記憶する。
オペレーティングシステム303は、CPU206が各プログラムを実行する際のスケジューリング等の基本処理を行うプログラムである。
フラッシュストレージ制御プログラム302は、フラッシュメモリ制御装置201が上位装置へ提供するボリューム(あるいはボリュームの記憶空間)の管理や、バッファメモリの管理など、フラッシュメモリ制御装置201がストレージデバイスとして動作するための制御に用いるプログラムである。
データ転送制御部制御プログラム301は、ASIC203の制御に用いるプログラムである。
入出力制御部制御プログラム304は、ストレージインターフェイス202、フラッシュメモリインターフェイス208の制御に用いるプログラムである。
論物変換プログラム306は、上位装置102から発行された入出力要求(I/O要求)に含まれている論理アドレスを、フラッシュメモリ上の物理位置である物理アドレスに変換するプログラムである。なお、本実施例で言う「論理アドレス」は、例えば、LBA(Logical Block Address)で良い。また「物理アドレス」とは、例えばFMPKG112内の物理ページ及び/または物理ブロックを一意に識別するアドレス(ページ番号、ブロック番号)のことである。
論物変換情報305は、論物変換プログラム306が動作する際に使用する変換のための情報である。
図4は、フラッシュメモリチップ209の内部構成を示す。
フラッシュメモリチップ209は、内部に複数のダイ(DIE)401a〜b、フラッシュメモリ制御装置201から発行されたフラッシュメモリI/Oコマンドの対象データを一時的に格納するページバッファ402a〜bを持つ。そして各ダイ401は、実際の記憶領域である、1つ以上(たとえば128個、256個など)の物理ブロック403a〜cを有する。
物理ブロック403は、フラッシュメモリにおける消去単位である。物理ブロック403は、1つ以上の物理ページ404a〜cにより構成される。物理ページはフラッシュメモリにおける書き込み・読み込み単位である。
書き込みとは、消去済みの物理ページに対するデータの書き込みであり、読み込みとは物理ページに書き込まれたデータを読み取ることである。原則として、書き込みが行われた物理ページに再度書き込みを行うことはできず、物理ページに再度書き込みを行う場合には、一度、当該物理ページを含む物理ブロック403単位で消去を実施する必要がある。消去処理により、物理ブロック403に含まれる物理ページ404に格納されたデータは消去され、再び書き込みが可能となる。1つの物理ページのみを消去することは出来ない。書き込み・読み込み・消去などのコマンドは、フラッシュメモリチップ209とフラッシュメモリ制御装置201を接続するフラッシュメモリインターフェイス208から受領する。
図5は物理ページ404内の一般的なデータ格納構成を示す。
Code Word(CW)501は、データ502と、それを保護するECC503の1セットであり、エラー訂正単位である。物理ページには1つ以上のCWが存在する。物理ページは一般的に、2の冪乗のバイト数分の領域に加えて余剰の領域を保持しており、この余剰領域にECCやメタ情報を格納する。ここではメタ情報は特に無いものとして記述するが、存在したとしても特に問題無い。ECCサイズは、チップに要求される信頼性レベルに応じてサイズが決まるため、1物理ページ内に必ずしも2の冪乗分のデータ領域サイズが確保できないこともある。以降、物理ページサイズといった場合、元のFMの物理ページのサイズからECCやメタ情報を格納する領域を含まない、ユーザデータを格納する領域のサイズを指す。
図6は、従来からあるフラッシュストレージで行われている、ページベースの論物変換処理の概要を示している。図中の要素600は、フラッシュストレージが上位装置に対して提供するボリュームの記憶空間を表しており、上位装置がフラッシュストレージの記憶領域にアクセスする際の最小アクセス単位である各セクタ(図中の要素601)に、0番から始まるアドレスが付されており、そのアドレスのことを論理ブロックアドレス(LBA)と呼ぶ。一般に、1セクタのサイズは512バイトであるが、その他の大きさ(たとえば520バイト)でもよい。またフラッシュストレージは、フラッシュストレージが上位装置に対して提供する記憶空間を先頭から所定サイズ(たとえば図6に示した例では16セクタ)ごとに分割し、分割された各領域を「論理ページ」(図中の要素602)として管理している。また、図6において、ブロックX(603)中のページY(604)は、物理ページを表している。
従来からあるフラッシュストレージでは、全ての論理ページ602、全ての物理ページ604のサイズは固定サイズで(図6の場合、16セクタ、つまり8KB)、また論理ページ602と物理ページ604のサイズは等しい。従って、1つの論理ページ602は任意の1つの物理ページ604に一意に対応づけられ、その対応関係についての情報を論物変換テーブル701にて管理する。ある論理ページ602への書き込みを行う場合、新規に未使用の物理ページ604が取得され、当該論理ページ602の更新データをその未使用物理ページ604へ書き込み、対応付けを更新する。論理ページ602からの参照が外れた旧物理ページ604は、無効なページとして登録され、リクラメーションによって回収・消去され、空きページとして再利用される。
図7は、ページベース論物変換のための論物変換テーブル701の構成の一例を示している。このテーブルは従来からあるフラッシュストレージが通常有するテーブルである。
論物変換テーブル701は、各論理ページ602に対応する物理ページ604のアドレスを管理するテーブルで、各論理ページ602の論理ページ番号(702)と、当該論理ページ番号702の論理ページ602が対応付けられている物理ページ604のアドレス(格納アドレス)703を保持している。たとえばフラッシュストレージが上位装置に対して、N論理ページ分の大きさの記憶空間を提供している場合、N個のエントリが存在する。論理ページ602の格納先が、異なる物理ページ604に変更された場合、このテーブルの格納アドレス703の情報が更新される。
次に、図8、図9を用いて、論理ページサイズが物理ページサイズと異なる場合の問題点について説明する。図8のCase1は、論理ページサイズが物理ページサイズの1/2の場合の例を示しており、Case2は、論理ページサイズが物理ページサイズの1/2よりも大きい例を示している。
図8のCase1のように、論理ページサイズが物理ページサイズの1/2の場合、あるいは1/4、1/8のように、2の冪乗分の1のサイズであれば、1物理ページ中に複数の論理ページがちょうど格納される。そのため、論理ページサイズが物理ページサイズの2の冪乗分の1のサイズである場合は、物理ページを論理ページサイズと等サイズの領域(仮にこれを「スロット」と呼ぶ)に分割して管理し、図7を用いて説明した論物管理テーブルでは、各論理ページの論理ページ番号と、物理ページ上のスロットとの対応関係を管理するように変更するだけで対応可能である。しかしながら図8のCase2のように、論理ページサイズが物理ページサイズの2の冪乗分の1のサイズと等しくない場合は、必ず物理ページ上に、1つの論理ページが収納しきれない領域(無効領域)ができる。論理ページを2つ以上の物理ページに対応づけない格納形態を採用する場合、それらの領域は無効とするしかない。この無効領域が大きいほど、格納効率は低下し、ビットコストの悪化につながる(ビットコストが高くなる)。
図9は、1つの論理ページが複数の物理ページに跨がって格納される場合の、データ格納構成を示す。
先に説明したとおり、論理ページサイズと物理ページサイズが異なる場合、物理ページ上に1論理ページを収納しきれない無効領域ができる。物理ページに無効領域ができないようにするために、1つの論理ページを複数の物理ページに跨って格納される態様を許す方法が考えられるが、そのようにすると、以下のような問題がある。論理ページは、1つの物理ページ内に収まる場合(図9の論理ページ901の場合)もあれば、2つ以上の物理ページに跨がって格納される場合(図9の論理ページ902の場合)もある。論理ページに対する物理ページのアドレスを管理する場合、論理ページ(LP=0)901は単一物理ページに収まっているため、論理ページ901について、当該論理ページの格納されている物理ページのアドレス及び当該物理ページ内オフセット位置の情報を持てば良い。一方で論理ページ(LP=1)902は2つの物理ページ903a、903bに跨がっているため、論理ページに対する物理ページのアドレスを管理する場合、論理ページ(LP=1)902の前半(たとえば論理ページの0バイト目からaバイト目まで)は物理ページ903aの一部(xバイト目から終端まで)に格納され、また論理ページ(LP=1)902の後半(たとえば論理ページのa+1バイト目から終端まで)は物理ページ903bの一部(0バイト目からyバイト目まで)に格納される、という情報を管理する必要がある。つまり1論理ページの情報を管理するために、論理ページと物理ページの対応を管理するための情報(論物変換テーブル)に2エントリを登録する必要があるため、論物変換テーブルのサイズが大きくなる。
続いて、本発明の実施例1に係るFMPKG112における、論理ページと物理ページの対応関係の管理方法について説明する。なお、本発明の実施例1に係るFMPKG112において、各論理ページのサイズは等しく、また各物理ページのサイズも等しい。ただし論理ページのサイズと物理ページのサイズは一致していない(論理ページのサイズと物理ページのサイズが一致している場合であっても、本発明の実施例に記載のFMPKG112は動作可能であるが、以下では論理ページのサイズと物理ページのサイズは一致していないという環境であるという前提で説明する)。
図10は、FMPKG112が実施する論理物理変換の概念を表している。FMPKG112の実施する論理物理変換は、図6、7を用いて説明したページベース論物変換の概念に、仮想アドレス空間の概念を組み込んだものである。なお、図10では図示を省略しているが、図6と同様、FMPKG112は上位装置に対してアドレス0から始まる論理ブロックアドレス(LBA)でアドレッシングされた一次元の論理記憶空間(図6の600相当物)を提供し、この一次元の論理空間を先頭から所定サイズ(たとえば16セクタ)ごとに分割し、分割された各領域を論理ページとして管理している。つまり一次元の論理記憶空間の論理ブロックアドレス(LBA)の0番地から15番地までの領域は、論理ページ番号(LP)が0の論理ページ1001aに対応付けられ、以下順に、一次元の論理記憶空間のLBAが16番地から31番地の領域が、論理ページ番号(LP)が1の論理ページ1001bに、一次元の論理記憶空間のLBAが32番地から47番地の領域が、論理ページ番号(LP)が2の論理ページに対応付けられている。なお、論理ページのサイズは任意であるが、後述するようにFMPKG112は論理ページ単位で更新を行う(論理ページ未満のサイズのデータのライト要求が来た場合でも、当該データを含む論理ページ全体を書き換える)ため、上位装置、たとえばホスト計算機103で稼働するOSやファイルシステムやアプリケーションプログラムが発行するI/O要求で指定されるデータサイズ(たとえば4KBや8KB)等を選択するのが好ましい。
本発明の実施例1に係るFMPKG112では、論理ページと物理ページとの対応を直接管理するわけではなく、各論理ページ(1001a、1001b、…)は、FMPKG112内でのみ用いられる1次元のアドレス空間である、仮想アドレス空間1003上のアドレスに対応付けられている。この論理ページと仮想アドレス空間1003上アドレスとの対応関係についての情報は、後述するページマッピングテーブル1002(図11)を用いて管理される。仮想アドレス空間1003は、物理ページ境界を意識させない一次元の線形なアドレス空間であり、FMPKG112はこの仮想アドレス空間1003を構成する情報を、後述する仮想アドレス構成情報1007(図12)を用いて管理している。なお、仮想アドレス空間1003が、物理ページ境界を意識させないアドレス空間である、とは、論理ページを仮想アドレス空間1003に対応付ける場合、論理ページが物理ページを跨って格納されないように対応付ける等の考慮をせずに、単純に、仮想アドレス空間上の任意の空き領域(論理ページがまだ対応付けられていない仮想アドレス空間上の領域)に論理ページを対応付ければよいことを意味する。
仮想アドレス空間1003はFMPKG112内に1つだけ定義される態様に限定されるわけではなく、複数存在し得る。仮想アドレス空間が複数存在する場合、本明細書では、それぞれの仮想アドレス空間を仮想アドレスグループ1004と呼ぶ(以下、仮想アドレスグループのことを単にグループと呼ぶこともある)。また、それぞれのグループに1つの仮想アドレス構成情報1007が対応づけられている。グループが複数存在する場合、各論理ページはどのグループのアドレスに対応づけられてもよい。
仮想アドレス空間1003は、FMの物理ブロック1008と同サイズに分割され、各分割された領域は、「仮想ブロック1006」と呼ばれる。各仮想ブロック1006には、仮想アドレスグループ1004内で一意な識別番号(仮想ブロック番号と呼ぶ)が付されている。仮想アドレスグループ1004内の先頭の仮想ブロック(図10の1006a)には、0番の仮想ブロック番号が付されており、以下、2番目以降の領域には順に、1番、2番…の仮想ブロック番号が付されている。
また、それぞれの仮想ブロック1006は、FM上の物理ブロック1008(図4の403に相当する)へ1:1にマップされる。このマッピング情報は仮想アドレス構成情報1007に管理される。これにより、仮想アドレス空間1003には、複数の物理ブロックがマッピングされることになる。
ここからわかるとおり、たとえば図10の物理ページ1009aと1009bが同一の仮想アドレス空間の構成物であるという情報は、ページ毎ではなく、ブロック単位で持つことになる。これにより、論理ページ毎に物理ページ間の関係を保持する必要は無くなるため、管理情報を大幅に減らすことができる。ただし、1論理ページのデータがグループを跨がって格納されることは許容されないため、グループの最終アドレス付近では、バウンダリを合わせるためにユーザデータを格納しない領域が発生する。これらの領域は、無効な領域としても良いし、何かの管理情報を格納する領域として利用しても良い。
仮想アドレス空間を構成する要素として、上では物理ブロックを前提としたが、物理ページより大きな物理アドレス構成要素であれば、管理情報を減らすという目標は実現可能である。ただし、消去単位である物理ブロックと対応づけることは、管理上のメリットが大きい。例えば、ある物理ブロックを消去する際に、これが複数のグループから共有されている場合、それぞれのグループについてコピー処理を実施する必要がある。他にも、従来物理ブロックを単位に実施してきた処理を、グループ単位に拡張する場合、物理ブロックはグループ間で共有されるべきではない。以降、グループ構成要素としては、物理ブロックを想定して記述する。
図11は、実施例1に係るFMPKG112が管理するページマッピングテーブル1002の構成を表している。ページマッピングテーブル1002は、1つのFMPKG112に一つ定義されるテーブルで、論理ページと仮想アドレス空間1003上のアドレス(以下、仮想アドレス空間上のアドレスのことを「仮想アドレス」とよぶ)との対応付けを管理するものである。またページマッピングテーブル1002は、メインメモリ207の論物変換情報305を構成する1つの情報である。論理ページ毎に設定される仮想アドレスは、仮想アドレスグループ番号(グループ#)1102とグループ内のオフセットアドレス1103とで構成される。オフセットアドレス1103には、グループ#1102で特定されるグループの先頭セクタのアドレスを0とした相対アドレスが格納される。各論理ページが初期状態、つまり論理ページにデータが書き込まれていない場合、グループ#1102及びオフセットアドレス1103には値が格納されていない。論理ページに対するデータの書き込み要求を上位装置から受け付けると、FMPKG112は当該論理ページに対応付けるべき仮想アドレス空間上の未書き込み領域アドレス(グループ番号及びグループ内オフセットアドレス)を決定し、グループ#1102及びオフセットアドレス1103に値を格納する。また、論理ページ上のデータが更新(上書き)される時にも同様に、仮想アドレス空間上の未書き込み領域のアドレス(グループ番号及びグループ内オフセットアドレス)を決定し、グループ#1102及びオフセットアドレス1103に値を格納する。
なお、本発明の実施例においては、オフセットアドレス1103の単位はセクタとしているが、その他の単位を用いても良い。たとえば1論理ページのサイズを1単位としたアドレスをオフセットアドレス1103に格納するようにしても良い。また、先に述べたとおり、論理ページがグループを跨がることは許容されないため、1つの論理ページ(論理ページ1101で特定される論理ページ)が、複数のグループに対応付けられることはない。そのため、ページマッピングテーブル1002には、FMPKG112で管理する論理ページの数と同数の行(エントリ)のみが存在する。
図12は、実施例1に係るFMPKG112が管理する仮想アドレス構成情報1007の構成を表している。この情報もページマッピングテーブル1002と同様、メインメモリ207の論物変換情報305を構成する1つの情報である。
仮想アドレス構成情報1007は、仮想アドレスグループ(グループ1201)毎に、次の書き込み位置を保持するポインタである次書き込み位置1202(なお、本発明の実施例では、単位はセクタとするが、その他の単位を用いてもよい)と、対応するグループの仮想アドレス空間を構成する複数の物理ブロックの物理ブロック番号(物理ブロック#)1204を保持する。本発明の実施例に係るFMPKG112では、FMPKG内の各物理ブロックについて、FMPKG内で一意な識別番号を付して管理しており、この識別番号を物理ブロック番号と呼ぶ。物理ブロック番号1204の欄には、この物理ブロック番号が格納される。また物理ブロック番号1204は、1グループ内にN個が登録され、各グループの先頭に登録されている物理ブロック番号は、0番の仮想ブロック番号(1203)に対応付けられており、それ以降の各物理ブロックは順に、1番、2番…の仮想ブロック番号(1203)に対応付けられている。仮想アドレスグループを構成する物理ブロック数Nの大きさによって、仮想アドレスグループ内のアドレス空間の大きさが定まる。
次書き込み位置1202は、対応する仮想アドレスグループ1201の先頭未書き込み位置を表す情報である。詳細は後述するが、本発明の実施例に係るFMPKGでは、上位装置102からのライトデータを仮想アドレスグループ(に対応付けられた物理ブロック・物理ページ)に書き込む際、グループ内の未書き込み領域の先頭から順に、追記書きの要領で書き込む。またFMPKGが、物理ブロック(内の物理ページ)にデータを書き込む際にも、物理ブロック中の未書き込みの先頭ページから順に書き込んでいく(たとえば当該物理ブロックに全くデータが書き込まれていない場合、先頭ページはページ番号0番のページであり、以下1番、2番…のページへと、順番に書き込みを行う)。そして物理ブロック内全物理ページにデータが書き込まれるまでは、次の物理ブロックの物理ページへのデータ書き込みは行わない。そのため、次書き込み位置1202より前のアドレスで特定される仮想アドレス空間には、すでにデータが格納され論理ページにマッピングされた領域であることを意味し、次書き込み位置1202以降のアドレスで特定される空間は、未使用領域、つまりデータがまだ書き込まれておらず、論理ページにもマッピングされていない領域であることを表している。初期状態では次書き込み位置1202の値は0で、ライト処理によってたとえばnセクタの値が書き込まれると、次書き込み位置1202に値nが加算される。仮想アドレスグループの終端物理ページ(の近く)までデータが書き込まれると、それ以上当該仮想アドレスグループにデータを書き込むことができないため、次書き込み位置1202には、データが書き込めないことを表す値(N/A)を格納する。
また、仮想アドレス構成情報1007の中には、次書き込み位置1202に、0以上の値(つまりN/Aでない値が格納されている)が格納されていて、書き込み可能になっているグループが1つだけ存在する。上位装置からのライトデータを格納する際には、原則としてそのグループに対してデータを書き込む。以下ではそのグループのことを、「オープンされたグループ」または「オープングループ」と呼ぶ。そして、オープンされたグループにデータを書き込む領域がなくなった時点で、新たにグループを構築する。新たにグループを構築する際に、グループを構成する物理ブロック(複数)を選択し、物理ブロック番号1204の欄に物理ブロック番号を格納する。ただし、オープングループを複数設けておき、FMPKG112がデータを物理ページに書き込む際に任意のオープングループを選択して書き込むようにしてもよい。
また、本発明の実施例1における仮想アドレス構成情報1007では、グループごとに無効ページ数1205、最終書き込み時刻1206の情報を保持している。無効ページ数1205は、グループ内の物理ページのうち、データの書き換えが発生したために無効になったページの数が格納され、また最終書き込み時刻1206には、当該グループに最後にデータが書き込まれた時刻が格納される。これらの情報は、リクラメーション(本明細書ではRCと略記されることもある)あるいはリフレッシュ(本明細書では、RFと略記されることもある)処理で用いられる。本発明の実施例1に係るFMPKG112では、これら情報をグループごとに管理しているが、物理ブロック毎など、その他の単位で管理してもよい。また、RC、RF処理などの用途のために、無効ページ数1205、最終書き込み時刻1206以外の情報を管理するようにしても良い。
続いて図13を用いて、本発明の実施例1に係るFMPKG112が実行する、論理アドレスから物理アドレスへの変換処理(正引き処理s1301)のフローを説明する。正引き処理s1301は、CPU206が実行しているフラッシュストレージ制御プログラム302が、たとえば上位装置からリード要求等のアクセス要求を受信した時に、当該アクセス要求でアクセス対象となるデータの物理格納位置(物理ページ)を算出するために実行される。この場合、フラッシュストレージ制御プログラム302が論物変換プログラム306を呼び出して、CPU206に正引き処理s1301を実行させ、論物変換プログラム306は正引き処理s1301の処理の結果、算出された物理アドレス情報(物理ブロック番号と、当該物理ブロック番号で特定される物理ブロック内物理ページ番号の組)を要求元であるフラッシュストレージ制御プログラム302に返却する。以下では、リード要求で指定されるアクセス対象データの先頭位置は論理ページ境界と一致しており、かつアクセス対象データのサイズが1論理ページサイズと等しい場合、つまり1論理ページ分の領域の物理位置の算出処理について説明するが、それ以外の場合でも同様の処理を行うことで、アクセス対象データの物理格納位置の算出ができる。
まずCPU206は、処理対象のコマンドに含まれる、アクセス対象データのアドレス(LBA)の情報から、アクセス対象となる論理ページの論理ページ番号を算出する(s1302)。これはアクセス対象データのLBAを論理ページサイズで除算することで算出される。続いてCPU206は、ページマッピングテーブル1002を参照して、論理ページ1101がs1302で算出した論理ページ番号に一致する行(エントリ)を特定し(s1303)、当該行のグループ番号1102と、グループ内のオフセットアドレス1103を取得する(s1304)。
続いてCPU206は、s1304で取得したオフセットアドレス1103から、仮想ブロック番号と、仮想ブロック内のオフセットアドレス(仮想ブロックの先頭位置のアドレスを0とした相対アドレス)を計算する(s1305)。なお、s1305では、s1304で取得したオフセットアドレス1103を物理ブロックサイズ(1物理ページのサイズ×1物理ブロック内ページ数)で除算し、このときの商を仮想ブロック番号とし、剰余を仮想ブロック内のオフセットアドレスとする。そしてs1306では、CPU206は仮想アドレス構成情報1007を参照し、グループ1201がs1304で取得したグループ番号と等しく、かつ仮想ブロック番号1203がs1305で算出した仮想ブロック番号と等しい行を参照し、対応する物理ブロック番号(物理ブロック#1204)を取得する。s1306で取得した物理ブロック番号で特定される物理ブロックの中に、アクセス対象データが存在することが分かる。
s1307ではCPU206は、s1305で算出した仮想ブロック内オフセットアドレスを物理ページサイズで除算することで、s1306で取得した物理ブロック番号で特定される物理ブロック内の相対ページ番号(物理ブロック内先頭ページの番号を0としたページ番号)を割り出し、上位装置からのアクセス要求に含まれるアドレスが対応する物理ページ(アクセス対象データの格納されている先頭の物理ページ)の物理ページ番号を算出する。また、本発明の実施例に係るFMPKG112の場合、1つの論理ページが複数の物理ページに跨って格納される場合があるので、s1305で算出した仮想ブロック内オフセットアドレスに「論理ページサイズ−1」を加算した値を物理ページサイズで除算し、アクセス対象データの格納されている終端物理ページの物理ページ番号を算出し、算出された先頭物理ページ及び終端物理ページの物理アドレス(物理ブロック番号と物理ページ番号の組)を要求元に返却することで、処理を終了する(ただし先頭物理ページと終端物理ページの物理番号が同一の場合には、1つの論理ページが1物理ページに収まっていることを意味するので、その場合には1つの物理ページ番号のみが要求元に返却される)。物理アドレスを受け取った要求元は、例えば要求元が行っていた処理がリード処理だった場合には、受け取った物理アドレスに該当する物理ページからデータを読み出し、上位装置に返却する等の処理を行う。
続いて、FMPKG112が上位装置102からのライトデータを、FMチップの物理ページに格納する処理(ライト処理)の流れについて説明する。仮に、ライトデータを論理ページ単位で書き込むことを想定した場合、ライト処理の流れの概略は以下の通りになる。FMPKG112が論理ページに対するライト要求及びライトデータを受信すると、仮想アドレス構成情報1007を用いて未書き込み領域(まだ論理ページが対応付けられていない仮想アドレス空間上の領域)のアドレス(グループ番号及びグループ内オフセットアドレス)を決定し、当該決定された領域のアドレス情報をページマッピングテーブルのグループ1102及びオフセットアドレス1103の欄に登録する。そして決定された未書き込み領域のアドレスに対応する1または複数の物理ページを特定し、その特定された物理ページに対してライトデータを格納すればよい。
本発明の実施例に係るFMPKG112では、基本的には上記の流れで処理を行えば、論理ページ単位でライトデータを物理ページに格納することは可能である。ただしFMチップへのデータ書き込み最小単位はページ(物理ページ)である、という制約があるため、上記の流れの処理では物理ページに無効領域が発生することがある。実際のライト処理では、物理ページに無効領域が発生しないように、複数の論理ページのデータをFMPKG112内のバッファ204に蓄積してから、まとめて1または複数の物理ページに書き込む。そのため上記の説明とはやや異なった順で処理が行われる。
図14を用いて、FMPKG112が上位装置102からライト要求を受信した時に実行する、ライト処理s1401の流れを説明する。この処理は、CPU206がメインメモリ207内のフラッシュストレージ制御プログラム302や論物変換プログラム306を実行することによって実現される。なお、以下では主に、上位装置102から、ライト対象データの先頭アドレスと終端アドレスが論理ページのページ境界に合致するデータのライト要求を受信した場合について説明する。
ライトコマンド処理s1401は、上位装置からのライト要求に対する処理である。まずCPU206は、ライトコマンドをs1402で取得する。なお、s1402で取得するライトコマンドには、ライトデータの格納位置(ライトアドレス。通常はLBAが指定されている)及びライトデータ長(セクタ数)が含まれている。
s1403では、CPU206はバッファ204にライトデータを格納する。その際、ライトアドレス及びライトデータ長から、ライトデータの格納される論理ページの論理ページ番号を算出し(なお、ライトデータ長が複数ページ分の長さの場合、変換によって導出される論理ページ番号は複数ある)、バッファにライトデータを、この変換処理により導出された論理ページ番号とともに格納する。このようにライトデータを論理ページ番号と対応付けて格納しておくことで、バッファ上ライトデータがFMに書き込まれる前に、上位装置からリード・ライト要求が到来したときには、バッファ204に格納されたデータに対するリード、ライトを行うことで、上位装置からの要求を処理することが出来る。バッファ204にライトデータを格納した後、CPU206は上位装置へ完了通知を行う(s1404)。上位装置への完了通知は、FMにデータを格納する前に行ってよい。
続いて、s1405で、CPU206はバッファ204上に一定以上の量のデータが存在するか確認し、存在した場合には、バッファ204上のデータをFMの物理ページへ書き込む処理を行う。本発明のFMPKG112では、論理ページが複数の物理ページに跨がって格納されることを許容しているが、一方でFMの最小書き込み単位は、物理ページである。そのため、論理ページ単位、あるいは物理ページ単位で、FMへ書き込みを行おうとすると、論理ページの全体または断片が物理ページの一部にのみ書き込まれ、物理ページのそれ以外の領域が無効領域になる事態が発生する。無効領域が極力発生しないようにするために、本発明の実施例における書き込み処理では、ある程度多くの量のデータをまとめてFMに書き込むようにする。好ましくは、物理ページサイズと論理ページサイズの公倍数に等しいサイズのデータがバッファに蓄積された時点で、FMに書き込みを行うとよい(たとえば論理ページサイズが8KB、物理ページサイズ[先に述べたとおり、ここでいう「物理ページサイズ」とは、ECC等の付加情報を除く、上位装置から到来したデータを書き込む領域のサイズである]が7KBの場合、8と7の最小公倍数である56KBあるいは56KBの倍数に等しい量のデータがバッファに蓄積された時点で、FMへの書き込みを行うと、無効領域が発生しないため、記憶領域を有効に活用できる書き込みが実現される)。
s1406では、CPU206はオープングループのグループ番号を取得する。オープングループとは、先に述べたとおり、書き込み可能になっているグループのことを意味する。続いてs1407でCPU206は、取得されたオープングループ内の、次書き込み位置1202及び今回FMに書き込むデータ量を元にして、書き込み先物理ブロックの物理ブロック番号1204及び物理ブロック内ページ番号を算出する。物理ブロック番号1204及び物理ブロック内ページ番号の算出方法であるが、次書き込み位置1202を「1物理ブロック内物理ページ数×物理ページサイズ(物理ページサイズの単位はセクタ数)」で除算することで、データ書き込み対象となる先頭物理ブロックの仮想ブロック番号が算出でき、また仮想アドレス構成情報1007を参照することで、算出された仮想ブロック番号に対応する物理ブロック番号1204を特定できる。また次書き込み位置1202を「1物理ブロック内物理ページ数×物理ページサイズ」で除算したときの剰余を求めることで、今回の書き込み先となる物理ブロック内ページの先頭ページ番号(先頭物理ページ番号)を取得できる。さらに今回FMに書き込むデータ量が複数物理ページ分にわたる場合、必要とされる物理ページ数分のページ番号を連番で取得する(物理ページを5ページ分取得する必要があり、かつ今回の書き込み先となる物理ブロック内ページの先頭物理ページ番号が3の場合、ページ番号3、4、5、6、7のページ番号を取得する)。
s1408ではCPU206は、バッファ上のデータを、s1407で取得した物理アドレス(書き込み先物理ブロックの物理ブロック番号1204及び物理ブロック内ページ番号)で特定される物理ページに順次書き込む。この時、無効領域が発生しないように、バッファ上の複数論理ページ分のデータを連続して物理ページに書き込む(たとえば図9のように)。なお、物理ページに格納された各データについて、当該データの格納された物理ページ位置に対応する仮想アドレス空間上のアドレス(グループ番号、グループ内オフセットアドレス)を算出し(データの格納された物理ページの物理ブロック番号、物理ページ番号、物理ページ内オフセット位置と、仮想アドレス構成情報1007とから算出可能である)、それを各データの論理ページ番号(バッファ上に記憶されている)と対応付けて一時的に記憶しておく。これはs1409の管理情報の更新で必要となる。その後s1409で、CPU206はページマッピングテーブル1002等の管理情報の更新を行う。この際、s1408で一時的に記憶しておいた情報(各データの記憶された仮想アドレス空間上のアドレス、及び当該データの論理ページ番号の情報)を用いて、今回物理ページへの書き込み対象となった論理ページ(1101)に対応するグループ#1102、オフセットアドレス1103を更新する。さらに仮想アドレス構成情報1007の次書き込み位置1202を更新する(次書き込み位置1202に、今回書き込まれたデータ量(セクタ数)を加算する)。
s1408でのフラッシュチップ内物理ページへの書き込みは、上位装置からのライト要求に対して非同期で実施されること、また一定量のデータをまとめて物理ページへ書き込むことを想定している。これは、物理ページが書き込み単位であり、かつ論理ページが物理ページを跨がることを想定した場合、効率よく、かつ管理を楽にするために有効である。さらに、バッファが充分大きく、複数物理ブロック分のデータを蓄積できる場合、複数物理ブロック分のデータが蓄積されるまでバッファにデータを格納し、複数の物理ブロックに対して並列にデータを書き込むように制御し、アクセス性能をより向上させる方法もあり得る。この場合、仮想アドレス構成情報1007において、グループ1201内に登録される複数の物理ブロックを、それぞれ異なるFMチップ209から選択するとよい。たとえばグループ構築処理(後述)において、仮想ブロック#1203が0番、1番、2番、3番に対応付けられる物理ブロックがそれぞれ、図2のFMチップ209a、209b、209e、209f内の物理ブロックになるように、仮想アドレス構成情報1007を設定し、4物理ブロック分のデータをまとめてFMチップに格納する際には、FMチップ209a、209b、209e、209fに対して、並列にライト要求を発行すると、単一のFMチップ209に対してライト要求を発行する場合に比べて、性能が向上する。
一方で、必ずしも上で述べたように、複数ページをまとめてFMへ格納する方式を採る必要は無く、例えば1物理ページ単位でデータをFMに格納する方式を採ってもよい。その場合、FMに格納した物理ページに論理ページが跨がっている場合は、論理ページの一部領域が物理ページに格納されず、バッファに残されることがあるが、バッファに残された論理ページの論理ページ番号、論理ページ内オフセットアドレスの情報をバッファ上に残されたデータとともに管理しておき、他の論理ページの書き込み処理(図14の処理)が行われるときに、あわせてバッファに残された論理ページの一部のデータを物理ページに書き込むようにすればよい(もちろん、先にFMに格納された論理ページの前半部と、今回書き込まれる論理ページの後半部が、仮想アドレス空間上で連続するように書き込む必要がある)。
また、上で述べた方式は、いわゆるライトバック方式である。従って、停電等の障害が発生した場合に、揮発メモリ(バッファ等)上に格納されているライトデータを退避させることができるように、キャパシタやバッテリなどによる、非常時の給電システムが必要である。
最後にs1410で、CPU206は今回の書き込みの結果、オープングループの空き領域が枯渇した(次書き込み位置1202が、1グループ内物理ページ数を超過した)かどうかを判定し、枯渇した場合は、今回書き込みを行ったグループ(オープングループ)について、仮想アドレス構成情報1007の次書き込み位置1202の値をN/Aにすることで、今回書き込みを行ったグループを非オープングループに変更し、その後新規グループの構築を行って(s1411)、処理を終了する。s1411の処理については、後述する。
なお、上の説明では、ライトデータの格納位置が論理ページのページ境界に合致している場合について説明したが、上位装置102から、論理ページのページ境界に合致しないライト要求、たとえば1論理ページサイズに満たないサイズのデータのライト要求を受け付けたときには、s1402とs1403の間に、FMチップからライト対象データを含む1論理ページ(または複数論理ページ)分のデータをバッファに読み出し、バッファ上に読み出された1または複数論理ページ分のデータに対してライト対象データを上書きし、上書きされた1または複数論理ページ分のデータを、s1404以降の処理を実施することでFMへライトする。つまり、論理ページ境界に合致しないサイズのデータのライト要求を受け付けたときは、当該データを含む論理ページ全体のリードモディファイドライト(read modified write)を行って、論理ページ全体を書き換える。これは、ページマッピングテーブル1002で、論理ページ単位で情報を管理しているため、論理ページ内の一部領域のみの更新であっても、論理ページ全体を書き換える必要があるためである。ただし、この処理は、従来からあるフラッシュストレージでも同様であり、このような処理を行ったからといって、従来からあるフラッシュストレージに比べて性能が悪化するわけではない(同等である)。また論理ページサイズを、上位装置(たとえばホスト計算機103)で稼働するプログラム(OS、ファイルシステム、アプリケーションプログラム)が発行するI/O要求で指定されるデータサイズ(たとえば4KBや8KB)と同サイズにしておけば、論理ページのページ境界に合致していないライト要求が来ることは少ない。
続いて図15を用いて、図14のs1411で行われる、新規グループ構築処理s1501のフローを説明する。
新規グループ構築処理s1501は、オープングループの空きページが無くなり、次の書き込み先グループが必要となったときに実施される。従って、グループをオープングループにする処理と同義である。まずCPU206は、仮想アドレス構成情報1007の中から、物理ブロックの登録されていない未使用のグループ番号を取得する(s1502)。続いてCPU206は、消去済みの空きブロックリストを取得し、その中から1つのグループを構成するために必要となる数の物理ブロック番号を取得する(s1503,s1504)。最後にs1505で、CPU206はこれらの物理ブロック番号を仮想アドレス構成情報1007に登録し、次書き込み位置1202に値0を設定することにより今回作成した新規グループをオープングループとし、新規グループ構築処理を終了する。
空きブロックリストは、消去済み物理ブロックの、物理ブロック番号が登録されているリストである。空きブロックリストは最低限、FMPKG112内に1つ用意されていれば良いが、用途に応じて適切な物理ブロックを選択できるように、複数の空きブロックリストを設け、各空きブロックリストに同種の属性・特性を有する空き物理ブロックの物理ブロック番号を登録しておくようにしても良い。
例えば物理ブロックは、その消去回数などの要因によって、徐々に寿命が短くなる(劣化する)。そこで、各物理ブロックについて、消去回数に関する情報などに基づく、劣化度合いを示す指標値を算出して管理し(以下ではこの、消去回数に関する情報等に基づいて算出される指標値を「劣化度」と呼ぶ)、所定範囲の劣化度を有する空きブロックを集めた空きブロックリストを複数設け(たとえば劣化度が0から1までの値(小数)で定義される指標値で、値が小さいほど劣化度合いが少ない(寿命が長い)物理ブロックであるとすると、劣化度0〜0.5の値を有する(寿命が長い)空き物理ブロックを管理する空きブロックリストと、劣化度0.5を超える値を有する(寿命が短い)空き物理ブロックを管理する空きブロックリストの2つを設けるなど)、新規グループ構築処理を実行する際に、一つの空きブロックリストを選択し、選択された1つの空きブロックリストから空き物理ブロックを複数選択して(これにより、選択される物理ブロックはいずれも所定範囲内の劣化度を有する物理ブロックになる)、新規構築されるグループに登録するようにしてもよい。空きブロックリストが複数ある場合の選択方法は、上位装置からあらかじめ劣化度の範囲を指定され、FMPKG112は上位装置から指定された劣化度の範囲の物理ブロックを管理する空きブロックリストを選択する方法、あるいはFMPKG112がI/O状態や稼働時間等の情報をもとに自動的に選択する方法などがあり得、いずれの方法をとってもよい。
また、先に述べたとおり、FMへのデータライト時の並列書き込みを可能にするために、FMチップ209やダイ(DIE)401などの物理的に異なる単位毎に空きブロックリストを設け(つまり、各空きブロックリストでは、同一のFMチップ209、あるいは同一ダイ401内の空き物理ブロックが管理される)、新規グループ構成時にそれぞれの空きブロックリストから順に空き物理ブロックを1つずつ取得してグループに登録するようにしても良い。これにより、1つのグループには、複数のFMチップ209あるいは複数のダイ401内の物理ブロックが登録されることになり、FMへのデータライト時の並列書き込みが可能になる。
続いて図16を用いて、本発明の実施例1に係るFMPKG112が実行する、グループ単位リクラメーション(RC)/リフレッシュ(RF)処理s1601のフローを説明する。
RCとRFは、それぞれ目的は異なるが、ブロック内の有効なデータを他のブロックにコピーしてコピー元のブロックを消去する処理である。本発明の実施例1に係るFMPKG112では、グループ単位でRC/RF処理を実施する。これは、グループ内の1つのブロックのみを消去すると、消去対象ブロックに隣接しているブロックに跨がった論理ページもコピーする必要があるためである。ただし、1つのブロックずつRC/RFを実施するようにしてもよい。
CPU206はまず、s1602で対象とするグループを取得する。RC/RFの対象を選択するのは、例えばRCに関して言えばコピー量がなるべく減るように、仮想アドレス構成情報1007で管理されている無効ページ数1205を参照し、有効データの最も少ないグループ(無効ページ数1205がもっとも大きいグループ)から優先的にグループを選択する。RFでは、たとえば最終書き込み時刻1206を参照し、書き込んでからの時間経過が長いページを優先的に選択する。あるいは各グループについて、信頼性に関する情報を管理するようにし、信頼性に問題のあるグループを選ぶようにしても良い。なお、原則としてここではオープングループは選択しない。
s1603では、書き込み先のグループが選択される。書き込み先としては、オープングループが選択される。ただし、例えばウェアレベリングを考慮して、IO頻度に適したグループを選択する、あるいは新規構築するようにしても良い。s1604でCPU206は、RC/RF対象グループ(s1602で選択されたグループ)内に有効データが存在するか判定を行い、存在する場合は、有効データの一部をs1605でバッファ204上にコピーする。バッファ204上にコピーされたデータについて、CPU206は、図14で説明したライト処理中のs1412(s1405〜s1411までの処理)と同様の処理を行うことで、FMへと書き込む。ただし、s1412の処理を行う場合、s1406では、s1603で選択したグループがオープングループとして取得される。
CPU206は、s1604、s1605、s1412の処理を、RC/RF対象グループ内の有効データが無くなるまで実施する。RC/RF対象グループ内の全ての有効データがコピーされ、RC/RF対象グループ内の有効データが無くなったら、CPU206は、RC/RF対象グループに登録されている全物理ブロックについて消去処理を行い、仮想アドレス構成情報1007から、当該グループの情報を削除する(s1610、s1611)。消去されたブロックは空きブロックリストに追加される。
以上が、本発明の実施例1に係るFMPKG112についての説明である。本発明の実施例1に係るFMPKG112の特徴は、論理ページサイズと物理ページサイズとが一致しない場合でも、管理情報の量が過剰に増加しない点にある。論理ページサイズと物理ページサイズとが等しくない場合、図9で説明したように、1つの論理ページが複数の物理ページに跨がって格納される場合が発生する。この場合、1論理ページについて、論理ページの前半部が格納される物理ページの情報、及び論理ページの後半部が格納される物理ページの情報という、2つの情報を管理する必要がある。そのため、たとえばほぼすべての論理ページが2物理ページに跨って格納される場合、論理ページと物理ページとの対応関係を管理する情報の量は、1論理ページが1物理ページ内に収まる場合に比べて2倍必要となる。
一方、本発明の実施例1に係るFMPKG112の場合、論理ページと物理ページとの対応関係を管理する代わりに、論理ページを、仮想アドレス空間という1次元アドレス空間に対応付け、ページマッピングテーブルを用いて論理ページと仮想アドレス空間との対応関係を管理する。ページマッピングテーブルには、1論理ページの位置を表現する情報は1エントリしか格納されないため、ページマッピングテーブルのサイズは、従来のフラッシュストレージ(論理ページと物理ページのサイズが等しい)における論物変換テーブルと同様のサイズしか必要としないため、ほぼすべての論理ページが2物理ページに跨って格納される場合でも、管理情報のサイズが増加しない。
もちろん、実施例1にて説明したとおり、本発明の実施例1に係るFMPKG112ではページマッピングテーブルに加え、仮想アドレス空間と物理ブロックとの対応関係を管理する仮想アドレス構成情報を管理する必要があるが、仮想アドレス構成情報のサイズは、論物変換テーブルに比べて極めて小さい。なぜならば、論物変換テーブルには、ページ毎の情報が格納されるため、論物変換テーブルのサイズは、ページ数に比例する。一方仮想アドレス構成情報は、物理ブロック毎の情報が格納されるため、物理ブロック数に比例したサイズを有する。そして1物理ブロックには、たとえば128個あるいは256個のページを含んでいる(将来はもっと多くのページが格納される)ので、FMPKG112内の物理ブロック数は、物理ページ数の128分の1あるいは256分の1しかない。そのため、仮想アドレス構成情報のサイズは、論物変換テーブルの1/100以下と、極めて小さなサイズとなるため、仮想アドレス構成情報を持つことは、それほど管理情報を増加させることにはならない。
次に、実施例2について説明する。以下の説明では、実施例1との違いを重点的に説明する。従って、実施例1と同じ構成及び処理については、説明を省略または簡略する場合がある。
実施例2におけるストレージシステム及びFMPKGの基本的な構成は、実施例1に係るストレージシステム101、FMPKG112とほとんど同じであるため、図示を省略する。ただし、実施例2におけるFMPKGは、上位装置からのライトデータを圧縮する機能及び/または暗号化する機能を備える点が、実施例1に係るFMPKG112と相違する。この機能は、図2のCPU206あるいはASIC203で実施される態様でもよいし、あるいは圧縮または暗号化用の専用ハードウェアが設けられる態様もありえる。また、実施例2に係るFMPKGでは、ライトデータを変換(たとえば圧縮、暗号化)して格納するが、格納されたデータが読み出される場合には、データが逆変換(圧縮データの伸長、あるいは暗号化されたデータの復号化)されて上位装置に渡されるため、ストレージシステムやホスト計算機からは、実施例1に係るFMPKG112と同じ装置としてみえる。そのため、実施例2に係るストレージシステムの構成は、実施例1におけるものと同じである。
実施例1においては、論理ページが物理ページを跨がるという点以外には限定をおいていなかったが、本実施例は、特に論理ページの格納時のデータサイズが変動する場合の処理方式について述べる。これは、データ圧縮や暗号化などのデータ変換が加わるためである。この場合、各論理ページのフラッシュでの格納状況はより複雑となる。
図17は、実施例2におけるページマッピングテーブル1700の内容を示す。
実施例1と同じく、実施例2に係るFMPKGでは、上位装置に対して一次元の論理記憶空間(図6の600相当物)を提供し、この一次元の論理空間を先頭から所定サイズ(たとえば16セクタ)ごとに分割し、分割された各領域を論理ページとして管理している。実施例1と異なる点は、圧縮・暗号化などのデータ変換を行う点だが、データ変換はこの論理ページごとに行われる。つまり1論理ページ未満のサイズのデータを変換(たとえば圧縮)したり、論理ページ境界を跨いで存在するデータを変換(圧縮)する、ということは行わない。
ページマッピングテーブル1700が、実施例1のページマッピングテーブル1002と異なるのは、ページマッピングテーブル1700内の各エントリについて、データの長さを表すレングス1705の項目が加えられている点である。各論理ページはデータ変換によりサイズが変動するため、変換後の論理ページのデータのサイズをこのエントリで管理する。レングス1705の項目に格納される数値の単位は、例えばセクタ(512バイトあるいは520バイト)であるが、その他の単位(バイトなど)を用いてもよい。つまり、ページマッピングテーブル1700では、変換(たとえば圧縮)後の論理ページのデータが対応付けられる仮想アドレス空間上の範囲の情報を、論理ページ毎に管理している。
また、実施例2に係るFMPKGでも実施例1と同様に、仮想アドレス構成情報を管理するが、その内容は実施例1に係る仮想アドレス構成情報1007と同じであるため、ここでは説明しない。
図18は、実施例2に係るFMPKGが実行する、論理アドレスから物理アドレスへの変換処理(正引き処理)のフローを示す。実施例1における正引き処理と同じく、上位装置からリード要求を受け付けた場合に行われる論理アドレスの物理ページ番号への変換処理で、かつリード要求で指定されるアクセス対象データの先頭位置は論理ページ境界と一致しており、アクセス対象データのサイズが論理ページサイズと等しい場合、つまり1論理ページ分の領域の物理位置の算出処理について説明する。
実施例1の正引きフロー(図13)と異なるのは、図13のs1304の処理(グループ番号とグループ内オフセットアドレスの取得処理)がs1802に代わっている点、及び図13のs1307の処理が、s1803に代わっている点である。s1802では、FMPKGのCPUは、ページマッピングテーブル1700の中から、該当する論理ページのグループ番号1703、グループ内オフセットアドレス1704に加え、レングス1705を取得する。グループ番号とオフセットアドレスにより、当該論理ページが格納されている仮想アドレス空間上の先頭アドレスは取得できるため、s1305〜s1306の処理は実施例2でも実施例1と同様に行われる。
そしてs1803では、CPUはアクセス対象データの先頭物理ページ番号及び終端物理ページ番号を算出する。先頭物理ページ番号の算出処理は、実施例1のものと同じであるが、アクセス対象データの終端物理ページ番号の算出処理の際には、1論理ページのサイズを用いることに代えて、レングス1705の情報を用いて終端物理ページ番号を算出する点が、実施例1のものと相違する。その他の処理は実施例1で説明した処理と同様である。
図19は、実施例2におけるFMPKGが上位装置からライト要求を受信した時に実行する処理の流れを示している。図14の説明と同様、ここでも、ライトデータの格納位置が論理ページのページ境界に合致しているケースを中心に説明する。
実施例1のライト処理(図14の処理)と異なるのは、まずs1402〜s1404の処理によってバッファに格納された、上位装置から受領したデータに対して変換処理が施される(s1902)点である(これにより、バッファに格納されていた変換前のデータは、変換後データに置き換わる)。変換処理は先に述べたとおり、FMPKGのCPUが行うようにしても良いし、あるいはCPUが専用のハードウェアに実施させてもよい。またs1902の後に行われるs1903で、CPUは変換後のサイズでバッファ上のデータ量をチェックし、バッファ上のデータ量(変換後のデータのサイズ)が所定サイズ以上であると判定されるとフラッシュへのライトを開始する、そして管理情報更新(s1409)の際には、レングス1705の情報更新を行う点が、実施例1の図14の処理と異なる。それ以外の点は実施例1と同様である。
なお、実施例2の変形として、FMPKGが上位装置から受信したライトデータをFMに格納する時にはデータ変換を行わず(図19の処理の実行時にs1902の処理を行わない)、RC/RF処理の際に、圧縮などのデータ変換を行う方法もある。その場合のRC/RF処理の流れを、図20に示す。
図20の処理が実施例1の図16の処理と異なる点は、データをバッファにコピーする際(実施例1の図16のs1605)に、図20の処理では、CPU(あるいは専用ハードウェア)がデータ変換を実施し、変換されたデータをバッファに格納する点である(s2002)。それ以外の点は、実施例1のRC/RF処理と同じである。
以上で、実施例2に係るFMPKGについての説明を終了する。実施例2に係るFMPKGで管理する管理情報は、実施例1におけるものと同様に、ページマッピングテーブル1700及び仮想アドレス構成情報である。ページマッピングテーブル1700は、実施例1におけるものと比べると、データの長さ(レングス)の情報を保持する必要があるものの、実施例1の場合と同様に、ページマッピングテーブルには、1論理ページの位置を表現する情報は1エントリ分しか格納する必要がないため、管理情報の量はそれほど増加しない。
また、実施例1に係るFMPKGでは、全ての論理ページサイズが同一であったため、管理情報サイズを小さくするための一つの方法として、論理ページサイズを物理ページサイズと同一にするという方法を採ることが可能である。一方、実施例2に係るFMPKGのように、格納データに対してデータ圧縮や暗号化などのデータ変換を行う場合、データ内容に依存してデータサイズが変動する。そのため、全ての論理ページサイズを物理ページサイズと同一にするという方法を採ることができないので、データ格納効率を上げたい場合、1つの論理ページが複数の物理ページに跨って格納されることを許容する構成にせざるを得ない。上で説明した実施例2の方法を用いることで、データ変換によって格納されるデータのサイズが変動する場合であっても、少ない管理情報で、論理ページと物理格納位置の関係を管理することができる。
次に、実施例3を説明する。以下の説明では、実施例1との違いを重点的に説明し、実施例1と同じ構成及び処理については、説明を省略または簡略する場合がある。
実施例1、2においては、個々の物理ページのサイズは固定であったが、本実施例では、物理ページサイズが一定でない場合を述べる。ただし完全に自由なサイズを採るのではなく、1つのFMPKG内に、数パタンの物理ページが存在する。これは、例えば物理ページ毎に最適なECCサイズを適用するような方式が考えられる。
図21は、物理ページサイズが異なるブロックの存在するデバイスで仮想アドレスグループ(及び仮想アドレス空間)を構成する例を示したものである。
デバイス中に、物理ページサイズ特性の異なる2種類以上の物理ブロックがあり、それぞれの種類の物理ブロックを用いて仮想アドレスグループ(グループ)を構成する。ここで「物理ページサイズ特性」とは、1物理ブロック内の物理ページサイズがすべて同じであるという特性、あるいは物理ページサイズの異なる物理ページが同一物理ブロック内に複数種類存在し、それらが特定のパタンで分布している(たとえば各物理ブロックについて、ページ番号0〜n間の物理ページの物理ページサイズは7KBで、ページ番号(n+1)〜(n+m)の物理ページは、物理ページサイズが8KBである)等のように、物理ブロック内の各物理ページのページサイズの傾向・分布のことを意味する。
図21の例では、ある物理ページサイズ特性を持つ物理ブロックの種別(type)をtype Aとし、またtype Aとは異なる物理ページサイズ特性を持つ物理ブロックの種別をtype Bとする。実施例3に係るFMPKGでは、type Aの種別の物理ブロック(2102)のみが登録された仮想アドレスグループ2101a、及びtype Bの種別の物理ブロック(2103)のみが登録された仮想アドレスグループ2101bを構成している。もちろん、これ以外の仮想アドレスグループを構成してもよい。
同一種別のブロックでグループを構成するのは、グループでブロックの特性をそろえることで寿命管理を容易にできる点、またグループ内のオフセットアドレスから当該グループの仮想アドレス空間上に対応付けられている物理ブロック・物理ページを特定する場合、個別のブロックの情報を参照することなく実施できる点に利点がある。
図22は、本実施例における仮想アドレス構成情報2201を示す。
実施例3における仮想アドレス構成情報2201の構成要素は、グループ2202〜最終書き込み時刻2207までは実施例1のものと同一である。ただし仮想アドレス構成情報2201には、グループ毎に、そのグループに対応づけてあるブロックの種別2208の情報が保持される点が、実施例1の仮想アドレス構成情報1007と異なる。FMPKGは種別2208に格納されている情報を元にして、グループ内の各物理ページの物理ページサイズを識別する。
図23は、本発明の実施例3に係るFMPKGが実行する、論理アドレスから物理アドレスへの変換処理(正引き処理)のフローを示す。
実施例1で説明した正引き処理(図13)と同様に、(FMPKGの)CPUはアクセス対象論理ページ番号を取得し、取得した論理ページ番号を元にページマッピングテーブルを参照し、アクセス対象論理ページ番号に対応づけられたグループ番号とグループ内のオフセットアドレスを取得する(s1302〜s1304)。続いてCPUは、仮想アドレス構成情報2201を参照し、種別2206を取得する(s2302)。この種別2206により、CPUは仮想アドレスグループを構成する各物理ブロック内の物理ページ構成(各物理ページのサイズ)を識別し、続くs2303で、グループ内のオフセットアドレスと物理ページ構成を元に、仮想ブロック番号と仮想ブロック内のオフセットアドレスを算出する。最後にCPUは、s2304で物理アドレスを取得する。s2304は、実施例1(図13)のs1306、s1307に相当する処理である。実施例1の正引き処理の場合、仮想ブロック内オフセットアドレスを物理ページサイズで除算するだけで物理アドレスを算出可能であったが、実施例3の場合、物理ページ構成によっては(たとえば物理ブロック内に異なるサイズの物理ページが存在する構成等)、単純に除算するだけでは物理アドレスは算出できない点が、実施例1における処理と異なる(ただし物理ブロック内各物理ページのページサイズの分布パタンが分かっていれば、その情報を用いて物理アドレスを算出することができる)。
図24は、実施例3における新規グループ構築処理のフローを示す。実施例1との差異は、本発明の実施例3に係るFMPKGは、種別ごとの空きブロックリストを管理していること、そしてブロック取得の時に、CPUは取得対象ブロックの種別を決定し、決定された種別の空きブロックリストを取得する点である(s2402、s2403)。たとえば、フラッシュメモリ制御装置201は、常時I/O頻度を監視しており、新規グループ構築処理の際にI/O頻度が高かった場合には比較的信頼性が高い物理ブロックの種別である、種別Aに該当する物理ブロックからグループを構築し、I/O頻度が低い場合には、それほど信頼性が高い物理ブロックではない、種別Bに該当する物理ブロックからグループを構築する、等の選択を行う。これにより、新規グループを構成するブロックは同一種別で構成されることになる。この処理を効率化するために、各ブロックは種別毎に分けられたキューなどで管理されていても良い。また、要求する種別は、例えば種別によって信頼性やデータ格納量に差があるのであれば、格納データの種類に応じて最適なものを選ぶ方式であっても良い。
以上が実施例3に係るFMPKGの説明である。たとえば現在研究が進んでいる3次元積層技術を用いたチップ(3D積層チップ)では、同じFMチップ内に特性の異なるページが存在し、それぞれのページで異なるサイズのECCを採用する必要性が出る可能性が高い。そのため、実施例3に係る構成は、3D積層チップのような特性のFMチップを使用したFMPKGを用いる場合に有用である。
101:ストレージシステム
102:ストレージコントローラ
103:ホスト計算機
104:管理端末
105:SAN
106:保守インターフェイス
107:ホストインターフェイス
108:CPU
109:メモリ
110:ドライブインターフェイス
112:フラッシュメモリストレージ装置(FMPKG)
201:フラッシュメモリ制御装置
202:ストレージインターフェイス
203:ASIC
204:バッファ
205:バッテリ
206:CPU
207:メインメモリ
208:フラッシュメモリインターフェイス
209:フラッシュメモリチップ(FMチップ)
401:ダイ(DIE)
402:ページバッファ
403:物理ブロック
404:物理ページ
501:Code Word(CW)
502:データ
503:ECC
1001:論理ページ
1002:ページマッピングテーブル
1003:仮想アドレス空間
1004:仮想アドレスグループ
1006:仮想ブロック
1007:仮想アドレス構成情報
1008:物理ブロック
1009:物理ページ
102:ストレージコントローラ
103:ホスト計算機
104:管理端末
105:SAN
106:保守インターフェイス
107:ホストインターフェイス
108:CPU
109:メモリ
110:ドライブインターフェイス
112:フラッシュメモリストレージ装置(FMPKG)
201:フラッシュメモリ制御装置
202:ストレージインターフェイス
203:ASIC
204:バッファ
205:バッテリ
206:CPU
207:メインメモリ
208:フラッシュメモリインターフェイス
209:フラッシュメモリチップ(FMチップ)
401:ダイ(DIE)
402:ページバッファ
403:物理ブロック
404:物理ページ
501:Code Word(CW)
502:データ
503:ECC
1001:論理ページ
1002:ページマッピングテーブル
1003:仮想アドレス空間
1004:仮想アドレスグループ
1006:仮想ブロック
1007:仮想アドレス構成情報
1008:物理ブロック
1009:物理ページ
Claims (14)
- コントローラと複数のフラッシュメモリチップを備えるフラッシュメモリストレージ装置であって、
前記コントローラは少なくとも、プロセッサ、揮発性メモリで構成されるバッファ、上位装置に接続するためのストレージインターフェイス、前記複数のフラッシュメモリを前記コントローラに接続するためのフラッシュメモリインターフェイスを備え、
前記プロセッサは、前記上位装置に対して提供する論理記憶空間を、所定サイズの領域である論理ページ単位に分割して管理するとともに、前記複数のフラッシュメモリチップの有する複数の物理ブロックが対応付けられた線形なアドレス空間である仮想アドレス空間を管理しており、
前記物理ブロックの各々は、前記フラッシュメモリチップの最小アクセス単位の領域で、前記論理ページとサイズの異なる領域である物理ページを複数有し、
前記プロセッサはまた、前記論理ページと前記仮想アドレス空間上のアドレスとの対応関係が記録されたページマッピングテーブルと、前記仮想アドレス空間上の領域と前記物理ブロックとの対応関係が記録された仮想アドレス構成情報とを管理することを特徴とする、フラッシュメモリストレージ装置。 - 前記プロセッサは、前記上位装置から前記論理ページに対するライト要求を受け付けると、前記仮想アドレス空間上の未使用領域を選択し、前記選択された未使用領域の前記仮想アドレス空間上のアドレスと前記論理ページとの対応関係をページマッピングテーブルに記録することを特徴とする、請求項1に記載のフラッシュメモリストレージ装置。
- 前記プロセッサは、前記上位装置から前記論理ページに対するリード要求を受け付けると、前記ページマッピングテーブルを参照して前記論理ページに対応する前記仮想アドレス空間上のアドレスを特定し、前記仮想アドレス構成情報を参照することで、前記仮想アドレス空間上のアドレスに対応付けられている前記物理ブロック内の1または複数の前記物理ページを特定することを特徴とする、請求項1に記載のフラッシュメモリストレージ装置。
- 前記プロセッサは、前記上位装置からのライトデータを受け付けると、前記ライトデータを前記バッファに蓄積し、
前記バッファに1物理ページのサイズ以上のデータが蓄積された時、前記バッファに蓄積されたデータを前記物理ページのサイズ毎に、前記物理ページに格納することを特徴とする、
請求項1に記載のフラッシュメモリストレージ装置。 - 前記プロセッサは、前記仮想アドレス空間にまだ対応付けられていない前記物理ブロックを管理する空きブロックリストを複数有し、前記各空きブロックリストには、同種の属性を有する前記物理ブロックの物理ブロック番号が管理されていることを特徴とする、請求項1に記載のフラッシュメモリストレージ装置。
- 前記属性は、前記物理ブロックの消去回数に関する情報に基づいて算出される指標値である劣化度であって、
第1の範囲の劣化度を有する空き物理ブロックの物理ブロック番号は、前記複数の空きブロックリストの中の第1の空きブロックリストによって管理され、第2の範囲の劣化度を有する空き物理ブロックの物理ブロック番号は、前記複数の空きブロックリストの中の第2の空きブロックリストによって管理されており、
前記プロセッサが、前記仮想アドレス空間上の所定範囲の領域に前記物理ブロックを対応付けるとき、前記第1、第2の空きブロックリストのうち1つの空きブロックリストを選択して、前記選択された空きブロックリストによって管理されている前記物理ブロックを前記仮想アドレス空間上の所定範囲の領域に対応付けることを特徴とする、
請求項5に記載のフラッシュメモリストレージ装置。 - 前記属性は、前記物理ブロックの属するフラッシュメモリチップを特定する属性情報であって、同一の前記属性情報を有する前記物理ブロックは、同一の前記空きブロックリストによって管理され、
前記プロセッサが、前記仮想アドレス空間上の所定範囲の領域に前記物理ブロックを対応付けるとき、前記複数の空きブロックリストの各々から、空き物理ブロックを1つ選択し、前記選択された物理ブロックを前記仮想アドレス空間上の所定範囲の領域に対応付け、
前記プロセッサが、前記仮想アドレス空間上の所定範囲の領域に対応付けられた前記複数の物理ブロックに対してデータを格納する際、前記複数の物理ブロックに対して並列に書き込み要求を発行することを特徴とする、
請求項5に記載のフラッシュメモリストレージ装置。 - 前記コントローラは、前記上位装置からのライトデータを前記論理ページごとに変換して格納するよう構成されており、
前記コントローラはまた、前記ページマッピングテーブルに、前記変換された論理ページのデータが対応付けられる前記仮想アドレス空間上の範囲の情報を前記論理ページごとに管理することを特徴とする、
請求項1に記載のフラッシュメモリストレージ装置。 - 前記コントローラは、前記上位装置からライトデータを受信すると、前記ライトデータを変換してバッファに格納した後、前記バッファに格納された変換済データを前記フラッシュメモリチップに書き込むことを特徴とする、
請求項8に記載のフラッシュメモリストレージ装置。 - 前記コントローラは、前記上位装置からライトデータを受信すると、前記ライトデータを変換せずバッファに格納した後、前記バッファに格納されたデータを前記フラッシュメモリチップに書き込み、前記フラッシュメモリチップに書き込まれたデータを、別のフラッシュメモリチップへコピーするときに、前記フラッシュメモリチップに書き込まれたデータを変換し、前記変換されたデータを前記別のフラッシュメモリチップへコピーすることを特徴とする、
請求項8に記載のフラッシュメモリストレージ装置。 - 前記フラッシュメモリストレージ装置は、物理ページサイズ特性の異なる2種類以上の物理ブロックを有し、
前記プロセッサは、複数種類の前記仮想アドレス空間を管理しており、
前記それぞれの仮想アドレス空間には、同一の物理ページサイズ特性のみが対応付けられていることを特徴とする、
請求項1に記載のフラッシュメモリストレージ装置。 - ストレージコントローラと複数のフラッシュメモリストレージ装置を有するストレージシステムであって、
前記フラッシュメモリストレージ装置は、コントローラと複数のフラッシュメモリチップを備え、
前記コントローラは、前記ストレージコントローラに対して提供する論理記憶空間を、所定サイズの領域である論理ページ単位に分割して管理するとともに、前記複数のフラッシュメモリチップの有する複数の物理ブロックが対応付けられた線形なアドレス空間である仮想アドレス空間を管理しており、
前記物理ブロックの各々は、前記フラッシュメモリチップの最小アクセス単位の領域で、前記論理ページとサイズの異なる領域である物理ページを複数有し、
前記コントローラはまた、前記論理ページと前記仮想アドレス空間上のアドレスとの対応関係を管理するページマッピングテーブルと、前記仮想アドレス空間上の領域と前記物理ブロックとの対応関係を管理する仮想アドレス構成情報とを有することを特徴とする、ストレージシステム。 - 前記コントローラは、前記ストレージコントローラから前記論理ページに対するライト要求を受け付けると、前記仮想アドレス空間上の未使用領域を選択し、前記選択された未使用領域の前記仮想アドレス空間上のアドレスと前記論理ページとの対応関係をページマッピングテーブルに記録することを特徴とする、請求項12に記載のストレージシステム。
- 前記コントローラは、前記ストレージコントローラから前記論理ページに対するリード要求を受け付けると、前記ページマッピングテーブルを参照して前記論理ページに対応する前記仮想アドレス空間上のアドレスを特定し、前記仮想アドレス構成情報を参照することで、前記仮想アドレス空間上のアドレスに対応付けられている前記物理ブロック内の1または複数の物理ページを特定することを特徴とする、請求項12に記載のストレージシステム。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/JP2014/051949 WO2015114754A1 (ja) | 2014-01-29 | 2014-01-29 | ストレージ装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP6076506B2 true JP6076506B2 (ja) | 2017-02-08 |
JPWO2015114754A1 JPWO2015114754A1 (ja) | 2017-03-23 |
Family
ID=53756373
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2015559660A Active JP6076506B2 (ja) | 2014-01-29 | 2014-01-29 | ストレージ装置 |
Country Status (3)
Country | Link |
---|---|
US (1) | US10061710B2 (ja) |
JP (1) | JP6076506B2 (ja) |
WO (1) | WO2015114754A1 (ja) |
Families Citing this family (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10042575B2 (en) * | 2015-03-06 | 2018-08-07 | Toshiba Memory Corporation | Memory system including a battery powered buffer with a storage capacity of that buffer dependent on the voltage level of the battery |
US20180067676A1 (en) * | 2015-06-04 | 2018-03-08 | Hitachi, Ltd. | Storage device |
KR102586628B1 (ko) * | 2015-06-05 | 2023-10-11 | 삼성전자 주식회사 | 전자 장치 및 전자 장치의 메모리 관리 방법 |
US10802958B2 (en) | 2016-01-21 | 2020-10-13 | Hitachi, Ltd. | Storage device, its controlling method, and storage system having the storage device |
JP6444917B2 (ja) * | 2016-03-08 | 2018-12-26 | 東芝メモリ株式会社 | ストレージシステム、情報処理システムおよび制御方法 |
US20180060229A1 (en) * | 2016-08-31 | 2018-03-01 | Esab Ab | Techniques for implementing memory segmentation in a welding or cutting system |
CN106598504B (zh) * | 2016-12-26 | 2019-12-17 | 华为机器有限公司 | 数据存储方法及装置 |
KR20180135188A (ko) * | 2017-06-12 | 2018-12-20 | 에스케이하이닉스 주식회사 | 메모리 시스템 및 메모리 시스템의 동작 방법 |
US10423349B2 (en) * | 2017-08-23 | 2019-09-24 | Western Digital Technologies, Inc. | Logical and physical address field size reduction by alignment-constrained writing technique |
US10606760B2 (en) * | 2017-08-23 | 2020-03-31 | Samsung Electronics Co., Ltd. | Nonvolatile memory devices and methods of controlling the same |
KR102565895B1 (ko) * | 2017-11-13 | 2023-08-11 | 에스케이하이닉스 주식회사 | 메모리 시스템 및 그것의 동작 방법 |
US10853168B2 (en) * | 2018-03-28 | 2020-12-01 | Samsung Electronics Co., Ltd. | Apparatus to insert error-correcting coding (ECC) information as data within dynamic random access memory (DRAM) |
KR102586786B1 (ko) * | 2018-09-28 | 2023-10-11 | 에스케이하이닉스 주식회사 | 메모리 시스템 및 그것의 동작방법 |
JP2021033847A (ja) | 2019-08-28 | 2021-03-01 | キオクシア株式会社 | メモリシステムおよび制御方法 |
CN112100091B (zh) * | 2020-09-17 | 2024-06-11 | 深圳佰维存储科技股份有限公司 | 二级映射表数据映射方法、装置、存储介质及电子设备 |
CN112486861B (zh) * | 2020-11-30 | 2024-05-14 | 深圳忆联信息系统有限公司 | 固态硬盘映射表数据查询方法、装置、计算机设备及存储介质 |
US20220291858A1 (en) * | 2021-03-15 | 2022-09-15 | Pure Storage, Inc. | Utilizing programming page size granularity to optimize data segment storage in a storage system |
CN113096713B (zh) | 2021-04-12 | 2024-05-07 | 合肥兆芯电子有限公司 | 存储器管理方法、存储器控制电路单元与存储器存储装置 |
CN113590038A (zh) * | 2021-07-27 | 2021-11-02 | 联芸科技(杭州)有限公司 | 固态硬盘的管理方法和固态硬盘 |
CN114063910B (zh) * | 2021-10-28 | 2024-04-02 | 武汉光迅科技股份有限公司 | 文件处理方法及装置、文件处理系统及存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050144357A1 (en) * | 2003-12-30 | 2005-06-30 | Sinclair Alan W. | Adaptive metablocks |
JP2012099139A (ja) * | 2003-12-30 | 2012-05-24 | Sandisk Corp | データラン・プログラミング |
US20120137050A1 (en) * | 2010-11-26 | 2012-05-31 | Wang Jia-Ruei | Electronic devices with improved flash memory compatibility and methods corresponding thereto |
US20120215964A1 (en) * | 2011-02-17 | 2012-08-23 | Nobuhiro Kaneko | Management device and management method |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5623654A (en) * | 1994-08-31 | 1997-04-22 | Texas Instruments Incorporated | Fast fragmentation free memory manager using multiple free block size access table for a free list |
US7529905B2 (en) * | 2005-10-13 | 2009-05-05 | Sandisk Corporation | Method of storing transformed units of data in a memory system having fixed sized storage blocks |
US8402242B2 (en) * | 2009-07-29 | 2013-03-19 | International Business Machines Corporation | Write-erase endurance lifetime of memory storage devices |
US9201786B2 (en) * | 2012-12-21 | 2015-12-01 | Kabushiki Kaisha Toshiba | Memory controller and memory system |
KR20140096875A (ko) * | 2013-01-29 | 2014-08-06 | 삼성전자주식회사 | 메모리 시스템의 및 그것의 블록 관리 방법 |
-
2014
- 2014-01-29 WO PCT/JP2014/051949 patent/WO2015114754A1/ja active Application Filing
- 2014-01-29 JP JP2015559660A patent/JP6076506B2/ja active Active
- 2014-01-29 US US15/110,581 patent/US10061710B2/en active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050144357A1 (en) * | 2003-12-30 | 2005-06-30 | Sinclair Alan W. | Adaptive metablocks |
JP2012099139A (ja) * | 2003-12-30 | 2012-05-24 | Sandisk Corp | データラン・プログラミング |
US20120137050A1 (en) * | 2010-11-26 | 2012-05-31 | Wang Jia-Ruei | Electronic devices with improved flash memory compatibility and methods corresponding thereto |
JP2012113699A (ja) * | 2010-11-26 | 2012-06-14 | Kotatsu Kokusai Denshi Kofun Yugenkoshi | 改良されたフラッシュメモリ互換性の電子デバイスと相関する方法 |
US20120215964A1 (en) * | 2011-02-17 | 2012-08-23 | Nobuhiro Kaneko | Management device and management method |
JP2012173778A (ja) * | 2011-02-17 | 2012-09-10 | Sony Corp | 管理装置、および管理方法 |
Also Published As
Publication number | Publication date |
---|---|
US10061710B2 (en) | 2018-08-28 |
JPWO2015114754A1 (ja) | 2017-03-23 |
US20160335195A1 (en) | 2016-11-17 |
WO2015114754A1 (ja) | 2015-08-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP6076506B2 (ja) | ストレージ装置 | |
US11042487B2 (en) | Memory system and method for controlling nonvolatile memory | |
US10635310B2 (en) | Storage device that compresses data received from a host before writing therein | |
US9342260B2 (en) | Methods for writing data to non-volatile memory-based mass storage devices | |
CN105009094B (zh) | 在固态驱动器中利用空闲空间计数来重建两阶加电映射的方法、设备和系统 | |
CN110321247B (zh) | 内存系统 | |
US9229876B2 (en) | Method and system for dynamic compression of address tables in a memory | |
US9792067B2 (en) | Trim command processing in a solid state drive | |
JP6016137B2 (ja) | ソリッドステートドライブおよびその動作方法 | |
KR101324688B1 (ko) | 영구 가비지 컬렉션을 갖는 메모리 시스템 | |
EP2920697B1 (en) | Methods, data storage devices and systems for fragmented firmware table rebuild in a solid state drive | |
US10606760B2 (en) | Nonvolatile memory devices and methods of controlling the same | |
JP2016506585A (ja) | データストレージのための方法及びシステム | |
US10956071B2 (en) | Container key value store for data storage devices | |
JP7358594B2 (ja) | メモリシステム | |
WO2015162758A1 (ja) | ストレージシステム | |
US20190188130A1 (en) | Data Storage Device and Non-Volatile Memory Control Method | |
US11093134B2 (en) | Storage device, management method, and program in tiered storage system | |
JP7392080B2 (ja) | メモリシステム | |
JP2009259145A (ja) | メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法 | |
TWI726381B (zh) | 資料儲存裝置以及非揮發式記憶體控制方法 | |
US11907567B2 (en) | Memory system having a controller with a data erasure processing function | |
CN117369715A (zh) | 基于存储设备中的引用更新使用回收单元的系统、方法和设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20161205 |
|
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: 20161227 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20170110 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 6076506 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |