JP2014225297A - Flash memory module and storage device - Google Patents

Flash memory module and storage device Download PDF

Info

Publication number
JP2014225297A
JP2014225297A JP2014169918A JP2014169918A JP2014225297A JP 2014225297 A JP2014225297 A JP 2014225297A JP 2014169918 A JP2014169918 A JP 2014169918A JP 2014169918 A JP2014169918 A JP 2014169918A JP 2014225297 A JP2014225297 A JP 2014225297A
Authority
JP
Japan
Prior art keywords
data
page
guarantee
physical
logical
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
JP2014169918A
Other languages
Japanese (ja)
Other versions
JP6050794B2 (en
Inventor
篤志 河村
Atsushi Kawamura
篤志 河村
純司 小川
Junji Ogawa
純司 小川
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.)
Hitachi Ltd
Original Assignee
Hitachi Ltd
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 Hitachi Ltd filed Critical Hitachi Ltd
Priority to JP2014169918A priority Critical patent/JP6050794B2/en
Publication of JP2014225297A publication Critical patent/JP2014225297A/en
Application granted granted Critical
Publication of JP6050794B2 publication Critical patent/JP6050794B2/en
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Abstract

PROBLEM TO BE SOLVED: To improve data capacity efficiency by overlapping or eliminating data to which different codes are allocated for the respective data.SOLUTION: A storage device includes a flash memory controller in which one or a plurality of flash memory modules is incorporated. Each of the flash memory modules comprises: at least one flash memory chip providing a storage region; and a controller controlling write/read of data including user data and a guarantee code annexed to the user data to/from the storage region of the flash memory chip. The controller divides each of a plurality of pieces of the data to which the user data is common into the user data and the guarantee code, stores one of the user data in a predetermined unit region of the storage region, and stores the respective guarantee codes annexed to a plurality of the user data in a predetermined unit region of the storage region by coupling the guarantee codes.

Description

本発明は、フラッシュメモリモジュール及びストレージ装置に関し、特に、書き換えが制限されているデバイスを記憶媒体とするフラッシュメモリモジュール及びストレージ装置およびデータ制御方法に適用して好適なるものである。   The present invention relates to a flash memory module and a storage apparatus, and is particularly suitable for application to a flash memory module, a storage apparatus, and a data control method that use a device whose rewrite is restricted as a storage medium.

従来、ストレージ装置では、例えば、磁気ディスクや光ディスク等のランダムアクセスが可能な不揮発性記憶媒体がデータ記憶媒体として用いられている。特に最近では、小型ディスクドライブを多数備えるストレージ装置が主流となっている。   Conventionally, in a storage device, for example, a non-volatile storage medium capable of random access such as a magnetic disk or an optical disk is used as a data storage medium. In particular, recently, storage devices having a large number of small disk drives have become mainstream.

また、近年の半導体技術の進歩に伴って、一括消去可能な不揮発性半導体メモリが開発されている。このような不揮発性半導体メモリとしては、例えば、フラッシュメモリを例示できる。フラッシュメモリを記憶媒体とするストレージ装置は、小型ディスクドライブを多数備えるストレージ装置に比べて、省電力であったり、アクセス時間等が高速であったりすると考えられている。   Along with recent advancement of semiconductor technology, a batch erasable nonvolatile semiconductor memory has been developed. An example of such a nonvolatile semiconductor memory is a flash memory. A storage apparatus using a flash memory as a storage medium is considered to save power and have a high access time and the like compared to a storage apparatus having a large number of small disk drives.

上記したフラッシュメモリは、既に記録されたデータ領域に対して、直接データの書き換えを行うことができないという特徴を有している。このため、記録データを書き換える際には、記録データを読み取った後、記録領域に対して消去を実行し、消去された未書込み領域に対して更新データを書き込む処理を行う必要がある。しかし、フラッシュメモリの消去時間は書込み時間に比べて長いため、一般的に、データを書き込む際には、旧データを一旦読みだした後、ライトデータと統合して更新データを生成し、生成した更新データを別の未書込み領域に書き込み、元の記録領域を無効化(上位装置からの参照を不可とする処理)する方法が採用されている。そして、未書込み領域が枯渇した場合には、無効化した領域を消去して、新たに未書込み領域を生成する。   The above-described flash memory has a feature that data cannot be directly rewritten to a previously recorded data area. For this reason, when rewriting the recording data, it is necessary to erase the recording area after reading the recording data and write the update data to the erased unwritten area. However, the flash memory erase time is longer than the write time. Generally, when writing data, the old data is read once and then integrated with the write data to generate update data. A method is adopted in which the update data is written in another unwritten area and the original recording area is invalidated (a process for making the reference from the host device impossible). When the unwritten area is exhausted, the invalidated area is erased and a new unwritten area is generated.

しかし、フラッシュメモリでは、データの消去回数に制限があり、データの書き換えが集中して消去回数が増大したデータ領域は、データの消去ができなくなり使用不能となってしまう。このため、特定のデータ領域にデータ消去処理が集中しないようにする必要があった。また、フラッシュメモリは、一度書き込んだページでも、時間とともに読み出しエラー率が増加してしまうため、書き込んでから一定時間経過したページを別ページに書き込むリフレッシュと呼ばれる動作が必要となる。   However, in the flash memory, there is a limit to the number of times data can be erased, and the data area where the number of times of erasure has increased due to concentrated data rewriting cannot be erased and becomes unusable. For this reason, it is necessary to prevent the data erasure process from being concentrated in a specific data area. In addition, the flash memory has a read error rate that increases with time even for a page that has been written once, and therefore, an operation called “refresh” is required to write a page that has passed for a fixed time to another page.

このような特性を持つフラッシュメモリにおいては、データの消去時間を短縮させたり、消去回数を低減させたりするために、重複排除技術が用いられている(例えば、特許文献1)。重複排除技術は、上位装置に提供する論理アドレスと実際の記憶領域の物理アドレスとが対応付けて管理されている場合に、同一のデータが格納された複数の論理アドレス空間を、当該データが格納された1つの物理アドレス空間に対応付ける技術である。重複排除技術を利用することにより、データの書き込み量を低減することができ、フラッシュメモリを記憶媒体とするストレージ装置において、フラッシュメモリの長寿命化と、性能安定性の向上を図ることができる。   In a flash memory having such characteristics, a deduplication technique is used in order to shorten the data erasure time or reduce the number of erasures (for example, Patent Document 1). In the deduplication technology, when the logical address provided to the host device and the physical address of the actual storage area are managed in association with each other, the data stores a plurality of logical address spaces in which the same data is stored. This is a technique for associating with one physical address space. By using the de-duplication technology, the amount of data written can be reduced, and in a storage device using the flash memory as a storage medium, the life of the flash memory can be extended and the performance stability can be improved.

特開2009−87021号公報JP 2009-87021 A

ところで、ストレージ装置においては、データ領域に格納するデータのハードウェア障害などによるビット化けや、内部制御エラーなどによる不正なアドレスへの書き込みや読込みを防ぐために、書き込みデータに対して保証コードが付与される。一般的に、この保証コードは、データに対して冗長性を持たせることを目的にデータ内容から算出される部と、ベンダ毎に値を自由に設定できる部を組み合わせた内容となっている。このような保証コードが付与されたデータに対して重複排除を行う場合、保証コード部分がデータ毎に異なるため、データの内容が同じであっても保証コードに差異があるため重複排除を行うことができないという問題があった。
本発明は以上の点を考慮してなされたもので、データ毎に異なる保証コードが付与されたデータを重複排除して、データ容量効率を向上させることが可能なフラッシュメモリモジュール及びストレージ装置を提案しようとするものである。
By the way, in the storage device, a guarantee code is assigned to the write data in order to prevent the data stored in the data area from being garbled due to hardware failure or the like, or writing to or reading from an illegal address due to an internal control error. The In general, this guarantee code has a combination of a part calculated from data contents for the purpose of providing redundancy to data and a part whose value can be freely set for each vendor. When deduplication is performed on data with such a guarantee code, the guarantee code part is different for each data, so even if the data content is the same, there is a difference in the guarantee code, so deduplication is performed. There was a problem that could not.
The present invention has been made in view of the above points, and proposes a flash memory module and a storage device capable of improving data capacity efficiency by deduplicating data with different guarantee codes for each data. It is something to try.

かかる課題を解決するために本発明においては、複数のフラッシュメモリチップと、メモリコントローラと、を備え、前記複数のフラッシュメモリチップの各フラッシュメモリチップは、複数のブロックを含み、各ブロックは複数の物理ページを含み、各物理ページはデータの書き込み/読み込み単位であり、前記メモリコントローラは、第1のデータセット及び第1の保証コードセットと、第2のデータセット及び第2の保証コードセットとを管理し、前記第1のデータセットは複数の第1のユーザデータを含み、第1の保証コードセットは複数の第1の保証コードを含み、前記複数の第1の保証コードの各第1の保証コードは、前記複数の第1のユーザデータの1つに関連付けられ、前記第2のデータセットは複数の第2のユーザデータを含み、第2の保証コードセットは複数の第2の保証コードを含み、前記複数の第2の保証コードの各第2の保証コードは、前記複数の第2のユーザデータの1つに関連付けられ、前記メモリコントローラは、前記第1のデータセットと前記第2のデータセットとが同じデータセットの場合に、前記同じデータセットを第1の物理ページに格納し、前記第1の保証コードセットと前記第2の保証コードセットを第2の物理ページに格納することを特徴とする、フラッシュメモリモジュールが提供される。   In order to solve such a problem, the present invention includes a plurality of flash memory chips and a memory controller, and each flash memory chip of the plurality of flash memory chips includes a plurality of blocks, and each block includes a plurality of blocks. Each physical page is a data write / read unit, and the memory controller includes a first data set, a first guarantee code set, a second data set, and a second guarantee code set. The first data set includes a plurality of first user data, the first guarantee code set includes a plurality of first guarantee codes, and each first of the plurality of first guarantee codes. Is associated with one of the plurality of first user data, and the second data set is a plurality of second user data. The second warranty code set includes a plurality of second warranty codes, and each second warranty code of the plurality of second warranty codes is associated with one of the plurality of second user data. The memory controller stores the same data set in a first physical page when the first data set and the second data set are the same data set; and A flash memory module is provided, wherein the second guarantee code set is stored in a second physical page.

かかる構成によればフラッシュメモリチップに書き込まれる複数のデータのうち、ユーザデータが共通する複数のデータについて、ユーザデータと保証コードとを分けて、1つのユーザデータを物理ページに格納し、複数のユーザデータに対応する保証コードを連結して物理ページに格納する。これにより、保証コードが付与されたデータに対しても重複排除を行って、記憶媒体への書き込み量を縮減することによりフラッシュメモリの長寿命化を図ることができる。さらに、追記型の書き込み方法を採用するフラッシュメモリなどの記憶媒体において、ユーザが使用していない未使用領域を増加させて、未使用領域をデータの追記用の領域とすることにより、性能安定性の向上を図ることが可能となる。   According to such a configuration, among a plurality of data written to the flash memory chip, for a plurality of data having common user data, the user data and the guarantee code are separated, one user data is stored in the physical page, and a plurality of data is stored. A guarantee code corresponding to user data is concatenated and stored in a physical page. As a result, it is possible to extend the life of the flash memory by deduplicating the data to which the guarantee code is assigned and reducing the amount of data written to the storage medium. In addition, in storage media such as flash memory that employs the write-once type writing method, the unused area that is not used by the user is increased, and the unused area is used as a data write-on area. Can be improved.

本発明によれば、データ毎に異なる保証コードが付与されたデータを重複排除して、データ容量効率を向上させることができる。   According to the present invention, it is possible to improve data capacity efficiency by deduplicating data to which a different guarantee code is assigned for each data.

本発明の第1の実施の形態に係る計算機システムのハードウェア構成を示すブロック図である。It is a block diagram which shows the hardware constitutions of the computer system which concerns on the 1st Embodiment of this invention. 同実施形態にかかるフラッシュメモリモジュールの構成を示すブロック図である。2 is a block diagram showing a configuration of a flash memory module according to the same embodiment. FIG. 同実施形態にかかるフラッシュメモリチップの構成を示すブロック図である。FIG. 3 is a block diagram showing a configuration of a flash memory chip according to the same embodiment. 同実施形態にかかるデータの内容を説明する概念図である。It is a conceptual diagram explaining the content of the data concerning the embodiment. 同実施形態にかかるページの内容を説明する概念図である。It is a conceptual diagram explaining the content of the page concerning the embodiment. 同実施形態にかかる重複排除処理の概要を説明する概念図である。It is a conceptual diagram explaining the outline | summary of the deduplication process concerning the embodiment. 同実施形態にかかる論理/物理ページアドレスを説明する概念図である。It is a conceptual diagram explaining the logical / physical page address concerning the embodiment. 同実施形態にかかる論理/物理アドレス変換テーブルの一例を示す図表である。It is a chart which shows an example of the logical / physical address conversion table concerning the embodiment. 同実施形態にかかる逆参照テーブルの一例を示す図表である。It is a chart which shows an example of the reverse reference table concerning the embodiment. 同実施形態にかかる重複排除処理の流れを示すフローチャートである。It is a flowchart which shows the flow of the deduplication process concerning the embodiment. 同実施形態にかかるリクラメーション処理およびリフレッシュ処理の流れを示すフローチャートである。It is a flowchart which shows the flow of the reclamation process and refresh process concerning the embodiment. 同実施形態にかかるマージ処理の概要を説明する概念図である。It is a conceptual diagram explaining the outline | summary of the merge process concerning the embodiment. 同実施形態にかかるマージ処理の概要を説明する概念図である。It is a conceptual diagram explaining the outline | summary of the merge process concerning the embodiment. 同実施形態にかかるマージ処理の流れを示すフローチャートである。It is a flowchart which shows the flow of the merge process concerning the embodiment. 同実施形態にかかるリード処理の流れを示すフローチャートである。It is a flowchart which shows the flow of the read process concerning the embodiment. 本発明の第2の実施の形態に係る重複排除処理の概要を説明する概念図である。It is a conceptual diagram explaining the outline | summary of the deduplication process which concerns on the 2nd Embodiment of this invention. 同実施形態にかかる論理/物理ページアドレスを説明する概念図である。It is a conceptual diagram explaining the logical / physical page address concerning the embodiment. 同実施形態にかかる論理/物理アドレス変換テーブルの一例を示す図表である。It is a chart which shows an example of the logical / physical address conversion table concerning the embodiment. 同実施形態にかかる逆参照テーブルの一例を示す図表である。It is a chart which shows an example of the reverse reference table concerning the embodiment. 同実施形態にかかる重複排除処理の流れを示すフローチャートである。It is a flowchart which shows the flow of the deduplication process concerning the embodiment. 同実施形態にかかるリクラメーション処理およびリフレッシュ処理の流れを示すフローチャートである。It is a flowchart which shows the flow of the reclamation process and refresh process concerning the embodiment. 同実施形態にかかるリード処理の流れを示すフローチャートである。It is a flowchart which shows the flow of the read process concerning the embodiment. 本発明の第3の実施の形態に係る重複排除処理の流れを示すタイミングチャートである。It is a timing chart which shows the flow of the deduplication process which concerns on the 3rd Embodiment of this invention.

以下図面について、本発明の一実施の形態を詳述する。   Hereinafter, an embodiment of the present invention will be described in detail with reference to the drawings.

(1)第1の実施の形態
(1−1)計算機システムのハードウェア構成
まず、本実施の形態にかかる計算機システム1のハードウェア構成について説明する。図1に示すように、本実施の形態にかかる計算機システム1は、ストレージ装置11と、第1および第2のホスト12A、12B(以降、第1および第2のホストを単にホスト12と称する場合もある。)と、管理端末13と、SAN(Storage Area Network)14と、を備えている。
(1) First Embodiment (1-1) Hardware Configuration of Computer System First, the hardware configuration of the computer system 1 according to the present embodiment will be described. As shown in FIG. 1, the computer system 1 according to the present embodiment includes a storage device 11 and first and second hosts 12A and 12B (hereinafter, the first and second hosts are simply referred to as host 12). A management terminal 13 and a SAN (Storage Area Network) 14.

ストレージ装置11は、ホスト12から送信されたコマンドを解釈して、ストレージ装置11の記憶領域内へのリード/ライトを実行する。ストレージ装置11は、図1に示すように、第1および第2のホストインタフェース112A、112B(第1および第2のホストインタフェースを単にホストインタフェース112と称する場合もある。)、第1および第2のストレージインタフェース113A、113B(以降、第1および第2のストレージインタフェースを単にストレージインタフェース113と称する場合もある。)保守インタフェース(I/F)114、CPU115、メモリ116、コネクタ16A、16B、16C、16D(以降、単にコネクタ16と称する。)およびフラッシュメモリストレージ17などから構成される。   The storage apparatus 11 interprets the command transmitted from the host 12 and executes read / write into the storage area of the storage apparatus 11. As shown in FIG. 1, the storage apparatus 11 includes first and second host interfaces 112A and 112B (the first and second host interfaces may be simply referred to as a host interface 112), first and second. Storage interfaces 113A and 113B (hereinafter, the first and second storage interfaces may be simply referred to as storage interfaces 113) maintenance interface (I / F) 114, CPU 115, memory 116, connectors 16A, 16B, 16C, 16D (hereinafter simply referred to as connector 16), flash memory storage 17, and the like.

ホストインタフェース112は、ホスト12からのデータや制御コマンドなどを受け付けるインタフェースである。また、ストレージインタフェース113は、フラッシュメモリストレージ17にデータや制御コマンドを送信するインタフェースである。また、保守インタフェース(I/F)114は、管理端末13と接続して、管理端末13からの管理や保守に関する制御コマンド等を受け付けるインタフェースである。   The host interface 112 is an interface that receives data, control commands, and the like from the host 12. The storage interface 113 is an interface that transmits data and control commands to the flash memory storage 17. The maintenance interface (I / F) 114 is an interface that is connected to the management terminal 13 and receives control commands and the like related to management and maintenance from the management terminal 13.

CPU115は、演算処理装置として機能し、メモリ16に記憶されている各種プログラムや演算パラメータ等にしたがって、ストレージ装置11全体の動作を制御する機能を有する。具体的に、CPU115は、ホスト12からのデータ入出力(データI/O)を処理し、フラッシュメモリストレージ17にデータ入出力に関するI/Oコマンドを発行する。また、ホスト12から受け付けたユーザデータに対して保証コードを生成して、ユーザデータに付与する。メモリ116は、各種プログラムや演算パラメータ等の他、制御情報や管理情報、また、ユーザからのデータを一時的に格納する。   The CPU 115 functions as an arithmetic processing device, and has a function of controlling the operation of the entire storage device 11 in accordance with various programs and arithmetic parameters stored in the memory 16. Specifically, the CPU 115 processes data input / output (data I / O) from the host 12 and issues an I / O command related to data input / output to the flash memory storage 17. In addition, a guarantee code is generated for the user data received from the host 12 and assigned to the user data. The memory 116 temporarily stores control information, management information, and data from the user in addition to various programs and calculation parameters.

フラッシュメモリストレージ17は、フラッシュメモリモジュール21A〜21F(以降、フラッシュメモリモジュール21と称する場合もある。)から構成されている。本実施形態では、フラッシュメモリストレージ17に、6つのフラッシュメモリモジュール21〜21Fが備えられている構成としたが、フラッシュメモリモジュールの数はかかる例に限定されない。フラッシュメモリモジュール21は、ストレージインタフェース113とコネクタ16を介して接続され、コネクタ16を介してホスト12から受け付けられたデータおよび各制御コマンドがフラッシュメモリモジュール21に書き込まれる。フラッシュメモリモジュール21の内部構成については後で詳細に説明する。なお、本実施形態では、フラッシュメモリストレージ17をストレージ装置11と一体とした構成としているが、かかる例に限定されず、フラッシュメモリストレージ17をストレージ装置11とは別体の装置としてもよい。   The flash memory storage 17 is composed of flash memory modules 21A to 21F (hereinafter sometimes referred to as flash memory module 21). In the present embodiment, the flash memory storage 17 includes six flash memory modules 21 to 21F. However, the number of flash memory modules is not limited to this example. The flash memory module 21 is connected to the storage interface 113 via the connector 16, and data and control commands received from the host 12 via the connector 16 are written into the flash memory module 21. The internal configuration of the flash memory module 21 will be described in detail later. In this embodiment, the flash memory storage 17 is integrated with the storage device 11. However, the present invention is not limited to this example, and the flash memory storage 17 may be a separate device from the storage device 11.

ホスト12は、SANを介してストレージ装置11と接続され、ストレージ装置11にデータのリード/ライト要求を送信する。また、ホスト100は、CPU(Central Processing Unit)およびメモリ等の情報処理資源を備えたコンピュータ装置であって、例えば、パーソナルコンピュータや、ワークステーション、メインフレームなどから構成される。ホスト12とストレージ装置11との通信は、例えば、SCSI(Small Computer System Interface)などのブロックプロトコルが用いられる。また、ホスト20は、キーボード、スイッチやポインティングデバイス、マイクロフォン等の情報入力装置と、モニタディスプレイやスピーカ等の情報出力装置とを備えている。   The host 12 is connected to the storage apparatus 11 via the SAN, and transmits a data read / write request to the storage apparatus 11. The host 100 is a computer device provided with information processing resources such as a CPU (Central Processing Unit) and a memory, and includes, for example, a personal computer, a workstation, a main frame, and the like. For the communication between the host 12 and the storage apparatus 11, for example, a block protocol such as SCSI (Small Computer System Interface) is used. The host 20 includes an information input device such as a keyboard, a switch, a pointing device, and a microphone, and an information output device such as a monitor display and a speaker.

管理端末13は、CPUおよびメモリ等の情報処理資源を備えたコンピュータ装置であって、例えば、パーソナルコンピュータや、ワークステーション、メインフレームなどから構成される。CPUは、演算処理装置として機能し、メモリに記憶されているプログラムや演算パラメータ等にしたがって、管理端末13の動作を制御する。また、管理端末13は、キーボード、スイッチやポインティングデバイス、マイクロフォン等の情報入力装置と、モニタディスプレイやスピーカ等の情報出力装置とを備えており、オペレータ等の入力に応じてストレージ装置11等を管理する装置である。   The management terminal 13 is a computer device provided with information processing resources such as a CPU and a memory, and includes, for example, a personal computer, a workstation, a main frame, and the like. The CPU functions as an arithmetic processing unit, and controls the operation of the management terminal 13 according to programs, arithmetic parameters, and the like stored in the memory. The management terminal 13 includes an information input device such as a keyboard, a switch, a pointing device, and a microphone, and an information output device such as a monitor display and a speaker, and manages the storage device 11 and the like according to an input from an operator or the like. It is a device to do.

なお、ホスト12およびフラッシュメモリモジュール21の数、およびそれらを接続するコネクタ16は、図1に示す数に限定されず、1またはそれ以上の数であればよい。同様に、各コネクタおよびインタフェースの規格は特定のものに限定されない。例えば、SAN14に適用される代表的な規格として、FC(Fibre Channel)、SCSI、iSCSI(internet Small Computer System Interface)、SAS(Serial Attached SCSI)などを例示できる。   The number of hosts 12 and flash memory modules 21 and the connectors 16 that connect them are not limited to the numbers shown in FIG. 1, but may be one or more. Similarly, the standards for each connector and interface are not limited to specific ones. For example, FC (Fibre Channel), SCSI, iSCSI (Internet Small Computer System Interface), SAS (Serial Attached SCSI), and the like can be exemplified as typical standards applied to the SAN 14.

ここで、フラッシュメモリ(フラッシュメモリモジュール21)について説明する。フラッシュメモリは、最小消去単位が、最小書き込み単位に比べて大きいという特徴を有する。具体的に、フラッシュメモリにおいては、1つのブロック内に複数のページが設けられており、ブロック単位でデータが消去され、ページ単位でデータの読み書きが実行される。   Here, the flash memory (flash memory module 21) will be described. The flash memory has a feature that the minimum erase unit is larger than the minimum write unit. Specifically, in a flash memory, a plurality of pages are provided in one block, data is erased in units of blocks, and data is read and written in units of pages.

上記したように、フラッシュメモリは、その特性上、データを直接書き換えることができない。すなわち、フラッシュメモリでは、記憶しているデータを書き換える場合、記憶している有効なデータを他のブロックに退避させて、記憶しているデータをブロック単位で消去する。そして、データを消去したブロックにデータを書き込むことによりデータの書き換えを行っている。   As described above, the flash memory cannot directly rewrite data due to its characteristics. That is, in the flash memory, when the stored data is rewritten, the stored effective data is saved in another block and the stored data is erased in units of blocks. The data is rewritten by writing the data in the block from which the data has been erased.

このように、フラッシュメモリにおけるデータの書き換え処理では、ブロック単位のデータの消去が伴う。しかしながら、フラッシュメモリの1ブロック分のデータの消去にかかる時間は、1ページ分のデータを書き込むのに要する時間と比べて約1桁分長い時間がかかる。したがって、1ページ分のデータを書き換えるために毎回1ブロック分のデータ消去を実行すると、フラッシュメモリのデータ書き換え性能が劣化してしまう。すなわち、記憶媒体としてフラッシュメモリを用いる場合には、フラッシュメモリからデータを消去する時間を隠ぺいできるアルゴリズムでデータを書き込むことが必要となる。   As described above, the data rewrite processing in the flash memory is accompanied by erasure of data in block units. However, the time required for erasing one block of data in the flash memory takes about one digit longer than the time required to write one page of data. Therefore, if data erasure for one block is executed every time in order to rewrite data for one page, the data rewriting performance of the flash memory is deteriorated. That is, when a flash memory is used as a storage medium, it is necessary to write data using an algorithm that can hide the time for erasing data from the flash memory.

通常、フラッシュメモリに対してデータの書き換えを行う場合には、データを書き換えるごとにデータを消去することは行わず、データが記録されていない未使用領域にデータを追記する方式によってデータの書き換えを行う。しかし、データの書き換え処理が度重なって実行されると、フラッシュメモリ内の未使用領域が枯渇してしまうため、フラッシュメモリに書き込まれている不要なデータを消去して、記憶領域を再利用可能な状態にする必要が生じる。   Normally, when data is rewritten to the flash memory, data is not erased every time data is rewritten, and data is rewritten by a method in which data is added to an unused area where no data is recorded. Do. However, if the data rewrite process is executed repeatedly, the unused area in the flash memory will be exhausted, so unnecessary data written in the flash memory can be erased and the storage area can be reused. Need to be in the correct state.

そこで、旧データを含むブロック内の有効なデータのみを未使用領域にコピーし、コピー元のブロックを消去して再利用可能な状態にするブロック再生処理(以下、当該処理をリクラメーション処理と称する。)を実行することが、フラッシュメモリのデータ高速書き換えには必須の処理となる。このリクラメーション処理は、無効データが多くなったブロックを対象に実行される。   Accordingly, a block reproduction process (hereinafter referred to as a reclamation process) in which only valid data in a block including old data is copied to an unused area, and the copy source block is erased to make it reusable. .) Is an essential process for high-speed data rewriting of flash memory. This reclamation process is executed for a block in which invalid data increases.

一方、フラッシュメモリは、データを消去する回数に制限があるという特徴を有する。例えば、1ブロック当たり10万回までの消去回数が保証されている。この場合、データの書き換えが1のブロックに集中して、当該ブロックの消去回数が増大すると、データの消去ができなくなり、ブロックが使用不能となってしまうという問題があった。そのため、フラッシュメモリを記憶媒体として用いる場合、特定のブロックに対するデータ消去処理が集中しないように、消去回数の平準化処理を行う必要がある。   On the other hand, the flash memory has a feature that the number of times of erasing data is limited. For example, an erase count of up to 100,000 times per block is guaranteed. In this case, if data rewrite concentrates on one block and the erase count of the block increases, there is a problem that the data cannot be erased and the block becomes unusable. Therefore, when the flash memory is used as a storage medium, it is necessary to perform the erase count leveling process so that the data erase process for a specific block is not concentrated.

また、フラッシュメモリは、一度書き込みしたページについては、時間とともに読み出しエラー率が増加するという特徴を有する。このように、データを保持しておくだけでも発生するエラーをリテンションエラーといい、これを回避するために、書き込み後一定時間を経過したページを、別ページに書き込む処理(リフレッシュ処理)が実行される。リフレッシュ処理を実行する場合においても、上記した消去回数を平準化したり、性能に対する影響を考慮したりする必要がある。   Further, the flash memory has a feature that the read error rate increases with time for a page once written. In this way, an error that occurs just by holding data is called a retention error. To avoid this, a process (refresh process) that writes a page that has passed a certain time after writing to another page is executed. The Even when the refresh process is executed, it is necessary to equalize the number of erasures described above and to consider the influence on the performance.

上記したように、フラッシュメモリを記憶媒体として用いる場合には、データ消去時間を隠ぺいしたり、データ消去回数を平準化したりするために、上位装置に提供する論理アドレスと実際の記憶領域の物理アドレスとを対応づけて、データの書き込みの際に、論理アドレスから物理アドレスへの変更処理が行われる。すなわち、上位装置に提供する論理アドレスと記憶領域上の物理アドレスとの対応を逐次変更することにより、上位装置は、論理アドレス空間にデータを書き込めばよく、データ書き込み時における未使用領域への追記に伴う物理アドレスの変更などを意識する必要がなくなる。   As described above, when the flash memory is used as a storage medium, the logical address provided to the host device and the physical address of the actual storage area are used to conceal the data erasure time or to equalize the number of data erasures. And a process of changing from a logical address to a physical address is performed when data is written. In other words, by sequentially changing the correspondence between the logical address provided to the host device and the physical address on the storage area, the host device only needs to write data into the logical address space. It is no longer necessary to be aware of the physical address change associated with.

フラッシュメモリを有するストレージ装置において、上記のように論理アドレスと物理アドレスとを対応付けて管理している場合に、重複排除技術を適用することが考えられている。重複排除技術は、同一のデータが格納された複数の論理アドレス空間を、当該データが格納された1つの物理アドレス空間に対応付ける技術である。当該重複排除技術により、データ量を短縮し、ストレージのデータ容量を節約することが可能となる。   In a storage apparatus having a flash memory, it is considered to apply a deduplication technique when managing logical addresses and physical addresses in association with each other as described above. The deduplication technique is a technique for associating a plurality of logical address spaces storing the same data with a single physical address space storing the data. The deduplication technology can reduce the amount of data and save the storage data capacity.

特に、重複排除技術の適用が有効と考えられる対象のデータとして、フォーマットデータが挙げられる。ストレージ装置11は、記憶デバイスを使用する際に、記憶デバイスの異常個所を検知したり保証コードを事前に書き込みしたりすることを目的として、記憶デバイスの全領域に特定パタンのデータを書き込むフォーマット処理を実行する。このフォーマット処理は、フラッシュメモリをはじめとする書き換えが制限されている記憶デバイスにおいては、不必要に書き換え回数を増加させるという問題があった。   In particular, format data is an example of data that is considered effective for applying the deduplication technique. When the storage device 11 uses the storage device, a format process for writing data of a specific pattern in the entire area of the storage device for the purpose of detecting an abnormal part of the storage device or writing a guarantee code in advance. Execute. This formatting process has a problem of unnecessarily increasing the number of times of rewriting in a storage device such as a flash memory where rewriting is restricted.

また、フラッシュメモリは、データの書き換えに対して、未使用領域への追記方式を採用しているため、未使用領域が少なくなると頻繁にデータの消去処理を実行しなければならない。このため、フォーマット処理により実体を伴わないデータが書き込まれることにより、未使用領域が減少して性能安定性が損なわれるという問題があった。そこで、上記した重複排除技術を適用することにより、データの書き込み量を低減させて、フラッシュメモリを記憶媒体とするストレージ装置11におけるフラッシュメモリの長寿命化と性能安定性の向上を図ることができる。   In addition, since the flash memory employs a method of appending to an unused area for data rewriting, data erasure processing must be frequently executed when the unused area is reduced. For this reason, there is a problem in that the data that does not include the entity is written by the formatting process, and the unused area is reduced and the performance stability is impaired. Therefore, by applying the above-described deduplication technology, it is possible to reduce the amount of data written and to increase the life of the flash memory and improve the performance stability in the storage device 11 using the flash memory as a storage medium. .

さらに、ストレージ装置11では、データ領域に格納するデータのハードウェア障害などによるビット化けや、内部制御エラーなどによる不正なアドレスへの書き込みや読込みを防ぐために、書き込みデータに対して保証コードが付与される。一般的に、この保証コードは、データに対して冗長性を持たせることを目的にデータ内容から算出される部と、ベンダ毎に値を自由に設定できる部を組み合わせた内容となっている。このような保証コードが付与されたデータに対して重複排除を行う場合、保証コード部分がデータ毎に異なるため、データの内容が同じであっても保証コードに差異があるため重複排除を行うことができないという問題があった。   Further, in the storage device 11, a guarantee code is assigned to the write data in order to prevent data stored in the data area from being garbled due to a hardware failure or writing to or reading from an illegal address due to an internal control error. The In general, this guarantee code has a combination of a part calculated from data contents for the purpose of providing redundancy to data and a part whose value can be freely set for each vendor. When deduplication is performed on data with such a guarantee code, the guarantee code part is different for each data, so even if the data content is the same, there is a difference in the guarantee code, so deduplication is performed. There was a problem that could not.

そこで、本実施形態では、保証コードを含むデータに対して重複排除処理を行う場合に、対象となるデータの保証コード部分とデータ部分を分離して、データ部分のみを重複排除の処理対象とし、保証コード部分はデータとは別に管理してそれぞれのデータ毎にフラッシュメモリに格納して管理している。また、フラッシュメモリにおいては、上記したように、最小の書き込み単位はページ単位であるため、単純に保証コード部分を分離してフラッシュメモリに格納するだけでなく、書き込み単位を意識して効率的に保証コードを格納したり、論理アドレスから物理アドレスへの変更を実行したりしている。   Therefore, in the present embodiment, when deduplication processing is performed on data including a guarantee code, the guarantee code portion and the data portion of the target data are separated, and only the data portion is subjected to deduplication processing. The guarantee code portion is managed separately from the data, and each piece of data is stored and managed in the flash memory. In flash memory, as described above, since the minimum writing unit is a page unit, not only the guarantee code part is simply separated and stored in the flash memory, but also the writing unit is efficiently considered. A guarantee code is stored or a change from a logical address to a physical address is performed.

さらに、上記したフォーマットデータに代表される同一値やインクリメント値など、単純なパタンのデータについては、データ部をさらに圧縮することにより、データの書き込み量を削減することができる。そして、本実施形態では、上記したフラッシュメモリにおける書き込み制限に適合するように、圧縮したデータ部とそのデータに関連する保証コードを効率よく管理している。   Further, for simple pattern data such as the same value or increment value represented by the format data described above, the amount of data written can be reduced by further compressing the data portion. In this embodiment, the compressed data portion and the guarantee code related to the data are efficiently managed so as to conform to the write restriction in the flash memory.

以上のように、本実施形態によれば、保証コードが付与されたデータに対しても重複排除を行って、記憶媒体への書き込み量を縮減することによりフラッシュメモリの長寿命化を図ることができる。さらに、追記型の書き込み方法を採用するフラッシュメモリなどの記憶媒体において、ユーザが使用していない未使用領域を増加させて、未使用領域をデータの追記用の領域とすることにより、性能安定性の向上を図ることが可能となる。   As described above, according to the present embodiment, it is possible to extend the life of the flash memory by deduplicating the data to which the guarantee code is assigned and reducing the amount of data written to the storage medium. it can. In addition, in storage media such as flash memory that employs the write-once type writing method, the unused area that is not used by the user is increased, and the unused area is used as a data write-on area. Can be improved.

(1−2)ストレージ装置の内部構成について
次に、ストレージ装置11の内部構成について説明する。まず、フラッシュメモリモジュール21の内部構成の詳細について説明する。フラッシュメモリモジュール21は、フラッシュ制御装置210とフラッシュメモリチップ31A〜31H(以降、フラッシュメモリ31と称する場合もある。)とから構成される。なお、本実施形態では、フラッシュメモリチップ31は、図2に示すように6つのフラッシュメモリから構成されるが、かかる例に限定されず1以上の個数であればよい。
(1-2) Internal Configuration of Storage Device Next, the internal configuration of the storage device 11 will be described. First, details of the internal configuration of the flash memory module 21 will be described. The flash memory module 21 includes a flash control device 210 and flash memory chips 31A to 31H (hereinafter sometimes referred to as flash memory 31). In the present embodiment, the flash memory chip 31 is composed of six flash memories as shown in FIG. 2, but is not limited to this example and may be one or more.

図2に示すように、フラッシュ制御装置210は、ストレージインタフェース221と、CPU212と、コントローラ213と、メモリ214と、バッファ215と、フラッシュメモリインタフェース216などを備える。   As shown in FIG. 2, the flash control device 210 includes a storage interface 221, a CPU 212, a controller 213, a memory 214, a buffer 215, a flash memory interface 216, and the like.

ストレージインタフェース221は、ストレージ装置11本体のCPU115からのデータおよび制御コマンドを受け付けるインタフェースである。CPU212は、フラッシュ制御装置210全体の動作を制御する機能を有し、メモリ214に格納されている各種プログラムに基づいて動作する。CPU212は、例えば、ストレージインタフェース211を介して受領したホスト12からのデータI/Oに対して、メモリ214に格納されている各種テーブルを参照して、フラッシュメモリチップ31にデータをリード/ライトする。また、フラッシュメモリチップ31の使用状況に応じて、使用済み領域を再生させるリクラメーションの実行やデータの書き換えによる記憶媒体の摩耗を記憶媒体の各素子に均等に分散させるウェアレベリングなどを実施する。   The storage interface 221 is an interface that receives data and control commands from the CPU 115 of the storage apparatus 11 main body. The CPU 212 has a function of controlling the operation of the entire flash control device 210 and operates based on various programs stored in the memory 214. For example, the CPU 212 reads / writes data to / from the flash memory chip 31 with reference to various tables stored in the memory 214 for data I / O received from the host 12 via the storage interface 211. . Further, depending on the usage status of the flash memory chip 31, execution of reclamation for reproducing the used area, wear leveling for evenly distributing the wear of the storage medium due to data rewriting to each element of the storage medium, and the like are performed.

コントローラ213は、CPU212の制御のもと、フラッシュメモリチップ31A〜31Hに対してデータのリード/ライトを実行する。また、当該データに対してエラー訂正符号の生成や、重複排除のためのデータの比較や、ハッシュ値の生成などを実行する。なお、本実施形態では、エラー訂正符号の生成等の処理をコントローラ213が実行する構成としたが、かかる例に限定されず、コントローラ213の処理をCPU212が実行する構成としてもよい。   The controller 213 reads / writes data to the flash memory chips 31A to 31H under the control of the CPU 212. Also, error correction code generation, data comparison for deduplication, hash value generation, and the like are performed on the data. In the present embodiment, the controller 213 executes processing such as generation of an error correction code. However, the present invention is not limited to this example, and the processing of the controller 213 may be executed by the CPU 212.

メモリ214は、CPU212およびコントローラ213により実行される各種プログラム、各種テーブルおよび制御情報を記憶する。なお、フラッシュ制御装置210の内部構成は、図2に示す構成に限定されず、各機能を1または複数のデバイスによって実行するようにしてもよい。   The memory 214 stores various programs executed by the CPU 212 and the controller 213, various tables, and control information. The internal configuration of the flash control device 210 is not limited to the configuration shown in FIG. 2, and each function may be executed by one or more devices.

次に、フラッシュメモリチップ31の内部構成について説明する。図3に示すように、フラッシュメモリチップ31は、フラッシュ制御装置21から発行されたデータI/Oコマンドの対象データを一時的に格納するページバッファ312A、312B(以降、ページバッファ312とも称する。)および、実際の記憶領域である物理ブロック313A〜313F(以降、物理ブロック313とも称する。)から構成される。   Next, the internal configuration of the flash memory chip 31 will be described. As shown in FIG. 3, the flash memory chip 31 has page buffers 312A and 312B (hereinafter also referred to as page buffers 312) that temporarily store the target data of the data I / O command issued from the flash control device 21. The physical blocks 313A to 313F (hereinafter also referred to as physical blocks 313), which are actual storage areas.

物理ブロック313は、さらに、ページ32A〜32C(以降、ページ32とも称する。)から構成される。上記したように、物理ブロック313は、フラッシュメモリにおける消去単位であり、ページ32は、フラッシュメモリにおける書き込み/読み込み単位である。また、ページ32は、2Kバイト、3Kバイト、8Kバイトなどのサイズに分割された領域であり、ブロック313は、128個のページ、256個のページのサイズに分割された領域であり、1Mバイト、2Mバイトなどの大きさを有する。   The physical block 313 is further composed of pages 32A to 32C (hereinafter also referred to as page 32). As described above, the physical block 313 is an erase unit in the flash memory, and the page 32 is a write / read unit in the flash memory. Further, the page 32 is an area divided into a size of 2 Kbytes, 3 Kbytes, 8 Kbytes, and the block 313 is an area divided into a size of 128 pages, 256 pages, and 1 Mbytes. It has a size of 2 Mbytes.

次に、ユーザデータに対する保証コードについて説明する。図4Aに示すように、データ(ユーザデータ)41に付与されるコード(保証コード)42は、データ41に対して一定のアドレスの区切りごとに付与される。一般的に、1セクタ、512バイトのユーザデータごとに、8バイトの保証コードが生成され、付与される。以降、このデータの区切りをセクタと称して説明する場合もある。   Next, a guarantee code for user data will be described. As shown in FIG. 4A, a code (guarantee code) 42 given to data (user data) 41 is given to the data 41 at every predetermined address delimiter. Generally, an 8-byte guarantee code is generated and assigned for each sector and 512-byte user data. Hereinafter, this data delimitation may be referred to as a sector.

コード42は、データ31から生成されるビットエラー訂正符号部421と、ベンダが自由に設定可能なUDT部422とから構成される。UDT部422は、例えば、対象データのアドレスの整合性を確認することを目的として、当該データのアドレスが格納される。この場合、UDT部422には、ユーザデータ41の値に関わらず、固有の値が格納される。   The code 42 includes a bit error correction code unit 421 generated from the data 31 and a UDT unit 422 that can be freely set by a vendor. For example, the UDT unit 422 stores the address of the data for the purpose of confirming the consistency of the address of the target data. In this case, the UDT unit 422 stores a unique value regardless of the value of the user data 41.

なお、フラッシュメモリのページサイズは、通常、512バイトより大きいため、1つのページの中に複数のセクタが格納されることとなる。このとき、ページ32は、図4Bに示す構成となる。すなわち、フラッシュメモリのページ32内には、nセクタを格納することができ、各セクタのデータ部41A〜41Cをまとめてページ32のデータ部411とする。また、各セクタのコード42A〜42Cをまとめて、ページのコード部421としている。なお、ページ内のデータおよび保証コードの配置は、図4Bに示す構成に限定されず、各セクタのデータおよび保証コードの位置が確定できる構成であればよい。また、説明上、セクタのうち、コード42をデータ41以外としているが、かかる例に限定されず、ユーザデータから生成されるビットエラー訂正符号421をデータの一部として、データ部41に格納するようにしてもよい。   Since the page size of the flash memory is usually larger than 512 bytes, a plurality of sectors are stored in one page. At this time, the page 32 has the configuration shown in FIG. 4B. That is, n sectors can be stored in the page 32 of the flash memory, and the data portions 41A to 41C of each sector are collectively used as the data portion 411 of the page 32. Further, the codes 42A to 42C of each sector are collectively used as a page code portion 421. The arrangement of the data and the guarantee code in the page is not limited to the configuration shown in FIG. 4B, and any configuration that can determine the position of the data and the guarantee code in each sector is acceptable. Further, for the sake of explanation, the code 42 is assumed to be other than the data 41 in the sector, but the present invention is not limited to this example, and the bit error correction code 421 generated from the user data is stored in the data part 41 as a part of the data. You may do it.

次に、本実施形態にかかる重複排除処理の概要について説明する。図5に示すように、データ部411Aとコード部421Aを含むページと、データ部411Bとコード部421Bを含むページと、データ部411Cとコード部421Cを含むページの3つのページを含むページ群43は、重複排除処理によって、データ部441を含むページ44とコード部451を含むページ45の2つのページに格納することができる。すなわち、データ部411A、411B、411Cに格納されているデータは同一の内容のデータであるため、データ部をページ44のデータ部441に格納する。そして、コード部421A、421B、421Cに格納されている保証コードは異なる内容の保証コードであるため、ページ45のコード部451にコード部421A、421B、421Cのすべての保証コードを格納する。   Next, an overview of deduplication processing according to the present embodiment will be described. As shown in FIG. 5, a page group 43 including three pages: a page including a data portion 411A and a code portion 421A, a page including a data portion 411B and a code portion 421B, and a page including a data portion 411C and a code portion 421C. Can be stored in two pages, the page 44 including the data portion 441 and the page 45 including the code portion 451, by deduplication processing. That is, since the data stored in the data portions 411A, 411B, and 411C are data having the same content, the data portion is stored in the data portion 441 of the page 44. Since the guarantee codes stored in the code portions 421A, 421B, and 421C are guarantee codes having different contents, all the guarantee codes of the code portions 421A, 421B, and 421C are stored in the code portion 451 of the page 45.

そして、ページ群43の各論理アドレスと、ページ44およびページ45の物理アドレスとが対応付けられる。すなわち、データ部については、データ部411A、411B、411Cの論理アドレスの先頭と、ページ44の物理アドレスとが対応付けられ、さらに、コード部については、ページ45の各物理アドレスと、当該物理アドレスの先頭からのオフセット情報とが対応付けられる。このように、データ部とコード部を含むページが3ページ以上あり、データ部が同一の内容である場合には、重複排除により3ページを2ページにして、ページ数削減の効果を得ることができる。なお、重複排除によりページ内に空きスペース422、452を得ることができるが、当該空きスペースは未使用のままにしてもよいし、後述する管理情報の格納用に使用してもよい。   Then, each logical address of the page group 43 is associated with the physical addresses of the page 44 and the page 45. That is, for the data portion, the top of the logical address of the data portion 411A, 411B, 411C and the physical address of the page 44 are associated with each other, and for the code portion, each physical address of the page 45 and the physical address concerned Is associated with offset information from the head of the. As described above, when there are three or more pages including the data part and the code part and the data part has the same content, the page number can be reduced to 2 pages by deduplication, and the effect of reducing the number of pages can be obtained. it can. Note that free space 422 and 452 can be obtained in the page by deduplication, but the free space may be left unused or may be used for storing management information described later.

次に、重複排除の具体例について説明する。図6Aに、論理ページアドレスと物理ページアドレスとの対応関係を示す。図6Aに示すように、Addr51は、論理ページアドレスを示し、Data52は、論理ページアドレス空間に格納されているデータを示す。また、Code53は、論理ページアドレス空間に格納されている保証コードを示す。そして、Addr54は、論理ページに対応付けられている物理ページアドレスを示し、Data55は、物理ページアドレス空間に格納されているデータの内容を示す。   Next, a specific example of deduplication will be described. FIG. 6A shows the correspondence between logical page addresses and physical page addresses. As shown in FIG. 6A, Addr 51 indicates a logical page address, and Data 52 indicates data stored in the logical page address space. Code 53 indicates a guarantee code stored in the logical page address space. Addr 54 indicates the physical page address associated with the logical page, and Data 55 indicates the content of the data stored in the physical page address space.

論理ページアドレス0〜3で示される論理ページ511〜514に格納されているデータ52には、同一の内容のデータ「AAAA」が格納されている。この場合、論理ページ511〜514の各論理ページアドレス0〜3は、「AAAA」のデータを格納している物理ページ541の物理ページアドレス0に対応付けられる。しかし物理ページ541は、保証コードを含まないユーザデータのみであるため、各論理ページ511〜514には、保証コードを格納している物理ページ542の物理ページアドレス1が対応付けられる。さらに、各論理ページ511〜514に対応する保証コードが物理ページアドレス1の先頭コードからどの位置にあるかがオフセット情報として対応付けられる。   The data 52 stored in the logical pages 511 to 514 indicated by the logical page addresses 0 to 3 stores the data “AAAA” having the same contents. In this case, the logical page addresses 0 to 3 of the logical pages 511 to 514 are associated with the physical page address 0 of the physical page 541 storing the data “AAAA”. However, since the physical page 541 is only user data that does not include the guarantee code, each logical page 511 to 514 is associated with the physical page address 1 of the physical page 542 that stores the guarantee code. Further, the position where the guarantee code corresponding to each logical page 511 to 514 is located from the head code of the physical page address 1 is associated as offset information.

次に、上記した論理ページと物理ページとの対応付けを実現するための管理テーブルについて説明する。当該管理テーブルは、フラッシュメモリモジュール21のメモリ214に格納される。また、フラッシュメモリモジュール21のコントローラ213が重複排除処理を実行して、各種管理テーブルを作成する。そして、フラッシュメモリモジュール21のCPU212の制御のもと、コントローラ21が管理テーブルを参照して、フラッシュメモリチップ31にデータのリード/ライトを実行する。   Next, a management table for realizing the association between the logical page and the physical page will be described. The management table is stored in the memory 214 of the flash memory module 21. In addition, the controller 213 of the flash memory module 21 executes deduplication processing to create various management tables. Under the control of the CPU 212 of the flash memory module 21, the controller 21 reads / writes data to / from the flash memory chip 31 with reference to the management table.

論理/物理アドレス変換テーブル56は、論理アドレスと物理アドレスとの対応付けを管理し、具体的に論理ページアドレスに格納されたデータおよび保証コードがいずれの物理ページに存在するかを管理するテーブルである。論理/物理アドレス変換テーブル56は、図6Bに示すように、論理ページアドレス欄561、物理ページデータアドレス欄562、物理ページコードアドレス欄563および物理ページコードオフセットアドレス欄564から構成される。   The logical / physical address conversion table 56 manages the correspondence between logical addresses and physical addresses, and specifically manages in which physical page the data stored in the logical page address and the guarantee code exist. is there. As shown in FIG. 6B, the logical / physical address conversion table 56 includes a logical page address column 561, a physical page data address column 562, a physical page code address column 563, and a physical page code offset address column 564.

論理ページアドレス欄561には、論理ページの先頭アドレスが格納される。物理ページデータアドレス欄562には、論理ページアドレス欄561に格納されているアドレスに対応するデータ部が格納されている物理ページの先頭アドレスが格納される。物理ページコードアドレス欄563には、論理ページアドレス欄561に格納されているアドレスに対応するコード部が格納されている物理ページの先頭アドレスが格納される。   The logical page address column 561 stores the start address of the logical page. The physical page data address column 562 stores the start address of the physical page in which the data portion corresponding to the address stored in the logical page address column 561 is stored. The physical page code address column 563 stores the start address of the physical page in which the code portion corresponding to the address stored in the logical page address column 561 is stored.

物理ページコードオフセットアドレス564には、物理ページコードアドレス欄563に格納されているアドレスによって示されるページ内コードのうち、各論理ページの保証コードに対応する保証コードの格納位置を示すアドレスが格納される。このように、論理/物理アドレス変換テーブル56により、論理ページに含まれるデータと保証コードに対応する、物理ページのデータおよび保証コードが格納されている位置を得ることができる。   The physical page code offset address 564 stores an address indicating the storage position of the guarantee code corresponding to the guarantee code of each logical page among the codes in the page indicated by the address stored in the physical page code address field 563. The As described above, the logical / physical address conversion table 56 can obtain the position where the physical page data and the guarantee code corresponding to the data and the guarantee code included in the logical page are stored.

なお、図6Bでは、物理ページコードオフセットアドレス欄564に保証コードのオフセットアドレスを格納しているが、物理ページコードオフセットアドレス欄564を設けずに保証コードの物理位置を認識するようにしてもよい。すなわち、重複排除の対象となるページ群のアドレスの並びが連続であるという制約を設けることにより、物理ページコードオフセットアドレスがなくとも保証コードの物理位置を認識することができる。また、重複排除の対象となっていないページについては、当該ページに対してフラグを設けたり、物理ページデータアドレスと物理ページコードアドレスとを同一の値にしたりすることにより、重複排除の対象となっているか否かを判別するようにしてもよい。   In FIG. 6B, the offset address of the guarantee code is stored in the physical page code offset address field 564, but the physical position of the guarantee code may be recognized without providing the physical page code offset address field 564. . That is, by providing a restriction that the address group of the page group to be de-duplicated is continuous, the physical position of the guarantee code can be recognized without a physical page code offset address. A page that is not subject to de-duplication can be de-duplicated by providing a flag for the page or by setting the physical page data address and physical page code address to the same value. It may be determined whether or not it is.

次に、逆参照テーブル57について説明する。逆参照テーブル57は、物理ページがいずれの論理ページに参照されているかを管理するテーブルであって、図6Cに示すように、物理ページアドレス欄571、参照カウント欄572および論理ページアドレス欄573から構成される。   Next, the reverse reference table 57 will be described. The reverse reference table 57 is a table that manages to which logical page a physical page is referenced. As shown in FIG. 6C, the reverse reference table 57 includes a physical page address column 571, a reference count column 572, and a logical page address column 573. Composed.

物理ページアドレス欄571には、データおよび保証コードが格納されている物理ページの先頭アドレスが格納される。参照カウント欄572には、物理ページに格納されているデータを参照している論理ページの数が格納される。したがって、当該物理ページを参照していた論理ページが更新されて、参照されなくなった場合には、参照カウントをデクリメントする。論理ページアドレス欄573には、参照元となる論理ページアドレスが格納される。1つの物理ページが複数の論理ページに参照されている場合には、複数の論理ページアドレス欄573に、参照元となる複数の論理ページアドレスが格納される。   The physical page address column 571 stores the start address of a physical page in which data and a guarantee code are stored. The reference count column 572 stores the number of logical pages that refer to data stored in the physical page. Therefore, when the logical page that referred to the physical page is updated and is no longer referred to, the reference count is decremented. The logical page address column 573 stores a logical page address as a reference source. When one physical page is referred to by a plurality of logical pages, a plurality of logical page addresses as reference sources are stored in the plurality of logical page address fields 573.

当該逆参照テーブル57により、例えばリクラメーション処理が実行された場合に、物理ページが参照されているか否かを判定することができ、参照元となる論理ページアドレス573から、再配置対象となる論理ページアドレスを取得することができる。   For example, when a reclamation process is executed, the reverse reference table 57 can determine whether or not a physical page is referred to. From the logical page address 573 serving as a reference source, the logical page to be rearranged can be determined. The page address can be acquired.

上記したように、上記した管理テーブルはフラッシュ制御装置210のメモリ214に格納することにより、データの書き込み/読み取り等の処理を高速化することができるが、かかる例に限定されず、管理テーブルサイズがメモリ241の容量に対して大きい場合には、フラッシュメモリ31に格納してもよい。この場合、例えば、物理ページ内の空きスペース442および452などを利用してもよい。   As described above, by storing the above management table in the memory 214 of the flash control device 210, it is possible to speed up processing such as data writing / reading. May be stored in the flash memory 31 when the capacity of the memory 241 is large. In this case, for example, empty spaces 442 and 452 in the physical page may be used.

また、上記したように、管理テーブルの作成および管理等は、フラッシュ制御装置210により実行されるが、かかる例に限定されず、フラッシュメモリのページ構造を認識し、書き込みデータの重複排除処理および管理情報を保持することができる装置が行ってもよい。例えば、ストレージ装置のCPU115が管理テーブルの作成および管理等をおこなってもよい。ただし、フラッシュ制御装置21においては、論理アドレスと物理アドレスとの対応付けが必須となるため、管理テーブルを新設する必要がないが、ストレージ装置のCPU115により論理アドレスと物理アドレスの対応付けを管理する場合には、上記の管理テーブルを新設することとなる。   Further, as described above, the creation and management of the management table is executed by the flash control device 210. However, the present invention is not limited to this example, and the page structure of the flash memory is recognized, and the deduplication processing and management of the write data are performed. An apparatus capable of holding information may be used. For example, the CPU 115 of the storage apparatus may create and manage a management table. However, in the flash control device 21, since the association between the logical address and the physical address is indispensable, there is no need to newly establish a management table, but the association between the logical address and the physical address is managed by the CPU 115 of the storage device. In this case, the above management table is newly established.

(1−3)ストレージ装置の動作の詳細
(1−3−1)重複排除処理
次に、ストレージ装置11における重複排除処理について説明する。上記したように、フラッシュメモリモジュール21のコントローラ213が重複排除処理を実行する。図7に示すように、まず、コントローラ213は、重複排除の対象となる論理ページリストを取得する(S11)。論理ページリストは、ページ内のユーザデータが格納されているデータ部の内容が同一で、保証コードが格納されているコード部の内容が異なる2つ以上のページから構成される。
(1-3) Details of Operation of Storage Device (1-3-1) Deduplication Processing Next, deduplication processing in the storage device 11 will be described. As described above, the controller 213 of the flash memory module 21 executes deduplication processing. As shown in FIG. 7, first, the controller 213 acquires a logical page list to be deduplicated (S11). The logical page list is composed of two or more pages in which the contents of the data part storing the user data in the page are the same and the contents of the code part storing the guarantee code are different.

当該論理ページの探索方法としては、例えば、大サイズのデータをライトする場合や、リクラメーション処理やリフレッシュ処理などのデータ再配置時に、大サイズのデータの中から重複排除の対象となる論理ページの組み合わせを検索する。また、各ページのデータ部のハッシュ値を算出して管理し、ハッシュ値に基づいて、動的にデータ部の一致するページの組み合わせを検索するようにしてもよい。   As a search method for the logical page, for example, when writing large-size data, or when relocating data such as reclamation processing or refresh processing, the logical page to be deduplicated from large-size data is searched. Search for combinations. Alternatively, the hash value of the data portion of each page may be calculated and managed, and the combination of pages that match the data portion may be dynamically searched based on the hash value.

続いて、コントローラ231は、ステップS11において取得した論理ページのデータ部を格納する物理ページを取得する(S12)。例えば、コントローラ231は、フラッシュメモリの長寿命化の観点から、摩耗度の少ない物理ページを優先して取得してもよいが、物理ページの取得ポリシーはかかる例に限定されず、管理者により設定されたポリシーをもとに物理ページを取得してもよい。   Subsequently, the controller 231 acquires a physical page storing the data portion of the logical page acquired in step S11 (S12). For example, the controller 231 may preferentially acquire a physical page with a low degree of wear from the viewpoint of extending the life of the flash memory. However, the physical page acquisition policy is not limited to this example, and is set by the administrator. The physical page may be acquired based on the set policy.

そして、コントローラ231は、ステップS12において取得した物理ページに、ステップS11において取得した論理ページのデータ部に格納されたユーザデータを書き込む(S13)。ただし、コントローラ231は、必ずしもステップS13においてデータの書き込みをしなくてもよい。例えば、データの書き込みをスケジューラなどに登録してもよい。   Then, the controller 231 writes the user data stored in the data part of the logical page acquired in step S11 to the physical page acquired in step S12 (S13). However, the controller 231 does not necessarily have to write data in step S13. For example, data writing may be registered in a scheduler or the like.

次に、コントローラ231は、ステップS11において取得した論理ページのコード部を格納する物理ページを1ページ取得する(S14)。ここで、コード部を格納する物理ページのブロックは、ステップS12において取得したデータ部の書き込み先となる物理ページのブロックと異なるブロックとする。これにより、データをリード/ライトする際に、データ部とコード部とを別々に読み出してデータ部に対する処理とコード部に対する処理とを並行することが可能となる。   Next, the controller 231 acquires one page of the physical page that stores the code part of the logical page acquired in step S11 (S14). Here, the block of the physical page that stores the code part is different from the block of the physical page that is the write destination of the data part acquired in step S12. As a result, when data is read / written, the data part and the code part can be read separately, and the process for the data part and the process for the code part can be performed in parallel.

次に、コントローラ231は、ステップS14において取得した物理ページが必要数あるかを判定する(S15)。具体的に、コントローラ231は、重複排除対象となる論理ページの数分の保証コードの容量が取得した物理ページの容量以内であるかを判定する。保証コードを格納するための必要な容量は、保証コードサイズ×重複排除対象となる論理ページ数となる。また、1つの物理ページに格納可能な最大の保証コード数(最大対象ページ数)は、物理ページサイズを保証コードサイズで除算することにより算出することができる。したがって、コントローラ231は、対象論理ページ数が取得物理ページ数に最大対象ページ数を乗算した数より小さいか否かを判定することにより、物理ページが必要数あるかを判定する。   Next, the controller 231 determines whether there is a required number of physical pages acquired in step S14 (S15). Specifically, the controller 231 determines whether the capacity of the guarantee code for the number of logical pages to be deduplicated is within the acquired physical page capacity. The necessary capacity for storing the guarantee code is the guarantee code size × the number of logical pages to be deduplicated. Further, the maximum number of guaranteed codes that can be stored in one physical page (maximum number of target pages) can be calculated by dividing the physical page size by the guaranteed code size. Therefore, the controller 231 determines whether there is a required number of physical pages by determining whether the number of target logical pages is smaller than the number obtained by multiplying the number of acquired physical pages by the maximum number of target pages.

ステップS15において、物理ページが必要数あると判定された場合には、コントローラ231は、ステップS16の処理を実行する。一方、ステップS15において、物理ページが必要数ないと判定された場合には、コントローラ231は、ステップS14〜S15の処理を繰り返す。   If it is determined in step S15 that the required number of physical pages is present, the controller 231 executes the process of step S16. On the other hand, when it is determined in step S15 that the required number of physical pages is not necessary, the controller 231 repeats the processes in steps S14 to S15.

続いて、コントローラ231は、重複排除対象となる各論理ページのコード部を抽出して連結する(S16)。具体的に、コントローラ231は、各論理ページから抽出したコード部を、物理ページサイズに収まるように連結する。   Subsequently, the controller 231 extracts and connects the code portions of the logical pages to be deduplicated (S16). Specifically, the controller 231 concatenates code portions extracted from each logical page so as to fit in the physical page size.

そして、コントローラ231は、ステップS16において連結した保証コードを物理ページに書き込む(S17)。コントローラ231は、保証コードを書き込むための複数の物理ページを取得している場合には、各物理ページに連結された保証コードを書き込む。   Then, the controller 231 writes the guarantee code concatenated in step S16 into the physical page (S17). When the controller 231 has acquired a plurality of physical pages for writing the guarantee code, the controller 231 writes the guarantee code linked to each physical page.

続いて、コントローラ231は、管理テーブルである論理/物理アドレス変換テーブル56と逆参照テーブル57を更新する(S18)。具体的に、コントローラ231は、論理/物理アドレス変換テーブル56については、重複排除の対象となった論理ページに該当するエントリについて、物理ページデータアドレス欄562の値をデータ格納先の物理ページアドレスの値に更新し、物理ページコードアドレス欄563の値を保証コード格納先の物理ページアドレスの値に更新する。また、コントローラ231は、保証コードの格納先となる物理ページ内の各保証コードの位置を物理ページコードオフセットアドレス欄564に格納する。   Subsequently, the controller 231 updates the logical / physical address conversion table 56 and the reverse reference table 57, which are management tables (S18). Specifically, with respect to the logical / physical address conversion table 56, the controller 231 sets the value of the physical page data address column 562 of the physical page address of the data storage destination for the entry corresponding to the logical page that is the object of deduplication. The value in the physical page code address field 563 is updated to the value of the physical page address of the guarantee code storage destination. In addition, the controller 231 stores the position of each guarantee code in the physical page that is the storage destination of the guarantee code in the physical page code offset address field 564.

また、逆参照テーブル57については、コントローラ231は、重複排除対象となった論理ページに対応付けられていた物理ページに該当するエントリについて更新を行う。すなわち、重複排除対象となった論理ページのアドレスの更新により、参照されなくなった物理ページに対して、参照カウンタ欄572の値をデクリメントする。そして、論理ページアドレス欄573から参照されなくなった論理ページのアドレスを削除する。   For the reverse reference table 57, the controller 231 updates the entry corresponding to the physical page associated with the logical page that is the deduplication target. That is, the value of the reference counter column 572 is decremented for the physical page that is no longer referred to by updating the address of the logical page that is the object of de-duplication. Then, the address of the logical page that is no longer referred to is deleted from the logical page address column 573.

なお、論理/物理アドレス変換テーブル56の更新は、重複排除処理を行わない通常の書き込み(ライト)処理においても行う必要がある。すなわち、論理ページのアドレスと、新しい書き込み先となる物理ページのアドレスとを対応付けたり、元の格納先の物理ページのエントリから参照していた論理ページのアドレスを削除したりする。   It should be noted that the logical / physical address conversion table 56 needs to be updated even in a normal write (write) process in which the deduplication process is not performed. That is, the address of the logical page is associated with the address of the physical page that is the new write destination, or the address of the logical page that is referenced from the entry of the physical page of the original storage destination is deleted.

(1−3−2)リクラメーション処理、リフレッシュ処理
次に、リクラメーション処理およびリフレッシュ処理の詳細について説明する。図8に示すように、まず、コントローラ231は、リクラメーションまたはリフレッシュの対象となる物理ブロックリストを取得する(S21)。例えば、コントローラ231は、無効ページの多い物理ブロックをリクラメーション処理の対象とし、長時間アクセスされていない物理ブロックをリフレッシュ処理の対象とする。
(1-3-2) Reclamation Process and Refresh Process Next, details of the reclamation process and the refresh process will be described. As shown in FIG. 8, first, the controller 231 acquires a physical block list that is a target of reclamation or refresh (S21). For example, the controller 231 sets a physical block with many invalid pages as a target of reclamation processing, and sets a physical block that has not been accessed for a long time as a target of refresh processing.

続いて、コントローラ231は、ステップS21において取得した物理ブロックリストに含まれるすべての物理ブロックに対して処理を実行したか否かを判定する(S220)。ステップS220において、すべての物理ブロックに対して処理を実行したと判定された場合には、コントローラ231は、ステップS221以降の処理を実行する。一方、ステップS220において、すべての物理ブロックに対して処理を実行していないと判定された場合には、コントローラ231は、ステップS22以降の処理を実行する。   Subsequently, the controller 231 determines whether or not processing has been executed for all physical blocks included in the physical block list acquired in step S21 (S220). If it is determined in step S220 that processing has been executed for all physical blocks, the controller 231 executes processing subsequent to step S221. On the other hand, if it is determined in step S220 that the process has not been executed for all physical blocks, the controller 231 executes the processes in and after step S22.

続いて、コントローラ231は、物理ブロック内のすべての物理ページを対象として、逆参照テーブル57の参照カウント欄572の値が0より大きい物理ページが存在するか否かを判定する(S22)。ステップS22において、参照カウント欄572の値が0より大きい物理ページが存在すると判定された場合には、ステップS23以降の処理を実行し、参照カウント欄572の値が0より大きい物理ページが存在しないと判定された場合には、ステップS221以降の処理を実行する。   Subsequently, the controller 231 determines whether or not there is a physical page for which all physical pages in the physical block have a value greater than 0 in the reference count column 572 of the reverse reference table 57 (S22). If it is determined in step S22 that there is a physical page whose value in the reference count field 572 is greater than 0, the processes in and after step S23 are executed, and there is no physical page whose value in the reference count field 572 is greater than 0. If it is determined, the process after step S221 is executed.

続いて、コントローラ231は、対象となる物理ページのうち、参照カウント欄572の値が0以上の物理ページXを1つ取得する(S23)。以降、ステップS23において取得した物理ページを物理ページXとして以下説明する。そして、コントローラ231は、逆参照テーブル57の物理ページXに対応するエントリを取得する(S24)。さらに、コントローラ231は、参照元論理ページアドレス欄573から、物理ページXを参照している論理ページのアドレスを取得する(S25)。以降、コントローラ231は、参照元論理ページアドレス欄573に登録されている参照元論理ページを調査する。   Subsequently, the controller 231 acquires one physical page X having a value of 0 or more in the reference count column 572 among the target physical pages (S23). Hereinafter, the physical page acquired in step S23 will be described as a physical page X. Then, the controller 231 acquires an entry corresponding to the physical page X of the reverse reference table 57 (S24). Further, the controller 231 acquires the address of the logical page referring to the physical page X from the reference source logical page address column 573 (S25). Thereafter, the controller 231 investigates the reference source logical page registered in the reference source logical page address field 573.

そして、コントローラ231は、ステップS25において取得した論理ページが、対象としている物理ページXを未だ参照しているか否かを調査する(S26)。なお、重複排除処理時や、通常のライト処理時に実行される管理テーブルの更新処理(ステップS18)において、逆参照テーブル57の参照元論理ページアドレス欄573から物理ページを参照しなくなった論理ページのアドレスを削除している場合には、ステップS26の処理は不要である。一方、逆参照テーブル57がフラッシュメモリに格納されており、容易に更新出来ない場合に、ステップS26において物理ページXの参照の有無を確認する必要がある。   Then, the controller 231 investigates whether or not the logical page acquired in step S25 still refers to the target physical page X (S26). It should be noted that the logical page that no longer refers to the physical page from the reference source logical page address column 573 of the dereference table 57 in the deduplication process or the management table update process (step S18) executed during the normal write process. If the address has been deleted, the process of step S26 is not necessary. On the other hand, if the reverse reference table 57 is stored in the flash memory and cannot be easily updated, it is necessary to check whether or not the physical page X is referenced in step S26.

次に、コントローラ231は、物理ページXを参照している論理ページを、コピー対象のリストに追加する(S27)。コントローラ231は、物理ページXを参照している論理ページを最終的に0にして、物理ブロックの消去を可能な状態とする。コントローラ231は、ステップS27においては、コピー対象の論理ページをリストに追加するのみで、論理ページの実際のコピー処理は任意の契機に基づいて後で行ってもよい。   Next, the controller 231 adds a logical page referring to the physical page X to the copy target list (S27). The controller 231 finally sets the logical page referring to the physical page X to 0 so that the physical block can be erased. In step S27, the controller 231 only adds the logical page to be copied to the list, and the actual copying process of the logical page may be performed later on an arbitrary occasion.

続いて、コントローラ231は、物理ページXを参照している可能性のあるすべての論理ページについて、参照の有無を確認する(S28)。ステップS28において、物理ページXの参照の有無を確認していない論理ページがある場合には、コントローラ231は、ステップS26以降の処理を繰り返す。一方、ステップS28において、すべての論理ページについて物理ページXの参照の有無を確認したと判定された場合には、ステップS220の処理に戻る。   Subsequently, the controller 231 checks whether or not there is a reference to all logical pages that may refer to the physical page X (S28). In step S28, if there is a logical page whose physical page X has not been checked, the controller 231 repeats the processing from step S26. On the other hand, if it is determined in step S28 that the physical page X has been checked for all logical pages, the process returns to step S220.

そして、コントローラ231は、ステップS27において作成されたコピー対象リストに含まれる論理ページについて、重複排除処理を試行する(S221)。具体的に、コントローラ231は、コピー対象リストに含まれる論理ページのうち、データ部が同一の論理ページについて重複排除処理を実行する。   Then, the controller 231 tries deduplication processing for the logical page included in the copy target list created in step S27 (S221). Specifically, the controller 231 executes deduplication processing on logical pages that have the same data part among the logical pages included in the copy target list.

続いて、コントローラ231は、ステップS221において重複排除処理を実行した後、コピー対象リストに残っている論理ページをコピー先となる物理ページにコピーする(S222)。そして、コントローラ231は、ステップS21においてリクラメーション処理またはリフレッシュ処理の対象となった物理ブロックを消去する(S223)。   Subsequently, after executing deduplication processing in step S221, the controller 231 copies the logical page remaining in the copy target list to the physical page that is the copy destination (S222). Then, the controller 231 erases the physical block that is the target of the reclamation process or the refresh process in step S21 (S223).

(1−3−3)マージ処理
次に、マージ処理について説明する。ここで、マージ処理とは、既に重複排除処理が行われている論理ページについて、さらに、同一のデータを有する論理ページまたは物理ページについてそれらを統合する処理を意味する。上記した重複排除処理は、上記したように大サイズのデータをライトする場合や、リクラメーション処理やリフレッシュ処理時などに実行される。したがって、同一のフラッシュメモリモジュール21内で重複排除処理がまだ実行されていない論理ページが存在する場合がある。また、ストレージ装置11に複数のフラッシュメモリモジュール21が存在する場合には、各フラッシュメモリモジュール21内で重複排除処理が実行されるため、複数のフラッシュメモリモジュールにおいて同一のデータを含む論理ページが存在する場合がある。この場合、マージ処理を実行することにより、同一のデータを統合して、さらなるデータ容量の縮減を実現することが可能となる。
(1-3-3) Merge Process Next, the merge process will be described. Here, the merge process means a process of integrating logical pages or physical pages having the same data with respect to logical pages that have already undergone deduplication processing. The deduplication processing described above is executed when writing large-size data as described above, or during reclamation processing or refresh processing. Therefore, there may be a logical page for which deduplication processing has not yet been executed in the same flash memory module 21. In addition, when there are a plurality of flash memory modules 21 in the storage device 11, deduplication processing is executed in each flash memory module 21, so that there are logical pages including the same data in the plurality of flash memory modules. There is a case. In this case, by executing the merge process, it is possible to integrate the same data and further reduce the data capacity.

例えば、図9Aに示すように、重複排除された論理ページが格納されている物理ページの組が2つあるとする。データ部を格納している2つの物理ページ61Aおよび61Bには、同一のデータが格納されているとする。また、保証コードを格納している2つの物理ページ62Aおよび62Bには、それぞれ、論理ページリストの保証コードが格納されている。これらの物理ページの2つの組について、データ部をさらに共通化して、4つの物理ページ61A、61B、62A、62Bを、3つの物理ページ61C、62C、62Dにまとめることができる。   For example, as shown in FIG. 9A, it is assumed that there are two sets of physical pages in which deduplicated logical pages are stored. It is assumed that the same data is stored in the two physical pages 61A and 61B storing the data part. Further, the two physical pages 62A and 62B storing the guarantee code respectively store the guarantee codes of the logical page list. For the two sets of these physical pages, the data portion can be further shared, and the four physical pages 61A, 61B, 62A, and 62B can be combined into three physical pages 61C, 62C, and 62D.

図9Aに示すように、4つの物理ページを3つの物理ページにまとめる場合、保証コードが格納されている物理ページ62Aおよび62Bはそのまま利用し物理ページ62C、62Dとし、データが格納されている物理ページ61Aおよび61Bのうちいずれか一方を利用して61Cとして、他方を無効ページとする。ただし、物理ページの空き領域442に論理/物理アドレス変換テーブル56などの管理情報を格納している場合には、データ格納用として物理ページを新たに割り当てる必要がある。データ格納用として新たに物理ページを割り当てた場合には、データを格納している物理ページ61Aおよび61Bはいずれも無効ページとする。   As shown in FIG. 9A, when four physical pages are grouped into three physical pages, the physical pages 62A and 62B in which the guarantee code is stored are used as they are to be the physical pages 62C and 62D, and the physical in which the data is stored. One of the pages 61A and 61B is used as 61C, and the other is set as an invalid page. However, when management information such as the logical / physical address conversion table 56 is stored in the free area 442 of the physical page, it is necessary to newly allocate a physical page for data storage. When a new physical page is allocated for data storage, both the physical pages 61A and 61B storing data are invalid pages.

また、重複排除された論理ページが格納されている物理ページの組のうち、保証コード部が格納されている物理ページに空き領域がある場合には、保証コードもマージすることができる。例えば、図9Bに示すように、物理ページ64Aおよび物理ページ64Bに格納されている保証コードがそれぞれ抽出されて、物理ページ64Cにまとめてコピーされる。そして、物理ページ64Aおよび物理ページ64Bは無効ページとなり廃棄される。また、データが格納されている物理ページ63Aおよび63Bについては、同一のデータが格納されているため、図9Aと同様に、物理ページ63Aおよび63Bのうちいずれか一方を物理ページ63Cとし、他方を無効ページとする。このように、データ部だけでなく、コード部も統合することにより、4つの物理ページを2つの物理ページにまとめることができる。   Further, if there is an empty area in the physical page in which the guarantee code portion is stored in the set of physical pages in which the deduplicated logical page is stored, the guarantee code can also be merged. For example, as shown in FIG. 9B, the guarantee codes stored in the physical page 64A and the physical page 64B are extracted and copied together on the physical page 64C. Then, the physical page 64A and the physical page 64B become invalid pages and are discarded. Further, since the same data is stored for the physical pages 63A and 63B in which data is stored, one of the physical pages 63A and 63B is a physical page 63C and the other is the same as in FIG. 9A. Invalid page. Thus, by integrating not only the data part but also the code part, four physical pages can be combined into two physical pages.

次に、マージ処理の処理手順について説明する。図10に示すように、コントローラ231は、まず、マージの対象となる物理ページリストを取得する(S31)。具体的に、コントローラ231は、物理ページリストのうち、有効なページであり、重複排除処理されたページであり、かつ、データ部の等しい物理ページの集合である物理ページリストを取得する。当該物理ページリストは、例えば、大サイズのデータをライトしたり、リクラメーション処理やリフレッシュ処理などを契機とした大サイズのデータを処理したりする場合に、物理ページのデータを検索して作成される。また、各物理ページのデータ部のハッシュ値を算出して管理し、ハッシュ値に基づいて、動的にデータ部の一致するページの組み合わせを検索して物理ページリストを作成してもよい。   Next, the processing procedure of the merge process will be described. As shown in FIG. 10, the controller 231 first acquires a physical page list to be merged (S31). Specifically, the controller 231 acquires a physical page list that is a valid page in the physical page list, is a page that has been subjected to deduplication processing, and is a set of physical pages having the same data part. The physical page list is created, for example, by searching physical page data when writing large size data or processing large size data triggered by reclamation processing or refresh processing. The Alternatively, the hash value of the data portion of each physical page may be calculated and managed, and the physical page list may be created by dynamically searching for a combination of pages that match the data portion based on the hash value.

そして、コントローラ231は、ステップS31において取得したすべての物理ページリストに対して処理を実行したか否かを判定する(S320)。ステップS320において、すべての物理ページに対して処理を実行したと判定された場合には、コントローラ231は、ステップS321以降の処理を実行する。一方、ステップS320において、すべての物理ブロックに対して処理を実行していないと判定された場合には、コントローラ231は、ステップS32以降の処理を実行する。   Then, the controller 231 determines whether or not processing has been executed for all physical page lists acquired in step S31 (S320). If it is determined in step S320 that processing has been executed for all physical pages, the controller 231 executes processing in step S321 and subsequent steps. On the other hand, if it is determined in step S320 that the processing has not been executed for all physical blocks, the controller 231 executes the processing after step S32.

続いて、コントローラ231は、ステップS31において取得した物理ページのうち、逆参照テーブル57の参照カウント欄572の値が0より大きい物理ページが存在するか否かを判定する(S32)。ステップS32において、参照カウント欄572の値が0より大きい物理ページが存在すると判定された場合には、ステップS33以降の処理を実行し、参照カウント欄572の値が0より大きい物理ページが存在しないと判定された場合には、ステップS321以降の処理を実行する。   Subsequently, the controller 231 determines whether there is a physical page having a value greater than 0 in the reference count column 572 of the reverse reference table 57 among the physical pages acquired in step S31 (S32). If it is determined in step S32 that there is a physical page whose value in the reference count field 572 is greater than 0, the processing after step S33 is executed, and there is no physical page whose value in the reference count field 572 is greater than 0. If it is determined, the processing after step S321 is executed.

続いて、コントローラ231は、対象となる物理ページのうち、参照カウント欄572の値が0以上の物理ページXを1つ取得する(S33)。以降、ステップS33において取得した物理ページを物理ページXとして以下説明する。そして、コントローラ231は、逆参照テーブル57の物理ページXに対応するエントリを取得する(S34)。さらに、コントローラ231は、参照元論理ページアドレス欄573から、物理ページXを参照している論理ページのアドレスを取得する(S35)。以降、コントローラ231は、参照元論理ページアドレス欄573に登録されている参照元論理ページを調査する。   Subsequently, the controller 231 acquires one physical page X having a value of 0 or more in the reference count column 572 among the target physical pages (S33). Hereinafter, the physical page acquired in step S33 will be described as a physical page X. Then, the controller 231 acquires an entry corresponding to the physical page X of the reverse reference table 57 (S34). Furthermore, the controller 231 acquires the address of the logical page referring to the physical page X from the reference source logical page address column 573 (S35). Thereafter, the controller 231 investigates the reference source logical page registered in the reference source logical page address field 573.

そして、コントローラ231は、ステップS35において取得した論理ページが、対象としている物理ページXを未だ参照しているか否かを調査する(S36)。なお、重複排除処理時や、通常のライト処理時に実行される管理テーブルの更新処理(ステップS18)において、逆参照テーブル57の参照元論理ページアドレス欄573から物理ページを参照しなくなった論理ページのアドレスを削除している場合には、ステップS36の処理は不要である。一方、逆参照テーブル57がフラッシュメモリに格納されており、容易に更新出来ない場合に、ステップS36において物理ページXの参照の有無を確認する必要がある。   Then, the controller 231 investigates whether or not the logical page acquired in step S35 still refers to the target physical page X (S36). It should be noted that the logical page that no longer refers to the physical page from the reference source logical page address column 573 of the dereference table 57 in the deduplication process or the management table update process (step S18) executed during the normal write process. If the address has been deleted, the process of step S36 is not necessary. On the other hand, if the reverse reference table 57 is stored in the flash memory and cannot be easily updated, it is necessary to check whether or not the physical page X is referenced in step S36.

次に、コントローラ231は、物理ページXを参照している論理ページを、マージ対象のリストに追加する(S37)。そして、コントローラ231は、物理ページXを参照している可能性のあるすべての論理ページについて、参照の有無を確認する(S38)。ステップS38において、物理ページXの参照の有無を確認していない論理ページがある場合には、コントローラ231は、ステップS36以降の処理を繰り返す。一方、ステップS38において、すべての論理ページについて物理ページXの参照の有無を確認したと判定された場合には、ステップS320の処理に戻る。   Next, the controller 231 adds the logical page referring to the physical page X to the list to be merged (S37). Then, the controller 231 checks whether or not there is a reference to all logical pages that may refer to the physical page X (S38). In step S38, if there is a logical page whose physical page X has not been checked, the controller 231 repeats the processing from step S36. On the other hand, if it is determined in step S38 that the physical page X has been referenced for all logical pages, the process returns to step S320.

そして、コントローラ231は、ステップS37において作成されたマージ対象リストに含まれる論理ページに格納されている保証コードを格納するための物理ページを取得する(S321)。具体的に、コントローラ231は、対象となる論理ページ数に応じた個数の物理ページを取得する。   Then, the controller 231 acquires a physical page for storing the guarantee code stored in the logical page included in the merge target list created in step S37 (S321). Specifically, the controller 231 acquires the number of physical pages corresponding to the number of logical pages to be processed.

そして、コントローラ231は、マージ対象となる論理ページの保証コードをマージして、ステップS321において取得した物理ページに当該保証コードを書き込む。   Then, the controller 231 merges the guarantee codes of the logical pages to be merged, and writes the guarantee code on the physical page acquired in step S321.

そして、コントローラ231は、管理テーブルである論理/物理アドレス変換テーブル56と逆参照テーブル57を更新する(S323)。具体的に、コントローラ231は、論理/物理アドレス変換テーブル56については、マージ対象となった論理ページに該当するエントリについて、物理ページデータアドレス欄562に格納されている値を、データ格納先の物理ページアドレスの値に更新し、物理ページコードアドレス欄563の値を保証コード格納先の物理ページアドレスの値に更新する。また、コントローラ231は、保証コードの格納先となる物理ページ内の各保証コードの位置を物理ページコードオフセットアドレス欄564に格納する。   Then, the controller 231 updates the logical / physical address conversion table 56 and the reverse reference table 57, which are management tables (S323). Specifically, with respect to the logical / physical address conversion table 56, the controller 231 uses the value stored in the physical page data address column 562 for the entry corresponding to the logical page to be merged, The page address value is updated, and the value in the physical page code address field 563 is updated to the physical page address value of the guarantee code storage destination. In addition, the controller 231 stores the position of each guarantee code in the physical page that is the storage destination of the guarantee code in the physical page code offset address field 564.

また、逆参照テーブル57については、コントローラ231は、重複対象となった論理ページ対応付けられていた物理ページに該当するエントリについて更新を行う。すなわち、論理ページの対応先となるアドレスの更新により、参照されなくなった物理ページに対して、参照カウンタ欄572の値をデクリメントして、論理ページアドレスリスト欄573から参照されなくなった論理ページのアドレスを削除する。   For the reverse reference table 57, the controller 231 updates the entry corresponding to the physical page associated with the logical page that is the duplication target. That is, the address of the logical page that is no longer referenced from the logical page address list column 573 is decremented by decrementing the value of the reference counter column 572 with respect to the physical page that is no longer referred to due to the update of the address corresponding to the logical page. Is deleted.

なお、論理/物理アドレス変換テーブル56の更新は、重複排除処理を行わない通常の書き込み(ライト)処理においても行う必要がある。すなわち、論理ページのアドレスと、新しい書き込み先となる物理ページのアドレスとを対応付けたり、元の格納先の物理ページのエントリから参照していた論理ページのアドレスを削除したりする。   It should be noted that the logical / physical address conversion table 56 needs to be updated even in a normal write (write) process in which the deduplication process is not performed. That is, the address of the logical page is associated with the address of the physical page that is the new write destination, or the address of the logical page that is referenced from the entry of the physical page of the original storage destination is deleted.

(1−3−4)リード処理
次に、リード処理の処理手順について説明する。図11に示すように、コントローラ231は、リード対象となる論理ページアドレスを取得する(S41)。具体的に、コントローラ231は、ホスト12からのリードコマンドや、リクラメーション処理やリフレッシュ処理などの内部制御のコピー時にリード対象となる論理ページアドレスを取得する。
(1-3-4) Read Processing Next, the read processing procedure will be described. As shown in FIG. 11, the controller 231 acquires a logical page address to be read (S41). Specifically, the controller 231 acquires a logical command address to be read at the time of copying a read command from the host 12 or internal control such as reclamation processing or refresh processing.

次に、コントローラ231は、論理/物理アドレス変換テーブル56から、対象となる論理/物理アドレス情報を取得する(S42)。続いて、コントローラ231は、ステップS41において取得した論理ページが重複排除処理されたページかを判定する(S43)。具体的に、コントローラ231は、論理/物理アドレス変換テーブル56の物理ページデータアドレス欄562に格納されているアドレスと、物理ページコードアドレス欄563に格納されているアドレスとが同一のアドレスである場合に、重複排除されていない論理ページであると判定してもよい。   Next, the controller 231 acquires the target logical / physical address information from the logical / physical address conversion table 56 (S42). Subsequently, the controller 231 determines whether the logical page acquired in step S41 is a page subjected to deduplication processing (S43). Specifically, the controller 231 determines that the address stored in the physical page data address column 562 of the logical / physical address conversion table 56 and the address stored in the physical page code address column 563 are the same address. Alternatively, it may be determined that the logical page is not deduplicated.

ステップS43において、論理ページが重複排除されたページであると判定された場合には、コントローラ231は、ステップS44以降の処理を実行する。一方、ステップS43において、論理ページが重複排除されていないページであると判定された場合には、コントローラ231は、ステップS47の処理を実行する。   If it is determined in step S43 that the logical page is a page from which deduplication has been performed, the controller 231 executes processing subsequent to step S44. On the other hand, if it is determined in step S43 that the logical page is a page that has not been deduplicated, the controller 231 executes the process of step S47.

そして、コントローラ231は、論理ページが重複排除されたページであると判定された場合には、論理ページのデータ部を格納している物理ページデータアドレスを取得する(S44)。続いて、コントローラ231は、論理ページの保証コードを格納している物理ページコードアドレスを取得する(S45)。さらに、コントローラ231は、論理ページの保証コードの物理位置を示す物理ページコードオフセットアドレスを取得する(S46)。   If the controller 231 determines that the logical page is a page that has been deduplicated, the controller 231 acquires a physical page data address that stores the data portion of the logical page (S44). Subsequently, the controller 231 acquires a physical page code address in which the guarantee code of the logical page is stored (S45). Further, the controller 231 acquires a physical page code offset address indicating the physical position of the guarantee code of the logical page (S46).

また、ステップS43において、論理ページが重複排除されていない通常のページであると判定された場合には、コントローラ231は、論理ページに対応する物理ページのアドレスを取得する(S47)。具体的に、コントローラ231は、論理/物理アドレス変換テーブル56の物理ページデータアドレス欄562に格納されている物理ページデータアドレスを取得する。   If it is determined in step S43 that the logical page is a normal page that has not been deduplicated, the controller 231 acquires the address of the physical page corresponding to the logical page (S47). Specifically, the controller 231 acquires the physical page data address stored in the physical page data address column 562 of the logical / physical address conversion table 56.

そして、コントローラ231は、リード対象となる論理ページに対応付けられた物理ページアドレスをもとに、物理ページに格納されているデータをリードする(S48)。   Then, the controller 231 reads data stored in the physical page based on the physical page address associated with the logical page to be read (S48).

(1−4)本実施の形態の効果
以上のように、本実施の形態による計算機システム1では、フラッシュメモリチップに書き込まれる複数のデータのうち、ユーザデータを含むデータ部が共通する複数のデータについて、データと保証コードとを分けて、1つのデータを物理ページに格納し、複数のデータに対応する保証コードを連結して物理ページに格納する。これにより、保証コードが付与されたデータに対しても重複排除を行って、記憶媒体への書き込み量を縮減することによりフラッシュメモリの長寿命化を図ることができる。さらに、追記型の書き込み方法を採用するフラッシュメモリなどの記憶媒体において、ユーザが使用していない未使用領域を増加させて、未使用領域をデータの追記用の領域とすることにより、性能安定性の向上を図ることが可能となる。
(1-4) Effects of this Embodiment As described above, in the computer system 1 according to this embodiment, among a plurality of data written to the flash memory chip, a plurality of data having a common data portion including user data. The data and the guarantee code are separated, one data is stored in the physical page, and the guarantee codes corresponding to a plurality of data are concatenated and stored in the physical page. As a result, it is possible to extend the life of the flash memory by deduplicating the data to which the guarantee code is assigned and reducing the amount of data written to the storage medium. In addition, in storage media such as flash memory that employs the write-once type writing method, the unused area that is not used by the user is increased, and the unused area is used as a data write-on area. Can be improved.

(2)第2の実施の形態
(2−1)計算機システムのハードウェア構成
本実施の形態にかかる計算機システム2のハードウェア構成は、第1の実施の形態にかかる計算機システム1のハードウェア構成と同様であるため、詳細な説明は省略する。本実施の形態は、複数の論理ページの重複排除を実行する点で第1の実施の形態と共通するが、さらに、重複排除対象のデータ部を圧縮する点で第1の実施形態と異なっている。なお、本実施の形態においても、重複排除対象の論理ページの探索方法は、例えば、大サイズのデータをライトする場合や、リクラメーション処理やリフレッシュ処理などのデータ再配置時に、大サイズのデータの中から重複排除の対象となる論理ページの組み合わせを検索する。また、各ページのデータ部のハッシュ値を算出して管理し、ハッシュ値に基づいて、動的にデータ部の一致するページの組み合わせを検索するようにしてもよい。なお、本実施形態では、説明を容易にするために、一定間隔で区切られており、アドレスの連続している論理ページを対象として以下説明する。
(2) Second Embodiment (2-1) Hardware Configuration of Computer System The hardware configuration of the computer system 2 according to the present embodiment is the hardware configuration of the computer system 1 according to the first embodiment. Therefore, detailed description is omitted. This embodiment is common to the first embodiment in that deduplication of a plurality of logical pages is performed, but further differs from the first embodiment in that the data portion to be deduplicated is compressed. Yes. Also in this embodiment, the search method for the logical page to be deduplicated is, for example, when writing large data or when relocating data such as reclamation processing or refresh processing. Search for a combination of logical pages to be deduplicated. Alternatively, the hash value of the data portion of each page may be calculated and managed, and the combination of pages that match the data portion may be dynamically searched based on the hash value. In the present embodiment, in order to facilitate the description, the following description will be made with respect to logical pages that are divided at regular intervals and have continuous addresses.

(2−2)ストレージ装置の内部構成について
本実施の形態にかかるストレージ装置11の内部構成については、第1の実施の形態と同様の構成についての詳細な説明は省略し、第1の実施の形態と異なる構成について特に詳細に説明する。まず、本実施の形態における重複排除の概要について、第1の実施の形態と異なる点について説明する。
(2-2) Internal Configuration of Storage Device With respect to the internal configuration of the storage device 11 according to this embodiment, a detailed description of the same configuration as that of the first embodiment will be omitted, and the first embodiment will be omitted. A configuration different from the embodiment will be described in detail. First, the outline of deduplication in the present embodiment will be described with respect to differences from the first embodiment.

図12に示すように、第1の実施形態では同一の内容のデータが格納されているデータ部411A、411B、411Cを含むページ群43を、データ部441を含むページ44とコード部451を含むページ45の2つのページに格納している。本実施形態では、さらに、ページ44のデータ「Data 0〜Data n−1」を圧縮して、圧縮データ(Comp Data)72に変換する。   As shown in FIG. 12, in the first embodiment, a page group 43 including data portions 411A, 411B, and 411C in which data of the same content is stored includes a page 44 including a data portion 441 and a code portion 451. It is stored in two pages of page 45. In the present embodiment, the data “Data 0 to Data n−1” of the page 44 is further compressed and converted into compressed data (Comp Data) 72.

ここで、圧縮データは、例えば、フォーマットデータから構成される。上記したように、フォーマットデータは、記憶デバイスを使用する際に、記憶デバイスの異常個所を検知したり保証コードを事前に書き込みしたりすることを目的として、記憶デバイスの全領域に特定パタンのデータが書き込まれる。しかし、フラッシュメモリをはじめとする書き換えが制限されている記憶デバイスにおいては、このフォーマットデータの書き込みにより不必要に書き換え回数を増加させてしまうという問題があった。   Here, the compressed data is composed of format data, for example. As described above, the format data is data of a specific pattern in the entire area of the storage device for the purpose of detecting an abnormal part of the storage device or writing a guarantee code in advance when using the storage device. Is written. However, in a storage device such as a flash memory in which rewriting is restricted, there is a problem that the number of rewrites is unnecessarily increased by writing the format data.

そこで、本実施形態では、フォーマットデータについては、通常、「0」などの実体を伴わないデータが書き込まれるため、データ部411A、411Bおよび411Cに「0」が書き込まれているページ群43をページ44および45とする重複排除を実行する。さらに、「0」などのフォーマットデータが書き込まれるデータ部を圧縮して、ページ71に集約する。   Therefore, in this embodiment, as the format data, normally, data without an entity such as “0” is written, so the page group 43 in which “0” is written in the data portions 411A, 411B, and 411C is used as the page. Deduplication 44 and 45 are performed. Further, the data portion in which format data such as “0” is written is compressed and collected in the page 71.

また、図12に示すように、圧縮データ72が格納されたページ71の空き領域に保証コード「C 0〜C n−1」を格納する。これにより、ページ44およびページ45の2つのページがページ71の1つのページに集約される。なお、ページ71のすべてを圧縮データ72と保証コード73を格納するために使用してもよいし、空き領域(reserve)に管理テーブル等の管理情報を格納してもよい。   Also, as shown in FIG. 12, the guarantee code “C 0 to C n−1” is stored in the empty area of the page 71 in which the compressed data 72 is stored. As a result, the two pages of page 44 and page 45 are combined into one page of page 71. Note that all of the page 71 may be used to store the compressed data 72 and the guarantee code 73, or management information such as a management table may be stored in a free area (reserve).

次に、本実施形態における重複排除の具体例について説明する。図13Aに、論理ページアドレスと物理ページアドレスとの対応関係を示す。図13Aに示すように、Addr81は、論理ページアドレスを示し、Data82は、論理ページアドレス空間に格納されているデータを示す。また、Code83は、論理ページアドレス空間に格納されている保証コードを示す。そして、Addr84は、論理ページに対応付けられている物理ページアドレスを示し、Data85は、物理ページアドレス空間に格納されているデータの内容を示す。   Next, a specific example of deduplication in this embodiment will be described. FIG. 13A shows the correspondence between logical page addresses and physical page addresses. As shown in FIG. 13A, Addr 81 indicates a logical page address, and Data 82 indicates data stored in the logical page address space. Code 83 indicates a guarantee code stored in the logical page address space. Addr 84 indicates a physical page address associated with the logical page, and Data 85 indicates the content of data stored in the physical page address space.

論理ページアドレス0〜2で示される論理ページ811〜813に格納されているデータ82には、同一の内容のデータ「AAAA」が格納されている。この場合、論理ページ811〜813の各論理ページアドレス0〜2は、物理ページ841の物理ページアドレス0に対応付けられる。物理ページ841には、データ「AAAA」が圧縮されたデータ「A」と、参照元となる論理ページ811〜813に対応する保証コードC0〜C2が格納されている。一方、重複排除されていない論理ページ814は、物理ページ842が対応付けられ、物理ページ842には、通常通り、データと保証コードが格納される。   Data “AAAA” having the same content is stored in the data 82 stored in the logical pages 811 to 813 indicated by the logical page addresses 0 to 2. In this case, the logical page addresses 0 to 2 of the logical pages 811 to 813 are associated with the physical page address 0 of the physical page 841. The physical page 841 stores data “A” obtained by compressing the data “AAAA” and guarantee codes C0 to C2 corresponding to the logical pages 811 to 813 serving as reference sources. On the other hand, a logical page 814 that is not deduplicated is associated with a physical page 842, and data and a guarantee code are stored in the physical page 842 as usual.

次に、上記した論理ページと物理ページとの対応付けを実現するための管理テーブルについて説明する。論理/物理アドレス変換テーブル86は、論理アドレスと物理アドレスとの対応付けを管理するテーブルであって、図13Bに示すように、論理ページアドレス欄861、物理ページアドレス欄862およびフラグ欄863から構成される。   Next, a management table for realizing the association between the logical page and the physical page will be described. The logical / physical address conversion table 86 is a table for managing the association between logical addresses and physical addresses, and includes a logical page address column 861, a physical page address column 862, and a flag column 863 as shown in FIG. 13B. Is done.

論理ページアドレス欄861には、論理ページの先頭アドレスが格納される。物理ページアドレス欄862には、論理ページアドレス欄861に対応付けられた物理ページの先頭アドレスが格納される。フラグ欄863には、対応する論理ページが重複排除されているかを判定するためのフラグが格納される。   The logical page address column 861 stores the start address of the logical page. The physical page address column 862 stores the start address of the physical page associated with the logical page address column 861. The flag column 863 stores a flag for determining whether the corresponding logical page is deduplicated.

例えば、フラグ欄863に「1」が格納されている場合、対応する論理ページは重複排除されたページであると判定され、圧縮されたデータが解凍されたり、物理ページ内の保証コードの位置が計算されたりする。物理ページ内の保証コードの位置は、例えば、参照元となる論理ページアドレスからのオフセット位置から算出される。フラグ欄863に対応する論理ページアドレスが圧縮されたか否かを判定するフラグを設定することにより、保証コードが格納されている物理ページの実際の位置を保持する必要がなくなる。   For example, when “1” is stored in the flag column 863, it is determined that the corresponding logical page is a deduplicated page, the compressed data is decompressed, or the position of the guarantee code in the physical page is It is calculated. The position of the guarantee code in the physical page is calculated from, for example, an offset position from the logical page address serving as a reference source. By setting a flag for determining whether or not the logical page address corresponding to the flag field 863 is compressed, it is not necessary to hold the actual position of the physical page in which the guarantee code is stored.

さらに、物理ページに格納するデータ量を減らすために、論理ページ単位ではなく、任意の複数の論理ページ単位で重複排除されたか否かを判定するフラグを設定するようにしてもよい。例えば、重複対象となる論理ページ群のアドレスの並びが連続であり、データを圧縮後には、データが一定のサイズに収まることが保証されているデータであって、例えば、フォーマットデータである場合に、重複排除された物理ページ内の論理ページ数は事前に固定的に決定されるとする。この場合、複数の論理ページ単位に重複排除されたか否かを判定するフラグを設定することにより、論理/物理アドレス変換テーブル86のテーブルサイズを軽減することができる。ただし、この場合、任意の範囲の論理ページごとに重複排除のためのフラグが設定されるため、特定の範囲内の論理ページのうち、1つの論理ページ以外の論理ページが重複排除されている場合には、重複排除されていない論理ページ用に別途の情報が必要となる。   Furthermore, in order to reduce the amount of data stored in the physical page, a flag for determining whether or not deduplication is performed in units of a plurality of arbitrary logical pages instead of in units of logical pages may be set. For example, if the address sequence of the logical page group to be duplicated is continuous and the data is guaranteed to fit within a certain size after the data is compressed, for example, if it is format data Assume that the number of logical pages in the deduplicated physical page is fixedly determined in advance. In this case, the table size of the logical / physical address conversion table 86 can be reduced by setting a flag for determining whether or not deduplication is performed in units of a plurality of logical pages. However, in this case, a flag for deduplication is set for each logical page in an arbitrary range, so that logical pages other than one logical page among the logical pages in a specific range are deduplicated. Requires separate information for logical pages that are not deduplicated.

また、逆参照テーブル87は、物理ページがいずれの論理ページに参照されているかを管理するテーブルであって、図13Cに示すように、物理ページアドレス欄871、参照カウント欄872および論理ページ代表アドレス欄873から構成される。   The reverse reference table 87 is a table for managing which logical page the physical page is referred to. As shown in FIG. 13C, the physical page address column 871, the reference count column 872, and the logical page representative address. It consists of a column 873.

物理ページアドレス欄871には、データおよび保証コードが格納されている物理ページの先頭アドレスが格納される。参照カウント欄872には、物理ページに格納されているデータを参照している論理ページの数が格納される。論理ページ代表アドレス欄872には、参照元の論理ページの代表アドレスが格納される。論理ページの代表アドレスは、重複排除された複数の論理ページの先頭の論理ページのアドレスである。すなわち、当該物理ページをポイントしている任意の論理ページの保証コードの位置を、論理ページの代表アドレスからのオフセットから求めることができる。   The physical page address column 871 stores the start address of a physical page in which data and a guarantee code are stored. The reference count column 872 stores the number of logical pages referring to data stored in the physical page. The logical page representative address column 872 stores the representative address of the reference logical page. The representative address of the logical page is the address of the first logical page of the plurality of logical pages that are deduplicated. That is, the position of the guarantee code of an arbitrary logical page pointing to the physical page can be obtained from the offset from the representative address of the logical page.

また、逆参照テーブル87において、各物理ページに対応する情報を格納するのではなく、任意の数の物理ページ単位に対応する情報を格納することにより、逆参照テーブル87に格納する情報量を減らすようにしてもよい。例えば、消去単位となる物理ブロックの単位で、参照カウント数をまとめて管理してもよい。この場合、消去単位の参照カウント数と、参照元の論理ページの代表アドレスをもとに論理アドレスと物理アドレスの変換を行って、参照元の論理ページを確認することにより、物理ページ単位毎の参照カウント数を復元することができる。   Further, in the reverse reference table 87, the information corresponding to each physical page is not stored, but the information corresponding to an arbitrary number of physical page units is stored, thereby reducing the amount of information stored in the reverse reference table 87. You may do it. For example, the reference count number may be managed collectively in units of physical blocks serving as erase units. In this case, the logical address and the physical address are converted based on the reference count number of the erasure unit and the representative address of the reference source logical page, and the reference source logical page is confirmed, so that each physical page unit The reference count number can be restored.

(2−3)ストレージ装置の動作の詳細
(2−3−1)重複排除処理
次に、本実施形態にかかるストレージ装置11における重複排除処理について説明する。以下では、第1実施の形態と異なる処理について特に説明し、第1の実施の形態と同様の構成については説明を省略する。図14に示すように、まず、コントローラ213は、重複排除の対象となる論理ページリストを取得する(S51)。論理ページリストは、ページ内のユーザデータが格納されているデータ部の内容が同一で、保証コードが格納されているコード部の内容が異なる少なくとも3つ以上のページから構成される。
(2-3) Details of Operation of Storage Device (2-3-1) Deduplication Processing Next, deduplication processing in the storage device 11 according to this embodiment will be described. In the following, processing different from that of the first embodiment will be particularly described, and description of the same configuration as that of the first embodiment will be omitted. As shown in FIG. 14, first, the controller 213 acquires a logical page list to be deduplicated (S51). The logical page list is composed of at least three or more pages in which the contents of the data part in which the user data in the page is stored are the same, and the contents of the code part in which the guarantee code is stored are different.

次に、コントローラ213は、ステップS51において取得した論理ページリストに含まれる複数の論理ページのデータ部の圧縮後のデータサイズが所定の閾値THより小さいか否かを判定する(S52)。ステップS52において、圧縮後のデータサイズが所定の閾値TH以上の場合には、コントローラ213は、重複排除処理を行わず、通常のライト処理を実行する(S58)。ステップS52において圧縮後のデータサイズが所定の閾値THより小さいと判定された場合には、ステップS53以降の重複排除処理を実行する。   Next, the controller 213 determines whether or not the compressed data size of the data portion of the plurality of logical pages included in the logical page list acquired in step S51 is smaller than a predetermined threshold TH (S52). If the data size after compression is equal to or greater than the predetermined threshold value TH in step S52, the controller 213 performs normal write processing without performing deduplication processing (S58). If it is determined in step S52 that the compressed data size is smaller than the predetermined threshold value TH, the de-duplication processing after step S53 is executed.

ここで、閾値THは、予め管理プログラム等に設定されており、データサイズが閾値THより小さい場合に、重複排除の対象となる論理ページの圧縮後のデータ部のサイズとコード部のサイズとを合計した値が1つの物理ページのサイズに収まるように設定された値である。   Here, the threshold value TH is set in advance in the management program or the like, and when the data size is smaller than the threshold value TH, the size of the data portion after compression of the logical page to be deduplicated and the size of the code portion are set. The total value is a value set so as to fit within the size of one physical page.

そして、ステップS52において、圧縮後のデータサイズがTHより小さいと判定された場合には、コントローラ231は、ステップS51において取得した論理ページのデータ部を格納する物理ページを取得する(S53)。   If it is determined in step S52 that the data size after compression is smaller than TH, the controller 231 acquires a physical page storing the data portion of the logical page acquired in step S51 (S53).

そして、コントローラ231は、重複排除対象となる論理ページのデータ部を圧縮する(S54)。そして、コントローラ231は、重複排除対象となる各論理ページのコード部を抽出して連結する(S55)。そして、ステップS54において圧縮したデータ部と、ステップS55において連結したコード部とを連結して、ステップS53において取得した物理ページに書き込む(S56)。   Then, the controller 231 compresses the data portion of the logical page to be deduplicated (S54). Then, the controller 231 extracts and connects the code portion of each logical page to be deduplicated (S55). Then, the data part compressed in step S54 and the code part connected in step S55 are connected and written to the physical page acquired in step S53 (S56).

続いて、コントローラ231は、管理テーブルである論理/物理アドレス変換テーブル56と逆参照テーブル57を更新する(S57)。具体的に、コントローラ231は、論理/物理アドレス変換テーブル86については、重複排除の対象となった論理ページに該当するエントリについて、物理ページアドレス欄862の値をデータ格納先の物理ページアドレスの値に更新し、重複排除フラグ欄863に「1」を格納する。   Subsequently, the controller 231 updates the logical / physical address conversion table 56 and the reverse reference table 57, which are management tables (S57). Specifically, with respect to the logical / physical address conversion table 86, the controller 231 sets the value of the physical page address field 862 to the value of the physical page address of the data storage destination for the entry corresponding to the logical page that is the object of deduplication. And “1” is stored in the deduplication flag column 863.

また、逆参照テーブル87については、コントローラ231は、重複対象となった論理ページに対応付けられている物理ページに該当するエントリについて更新を行う。すなわち、逆参照テーブル87の参照カウント欄872に「1」を格納し、さらに、論理ページ代表アドレス873に対象となる論理ページの代表アドレスを格納する。   For the reverse reference table 87, the controller 231 updates the entry corresponding to the physical page associated with the logical page that is the duplication target. That is, “1” is stored in the reference count column 872 of the reverse reference table 87, and further, the representative address of the target logical page is stored in the logical page representative address 873.

(2−3−2)リクラメーション処理、リフレッシュ処理
本実施の形態にかかるリクラメーション処理およびリフレッシュ処理は、第1の実施の形態にかかるリクラメーション処理およびリフレッシュ処理とほぼ同様のため、異なる点について詳細に説明する。本実施の形態では、図15に示すように、コントローラ231は、ステップS63において処理の対象となる物理ページXを取得した後、物理ページXを参照している論理ページの代表アドレスを取得する(S64)点で第1の実施の形態と異なっている。
(2-3-2) Reclamation Process and Refresh Process The reclamation process and the refresh process according to the present embodiment are substantially the same as the reclamation process and the refresh process according to the first embodiment. This will be described in detail. In this embodiment, as shown in FIG. 15, the controller 231 obtains the representative address of the logical page referring to the physical page X after obtaining the physical page X to be processed in step S63 ( S64) is different from the first embodiment in the point.

そして、ステップS64において取得した論理ページの代表アドレスを開始点として、物理ページXを参照している可能性のある論理ページの現在の参照先を調べるために、論理ページの代表アドレスの次の論理ページの論理/物理アドレス変換テーブル86のエントリを取得する(S65)。そして、ステップS65において取得した論理ページが、物理ページXを未だ参照しているか否かを調査して(S66)、物理ページXを参照している場合には当該論理ページをコピー対象リストに追加する(S67)。   Then, using the representative address of the logical page acquired in step S64 as a starting point, in order to check the current reference destination of the logical page that may refer to the physical page X, the logical next to the representative address of the logical page is checked. An entry in the page logical / physical address conversion table 86 is acquired (S65). Then, it is checked whether the logical page acquired in step S65 still refers to the physical page X (S66). If the physical page X is referred to, the logical page is added to the copy target list. (S67).

(2−3−3)リード処理
本実施の形態にかかるリード処理についても、第1の実施の形態にかかるリード処理と異なる点について特に詳細に説明する。図16に示すように、コントローラ231は、リード対象となる論理ページアドレスを取得する(S71)。
(2-3-3) Read Processing The difference between the read processing according to the present embodiment and the read processing according to the first embodiment will be particularly described in detail. As shown in FIG. 16, the controller 231 acquires a logical page address to be read (S71).

次に、コントローラ231は、論理/物理アドレス変換テーブル86から、対象となる論理/物理アドレス情報を取得する(S72)。続いて、コントローラ231は、ステップS41において取得した論理ページが重複排除処理されたページかを判定する(S73)。   Next, the controller 231 acquires target logical / physical address information from the logical / physical address conversion table 86 (S72). Subsequently, the controller 231 determines whether the logical page acquired in step S41 is a page subjected to deduplication processing (S73).

そして、ステップS73において、論理ページが重複排除されたページであると判定された場合には、コントローラ231は、ステップS74以降の処理を実行する。一方。ステップS73において、論理ページが重複排除されていないページであると判定された場合には、コントローラ231は、ステップS731の処理を実行する。   If it is determined in step S73 that the logical page is a page from which deduplication has been performed, the controller 231 executes processing in step S74 and subsequent steps. on the other hand. If it is determined in step S73 that the logical page is a page that has not been deduplicated, the controller 231 executes the process of step S731.

そして、コントローラ231は、論理ページが重複排除されたページであると判定された場合には、論理ページのデータ部を格納している物理ページデータアドレスを取得する(S74)。続いて、コントローラ231は、参照元の論理ページ代表アドレスから、物理ページ内の保証コードのオフセット位置を計算する(S75)。そして、コントローラ231は、リード対象となる論理ページに対応付けられた物理ページアドレスに格納されたデータをリードする(S76)。さらに、コントローラ231は、ステップS76において取得したデータを解凍する(S77)。   If the controller 231 determines that the logical page is a page that has been deduplicated, the controller 231 acquires a physical page data address that stores the data portion of the logical page (S74). Subsequently, the controller 231 calculates the offset position of the guarantee code in the physical page from the logical page representative address of the reference source (S75). Then, the controller 231 reads the data stored in the physical page address associated with the logical page to be read (S76). Furthermore, the controller 231 decompresses the data acquired in step S76 (S77).

一方、ステップS73において、論理ページが重複排除されていないページであると判定された場合には、コントローラ231は、論理ページに対応するデータ部及び保証コード部を格納している物理ページアドレスを取得する(S731)。そして、コントローラ231は、ステップS731で取得した物理ページアドレスに格納されている物理ページをリードする(S732)。   On the other hand, if it is determined in step S73 that the logical page is a page that has not been deduplicated, the controller 231 acquires the physical page address storing the data part and the guarantee code part corresponding to the logical page. (S731). Then, the controller 231 reads the physical page stored in the physical page address acquired in step S731 (S732).

また、ステップS73において、論理ページが重複排除されていない通常のページであると判定された場合には、コントローラ231は、論理ページに対応する物理ページのアドレスを取得する(S731)。具体的に、コントローラ231は、論理/物理アドレス変換テーブル56の物理ページデータアドレス欄562に格納されている物理ページデータアドレスを取得する。   If it is determined in step S73 that the logical page is a normal page that has not been deduplicated, the controller 231 acquires the address of the physical page corresponding to the logical page (S731). Specifically, the controller 231 acquires the physical page data address stored in the physical page data address column 562 of the logical / physical address conversion table 56.

そして、コントローラ231は、リード対象となる論理ページに対応付けられた物理ページアドレスをもとに、物理ページに格納されているデータをリードする(S732)。   Then, the controller 231 reads the data stored in the physical page based on the physical page address associated with the logical page to be read (S732).

(2−4)本実施の形態の効果
以上のように、本実施の形態による計算機システム2では、重複排除処理に加え、さらに、重複排除対象となるデータ部を圧縮する。これにより、保証コードが付与されたデータに対しても重複排除を行って、さらに、データ部を圧縮して、記憶媒体への書き込み量を縮減することによりフラッシュメモリの長寿命化を図ることができる。さらに、追記型の書き込み方法を採用するフラッシュメモリなどの記憶媒体において、ユーザが使用していない未使用領域を増加させて、未使用領域をデータの追記用の領域とすることにより、性能安定性の向上を図ることが可能となる。
(2-4) Effects of this Embodiment As described above, in the computer system 2 according to this embodiment, in addition to the deduplication processing, the data portion to be deduplicated is further compressed. This makes it possible to extend the life of the flash memory by deduplicating the data to which the guarantee code is assigned and further compressing the data portion to reduce the amount of data written to the storage medium. it can. In addition, in storage media such as flash memory that employs the write-once type writing method, the unused area that is not used by the user is increased, and the unused area is used as a data write-on area. Can be improved.

(3)第3の実施の形態
(3−1)計算機システムのハードウェア構成
本実施の形態にかかる計算機システム3のハードウェア構成は、第1の実施の形態にかかる計算機システム1のフラッシュメモリストレージ17が、ストレージ装置11とは別体の装置として構成されている点で異なっている。本実施の形態は、複数の論理ページの重複排除を実行する点で第1の実施の形態と共通するが、ストレージ装置11とフラッシュメモリストレージ17とが連携して重複排除を実行する点で異なっている。具体的に、ストレージ装置11が、ホスト12からの要求に応じて記憶領域に書き込むフォーマットデータ等について、フラッシュメモリストレージ17に実際にデータを送信するのではなく、特定のパタンを送信することによりデータ転送量を削減している。
(3) Third Embodiment (3-1) Hardware Configuration of Computer System The hardware configuration of the computer system 3 according to the present embodiment is the flash memory storage of the computer system 1 according to the first embodiment. 17 differs from the storage apparatus 11 in that it is configured as a separate apparatus. This embodiment is common to the first embodiment in that deduplication of a plurality of logical pages is executed, but differs in that deduplication is executed in cooperation with the storage apparatus 11 and the flash memory storage 17. ing. Specifically, the storage device 11 does not actually transmit data to the flash memory storage 17, but transmits data by sending a specific pattern for format data or the like written to the storage area in response to a request from the host 12. The transfer amount is reduced.

(3−2)計算機システムの動作の詳細
次に、ストレージ装置11とフラッシュメモリストレージ17との間で実行される重複排除処理について説明する。
(3-2) Details of Operation of Computer System Next, deduplication processing executed between the storage apparatus 11 and the flash memory storage 17 will be described.

図17に示すように、まず、ストレージ装置11は、ホスト12からの要求に応じて、記憶領域のフォーマットを開始する(S81)。ストレージ装置11は、対象となる全記憶領域に対して、それぞれのセクタ毎に特定パタンを書き込むことにより記憶領域のフォーマットを行う。また、ストレージ装置11は、特定パタンを書き込む際に、保証コードも付与する。   As shown in FIG. 17, first, the storage apparatus 11 starts formatting the storage area in response to a request from the host 12 (S81). The storage device 11 formats the storage area by writing a specific pattern for each sector in all the target storage areas. The storage apparatus 11 also assigns a guarantee code when writing the specific pattern.

そして、ストレージ装置11は、ホスト12からの要求に応じて生成したフォーマットパタンと、フォーマットデータに付与する保証コードの生成ルールをパタン情報としてコントローラ213に通知する(S82)。ここで、パタン情報は、例えば、オール0などの固定的なパタンであり、保証コードは、例えば、データ部から生成されるエラー訂正符号に加えて、論理アドレス情報が付与された形式のコードなどである。すなわち、ストレージ装置11は、実際にフォーマット情報を記憶領域に書き込むのではなく、フォーマットパタンや保証コードの生成ルールを含むパタン情報を通知する。これにより、データ転送量を削減することができる。   Then, the storage apparatus 11 notifies the controller 213 of the format pattern generated in response to the request from the host 12 and the generation rule of the guarantee code to be added to the format data as pattern information (S82). Here, the pattern information is, for example, a fixed pattern such as all zeros, and the guarantee code is, for example, a code in a format to which logical address information is added in addition to an error correction code generated from the data part. It is. That is, the storage apparatus 11 does not actually write the format information in the storage area, but notifies the pattern information including the format pattern and the guarantee code generation rule. Thereby, the data transfer amount can be reduced.

そして、フラッシュメモリストレージ17は、ステップS82においてストレージ装置11から送信されたパタン情報を受領する(S83)。そして、フラッシュメモリストレージ17は、ストレージ装置11から送信されたパタン情報を元に、フォーマットの対象とされている記憶領域に対応する各論理ページの保証コードを生成する(S84)。続いて、フラッシュメモリストレージ17は、パタン情報を元に、フォーマットパタンを生成する(85S)。   Then, the flash memory storage 17 receives the pattern information transmitted from the storage device 11 in step S82 (S83). Then, the flash memory storage 17 generates a guarantee code for each logical page corresponding to the storage area to be formatted based on the pattern information transmitted from the storage device 11 (S84). Subsequently, the flash memory storage 17 generates a format pattern based on the pattern information (85S).

そして、フラッシュメモリストレージ17は、ステップS85において生成された論理ページに対して、重複排除処理を実行する(S86)。ステップS86における重複排除処理は、第1の実施の形態と同様の処理であるため、詳細な説明は省略する。   Then, the flash memory storage 17 performs deduplication processing on the logical page generated in step S85 (S86). The de-duplication process in step S86 is the same process as in the first embodiment, and a detailed description thereof will be omitted.

そして、フラッシュメモリストレージ17は、重複排除された論理テーブルについて、論理/物理アドレス変換管理テーブル56の対象となるエントリを更新する(S87)。ステップS87における論理/物理アドレス変換管理テーブル56の更新処理は、第1の実施の形態と同様の処理であるため、詳細な説明は省略する。   Then, the flash memory storage 17 updates the target entry of the logical / physical address conversion management table 56 for the deduplicated logical table (S87). The update process of the logical / physical address conversion management table 56 in step S87 is the same process as in the first embodiment, and thus detailed description thereof is omitted.

そして、フラッシュメモリストレージ17は、ストレージ装置11にフォーマット処理が終了した旨を通知する(S88)。そして、ストレージ装置11は、フラッシュメモリストレージ17からフォーマット処理が終了した旨の通知を受領して、フォーマット処理が終了したことをホスト12に通知する。   Then, the flash memory storage 17 notifies the storage device 11 that the formatting process has been completed (S88). Then, the storage device 11 receives a notification from the flash memory storage 17 that the formatting process has been completed, and notifies the host 12 that the formatting process has been completed.

(3−3)本実施の形態の効果
本実施形態にかかる計算機システム3によれば、特定のパタン情報に基づいて、記憶領域にデータおよび保証コードを書き込む。これにより、データ書き込みにおけるデータ転送量を削減することができる。さらに、保証コードが付与されたデータに対しても重複排除を行って、記憶媒体への書き込み量を縮減することによりフラッシュメモリの長寿命化を図ることができる。さらに、追記型の書き込み方法を採用するフラッシュメモリなどの記憶媒体において、ユーザが使用していない未使用領域を増加させて、未使用領域をデータの追記用の領域とすることにより、性能安定性の向上を図ることが可能となる。
(3-3) Effects of this Embodiment According to the computer system 3 according to this embodiment, data and a guarantee code are written in the storage area based on specific pattern information. Thereby, the data transfer amount in data writing can be reduced. Further, the life of the flash memory can be extended by deduplicating the data to which the guarantee code has been assigned to reduce the amount of data written to the storage medium. In addition, in storage media such as flash memory that employs the write-once type writing method, the unused area that is not used by the user is increased, and the unused area is used as a data write-on area. Can be improved.

(4)他の実施の形態
なお、上述の実施の形態においては、フラッシュ制御装置210に格納されている各種プログラムに基づいて、重複排除処理等を実行しているが、かかる例に限定されず、例えば、フラッシュ制御装置210をストレージ装置11とは別体の装置に設けて、当該フラッシュ制御装置210と協同して各種機能を実現するようにしてもよい。また、フラッシュ制御装置210に格納されている各種プログラムをストレージ装置11とは別体の他の装置に設けて、当該プログラムがフラッシュ制御装置210に呼び出されることにより各種機能を実現するようにしてもよい。
(4) Other Embodiments In the above-described embodiment, the deduplication processing or the like is executed based on various programs stored in the flash control device 210. However, the present invention is not limited to this example. For example, the flash control device 210 may be provided in a separate device from the storage device 11, and various functions may be realized in cooperation with the flash control device 210. Further, various programs stored in the flash control device 210 may be provided in another device separate from the storage device 11, and various functions may be realized by calling the program to the flash control device 210. Good.

本発明は、データ毎に異なるコードが付与されたデータを重複排除して、データ容量効率を向上させることが可能なストレージ装置に適用することができる。   The present invention can be applied to a storage apparatus that can improve data capacity efficiency by deduplicating data to which different codes are assigned for each data.

11 ストレージ装置
112 ホストインタフェース
113 ストレージインタフェース
114 保守インタフェース
115 CPU
116 メモリ
12 ホスト
13 管理端末
14 SAN
16 コネクタ
17 フラッシュメモリストレージ装置
21 フラッシュメモリモジュール
210 フラッシュ制御装置
211 ストレージインタフェース
212 CPU
213 コントローラ
213 メモリ
215 バッファ
216 フラッシュメモリインタフェース
31 フラッシュメモリチップ
11 Storage Device 112 Host Interface 113 Storage Interface 114 Maintenance Interface 115 CPU
116 Memory 12 Host 13 Management terminal 14 SAN
16 Connector 17 Flash memory storage device 21 Flash memory module 210 Flash control device 211 Storage interface 212 CPU
213 Controller 213 Memory 215 Buffer 216 Flash memory interface 31 Flash memory chip

Claims (16)

複数のフラッシュメモリチップと、
メモリコントローラと、
を備え、
前記複数のフラッシュメモリチップの各フラッシュメモリチップは、複数のブロックを含み、各ブロックは複数の物理ページを含み、各物理ページはデータの書き込み/読み込み単位であり、
前記メモリコントローラは、第1のデータセット及び第1の保証コードセットと、第2のデータセット及び第2の保証コードセットとを管理し、
前記第1のデータセットは複数の第1のユーザデータを含み、第1の保証コードセットは複数の第1の保証コードを含み、前記複数の第1の保証コードの各第1の保証コードは、前記複数の第1のユーザデータの1つに関連付けられ、
前記第2のデータセットは複数の第2のユーザデータを含み、第2の保証コードセットは複数の第2の保証コードを含み、前記複数の第2の保証コードの各第2の保証コードは、前記複数の第2のユーザデータの1つに関連付けられ、
前記メモリコントローラは、前記第1のデータセットと前記第2のデータセットとが同じデータセットの場合に、前記同じデータセットを第1の物理ページに格納し、前記第1の保証コードセットと前記第2の保証コードセットを第2の物理ページに格納する
ことを特徴とする、フラッシュメモリモジュール。
Multiple flash memory chips,
A memory controller;
With
Each flash memory chip of the plurality of flash memory chips includes a plurality of blocks, each block includes a plurality of physical pages, each physical page is a unit for writing / reading data,
The memory controller manages a first data set and a first guarantee code set, a second data set and a second guarantee code set,
The first data set includes a plurality of first user data, the first guarantee code set includes a plurality of first guarantee codes, and each first guarantee code of the plurality of first guarantee codes is , Associated with one of the plurality of first user data,
The second data set includes a plurality of second user data, the second guarantee code set includes a plurality of second guarantee codes, and each second guarantee code of the plurality of second guarantee codes is , Associated with one of the plurality of second user data,
The memory controller stores the same data set in a first physical page when the first data set and the second data set are the same data set, and the first guarantee code set and the second data set A flash memory module, wherein the second guarantee code set is stored in a second physical page.
前記メモリコントローラは、
前記第1の保証コードまたは前記第2の保証コードが格納されている物理ページに空き領域がある場合に、前記第1の保証コード及び前記第2の保証コードを新たな物理ページにコピーすることにより、前記第1の保証コード及び前記第2の保証コードを1つの物理ページにマージする
ことを特徴とする、請求項1に記載のフラッシュメモリモジュール。
The memory controller is
Copying the first guarantee code and the second guarantee code to a new physical page when there is a free space in the physical page in which the first guarantee code or the second guarantee code is stored. The flash memory module according to claim 1, wherein the first guarantee code and the second guarantee code are merged into one physical page.
前記複数の第1の保証コード及び前記複数の第2の保証コードの各保証コードは、
前記ユーザデータから生成されるビットエラー訂正符号コードと、前記ユーザデータのアドレスとから構成される
ことを特徴とする、請求項1に記載のフラッシュメモリモジュール。
Each guarantee code of the plurality of first guarantee codes and the plurality of second guarantee codes is:
The flash memory module according to claim 1, comprising a bit error correction code code generated from the user data and an address of the user data.
前記複数の第1の保証コード及び前記複数の第2の保証コードの各保証コードは、各々異なる保証コードである、
ことを特徴とする、請求項1に記載のフラッシュメモリモジュール。
Each guarantee code of the plurality of first guarantee codes and the plurality of second guarantee codes is a different guarantee code.
The flash memory module according to claim 1, wherein:
前記第2の物理ページに格納されている、前記第1の保証コード及び前記第2の保証コードの位置情報は、前記第2の物理ページの先頭アドレスからの位置を示すオフセット情報として保持される
ことを特徴とする、請求項1に記載のフラッシュメモリモジュール。
The position information of the first guarantee code and the second guarantee code stored in the second physical page is held as offset information indicating the position from the head address of the second physical page. The flash memory module according to claim 1, wherein:
前記オフセット情報は、論理/物理アドレス変換テーブルに格納される、
ことを特徴とする、請求項5に記載のフラッシュメモリモジュール。
The offset information is stored in a logical / physical address conversion table.
The flash memory module according to claim 5, wherein:
前記第1の物理ページと前記第2の物理ページとは、各々異なるブロックに含まれている
ことを特徴とする、請求項1に記載のフラッシュメモリモジュール。
The flash memory module according to claim 1, wherein the first physical page and the second physical page are included in different blocks.
前記メモリコントローラは、
読み込み対象の論理ページアドレスを取得し、
論理/物理アドレス変換テーブルから対象となる論理/物理アドレス情報を取得し、
取得した論理ページが重複排除処理された論理ページかを判定し、
前記論理ページが重複排除されていない論理ページである場合には、前記論理ページに対応する物理ページのアドレスを取得し、
前記論理ページが重複排除されている論理ページである場合には、
前記論理ページのデータ部が格納されている物理ページの物理ページデータアドレスを取得し、
前記論理ページの保証コードが格納されている物理ページの物理ページコードアドレスを取得し、
前記保証コードの前記物理ページ内の位置を示す物理ページコードオフセットアドレスを取得し、
前記物理ページアドレスに基づいて物理ページに格納されているデータを読み込む
ことを特徴とする、請求項1に記載のフラッシュメモリモジュール。
The memory controller is
Get the logical page address to be read
Get the target logical / physical address information from the logical / physical address conversion table,
Determine whether the acquired logical page is a logical page that has been deduplicated,
If the logical page is a logical page that is not deduplicated, obtain the address of the physical page corresponding to the logical page;
If the logical page is a deduplicated logical page,
Obtaining a physical page data address of a physical page in which the data portion of the logical page is stored;
Obtaining a physical page code address of a physical page in which the guarantee code of the logical page is stored;
Obtaining a physical page code offset address indicating the position of the guarantee code in the physical page;
The flash memory module according to claim 1, wherein data stored in a physical page is read based on the physical page address.
ストレージコントローラと、
複数のフラッシュメモリモジュールと、
を備え、
前記フラッシュメモリモジュールは、複数のフラッシュメモリチップと、メモリコントローラと、を備え、
前記複数のフラッシュメモリチップの各フラッシュメモリチップは、複数のブロックを含み、各ブロックは複数の物理ページを含み、各物理ページはデータの書き込み/読み込み単位であり、
前記メモリコントローラは、第1のデータセット及び第1の保証コードセットと、第2のデータセット及び第2の保証コードセットとを管理し、
前記第1のデータセットは複数の第1のユーザデータを含み、第1の保証コードセットは複数の第1の保証コードを含み、前記複数の第1の保証コードの各第1の保証コードは、前記複数の第1のユーザデータの1つに関連付けられ、
前記第2のデータセットは複数の第2のユーザデータを含み、第2の保証コードセットは複数の第2の保証コードを含み、前記複数の第2の保証コードの各第2の保証コードは、前記複数の第2のユーザデータの1つに関連付けられ、
前記メモリコントローラは、前記第1のデータセットと前記第2のデータセットとが同じデータセットの場合に、前記同じデータセットを第1の物理ページに格納し、前記第1の保証コードセットと前記第2の保証コードセットを第2の物理ページに格納する
ことを特徴とする、ストレージ装置。
A storage controller;
Multiple flash memory modules;
With
The flash memory module includes a plurality of flash memory chips and a memory controller,
Each flash memory chip of the plurality of flash memory chips includes a plurality of blocks, each block includes a plurality of physical pages, each physical page is a unit for writing / reading data,
The memory controller manages a first data set and a first guarantee code set, a second data set and a second guarantee code set,
The first data set includes a plurality of first user data, the first guarantee code set includes a plurality of first guarantee codes, and each first guarantee code of the plurality of first guarantee codes is , Associated with one of the plurality of first user data,
The second data set includes a plurality of second user data, the second guarantee code set includes a plurality of second guarantee codes, and each second guarantee code of the plurality of second guarantee codes is , Associated with one of the plurality of second user data,
The memory controller stores the same data set in a first physical page when the first data set and the second data set are the same data set, and the first guarantee code set and the second data set A storage device, wherein the second guarantee code set is stored in a second physical page.
前記メモリコントローラは、
前記第1の保証コードまたは前記第2の保証コードが格納されている物理ページに空き領域がある場合に、前記第1の保証コード及び前記第2の保証コードを新たな物理ページにコピーすることにより、前記第1の保証コード及び前記第2の保証コードを1つの物理ページにマージする
ことを特徴とする、請求項9に記載のストレージ装置。
The memory controller is
Copying the first guarantee code and the second guarantee code to a new physical page when there is a free space in the physical page in which the first guarantee code or the second guarantee code is stored. The storage apparatus according to claim 9, wherein the first guarantee code and the second guarantee code are merged into one physical page.
前記複数の第1の保証コード及び前記複数の第2の保証コードの各保証コードは、
前記ユーザデータから生成されるビットエラー訂正符号コードと、前記ユーザデータのアドレスとから構成される
ことを特徴とする、請求項9に記載のストレージ装置。
Each guarantee code of the plurality of first guarantee codes and the plurality of second guarantee codes is:
The storage apparatus according to claim 9, comprising a bit error correction code code generated from the user data and an address of the user data.
前記複数の第1の保証コード及び前記複数の第2の保証コードの各保証コードは、各々異なる保証コードである、
ことを特徴とする、請求項9に記載のストレージ装置。
Each guarantee code of the plurality of first guarantee codes and the plurality of second guarantee codes is a different guarantee code.
The storage apparatus according to claim 9, wherein:
前記第2の物理ページに格納されている、前記第1の保証コード及び前記第2の保証コードの位置情報は、前記第2の物理ページの先頭アドレスからの位置を示すオフセット情報として保持される
ことを特徴とする、請求項9に記載のストレージ装置。
The position information of the first guarantee code and the second guarantee code stored in the second physical page is held as offset information indicating the position from the head address of the second physical page. The storage apparatus according to claim 9, wherein:
前記オフセット情報は、論理/物理アドレス変換テーブルに格納される、
ことを特徴とする、請求項13に記載のストレージ装置。
The offset information is stored in a logical / physical address conversion table.
The storage apparatus according to claim 13, wherein the storage apparatus is a storage device.
前記第1の物理ページと前記第2の物理ページは異なるブロックに含まれる
ことを特徴とする、請求項9に記載のストレージ装置。
The storage apparatus according to claim 9, wherein the first physical page and the second physical page are included in different blocks.
前記メモリコントローラは、
読み込み対象の論理ページアドレスを取得し、
論理/物理アドレス変換テーブルから対象となる論理/物理アドレス情報を取得し、
取得した論理ページが重複排除処理された論理ページかを判定し、
前記論理ページが重複排除されていない論理ページである場合には、前記論理ページに対応する物理ページのアドレスを取得し、
前記論理ページが重複排除されている論理ページである場合には、
前記論理ページのデータ部が格納されている物理ページの物理ページデータアドレスを取得し、
前記論理ページの保証コードが格納されている物理ページの物理ページコードアドレスを取得し、
前記保証コードの前記物理ページ内の位置を示す物理ページコードオフセットアドレスを取得し、
前記物理ページアドレスに基づいて物理ページに格納されているデータを読み込む
ことを特徴とする、請求項9に記載のストレージ装置。
The memory controller is
Get the logical page address to be read
Get the target logical / physical address information from the logical / physical address conversion table,
Determine whether the acquired logical page is a logical page that has been deduplicated,
If the logical page is a logical page that is not deduplicated, obtain the address of the physical page corresponding to the logical page;
If the logical page is a deduplicated logical page,
Obtaining a physical page data address of a physical page in which the data portion of the logical page is stored;
Obtaining a physical page code address of a physical page in which the guarantee code of the logical page is stored;
Obtaining a physical page code offset address indicating the position of the guarantee code in the physical page;
The storage apparatus according to claim 9, wherein data stored in a physical page is read based on the physical page address.
JP2014169918A 2014-08-22 2014-08-22 FLASH MEMORY MODULE, NONVOLATILE SEMICONDUCTOR MEMORY MODULE, AND STORAGE DEVICE Expired - Fee Related JP6050794B2 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2014169918A JP6050794B2 (en) 2014-08-22 2014-08-22 FLASH MEMORY MODULE, NONVOLATILE SEMICONDUCTOR MEMORY MODULE, AND STORAGE DEVICE

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2014169918A JP6050794B2 (en) 2014-08-22 2014-08-22 FLASH MEMORY MODULE, NONVOLATILE SEMICONDUCTOR MEMORY MODULE, AND STORAGE DEVICE

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
JP2013502328A Division JP5603997B2 (en) 2010-10-26 2010-10-26 Storage apparatus and data control method

Publications (2)

Publication Number Publication Date
JP2014225297A true JP2014225297A (en) 2014-12-04
JP6050794B2 JP6050794B2 (en) 2016-12-21

Family

ID=52123863

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2014169918A Expired - Fee Related JP6050794B2 (en) 2014-08-22 2014-08-22 FLASH MEMORY MODULE, NONVOLATILE SEMICONDUCTOR MEMORY MODULE, AND STORAGE DEVICE

Country Status (1)

Country Link
JP (1) JP6050794B2 (en)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2016133916A (en) * 2015-01-16 2016-07-25 株式会社東芝 Image recording and reproducing apparatus, storage medium management method and computer program
JP2018106545A (en) * 2016-12-27 2018-07-05 富士通株式会社 Information processing device, information processing system, information processing method and program
US10990535B2 (en) 2017-04-20 2021-04-27 Fujitsu Limited Storage control apparatus and storage control method for deduplication

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006195851A (en) * 2005-01-17 2006-07-27 Hitachi Ltd Storage system
JP2008117253A (en) * 2006-11-07 2008-05-22 Hitachi Ltd Storage device system, computer system and processing method therefor
JP2008165518A (en) * 2006-12-28 2008-07-17 Tdk Corp Memory controller, flash memory system, and control method of flash memory
JP2009087021A (en) * 2007-09-28 2009-04-23 Hitachi Ltd Storage device and data deduplication method
WO2010036572A2 (en) * 2008-09-26 2010-04-01 Micron Technology, Inc. Data streaming for solid-state bulk storage devices
JP2010204970A (en) * 2009-03-04 2010-09-16 Nec Corp Storage system

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006195851A (en) * 2005-01-17 2006-07-27 Hitachi Ltd Storage system
JP2008117253A (en) * 2006-11-07 2008-05-22 Hitachi Ltd Storage device system, computer system and processing method therefor
JP2008165518A (en) * 2006-12-28 2008-07-17 Tdk Corp Memory controller, flash memory system, and control method of flash memory
JP2009087021A (en) * 2007-09-28 2009-04-23 Hitachi Ltd Storage device and data deduplication method
WO2010036572A2 (en) * 2008-09-26 2010-04-01 Micron Technology, Inc. Data streaming for solid-state bulk storage devices
JP2012503828A (en) * 2008-09-26 2012-02-09 マイクロン テクノロジー, インク. Data streaming for solid-state mass storage
JP2010204970A (en) * 2009-03-04 2010-09-16 Nec Corp Storage system

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2016133916A (en) * 2015-01-16 2016-07-25 株式会社東芝 Image recording and reproducing apparatus, storage medium management method and computer program
JP2018106545A (en) * 2016-12-27 2018-07-05 富士通株式会社 Information processing device, information processing system, information processing method and program
US10990535B2 (en) 2017-04-20 2021-04-27 Fujitsu Limited Storage control apparatus and storage control method for deduplication

Also Published As

Publication number Publication date
JP6050794B2 (en) 2016-12-21

Similar Documents

Publication Publication Date Title
JP5603997B2 (en) Storage apparatus and data control method
JP6134857B2 (en) Storage device, apparatus having storage device, and storage control method
US10437737B2 (en) Data storage device
TWI569139B (en) Valid data merging method, memory controller and memory storage apparatus
TW201805814A (en) Method for managing a memory apparatus, and associated memory apparatus thereof
JP2008015769A (en) Storage system and writing distribution method
KR100703680B1 (en) Flash file system
JP2018181202A (en) Device, method, and program for storage control
JP2011175632A (en) Semiconductor storage device, and method for controlling the same
CN107798063B (en) Snapshot processing method and snapshot processing device
JP6050794B2 (en) FLASH MEMORY MODULE, NONVOLATILE SEMICONDUCTOR MEMORY MODULE, AND STORAGE DEVICE
JP2018156263A (en) Memory system, memory controller and method for controlling memory system
JP2010237907A (en) Storage device and recording method
JP2019212175A (en) Storage control system, and storage control method
KR20070061543A (en) Emulating small block size of flash memory
US11947419B2 (en) Storage device with data deduplication, operation method of storage device, and operation method of storage server
JP5204265B2 (en) Semiconductor memory device and method for controlling semiconductor memory device
JP2000285688A (en) Non-volatile semiconductor memory
US11461225B2 (en) Storage device, control method of storage device, and storage medium
KR102032878B1 (en) Method for correcting error of flash storage controller
KR102497213B1 (en) Controller performing secure deletion, Key-value storage device having the same and Operating method of key-value storage device
US10740015B2 (en) Optimized management of file system metadata within solid state storage devices (SSDs)
JP6805501B2 (en) Storage device
US10613973B1 (en) Garbage collection in solid state drives
JP2022166986A (en) Storage controller and storage control method

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20140822

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20150626

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20150804

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20151002

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20160329

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20160527

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20161125

R150 Certificate of patent or registration of utility model

Ref document number: 6050794

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees