JP2008159013A - Semiconductor memory device - Google Patents
Semiconductor memory device Download PDFInfo
- Publication number
- JP2008159013A JP2008159013A JP2007036236A JP2007036236A JP2008159013A JP 2008159013 A JP2008159013 A JP 2008159013A JP 2007036236 A JP2007036236 A JP 2007036236A JP 2007036236 A JP2007036236 A JP 2007036236A JP 2008159013 A JP2008159013 A JP 2008159013A
- Authority
- JP
- Japan
- Prior art keywords
- data
- page
- request
- address
- snapshot
- 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
Links
Images
Landscapes
- Techniques For Improving Reliability Of Storages (AREA)
- Memory System (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Read Only Memory (AREA)
Abstract
Description
本発明は、電気的に書き換え可能な不揮発性メモリを使用した半導体記憶装置に関し、特に不揮発性メモリとしてフラッシュメモリを用いた記憶装置において、メモリ内容のスナップショット機能の実装方法に関する。 The present invention relates to a semiconductor memory device using an electrically rewritable nonvolatile memory, and more particularly to a method for mounting a snapshot function of memory contents in a memory device using a flash memory as a nonvolatile memory.
フラッシュメモリを搭載し、そこに格納されたデータが変更されるたびに消去サイクルを行うことを回避するメモリ制御機能を有する半導体記憶装置が知られている(例えば、特許文献1)。ここで、消去サイクルとは消去すべきブロック内のメモリセルを完全にプログラム(データの書込)してから消去することである。本記憶装置は、ハードディスクのように変更対象のデータ自身を更新データで上書きせずに、更新データをメモリブロックの未書込部分にプログラムすることによって、消去サイクルを回避する。ただし、プログラム済みのメモリブロックは定期的にクリーンアップされる。以上の処理を行うために、本記憶装置は、各メモリブロック内のセクタが未使用/使用中/無効であることを示すフラグや、外部から与えられる論理アドレスとメモリブロックの物理アドレスとを直接対応付けるマップを搭載する。
ストレージシステムに搭載されているバックアップ機能の1つとしてスナップショット機能がある。このスナップショットにより、ユーザは過去のデータファイルの内容を保存することで、後にそれを復元することが可能となる。特許文献1のような従来の半導体記憶装置は、変更対象のデータを上書きせずに更新データを書込むため、更新前後のデータがメモリ上に一時的に共存するという特徴を持つ。これは、過去のデータファイルの内容を保存することになる。しかし、従来の半導体記憶装置は、更新前のデータを格納しているメモリ部分を無効として扱い、記憶装置外部からアクセスできないように制御する。よって、ユーザが過去のデータファイルを復元したくなったとしても、上記従来例では該当するデータファイルが半導体記憶装置内のどこかに残っているにも拘わらず、ユーザは更新前のデータにアクセスすることができず、有効に利用できない、という問題があった。
One of the backup functions installed in the storage system is a snapshot function. This snapshot allows the user to save the contents of past data files and later restore them. A conventional semiconductor memory device such as
また、ハードディスクを記録媒体として用いるストレージシステムにおいてスナップショット機能を実現する場合、記録媒体制御装置(コントローラ)が、データファイルの過去の内容および現在の内容(または過去の内容からの差分)をハードディスク上の別々の論理アドレスに書き込んで、これらのアドレスを管理する必要がある。このため最新のデータとスナップショットによる過去のデータへアクセスする際には、複数の論理アドレスを変換する必要があり、このアドレス変換のために記録媒体制御装置の負荷が増大する、という問題がある。 Also, when realizing a snapshot function in a storage system using a hard disk as a recording medium, the recording medium control device (controller) displays the past contents and the current contents (or differences from the past contents) of the data file on the hard disk. It is necessary to manage these addresses by writing to separate logical addresses. For this reason, when accessing the latest data and past data by snapshots, it is necessary to convert a plurality of logical addresses, and the load of the recording medium control device increases due to the address conversion. .
そこで、本発明は上記問題点に鑑みてなされたもので、フラッシュメモリを備えた半導体記憶装置において、データのバックアップを利用可能にし、さらにコントローラの負荷を低減することを目的とする。 Therefore, the present invention has been made in view of the above problems, and an object of the present invention is to make it possible to use data backup in a semiconductor memory device having a flash memory and to further reduce the load on the controller.
本発明は、ホストのデータを読み書きする記憶装置として、第1の論理アドレスを指定したホストからの書込要求に応じて第1のデータを格納した後、第1の論理アドレスを指定したホストからの書込要求に応じて第2のデータを格納し、第1のデータと第2のデータを格納した後、第1の論理アドレスを指定したホストからの読み出し要求に応じて、第2のデータか第1のデータのいずれかを選択的に出力可能であることを特徴とする記憶装置を提供する。 According to the present invention, as a storage device for reading and writing host data, after storing first data in response to a write request from a host that designates the first logical address, the host that designates the first logical address The second data is stored in response to the write request, the first data and the second data are stored, and then the second data is received in response to the read request from the host designating the first logical address. There is provided a storage device that can selectively output either of the first data and the first data.
また、本発明は、フラッシュメモリとメモリコントローラとを備え、メモリコントローラはフラッシュメモリを制御するためにフラッシュメモリに接続され、フラッシュメモリはメモリコントローラが一括消去可能なブロックを複数含み、ブロックは前記メモリコントローラが書込単位とする複数のページに分割され、第1のデータおよび第2のデータを異なるページに格納することを特徴とする記憶装置を提供する。 The present invention also includes a flash memory and a memory controller, the memory controller is connected to the flash memory to control the flash memory, and the flash memory includes a plurality of blocks that can be collectively erased by the memory controller. A storage device is provided in which a controller is divided into a plurality of pages as write units, and the first data and the second data are stored in different pages.
また、本発明は、前記記憶装置内において、読み出し要求で指定可能な論理アドレスの1つから、その論理アドレスを指定して書込まれたデータを格納している少なくとも2つのページの物理アドレスを格納するためのアドレス変換テーブルを、不揮発性の記憶手段に保持することを特徴とする記憶装置を提供する。 According to the present invention, the physical address of at least two pages storing data written by designating the logical address is selected from one of the logical addresses that can be designated by the read request in the storage device. There is provided a storage device characterized in that an address conversion table for storage is held in a nonvolatile storage means.
また、本発明は、前記記憶装置内において、各ページに割当てられた1つのページ状態を格納するページ状態レジスタを、不揮発性の記憶手段に保持し、メモリコントローラが検知しうるページ状態には、少なくとも(1)対応する論理アドレスを指定して最後に書込まれたデータを格納した状態、(2)対応する論理アドレスを指定して書込まれた非最新データを格納した状態、(3)もはや記憶する必要のない無効データを格納した状態、(4)消去されて以来データが未書込の状態、の4つが含まれることを特徴とする記憶装置を提供する。 Further, according to the present invention, in the storage device, a page state register that stores one page state assigned to each page is held in a nonvolatile storage unit, and the page state that can be detected by the memory controller includes: At least (1) the state in which the corresponding logical address is designated and the last written data is stored, (2) the state in which the non-latest data written by designating the corresponding logical address is stored, and (3) The present invention provides a storage device characterized in that it includes four states: a state in which invalid data that no longer needs to be stored is stored; and (4) a state in which data has not been written since it has been erased.
また、一括消去可能な複数のブロックと、前記ブロックを複数の領域に分割した複数のページとを備えてデータを格納するフラッシュメモリと、前記フラッシュメモリへの書き込みまたは読み出しを前記ページ単位で制御し、前記ブロック単位で一括消去を制御するメモリコントローラと、を備え、前記メモリコントローラは、ホストから受信した要求に含まれる論理アドレスに基づいて前記メモリチップのデータを読み書きする半導体記憶装置であって、前記メモリコントローラは、前記受信した要求が書き込み要求のときには、最新データの書き込み要求とスナップショット取得要求または解放要求の何れであるかを判定し、前記受信した要求が読み出し要求のときには、前記最新データの読み出し要求とスナップショットの読み出し要求の何れであるかを判定する要求判定部と、前記要求に含まれる論理アドレスに対応する前記ページの物理アドレスを管理するアドレス変換部と、前記各ブロックの前記各ページ毎に、格納されているデータが有効または無効あるいは未書き込みのいずれであるかを管理するページ状態設定部と、前記スナップショット取得要求または読み出し要求あるいは解放要求があったときに、スナップショットの世代を管理するスナップショット管理部と、前記要求判定部が判定した前記要求に含まれる論理アドレスから、前記アドレス変換部とページ状態設定部及びスナップショット管理部を参照して、前記要求に応じたアクセスを行うページの物理アドレスを決定するアクセス先決定部と、前記決定したページに対して前記要求に応じたアクセスを行うアクセス制御部と、を備え、前記アドレス変換部は、前記最新のデータを格納するページの物理アドレスを論理アドレス毎に格納する第1物理アドレスグループと、前記スナップショットを格納するページの物理アドレスを論理アドレス毎に格納し、かつスナップショットの世代毎に物理アドレスを格納する第2物理アドレスグループと、を有し、前記スナップショット管理部は、前記前記第2物理アドレスグループを構成するスナップショットの世代毎のアドレスグループの有効または無効を設定する。 Also, a flash memory that stores a plurality of blocks that can be collectively erased and a plurality of pages obtained by dividing the block into a plurality of areas, and controls writing or reading to the flash memory in units of pages. A memory controller that controls batch erase in units of blocks, the memory controller reading and writing data of the memory chip based on a logical address included in a request received from a host, When the received request is a write request, the memory controller determines whether the request is a latest data write request and a snapshot acquisition request or a release request, and when the received request is a read request, the latest data Read request and snapshot read required Stored in each of the pages of each block, a request determination unit that determines which one of the blocks, an address conversion unit that manages the physical address of the page corresponding to the logical address included in the request, and A page status setting unit that manages whether data is valid, invalid, or unwritten, and a snapshot management unit that manages the generation of a snapshot when the snapshot acquisition request, read request, or release request is made And referring to the address conversion unit, the page state setting unit, and the snapshot management unit from the logical address included in the request determined by the request determination unit, the physical address of the page to be accessed according to the request Access destination determination unit to determine and access to the determined page according to the request A first physical address group that stores, for each logical address, a physical address of a page that stores the latest data, and a physical address of a page that stores the snapshot. And a second physical address group that stores a physical address for each snapshot generation, and the snapshot management unit includes a snapshot that constitutes the second physical address group. Enable / Disable address group for each generation.
本発明によれば、記録媒体制御装置(メモリコントローラ)からの要求に従って任意の時点でのデータの内容を半導体記憶装置内に保存させることができるため、ひとつの論理アドレスで更新後のデータと更新前のデータとを利用することができる。さらに、半導体記憶装置を記録媒体として用いるストレージシステムにおいてスナップショット機能を実現する際には、記録媒体制御装置への負荷が低減されるという効果を奏する。 According to the present invention, the contents of data at an arbitrary time can be stored in the semiconductor memory device in accordance with a request from the recording medium control device (memory controller). The previous data can be used. Furthermore, when a snapshot function is realized in a storage system that uses a semiconductor storage device as a recording medium, the load on the recording medium control device is reduced.
また、半導体記憶装置に書き込んだデータが更新される度に、スナップショットの世代を更新することができ、半導体記憶装置の可用性を向上させることができる。 In addition, every time the data written in the semiconductor memory device is updated, the snapshot generation can be updated, and the availability of the semiconductor memory device can be improved.
以下、本発明の実施の形態を図面を参照して説明する。 Hereinafter, embodiments of the present invention will be described with reference to the drawings.
図1は、第1の実施形態を示し、本発明を適用した半導体記憶装置1000の内部構成を簡単に表したものである。半導体記憶装置1000は、ディスクインタフェース1010、メモリコントローラ1020、フラッシュメモリ1040、不揮発性RAM1030で構成される。
FIG. 1 shows the first embodiment and simply shows the internal configuration of a
ここで、フラッシュメモリ1040は半導体記憶装置1000の記憶容量に応じて、十分な容量を持つ1個以上のメモリチップ1041〜1043から構成される。また、不揮発性RAM1030は、バイト単位でデータの読み書きが可能な半導体メモリで、例えば磁気抵抗メモリや相変化メモリなどである。これは、フラッシュメモリ1040よりも書き換え寿命が長い不揮発性記憶媒体が好ましい。
Here, the
ディスクインタフェース1010は、外部のホスト装置1100と接続されるインタフェース機構であり、ホスト装置1100から受信したリード/ライトコマンドに応答して、半導体記憶装置1000に記憶されたリードデータをホスト装置1100に送信したり、半導体記憶装置1000に記憶すべきライトデータをホスト装置1100から受信する。なお、ホスト装置1100は、リード/ライトを要求するデータの格納先を論理アドレスによって指定する。この論理アドレスはフラッシュメモリ1040を直接アクセスする時に用いる物理アドレスとは異なる仮想的なアドレスである。
The
ディスクインタフェース1010の機構およびコマンドやデータの送受信のプロトコルについては、標準的なハードディスク装置と互換性のあるインタフェース仕様(例えば、パラレルATA、シリアルATA、SCSI)に準拠することが好ましい。
The mechanism of the
フラッシュメモリ1040の各メモリチップ1041〜1043は、いずれもページを単位として書き込まれ、複数のページからなるブロックを単位として消去される構造を持った不揮発性半導体メモリである。各チップには複数のブロックが含まれている。
Each of the
メモリコントローラ1020は、ディスクインタフェース1010、フラッシュメモリ1040、不揮発性RAM1030と接続され、それらを制御するマイクロプロセッサである。メモリコントローラ1020は、ディスクインタフェース1010を介してホスト装置1100から受信したコマンド(上述のリード/ライトコマンドなど)の解釈や、ディスクインタフェース1010を介してのホスト装置1100との間のデータ送受信や、不揮発性RAM1030へのアクセス(リード/ライト)、各メモリチップ1041〜1043へのアクセス(リード/ライト/消去)を実行する。
The
メモリコントローラ1020が解釈可能な5種類のコマンドとその機能を以下に示す。
・リードコマンド…論理アドレスで指定された位置に最後に格納されたデータを読み出す。
・ライトコマンド…論理アドレスで指定された位置にデータを書き込む。
・スナップショットコマンド…その時点での各論理アドレス位置に格納されているデータを、後に読み出しできるようにする。
・リカバリリードコマンド…論理アドレスで指定された位置に、スナップショットコマンドを受信した時点で格納されていたデータを読み出す。
・通常動作開始コマンド…各論理アドレス位置において、最後に格納されたデータのみを読み出しできるようにする。
The five types of commands that can be interpreted by the
Read command: Reads the data stored last at the position specified by the logical address.
• Write command: Writes data to the location specified by the logical address.
Snapshot command: The data stored at each logical address position at that time can be read later.
Recovery read command: Reads data stored at the time specified by the logical address when the snapshot command is received.
Normal operation start command: Only the last stored data can be read at each logical address position.
メモリコントローラ1020は、ホスト装置1100から指定された論理アドレスに対応するデータが、どのメモリチップ内のどの物理アドレスのページに格納されているかを管理するために、論理アドレスと物理アドレスとの対応付けをリストにしたアドレス変換テーブル1031を使用する。
The
このアドレス変換テーブル1031では、1つの論理アドレスに対して2つの物理アドレス(以降、第1物理アドレス、第2物理アドレスと呼ぶ)を対応付ける。第1物理アドレスは、その論理アドレスに最後に書かれたデータの格納位置を示す。第2物理アドレスは、ホスト装置1100がスナップショットを指示した時点で、その論理アドレスに書かれていたデータの格納位置を示す。
In this address conversion table 1031, two physical addresses (hereinafter referred to as a first physical address and a second physical address) are associated with one logical address. The first physical address indicates the storage location of the data written last to the logical address. The second physical address indicates the storage position of the data written in the logical address when the
アドレス変換テーブル1031は不揮発性RAM1030に格納され、メモリコントローラ1020が、論理アドレスと物理アドレスの対応付けの変化に応じてその内容を書き換える。ただし、アドレス変換テーブル1031の格納先はフラッシュメモリ1040の一部でもよい。
The address conversion table 1031 is stored in the
メモリコントローラ1020は、各メモリチップ内に含まれるページがそれぞれどのような状態にあるかを管理するために、ページ状態レジスタ1032を使用する。このページ状態レジスタ1032は、予め定義されたページ状態を所定のビット数(例えば4ビット)の値で符号化した状態値を格納する。ページ状態を示す状態値としては、例えば、以下の4通りを定義する。なお、各状態値は16進数表記である。
・状態値=0…当該ページに対応付けられた論理アドレスに向けて書込まれたデータのうち最新のものが格納されている状態
・状態値=1…当該ページに対応付けられた論理アドレスに向けて書込まれたデータのうち最新ではないもの(更新前のデータ)が格納されている状態
・状態値=8…もはや必要のない無効データが格納されている状態
・状態値=F…当該ページを含むブロックが消去されて以来、データが未書込である状態
ページ状態レジスタ1032はブロック単位で上記状態値を保持する。例えば、あるブロックのページ状態値が“880F”のとき、その第1・第2ページは無効データを含み、第3ページはある論理アドレスに対応する最新データを含み、第4ページは未書込であることを意味する。なお、上記ではページの状態値のビット数を、4ビットで表現する例を示したが、状態値の種類に応じたビット数であればよく、3ビットや2ビットなど、より少ないビット数で状態値を示すようにしても良い。
The
State value = 0: State in which the latest data among the data written to the logical address associated with the page is stored State state = 1: The logical address associated with the page State / state value in which data that is not the latest (data before update) is stored is stored. State value = 8. State / state value in which invalid data is no longer needed is stored. A state in which data has not been written since the block including the page is erased. The
ページ状態レジスタ1032は不揮発性RAM1030に格納され、メモリコントローラ1020が、ページ状態の変化に応じてその内容を書き換える。ただし、ページ状態レジスタ1032の格納先はフラッシュメモリ1040の一部でもよい。
The
メモリコントローラ1020は、ホスト装置1100が半導体記憶装置1000のスナップショット機能を利用中であるかどうかの状態を管理するために、スナップショットフラグ1033を使用する。このスナップショットフラグ1033は不揮発性RAM1030に格納され、メモリコントローラ1020が、利用状態の変化に応じてその内容を書き換える。ただし、スナップショットフラグ1033の格納先はフラッシュメモリ1040の一部でもよい。
The
図2および図3は、本発明を適用した半導体記憶装置1000においてスナップショット機能を利用するときに、メモリコントローラ1020が行うメモリ管理処理を説明するため、フラッシュメモリ1040内の格納データと、不揮発性RAM1030内のアドレス変換テーブル1031と、ページ状態レジスタ1032及びスナップショットフラグ1033について、それぞれの内容の変化の一例を順に示したものである。フラッシュメモリ1040内と不揮発性RAM1030内のデータなどの変化の様子を図2(a)〜図3(d)に示し、図2(a)から始まり、図2(b)、図2(c)、図2(d)、図3(a)、図3(b)、図3(c)と遷移して、図3(d)で終わる。
FIGS. 2 and 3 illustrate the memory management process performed by the
図示の例では説明を簡単化するため、ホスト装置1100から指定可能な論理アドレスはセクタ単位(1セクタ=512バイト)として、その範囲を0〜3の4セクタ分に限定する。また、データの読み書きにはメモリチップ内の3個のブロック(ブロックX2000、ブロックY2010、ブロックZ2020)のみを使用することとする。さらに、メモリチップ内の各ブロックは4つのページで構成され、各ページのサイズは512バイト(1セクタ)であるものとする。各ページは0〜3の数字で表し、各ページの絶対的な物理アドレスをX3、Y0、Z1のように略記する。なお、図2(a)で示すように、アドレス変換テーブル1031において、LAは論理アドレス、第1PAは第1物理アドレス、第2PAは第2物理アドレスを意味する。なお、第1物理アドレスは、複数の論理アドレス毎に対応するページの物理アドレスをそれぞれ格納するもので、各物理アドレスは最新データを格納したページを示す。また、第2物理アドレスは、複数の論理アドレス毎に対応するページの物理アドレスをそれぞれ格納するもので、各物理アドレスは更新前(スナップショット)のデータを格納したページを示す。
In the illustrated example, in order to simplify the explanation, the logical address that can be specified from the
はじめに、スナップショット機能は無効であるとし、図2(a)のように、ブロックX2000には、物理ページアドレスのX0、X1、X2、X3が設定され、それぞれ論理アドレス0、1、2、3に対応するデータA、B、C、Dが既に格納されているものとする。なお、論理アドレス0,1,2,3は、メモリコントローラによって割り当てられたものである。また、ブロックY2010およびブロックZ2020は消去済みで、どのページもデータが未書込とする。
First, it is assumed that the snapshot function is invalid, and as shown in FIG. 2A, physical page addresses X0, X1, X2, and X3 are set in the block X2000, and
このとき、アドレス変換テーブル1031において論理アドレスLA=nの各第1物理アドレスにはXn(n=0〜3)が設定され、どの論理アドレスも第2物理アドレスが未設定である。また、ページ状態レジスタ1032におけるブロックX、Y、Zのページ状態値はそれぞれ“0000”、“FFFF”、“FFFF”に設定され、スナップショットフラグ1033はOFFに設定されている。つまり、図2(a)の状態では、アドレス変換テーブル1031において、論理アドレスLA=0がブロックX2000を指す第1物理アドレス=X0に対応付けられており、論理アドレスLA=1が同じくブロックX2000を指す第1物理アドレス=X1に、論理アドレスLA=2が同じくブロックX2000を指す第1物理アドレス=X2に、論理アドレスLA=3が同じくブロックX2000を指す第1物理アドレス=X3に対応付けられている。そして、ブロックX2000の第1〜第4ページは、ページ状態レジスタ1032の「X」のように各ページの状態値は「0」であり、最新のデータが格納されていることを示す。
At this time, in the address conversion table 1031, Xn (n = 0 to 3) is set for each first physical address of the logical address LA = n, and no second physical address is set for any logical address. The page status values of the blocks X, Y, and Z in the
この状態から、ホスト装置1100が以下の順で半導体記憶装置1000にコマンドを発行することとする。
(1)論理アドレスLA=0、1にそれぞれデータA’、B’を書くライトコマンド
(2)スナップショットコマンド
(3)論理アドレスLA=2、3にそれぞれデータC’、D’を書くライトコマンド
(4)論理アドレスLA=3にデータD”を書くライトコマンド
(5)論理アドレスLA=0〜3のデータを読むリードコマンド
(6)論理アドレスLA=0〜3のデータを読むリカバリリードコマンド
(7)通常動作開始(スナップショット機能の解除)コマンド
(8)論理アドレスLA=1にデータB”を書くライトコマンド
(9)論理アドレスLA=2にデータC”を書くライトコマンド
図2(b)は上記(1)のコマンドを受信して処理を実行した直後のフラッシュメモリ1040及び不揮発性RAM1030の内部状態を示したものである。ライトコマンド(1)を受信すると、メモリコントローラ1020は、ページ状態レジスタ1032を参照して、論理アドレスLA=0、1に対応するブロックX2000のページが状態値=0となっており、既に最新のデータが書き込まれているので、同一の論理アドレスLAに対応する次のブロックであるブロックY2010のページ状態レジスタ1032を参照し、状態値=F(未書込)である2つのページY0、Y1を選択し、これらのページにそれぞれデータA’、B’を書き込む。
From this state, the
(1) Write command for writing data A ′ and B ′ at logical addresses LA = 0 and 1 respectively (2) Snapshot command (3) Write command for writing data C ′ and D ′ at logical addresses LA = 2 and 3 respectively (4) Write command to write data D ″ at logical address LA = 3 (5) Read command to read data at logical address LA = 0 to 3 (6) Recovery read command to read data at logical address LA = 0 to 3 ( 7) Normal operation start (cancellation of snapshot function) command (8) Write command for writing data B ″ at logical address LA = 1 (9) Write command for writing data C ″ at logical address LA = 2 FIG. Indicates the internal state of the
なお、各ブロックへのデータの書き込みは、各ブロック内の空きセクタへ所定の順序で行うもので、例えば、図2(b)では各ブロックの空きページの順に書き込む。 Note that data writing to each block is performed in a predetermined order to empty sectors in each block. For example, in FIG. 2B, data is written in the order of empty pages in each block.
次に、メモリコントローラ1020は、アドレス変換テーブル1031から論理アドレスLA=0、1に対応する各第1物理アドレスであるX0、X1を検知し、これらのブロックX2000のページ1、2は既に最新のデータが書き込まれたので、ページ状態レジスタ1032のX0、X1のページ状態値を8(無効データ)に設定する。そして、メモリコントローラ1020はアドレス変換テーブル1031の論理アドレスLA=0、1に対応する各第1物理アドレスのアドレスに最新のデータを書き込んだブロックY2010の物理アドレスY0、Y1を設定し、ページ状態レジスタ1032のY0、Y1に対応するページ状態値を0(最新データ)に設定する。
Next, the
スナップショット機能が無効のときには、メモリコントローラ1020は各ブロックの空きページへ順次新たなデータを書き込み、過去のデータは無効なデータとしてページ状態レジスタ1032の値を「8」に設定し、また、アドレス変換テーブル1031は第1物理アドレスのみを使用して、最新のデータを書き込んだブロックの物理アドレスを第1物理アドレスに設定していく。
When the snapshot function is invalid, the
次に、上記(2)のスナップショットコマンドを受信すると、メモリコントローラ1020は、スナップショットフラグ1033にONを設定する。これ以降のライトコマンドは、この時点での格納データが失われないように以下のようにスナップショット機能を有効にして処理が行われる。
Next, when the snapshot command (2) is received, the
図2(c)は上記(3)のライトコマンドを実行した直後の内部状態を示したものである。コマンド(3)を受信すると、メモリコントローラ1020は、ページ状態レジスタ1032を参照して、状態値=F(未書込)である2つのページY2、Y3を選択し、これらのページY2,Y3にそれぞれデータC’、D’を書く。
FIG. 2 (c) shows the internal state immediately after the execution of the write command (3). When the command (3) is received, the
次に、メモリコントローラ1020はアドレス変換テーブル1031から論理アドレスLA=2、3に対応する各第1物理アドレスであるX2、X3を検知し、それぞれの第2物理アドレスの欄にX2、X3を設定する。さらに、メモリコントローラ1020は、ページ状態レジスタ1032のX2、X3のページ状態値を「1」(スナップショットデータ)に設定する。これにより、ブロックX2000のページ状態レジスタ1032の状態値は、「8811」となる。また、メモリコントローラ1020は、アドレス変換テーブル1031の論理アドレスLA=2、3に対応する最新のデータの物理アドレスを各第1物理アドレスにY2、Y3を設定し、ページ状態レジスタ1032のY2、Y3のページ状態値を0(最新データ)に設定する。これにより、ブロックY2010のページ状態レジスタ1032の値は「0000」となる。
Next, the
アドレス変換テーブル1031は、図2(c)で示すように、論理アドレスLA=2,3では、「A’、B’」の最新のデータを格納したブロックY2010の物理アドレス「Y2、Y3」が第1物理アドレスに設定され、不要となった直前のデータ「A,B」を格納したブロックX2000の物理アドレス「X2、X3」が第2物理アドレスに設定される。ひとつの論理アドレスに対して2つの物理アドレス関連付けることで、ホスト装置1100は最新のデータとスナップショットのデータにアクセスすることが可能となる。
In the address conversion table 1031, as shown in FIG. 2C, when the logical addresses LA = 2 and 3, the physical address “Y2, Y3” of the block Y2010 storing the latest data of “A ′, B ′” is stored. The physical address “X2, X3” of the block X2000 that stores the data “A, B” immediately before being set as the first physical address and becomes unnecessary is set as the second physical address. By associating two physical addresses with one logical address, the
図2(d)、図3(a)は上記(4)のコマンドを処理中のフラッシュメモリ1040及び不揮発性RAM1030の内部状態を示し、図3(b)は上記(4)のコマンドが実行完了した直後のフラッシュメモリ1040及び不揮発性RAM1030の内部状態を示したものである。論理アドレスLA=3のデータ「D”」のライトコマンド(4)を受信すると、メモリコントローラ1020は、ページ状態レジスタ1032を参照して、状態値=F(未書込)である1つのページZ0を選択し、当該ページZ0にデータ「D”」を書く。
2D and 3A show the internal states of the
次に、メモリコントローラ1020は、アドレス変換テーブル1031から論理アドレスLA=3の第1物理アドレスであるY3を検知し、更新されたデータ「D’」に対応するページ状態レジスタ1032のY3のページ状態値を8(無効データ)に設定する。そして、アドレス変換テーブル1031の論理アドレスLA=3の第1物理アドレスに新たに書き込んだデータ「D”」に対応する物理アドレスZ0を設定し、ページ状態レジスタ1032のZ0のページ状態値を0(最新データ)に設定する。図2(d)は、データD”を書き込んだ時点のフラッシュメモリ1040及び不揮発性RAM1030の内部状態を示している。これにより、ブロックY2010のページ状態レジスタ1032の状態値は「0008」となり、ブロックZ2020のページ状態レジスタ1032の状態値は「0FFF」となる。
Next, the
さて、ここでメモリコントローラ1020は、データが未書込のページの総数が所定数(例えば、ブロックX〜Zの未書き込みの総ページ数が3個)以下になったことを契機として、論理アドレスLA=0〜3の未書き込みページの総数を増やすため、以下のようなブロッククリーンアップ処理を行う。この処理では、フラッシュメモリ1040の特性により、データの消去を行う際にはブロック単位で消去を行うため、最新のデータまたはスナップショットとして保存するデータがブロック内にある場合は、これらのデータを他のブロックに退避させてから当該ブロックの消去を実行する。
Here, the
まず、メモリコントローラ1020は、ページ状態レジスタ1032を参照して、ページ状態値=8(無効データ)のページを最も多く含むブロックX2000を選択する。そして、メモリコントローラ1020は消去対象のブロックX2000内で保存が必要なデータを格納したページ、つまりページ状態値=0(最新のデータ)または1(スナップショットのデータ)の何れかである2つのページX2、X3を退避すべきページとして検出する。
First, the
次に、メモリコントローラ1020は、退避対象のページの各格納データC、Dを、今回は消去しないブロックZ2020のページ状態値=F(未書込)のページZ1、Z2にコピーする。そして、コピーが完了するとページ状態レジスタ1032のX2、X3のページ状態値をそれぞれZ1、Z2のページ状態値にコピーし、X2、X3のページ状態値を8(無効データ)に設定する。
Next, the
そして、メモリコントローラ1020はアドレス変換テーブル1031で、ブロックX2000からブロックZ2020へ退避したデータのブロックX2000における物理アドレスX2、X3が設定されている2つの欄を検索し、それぞれの欄に新たな格納先であるブロックZ2020の物理アドレスZ1、Z2を設定する。
Then, the
これにより、消去対象のブロックX2000のページ状態値は、「8888」となって全てのページが無効データとなり、退避先のブロックZ2020のページ状態値は「011F」となってスナップショットのデータをページ2、3に含むブロックとなる。 As a result, the page status value of the block X2000 to be erased becomes “8888”, all pages become invalid data, the page status value of the save destination block Z2020 becomes “011F”, and the snapshot data is paged. It becomes a block included in 2 and 3.
図3(a)はブロックX2000のスナップショットをブロックZ2020へ移動した後のフラッシュメモリ1040及び不揮発性RAM1030の内部状態を示している。
FIG. 3A shows an internal state of the
次に、メモリコントローラ1020はブロックX2000を消去し、ブロックX2000のページ状態値=FFFFに設定する。図3(b)はブロックX2000を消去が完了した時点のフラッシュメモリ1040及び不揮発性RAM1030の内部状態を示している。以上がブロッククリーンアップ処理である。これにより、データが未書込のページの総数は3個から5個に増える。
Next, the
次に、上記(5)に示したリードコマンドを受信すると、メモリコントローラ1020は、要求された論理アドレスLA0〜3を参照するため、図3(b)のアドレス変換テーブル1031から論理アドレスLA=0、1、2、3に対応する第1物理アドレスのページY0、Y1、Y2、Z0を検出し、これらの物理アドレスY0、Y1、Y2、Z0が指し示すページに格納されたデータA’、B’、C’、D”を読み出し、ホスト装置1100に送信する。これらは、各論理アドレスに最後に格納されたデータとなる。
Next, when receiving the read command shown in (5) above, the
次に上記(6)に示した論理アドレスLA=0〜3のリカバリコマンドを受信すると、メモリコントローラ1020は、図3(b)に示したアドレス変換テーブル1031から論理アドレスLA=0、1に対応する第1物理アドレスのページY0、Y1を検出し、さらに、論理アドレスLA=2、3に対応する第2物理アドレスのページZ1、Z2を検出し、これらの検出した物理アドレスが指すページに格納されたデータA’、B’、C、Dを読み出し、ホスト装置1100に送信する。これらは、スナップショットコマンドを受信した時点で各論理アドレスLAに格納されていたデータとなる。なお、論理アドレスLA=0、1のデータA’、B’はスナップショットコマンドを受信して以来更新されていないため、論理アドレスLA=0、1の第2物理アドレスは未設定であるため、第1物理アドレスのページを参照する。
Next, when receiving the recovery command of the logical address LA = 0-3 shown in (6) above, the
次に、上記(7)のスナップショット機能の解除コマンドを受信すると、メモリコントローラ1020は、スナップショットフラグ1033にOFFを設定する。これ以降のリードコマンドでは、各論理アドレスに最後に格納されたデータのみが読み出し可能になる。すなわち、アドレス変換テーブル1031の第1物理アドレスのみを参照し、第2物理アドレスを無効として、スナップショットデータの参照を禁止する。
Next, when the snapshot function cancel command (7) is received, the
図3(c)は上記(8)に示したデータB”のライトコマンドを実行した直後のフラッシュメモリ1040及び不揮発性RAM1030の内部状態を示したものである。論理アドレスLA=1に対するデータ「B”」のライトコマンドを受信すると、メモリコントローラ1020は、ページ状態レジスタ1032を参照して、ページ状態値=F(未書込)である1つのページZ3を選択し、このブロックZ2020のページ3にデータB”を書く。次に、メモリコントローラ1020は、アドレス変換テーブル1031から論理アドレスLA=1の第1物理アドレスであるY1を検知し、ページ状態レジスタ1032のY1のページ状態値を8(無効データ)に設定する。そして、アドレス変換テーブル1031の論理アドレスLA=1の第1物理アドレスに今回書き込みを行ったページの物理アドレス=Z3を設定し、ページ状態レジスタ1032のZ3のページ状態値を0(最新データ)に設定する。
3C shows the internal state of the
メモリコントローラ1020の書き込み処理は、ブロックの物理アドレスの先頭から末尾に向けて順次書き込みを行い、該当ブロックに空きページが無くなると、隣のブロックに書き込みを行う。このため、メモリコントローラ1020は、ブロックX2000は全てのページが書き込み可能ではあるが、現在書き込み中のブロックZ2020の空きページを消費する。
In the writing process of the
図3(d)は上記(9)に示した論理アドレスLA=2へデータC”のライトコマンドを実行した直後のフラッシュメモリ1040及び不揮発性RAM1030の内部状態を示したものである。論理アドレスLA=2へのライトコマンドを受信すると、メモリコントローラ1020は、ページ状態レジスタ1032を参照して、ページ状態値=F(未書込)である1つのページX0を選択し、このページX0にデータC”を書く。メモリコントローラ1020は、前回書き込みを行ったブロックZ2020に空きページが無いことから、次のブロックであるX2000のページ状態レジスタ1032を参照する。メモリコントローラ1020は、論理アドレスLA=0〜3に割り当てられたブロックX2000〜Z2020の空きページを循環して順次使用していくため、ブロックZ2020に空きページがなければ次のブロックX2000を参照する。
3D shows the internal state of the
次に、メモリコントローラ1020は、アドレス変換テーブル1031から論理アドレスLA=2の第1物理アドレス、第2物理アドレスであるY2、Z1を検知し、ページ状態レジスタ1032のY2、Z1のページ状態値を8(無効データ)に設定する。そして、アドレス変換テーブル1031の論理アドレスLA=2の第1物理アドレスに、新たに書き込んだデータC”の物理アドレス=X0を設定し、第2物理アドレスをクリアする。最後に、メモリコントローラ1020は、新たにデータC”を書き込んだページ状態レジスタ1032のX0のページ状態値を0(最新データ)に設定する。
Next, the
これにより、スナップショット機能を解除した後には更新直前のデータC’だけでなく、スナップショットデータDも無効化される。 As a result, not only the data C ′ immediately before the update but also the snapshot data D are invalidated after the snapshot function is canceled.
図4は、ホスト装置1100から受信したコマンドについて、メモリコントローラ1020が実行する処理手順を示すフローチャートである。以下、その手順を説明する。
FIG. 4 is a flowchart showing a processing procedure executed by the
まず、受信したコマンドが何であるかを判定する(4010)。 First, it is determined what the received command is (4010).
上記4010のコマンド判定結果がスナップショットコマンドならばスナップショットフラグ1033をONに設定し(4020)、コマンド処理を終える。
If the command determination result in 4010 is a snapshot command, the
上記4010のコマンド判定結果が通常動作開始コマンドならばスナップショットフラグ1033をOFFに設定し(4030)、コマンド処理を終える。
If the command determination result in 4010 is a normal operation start command, the
書き込んだコマンド判定結果がライトコマンドならば、ホスト装置1100からライトするためのデータを受信し(4040)、ページ状態値=Fのページを選択し、そのページに受信したデータを書く(4050)。このとき、未書き込みのページ状態値「F」の検索は、前回の書き込みの次のページから上記ブロックX2000〜Z2020へ向けて順次実行する。
If the written command determination result is a write command, data for writing from the
次に、スナップショットフラグ1033がONか調べ(4060)、結果が真(ON)ならばアドレス変換テーブル1031において書き込み先に指定された論理アドレスに対応する第2物理アドレスが未設定か否かを調べ(4070)、結果が真(未設定)ならばその論理アドレスに対応する第1物理アドレスの値を、この論理アドレスLAに対応する第2物理アドレスの欄にコピーする(4080)。そして、ページ状態レジスタ1032において上記第2物理アドレスが指すページのページ状態値を1に設定し、スナップショットであることを示す(4090)。次に、アドレス変換テーブル1031におけるこの論理アドレスに対応する第1物理アドレスの欄には、ステップ4050で受信データを書き込んだページの物理アドレスを設定し(4100)、ページ状態レジスタ1032においてこの論理アドレスLAの第1物理アドレスが指すページのページ状態値を0に設定する(4110)。この後、ブロッククリーンアップ処理を行い(4120)、コマンド処理を終える。
Next, it is checked whether the
一方、上記ステップ4060のスナップショット機能の判定結果が偽(OFF)、またはステップ4070の判定結果(スナップショットの設定の有無)が偽(設定済)ならば、ページ状態レジスタ1032において書き込み先の論理アドレスに対応する第1物理アドレスが指すページのページ状態値を8に設定する(4130)。そして、スナップショットフラグ1033がONか調べ(4140)、結果が真(ON)ならばステップ4100に遷移し、偽(OFF)ならばステップ4150に遷移する。
On the other hand, if the determination result of the snapshot function in
スナップショット機能が無効の場合のステップ4150では、アドレス変換テーブル1031において書き込み先論理アドレスに対応する第2物理アドレスが未設定かを調べ、結果が真(未設定)ならばステップ4100に遷移し、偽(設定済)ならばページ状態レジスタ1032においてその第2物理アドレスが指すページのページ状態値を8(無効データ)に設定し(4160)、アドレス変換テーブル1031における書き込み先論理アドレスに対応する第2物理アドレスの欄を未設定状態へとクリアする(4170)。
In
ステップ4170の後は、ステップ4100に遷移する。なお、ライトコマンドで書き込みたい論理アドレスの範囲が複数セクタに渡る場合は、ステップ4060以降の処理は各セクタ毎に行う。
After
ステップ4010のコマンド判定結果がリードコマンドならば、アドレス変換テーブル1031において本コマンドで指定された論理アドレスに対応する第1物理アドレスを検知し、そのアドレスが指すページからデータをリードする(4180)。そして、そのデータをホストへ送信し(4190)、コマンド処理を終える。
If the command determination result in
ステップ4010のコマンド判定結果がリカバリリードコマンドならば、スナップショットフラグ1033がONか調べ(4200)、結果が真(ON)ならばアドレス変換テーブル1031において本コマンドで指定された論理アドレスに対応する第2物理アドレスが未設定かを調べ(4210)、結果が偽(設定済)ならばその第2物理アドレスが指すページからデータをリードする(4220)。そして、そのデータをホストへ送信し(4190)、コマンド処理を終える。一方、ステップ4200の結果が偽(OFF)ならばホスト装置1100が要求するデータは送信不可能であるため、エラーとしてコマンド処理を終える。ステップ4210の結果が真(未設定)ならばステップ4180に遷移する。すなわち、通常のリードコマンドのように処理される。なお、リカバリリードコマンドで読み出したい論理アドレスの範囲が複数セクタに渡る場合は、ステップ4200以降の処理は各セクタ毎に行う。
If the command determination result in
図5は、図4における4120に示したブロッククリーンアップ処理4120の詳細な処理手順を示すフローチャートである。以下、その手順を説明する。
FIG. 5 is a flowchart showing a detailed processing procedure of the
まず、メモリコントローラ1020は、ページ状態レジスタ1032を参照して、ページ状態値=F(未書込)のページの総数が所定の値(例えば、3)以下になったかを調べる(5010)。結果が偽(所定値より大きい)ならば何もせずにそのまま処理を終える。一方、結果が真(所定値以下)ならば、ページ状態値=8(無効データ)であるページを最も多く含むブロックを1つ選択し、消去対象ブロックとする。選択した消去対象ブロック中にあるページ状態値=0(最新データ)またはページ状態値=1(スナップショットデータ)であるページを全て検出する(5020)。ここで検出したページ数をNとし、退避対象ページとする。そして、選択した消去対象ブロック以外のブロック上にあるページ状態値=Fの未書込ページをN個選択し、ステップ5020で検出した退避対象ページに格納されたデータを、それぞれ未書込ページの1つにコピー(退避)する(5030)。次に、ページ状態レジスタ1032において、ステップ5020で検出した各退避対象ページのページ状態値(0または1)を、ステップ5030で実行したデータのコピー先ページのページ状態値へコピーする(5040)。そして、ステップ5020で検出したページのページ状態値を全て8(無効データ)に設定する(5050)。次に、アドレス変換テーブル1031上に設定された全ての第1・第2物理アドレスの中から上記ステップ5020で検出した対象対象ページのアドレスを検索することにより、そのアドレスが設定された欄を検出し、検出した欄にステップ5030でコピーを実行したコピー先ページの物理アドレスを移動する(5060)。つまり、アドレス変換テーブル1031で、コピー元の論理アドレスLAに対応する第1物理アドレスと第2物理アドレスを、コピー先の論理アドレスLAに対応する第1物理アドレスと第2物理アドレスへ移動して、コピー元の物理アドレスの値を消去する。これにより、ステップ5020で選択した消去対象ブロック内の全ページが無効化され、当該ブロックに格納されていた保存すべきページデータの退避も完了する。
First, the
次に、ステップ5020で選択したブロックを消去する(5070)。なお、この消去は、ブロック内の全ページに所定値を書き込むことである。そして、ページ状態レジスタ1032において、消去対象ブロック内の全ページのページ状態値をF(未書込)に設定し(5080)、処理を終える。
Next, the block selected in
ここで、上記のアドレス変換テーブル1031の詳細な実装方法について言及する。アドレス変換テーブル1031上の第2物理アドレスの欄は、論理アドレスLAにより「設定済」であったり「未設定」であったりする。不揮発性RAM1030を用いてアドレス変換テーブル1031を実装するとき、第2物理アドレスの欄に相当する格納位置に何も値を書かないことは無論不可能である。そこで、「未設定」を意味する特別な値を定義し、その値を不揮発性RAM1030に書くことで、各第2物理アドレスが未設定であることを表現する。例えば、半導体記憶装置1000内のページを識別するのに必要な物理アドレスの範囲が31ビットの値で表現可能ならば、32ビットの値“FFFFFFFF(16進数)”を「未設定」を意味する値として定義する。以上により、第2物理アドレスの欄に相当する格納位置にこの値が設定されていたら、メモリコントローラ1020は「第2物理アドレスが未設定」と判断する。また、メモリコントローラ1020が第2物理アドレスの欄に相当する格納位置にこの値を設定することは、「第2物理アドレスをクリアする」ことを意味する。
Here, a detailed mounting method of the address conversion table 1031 will be described. The column of the second physical address on the address conversion table 1031 is “set” or “not set” depending on the logical address LA. When mounting the address conversion table 1031 using the
以上、本発明の実施形態の一つを説明したが、アドレス変換テーブル1031を拡張することによってスナップショット機能の高機能化も可能である。例えば、アドレス変換テーブル1031に第3〜第5物理アドレスの欄を追加すれば、最大4世代のスナップショットデータを管理することができる。その場合、リカバリリードコマンドを、世代を表すパラメータを与えられるように機能拡張して、ホスト装置1100が所望の世代のスナップショットデータを読み出しできるようにすることが好ましい。
Although one embodiment of the present invention has been described above, the snapshot function can be enhanced by extending the address conversion table 1031. For example, if a third to fifth physical address column is added to the address conversion table 1031, it is possible to manage a maximum of four generations of snapshot data. In this case, it is preferable to extend the function of the recovery read command so that a parameter indicating the generation is given so that the
さらに、本発明を適用した半導体記憶装置1000で行われるブロッククリーンアップ処理について、消去するブロックの決定条件は上記の「含まれる無効ページの数が最大であること」だけに限らない。フラッシュメモリの各ブロックが消去された回数をカウントして「消去回数が最小であること」を条件にしてもよく、様々な条件を適用することが可能である。
Furthermore, in the block cleanup process performed in the
さらに、上に述べたスナップショット機能の開始を指示するのはホスト装置1100からのコマンドによるものに限らない。半導体記憶装置1000自身が自らの判断で開始することも可能である。例えば、フラッシュメモリの各ブロックの消去回数が非常に多くなることで記憶装置としての残り寿命がもはや短いとメモリコントローラ1020が判断したときに、スナップショットフラグ1033を自動的にONにしてもよい。
Further, the start of the snapshot function described above is not limited to a command from the
さらに、上記第1の実施形態では、ホスト装置1100が最新データとスナップショットデータをそれぞれ読み出すために、リードコマンドとリカバリリードコマンドの2種類が備えられていたが、この方式に限らない。例えば、通常のリードコマンドとリードデータ選択コマンドの2種類を用いる方式も可能である。その場合、リードデータ選択コマンドで読みたいデータを最新またはスナップショットの2つから1つ選択した後、通常のリードコマンドでそれを読む。
Further, in the first embodiment, two types of read command and recovery read command are provided in order for the
<第2実施形態>
本第2実施形態は最大3世代のスナップショットデータを管理することができる半導体記憶装置を開示する。第1の実施形態でも複数世代のスナップショットデータが管理できることについて言及したが、本第2実施形態ではアドレス変換テーブル1031、ページ状態レジスタ1032、スナップショットフラグ1033の構成や使用方法を第1の実施形態に対して変更し、また、メモリコントローラ1020は取得した複数のスナップショットのうち指定した世代番号のものを個別に解放するためのコマンドを解釈する点が前記第1実施形態と異なる。その他の構成は、前記第1実施形態である。
<Second Embodiment>
The second embodiment discloses a semiconductor memory device that can manage snapshot data of up to three generations. In the first embodiment, it has been mentioned that snapshot data of a plurality of generations can be managed. In the second embodiment, the configuration and usage of the address translation table 1031, the
本発明を適用した半導体記憶装置の簡単な内部構成は、第1の実施形態と同じく図1で表される。以下、第1の実施形態とは異なる部分について説明する。 A simple internal configuration of a semiconductor memory device to which the present invention is applied is shown in FIG. 1 as in the first embodiment. Hereinafter, a different part from 1st Embodiment is demonstrated.
本第2の実施形態におけるメモリコントローラ1020が解釈可能な5種類のコマンドとその機能を以下に示す。
The five types of commands that can be interpreted by the
・リードデータ選択コマンド…リードコマンドで読み出すデータの種類(世代)を、最新/第N世代スナップショット(N=0〜3)の中から選択する。ただし、世代番号Nの大小は世代の新旧とは必ずしも一致しない。 Read data selection command: Selects the type (generation) of data read by the read command from the latest / Nth generation snapshots (N = 0 to 3). However, the generation number N is not necessarily the same as the generation.
・リードコマンド…指定した論理アドレスにこれまでに格納されてきたデータのうち、リードデータ選択コマンドで選択している種類のものを読み出す。 Read command: Reads data of the type selected by the read data selection command from the data stored so far at the specified logical address.
・ライトコマンド…指定した論理アドレスに最新のデータを書き込む。 • Write command: Writes the latest data to the specified logical address.
・スナップショット取得コマンド…その時点での各論理アドレスに格納されているデータを、後で読み出しできるようにする。スナップショットの取得に成功した場合にはリードデータ選択コマンドやスナップショット解放コマンドで用いる世代番号を返す。 Snapshot acquisition command: The data stored at each logical address at that time can be read later. If the snapshot acquisition is successful, the generation number used in the read data selection command and snapshot release command is returned.
・スナップショット解放コマンド…指定した世代番号のスナップショットデータを廃棄し、それ以降読み出せないようにする。 -Snapshot release command: Discards the snapshot data of the specified generation number so that it can no longer be read.
第2の実施形態におけるアドレス変換テーブル1031では、1つの論理アドレスに対して4つの物理アドレス(以降、第1物理アドレス、第2物理アドレス、第3物理アドレス、第4物理アドレスと呼ぶ)を対応付ける。第1物理アドレスは、その論理アドレスに最後に書かれたデータ(最新データ)の格納位置(物理アドレス)を格納する。第2〜4物理アドレスは、ホスト装置1100がスナップショット取得コマンドを受信した時点における各論理アドレスに格納されていた最新のデータの格納位置を世代毎に格納する。本第2実施形態では、メモリコントローラ1020が管理するスナップショットの世代は、最大3世代まで示すことができるものとする。
In the address conversion table 1031 in the second embodiment, four physical addresses (hereinafter referred to as a first physical address, a second physical address, a third physical address, and a fourth physical address) are associated with one logical address. . The first physical address stores a storage position (physical address) of data (latest data) written last in the logical address. The second to fourth physical addresses store the storage positions of the latest data stored in the respective logical addresses at the time when the
第2の実施形態におけるページ状態レジスタ1032が格納するページ状態としては以下の4通りを定義する。なお、各状態値は16進数表記である。
The following four types of page states stored in the
・状態値=0…ホスト装置1100が読み出し可能な有効データが格納されている状態
・状態値=8…もはや必要のない無効データが格納されている状態
・状態値=F…そのページを含むブロックが消去されて以来、データが未書込である状態
第2の実施形態におけるスナップショットフラグ1033は、スナップショットの世代番号(1〜3)毎にその世代が取得済み(ON)か解放済み(OFF)かを3世代分管理する。
State value = 0: State in which valid data that can be read by the
さらに、第2の実施形態のメモリコントローラ1020は揮発性RAMを搭載し、ホスト装置1100がリードデータ選択コマンドで選択した種類(世代:N=0〜3)を一時的にその揮発性RAMの一部の領域に保持する。以下、揮発性RAMのその領域をリードデータ選択レジスタと呼ぶ。リードデータ選択レジスタが格納する種類値(世代の指定値)としては以下の4通りを定義する。なお、リードデータ選択レジスタは半導体記憶装置1000の電源投入直後は種類値=0に初期化される。
・種類値=0…最新データ(初期値)
・種類値=1…第1世代スナップショットデータ
・種類値=2…第2世代スナップショットデータ
・種類値=3…第3世代スナップショットデータ
図6および図7は、本発明を適用した半導体記憶装置1000においてスナップショット機能を利用するときに、メモリコントローラ1020が行うメモリ管理方法を説明するため、フラッシュメモリ1040内の格納データ、アドレス変換テーブル1031、ページ状態レジスタ1032、スナップショットフラグ1033、それぞれの内容の変化の一例を示したものである。図6(a)から始まり、図6(b)、図6(c)、図6(d)、図6(e)、図7(a)、図7(b)、図7(c)、図7(d)と遷移して、図7(e)で終わる。
Furthermore, the
・ Type value = 0 ... Latest data (initial value)
Type value = 1: 1st generation snapshot data Type value = 2: 2nd generation snapshot data Type value = 3: 3rd generation snapshot data FIGS. 6 and 7 show semiconductor memory to which the present invention is applied. In order to explain the memory management method performed by the
図示の例では、説明を簡単化するため、ホスト装置1100から指定可能な論理アドレスはセクタ単位(1セクタ=512バイト)として、その範囲を0〜3の4セクタ分に限定する。また、データの読み書きにメモリチップ1041〜1043内の3個のブロック(ブロックX2000、ブロックY2010、ブロックZ2020)のみを使用することとする。さらに、メモリチップ内の各ブロック2000〜2020は、それぞれ4つのページで構成され、各ページのサイズは512バイト(1セクタ)であるものとする。各ページは0〜3の数字で表し、ページの絶対的な物理アドレスをX3、Y0、Z1のように略記する。なお、アドレス変換テーブル1031において、LAは論理アドレス、第1PAは第1物理アドレス、第2PAは第2物理アドレス、第3PAは第3物理アドレスを意味する。なお、第4PA(第4物理アドレス)は存在するが本説明に用いないため図示を省略する。
In the illustrated example, in order to simplify the explanation, the logical address that can be specified from the
なお、第1物理アドレスは、複数の論理アドレス毎に対応するページの物理アドレスをそれぞれ格納するもので、各物理アドレスは最新データを格納したページを示す。また、第2物理アドレスは、複数の論理アドレス毎に対応するページの物理アドレスをそれぞれ格納するもので、各物理アドレスは第1世代のスナップショットを格納したページを示す。また、第3物理アドレスは、複数の論理アドレス毎に対応するページの物理アドレスをそれぞれ格納するもので、各物理アドレスは第2世代のスナップショットを格納したページを示す。また、第4物理アドレスは、複数の論理アドレス毎に対応するページの物理アドレスをそれぞれ格納するもので、各物理アドレスは第4世代のスナップショットを格納したページを示す。なお、第1物理アドレスが最新データのページの物理アドレスを角のする第1物理アドレスグループとなり、第2〜第4物理アドレスがスナップショットの物理アドレスを世代毎に格納する第2物理アドレスグループとなる。 The first physical address stores a physical address of a page corresponding to each of a plurality of logical addresses, and each physical address indicates a page storing the latest data. The second physical address stores a physical address of a page corresponding to each of a plurality of logical addresses, and each physical address indicates a page storing a first generation snapshot. The third physical address stores a physical address of a page corresponding to each of a plurality of logical addresses, and each physical address indicates a page storing a second generation snapshot. The fourth physical address stores a physical address of a page corresponding to each of a plurality of logical addresses, and each physical address indicates a page storing a fourth generation snapshot. The first physical address is a first physical address group that corners the physical address of the page of the latest data, and the second to fourth physical addresses are a second physical address group that stores the physical address of the snapshot for each generation. Become.
はじめに、スナップショットは全く未取得であるとし、図6(a)のように、物理ページアドレスのX0、X1、X2、X3の位置に、それぞれ論理アドレス0、1、2、3に対応するデータA、B、C、Dが既に格納されているものとする。なお、論理アドレス0,1,2,3は、メモリコントローラ1020によって割り当てられたものである。また、ブロックY2010およびブロックZ2020は消去済みで、どのページもデータが未書込とする。
First, it is assumed that no snapshot has been acquired, and data corresponding to
このとき、アドレス変換テーブル1031において論理アドレスLA=nの各第1物理アドレズにはXn(n=0〜3)が設定され、どの論理アドレスも第2〜4物理アドレスが未設定であり、ページ状態レジスタ1032におけるブロックX、Y、Zのページ状態値はそれぞれ“0000”、“FFFF”、“FFFF”に設定され、スナップショットフラグ1033は3世代ともOFFに設定されている。
At this time, Xn (n = 0 to 3) is set to each first physical address of the logical address LA = n in the address conversion table 1031, the second to fourth physical addresses are not set for any logical address, and the page The page status values of the blocks X, Y, and Z in the
また、リードデータ選択レジスタには「最新」を意味する種類値=0が設定されている。これは、リードコマンドで最新のデータが読み出し可能な状態である。 The read data selection register is set with a type value = 0 indicating “latest”. This is a state in which the latest data can be read by the read command.
この状態から、ホスト装置1100から以下の順で半導体記憶装置1000にコマンドを発行することとする。
From this state, the
(1)論理アドレスLA=0、1にそれぞれデータA’、B’を書くライトコマンド
(2)スナップショット取得コマンド(第1世代)
(3)論理アドレスLA=2、3にそれぞれデータC’、D’を書くライトコマンド
(4)スナップショット取得コマンド(第2世代)
(5)論理アドレスLA=3にデータD’’を書くライトコマンド
(6)第1世代スナップショットを選択するリードデータ選択コマンド
(7)論理アドレスLA=0〜3のデータを読むリードコマンド
(8)第2世代スナップショットを選択するリードデータ選択コマンド
(9)論理アドレスLA=0〜3のデータを読むリードコマンド
(10)最新データを選択するリードデータ選択コマンド
(11)論理アドレスLA=0〜3のデータを読むリードコマンド
(12)第2世代を解放するスナップショット解放コマンド
(13)論理アドレスLA=2にデータC’’を書くライトコマンド
(14)第1世代を解放するスナップショット解放コマンド
(15)論理アドレスLA=3にデータD’’’を書くライトコマンド
図6(b)は上記(1)のライトコマンドを受信して処理を実行した直後のフラッシュメモリ1040及び不揮発性メモリ1030の内部状態を示したものである。ライトコマンド(1)を受信すると、メモリコントローラ1020は、ページ状態レジスタ1032を参照して、論理アドレスLA=0、1に対応するブロックX2000のページが状態値=0となっており、既に最新のデータが書き込まれているので、同一の論理アドレスLAに対応する次のブロックであるブロックY2010のページ状態レジスタ1032を参照し、状態値=F(未書込)である2つのページY0、Y1を選択し、そこにそれぞれデータA’、B’を書き込む。なお、各ブロックへのデータの書き込みは、前記第1実施形態と同様に、各ブロック内の空きセクタへ所定の順序で行うもので、例えば、図6(b)では各ブロックの空きページの順に書き込む。
(1) Write command for writing data A ′ and B ′ at logical addresses LA = 0 and 1 respectively (2) Snapshot acquisition command (first generation)
(3) Write command for writing data C ′ and D ′ at logical addresses LA = 2 and 3 respectively (4) Snapshot acquisition command (second generation)
(5) Write command for writing data D ″ at logical address LA = 3 (6) Read data selection command for selecting first generation snapshot (7) Read command for reading data at logical address LA = 0-3 (8) ) Read data selection command for selecting second generation snapshot (9) Read command for reading data at logical address LA = 0 to 3 (10) Read data selection command for selecting latest data (11) Logical address LA = 0 to 0 3. Read command for reading 3 data (12) Snapshot release command for releasing second generation (13) Write command for writing data C ″ to logical address LA = 2 (14) Snapshot release command for releasing first generation (15) Write command for writing data D ′ ″ at logical address LA = 3 FIG. ) Is a write command shows the internal state of the
次に、メモリコントローラ1020は、アドレス変換テーブル1031から論理アドレスLA=0、1の各第1物理アドレスであるX0、X1を検知し、これらのブロックX2000のページ1、2は既に最新のデータが書き込まれたので、ページ状態レジスタ1032のX0、X1のページ状態値を8(無効データ)に設定する。そして、メモリコントローラ1020はアドレス変換テーブル1031の論理アドレスLA=0、1に対応する各第1物理アドレスに最新のデータを書き込んだブロックY2010の物理アドレスにY0、Y1を設定し、ページ状態レジスタ1032のY0、Y1に対応するページ状態値を0(有効データ)に設定する。
Next, the
次に、上記(2)のスナップショット取得コマンドを受信すると、メモリコントローラ1020は、アドレス変換テーブル1031の全論理アドレスLAについて、各論理アドレスLAの第1物理アドレスの内容をその第2物理アドレスの欄に複写する。その結果、これら第2物理アドレスは第1世代のスナップショットデータの格納先を示す。そして、メモリコントローラ1020は、スナップショットフラグ1033の世代1をONに設定し、世代番号「1」をホスト装置1100に返す。
Next, when the snapshot acquisition command (2) is received, the
図6(c)は上記(3)のライトコマンドを実行した直後の内部状態を示したものである。スナップショット取得コマンドを受信すると、メモリコントローラ1020は、ページ状態レジスタ1032を参照して、状態値=F(未書込)である2つのページY2、Y3を選択し、これらのページY2,Y3にそれぞれデータC’、D’を書く。なお、第2物理アドレスには、上記(2)のスナップショット取得コマンドによる、第1物理アドレスの値が第1世代のスナップショットとして格納されている。
FIG. 6C shows the internal state immediately after the execution of the write command (3). When the snapshot acquisition command is received, the
次に、メモリコントローラ1020は、アドレス変換テーブル1031で、論理アドレスLA=2、3の各第1物理アドレスの欄にあるX2、X3がそれぞれ第1世代のスナップショットデータを格納していることを第2物理アドレスから検出する。よって、メモリコントローラ1020は、第2物理アドレスのX2、X3のページ状態値は0(有効データ)のままにする。そして、アドレス変換テーブル1031の論理アドレスLA=2、3に対応する各第1物理アドレスに上記(3)のライトコマンドで書き込んだC’,D’に対応するY2、Y3を設定し、ページ状態レジスタ1032のY2、Y3のページ状態値を0(有効データ)に設定する。
Next, the
次に、上記(4)のスナップショット取得コマンドを受信すると、メモリコントローラ1020は、アドレス変換テーブル1031の全論理アドレスLAについて、各論理アドレスLAの第1物理アドレスの内容を第3物理アドレスの欄に複写する。その結果、これら第3物理アドレスは第2世代スナップショットデータの格納先を示す。そして、メモリコントローラ1020は、スナップショットフラグ1033の世代2をONに設定し、世代番号=2をホスト装置1100に返す。
Next, when receiving the snapshot acquisition command (4) above, the
次に、上記(5)のライトコマンドを受信すると、メモリコントローラ1020は、ページ状態レジスタ1032を参照し、状態値=F(未書込)であるページZ0を選択し、このページZ0にデータD’’を書く。次に、メモリコントローラ1020は、アドレス変換テーブル1031を参照し、論理アドレスLA=3の第1物理アドレスの欄にあるY3が第2世代スナップショットデータを格納していることを第3物理アドレスのLA=3にY3があることから検出する。よって、メモリコントローラ1020は、ページ状態レジスタ1033のY3のページ状態値は0(有効データ)のままにする。そして、メモリコントローラ1020はアドレス変換テーブル1031の論理アドレスLA=3の第1物理アドレスにZ0を設定し、ページ状態レジスタ1032のZ0のページ状態値を0(有効データ)に設定する。図6(d)は、上記(5)のライトコマンドを実行した直後の内部状態を示している。なお、図6(d)で第3物理アドレスには、上記(4)のスナップショット取得コマンドによって書き込まれた第2世代のスナップショットのページが格納され、スナップショットフラグ1033は、第2世代がONに設定される。
Next, when the write command (5) is received, the
さて、ここでメモリコントローラ1020は、データが未書込のページの総数が所定数(例えば、3個)以下になったことを契機として、未書込のページの総数を増やすため、以下のようなブロッククリーンアップ処理を行う。
Now, the
まず、メモリコントローラ1020は、ページ状態レジスタ1032を参照して、ページ状態値=8(無効データ)のページを最も多く含むブロックXを選択し、そのブロックX内で保存が必要なデータを格納したページをアドレス変更テーブル1031から検索し、ページ状態値=0である2つのページX2、X3を第2物理アドレスから検出する。次に、メモリコントローラ1020はページX2,X3の各格納データC、Dをページ状態値=F(未書込)のページZ1、Z2にコピーし、Z1、Z2のページ状態値を0(有効データ)に設定し、X2、X3のページ状態値を8(無効データ)に設定する。
First, the
そして、メモリコントローラ1020はアドレス変換テーブル1031でX2、X3が設定されている2つの欄を検索し、第2物理アドレスの該当欄に移動したデータC、DのページZ1、Z2を設定する。
Then, the
これにより、ブロックX2000は、保存が必要な格納データが別ブロックに退避され、全ページに無効データが格納された状態になる。図6(e)は、上記ブロッククリーンアップ処理によるデータの移動が完了した時点の内部状態を示している。 As a result, in the block X2000, storage data that needs to be saved is saved in another block, and invalid data is stored in all pages. FIG. 6E shows the internal state at the time when the data movement by the block cleanup process is completed.
次に、メモリコントローラ1020は、全てが無効データとなったブロックXの内容を消去し、ブロックXのページ状態値=FFFFに設定する。図7(a)はブロッククリーンアップ処理が完了した時点の内部状態を示している。以上がブロッククリーンアップ処理である。これにより、データが未書込のページの総数は図6(d)の3個から5個に増える。
Next, the
次に、上記(6)の第1世代のスナップショットを選択するリードデータ選択コマンドを受信すると、メモリコントローラ1020は、リードデータ選択レジスタに種類値=1を設定する。
Next, when the read data selection command for selecting the first generation snapshot of (6) is received, the
次に、上記(7)の論理アドレスLA=0〜3に対するリードコマンドを受信すると、メモリコントローラ1020は、リードデータ選択レジスタに設定された種類値が1であることからアドレス変換テーブル1031より論理アドレスLA=0、1、2、3に対応する第1世代のスナップショットを指し示す第2PAのページY0、Y1、Z1、Z2を検出し、これらのページに格納されたデータA’、B’、C、Dを読み出し、ホスト装置1100に送信する。これらは、図6(b)の時点で各論理アドレスLA=0〜3に格納されていたデータのスナップショットである。
Next, when the read command for the logical address LA = 0 to 3 in (7) is received, the
次に、上記(8)の第2世代のスナップショットを選択するリードデータ選択コマンドを受信すると、メモリコントローラ1020は、リードデータ選択レジスタに種類値=2を設定する。
Next, when the read data selection command for selecting the second generation snapshot of (8) is received, the
次に、上記(9)の論理アドレスLA=0〜3に対するリードを受信すると、メモリコントローラ1020は、リードデータ選択レジスタに設定された種類値=2であることからアドレス変換テーブル1031より論理アドレスLA=0、1、2、3の第2世代のスナップショットに対応する第3物理アドレスのページY0、Y1、Y2、Y3を検出し、それらのページに格納されたデータA’、B’、C’、D’を読み出し、ホスト装置1100に送信する。これらは、図6(c)時点で各論理アドレスに格納されていたデータのスナップショットである。
Next, when the read for the logical address LA = 0 to 3 in (9) is received, the
次に、上記(10)の最新のデータを選択するリードデータ選択コマンドを受信すると、メモリコントローラ1020は、リードデータ選択レジスタに種類値=0を設定する。
Next, when the read data selection command for selecting the latest data of (10) is received, the
そして、上記(11)の論理アドレスLA=0〜3に対するリードコマンドを受信すると、メモリコントローラ1020は、リードデータ選択レジスタに設定された種類値が0であるので、アドレス変換テーブル1031から論理アドレスLA=0、1、2、3の最新データに対応する第1PAのページY0、Y1、Y2、Z0を検出し、それらのページに格納されたデータA’、B’、C’、D’’を読み出し、ホスト装置1100に送信する。これらは、各論理アドレスに格納されている最新データである。
When the
図7(b)は上記(12)の第2世代のスナップショットを解放するスナップショット解放コマンドを実行した直後の内部状態を示したものである。上記(12)でスナップショット解放コマンドを受信すると、メモリコントローラ1020は、第2世代スナップショットデータを格納しているページを検出するため、アドレス変換テーブル1031から論理アドレスLA=0、1、2、3の第2世代のスナップショットに対応する第3物理アドレスのページY0、Y1、Y2、Y3を図7(a)の状態から取得する。第3物理アドレスのうちページY3以外は第1物理アドレスまたは第2物理アドレスにも登録されており、最新または第1世代スナップショットデータを格納しているため、無効ページにはならない。よってメモリコントローラ1020は、Y3だけを無効ページにするべく、ページ状態レジスタ1032のY3のページ状態を8(無効データ)に設定する。次に、メモリコントローラ1020はアドレス変換テーブル1031の全ての論理アドレスLAについて第3物理アドレスの欄をクリアする。最後に、メモリコントローラ1020は、スナップショットフラグ1033の世代=2をOFFに設定する。
FIG. 7B shows the internal state immediately after the execution of the snapshot release command for releasing the second generation snapshot of (12) above. When the snapshot release command is received in (12) above, the
図7(c)は上記(13)の論理アドレスLA=2にデータC”を書き込むライトコマンドを実行した直後の内部状態を示したものである。上記(13)のライトコマンドを受信すると、メモリコントローラ1020は、ページ状態レジスタ1032を参照して、状態値=F(未書込)であるページZ3を選択し、そこにデータC”を書き込む。次に、メモリコントローラ1020は、アドレス変換テーブル1031を検索して、論理アドレスLA=2の第1物理アドレスの欄にあるY2(図7(b)参照)がどの世代のスナップショットデータも格納していないことを検出する。よって、メモリコントローラ1020はページ状態レジスタ1032のY2のページ状態値を8(無効データ)に設定する。そして、アドレス変換テーブル1031のLA=2の第1物理アドレスにZ3を設定し、Z3のページ状態値を0(有効データ)に設定する。
FIG. 7C shows the internal state immediately after executing the write command for writing the data C ″ to the logical address LA = 2 in (13). When the write command in (13) is received, the memory The
図7(d)は上記(14)の第1世代のスナップショットを解放するスナップショット解放コマンドを実行した直後の内部状態を示したものである。上記(14)のスナップショット解放コマンドを受信すると、メモリコントローラ1020は、第1世代スナップショットデータを格納しているページを検知するため、アドレス変換テーブル1031から論理アドレスLA=0、1、2、3に対応する第2物理アドレスのページY0、Y1、Z1、Z2を検出する。このうちページY0とY1は第1物理アドレスにも登録されており、第1物理アドレスでは最新データを格納しているため、無効ページにはならない。よって第2物理アドレスのページZ1とZ2を無効ページにするべく、ページ状態レジスタ1032のZ1とZ2のページ状態を8(無効データ)に設定する。次に、メモリコントローラ1020は、アドレス変換テーブル1031の全ての論理アドレスLAについて第2物理アドレスの欄をクリアする。最後に、メモリコントローラ1020はスナップショットフラグ1033の世代=1をOFFに設定する。
FIG. 7D shows the internal state immediately after executing the snapshot release command for releasing the first generation snapshot of (14) above. When the snapshot release command (14) is received, the
図7(e)は上記(15)の論理アドレスLA=3にデータD”’を書き込むライトコマンドを実行した直後の内部状態を示したものである。上記(15)のライトコマンドを受信すると、メモリコントローラ1020は、ページ状態レジスタ1032を参照して、状態値=F(未書込)であるページX0を選択し、このページX0にデータD”’を書き込む。次に、メモリコントローラ1020はアドレス変換テーブル1031を参照し、論理アドレスLA=3の第1物理アドレスでの欄にあるページZ0がどの世代のスナップショットデータも格納していないことを検出する(図7(d)の状態)。よって、メモリコントローラ1020はページ状態レジスタ1032のZ0のページ状態値を8(無効データ)に設定する。そして、アドレス変換テーブル1031の論理アドレスLA=3の第1物理アドレスにページX0を設定し、X0のページ状態値を0(有効データ)に設定する。
FIG. 7E shows the internal state immediately after executing the write command for writing the data D ″ ′ to the logical address LA = 3 in (15). When the write command in (15) is received, The
図8は、ホスト装置1100から受信したコマンドについて、メモリコントローラ1020が実行する処理手順を示すフローチャートである。以下、その手順を説明する。
FIG. 8 is a flowchart showing a processing procedure executed by the
まず、メモリコントローラ1020は受信したコマンドが何であるかを判定する(8010)。
First, the
上記のコマンド判定結果がスナップショット取得コマンドならば、メモリコントローラ1020はスナップショットフラグ1033からOFF状態のエントリを検索する(8110)。ステップ8120でOFF状態のフラグが存在しないならば、スナップショットの許容回数を超えたとして、ホスト装置1100に取得失敗のエラーを返してコマンド処理を終える。
If the command determination result is a snapshot acquisition command, the
一方、OFF状態のフラグ(第Mとする)が存在するならば、アドレス変換テーブル1031の全ての論理アドレスLAについて、第1物理アドレスの内容を第(M+1)物理アドレスの欄にコピーする(8130)。そして、スナップショットフラグ1033の世代MをONに設定し(8140)、このたび取得したスナップショットに割り当てられた世代番号Mをホスト装置1100に返し(8150)、コマンド処理を終える。
On the other hand, if there is an OFF flag (M-th), the contents of the first physical address are copied to the (M + 1) th physical address column for all logical addresses LA in the address conversion table 1031 (8130). ). Then, the generation M of the
ステップ8010でコマンド判定結果がスナップショット解放コマンドならば、そのコマンドに付加されたパラメータ(種類値)からホスト装置1100が解放したい世代番号(Mとする)を抽出する。ステップ8210でスナップショットフラグ1033の世代MがOFFに設定されていれば(つまり解放済みならば)ホスト装置1100に解放失敗のエラーを返してコマンド処理を終える。一方、スナップショットフラグ1033の世代MがONに設定されていれば、アドレス変換テーブル1031の全ての論理アドレスLAについて、次の処理を行う(8220)。
If the command determination result in
メモリコントローラ1020は、「各論理アドレスLAに対応する全ての物理アドレスにおいて、第(M+1)物理アドレスの値が、それ以外のどの物理アドレスの値とも重複しないならば、第(M+1)物理アドレスのページ状態をページ状態レジスタ1032において8(無効データ)に設定する。」
次に、アドレス変換テーブル1031の全ての論理アドレスLAについて、第(M+1)物理アドレスの欄をクリアする(8230)。最後に、スナップショットフラグ1033の世代MをOFFに設定し(8240)、コマンド処理を終える。
The
Next, the column of the (M + 1) th physical address is cleared for all logical addresses LA in the address conversion table 1031 (8230). Finally, the generation M of the
ステップ8010でコマンド判定結果がライトコマンドならば、ライト処理8310(詳細は図9(a)参照)を行い、コマンド処理を終える。
If the command determination result in
ステップ8010でコマンド判定結果がリードデータ選択コマンドならば、そのコマンドに付加されたパラメータ(種類値)からホスト装置1100がリードコマンドで要求するリードデータの種類(最新または第1〜3世代スナップショットのいずれか)を取得する(8410)。そして、その種類を識別する種類値をリードデータ選択レジスタに設定し(8420)、コマンド処理を終える。
If the command determination result in
ステップ8010でコマンド判定結果がリードコマンドならば、リード処理8510(詳細は図9(b)参照)を行い、コマンド処理を終える。
If the command determination result in
図9(a)は、メモリコントローラ1020が上記図8のライト処理8310で実行する処理手順を示すフローチャートである。以下、その手順を説明する。
FIG. 9A is a flowchart showing a processing procedure executed by the
まず、ホスト装置1100からライトデータを受信し(9010)、ページ状態レジスタ1032でページ状態値=Fのページを選択し、そのページに前記受信したデータをライトする(9020)。
First, write data is received from the host device 1100 (9010), a page with a page status value = F is selected by the
次に、アドレス変換テーブル1031において、本ライトコマンドで指定された論理アドレスに対応する全ての物理アドレスを検出し、そのうち第1物理アドレスでの値(更新前のデータを格納したページのアドレス)がそれ以外のどの物理アドレスの値とも重複しないか(つまりスナップショットデータになっていないか)を検索する(9030)。この検索結果が偽(重複する)ならばステップ9050に移る。一方、検索結果が真(重複しない)ならば、ページ状態レジスタ1032において、指定された論理アドレスに対応する第1物理アドレスのページ状態を8(無効データ)に設定する(9040)。次に、アドレス変換テーブル1031において、指定された論理アドレスに対応する第1物理アドレスの欄にステップ9020でライトしたページのアドレス(更新後のデータを格納したページのアドレス)を設定する(9050)。そして、ページ状態レジスタ1032において、その新しい第1物理アドレスが示すページのページ状態を0(有効データ)に設定する。最後にブロッククリーンアップ処理9070(詳細は図10参照)を実行する。
Next, in the address conversion table 1031, all physical addresses corresponding to the logical address specified by this write command are detected, and the value at the first physical address (the address of the page storing the data before update) is detected. A search is made as to whether any other physical address value does not overlap (that is, whether it is snapshot data) (9030). If this search result is false (duplicate), the process proceeds to step 9050. On the other hand, if the search result is true (not duplicated), the page status of the first physical address corresponding to the designated logical address is set to 8 (invalid data) in the page status register 1032 (9040). Next, in the address conversion table 1031, the address of the page written in step 9020 (the address of the page storing the updated data) is set in the first physical address column corresponding to the designated logical address (9050). . Then, the
図9(b)は、メモリコントローラ1020が図8のリード処理8510で実行する処理手順を示すフローチャートである。以下、その手順を説明する。
FIG. 9B is a flowchart showing a processing procedure executed by the
まず、リードデータ選択レジスタに設定された種類値が「最新」(=0)を示しているかを調べ(9110)、結果が真(最新)ならば、アドレス変換テーブル1031において、本リードコマンドで指定された論理アドレスに対応する第1物理アドレスに格納されたデータをリードし(9150)、ホスト装置1100へリードデータを送信する(9140)。一方、結果が偽(スナップショット)ならば、選択された世代番号(Nとする)について、スナップショットフラグ1033の世代NがONか(スナップショットが取得済みか)を調べる(9120)。スナップショットフラグ1033の世代NがOFFならばホスト装置1100にリードエラーを返してリード処理を終える。スナップショットフラグ1033の世代NがONならば、指定された論理アドレスに対応する第(N+1)PAに格納されたデータをリードし(9130)、ホスト装置1100へリードデータを送信する(9140)。
First, it is checked whether or not the type value set in the read data selection register indicates “latest” (= 0) (9110). If the result is true (latest), it is designated by this read command in the address conversion table 1031. The data stored in the first physical address corresponding to the logical address thus read is read (9150), and the read data is transmitted to the host device 1100 (9140). On the other hand, if the result is false (snapshot), it is checked whether the generation N of the
図10は、上記図9(a)におけるブロッククリーンアップ処理9070の詳細な処理手順を示すフローチャートである。以下、その手順を説明する。
FIG. 10 is a flowchart showing a detailed processing procedure of the
まず、メモリコントローラ1020は、ページ状態レジスタ1032を参照して、ページ状態値=F(未書込)のページの総数が所定の値以下になったかを判定する(10010)。判定結果が偽(所定値より大きい)ならば何もせずにそのまま処理を終える。一方、判定結果が真(所定値以下)ならば、ページ状態値=8(無効データ)であるページを最も多く含むブロックを1つ選択し、その中にあるページ状態値=0(有効データ)である有効ページを全て検出する(10020)。検出した有効ページ数をPとする。そして、選択したブロック以外のブロック上にあるページ状態値=Fの未書込ページをP個選択し、上記ステップ10020で検出した有効ページに格納されたデータを、それぞれ未書込ページの1つにコピー(退避)する(10030)。次に、ページ状態レジスタ1032において、ステップ10030でのそれぞれのコピー先ページのページ状態値を0に設定する(10040)。そして、ステップ10020で検出した有効ページのページ状態値を全て8(無効データ)に設定する(10050)。そして、アドレス変換テーブル1031上に設定された全ての物理アドレスの中からステップ10020で検出した有効ページのアドレスを検索することにより、そのアドレスが設定された欄を特定し、これらの特定された欄に上記ステップ10030でのそれぞれのコピー先ページの物理アドレスをコピーする(10060)。これにより、ステップ10020で選択したブロック内の全ページが無効化され、そこに格納されていた保存すべきページデータの退避も完了する。
First, the
次に、ステップ10020で選択したブロックを消去する(10070)。そして、ページ状態レジスタ1032において、そのブロック内の全ページのページ状態値をF(未書込)に設定し(10080)、処理を終える。
Next, the block selected in
ここで、上記のアドレス変換テーブル1031の詳細な実装方法について言及する。アドレス変換テーブル1031上の第2〜4物理アドレスの欄は、スナップショットの解放により「未設定」状態になるが、第1の実施形態と同様に「未設定」を意味する特別な値(“FFFFFFFF(16進数)”など)を定義し、その値を不揮発性RAM1030に書き込んで「未設定」状態にしてもよいが、スナップショットフラグ1033のある世代Nが解放済み(OFF)ならば、第(N+1)物理アドレスは「未設定」状態であることが判断できるため、アドレス変換テーブル1031で「未設定」状態を明示する必要はなく、書かれている無用なアドレス値をそのまま放置してもよい。すなわち図8のステップ8230は省略してもよい。ただし、その場合はアドレス変換テーブル1031での各アドレス検索処理(図8の8220、図9の9030、図10の10060)において、その無用アドレス値を検索対象から除外する。
Here, a detailed mounting method of the address conversion table 1031 will be described. The fields of the second to fourth physical addresses on the address conversion table 1031 are set to the “unset” state by releasing the snapshot, but as in the first embodiment, a special value (“ FFFFFFFF (hexadecimal number) ”and the like may be defined and written to the
以上が本発明の第2の実施形態である。 The above is the second embodiment of the present invention.
以上の第1および第2の実施形態の説明において、いずれの半導体記憶装置1000も1つの論理アドレスに対して複数の物理アドレスを割り当てるため、ホスト装置1100がスナップショット取得後にライトコマンドで多くのデータを書き込むと、備えられたフラッシュメモリ1040の全容量で必要な物理ページ数をまかないきれない可能性がある。その場合はスナップショットを解放して空き物理ページを確保すること(これは第1の実施形態では通常動作開始コマンド処理の実行に相当する。以下、スナップショットの解放という表現で統一する。)が必要である。そこで、コマンド処理中に有効データ格納ページ(状態=0または1のページ)の総数が所定の上限値を超えることが判明したら、ディスク容量オーバを意味するエラーを返すようにして、ホスト装置1100にスナップショットの解放を促してもよい。
In the above description of the first and second embodiments, since each
さらに、半導体記憶装置1000が自ら自動的にスナップショットの解放を実施してもよい。このとき、例えば最も古いスナップショットを優先的に解放する。スナップショットフラグ1033を拡張して取得時にシーケンス番号も記録するようにして、シーケンス番号が最小のものを最も古いスナップショットとして検出できるようにする。
Further, the
さらに、この自動解放を有効化/無効化するための設定コマンドを新規に定義してもよい。このとき、半導体記憶装置1000がそのコマンドを解釈してこの自動解放を事前に有効化/無効化する。あるいは、スナップショット取得コマンドのパラメータにこの自動解放を「許可する/許可しない」を意味するフラグを追加し、ホスト装置1100が予め自動解放を個別に承認できるようにしてもよい。このとき、半導体記憶装置1000がそのフラグを解釈し、(拡張した)スナップショットフラグ1033にその情報を記録しておく。その後、自動解放が必要になった時にそれを見て、「許可する」になっているスナップショットの中で最も古いスナップショットを優先的に解放する。
Furthermore, a setting command for enabling / disabling this automatic release may be newly defined. At this time, the
半導体記憶装置1000が自ら自動的にスナップショットの解放を実施する契機は、上記のような容量不足に限らず半導体記憶装置1000が検知可能な様々なイベントを適用してよい。例えば、半導体記憶装置1000に現在時刻を知るための手段を備え、スナップショット取得時に取得時刻も(拡張した)スナップショットフラグ1033に記録しておく。そして、現在時刻とその取得時刻の差が所定値(例えば3年)を超えたら、自動的にそのスナップショットの解放を実施する。
The trigger for the
さらに、半導体記憶装置1000は自ら自動的にスナップショットの解放を実施するだけでなく、自動的にスナップショットの取得(これは第1の実施形態ではスナップショットコマンド処理の実行に相当する。以下、スナップショットの取得という表現で統一する。)を実施してもよい。その実施の契機は半導体記憶装置1000が検知可能な様々なイベントを適用してよい。
Furthermore, the
例えば、半導体記憶装置1000に現在時刻を知るための手段を備え、所定の時刻になると自動的にスナップショットの取得を実施する。この所定時刻を設定するコマンドを新規に定義してもよい。すなわち、半導体記憶装置1000がそのコマンドを解釈してこの所定時刻を事前に内部(例えば不揮発性RAM1030)に登録する。
For example, the
もう一例として、ホスト装置1100からの電源遮断による格納データ破壊を防止するために補助電源(大容量キャパシタなど)を搭載した半導体記憶装置1000を考える。半導体記憶装置1000は補助電源が使用されたことを検出してその通算使用回数または通算使用時間を不揮発性RAM1030に記録する。それらが所定の上限値を超えたら、外部の電源環境が悪化していると判断して、自動的にスナップショットの取得を実施する。
As another example, consider a
さらにもう一例として、フラッシュメモリ1040のブロック消去回数の合計、平均または最大値が所定の上限値を超えたり、フラッシュメモリ1040のライトや消去のエラー発生回数の合計が所定の上限値を超えたりしたら、記憶装置としての信頼性が悪化していると判断して、自動的にスナップショットの取得を実施してもよい。
As another example, if the total, average or maximum number of block erases in the
以上の説明において、スナップショット取得/解放コマンド、リードデータ選択コマンドなど新規に定義したコマンドには、従来の半導体記憶装置でベンダユニークに定義可能なコマンドコードを割り当て、リード/ライトコマンドには従来の半導体記憶装置のリード/ライトコマンドと同じ標準的なコマンドコードを割り当て、記憶装置としての上位互換性を図るのが好ましい。 In the above description, a command code that can be uniquely defined by a vendor in a conventional semiconductor memory device is assigned to a newly defined command such as a snapshot acquisition / release command or a read data selection command. It is preferable to assign the same standard command code as the read / write command of the semiconductor memory device to achieve upward compatibility as the memory device.
以上の説明において、スナップショットの世代番号やスナップショット機能に関する諸々のエラーをホスト装置1100に返す手段としては、従来の半導体記憶装置が標準的に持つステータスリードコマンドを拡張して実現してもよい。すなわち、本コマンドでリードされるステータス情報内の未使用部分に世代番号を埋め込む。また、標準規格で未使用のエラーコードをスナップショット機能に関する諸々のエラーに割り当て、そのコードをステータス情報内のエラー情報部分に設定する。
In the above description, the means for returning various errors related to the snapshot generation number and the snapshot function to the
また、ホスト装置1100の便利のために、本発明の半導体記憶装置1000で取得可能なスナップショット世代数の上限値、または取得済みのスナップショット世代番号のリストを、上記と同様にステータス情報の未使用部分に埋め込んでもよい。
Further, for the convenience of the
また、上記第2実施形態では、メモリコントローラ1020は、リードデータ選択コマンドでスナップショットの世代または最新データを指定してから、所望の論理アドレスに対するリードコマンドを受け付ける構成としたが、リードコマンドに種類値を付加して、一回の指令で読み出すデータの種類と論理アドレスの指定を行うようにしても良い。
In the second embodiment, the
<補足>
一括消去可能な複数のブロックと、前記ブロックを複数の領域に分割した複数のページとを備えてデータを格納するフラッシュメモリと、
前記フラッシュメモリへの書き込みまたは読み出しを前記ページ単位で制御し、前記ブロック単位で一括消去を制御するメモリコントローラと、を備え、
前記メモリコントローラは、ホストから受信した要求に含まれる論理アドレスに基づいて前記メモリチップのデータを読み書きする半導体記憶装置であって、
前記メモリコントローラは、
前記受信した要求が書き込み要求のときには、最新データの書き込み要求とスナップショット取得要求または解放要求の何れであるかを判定し、前記受信した要求が読み出し要求のときには、前記最新データの読み出し要求とスナップショットの読み出し要求の何れであるかを判定する要求判定部と、
前記要求に含まれる論理アドレスに対応する前記ページの物理アドレスを管理するアドレス変換部と、
前記各ブロックの前記各ページ毎に、格納されているデータが有効または無効あるいは未書き込みのいずれであるかを管理するページ状態設定部と、
前記スナップショット取得要求または読み出し要求あるいは解放要求があったときに、スナップショットの世代を管理するスナップショット管理部と、
前記要求判定部が判定した前記要求に含まれる論理アドレスから、前記アドレス変換部とページ状態設定部及びスナップショット管理部を参照して、前記要求に応じたアクセスを行うページの物理アドレスを決定するアクセス先決定部と、
前記決定したページに対して前記要求に応じたアクセスを行うアクセス制御部と、
を備え、
前記アドレス変換部は、
前記最新のデータを格納するページの物理アドレスを論理アドレス毎に格納する第1物理アドレスグループと、
前記スナップショットを格納するページの物理アドレスを論理アドレス毎に格納する第2物理アドレスグループと、を有し、
前記スナップショット管理部は、
前記スナップショットの有効または無効を設定することを特徴とする半導体記憶装置。
<Supplement>
A flash memory for storing data comprising a plurality of blocks that can be collectively erased, and a plurality of pages obtained by dividing the block into a plurality of areas;
A memory controller that controls writing to or reading from the flash memory in units of pages and controls batch erasure in units of blocks, and
The memory controller is a semiconductor memory device that reads and writes data of the memory chip based on a logical address included in a request received from a host,
The memory controller is
When the received request is a write request, it is determined whether it is a latest data write request, a snapshot acquisition request, or a release request. When the received request is a read request, the latest data read request and snap request are determined. A request determination unit that determines which of the shot read requests is,
An address conversion unit that manages the physical address of the page corresponding to the logical address included in the request;
A page state setting unit that manages whether the stored data is valid, invalid, or unwritten for each page of each block;
A snapshot management unit that manages the generation of the snapshot when the snapshot acquisition request or the read request or the release request is made;
From the logical address included in the request determined by the request determination unit, the physical address of the page to be accessed according to the request is determined with reference to the address conversion unit, the page state setting unit, and the snapshot management unit An access destination determination unit;
An access control unit that accesses the determined page according to the request;
With
The address conversion unit
A first physical address group storing a physical address of a page storing the latest data for each logical address;
A second physical address group storing a physical address of a page storing the snapshot for each logical address;
The snapshot management unit
A semiconductor memory device, wherein the validity or invalidity of the snapshot is set.
1000 半導体記憶装置
1020 メモリコントローラ
1030 不揮発性RAM
1040 フラッシュメモリ
1000
1040 flash memory
Claims (17)
前記メモリコントローラは、読み出し要求または書き込み要求を受信し、前記読み出し要求または書き込み要求に含まれる論理アドレスに基づいて前記メモリチップのデータを読み書きする半導体記憶装置であって、
前記メモリコントローラは、前記メモリチップに格納された第1のデータが第1の論理アドレスへの読み出し要求により出力可能であるときに、前記第1の論理アドレスへの書込要求で第2のデータが入力された後、前記第1の論理アドレスへの読み出し要求を受信したときに前記第1のデータまたは前記第2のデータのいずれかを選択的に出力することを特徴とする半導体記憶装置。 A memory chip for storing data, and a memory controller for controlling the memory chip,
The memory controller is a semiconductor memory device that receives a read request or a write request and reads / writes data of the memory chip based on a logical address included in the read request or the write request,
When the first data stored in the memory chip can be output by a read request to the first logical address, the memory controller outputs the second data by a write request to the first logical address. A semiconductor memory device that selectively outputs either the first data or the second data when a read request to the first logical address is received after.
前記メモリコントローラは、ホストから読み出し要求または書き込み要求を受信し、前記読み出し要求または書き込み要求に含まれる論理アドレスに基づいて前記メモリチップのデータを読み書きする半導体記憶装置であって、
前記メモリコントローラは、第1の論理アドレスを指定したホストからの書込要求に応じて第1のデータを格納し、
前記第1のデータを格納した後に、前記第1の論理アドレスを指定したホストからの書込要求に応じて第2のデータを格納し、
前記第1のデータと第2のデータを格納した後に、前記第1の論理アドレスを指定したホストからの読み出し要求に応じて、前記メモリコントローラが前記第1のデータと前記第2のデータのいずれかを選択的に出力することを特徴とする半導体記憶装置。 A memory chip for storing data, and a memory controller for controlling the memory chip,
The memory controller is a semiconductor memory device that receives a read request or a write request from a host and reads / writes data of the memory chip based on a logical address included in the read request or the write request,
The memory controller stores first data in response to a write request from a host that has designated a first logical address,
After storing the first data, store the second data in response to a write request from the host that has designated the first logical address;
After storing the first data and the second data, the memory controller determines which of the first data and the second data in response to a read request from the host that has designated the first logical address. A semiconductor memory device characterized by selectively outputting the above.
前記メモリチップはフラッシュメモリで構成され、
前記メモリコントローラは、前記フラッシュメモリを制御するために前記フラッシュメモリに接続され、
前記フラッシュメモリは、前記メモリコントローラが一括消去可能なブロックを複数含み、
前記ブロックは、前記メモリコントローラが書込単位とする複数のページに分割され、
前記メモリコントローラは、前記第1のデータおよび前記第2のデータを異なるページに格納することを特徴とする半導体記憶装置。 The semiconductor memory device according to claim 1, wherein:
The memory chip is composed of flash memory,
The memory controller is connected to the flash memory to control the flash memory;
The flash memory includes a plurality of blocks that can be collectively erased by the memory controller,
The block is divided into a plurality of pages that the memory controller uses as a writing unit,
The semiconductor memory device, wherein the memory controller stores the first data and the second data in different pages.
前記メモリコントローラは、
前記書き込み要求と読み出し要求として、少なくとも1種類の書込要求と、少なくとも2種類の読み出し要求とを受け付けて、
前記メモリコントローラは、前記第1の論理アドレスを指定した前記書込要求に応じて入力された第1のデータを第1のページに格納し、
前記第1のデータを格納した後、前記メモリコントローラは、前記第1の論理アドレスを指定した前記書込要求に応じて入力された第2のデータを第2のページに格納し、
前記第1のデータと第2のデータを格納した後、前記メモリコントローラは、前記第1の論理アドレスを指定した第1の読み出し要求に応じて、前記第1のデータを前記第1のページから読み出し、
前記第1の論理アドレスを指定した第2の読み出し要求に応じて、前記第2のデータを前記第2のページから読み出すことを特徴とする半導体記憶装置。 The semiconductor memory device according to claim 3,
The memory controller is
As the write request and the read request, at least one type of write request and at least two types of read requests are accepted,
The memory controller stores, in a first page, first data input in response to the write request designating the first logical address,
After storing the first data, the memory controller stores the second data input in response to the write request designating the first logical address in a second page;
After storing the first data and the second data, the memory controller receives the first data from the first page in response to a first read request designating the first logical address. reading,
A semiconductor memory device, wherein the second data is read from the second page in response to a second read request designating the first logical address.
前記メモリコントローラは、
前記書き込み要求と読み出し要求として、少なくとも1種類の書込要求と、少なくとも2種類の読み出し要求とを受け付けて、
前記メモリコントローラは、前記第1の論理アドレスを指定した前記書込要求に応じて入力された第1のデータを、少なくとも1つのページに格納し、
前記第1のデータを格納した後、前記メモリコントローラは、前記第1の論理アドレスを指定した前記書込要求に応じて入力された第2のデータを、少なくとも1つの前記ページに格納し、
前記第1のデータと第2のデータを格納した後、前記メモリコントローラは、前記第1の論理アドレスを指定した第1の読み出し要求に応じて、前記第1のデータを格納した少なくとも1つの前記ページからデータを読み出し、
前記第1の論理アドレスを指定した第2の読み出し要求に応じて、前記第2のデータを格納した少なくとも1つの前記ページから読み出すことを特徴とする半導体記憶装置。 The semiconductor memory device according to claim 3,
The memory controller is
As the write request and the read request, at least one type of write request and at least two types of read requests are accepted,
The memory controller stores the first data input in response to the write request designating the first logical address in at least one page;
After storing the first data, the memory controller stores the second data input in response to the write request designating the first logical address in at least one page,
After storing the first data and the second data, the memory controller, in response to a first read request designating the first logical address, stores at least one of the first data stored in the first data. Read data from the page,
In accordance with a second read request designating the first logical address, the semiconductor memory device is read from at least one of the pages storing the second data.
前記読み出し要求で指定された論理アドレスの1つから、当該論理アドレスに対応して書込まれたデータを格納している少なくとも2つの前記ページを識別するための物理アドレスを格納したアドレス変換テーブルを、不揮発性の記憶手段に保持することを特徴とする半導体記憶装置。 The semiconductor memory device according to claim 5,
An address conversion table storing physical addresses for identifying at least two pages storing data written corresponding to the logical address from one of the logical addresses specified by the read request. And a non-volatile storage means.
前記ページに割当てられた1つのページ状態を格納したページ状態レジスタを、不揮発性の記憶手段に保持し、
前記メモリコントローラは、前記ページ状態として、少なくとも、
(1)当該ページに対応する前記論理アドレスを指定して最後に書込まれたデータを格納した状態、
(2)当該ページに対応する前記論理アドレスを指定して書込まれたデータのうち最後のものでない1つを格納した状態、
(3)無効データを格納した状態、
(4)当該ページを含む前記ブロックが消去されて以来、データが未書込の状態、
のいずれかひとつを設定することを特徴とする半導体記憶装置。 The semiconductor memory device according to claim 5,
A page status register storing one page status assigned to the page is held in a nonvolatile storage means,
The memory controller is at least as the page state,
(1) A state in which the last written data is stored by designating the logical address corresponding to the page,
(2) A state in which one of the data written by designating the logical address corresponding to the page is not the last one is stored,
(3) State in which invalid data is stored,
(4) Data has not been written since the block including the page has been erased.
A semiconductor memory device characterized by setting any one of the above.
前記不揮発性記憶手段が、前記フラッシュメモリであることを特徴とする半導体記憶装置。 The semiconductor memory device according to claim 6,
A semiconductor memory device, wherein the nonvolatile memory means is the flash memory.
前記アドレス変換テーブルは、ひとつの論理アドレスについて、最後に書き込まれたデータの格納位置を指し示す第1の物理アドレスと、更新前のデータを指し示す第2の物理アドレスとを含むことを特徴とする半導体記憶装置。 The semiconductor memory device according to claim 6,
The address conversion table includes, for one logical address, a first physical address indicating a storage position of data written last and a second physical address indicating data before update. Storage device.
前記フラッシュメモリへの書き込みまたは読み出しを前記ページ単位で制御し、前記ブロック単位で一括消去を制御するメモリコントローラと、を備え、
前記メモリコントローラは、ホストから受信した要求に含まれる論理アドレスに基づいて前記メモリチップのデータを読み書きする半導体記憶装置であって、
前記メモリコントローラは、
前記受信した要求が書き込み要求のときには、最新データの書き込み要求とスナップショット取得要求または解放要求の何れであるかを判定し、前記受信した要求が読み出し要求のときには、前記最新データの読み出し要求とスナップショットの読み出し要求の何れであるかを判定する要求判定部と、
前記要求に含まれる論理アドレスに対応する前記ページの物理アドレスを管理するアドレス変換部と、
前記各ブロックの前記各ページ毎に、格納されているデータが有効または無効あるいは未書き込みのいずれであるかを管理するページ状態設定部と、
前記スナップショット取得要求または読み出し要求あるいは解放要求があったときに、スナップショットの世代を管理するスナップショット管理部と、
前記要求判定部が判定した前記要求に含まれる論理アドレスから、前記アドレス変換部とページ状態設定部及びスナップショット管理部を参照して、前記要求に応じたアクセスを行うページの物理アドレスを決定するアクセス先決定部と、
前記決定したページに対して前記要求に応じたアクセスを行うアクセス制御部と、
を備え、
前記アドレス変換部は、
前記最新のデータを格納するページの物理アドレスを論理アドレス毎に格納する第1物理アドレスグループと、
前記スナップショットを格納するページの物理アドレスを論理アドレス毎に格納し、かつスナップショットの世代毎に物理アドレスを格納する第2物理アドレスグループと、を有し、
前記スナップショット管理部は、
前記前記第2物理アドレスグループを構成するスナップショットの世代毎のアドレスグループの有効または無効を設定することを特徴とする半導体記憶装置。 A flash memory for storing data comprising a plurality of blocks that can be collectively erased, and a plurality of pages obtained by dividing the block into a plurality of areas;
A memory controller that controls writing to or reading from the flash memory in units of pages and controls batch erasure in units of blocks, and
The memory controller is a semiconductor memory device that reads and writes data of the memory chip based on a logical address included in a request received from a host,
The memory controller is
When the received request is a write request, it is determined whether it is a latest data write request, a snapshot acquisition request, or a release request. When the received request is a read request, the latest data read request and snap request are determined. A request determination unit that determines which of the shot read requests is,
An address conversion unit that manages the physical address of the page corresponding to the logical address included in the request;
A page state setting unit that manages whether the stored data is valid, invalid, or unwritten for each page of each block;
A snapshot management unit that manages the generation of the snapshot when the snapshot acquisition request or the read request or the release request is made;
From the logical address included in the request determined by the request determination unit, the physical address of the page to be accessed according to the request is determined with reference to the address conversion unit, the page state setting unit, and the snapshot management unit An access destination determination unit;
An access control unit that accesses the determined page according to the request;
With
The address conversion unit
A first physical address group storing a physical address of a page storing the latest data for each logical address;
A physical address of a page storing the snapshot for each logical address, and a second physical address group for storing a physical address for each generation of snapshots,
The snapshot management unit
A semiconductor memory device, wherein validity or invalidity of an address group for each snapshot generation constituting the second physical address group is set.
前記アクセス先決定部は、
前記要求が最新データの書き込み要求のときには、前記ページ状態設定部を参照して未書き込みのページの物理アドレスを前記要求に含まれる論理アドレスのアクセス先として選択し、当該ページに書き込んだ後に前記アドレス変換部の前記論理アドレスに対応する第1物理アドレスグループを前記選択したページの物理アドレスで更新し、前記ページ状態設定部の当該ページの状態を有効に設定し、更新前の当該論理アドレスに対応する第1物理アドレスグループの物理アドレスに対応するページ状態設定部の当該ページの状態を無効に設定することを特徴とする半導体記憶装置。 The semiconductor memory device according to claim 10,
The access destination determination unit
When the request is a write request for the latest data, the physical state of an unwritten page is selected as an access destination of a logical address included in the request by referring to the page state setting unit, and the address is written after writing to the page. The first physical address group corresponding to the logical address of the conversion unit is updated with the physical address of the selected page, the state of the page of the page state setting unit is set to be valid, and the logical address before the update is supported A semiconductor memory device, wherein the page state setting unit corresponding to the physical address of the first physical address group is set to invalid.
前記アクセス先決定部は、
前記要求がスナップショット取得要求のときには、前記ホストから指令された世代に対応する第2物理アドレスグループのアドレスグループに、前記第1物理アドレスグループの値を複写し、前記スナップショット管理部の前記世代を有効として設定することを特徴とする半導体記憶装置。 The semiconductor memory device according to claim 10,
The access destination determination unit
When the request is a snapshot acquisition request, the value of the first physical address group is copied to the address group of the second physical address group corresponding to the generation commanded by the host, and the generation of the snapshot management unit Is set as valid, a semiconductor memory device.
前記アクセス先決定部は、
前記要求が最新データの読み出し要求のときには、前記第1物理アドレスグループから前記要求に含まれる論理アドレスに対応するページに格納された物理アドレスをアクセス先として選択することを特徴とする半導体記憶装置。 The semiconductor memory device according to claim 10,
The access destination determination unit
When the request is a request for reading the latest data, the semiconductor memory device selects a physical address stored in a page corresponding to a logical address included in the request from the first physical address group as an access destination.
前記アクセス先決定部は、
前記要求がスナップショットの読み出し要求のときには、前記ホストから指令された世代に対応する第2物理アドレスグループのアドレスグループから、前記要求に含まれる論理アドレスに対応するページに格納された物理アドレスをアクセス先として選択することを特徴とする半導体記憶装置。 The semiconductor memory device according to claim 10,
The access destination determination unit
When the request is a snapshot read request, the physical address stored in the page corresponding to the logical address included in the request is accessed from the address group of the second physical address group corresponding to the generation commanded by the host A semiconductor memory device, wherein the semiconductor memory device is selected as the destination.
前記アクセス先決定部は、
前記要求がスナップショット解放要求のときには、前記ホストから指令された世代に対応する第2物理アドレスグループのアドレスグループを構成するページの物理アドレスが他のアドレスグループに存在するか否かを判定し、他のアドレスグループに前記ページの物理アドレスが存在しない場合には、当該ページに対応する前記ページ状態設定部の値を無効として設定し、前記世代に対応する第2物理アドレスグループのアドレスグループの値を消去し、当該世代に対応する前記スナップショット管理部の値を無効として設定することを特徴とする記憶装置。 The semiconductor memory device according to claim 10,
The access destination determination unit
When the request is a snapshot release request, it is determined whether or not the physical address of the page constituting the address group of the second physical address group corresponding to the generation commanded by the host exists in another address group, When the physical address of the page does not exist in another address group, the value of the page state setting unit corresponding to the page is set as invalid, and the value of the address group of the second physical address group corresponding to the generation Is deleted, and the value of the snapshot management unit corresponding to the generation is set as invalid.
前記メモリコントローラは、
前記未書き込みのページが予め設定した値未満となったことを監視する空きブロック監視部と、
前記未書き込みのページが予め設定した値未満となったときには、前記ページ状態設定部を参照して前記複数のブロックから無効のページが最も多いブロックを選択し、当該ブロックを一括消去し、当該ブロックに対応するページ状態設定部を未書き込みに設定するクリーンアップ処理部と、を有することを特徴とする半導体記憶装置。 The semiconductor memory device according to claim 10,
The memory controller is
An empty block monitoring unit for monitoring that the unwritten page is less than a preset value;
When the unwritten page is less than a preset value, the block having the largest number of invalid pages is selected from the plurality of blocks with reference to the page state setting unit, and the block is erased at once. And a cleanup processing unit that sets the page state setting unit corresponding to the unwritten state to the semiconductor memory device.
前記クリーンアップ処理部は、前記一括消去の対象として選択されたブロックについて、前記ページ状態設定部から有効なページを検索し、有効なページがある場合には、前記ページ状態設定部から他のブロックの未書き込みのページを選択し、前記有効なページのデータを前記未書き込みのページへ書き込んで退避させることを特徴とする半導体記憶装置。 The semiconductor memory device according to claim 15,
The cleanup processing unit searches the page status setting unit for a valid page for the block selected as the batch erasure target, and if there is a valid page, the page status setting unit selects another block. A non-written page is selected, and the data of the valid page is written and saved in the unwritten page.
Priority Applications (7)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2007036236A JP5137413B2 (en) | 2006-11-28 | 2007-02-16 | Semiconductor memory device |
US11/783,364 US8151060B2 (en) | 2006-11-28 | 2007-04-09 | Semiconductor memory system having a snapshot function |
DE200760009916 DE602007009916D1 (en) | 2006-11-28 | 2007-07-04 | Semiconductor memory system with snapshot function |
EP20070252686 EP1927920B1 (en) | 2006-11-28 | 2007-07-04 | Semiconductor memory system having a snapshot function |
US13/422,644 US8417896B2 (en) | 2006-11-28 | 2012-03-16 | Semiconductor memory system having a snapshot function |
US13/788,438 US8683141B2 (en) | 2006-11-28 | 2013-03-07 | Semiconductor memory system having a snapshot function |
US14/188,039 US9021212B2 (en) | 2006-11-28 | 2014-02-24 | Semiconductor memory system having a snapshot function |
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2006320240 | 2006-11-28 | ||
JP2006320240 | 2006-11-28 | ||
JP2007036236A JP5137413B2 (en) | 2006-11-28 | 2007-02-16 | Semiconductor memory device |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2008159013A true JP2008159013A (en) | 2008-07-10 |
JP5137413B2 JP5137413B2 (en) | 2013-02-06 |
Family
ID=39659817
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2007036236A Expired - Fee Related JP5137413B2 (en) | 2006-11-28 | 2007-02-16 | Semiconductor memory device |
Country Status (2)
Country | Link |
---|---|
JP (1) | JP5137413B2 (en) |
DE (1) | DE602007009916D1 (en) |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2012104909A1 (en) | 2011-02-02 | 2012-08-09 | Hitachi, Ltd. | Storage system and data control method therefor |
US8626987B2 (en) | 2009-10-27 | 2014-01-07 | Samsung Electronics Co., Ltd. | Flash memory system and defragmentation method |
JP2014206982A (en) * | 2014-05-07 | 2014-10-30 | 株式会社日立製作所 | Storage system and data control method therefor |
JP2015501960A (en) * | 2012-03-13 | 2015-01-19 | 株式会社日立製作所 | Storage system having nonvolatile semiconductor memory device including nonvolatile semiconductor memory |
JP2015158797A (en) * | 2014-02-24 | 2015-09-03 | 株式会社東芝 | Storage device and data management method |
JP2016194928A (en) * | 2016-05-11 | 2016-11-17 | 株式会社日立製作所 | Storage system |
US9792070B2 (en) | 2013-03-18 | 2017-10-17 | Fujitsu Ten Limited | Data storage device, method of storing data, and on-vehicle control apparatus |
US10019326B2 (en) | 2015-07-15 | 2018-07-10 | Toshiba Memory Corporation | Memory system |
CN111258500A (en) * | 2014-09-30 | 2020-06-09 | 株式会社日立制作所 | Distributed storage system and data control method |
JP7467088B2 (en) | 2019-12-03 | 2024-04-15 | キヤノン株式会社 | Information processing device, processing method and program for information processing device |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0527924A (en) * | 1991-07-12 | 1993-02-05 | Internatl Business Mach Corp <Ibm> | External storage system using semiconductor memory and control method thereof |
JPH11134117A (en) * | 1997-10-31 | 1999-05-21 | Toshiba Corp | Computer system |
JP2002108722A (en) * | 2001-07-30 | 2002-04-12 | Sony Corp | Storage device |
JP2003004351A (en) * | 2001-06-25 | 2003-01-08 | Nisshin Seifun Group Inc | Cooling system of grains |
JP2004511030A (en) * | 2000-07-07 | 2004-04-08 | レクサー メディア,インク. | Memory architecture for host compatible multi-flash memory banks that can be programmed simultaneously |
JP2005115561A (en) * | 2003-10-06 | 2005-04-28 | Media Logic:Kk | Flash rom controller |
JP2006048585A (en) * | 2004-08-09 | 2006-02-16 | Fujitsu Ltd | Access method of flash memory |
-
2007
- 2007-02-16 JP JP2007036236A patent/JP5137413B2/en not_active Expired - Fee Related
- 2007-07-04 DE DE200760009916 patent/DE602007009916D1/en active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0527924A (en) * | 1991-07-12 | 1993-02-05 | Internatl Business Mach Corp <Ibm> | External storage system using semiconductor memory and control method thereof |
JPH11134117A (en) * | 1997-10-31 | 1999-05-21 | Toshiba Corp | Computer system |
JP2004511030A (en) * | 2000-07-07 | 2004-04-08 | レクサー メディア,インク. | Memory architecture for host compatible multi-flash memory banks that can be programmed simultaneously |
JP2003004351A (en) * | 2001-06-25 | 2003-01-08 | Nisshin Seifun Group Inc | Cooling system of grains |
JP2002108722A (en) * | 2001-07-30 | 2002-04-12 | Sony Corp | Storage device |
JP2005115561A (en) * | 2003-10-06 | 2005-04-28 | Media Logic:Kk | Flash rom controller |
JP2006048585A (en) * | 2004-08-09 | 2006-02-16 | Fujitsu Ltd | Access method of flash memory |
Cited By (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8626987B2 (en) | 2009-10-27 | 2014-01-07 | Samsung Electronics Co., Ltd. | Flash memory system and defragmentation method |
US9189391B2 (en) | 2011-02-02 | 2015-11-17 | Hitachi, Ltd. | Storage system and data control method therefor |
JP2013541743A (en) * | 2011-02-02 | 2013-11-14 | 株式会社日立製作所 | Storage system and data control method thereof |
US8886869B2 (en) | 2011-02-02 | 2014-11-11 | Hitachi, Ltd. | Storage system and data control method therefor |
WO2012104909A1 (en) | 2011-02-02 | 2012-08-09 | Hitachi, Ltd. | Storage system and data control method therefor |
JP2015501960A (en) * | 2012-03-13 | 2015-01-19 | 株式会社日立製作所 | Storage system having nonvolatile semiconductor memory device including nonvolatile semiconductor memory |
US9116622B2 (en) | 2012-03-13 | 2015-08-25 | Hitachi, Ltd. | Storage system having nonvolatile semiconductor storage device with nonvolatile semiconductor memory |
US9792070B2 (en) | 2013-03-18 | 2017-10-17 | Fujitsu Ten Limited | Data storage device, method of storing data, and on-vehicle control apparatus |
JP2015158797A (en) * | 2014-02-24 | 2015-09-03 | 株式会社東芝 | Storage device and data management method |
JP2014206982A (en) * | 2014-05-07 | 2014-10-30 | 株式会社日立製作所 | Storage system and data control method therefor |
CN111258500A (en) * | 2014-09-30 | 2020-06-09 | 株式会社日立制作所 | Distributed storage system and data control method |
JP2021089764A (en) * | 2014-09-30 | 2021-06-10 | 株式会社日立製作所 | Dispersion-type storage system |
US11487619B2 (en) | 2014-09-30 | 2022-11-01 | Hitachi, Ltd. | Distributed storage system |
CN111258500B (en) * | 2014-09-30 | 2023-05-09 | 株式会社日立制作所 | Distributed storage system and data control method |
JP7374939B2 (en) | 2014-09-30 | 2023-11-07 | 株式会社日立製作所 | distributed storage system |
US11886294B2 (en) | 2014-09-30 | 2024-01-30 | Hitachi, Ltd. | Distributed storage system |
US10019326B2 (en) | 2015-07-15 | 2018-07-10 | Toshiba Memory Corporation | Memory system |
JP2016194928A (en) * | 2016-05-11 | 2016-11-17 | 株式会社日立製作所 | Storage system |
JP7467088B2 (en) | 2019-12-03 | 2024-04-15 | キヤノン株式会社 | Information processing device, processing method and program for information processing device |
Also Published As
Publication number | Publication date |
---|---|
DE602007009916D1 (en) | 2010-12-02 |
JP5137413B2 (en) | 2013-02-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8683141B2 (en) | Semiconductor memory system having a snapshot function | |
JP5137413B2 (en) | Semiconductor memory device | |
US9367451B2 (en) | Storage device management device and method for managing storage device | |
US8051258B2 (en) | Apparatus and methods using invalidity indicators for buffered memory | |
JP4931810B2 (en) | FAT analysis for optimized sequential cluster management | |
US8898541B2 (en) | Storage controller, storage device, information processing system, and storage controlling method | |
US9183132B2 (en) | Storage device, computer system, and storage system | |
US8489854B1 (en) | Non-volatile semiconductor memory storing an inverse map for rebuilding a translation table | |
US8838875B2 (en) | Systems, methods and computer program products for operating a data processing system in which a file delete command is sent to an external storage device for invalidating data thereon | |
JP2018073040A (en) | Memory system | |
US11301331B2 (en) | Storage device and operating method of storage device | |
JP2013061799A (en) | Memory device, control method for memory device and controller | |
JPWO2005103903A1 (en) | Nonvolatile storage system | |
JP2007193883A (en) | Data recording device and method, data reproducing device and method, and data recording and reproducing device and method | |
US9389998B2 (en) | Memory formatting method, memory controller, and memory storage apparatus | |
US20100318726A1 (en) | Memory system and memory system managing method | |
JP4242245B2 (en) | Flash ROM control device | |
CN115774681A (en) | Information processing apparatus | |
JP2010086009A (en) | Storage device and memory control method | |
JP2009116465A (en) | Storage device and memory control method | |
JP2005115562A (en) | Flash rom controller | |
JP4245021B2 (en) | Storage device, storage system, and storage device control method | |
US20130036257A1 (en) | Memory system which can avoid unavailability due to operation error by user | |
KR20110041843A (en) | Hybrid storage device and operating method for the same | |
JP5180726B2 (en) | Storage device and data write control method |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20090617 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20111216 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20111220 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20120220 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20120309 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20120821 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20121011 |
|
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: 20121106 |
|
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20121113 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 5137413 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20151122 Year of fee payment: 3 |
|
LAPS | Cancellation because of no payment of annual fees |