JP2007172066A - Memory controller and flash memory system - Google Patents
Memory controller and flash memory system Download PDFInfo
- Publication number
- JP2007172066A JP2007172066A JP2005365175A JP2005365175A JP2007172066A JP 2007172066 A JP2007172066 A JP 2007172066A JP 2005365175 A JP2005365175 A JP 2005365175A JP 2005365175 A JP2005365175 A JP 2005365175A JP 2007172066 A JP2007172066 A JP 2007172066A
- Authority
- JP
- Japan
- Prior art keywords
- physical
- block
- logical
- zone
- segment
- 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)
Abstract
Description
本発明は、メモリコントローラ及び当該メモリコントローラを備えるフラッシュメモリシステムに関する。 The present invention relates to a memory controller and a flash memory system including the memory controller.
近年、不揮発性の記憶媒体であるフラッシュメモリの開発が盛んに行われ、デジタルカメラ等の情報機器(ホストシステム)の記憶媒体として普及している。 In recent years, flash memory, which is a non-volatile storage medium, has been actively developed, and is widely used as a storage medium for information devices (host systems) such as digital cameras.
このような機器が扱うデータが大容量化したことに伴い、フラッシュメモリの記憶容量も大容量化が進んでいる。このように大容量化したフラッシュメモリの記憶領域を円滑に管理するため、近年は、この記憶領域を複数のゾーンに分割して管理する手法が用いられている(例えば特許文献1を参照)。 As the data handled by such devices has increased in capacity, the storage capacity of flash memory has also increased. In order to smoothly manage the storage area of the flash memory having such a large capacity, a method of managing the storage area by dividing it into a plurality of zones has been used in recent years (see, for example, Patent Document 1).
従来の複数のゾーンを有するフラッシュメモリの記憶領域を、より具体的に示せば、例えば図6に示す形に区画され、管理されていた。 More specifically, the storage area of a conventional flash memory having a plurality of zones is partitioned and managed in the form shown in FIG. 6, for example.
すなわち、データの物理的な読み書きの単位であるページを所定数含んだ、データ消去の単位である物理ブロックには、それぞれに固有の物理ブロックアドレス(PBA)が割り当てられている。各物理ブロックは、複数の物理ゾーンのいずれかに分類され、各物理ゾーンには、それぞれに固有の物理ゾーン番号(PZN)が割り当てられる。図6の例では、計2048個の物理ブロックには#0〜#2047の連続するPBAが割り当てられており、PBA#0〜#511の計512個の物理ブロックがPZN#0の物理ゾーンに属し、PBA#512〜#1023の計512個の物理ブロックがPZN#1の物理ゾーンに属し、PBA#1024〜#1535の計512個の物理ブロックがPZN#2の物理ゾーンに属し、PBA#1536〜#2047の計512個の物理ブロックがPZN#3の物理ゾーンに属する。
That is, a specific physical block address (PBA) is assigned to each physical block that is a unit of data erasing and includes a predetermined number of pages that are units of physical data reading and writing. Each physical block is classified into one of a plurality of physical zones, and a unique physical zone number (PZN) is assigned to each physical zone. In the example of FIG. 6, a total of 2048 physical blocks are assigned
また、各ページには物理ページアドレス(PPA)が割り当てられている。PPAは、ページが属する物理ブロックのPBAの下位に、当該物理ブロック内での当該ページの通番であるページ番号(PN)を付加した形をとっている。 Each page is assigned a physical page address (PPA). The PPA has a form in which a page number (PN), which is a serial number of the page in the physical block, is added to the lower level of the PBA of the physical block to which the page belongs.
一方、ホストシステム側のアドレス空間は、セクタ(512バイト)単位で分割した領域に付けた通番であるLBA(Logical Block Address)で管理されている。更に、複数個のセクタをまとめたものを論理ブロックと呼び、複数個の論理ブロックをまとめたものを論理ゾーンと呼んでいる。又、論理ブロックに付けられた通番を論理ブロック番号(LBN)と呼び、論理ゾーンに付けられた通番を論理ゾーン番号(LZN)と呼んでいる。又、各論理ゾーンに含まれる論理ブロックの、各論理ゾーン内での通番を論理ゾーン内ブロック番号(LZIBN)と呼んでいる。 On the other hand, the address space on the host system side is managed by an LBA (Logical Block Address) which is a serial number assigned to an area divided in units of sectors (512 bytes). Further, a group of a plurality of sectors is called a logical block, and a group of a plurality of logical blocks is called a logical zone. The serial number assigned to the logical block is called a logical block number (LBN), and the serial number assigned to the logical zone is called a logical zone number (LZN). Further, the serial number in each logical zone of the logical block included in each logical zone is called a logical zone block number (LZIBN).
従って、各論理ゾーンに含まれる論理ブロック数をnとした場合、LBNをnで割ったときの商がLZNに対応し、余りがLZIBNに対応する。 Therefore, when the number of logical blocks included in each logical zone is n, the quotient when LBN is divided by n corresponds to LZN, and the remainder corresponds to LZIBN.
又、各論理ゾーンにはそれぞれ1個の物理ゾーンが割り当てられ、論理ゾーンに含まれる各論理ブロックに対応するデータは、その論理ゾーンに割り当てられた物理ゾーンに含まれる物理ブロックに書き込まれる。更に、データが書き込まれた物理ブロックの冗長領域には、そのデータに対応する論理ブロックのLZIBN(又は、LBN)が書き込まれる。 In addition, one physical zone is allocated to each logical zone, and data corresponding to each logical block included in the logical zone is written to a physical block included in the physical zone allocated to the logical zone. Further, LZIBN (or LBN) of the logical block corresponding to the data is written in the redundant area of the physical block in which the data is written.
なお、物理ブロックと論理ブロックとの対応関係は、データの書き込みや消去が行われる毎に変化する。このため、個々の時点における両者の対応関係を管理するためアドレス変換テーブルが作成され、対応関係が変化する毎にアドレス変換テーブルが更新される。このアドレス変換テーブルは論理ゾーン毎に作成することができる。つまり、論理ゾーンと物理ゾーンとの対応関係は予め設定されているので、アドレス変換テーブルを作成する対象の物理ゾーンに含まれる物理ブロックの冗長領域に書き込まれているLZIBNを参照することによりアドレス変換テーブルを作成することができる。 Note that the correspondence between the physical block and the logical block changes every time data is written or erased. Therefore, an address conversion table is created in order to manage the correspondence between the two at each time point, and the address conversion table is updated each time the correspondence changes. This address conversion table can be created for each logical zone. That is, since the correspondence relationship between the logical zone and the physical zone is set in advance, address conversion is performed by referring to the LZIBN written in the redundant area of the physical block included in the physical zone for which the address conversion table is to be created. A table can be created.
ここで、冗長領域に書き込まれる論理ブロックを特定する情報(以下、論理アドレス情報という。)は、LBNであってもアドレス変換テーブルを作成することができるが、一般的にはデータ量の少ないLZIBNが論理アドレス情報として冗長領域に書き込まれる。 Here, even if the information (hereinafter referred to as logical address information) specifying the logical block to be written in the redundant area is LBN, an address conversion table can be created, but generally LZIBN with a small amount of data is used. Is written in the redundant area as logical address information.
又、各論理ゾーンには、物理ゾーンの記憶容量に応じて設定された所定数のセクタが割り当てられる。図6の例では、LZN#0の論理ゾーンにLBA#0〜#15999のセクタが、LZN#1の論理ゾーンにLBA#16000〜#31999のセクタが、LZN#2の論理ゾーンにLBA#32000〜#47999のセクタが、LZN#3の論理ゾーンにLBA#48000〜#63999のセクタが、それぞれ割り当てられている。なお、この例では、フラッシュメモリの1個のページが1個のセクタに対応し、各物理ブロックは、32個のページで構成されている。
Each logical zone is assigned a predetermined number of sectors set according to the storage capacity of the physical zone. In the example of FIG. 6, LBA # 0 to # 15999 sectors are in the LZN # 0 logical zone, LBA # 16000 to # 31999 sectors are in the LZN # 1 logical zone, and LBA # 32000 is in the LZN # 2 logical zone. ... To # 47999, and LBA # 48000 to # 63999 are assigned to the logical zone of
各論理ゾーンに割り当てられた16000個のセクタは、論理ゾーン内でLBAが連続する32個のセクタ単位で論理ブロックとして管理されている。従って、言い換えれば、LBAが連続する32個のセクタを論理ブロックとして、LBNが連続する論理ブロックを各論理ゾーンに500個(LZIBN#0〜#499)ずつ割り当てている。ここで、論理ブロックに含まれるセクタ数については、1個の論理ブロックと1個又は複数個の物理ブロックの容量が一致するよう適宜設定される。又、物理ブロックの各ページにはLBAの順番でデータが格納されるので、各論理ゾーンに含まれる論理ブロックと、その論理ゾーンに対応する物理ゾーンに含まれる物理ブロックとの対応関係に基づいて、フラッシュメモリ内のアクセス先を特定することができる。
又、フラッシュメモリの記憶容量が大容量化したため、起動時に全ての論理ゾーンについてアドレス変換テーブルを作成するのではなく、アクセス対象となった論理ゾーンのアドレス変換テーブルをその都度作成することが多くなっている。
In addition, since the storage capacity of the flash memory has increased, it is not necessary to create an address conversion table for every logical zone at startup, but to create an address conversion table for the logical zone that is the access target each time. ing.
しかしながら、上述のように論理ゾーン単位(相互に対応する論理ゾーンと物理ゾーン単位)で論理ブロックと物理ブロックの対応関係を管理している場合には、論理ゾーンに含まれる全ての論理ブロックを対象としたアドレス変換テーブルを作成した後でなければ、その論理ゾーンに対応する物理ゾーン(物理ゾーンに含まれる物理ブロック)にアクセスすることができない。従って、各論理ゾーン及び物理ゾーンのサイズが大きくなると、アドレス変換テーブルの作成にかかる時間が長くなるため、ホストシステムからアクセスの要求を受けてからアクセスを開始するまでの時間が長くなってしまう。
又、論理ゾーン及び物理ゾーンのサイズを小さくすれば、アドレス変換テーブルの作成にかかる時間を短く出来るが、特定の物理ゾーンに不良ブロックが集中した場合にその物理ゾーンで必要な有効ブロック数を確保できなくなってしまう確率が高くなる。つまり、論理ゾーンに含まれる論理ブロック数aに対する物理ゾーンに含まれる物理ブロック数bの比率(a:b)を維持したまま論理ゾーン及び物理ゾーンのサイズを小さくすれば、特定の物理ゾーンに不良ブロックが集中した場合に、その物理ゾーンで必要な有効ブロック数を確保できなくなってしまう確率が高くなる。ここで、比率(a:b)を変化させて論理ブロック数aと物理ブロック数bの差である予備数(b−a)を多くすれば、必要な有効ブロック数を確保できなくなってしまうという確率を低くできるが、フラッシュメモリに記憶できる容量が小さくなってしまう。
However, if the correspondence between logical blocks and physical blocks is managed in logical zone units (logical zone and physical zone units corresponding to each other) as described above, all logical blocks included in the logical zone are targeted. The physical zone (physical block included in the physical zone) corresponding to the logical zone cannot be accessed unless the address conversion table is created. Therefore, as the size of each logical zone and physical zone increases, the time required to create the address translation table increases, and therefore the time from when an access request is received from the host system to when access is started increases.
In addition, if the size of the logical zone and physical zone is reduced, the time required to create the address translation table can be shortened. However, when bad blocks are concentrated in a specific physical zone, the necessary number of effective blocks is secured in that physical zone. Probability of becoming impossible increases. In other words, if the size of the logical zone and the physical zone is reduced while maintaining the ratio (a: b) of the physical block number b included in the physical zone to the logical block number a included in the logical zone, the specific physical zone is defective. When blocks are concentrated, the probability that the number of effective blocks necessary in the physical zone cannot be secured increases. Here, if the ratio (a: b) is changed to increase the reserve number (ba), which is the difference between the logical block number a and the physical block number b, the necessary number of effective blocks cannot be secured. Although the probability can be lowered, the capacity that can be stored in the flash memory is reduced.
本発明は上記の実情に鑑みてなされたもので、論理ゾーン及び物理ゾーンのサイズを小さくすることなく、アドレス変換テーブルのサイズを小さくすることができるメモリコントローラ、及び当該メモリコントローラを備えるフラッシュメモリシステムを提供することを目的とする。 The present invention has been made in view of the above circumstances, a memory controller capable of reducing the size of the address conversion table without reducing the size of the logical zone and the physical zone, and a flash memory system including the memory controller. The purpose is to provide.
上記目的を達成するため、本発明のメモリコントローラは、
ホストシステムからの命令に応答してフラッシュメモリへのアクセスを制御するメモリコントローラであって、
前記フラッシュメモリにおける消去単位である物理ブロックを複数個集めた物理ゾーンと前記ホストシステムにおけるアクセス単位であるセクタを複数集めた論理ゾーンの対応関係と、前記物理ゾーンを所定の分割数で分割した物理セグメントと前記論理のゾーンを前記分割数で分割した論理セグメントの対応関係とを管理するアドレス管理手段と、
前記物理セグメント内の物理ブロックを占用ブロック又は共用ブロックに割り当て、前記占用ブロックには、該占用ブロックが含まれる前記物理セグメントと対応関係にある前記論理セグメントに対応するデータを書き込み、前記共用ブロックには、該共用ブロックが含まれる前記物理ゾーンと対応関係にある前記論理ゾーンに対応するデータを書き込む書込手段と、
を備えることを特徴とする。
In order to achieve the above object, the memory controller of the present invention provides:
A memory controller that controls access to a flash memory in response to a command from a host system,
Correspondence between a physical zone that collects a plurality of physical blocks that are erase units in the flash memory and a logical zone that collects a plurality of sectors that are access units in the host system, and a physical that divides the physical zone by a predetermined number Address management means for managing a correspondence relationship between a segment and a logical segment obtained by dividing the logical zone by the number of divisions;
A physical block in the physical segment is assigned to an occupied block or a shared block, and data corresponding to the logical segment corresponding to the physical segment including the occupied block is written to the occupied block, and the shared block is written to the shared block. Writing means for writing data corresponding to the logical zone corresponding to the physical zone including the shared block;
It is characterized by providing.
前記物理セグメントに含まれる物理ブロックの個数は、2のべき乗個であることが好ましい。
前記共用ブロックは、前記物理セグメント内の先頭又は最後の物理ブロックであることが好ましい。
The number of physical blocks included in the physical segment is preferably a power of 2.
The shared block is preferably the first or last physical block in the physical segment.
また、本発明のフラッシュメモリシステムは、上記構成のメモリコントローラと、フラッシュメモリと、から構成される。 The flash memory system of the present invention includes the memory controller configured as described above and a flash memory.
本発明によれば、論理ゾーン及び物理ゾーンを所定の分割数で分割した論理セグメント及び物理セグメント単位でアドレス変換テーブルを作成することができる。従って、論理ゾーン及び物理ゾーン単位でアドレス変換テーブルを作成するときよりも短い時間で、アクセス対象になっている領域のアドレス変換テーブルを作成することができる。又、特定の物理セグメントに不良ブロックが集中しても、同一の物理ゾーンに属する他の物理セグメント内の物理ブロック(共用ブロック)を使用することができるため、特定の物理セグメントで必要な有効ブロック数を確保できなくなる確率を低く抑えることができる。 According to the present invention, an address conversion table can be created in units of logical segments and physical segments obtained by dividing a logical zone and a physical zone by a predetermined number of divisions. Therefore, it is possible to create an address translation table for an area to be accessed in a shorter time than when creating an address translation table for each logical zone and physical zone. Even if bad blocks are concentrated on a specific physical segment, physical blocks (shared blocks) in other physical segments belonging to the same physical zone can be used. The probability that the number cannot be secured can be kept low.
以下、図面に基づき、本発明の実施の形態について詳細に説明する。 Hereinafter, embodiments of the present invention will be described in detail with reference to the drawings.
図1は、本発明に係るフラッシュメモリシステム1を概略的に示すブロック図である。図1に示すように、フラッシュメモリシステム1は、フラッシュメモリ2と、それを制御するコントローラ3で構成されている。
FIG. 1 is a block diagram schematically showing a
なお、フラッシュメモリシステム1は、外部バス13を介してホストシステム4と接続される。ホストシステム4は、ホストシステム4の全体の動作を制御するためのCPU(Central Processing Unit)、フラッシュメモリシステム1との情報の授受を担うコンパニオンチップ等から構成される。ホストシステム4は、例えば、文字、音声、あるいは画像情報等の種々の情報を処理するパーソナルコンピュータやデジタルスチルカメラをはじめとする各種情報処理装置であってもよい。
The
フラッシュメモリ2は、不揮発性メモリであり、レジスタと、メモリセルアレイと、から構成される。フラッシュメモリ2は、レジスタとメモリセルとの間でデータの複写を行って、データの書き込み又は読み出しを行う。
The
メモリセルアレイは、複数のメモリセル群と、ワード線と、を備える。各メモリセル群は、複数のメモリセルが直列に接続されたものである。ワード線は、メモリセル群の特定のメモリセルを選択するためのものである。このワード線を介して選択されたメモリセルとレジスタとの間で、データの複写、即ち、レジスタから選択されたメモリセルへの複写又は選択されたメモリセルからレジスタへのデータの複写が行われる。 The memory cell array includes a plurality of memory cell groups and word lines. Each memory cell group includes a plurality of memory cells connected in series. The word line is for selecting a specific memory cell in the memory cell group. Data is copied between the selected memory cell and the register via the word line, that is, data is copied from the register to the selected memory cell, or data is copied from the selected memory cell to the register. .
メモリセルアレイを構成するメモリセルは、2つのゲートを備えたMOSトランジスタによって構成される。ここで、上側のゲート、下側のゲートは、それぞれ、コントロールゲート、フローティングゲートと呼ばれており、フローティングゲートに電荷(電子)を注入若しくはフローティングゲートから電荷(電子)を排出することによって、データの書き込み若しくはデータの消去が行われる。 A memory cell constituting the memory cell array is constituted by a MOS transistor having two gates. Here, the upper gate and the lower gate are referred to as a control gate and a floating gate, respectively. By injecting charges (electrons) into the floating gate or discharging charges (electrons) from the floating gate, data can be obtained. Is written or data is erased.
このフローティングゲートは、周囲を絶縁体で囲まれているので、注入された電子は長期間にわたって保持される。なお、フローティングゲートに電子を注入するときは、コントロールゲートが高電位側となる高電圧をコントロールゲートとフローティングゲート間に印加する。また、フローティングゲートから電子を排出するときは、コントロールゲートが低電位側となる高電圧をコントロールゲートとフローティングゲート間に印加する。 Since the floating gate is surrounded by an insulator, the injected electrons are held for a long period of time. Note that, when electrons are injected into the floating gate, a high voltage at which the control gate is on the high potential side is applied between the control gate and the floating gate. Further, when electrons are discharged from the floating gate, a high voltage at which the control gate becomes a low potential side is applied between the control gate and the floating gate.
ここで、フローティングゲートに電子が注入されている状態が書き込み状態であり、論理値「0」に対応する。また、フローティングゲートから電子が排出されている状態が消去状態であり、論理値「1」に対応する。 Here, a state where electrons are injected into the floating gate is a write state, which corresponds to a logical value “0”. The state in which electrons are discharged from the floating gate is an erased state, which corresponds to a logical value “1”.
このようなフラッシュメモリ2のアドレス空間を図2に示す。フラッシュメモリ2のアドレス空間は、“ページ”及び“ブロック(物理ブロック)”で構成されている。
Such an address space of the
ページは、フラッシュメモリ2にて行われるデータ読み出し動作及びデータ書き込み動作における処理単位である。物理ブロックは、フラッシュメモリ2にて行われるデータ消去動作における処理単位であり、複数個のページで構成されている。
A page is a processing unit in a data read operation and a data write operation performed in the
図2に示したフラッシュメモリ2では、1つのページは、1セクタ(512バイト)のユーザ領域25と、16バイトの冗長領域26で構成され、1つの物理ブロックは32個のページで構成されている。なお、1つのページが4セクタのユーザ領域と64バイトの冗長領域で構成され、1つの物理ブロックが64個のページで構成されているフラッシュメモリもある。ユーザ領域25は、ホストシステム4から供給されるユーザデータを格納するための領域である。
In the
冗長領域26は、エラーコレクションコード、論理アドレス情報、ブロックステータス(フラグ)等の付加データを記憶するための領域である。
The
エラーコレクションコードは、ユーザ領域25に記憶されているデータに含まれる誤りを検出し、訂正するためのデータである。
The error collection code is data for detecting and correcting an error included in the data stored in the
論理アドレス情報は、フラッシュメモリ2の各物理ブロックに含まれている少なくとも1個のページのユーザ領域25に有効なデータが格納されているとき、そのデータに対応する論理ブロックを特定するための情報である。この論理アドレス情報として論理ゾーン内ブロック番号LZIBN又は論理ブロック番号LBNを用いることができるが、ビット数の少ない論理ゾーン内ブロック番号LZIBNが用いられることが多い。
The logical address information is information for specifying a logical block corresponding to the data when valid data is stored in the
なお、ユーザ領域25に有効なデータが格納されていない物理ブロックについては、そのブロックの冗長領域26に、論理アドレス情報は格納されていない。
For a physical block in which valid data is not stored in the
従って、冗長領域26に論理アドレス情報が格納されているか否かを判定することにより、その冗長領域26が含まれている物理ブロックに有効なデータが格納されているか否かを判定することができる。つまり、冗長領域26に論理アドレス情報が格納されていないとき、その物理ブロックには、有効なデータが格納されていない。
Therefore, by determining whether or not logical address information is stored in the
上述のように、1つの物理ブロックは、複数のページを含んでいる。これらのページには、データの上書きができない。このため、1つのページに格納されたデータのみを書き換えるときであっても、そのページが含まれた物理ブロック内の全ページに格納されたデータを、再度書き込まなければならない。 As described above, one physical block includes a plurality of pages. Data cannot be overwritten on these pages. For this reason, even when only the data stored in one page is rewritten, the data stored in all the pages in the physical block including the page must be rewritten.
つまり、通常のデータ書き換えでは、書き換えるページが含まれる物理ブロックの全ページに格納されたデータが、別の消去されている物理ブロックに書き込まれる。この際、データが変更されないページに格納されているデータは、以前に格納されていたデータがそのまま再度書き込まれる。 That is, in normal data rewriting, data stored in all pages of a physical block including a page to be rewritten is written to another erased physical block. At this time, as for the data stored in the page where the data is not changed, the previously stored data is rewritten as it is.
上記のようにデータを書き換えるにあたっては、通常、書き換えられたデータは、以前に格納されていた物理ブロックとは異なる物理ブロックに書き込まれる。このため、論理ブロックアドレスと物理ブロックアドレスの間の対応関係は、フラッシュメモリ2にてデータが書き換えられる毎に、動的に変化する。
In rewriting data as described above, normally, the rewritten data is written in a physical block different from the physical block stored previously. For this reason, the correspondence relationship between the logical block address and the physical block address dynamically changes every time data is rewritten in the
従って、論理ブロックと物理ブロックとの対応関係を管理する必要があり、この対応関係は、アドレス変換テーブルによって管理される。このアドレス変換テーブルは、各物理ブロックの冗長領域26に記憶されている論理アドレス情報(LZIBN又はLBN)に基づいて作成される。なお、アドレス変換テーブルによる論理アドレス−物理アドレス間のアドレス変換自体は、周知のものである。
Therefore, it is necessary to manage the correspondence between the logical block and the physical block, and this correspondence is managed by the address conversion table. This address conversion table is created based on logical address information (LZIBN or LBN) stored in the
ブロックステータス(フラグ)は、ブロックの良否を示すフラグである。正常にデータの書き込み等を行うことができないブロックは、不良ブロックと判別され、冗長領域26には、不良ブロックであることを示すブロックステータス(フラグ)が書き込まれる。
The block status (flag) is a flag indicating whether the block is good or bad. A block in which data cannot be normally written is determined as a defective block, and a block status (flag) indicating a defective block is written in the
このようなフラッシュメモリ2は、コントローラ3から、データ、アドレス情報、内部コマンド等を受信して、データの読み出し処理、書き込み処理、ブロック消去処理、転送処理等の各処理を行う。
Such a
ここで、内部コマンドとは、コントローラ3がフラッシュメモリ2に処理の実行を指示するためのコマンドであり、フラッシュメモリ2は、コントローラ3から与えられる内部コマンドに従って動作する。これに対して、外部コマンドとは、ホストシステム4がフラッシュメモリシステム1に対して処理の実行を指示するためのコマンドである。
Here, the internal command is a command for the
コントローラ3は、図1に示すように、マイクロプロセッサ6と、ホストインターフェースブロック7と、ワークエリア8と、バッファ9と、フラッシュメモリインターフェースブロック10と、ECC(エラー・コレクション・コード)ブロック11と、ROM(Read Only Memory)12と、から構成される。これら機能ブロックによって構成されるコントローラ3は、一つの半導体チップ上に集積される。以下に各機能ブロックについて説明する。
As shown in FIG. 1, the
マイクロプロセッサ6は、ROM12に記憶されているプログラムに従って、コントローラ3の全体の動作を制御する。例えば、マイクロプロセッサ6は、各種処理等を定義したコマンドセットをROM12から読み出してフラッシュメモリインターフェースブロック10に供給し、フラッシュメモリインターフェースブロック10に処理を実行させる。
The
ホストインターフェースブロック7は、図3に示すようにコマンドレジスタR1、セクタ数レジスタR2及びLBAレジスタR3を備えており、ホストシステム4との間の、データ、アドレス情報、ステータス情報、外部コマンド等の授受を行なう。ホストシステム4よりフラッシュメモリシステム1に供給されるデータ等は、ホストインターフェースブロック7を入口としてフラッシュメモリシステム1の内部(例えば、バッファ9)に取り込まれる。また、フラッシュメモリシステム1からホストシステム4に供給されるデータ等は、ホストインターフェースブロック7を出口としてホストシステム4に供給される。
As shown in FIG. 3, the host interface block 7 includes a command register R1, a sector number register R2, and an LBA register R3, and exchanges data, address information, status information, external commands, etc. with the host system 4. To do. Data or the like supplied from the host system 4 to the
図1に示すワークエリア8は、フラッシュメモリ2の制御に必要なデータが一時的に格納される作業領域であり、複数のSRAM(Static Random Access Memory)セルによって構成される。
A
バッファ9は、フラッシュメモリ2から読み出されたデータ及びフラッシュメモリ2に書き込むべきデータを一時的に蓄積する。すなわち、フラッシュメモリ2から読み出されたデータは、ホストシステム4が受け取り可能な状態となるまでバッファ9に保持され、フラッシュメモリ2に書き込むべきデータは、フラッシュメモリ2が書き込み可能な状態となるまでバッファ9に保持される。
The buffer 9 temporarily stores data read from the
フラッシュメモリインターフェースブロック10は、内部バス14を介して、フラッシュメモリ2とデータ、アドレス情報、ステータス情報、内部コマンド等の授受を行う。より詳細には、フラッシュメモリインターフェースブロック10は、アドレス処理部、コマンドレジスタ、命令処理ブロック等から構成される。図3に示すように、アドレス処理部は、物理ブロックアドレスレジスタR11、ページ番号レジスタR12、カウンタR13を備える。命令処理ブロックは、コマンドレジスタR21に設定されたシーケンスコマンドに従って処理を実行する。
The flash
物理ブロックアドレスレジスタR11は、フラッシュメモリ2のアクセス対象の物理ブロックの物理ブロックアドレスPBAを設定する。物理ブロックアドレスレジスタR11に設定されるPBAは、ワークエリア8に作成されるアドレス変換テーブルに基づいて決定される。このアドレス変換テーブルは、相互に対応する論理セグメントと物理セグメント単位で作成される。尚、論理セグメント及び物理セグメントについては後述する。
The physical block address register R11 sets the physical block address PBA of the physical block to be accessed in the
ページ番号レジスタR12には、アクセス対象の先頭ページのページ番号PNが初期値として設定される。カウンタR13には、アクセス対象の物理ブロック内のアクセス対象ページのページ数が初期値として設定される。
コマンドレジスタR21は、フラッシュメモリインタフェースブロック10が実行すべき処理を指示するシーケンスコマンドが設定される。
In the page number register R12, the page number PN of the first page to be accessed is set as an initial value. In the counter R13, the number of pages to be accessed in the physical block to be accessed is set as an initial value.
The command register R21 is set with a sequence command that instructs processing to be executed by the flash
命令処理ブロックは、コマンドレジスタR21に設定されているシーケンスコマンドに従って、フラッシュメモリ2を制御するための内部コマンド、物理アドレス等を出力する。
The instruction processing block outputs an internal command, a physical address, etc. for controlling the
フラッシュメモリインターフェースブロック10は、命令処理ブロックによって出力される内部コマンド、アドレス情報等をフラッシュメモリ2に供給することにより、フラッシュメモリ2に読み出し、書き込み等を実行させる。ここで、アクセス対象のページを特定する物理アドレスは、物理ブロックアドレスレジスタR11に設定されたPBAとページ番号レジスタR12に設定された設定値に基づいて生成される。又、1ページのアクセスが終了する毎に、カウンタR13に設定されている設定値がデクリメント(1ずつ減算)され、ページ番号レジスタR12に設定されている設定値がインクリメント(1ずつ加算)され、カウンタR13に設定されている設定値が0になると一連のアクセス処理を終了する。
The flash
ECCブロック11は、フラッシュメモリ2に書き込むデータに付加されるエラーコレクションコードを生成するとともに、読み出しデータに付加されたエラーコレクションコードに基づいて、読み出したデータに含まれる誤りを検出・訂正する。
The ECC block 11 generates an error correction code added to data to be written to the
ROM12は、マイクロプロセッサ6による処理の手順を定義するプログラムを格納する不揮発性の記憶素子である。具体的には、ROM12は、例えば、アドレス変換テーブルの作成等の処理手順を定義するプログラムを格納する。
The
次に、上記構成のフラッシュメモリシステムにより実現される論理アドレスと物理アドレスとの変換処理について説明する。 Next, a logical address / physical address conversion process realized by the flash memory system configured as described above will be described.
本実施の形態においては、図4に示したように、960個の論理ブロックで論理ゾーンが構成され、1024個の物理ブロックで物理ゾーンが構成されている。又、1個の物理ブロックは32個のページで構成され、1ページが1セクタに対応する。
論理ゾーンは32個の論理セグメントに分割され、物理ゾーンも32個の物理セグメントに分割されている。ここで、各論理ゾーン内の論理セグメントに付けた通番を論理セグメント番号LSNと呼び、各物理ゾーン内の物理セグメントに付けた通番を物理セグメント番号PSNと呼ぶ。
In the present embodiment, as shown in FIG. 4, a logical zone is composed of 960 logical blocks, and a physical zone is composed of 1024 physical blocks. One physical block is composed of 32 pages, and one page corresponds to one sector.
The logical zone is divided into 32 logical segments, and the physical zone is also divided into 32 physical segments. Here, a serial number assigned to a logical segment in each logical zone is referred to as a logical segment number LSN, and a serial number assigned to a physical segment in each physical zone is referred to as a physical segment number PSN.
論理ゾーンと物理ゾーンの対応関係は予め設定されている。本実施の形態においては、LZN#0の論理ゾーンにPZN#0の物理ゾーンが割り当てられ、LZN#1の論理ゾーンにPZN#1の物理ゾーンが割り当てられ、LZN#2の論理ゾーンにPZN#2の物理ゾーンが割り当てられ、以下同様に1個の論理ゾーンに1個の物理ゾーンが順次割り当てられている。
The correspondence between the logical zone and the physical zone is set in advance. In this embodiment, the physical zone of
論理ゾーンに含まれるLSN#0〜#31の論理セグメントと物理ゾーンに含まれるPSN#0〜#31の物理セグメントの対応関係も予め設定されている。図4には、相互に対応関係にあるLZN#0の論理ゾーンとPZN#0の物理ゾーンにおける論理セグメントと物理セグメントの対応関係が示されている。ここでは、LSN#0の論理セグメントにPSN#0の物理セグメントが割り当てられ、LSN#1の論理セグメントにPSN#1の物理セグメントが割り当てられ、LSN#2の論理セグメントにPSN#2の物理セグメントが割り当てられ、以下同様に1個の論理セグメントに1個の物理セグメントが割り当てられている。
The correspondence relationship between the logical segments of
PSN#0〜#31の各物理セグメントは32個の物理ブロックで構成されており、その先頭ブロックが共用ブロックに割り当てられ、共用ブロック以外の31個の物理ブロックが占用ブロックに割り当てられている。占用ブロックは、対応関係にある論理セグメントに含まれる論理ブロックだけに割り当てられる物理ブロックであり、共用ブロックは、LSN#0〜#31のいずれの論理セグメントに属する論理ブロックであっても、その論理ブロックに対応するデータの書込み先として使用できる物理ブロックである。
Each physical segment of
ここで、各物理セグメントに含まれる物理ブロックの個数が2のべき乗個の場合、各物理ゾーンに含まれるPZIBN#0〜#1023の各論理ブロックが属する物理セグメントのPSNは、PZIBNを2進数で表したときの特定のビットで判断することができる。本実施の形態においては、各物理ゾーンに1024個の物理ブロックが含まれ、各物理セグメントに32個の物理ブロックが含まれている。
Here, when the number of physical blocks included in each physical segment is a power of 2, the PSN of the physical segment to which each logical block of
従って、PZIBNは10ビットで表すことができ、そのPZIBNの上位5ビットがPSNに対応し、下位5ビットが物理セグメント内の物理ブロックに付けた通番を示すセグメント内ブロック番号PSIBNに対応する。又、各物理セグメントのPSIBN#0の物理ブロックを共用ブロックとした場合、共用ブロックのPZIBNの上位5ビットが、物理ゾーン内の共用ブロックに付けた通番を示す共用ブロック番号SBNに対応する。例えば、PZIBNが「11 0000 0011」の物理ブロックは、PSN#24の物理セグメントのPSIBN#3の占用ブロックであり、PZIBNが「11 0000 0000」の物理ブロックは、SBN#24の共用ブロックである。
Therefore, PZIBN can be represented by 10 bits, and the upper 5 bits of the PZIBN correspond to the PSN, and the lower 5 bits correspond to the intra-segment block number PSIBN indicating the serial number assigned to the physical block in the physical segment. When the physical block of
一方、LSN#0〜#31の各論理セグメントは30個の論理ブロックで構成されている。各論理セグメントに含まれる論理ブロックに対応するデータは、相互に対応関係にある物理セグメントの占用ブロック又はPSN#0〜#31の物理セグメントの共用ブロック(SBN#0〜#31の共用ブロック)に書き込まれる。つまり、LSN#0の論理セグメントに含まれる論理ブロックに対応するデータは、PSN#0の物理セグメントの占用ブロック又はSBN#0〜#31の共用ブロックに書き込まれ、LSN#1の論理セグメントに含まれる論理ブロックに対応するデータは、PSN#1の物理セグメントの占用ブロック又はSBN#0〜#31の共用ブロックに書き込まれ、以下同様に、LSN#31の論理セグメントに含まれる論理ブロックに対応するデータは、PSN#31の物理セグメントの占用ブロック又はSBN#0〜#31の共用ブロックに書き込まれる。
On the other hand, each logical segment of
ここで、各論理ゾーンに含まれるLZIBN#0〜#959の各論理ブロックが属する論理セグメントのLSNは、LZIBNを各論理セグメントに含まれる論理ブロックの数で割ることによって求められる。例えば、LZIBN#32の論理ブロックは、32÷30の商が1なのでLSN#1の論理セグメントに属し、LZIBN#76の論理ブロックは、76÷30の商が2なのでLSN#2の論理セグメントに属する。つまり、LSNは、LZIBNを各論理セグメントに含まれる論理ブロックの数で割ったときの商に対応する。又、データが書込まれた物理ブロックの冗長領域26には、書き込んだデータに対応する論理ブロックのLZIBNが書き込まれる。
Here, the LSN of the logical segment to which each logical block of
次に、アドレス変換テーブルの作成処理について説明する。コントローラ3は、ホストシステム4からアクセスの要求があると、アクセス対象の物理ゾーンに含まれる物理ブロックの冗長領域に書き込まれているLZIBNを参照してアドレス変換テーブルを作成する。
Next, address conversion table creation processing will be described. When there is an access request from the host system 4, the
図5は、アクセス対象がLZN#0のLSN#1に含まれる論理ブロック(LZN#0のLZIBN#30〜#59の範囲に含まれる論理ブロック)に作成されるアドレス変換テーブルの例である。
FIG. 5 is an example of an address conversion table created in a logical block included in
このアドレス変換テーブルを作成するときには、PSN#1の物理セグメントに含まれる占用ブロックの冗長領域とSBN#0〜31の共用ブロックの冗長領域26に書き込まれているLZIBNが参照される。尚、SBN#0〜31の共用ブロックについては、SBNとLZIBNの対応関係を示した補助テーブルを作成することが好ましい。この補助テーブルが作成されている場合には、アドレス変換テーブルを作成するときに、アクセス対象の論理セグメントに対応する物理セグメントの占用ブロックの冗長領域26に書き込まれているLZIBNとこの補助テーブルを参照すればよい。
When this address conversion table is created, the LZIBN written in the redundant area of the private block included in the physical segment of
図5に示したアドレス変換テーブルではLZIBN#30〜59の論理ブロックに対応する物理ブロックを、占用ブロックについてはPSIBNで、共用ブロックについてはSBNで示している。ブロック種別は、対応する物理ブロックを、PSIBNとSBNのいずれで示しているかを判別するための情報であり、「0」の場合はPSIBNで、「1」の場合はSBNで示していると判別する。又、LZIBN#35のように対応する物理ブロックが無い場合には、アドレス変換テーブルの対応する箇所に存在しない占用ブロックのPSIBN#0が書き込まれる。
In the address conversion table shown in FIG. 5, physical blocks corresponding to logical blocks of
各物理セグメントに含まれる物理ブロックの数をkとした場合、PSN、PSIBN及びPZIBNは下記の関係式を満たす。
PZIBN=k×PSN+PSIBN
従って、各物理セグメントに含まれる物理ブロックの数が32で、PSNが#1のとき、PSIBN「0 0001」に対応する物理ブロックのPZIBNは#33(32×1+1)であり、PSIBN「0 0111」に対応する物理ブロックのPZIBNは#39(32×1+7)である。
When the number of physical blocks included in each physical segment is k, PSN, PSIBN, and PZIBN satisfy the following relational expression.
PZIBN = k × PSN + PSIBN
Therefore, when the number of physical blocks included in each physical segment is 32 and the PSN is # 1, the PZIBN of the physical block corresponding to PSIBN “0 0001” is # 33 (32 × 1 + 1), and the PSIBN “0 0111”. The PZIBN of the physical block corresponding to “# 39” is # 39 (32 × 1 + 7).
尚、実際の処理では、2進数表示のPSNの下位側に、2進数表示のPSIBNを付加することによってPZIBNを求めることができる。例えば、PSN「0 0001」の下位側にPSIBN「0 0001」を付加することによってPZIBN「00 0010 0001」が求められ、PSN「0 0001」の下位側にPSIBN「0 0111」を付加することによってPZIBN「00 0010 0111」が求められる。 In actual processing, PZIBN can be obtained by adding PSIBN in binary number to the lower side of PSN in binary number. For example, PZIBN “00 0010 0001” is obtained by adding PSIBN “0 0001” to the lower side of PSN “0 0001”, and PSIBN “0 0111” is added to the lower side of PSN “0 0001”. PZIBN “00 0010 0111” is determined.
又、各物理セグメントに含まれる物理ブロックの数をkとした場合、SBN及びPZIBNは下記の関係式を満たす。
PZIBN=k×SBN
従って、各物理セグメントに含まれる物理ブロックの数が32のとき、SBN「0 0000」に対応する物理ブロックのPZIBNは#0(32×0)であり、SBN「0 0011」に対応する物理ブロックのPZIBNは#96(32×3)である。
Further, when the number of physical blocks included in each physical segment is k, SBN and PZIBN satisfy the following relational expression.
PZIBN = k × SBN
Therefore, when the number of physical blocks included in each physical segment is 32, the PZIBN of the physical block corresponding to SBN “0 0000” is # 0 (32 × 0), and the physical block corresponding to SBN “0 0011” The PZIBN is # 96 (32 × 3).
尚、実際の処理では、2進数表示のSBNの下位側に、5ビットの「0」を付加することによってPZIBNを求めることができる。例えば、SBN「0 0000」の下位側に「0 0000」を付加することによってPZIBN「00 0000 0000」が求められ、SBN「0 0011」の下位側に「0 0000」を付加することによってPZIBN「00 0110 0000」が求められる。 In actual processing, PZIBN can be obtained by adding 5-bit “0” to the lower side of the SBN in binary notation. For example, PZIBN “00 0000 0000” is obtained by adding “0 0000” to the lower side of SBN “0 0000”, and PZIBN “00 0000” is added to the lower side of SBN “0 0011”. 00 0110 0000 "is determined.
尚、上記のような論理セグメント単位のアドレス変換テーブルは、論理ゾーン内論理ブロック番号LZIBNと物理ゾーン内物理ブロック番号PZIBNとの対応関係で論理ブロックと物理ブロックの対応関係を示してもよい。この場合、上記のようなブロック種別は不要になる。 The address conversion table for each logical segment as described above may indicate the correspondence between the logical block and the physical block by the correspondence between the logical block number LZIBN in the logical zone and the physical block number PZIBN in the physical zone. In this case, the block type as described above becomes unnecessary.
次に、フラッシュメモリシステム1における読み出し処理について説明する。
Next, read processing in the
この読み出し処理では、ホストインターフェースブロック7のセクタ数レジスタR2に設定されたセクタ数、LBAレジスタR3に設定されたLBAの先頭値、コマンドレジスタR1に設定された外部コマンドに基づいて処理が実行される。尚、この読み出し処理は、コマンドレジスタR1に外部コマンドが設定されると開始される。 In this read process, the process is executed based on the number of sectors set in the sector number register R2 of the host interface block 7, the leading value of the LBA set in the LBA register R3, and the external command set in the command register R1. . This reading process is started when an external command is set in the command register R1.
マイクロプロセッサ6は、LBAレジスタR3に設定された先頭LBAとセクタ数レジスタR2に設定されたアクセス対象のセクタ数に基づいて、アクセス対象の論理ゾーン番号LZNと論理ゾーン内ブロック番号LZIBNと論理セグメント番号LSNを求める。ここでは、LBAの下位5ビットを削除することによりLBNが求められ、このLBNを論理ゾーンに含まれる論理ブロックの個数(960個)で割ることにより、その商に対応するLZNと余りに対応するLZIBNが求められる。更に、このLZIBNを論理セグメントに含まれる論理ブロックの個数(30個)で割ることにより、その商に対応するLSNが求められる。尚、アクセス対象領域が複数の論理ブロックにまたがっている場合は、論理ブロック毎にLZN、LZIBN及びLSNが求められる。
The
次に、このようにして求めた論理ゾーン番号LZNと論理ゾーン内ブロック番号LZIBNと論理セグメント番号LSNに基づいて、その論理ブロックに対応する物理ブロックの物理ブロックアドレスPBAを求める。尚、アクセス対象領域が複数の論理ブロックにまたがっている場合は、論理ブロック毎にPBAが求められる。 Next, based on the logical zone number LZN, the logical zone block number LZIBN, and the logical segment number LSN thus obtained, the physical block address PBA of the physical block corresponding to the logical block is obtained. When the access target area extends over a plurality of logical blocks, the PBA is obtained for each logical block.
PBAを求める処理を具体的に説明する。
まず、アクセス対象のLZNとLSNに対応する論理セグメントのアドレス変換テーブルが作成されているか否かを確認する。アドレス変換テーブルが作成されていない場合は、ワークエリア8にアドレス変換テーブルを作成する領域を確保する。この領域確保では、LZIBNの順番で、ブロック種別とPSIBN又はSBNが書き込まれる書込み箇所を確保し、ブロック種別は「占用ブロック」を示す情報にPSIBNは「データ無し」を示す情報に初期設定する。続いて、アクセス対象のLZNとLSNに対応するPZNとPSNで特定される物理セグメントに含まれる占用ブロックの冗長領域26とアクセス対象のLZNに対応するPZNで特定される物理ゾーンに含まれる共用ブロックの冗長領域26に書き込まれているLZIBN(論理アドレス情報)を読み出す。更に、読み出したLZIBNに対応する書込み箇所にそのLZIBNが書き込まれていた物理ブロックのPSIBN又はSBNを書き込む。又、SBNを書き込んだ場合には、対応するブロック種別を「共用ブロック」を示す情報「1」に変更する。
The process for obtaining the PBA will be specifically described.
First, it is confirmed whether or not the logical segment address conversion table corresponding to the access target LZN and LSN has been created. If the address conversion table has not been created, an area for creating the address conversion table is secured in the
次に、作成されたアドレス変換テーブルに基づいて、アクセス対象のLZIBNに対応するPZIBNを求める。ここで、対応する物理ブロックが占用ブロックの場合には、PSNの下位側にPSIBNを付加することによってPZIBNが求められる。対応する物理ブロックが共用ブロックの場合には、SBNの下位側に「0 0000」を付加することによってPZIBNが求められる。 Next, PZIBN corresponding to the access target LZIBN is obtained based on the created address conversion table. Here, when the corresponding physical block is a private block, PZIBN is obtained by adding PSIBN to the lower side of the PSN. When the corresponding physical block is a shared block, PZIBN is obtained by adding “0 0000” to the lower side of the SBN.
続いて、求めた物理ゾーン内ブロック番号PZIBNに、その物理ゾーンPZNの前に存在する物理ゾーン分の物理ブロック数を加算して、物理ブロックアドレスPBA(=1024×PZN+PZIBN)を求める。なお、1024は物理ゾーンに含まれる物理ブロック数である。 Subsequently, the physical block address PBA (= 1024 × PZN + PZIBN) is obtained by adding the number of physical blocks for the physical zone existing before the physical zone PZN to the obtained intra-physical block number PZIBN. Note that 1024 is the number of physical blocks included in the physical zone.
次に、マイクロプロセッサ6は、フラッシュメモリインタフェースブロック10の物理ブロックアドレスレジスタR11にアクセス対象の物理ブロックの物理ブロックアドレスPBAを設定し、ページ番号レジスタR12にその物理ブロック内の読み出しを開始するページのページ番号を設定し、さらに、カウンタR13に読み出し対象のページ数を設定し、さらに、コマンドレジスタR21に、データの読み出しを指示するシーケンスコマンドを設定する。ここで、セクタ数レジスタR2に設定されたセクタ数及びLBAレジスタR3に設定されたLBAで特定されるアクセス対象が複数の論理ブロックにまたがっていない場合は、セクタ数レジスタR2に設定されたセクタ数がカウンタR13に設定され、LBAレジスタR3に設定されたLBAの下位5ビットがページ番号レジスタR12に設定される。アクセス対象が複数の論理ブロックにまたがっている場合は、アクセス対象のLBAの範囲を論理ブロック毎に分割し、分割した各LBAの範囲に含まれるセクタ数がカウンタR13に設定され、分割した各LBAの範囲の先頭LBAの下位5ビットがページ番号レジスタR12に設定される。
Next, the
フラッシュメモリインタフェースブロック10の命令処理ブロックは、コマンドレジスタR21に設定されているシーケンスコマンドに従って、フラッシュメモリ2を制御するための内部コマンド、アドレス情報等を出力し、フラッシュメモリ2からデータを読み出し、読み出したデータをバッファ8に格納する。マイクロプロセッサ6は、バッファ9に格納されたデータをホストインタフェースブロック7と外部バス13を介してホストシステム4に提供する。
The instruction processing block of the flash
ここで、フラッシュメモリインタフェースブロック10の動作について具体的に説明する。フラッシュメモリインタフェースブロック10は、シーケンスコマンドに従って、物理ブロックアドレスレジスタR11に設定されているPBAにページ番号レジスタR12に設定されている設定値を付加(連結)した物理ページアドレスをフラッシュメモリ2に供給し、その物理ページアドレスに対応するページからデータを読み出し、読み出したデータをバッファ9に格納する。
Here, the operation of the flash
1ページ分のデータが読み出される毎に、カウンタR13に設定されている設定値をデクリメント(1ずつ減算)し、ページ番号レジスタR12に設定されている設定値をインクリメント(1ずつ加算)し、カウンタR13に設定されている設定値が0になるまでデータを順次読み出し、読み出したデータをバッファ9に格納する。 Each time one page of data is read, the set value set in the counter R13 is decremented (subtracted by 1), the set value set in the page number register R12 is incremented (added by 1), and the counter Data is read sequentially until the set value set in R13 becomes 0, and the read data is stored in the buffer 9.
次に、フラッシュメモリシステム1における書き込み処理について説明する。
書き込み処理の場合も、ホストインターフェースブロック7のセクタ数レジスタR2に設定されたセクタ数、LBAレジスタR3に設定されたLBAの先頭値、コマンドレジスタR1に設定された外部コマンドに基づいて処理が実行される。尚、この書き込み処理の場合も、コマンドレジスタR1に外部コマンドが設定されると処理が開始される。
Next, the writing process in the
Also in the case of the write process, processing is executed based on the number of sectors set in the sector number register R2 of the host interface block 7, the leading value of the LBA set in the LBA register R3, and the external command set in the command register R1. The Even in the case of this writing process, the process starts when an external command is set in the command register R1.
アクセス対象の論理ゾーン番号LZNと論理ゾーン内ブロック番号LZIBNと論理セグメント番号LSNも、読み出し処理の場合と同様に、LBAレジスタR3に設定された先頭LBAとセクタ数レジスタR2に設定されたアクセス対象のセクタ数に基づいて求められる。 Similarly to the case of the read process, the logical zone number LZN to be accessed, the block number LZIBN in the logical zone, and the logical segment number LSN are also set to the access target set in the head LBA set in the LBA register R3 and the sector number register R2. It is obtained based on the number of sectors.
書き込み処理における、論理アドレスから物理アドレスへの変換も、上述の読み出し処理と基本的に同一である。つまり、書き込み処理の場合も、アドレス変換テーブルに基づいて、アクセス対象の物理ブロックのPBAが求められる。 The conversion from the logical address to the physical address in the writing process is basically the same as the above-described reading process. That is, also in the case of write processing, the PBA of the physical block to be accessed is obtained based on the address conversion table.
続いて、アクセス対象の物理ブロックのデータの書き込み先のページが空きページの場合には、その空きページにデータを書き込み、空きページでない場合には、空きブロックを検索し、検出した空きブロックにデータを書き込む。空きブロックを検索するときは、最初にアクセス対象の論理セグメントに対応する物理セグメントに含まれる占用ブロックの空きブロックが検索され、占用ブロックの空きブロックが無い場合には、アクセス対象の物理ゾーンに含まれる共用ブロックの空きブロックが検索される。 Subsequently, if the page to which data of the physical block to be accessed is written is an empty page, data is written to the empty page. If the page is not an empty page, the empty block is searched, and data is detected in the detected empty block. Write. When searching for a free block, the free block of the private block included in the physical segment corresponding to the logical segment to be accessed is searched first, and if there is no free block of the private block, it is included in the physical zone to be accessed. The free block of the shared block to be searched is searched.
空きブロックにデータを書き込んだ場合は、データを書き込んだ空きブロックの冗長領域26にそのデータに対応するLZIBNを書き込む。更に、アドレス変換テーブルで、論理ブロックと物理ブロックの対応関係が変化した部分を更新する。
When data is written in the empty block, LZIBN corresponding to the data is written in the
上述のように、本実施の形態のフラッシュメモリシステム1においては、LBAに基づいてアクセス対象の論理ブロックが属する論理ゾーンのLZNと論理セグメントのLSNが特定され、特定されたLZNとLSNに対応するPZNとPSNが求められる。データを書き込む場合は、このPZNとPSNで特定される物理セグメントに含まれる占用ブロックにデータが書き込まれるが、この物理セグメントに含まれる占用ブロックが不良ブロック化した等の理由により、この物理セグメント内に空きブロックが無くなってしまった場合には、この物理セグメントが属する物理ゾーンの共用ブロックにデータが書き込まれる。
As described above, in the
なお、この発明は上記実施の形態に限定されず、種々の変形及び応用が可能である。
例えば、上記実施の形態においては、1つの物理セグメントの先頭に1つの共用ブロックを配置したが、共用ブロックとして使用する物理ブロックは任意である。即ち、各物理セグメントのLSIBN#1〜31のいずれかの物理ブロックを共用ブロックとすることが可能である。さらに、各物理セグメントに1つの共用物理ブロックを配置するだけでなく、複数の共用ブロックを配置することが可能である。例えば、PSIBN#0と#1の物理ブロックを共用ブロックとする等してもよい。
In addition, this invention is not limited to the said embodiment, A various deformation | transformation and application are possible.
For example, in the above embodiment, one shared block is arranged at the head of one physical segment, but a physical block used as a shared block is arbitrary. That is, any physical block of
又、論理ゾーンの数、論理ゾーン内の論理ブロックの数、論理ゾーン内の論理セグメントの数、論理セグメント内の論理ブロックの数、物理ゾーンの数、物理ゾーン内の物理ブロックの数、物理ゾーン内の物理セグメントの数及び物理セグメント内の物理ブロックの数は、相互に整合が取れる範囲で適宜設定することができる。 Also, the number of logical zones, the number of logical blocks in the logical zone, the number of logical segments in the logical zone, the number of logical blocks in the logical segment, the number of physical zones, the number of physical blocks in the physical zone, the physical zone The number of physical segments and the number of physical blocks in the physical segment can be set as appropriate as long as they are consistent with each other.
以上の説明では、物理ゾーンの数、物理ゾーン内の物理ブロックの数、物理ゾーン内の物理セグメントの数及び物理セグメント内の物理ブロックの数をいずれも2のべき乗個としたが、必ずしも2のべき乗個でなくてもよい。 In the above description, the number of physical zones, the number of physical blocks in the physical zone, the number of physical segments in the physical zone, and the number of physical blocks in the physical segment are all powers of 2. It does not have to be a power.
1 フラッシュメモリシステム
2 フラッシュメモリ
3 コントローラ
4 ホストシステム
6 マイクロプロセッサ
7 ホストインターフェースブロック
8 ワークエリア
9 バッファ
10 フラッシュメモリインターフェースブロック
11 ECCブロック
12 ROM
13 外部バス
14 内部バス
25 ユーザ領域
26 冗長領域
1
13
Claims (4)
前記フラッシュメモリにおける消去単位である物理ブロックを複数個集めた物理ゾーンと前記ホストシステムにおけるアクセス単位であるセクタを複数集めた論理ゾーンの対応関係と、前記物理ゾーンを所定の分割数で分割した物理セグメントと前記論理のゾーンを前記分割数で分割した論理セグメントの対応関係とを管理するアドレス管理手段と、
前記物理セグメント内の物理ブロックを占用ブロック又は共用ブロックに割り当て、前記占用ブロックには、該占用ブロックが含まれる前記物理セグメントと対応関係にある前記論理セグメントに対応するデータを書き込み、前記共用ブロックには、該共用ブロックが含まれる前記物理ゾーンと対応関係にある前記論理ゾーンに対応するデータを書き込む書込手段と、
を備えることを特徴とするメモリコントローラ。 A memory controller that controls access to a flash memory in response to a command from a host system,
Correspondence between a physical zone that collects a plurality of physical blocks that are erase units in the flash memory and a logical zone that collects a plurality of sectors that are access units in the host system, and a physical that divides the physical zone by a predetermined number Address management means for managing a correspondence relationship between a segment and a logical segment obtained by dividing the logical zone by the number of divisions;
A physical block in the physical segment is assigned to an occupied block or a shared block, and data corresponding to the logical segment corresponding to the physical segment including the occupied block is written to the occupied block, and the shared block is written to the shared block. Writing means for writing data corresponding to the logical zone corresponding to the physical zone including the shared block;
A memory controller comprising:
ことを特徴とするフラッシュメモリシステム。 The memory controller according to any one of claims 1 to 3, and a flash memory.
A flash memory system characterized by that.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2005365175A JP4227989B2 (en) | 2005-12-19 | 2005-12-19 | Memory controller and flash memory system |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2005365175A JP4227989B2 (en) | 2005-12-19 | 2005-12-19 | Memory controller and flash memory system |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2007172066A true JP2007172066A (en) | 2007-07-05 |
JP4227989B2 JP4227989B2 (en) | 2009-02-18 |
Family
ID=38298590
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2005365175A Active JP4227989B2 (en) | 2005-12-19 | 2005-12-19 | Memory controller and flash memory system |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP4227989B2 (en) |
-
2005
- 2005-12-19 JP JP2005365175A patent/JP4227989B2/en active Active
Also Published As
Publication number | Publication date |
---|---|
JP4227989B2 (en) | 2009-02-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4844639B2 (en) | MEMORY CONTROLLER, FLASH MEMORY SYSTEM HAVING MEMORY CONTROLLER, AND FLASH MEMORY CONTROL METHOD | |
JP4171749B2 (en) | Memory controller and flash memory system | |
JP4666081B2 (en) | MEMORY CONTROLLER, FLASH MEMORY SYSTEM HAVING MEMORY CONTROLLER, AND FLASH MEMORY CONTROL METHOD | |
JP4235646B2 (en) | Memory controller and flash memory system | |
JP4636005B2 (en) | MEMORY CONTROLLER, FLASH MEMORY SYSTEM HAVING MEMORY CONTROLLER, AND FLASH MEMORY CONTROL METHOD | |
JP4501881B2 (en) | Memory controller and flash memory system | |
JP4661497B2 (en) | Memory controller, flash memory system, and flash memory control method | |
JP4661191B2 (en) | Memory controller, flash memory system, and flash memory control method | |
JP4710753B2 (en) | MEMORY CONTROLLER, FLASH MEMORY SYSTEM USING MEMORY CONTROLLER, AND FLASH MEMORY CONTROL METHOD | |
JP4434171B2 (en) | Memory controller and flash memory system | |
JP4153535B2 (en) | MEMORY CONTROLLER, FLASH MEMORY SYSTEM PROVIDED WITH MEMORY CONTROLLER, AND FLASH MEMORY CONTROL METHOD | |
JP4241741B2 (en) | Memory controller and flash memory system | |
JP4254933B2 (en) | Memory controller and flash memory system | |
JP4609406B2 (en) | MEMORY CONTROLLER, FLASH MEMORY SYSTEM PROVIDED WITH MEMORY CONTROLLER, AND FLASH MEMORY CONTROL METHOD | |
JP4661566B2 (en) | Access controller, flash memory system, and access control method | |
JP3934659B1 (en) | Memory controller and flash memory system | |
JP4227989B2 (en) | Memory controller and flash memory system | |
JP4213166B2 (en) | Memory controller and flash memory system | |
JP2021068129A (en) | Memory controller and flash memory system | |
JP4000124B2 (en) | MEMORY CONTROLLER, FLASH MEMORY SYSTEM PROVIDED WITH MEMORY CONTROLLER, AND FLASH MEMORY CONTROL METHOD | |
JP4513782B2 (en) | Memory controller, flash memory system, and flash memory control method | |
JP4697146B2 (en) | MEMORY CONTROLLER, FLASH MEMORY SYSTEM HAVING MEMORY CONTROLLER, AND FLASH MEMORY CONTROL METHOD | |
JP6260395B2 (en) | Memory controller, memory system, and memory control method | |
JP4569554B2 (en) | MEMORY CONTROLLER, FLASH MEMORY SYSTEM HAVING MEMORY CONTROLLER, AND FLASH MEMORY CONTROL METHOD | |
JP4273109B2 (en) | Memory controller and flash memory system |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20081111 |
|
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: 20081118 |
|
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: 20081201 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20111205 Year of fee payment: 3 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 4227989 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: 20111205 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20121205 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20121205 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20131205 Year of fee payment: 5 |